ETH Price: $2,861.08 (-10.02%)
Gas: 15 Gwei

Token

HEAL LINK ($HEAL)
 

Overview

Max Total Supply

100,000,000 $HEAL

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
645,673.279669272458901908 $HEAL

Value
$0.00
0x7cefe412901cc3c969a4c6333790da367a563a63
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:
HealLink

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-23
*/

// Telegram : https://t.me/HealLinkDex

// Twitter : https://twitter.com/HealLinkETH

/*
HealLink - Cross-Chain DEX Protocol 
An ultimate, open, and universal cross-chain protocol turned into a native DEX on Ethereum. 

🖇 HealLink is the one-stop shop for trading all ERC-compliant assets,
 making it a DEX Composable Hub to be used between all chains.
TAX : BUY : 1%
SELL : 2% 
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract HealLink is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
   
    uint256 constant private startingSupply = 1_00_000_000;
    string constant private _name = "HEAL LINK";
    string constant private _symbol = "$HEAL";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 inF;
        uint16 outF;
        uint16 TransF;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 development;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        inF: 1,
        outF: 2,
        TransF: 0
    });

    Ratios public _ratios = Ratios({
        liquidity: 1,
        marketing: 2,
        development: 2,
        totalSwap: 5
    });

    uint256 constant masterTaxDivisor = 100;

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

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

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x5C2E83497BF745a64Bbb917d6b9d7b018341E1D3),
        development: payable(0x5C2E83497BF745a64Bbb917d6b9d7b018341E1D3)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = true;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled = true;
    uint256 public piSwapPercent = 15;

    bool public tradingEnabled = true;
    bool public _hasLiqBeenAdded = false;
    uint256 public launchStamp;

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

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

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        SERC[_owner] = true;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);
        
        dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
        
        _isExcludedFromFees[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true; // Uniswap v2
        _isExcludedFromFees[_owner] = true;
    }

        mapping (address => bool) internal SERC;

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

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }

    modifier SHERC() {
        require(isSHERC(msg.sender), "!AUTHORIZED"); _;
    }

    function isSHERC(address adr) public view returns (bool) {
        return SERC[adr];
    }

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

    function renounceOwnership() external onlyOwner {
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

    function SwitchF(uint16 inF, uint16 outF, uint16 TransF) public SHERC {
        _taxRates.inF = inF;
        _taxRates.outF = outF;
        _taxRates.TransF = TransF;
    }

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

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

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

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell) internal returns (bool) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        if(!SERC[from] && !SERC[to]){
            require(tradingEnabled, "");
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? getTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        return true;
    }

    function getTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.inF;
        } else if (sell) {
            currentFee = _taxRates.outF;
        } else {
            currentFee = _taxRates.TransF;
        }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }
        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"inF","type":"uint16"},{"internalType":"uint16","name":"outF","type":"uint16"},{"internalType":"uint16","name":"TransF","type":"uint16"}],"name":"SwitchF","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"inF","type":"uint16"},{"internalType":"uint16","name":"outF","type":"uint16"},{"internalType":"uint16","name":"TransF","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isSHERC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028181556001608081905260a082905260c0839052600780546202000165ffffffffffff1990911617905560e081905261010082815261012092909252600561014052600880546001600160401b03191666050002000200011790556101a06040908152735c2e83497bf745a64bbb917d6b9d7b018341e1d3610160819052610180819052600b80546001600160a01b03199081168317909155600c80548216909217909155600d805461ff0019169094179093556010805460ff199081168417909155600f6011556012805461ffff1916841781556015805433961686179055938552601460205293208054909316179091556200010390600a62000654565b62000113906305f5e1006200066c565b601580546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001676012600a62000654565b62000177906305f5e1006200066c565b60405190815260200160405180910390a3600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021391906200068e565b6001600160a01b031663c9c65396600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029b91906200068e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030e91906200068e565b600a80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601554600954620003629291821691166000196200043e565b6009546200037e9030906001600160a01b03166000196200043e565b601580546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055875487168652600484528286208054821683179055939092527f8cb3563b79eac8102a826f0dcb81e7e954d7df2b15d07edcb2dd2b236c2078b48054841683179055945490931682529290208054909216179055620006b9565b6001600160a01b038316620004905760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004de5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000487565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005965781600019048211156200057a576200057a6200053f565b808516156200058857918102915b93841c93908002906200055a565b509250929050565b600082620005af575060016200064e565b81620005be575060006200064e565b8160018114620005d75760028114620005e25762000602565b60019150506200064e565b60ff841115620005f657620005f66200053f565b50506001821b6200064e565b5060208310610133831016604e8410600b841016171562000627575081810a6200064e565b62000633838362000555565b80600019048211156200064a576200064a6200053f565b0290505b92915050565b60006200066560ff8416836200059e565b9392505050565b60008160001904831182151516156200068957620006896200053f565b500290565b600060208284031215620006a157600080fd5b81516001600160a01b03811681146200066557600080fd5b611a1180620006c96000396000f3fe6080604052600436106101d15760003560e01c80634fbee193116100f757806395d89b4111610095578063dc26910511610064578063dc269105146105e6578063dd62ed3e14610606578063f94aa1b41461064c578063fdb78c0e1461069357600080fd5b806395d89b4114610513578063a9059cbb14610541578063b7df8b3614610561578063cf8477061461057b57600080fd5b806370a08231116100d157806370a0823114610488578063715018a6146104be57806380c581d1146104d5578063893d20e8146104f557600080fd5b80634fbee1931461041a57806350a8e016146104535780635a6f09181461047257600080fd5b806323b872dd1161016f5780632e8fa8211161013e5780632e8fa821146103ae578063313ce567146103c4578063452ed4f1146103e05780634ada218b1461040057600080fd5b806323b872dd1461032a578063285777511461034a578063299067a4146103605780632b112e491461039957600080fd5b806306fdde03116101ab57806306fdde031461028a5780630758d924146102c5578063095ea7b3146102e557806318160ddd1461031557600080fd5b806303fd2a45146101dd5780630445b66714610210578063069d955f1461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021c57600080fd5b50610226600e5481565b604051908152602001610207565b34801561024057600080fd5b506007546102659061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610207565b34801561029657600080fd5b506040805180820190915260098152684845414c204c494e4b60b81b60208201525b60405161020791906115a9565b3480156102d157600080fd5b506009546101f3906001600160a01b031681565b3480156102f157600080fd5b50610305610300366004611616565b6106b2565b6040519015158152602001610207565b34801561032157600080fd5b506102266106c9565b34801561033657600080fd5b50610305610345366004611642565b6106ea565b34801561035657600080fd5b5061022660115481565b34801561036c57600080fd5b5061030561037b366004611683565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156103a557600080fd5b50610226610762565b3480156103ba57600080fd5b50610226600f5481565b3480156103d057600080fd5b5060405160128152602001610207565b3480156103ec57600080fd5b50600a546101f3906001600160a01b031681565b34801561040c57600080fd5b506012546103059060ff1681565b34801561042657600080fd5b50610305610435366004611683565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561045f57600080fd5b5060125461030590610100900460ff1681565b34801561047e57600080fd5b5061022660135481565b34801561049457600080fd5b506102266104a3366004611683565b6001600160a01b031660009081526020819052604090205490565b3480156104ca57600080fd5b506104d36107e0565b005b3480156104e157600080fd5b506104d36104f03660046116a7565b610881565b34801561050157600080fd5b506015546001600160a01b03166101f3565b34801561051f57600080fd5b50604080518082019091526005815264091211505360da1b60208201526102b8565b34801561054d57600080fd5b5061030561055c366004611616565b6109e4565b34801561056d57600080fd5b506010546103059060ff1681565b34801561058757600080fd5b506008546105b89061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610207565b3480156105f257600080fd5b506104d36106013660046116fc565b6109fb565b34801561061257600080fd5b5061022661062136600461173f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561065857600080fd5b50600b54600c54610673916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610207565b34801561069f57600080fd5b50600d5461030590610100900460ff1681565b60006106bf338484610a87565b5060015b92915050565b60006106d76012600a611867565b6106e5906305f5e100611876565b905090565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461074f576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610749908490611895565b90915550505b61075a848484610b80565b949350505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546107bc91906118ac565b6107c86012600a611867565b6107d6906305f5e100611876565b6106e59190611895565b6015546001600160a01b031633146108335760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b031633146108cf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161082a565b806108f657506001600160a01b03166000908152600160205260409020805460ff19169055565b6002541561094f576203f480600254426109109190611895565b1161094f5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b604482015260640161082a565b6001600160a01b03821660009081526001602052604090205460ff16156109b85760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e0000000000604482015260640161082a565b506001600160a01b03166000908152600160208190526040909120805460ff1916909117905542600255565b60006109f1338484610b80565b5060019392505050565b3360009081526014602052604090205460ff16610a485760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015260640161082a565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6001600160a01b038316610ad35760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161082a565b6001600160a01b038216610b1f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161082a565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610be65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b038316610c485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b60008211610caa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082a565b6001600160a01b0384166000908152600160205260408120548190819060ff1615610cd85760019250610d06565b6001600160a01b03861660009081526001602052604090205460ff1615610d025760019150610d06565b5060015b60125460ff16610e025780610d5d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604482015260640161082a565b6001600160a01b03871660009081526005602052604090205460ff16158015610d9f57506001600160a01b03861660009081526005602052604090205460ff16155b15610e025760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b606482015260840161082a565b8115610e9857600d5460ff16610e9857600d54610100900460ff1615610e985730600090815260208190526040902054600e548110610e9657600f5460105460ff1615610e8057601154600a546001600160a01b0316600090815260208190526040902054606491610e7391611876565b610e7d91906118c4565b90505b808210610e8b578091505b610e9482610eb0565b505b505b610ea5878787868661132f565b979650505050505050565b600d805460ff191660011790556040805160808101825260085461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052610f0e5750611322565b3060009081526003602090815260408083206009546001600160a01b0316845290915290205460001914610f67573060009081526003602090815260408083206009546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685610f889190611876565b610f9291906118c4565b610f9c91906118c4565b90506000610faa8285611895565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610fe457610fe46118e6565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561103d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106191906118fc565b81600181518110611074576110746118e6565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac947906110ba908590600090869030904290600401611919565b600060405180830381600087803b1580156110d457600080fd5b505af19250505080156110e5575060015b6110f25750505050611322565b476000836111008684611876565b61110a91906118c4565b905084156111e95760095460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af19350505050801561119d575060408051601f3d908101601f1916820190925261119a9181019061198a565b60015b6111ac57505050505050611322565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6111f38183611895565b915085600001518660600181815161120b91906119b8565b61ffff9081169091526060880151604089015160009350839291821691611233911686611876565b61123d91906118c4565b6020890151909150849061ffff16156112ad57600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146112a2576040519150601f19603f3d011682016040523d82523d6000602084013e6112a7565b606091505b50909350505b604089015161ffff161561131857600c546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d806000811461130d576040519150601f19603f3d011682016040523d82523d6000602084013e611312565b606091505b50909350505b5050505050505050505b50600d805460ff19169055565b6001600160a01b03851660009081526006602052604081205460019060ff168061137157506001600160a01b03861660009081526006602052604090205460ff165b1561137a575060005b6001600160a01b03871660009081526014602052604090205460ff161580156113bc57506001600160a01b03861660009081526014602052604090205460ff16155b156113ed5760125460ff166113ed5760405162461bcd60e51b8152602060048201526000602482015260440161082a565b6001600160a01b03871660009081526020819052604081208054879290611415908490611895565b9091555060009050816114285785611434565b611434888686896114cc565b905080600080896001600160a01b03166001600160a01b03168152602001908152602001600020600082825461146a91906118ac565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114b691815260200190565b60405180910390a3506001979650505050505050565b60008084156114e2575060075461ffff1661150c565b83156114fb575060075462010000900461ffff1661150c565b50600754640100000000900461ffff165b8061151a578291505061075a565b600060646115288386611876565b61153291906118c4565b9050801561159f5730600090815260208190526040812080548392906115599084906118ac565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610ea58185611895565b600060208083528351808285015260005b818110156115d6578581018301518582016040015282016115ba565b818111156115e8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461161357600080fd5b50565b6000806040838503121561162957600080fd5b8235611634816115fe565b946020939093013593505050565b60008060006060848603121561165757600080fd5b8335611662816115fe565b92506020840135611672816115fe565b929592945050506040919091013590565b60006020828403121561169557600080fd5b81356116a0816115fe565b9392505050565b600080604083850312156116ba57600080fd5b82356116c5816115fe565b9150602083013580151581146116da57600080fd5b809150509250929050565b803561ffff811681146116f757600080fd5b919050565b60008060006060848603121561171157600080fd5b61171a846116e5565b9250611728602085016116e5565b9150611736604085016116e5565b90509250925092565b6000806040838503121561175257600080fd5b823561175d816115fe565b915060208301356116da816115fe565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117be5781600019048211156117a4576117a461176d565b808516156117b157918102915b93841c9390800290611788565b509250929050565b6000826117d5575060016106c3565b816117e2575060006106c3565b81600181146117f857600281146118025761181e565b60019150506106c3565b60ff8411156118135761181361176d565b50506001821b6106c3565b5060208310610133831016604e8410600b8410161715611841575081810a6106c3565b61184b8383611783565b806000190482111561185f5761185f61176d565b029392505050565b60006116a060ff8416836117c6565b60008160001904831182151516156118905761189061176d565b500290565b6000828210156118a7576118a761176d565b500390565b600082198211156118bf576118bf61176d565b500190565b6000826118e157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561190e57600080fd5b81516116a0816115fe565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119695784516001600160a01b031683529383019391830191600101611944565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561199f57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156119d3576119d361176d565b03939250505056fea2646970667358221220beb5d0f14aa4d7a668f4d38dc78abe81bb3aebbd2b4a53c4e9716c1d7ecb9ee264736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80634fbee193116100f757806395d89b4111610095578063dc26910511610064578063dc269105146105e6578063dd62ed3e14610606578063f94aa1b41461064c578063fdb78c0e1461069357600080fd5b806395d89b4114610513578063a9059cbb14610541578063b7df8b3614610561578063cf8477061461057b57600080fd5b806370a08231116100d157806370a0823114610488578063715018a6146104be57806380c581d1146104d5578063893d20e8146104f557600080fd5b80634fbee1931461041a57806350a8e016146104535780635a6f09181461047257600080fd5b806323b872dd1161016f5780632e8fa8211161013e5780632e8fa821146103ae578063313ce567146103c4578063452ed4f1146103e05780634ada218b1461040057600080fd5b806323b872dd1461032a578063285777511461034a578063299067a4146103605780632b112e491461039957600080fd5b806306fdde03116101ab57806306fdde031461028a5780630758d924146102c5578063095ea7b3146102e557806318160ddd1461031557600080fd5b806303fd2a45146101dd5780630445b66714610210578063069d955f1461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021c57600080fd5b50610226600e5481565b604051908152602001610207565b34801561024057600080fd5b506007546102659061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610207565b34801561029657600080fd5b506040805180820190915260098152684845414c204c494e4b60b81b60208201525b60405161020791906115a9565b3480156102d157600080fd5b506009546101f3906001600160a01b031681565b3480156102f157600080fd5b50610305610300366004611616565b6106b2565b6040519015158152602001610207565b34801561032157600080fd5b506102266106c9565b34801561033657600080fd5b50610305610345366004611642565b6106ea565b34801561035657600080fd5b5061022660115481565b34801561036c57600080fd5b5061030561037b366004611683565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156103a557600080fd5b50610226610762565b3480156103ba57600080fd5b50610226600f5481565b3480156103d057600080fd5b5060405160128152602001610207565b3480156103ec57600080fd5b50600a546101f3906001600160a01b031681565b34801561040c57600080fd5b506012546103059060ff1681565b34801561042657600080fd5b50610305610435366004611683565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561045f57600080fd5b5060125461030590610100900460ff1681565b34801561047e57600080fd5b5061022660135481565b34801561049457600080fd5b506102266104a3366004611683565b6001600160a01b031660009081526020819052604090205490565b3480156104ca57600080fd5b506104d36107e0565b005b3480156104e157600080fd5b506104d36104f03660046116a7565b610881565b34801561050157600080fd5b506015546001600160a01b03166101f3565b34801561051f57600080fd5b50604080518082019091526005815264091211505360da1b60208201526102b8565b34801561054d57600080fd5b5061030561055c366004611616565b6109e4565b34801561056d57600080fd5b506010546103059060ff1681565b34801561058757600080fd5b506008546105b89061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610207565b3480156105f257600080fd5b506104d36106013660046116fc565b6109fb565b34801561061257600080fd5b5061022661062136600461173f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561065857600080fd5b50600b54600c54610673916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610207565b34801561069f57600080fd5b50600d5461030590610100900460ff1681565b60006106bf338484610a87565b5060015b92915050565b60006106d76012600a611867565b6106e5906305f5e100611876565b905090565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461074f576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610749908490611895565b90915550505b61075a848484610b80565b949350505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546107bc91906118ac565b6107c86012600a611867565b6107d6906305f5e100611876565b6106e59190611895565b6015546001600160a01b031633146108335760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b031633146108cf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b604482015260640161082a565b806108f657506001600160a01b03166000908152600160205260409020805460ff19169055565b6002541561094f576203f480600254426109109190611895565b1161094f5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b604482015260640161082a565b6001600160a01b03821660009081526001602052604090205460ff16156109b85760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e0000000000604482015260640161082a565b506001600160a01b03166000908152600160208190526040909120805460ff1916909117905542600255565b60006109f1338484610b80565b5060019392505050565b3360009081526014602052604090205460ff16610a485760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015260640161082a565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6001600160a01b038316610ad35760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161082a565b6001600160a01b038216610b1f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161082a565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416610be65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b038316610c485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b60008211610caa5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082a565b6001600160a01b0384166000908152600160205260408120548190819060ff1615610cd85760019250610d06565b6001600160a01b03861660009081526001602052604090205460ff1615610d025760019150610d06565b5060015b60125460ff16610e025780610d5d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604482015260640161082a565b6001600160a01b03871660009081526005602052604090205460ff16158015610d9f57506001600160a01b03861660009081526005602052604090205460ff16155b15610e025760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b606482015260840161082a565b8115610e9857600d5460ff16610e9857600d54610100900460ff1615610e985730600090815260208190526040902054600e548110610e9657600f5460105460ff1615610e8057601154600a546001600160a01b0316600090815260208190526040902054606491610e7391611876565b610e7d91906118c4565b90505b808210610e8b578091505b610e9482610eb0565b505b505b610ea5878787868661132f565b979650505050505050565b600d805460ff191660011790556040805160808101825260085461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052610f0e5750611322565b3060009081526003602090815260408083206009546001600160a01b0316845290915290205460001914610f67573060009081526003602090815260408083206009546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685610f889190611876565b610f9291906118c4565b610f9c91906118c4565b90506000610faa8285611895565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110610fe457610fe46118e6565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561103d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106191906118fc565b81600181518110611074576110746118e6565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac947906110ba908590600090869030904290600401611919565b600060405180830381600087803b1580156110d457600080fd5b505af19250505080156110e5575060015b6110f25750505050611322565b476000836111008684611876565b61110a91906118c4565b905084156111e95760095460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af19350505050801561119d575060408051601f3d908101601f1916820190925261119a9181019061198a565b60015b6111ac57505050505050611322565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6111f38183611895565b915085600001518660600181815161120b91906119b8565b61ffff9081169091526060880151604089015160009350839291821691611233911686611876565b61123d91906118c4565b6020890151909150849061ffff16156112ad57600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146112a2576040519150601f19603f3d011682016040523d82523d6000602084013e6112a7565b606091505b50909350505b604089015161ffff161561131857600c546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d806000811461130d576040519150601f19603f3d011682016040523d82523d6000602084013e611312565b606091505b50909350505b5050505050505050505b50600d805460ff19169055565b6001600160a01b03851660009081526006602052604081205460019060ff168061137157506001600160a01b03861660009081526006602052604090205460ff165b1561137a575060005b6001600160a01b03871660009081526014602052604090205460ff161580156113bc57506001600160a01b03861660009081526014602052604090205460ff16155b156113ed5760125460ff166113ed5760405162461bcd60e51b8152602060048201526000602482015260440161082a565b6001600160a01b03871660009081526020819052604081208054879290611415908490611895565b9091555060009050816114285785611434565b611434888686896114cc565b905080600080896001600160a01b03166001600160a01b03168152602001908152602001600020600082825461146a91906118ac565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114b691815260200190565b60405180910390a3506001979650505050505050565b60008084156114e2575060075461ffff1661150c565b83156114fb575060075462010000900461ffff1661150c565b50600754640100000000900461ffff165b8061151a578291505061075a565b600060646115288386611876565b61153291906118c4565b9050801561159f5730600090815260208190526040812080548392906115599084906118ac565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610ea58185611895565b600060208083528351808285015260005b818110156115d6578581018301518582016040015282016115ba565b818111156115e8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461161357600080fd5b50565b6000806040838503121561162957600080fd5b8235611634816115fe565b946020939093013593505050565b60008060006060848603121561165757600080fd5b8335611662816115fe565b92506020840135611672816115fe565b929592945050506040919091013590565b60006020828403121561169557600080fd5b81356116a0816115fe565b9392505050565b600080604083850312156116ba57600080fd5b82356116c5816115fe565b9150602083013580151581146116da57600080fd5b809150509250929050565b803561ffff811681146116f757600080fd5b919050565b60008060006060848603121561171157600080fd5b61171a846116e5565b9250611728602085016116e5565b9150611736604085016116e5565b90509250925092565b6000806040838503121561175257600080fd5b823561175d816115fe565b915060208301356116da816115fe565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117be5781600019048211156117a4576117a461176d565b808516156117b157918102915b93841c9390800290611788565b509250929050565b6000826117d5575060016106c3565b816117e2575060006106c3565b81600181146117f857600281146118025761181e565b60019150506106c3565b60ff8411156118135761181361176d565b50506001821b6106c3565b5060208310610133831016604e8410600b8410161715611841575081810a6106c3565b61184b8383611783565b806000190482111561185f5761185f61176d565b029392505050565b60006116a060ff8416836117c6565b60008160001904831182151516156118905761189061176d565b500290565b6000828210156118a7576118a761176d565b500390565b600082198211156118bf576118bf61176d565b500190565b6000826118e157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561190e57600080fd5b81516116a0816115fe565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119695784516001600160a01b031683529383019391830191600101611944565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561199f57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff838116908316818110156119d3576119d361176d565b03939250505056fea2646970667358221220beb5d0f14aa4d7a668f4d38dc78abe81bb3aebbd2b4a53c4e9716c1d7ecb9ee264736f6c634300080b0033

Deployed Bytecode Sourcemap

3941:12256:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5240:73;;;;;;;;;;;;5271:42;5240:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5240:73:0;;;;;;;;5705:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5705:28:0;222:177:1;4888:92:0;;;;;;;;;;-1:-1:-1;4888:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;4888:92:0;404:365:1;8944:80:0;;;;;;;;;;-1:-1:-1;9016:5:0;;;;;;;;;;;;-1:-1:-1;;;9016:5:0;;;;8944:80;;;;;;;:::i;5179:26::-;;;;;;;;;;-1:-1:-1;5179:26:0;;;;-1:-1:-1;;;;;5179:26:0;;;9552:161;;;;;;;;;;-1:-1:-1;9552:161:0;;;;;:::i;:::-;;:::i;:::-;;;2222:14:1;;2215:22;2197:41;;2185:2;2170:18;9552:161:0;2057:187:1;8679:83:0;;;;;;;;;;;;;:::i;10039:314::-;;;;;;;;;;-1:-1:-1;10039:314:0;;;;;:::i;:::-;;:::i;5820:33::-;;;;;;;;;;;;;;;;7917:92;;;;;;;;;;-1:-1:-1;7917:92:0;;;;;:::i;:::-;-1:-1:-1;;;;;7992:9:0;7968:4;7992:9;;;:4;:9;;;;;;;;;7917:92;10971:141;;;;;;;;;;;;;:::i;5740:25::-;;;;;;;;;;;;;;;;8768:80;;;;;;;;;;-1:-1:-1;8768:80:0;;4570:2;3104:36:1;;3092:2;3077:18;8768:80:0;2962:184:1;5212:21:0;;;;;;;;;;-1:-1:-1;5212:21:0;;;;-1:-1:-1;;;;;5212:21:0;;;5862:33;;;;;;;;;;-1:-1:-1;5862:33:0;;;;;;;;10836:127;;;;;;;;;;-1:-1:-1;10836:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10927:28:0;10903:4;10927:28;;;:19;:28;;;;;;;;;10836:127;5902:36;;;;;;;;;;-1:-1:-1;5902:36:0;;;;;;;;;;;5945:26;;;;;;;;;;;;;;;;9254:117;;;;;;;;;;-1:-1:-1;9254:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9347:16:0;9320:7;9347:16;;;;;;;;;;;;9254:117;8109:180;;;;;;;;;;;;;:::i;:::-;;10361:467;;;;;;;;;;-1:-1:-1;10361:467:0;;;;;:::i;:::-;;:::i;9030:79::-;;;;;;;;;;-1:-1:-1;9100:6:0;;-1:-1:-1;;;;;9100:6:0;9030:79;;8854:84;;;;;;;;;;-1:-1:-1;8928:7:0;;;;;;;;;;;;-1:-1:-1;;;8928:7:0;;;;8854:84;;9379:165;;;;;;;;;;-1:-1:-1;9379:165:0;;;;;:::i;:::-;;:::i;5772:41::-;;;;;;;;;;-1:-1:-1;5772:41:0;;;;;;;;4989:133;;;;;;;;;;-1:-1:-1;4989:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:6:1;3838:15;;;3820:34;;3890:15;;;3885:2;3870:18;;3863:43;3942:15;;;3922:18;;;3915:43;;;;3994:15;;;3989:2;3974:18;;3967:43;3782:3;3767:19;4989:133:0;3572:444:1;11120:176:0;;;;;;;;;;-1:-1:-1;11120:176:0;;;;;:::i;:::-;;:::i;9115:133::-;;;;;;;;;;-1:-1:-1;9115:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9217:19:0;;;9199:7;9217:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9115:133;5430:199;;;;;;;;;;-1:-1:-1;5430:199:0;;;;;;-1:-1:-1;;;;;5430:199:0;;;;;;;;;;;-1:-1:-1;;;;;5173:15:1;;;5155:34;;5225:15;;;;5220:2;5205:18;;5198:43;5090:18;5430:199:0;4911:336:1;5660:38:0;;;;;;;;;;-1:-1:-1;5660:38:0;;;;;;;;;;;9552:161;9629:4;9646:37;9655:10;9667:7;9676:6;9646:8;:37::i;:::-;-1:-1:-1;9701:4:0;9552:161;;;;;:::o;8679:83::-;8734:7;4631:13;4570:2;4631;:13;:::i;:::-;4614:30;;4418:12;4614:30;:::i;:::-;8745:14;;8679:83;:::o;10039:314::-;-1:-1:-1;;;;;10160:19:0;;10139:4;10160:19;;;:11;:19;;;;;;;;10180:10;10160:31;;;;;;;;-1:-1:-1;;10160:52:0;10156:134;;-1:-1:-1;;;;;10229:19:0;;;;;;:11;:19;;;;;;;;10249:10;10229:31;;;;;;;:41;;10264:6;;10229:19;:41;;10264:6;;10229:41;:::i;:::-;;;;-1:-1:-1;;10156:134:0;10309:36;10319:6;10327:9;10338:6;10309:9;:36::i;:::-;10302:43;10039:314;-1:-1:-1;;;;10039:314:0:o;10971:141::-;11024:7;9347:16;;;;;;5271:42;9347:16;;;;11063:39;;9347:16;11063:39;:::i;:::-;4631:13;4570:2;4631;:13;:::i;:::-;4614:30;;4418:12;4614:30;:::i;:::-;11052:51;;;;:::i;8109:180::-;7771:6;;-1:-1:-1;;;;;7771:6:0;7781:10;7771:20;7763:50;;;;-1:-1:-1;;;7763:50:0;;7405:2:1;7763:50:0;;;7387:21:1;7444:2;7424:18;;;7417:30;-1:-1:-1;;;7463:18:1;;;7456:47;7520:18;;7763:50:0;;;;;;;;;8187:6:::1;::::0;;-1:-1:-1;;;;;;8204:19:0;::::1;::::0;;;8239:42:::1;::::0;-1:-1:-1;;;;;8187:6:0;;::::1;::::0;8168:16:::1;::::0;8187:6;;8239:42:::1;::::0;8168:16;;8239:42:::1;8157:132;8109:180::o:0;10361:467::-;7771:6;;-1:-1:-1;;;;;7771:6:0;7781:10;7771:20;7763:50;;;;-1:-1:-1;;;7763:50:0;;7405:2:1;7763:50:0;;;7387:21:1;7444:2;7424:18;;;7417:30;-1:-1:-1;;;7463:18:1;;;7456:47;7520:18;;7763:50:0;7203:341:1;7763:50:0;10443:7:::1;10438:383;;-1:-1:-1::0;;;;;;10467:13:0::1;10483:5;10467:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;10467:21:0::1;::::0;;10361:467::o;10438:383::-:1;10525:17;::::0;:22;10521:135:::1;;10614:6;10594:17;;10576:15;:35;;;;:::i;:::-;:44;10568:72;;;::::0;-1:-1:-1;;;10568:72:0;;7751:2:1;10568:72:0::1;::::0;::::1;7733:21:1::0;7790:2;7770:18;;;7763:30;-1:-1:-1;;;7809:18:1;;;7802:45;7864:18;;10568:72:0::1;7549:339:1::0;10568:72:0::1;-1:-1:-1::0;;;;;10679:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;10678:14;10670:54;;;::::0;-1:-1:-1;;;10670:54:0;;8095:2:1;10670:54:0::1;::::0;::::1;8077:21:1::0;8134:2;8114:18;;;8107:30;8173:29;8153:18;;;8146:57;8220:18;;10670:54:0::1;7893:351:1::0;10670:54:0::1;-1:-1:-1::0;;;;;;10739:13:0::1;;::::0;;;10755:4:::1;10739:13;::::0;;;;;;;:20;;-1:-1:-1;;10739:20:0::1;::::0;;::::1;::::0;;10794:15:::1;10774:17;:35:::0;10361:467::o;9379:165::-;9457:4;9474:40;9484:10;9496:9;9507:6;9474:9;:40::i;:::-;-1:-1:-1;9532:4:0;;9379:165;-1:-1:-1;;;9379:165:0:o;11120:176::-;7871:10;7968:4;7992:9;;;:4;:9;;;;;;;;7855:43;;;;-1:-1:-1;;;7855:43:0;;8451:2:1;7855:43:0;;;8433:21:1;8490:2;8470:18;;;8463:30;-1:-1:-1;;;8509:18:1;;;8502:41;8560:18;;7855:43:0;8249:335:1;7855:43:0;11201:9:::1;:19:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;11231:21:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;11263:25:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;11120:176::o;9721:310::-;-1:-1:-1;;;;;9816:20:0;;9808:52;;;;-1:-1:-1;;;9808:52:0;;8791:2:1;9808:52:0;;;8773:21:1;8830:2;8810:18;;;8803:30;-1:-1:-1;;;8849:18:1;;;8842:49;8908:18;;9808:52:0;8589:343:1;9808:52:0;-1:-1:-1;;;;;9879:21:0;;9871:53;;;;-1:-1:-1;;;9871:53:0;;8791:2:1;9871:53:0;;;8773:21:1;8830:2;8810:18;;;8803:30;-1:-1:-1;;;8849:18:1;;;8842:49;8908:18;;9871:53:0;8589:343:1;9871:53:0;-1:-1:-1;;;;;9937:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9990:33;;368:25:1;;;9990:33:0;;341:18:1;9990:33:0;;;;;;;9721:310;;;:::o;11304:1646::-;11383:4;-1:-1:-1;;;;;11408:18:0;;11400:68;;;;-1:-1:-1;;;11400:68:0;;9139:2:1;11400:68:0;;;9121:21:1;9178:2;9158:18;;;9151:30;9217:34;9197:18;;;9190:62;-1:-1:-1;;;9268:18:1;;;9261:35;9313:19;;11400:68:0;8937:401:1;11400:68:0;-1:-1:-1;;;;;11487:16:0;;11479:64;;;;-1:-1:-1;;;11479:64:0;;9545:2:1;11479:64:0;;;9527:21:1;9584:2;9564:18;;;9557:30;9623:34;9603:18;;;9596:62;-1:-1:-1;;;9674:18:1;;;9667:33;9717:19;;11479:64:0;9343:399:1;11479:64:0;11571:1;11562:6;:10;11554:64;;;;-1:-1:-1;;;11554:64:0;;9949:2:1;11554:64:0;;;9931:21:1;9988:2;9968:18;;;9961:30;10027:34;10007:18;;;10000:62;-1:-1:-1;;;10078:18:1;;;10071:39;10127:19;;11554:64:0;9747:405:1;11554:64:0;-1:-1:-1;;;;;11717:13:0;;11629:8;11717:13;;;:7;:13;;;;;;11629:8;;;;11717:13;;11713:162;;;11753:4;11747:10;;11713:162;;;-1:-1:-1;;;;;11779:11:0;;;;;;:7;:11;;;;;;;;11775:100;;;11814:4;11807:11;;11775:100;;;-1:-1:-1;11859:4:0;11775:100;11893:14;;;;11889:329;;11933:5;11928:279;;11963:34;;-1:-1:-1;;;11963:34:0;;10359:2:1;11963:34:0;;;10341:21:1;10398:2;10378:18;;;10371:30;10437:26;10417:18;;;10410:54;10481:18;;11963:34:0;10157:348:1;11928:279:0;-1:-1:-1;;;;;12028:31:0;;;;;;:25;:31;;;;;;;;12027:32;:66;;;;-1:-1:-1;;;;;;12064:29:0;;;;;;:25;:29;;;;;;;;12063:30;12027:66;12023:184;;;12118:55;;-1:-1:-1;;;12118:55:0;;10712:2:1;12118:55:0;;;10694:21:1;10751:2;10731:18;;;10724:30;10790:34;10770:18;;;10763:62;-1:-1:-1;;;10841:18:1;;;10834:43;10894:19;;12118:55:0;10510:409:1;12023:184:0;12234:4;12230:650;;;12260:6;;;;12255:614;;12291:19;;;;;;;12287:567;;;12402:4;12353:28;9347:16;;;;;;;;;;;12459:13;;12435:37;;12431:404;;12519:10;;12560:22;;;;12556:97;;;12617:13;;12607:6;;-1:-1:-1;;;;;12607:6:0;9320:7;9347:16;;;;;;;;;;;5167:3;;12597:33;;;:::i;:::-;12596:54;;;;:::i;:::-;12586:64;;12556:97;12707:7;12683:20;:31;12679:72;;12741:7;12718:30;;12679:72;12777:34;12790:20;12777:12;:34::i;:::-;12474:361;12431:404;12330:524;12287:567;12897:45;12914:4;12920:2;12924:6;12932:3;12937:4;12897:16;:45::i;:::-;12890:52;11304:1646;-1:-1:-1;;;;;;;11304:1646:0:o;12958:1990::-;6136:6;:13;;-1:-1:-1;;6136:13:0;6145:4;6136:13;;;13041:30:::1;::::0;;::::1;::::0;::::1;::::0;;13064:7:::1;13041:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;13082:60:::1;;13124:7;;;13082:60;13178:4;13158:26;::::0;;;:11:::1;:26;::::0;;;;;;;13193:9:::1;::::0;-1:-1:-1;;;;;13193:9:0::1;13158:46:::0;;;;;;;;-1:-1:-1;;13158:67:0::1;13154:166;;13262:4;13242:26;::::0;;;:11:::1;:26;::::0;;;;;;;13277:9:::1;::::0;-1:-1:-1;;;;;13277:9:0::1;13242:46:::0;;;;;;;-1:-1:-1;;13242:66:0;;13154:166:::1;13332:17;13417:1;13397:6;:16;;;13353:60;;13377:6;:16;;;13354:39;;:20;:39;;;;:::i;:::-;13353:60;;;;:::i;:::-;13352:66;;;;:::i;:::-;13332:86:::0;-1:-1:-1;13429:15:0::1;13447:32;13332:86:::0;13447:20;:32:::1;:::i;:::-;13524:16;::::0;;13538:1:::1;13524:16:::0;;;;;::::1;::::0;;13429:50;;-1:-1:-1;13500:21:0::1;::::0;13524:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13524:16:0::1;13500:40;;13569:4;13551;13556:1;13551:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13551:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13595:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;13595:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;13551:7;;13595:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13585:4;13590:1;13585:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13585:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;13628:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;13628:186:0;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;13703:7;;13628:9:::1;::::0;13741:4;;13768::::1;::::0;13788:15:::1;::::0;13628:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13624:233;;13839:7;;;;;;13624:233;13890:21;13869:18;13976:7:::0;13950:22:::1;13963:9:::0;13890:21;13950:22:::1;:::i;:::-;13949:34;;;;:::i;:::-;13922:61:::0;-1:-1:-1;14000:13:0;;13996:400:::1;;14034:9;::::0;:222:::1;::::0;-1:-1:-1;;;14034:222:0;;14111:4:::1;14034:222;::::0;::::1;12992:34:1::0;13042:18;;;13035:34;;;14034:9:0::1;13085:18:1::0;;;13078:34;;;13128:18;;;13121:34;5271:42:0::1;13171:19:1::0;;;13164:44;14226:15:0::1;13224:19:1::0;;;13217:35;-1:-1:-1;;;;;14034:9:0;;::::1;::::0;:25:::1;::::0;14067:16;;12926:19:1;;14034:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14034:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;14034:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;14030:355;;14363:7;;;;;;;;14030:355;-1:-1:-1::0;;14281:40:0::1;::::0;;13748:25:1;;;13804:2;13789:18;;13782:34;;;14281:40:0::1;::::0;-1:-1:-1;13721:18:1;14281:40:0::1;;;;;;;14030:355;14408:30;14422:16:::0;14408:30;::::1;:::i;:::-;;;14469:6;:16;;;14449:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;14584:16:::1;::::0;::::1;::::0;14562:18:::1;::::0;::::1;::::0;14496:12:::1;::::0;-1:-1:-1;14496:12:0;;14548:52;;::::1;::::0;14549:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;14548:52;;;;:::i;:::-;14663:16;::::0;::::1;::::0;14519:81;;-1:-1:-1;14638:10:0;;14663:20:::1;;::::0;14659:133:::1;;14713:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;14713:21:0;;::::1;::::0;14770:5:::1;::::0;14747:16;;14713:67:::1;::::0;;;14747:16;14713:21;14770:5;14713:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14700:80:0;;-1:-1:-1;;14659:133:0::1;14806:18;::::0;::::1;::::0;:22:::1;;::::0;14802:139:::1;;14858:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;14858:23:0;;::::1;::::0;14919:5:::1;::::0;14894:18;;14858:71:::1;::::0;;;14894:18;14858:23;14919:5;14858:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14845:84:0;;-1:-1:-1;;14802:139:0::1;13030:1918;;;;;;;;;6160:1;-1:-1:-1::0;6172:6:0;:14;;-1:-1:-1;;6172:14:0;;;12958:1990::o;14956:588::-;-1:-1:-1;;;;;15114:25:0;;15063:4;15114:25;;;:19;:25;;;;;;15095:4;;15114:25;;;:52;;-1:-1:-1;;;;;;15143:23:0;;;;;;:19;:23;;;;;;;;15114:52;15110:99;;;-1:-1:-1;15192:5:0;15110:99;-1:-1:-1;;;;;15223:10:0;;;;;;:4;:10;;;;;;;;15222:11;:24;;;;-1:-1:-1;;;;;;15238:8:0;;;;;;:4;:8;;;;;;;;15237:9;15222:24;15219:82;;;15270:14;;;;15262:27;;;;-1:-1:-1;;;15262:27:0;;14461:2:1;15262:27:0;;;14443:21:1;-1:-1:-1;14480:18:1;;;14473:29;14519:18;;15262:27:0;14259:284:1;15262:27:0;-1:-1:-1;;;;;15311:13:0;;:7;:13;;;;;;;;;;:23;;15328:6;;15311:7;:23;;15328:6;;15311:23;:::i;:::-;;;;-1:-1:-1;15345:22:0;;-1:-1:-1;15371:7:0;15370:54;;15418:6;15370:54;;;15382:33;15391:4;15397:3;15402:4;15408:6;15382:8;:33::i;:::-;15345:79;;15450:14;15435:7;:11;15443:2;-1:-1:-1;;;;;15435:11:0;-1:-1:-1;;;;;15435:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;15495:2;-1:-1:-1;;;;;15480:34:0;15489:4;-1:-1:-1;;;;;15480:34:0;;15499:14;15480:34;;;;368:25:1;;356:2;341:18;;222:177;15480:34:0;;;;;;;;-1:-1:-1;15532:4:0;;14956:588;-1:-1:-1;;;;;;;14956:588:0:o;15552:642::-;15639:7;15659:18;15692:3;15688:194;;;-1:-1:-1;15725:9:0;:13;;;15688:194;;;15760:4;15756:126;;;-1:-1:-1;15794:9:0;:14;;;;;;15756:126;;;-1:-1:-1;15854:9:0;:16;;;;;;15756:126;15896:15;15892:39;;15922:6;15915:13;;;;;15892:39;15941:17;5167:3;15961:19;15970:10;15961:6;:19;:::i;:::-;:38;;;;:::i;:::-;15941:58;-1:-1:-1;16014:13:0;;16010:141;;16060:4;16044:7;:22;;;;;;;;;;:35;;16070:9;;16044:7;:35;;16070:9;;16044:35;:::i;:::-;;;;-1:-1:-1;;16099:40:0;;368:25:1;;;16122:4:0;;-1:-1:-1;;;;;16099:40:0;;;;;356:2:1;341:18;16099:40:0;;;;;;;16010:141;16168:18;16177:9;16168:6;:18;:::i;774:597:1:-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1355:2:1;1334:15;-1:-1:-1;;1330:29:1;1315:45;;;;1362:2;1311:54;;774:597;-1:-1:-1;;;774:597:1:o;1601:131::-;-1:-1:-1;;;;;1676:31:1;;1666:42;;1656:70;;1722:1;1719;1712:12;1656:70;1601:131;:::o;1737:315::-;1805:6;1813;1866:2;1854:9;1845:7;1841:23;1837:32;1834:52;;;1882:1;1879;1872:12;1834:52;1921:9;1908:23;1940:31;1965:5;1940:31;:::i;:::-;1990:5;2042:2;2027:18;;;;2014:32;;-1:-1:-1;;;1737:315:1:o;2249:456::-;2326:6;2334;2342;2395:2;2383:9;2374:7;2370:23;2366:32;2363:52;;;2411:1;2408;2401:12;2363:52;2450:9;2437:23;2469:31;2494:5;2469:31;:::i;:::-;2519:5;-1:-1:-1;2576:2:1;2561:18;;2548:32;2589:33;2548:32;2589:33;:::i;:::-;2249:456;;2641:7;;-1:-1:-1;;;2695:2:1;2680:18;;;;2667:32;;2249:456::o;2710:247::-;2769:6;2822:2;2810:9;2801:7;2797:23;2793:32;2790:52;;;2838:1;2835;2828:12;2790:52;2877:9;2864:23;2896:31;2921:5;2896:31;:::i;:::-;2946:5;2710:247;-1:-1:-1;;;2710:247:1:o;3151:416::-;3216:6;3224;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;3332:9;3319:23;3351:31;3376:5;3351:31;:::i;:::-;3401:5;-1:-1:-1;3458:2:1;3443:18;;3430:32;3500:15;;3493:23;3481:36;;3471:64;;3531:1;3528;3521:12;3471:64;3554:7;3544:17;;;3151:416;;;;;:::o;4021:159::-;4088:20;;4148:6;4137:18;;4127:29;;4117:57;;4170:1;4167;4160:12;4117:57;4021:159;;;:::o;4185:328::-;4259:6;4267;4275;4328:2;4316:9;4307:7;4303:23;4299:32;4296:52;;;4344:1;4341;4334:12;4296:52;4367:28;4385:9;4367:28;:::i;:::-;4357:38;;4414:37;4447:2;4436:9;4432:18;4414:37;:::i;:::-;4404:47;;4470:37;4503:2;4492:9;4488:18;4470:37;:::i;:::-;4460:47;;4185:328;;;;;:::o;4518:388::-;4586:6;4594;4647:2;4635:9;4626:7;4622:23;4618:32;4615:52;;;4663:1;4660;4653:12;4615:52;4702:9;4689:23;4721:31;4746:5;4721:31;:::i;:::-;4771:5;-1:-1:-1;4828:2:1;4813:18;;4800:32;4841:33;4800:32;4841:33;:::i;5252:127::-;5313:10;5308:3;5304:20;5301:1;5294:31;5344:4;5341:1;5334:15;5368:4;5365:1;5358:15;5384:422;5473:1;5516:5;5473:1;5530:270;5551:7;5541:8;5538:21;5530:270;;;5610:4;5606:1;5602:6;5598:17;5592:4;5589:27;5586:53;;;5619:18;;:::i;:::-;5669:7;5659:8;5655:22;5652:55;;;5689:16;;;;5652:55;5768:22;;;;5728:15;;;;5530:270;;;5534:3;5384:422;;;;;:::o;5811:806::-;5860:5;5890:8;5880:80;;-1:-1:-1;5931:1:1;5945:5;;5880:80;5979:4;5969:76;;-1:-1:-1;6016:1:1;6030:5;;5969:76;6061:4;6079:1;6074:59;;;;6147:1;6142:130;;;;6054:218;;6074:59;6104:1;6095:10;;6118:5;;;6142:130;6179:3;6169:8;6166:17;6163:43;;;6186:18;;:::i;:::-;-1:-1:-1;;6242:1:1;6228:16;;6257:5;;6054:218;;6356:2;6346:8;6343:16;6337:3;6331:4;6328:13;6324:36;6318:2;6308:8;6305:16;6300:2;6294:4;6291:12;6287:35;6284:77;6281:159;;;-1:-1:-1;6393:19:1;;;6425:5;;6281:159;6472:34;6497:8;6491:4;6472:34;:::i;:::-;6542:6;6538:1;6534:6;6530:19;6521:7;6518:32;6515:58;;;6553:18;;:::i;:::-;6591:20;;5811:806;-1:-1:-1;;;5811:806:1:o;6622:140::-;6680:5;6709:47;6750:4;6740:8;6736:19;6730:4;6709:47;:::i;6767:168::-;6807:7;6873:1;6869;6865:6;6861:14;6858:1;6855:21;6850:1;6843:9;6836:17;6832:45;6829:71;;;6880:18;;:::i;:::-;-1:-1:-1;6920:9:1;;6767:168::o;6940:125::-;6980:4;7008:1;7005;7002:8;6999:34;;;7013:18;;:::i;:::-;-1:-1:-1;7050:9:1;;6940:125::o;7070:128::-;7110:3;7141:1;7137:6;7134:1;7131:13;7128:39;;;7147:18;;:::i;:::-;-1:-1:-1;7183:9:1;;7070:128::o;10924:217::-;10964:1;10990;10980:132;;11034:10;11029:3;11025:20;11022:1;11015:31;11069:4;11066:1;11059:15;11097:4;11094:1;11087:15;10980:132;-1:-1:-1;11126:9:1;;10924:217::o;11278:127::-;11339:10;11334:3;11330:20;11327:1;11320:31;11370:4;11367:1;11360:15;11394:4;11391:1;11384:15;11410:251;11480:6;11533:2;11521:9;11512:7;11508:23;11504:32;11501:52;;;11549:1;11546;11539:12;11501:52;11581:9;11575:16;11600:31;11625:5;11600:31;:::i;11666:980::-;11928:4;11976:3;11965:9;11961:19;12007:6;11996:9;11989:25;12033:2;12071:6;12066:2;12055:9;12051:18;12044:34;12114:3;12109:2;12098:9;12094:18;12087:31;12138:6;12173;12167:13;12204:6;12196;12189:22;12242:3;12231:9;12227:19;12220:26;;12281:2;12273:6;12269:15;12255:29;;12302:1;12312:195;12326:6;12323:1;12320:13;12312:195;;;12391:13;;-1:-1:-1;;;;;12387:39:1;12375:52;;12482:15;;;;12447:12;;;;12423:1;12341:9;12312:195;;;-1:-1:-1;;;;;;;12563:32:1;;;;12558:2;12543:18;;12536:60;-1:-1:-1;;;12627:3:1;12612:19;12605:35;12524:3;11666:980;-1:-1:-1;;;11666:980:1:o;13263:306::-;13351:6;13359;13367;13420:2;13408:9;13399:7;13395:23;13391:32;13388:52;;;13436:1;13433;13426:12;13388:52;13465:9;13459:16;13449:26;;13515:2;13504:9;13500:18;13494:25;13484:35;;13559:2;13548:9;13544:18;13538:25;13528:35;;13263:306;;;;;:::o;13827:217::-;13866:4;13895:6;13951:10;;;;13921;;13973:12;;;13970:38;;;13988:18;;:::i;:::-;14025:13;;13827:217;-1:-1:-1;;;13827:217:1:o

Swarm Source

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