ETH Price: $3,168.67 (-6.33%)
Gas: 4 Gwei

Token

dev do something (DDS)
 

Overview

Max Total Supply

69,420,000 DDS

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
groovstyles.eth
Balance
595,000.743933623250359332 DDS

Value
$0.00
0x9df087ada77af80f553dc0d2fb43c18dc5a6b444
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:
DEVDOSOMETHING

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-09
*/

// SPDX-License-Identifier: MIT  

/*

Website : devdosomething.vip
Portal : https://t.me/devdosomething_erc
Twitter : https://twitter.com/DDSTOKEN

*/

pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract DEVDOSOMETHING is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "dev do something";
    string private constant _symbol = "DDS";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 69_420_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(0x02e38C0Afd81C2218204438769561bD12F99A0ac);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;

    uint256 public _maxTxAmount = _tTotal / 50;
    uint256 public _maxWalletSize = _tTotal / 50;
    uint256 public _swapTokensAtAmount = _tTotal / 100;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        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");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function sendETHToFeeDev() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function openTrading(address _lppair) public onlyOwner {
        uniswapV2Pair = _lppair;
        tradingOpen = true;
        swapEnabled = true;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        _taxFeeOnBuy = 2;
        _taxFeeOnSell = 2;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(taxFeeOnBuy <= 10,"Max allowed tax is 10%");
        require(taxFeeOnSell <= 10,"Max allowed tax is 10%");
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_lppair","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","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":"sendETHToFeeDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000384565b620000229063042343e06200039c565b6200003090600019620003cc565b6200003e90600019620003e3565b6006556000600881905560146009819055600a828155600b829055600c839055600d829055600e92909255600f55601080546001600160a01b03199081163317909155601180549091167302e38c0afd81c2218204438769561bd12f99a0ac1790556013805462ffffff60a01b19169055603290620000c09060129062000384565b620000d09063042343e06200039c565b620000dc9190620003f9565b6014556032620000ef6012600a62000384565b620000ff9063042343e06200039c565b6200010b9190620003f9565b60155560646200011e6012600a62000384565b6200012e9063042343e06200039c565b6200013a9190620003f9565b6016553480156200014a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060065433600081815260026020908152604080832094909455601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117825583546001600160a01b0390811685526005909352858420805460ff1990811660019081179092553086528786208054821683179055601154909416855295842080549093169095179091557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200024790600a62000384565b620002579063042343e06200039c565b60405190815260200160405180910390a35062000410565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002c6578160001904821115620002aa57620002aa6200026f565b80851615620002b857918102915b93841c93908002906200028a565b509250929050565b600082620002df575060016200037e565b81620002ee575060006200037e565b8160018114620003075760028114620003125762000332565b60019150506200037e565b60ff8411156200032657620003266200026f565b50506001821b6200037e565b5060208310610133831016604e8410600b841016171562000357575081810a6200037e565b62000363838362000285565b80600019048211156200037a576200037a6200026f565b0290505b92915050565b60006200039560ff841683620002ce565b9392505050565b80820281158282048414176200037e576200037e6200026f565b634e487b7160e01b600052601260045260246000fd5b600082620003de57620003de620003b6565b500690565b818103818111156200037e576200037e6200026f565b6000826200040b576200040b620003b6565b500490565b611ca280620004206000396000f3fe6080604052600436106101655760003560e01c8063715018a6116100c157806398a5c3151161007a57806398a5c315146103e5578063a9059cbb14610405578063c3c8cd8014610425578063c492f0461461043a578063ca72a4e71461045a578063dd62ed3e1461047a578063f2fde38b146104c057600080fd5b8063715018a614610345578063751039fc1461035a5780637d1db4a51461036f5780638da5cb5b146103855780638f9a55c0146103a357806395d89b41146103b957600080fd5b8063313ce5671161011e578063313ce5671461027d5780633d46cb101461029957806349bd5a5e146102b057806352f7c988146102d05780636d8aa8f8146102f05780636fc3eaec1461031057806370a082311461032557600080fd5b806306fdde0314610171578063095ea7b3146101bc5780631694505e146101ec57806318160ddd1461022457806323b872dd146102475780632fd689e31461026757600080fd5b3661016c57005b600080fd5b34801561017d57600080fd5b5060408051808201909152601081526f64657620646f20736f6d657468696e6760801b60208201525b6040516101b391906117a5565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004611808565b6104e0565b60405190151581526020016101b3565b3480156101f857600080fd5b5060125461020c906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b34801561023057600080fd5b506102396104f7565b6040519081526020016101b3565b34801561025357600080fd5b506101dc610262366004611834565b610518565b34801561027357600080fd5b5061023960165481565b34801561028957600080fd5b50604051601281526020016101b3565b3480156102a557600080fd5b506102ae610581565b005b3480156102bc57600080fd5b5060135461020c906001600160a01b031681565b3480156102dc57600080fd5b506102ae6102eb366004611875565b6105e3565b3480156102fc57600080fd5b506102ae61030b3660046118ac565b61065a565b34801561031c57600080fd5b506102ae6106a2565b34801561033157600080fd5b506102396103403660046118c7565b6106ea565b34801561035157600080fd5b506102ae61070c565b34801561036657600080fd5b506102ae610780565b34801561037b57600080fd5b5061023960145481565b34801561039157600080fd5b506000546001600160a01b031661020c565b3480156103af57600080fd5b5061023960155481565b3480156103c557600080fd5b5060408051808201909152600381526244445360e81b60208201526101a6565b3480156103f157600080fd5b506102ae6104003660046118e4565b6107f0565b34801561041157600080fd5b506101dc610420366004611808565b61081f565b34801561043157600080fd5b506102ae61082c565b34801561044657600080fd5b506102ae6104553660046118fd565b610880565b34801561046657600080fd5b506102ae6104753660046118c7565b610921565b34801561048657600080fd5b50610239610495366004611981565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156104cc57600080fd5b506102ae6104db3660046118c7565b610984565b60006104ed338484610a6e565b5060015b92915050565b60006105056012600a611ab4565b6105139063042343e0611ac3565b905090565b6000610525848484610b92565b610577843361057285604051806060016040528060288152602001611c45602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611034565b610a6e565b5060019392505050565b6000546001600160a01b031633146105b45760405162461bcd60e51b81526004016105ab90611ada565b60405180910390fd5b60405133904780156108fc02916000818181858888f193505050501580156105e0573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461060d5760405162461bcd60e51b81526004016105ab90611ada565b600a82111561062e5760405162461bcd60e51b81526004016105ab90611b0f565b600a81111561064f5760405162461bcd60e51b81526004016105ab90611b0f565b600991909155600b55565b6000546001600160a01b031633146106845760405162461bcd60e51b81526004016105ab90611ada565b60138054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b031614806106d757506011546001600160a01b0316336001600160a01b0316145b6106e057600080fd5b476105e08161106e565b6001600160a01b0381166000908152600260205260408120546104f1906110ac565b6000546001600160a01b031633146107365760405162461bcd60e51b81526004016105ab90611ada565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107aa5760405162461bcd60e51b81526004016105ab90611ada565b6107b66012600a611ab4565b6107c49063042343e0611ac3565b6014556107d36012600a611ab4565b6107e19063042343e0611ac3565b60155560026009819055600b55565b6000546001600160a01b0316331461081a5760405162461bcd60e51b81526004016105ab90611ada565b601655565b60006104ed338484610b92565b6010546001600160a01b0316336001600160a01b0316148061086157506011546001600160a01b0316336001600160a01b0316145b61086a57600080fd5b6000610875306106ea565b90506105e081611130565b6000546001600160a01b031633146108aa5760405162461bcd60e51b81526004016105ab90611ada565b60005b8281101561091b5781600560008686858181106108cc576108cc611b3f565b90506020020160208101906108e191906118c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061091381611b55565b9150506108ad565b50505050565b6000546001600160a01b0316331461094b5760405162461bcd60e51b81526004016105ab90611ada565b6013805460ff60b01b196001600160a81b03199091166001600160a01b0390931692909217600160a01b1791909116600160b01b179055565b6000546001600160a01b031633146109ae5760405162461bcd60e51b81526004016105ab90611ada565b6001600160a01b038116610a135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ab565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ad05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ab565b6001600160a01b038216610b315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ab565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bf65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ab565b6001600160a01b038216610c585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ab565b60008111610cba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ab565b6000546001600160a01b03848116911614801590610ce657506000546001600160a01b03838116911614155b15610f2d57601354600160a01b900460ff16610d7f576000546001600160a01b03848116911614610d7f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105ab565b601454811115610dd15760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105ab565b6013546001600160a01b03838116911614610e565760155481610df3846106ea565b610dfd9190611b6e565b10610e565760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105ab565b6000610e61306106ea565b601654601454919250821015908210610e7a5760145491505b808015610e915750601354600160a81b900460ff16155b8015610eab57506013546001600160a01b03868116911614155b8015610ec05750601354600160b01b900460ff165b8015610ee557506001600160a01b03851660009081526005602052604090205460ff16155b8015610f0a57506001600160a01b03841660009081526005602052604090205460ff16155b15610f2a57610f1882611130565b478015610f2857610f284761106e565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610f6f57506001600160a01b03831660009081526005602052604090205460ff165b80610fa157506013546001600160a01b03858116911614801590610fa157506013546001600160a01b03848116911614155b15610fae57506000611028565b6013546001600160a01b038581169116148015610fd957506012546001600160a01b03848116911614155b15610feb57600854600c55600954600d555b6013546001600160a01b03848116911614801561101657506012546001600160a01b03858116911614155b1561102857600a54600c55600b54600d555b61091b848484846112aa565b600081848411156110585760405162461bcd60e51b81526004016105ab91906117a5565b5060006110658486611b81565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110a8573d6000803e3d6000fd5b5050565b60006006548211156111135760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105ab565b600061111d6112d8565b905061112983826112fb565b9392505050565b6013805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061117857611178611b3f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f59190611b94565b8160018151811061120857611208611b3f565b6001600160a01b03928316602091820292909201015260125461122e9130911684610a6e565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611267908590600090869030904290600401611bb1565b600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b806112b7576112b761133d565b6112c284848461136b565b8061091b5761091b600e54600c55600f54600d55565b60008060006112e5611462565b90925090506112f482826112fb565b9250505090565b600061112983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114e4565b600c5415801561134d5750600d54155b1561135457565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061137d87611512565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113af908761156f565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113de90866115b1565b6001600160a01b03891660009081526002602052604090205561140081611610565b61140a848361165a565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161144f91815260200190565b60405180910390a3505050505050505050565b6006546000908190816114776012600a611ab4565b6114859063042343e0611ac3565b90506114ad6114966012600a611ab4565b6114a49063042343e0611ac3565b600654906112fb565b8210156114db576006546114c36012600a611ab4565b6114d19063042343e0611ac3565b9350935050509091565b90939092509050565b600081836115055760405162461bcd60e51b81526004016105ab91906117a5565b5060006110658486611c22565b600080600080600080600080600061152f8a600c54600d5461167e565b925092509250600061153f6112d8565b905060008060006115528e8787876116d3565b919e509c509a509598509396509194505050505091939550919395565b600061112983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611034565b6000806115be8385611b6e565b9050838110156111295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ab565b600061161a6112d8565b905060006116288383611723565b3060009081526002602052604090205490915061164590826115b1565b30600090815260026020526040902055505050565b600654611667908361156f565b60065560075461167790826115b1565b6007555050565b600080808061169860646116928989611723565b906112fb565b905060006116ab60646116928a89611723565b905060006116c3826116bd8b8661156f565b9061156f565b9992985090965090945050505050565b60008080806116e28886611723565b905060006116f08887611723565b905060006116fe8888611723565b90506000611710826116bd868661156f565b939b939a50919850919650505050505050565b600082600003611735575060006104f1565b60006117418385611ac3565b90508261174e8583611c22565b146111295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ab565b600060208083528351808285015260005b818110156117d2578581018301518582016040015282016117b6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105e057600080fd5b6000806040838503121561181b57600080fd5b8235611826816117f3565b946020939093013593505050565b60008060006060848603121561184957600080fd5b8335611854816117f3565b92506020840135611864816117f3565b929592945050506040919091013590565b6000806040838503121561188857600080fd5b50508035926020909101359150565b803580151581146118a757600080fd5b919050565b6000602082840312156118be57600080fd5b61112982611897565b6000602082840312156118d957600080fd5b8135611129816117f3565b6000602082840312156118f657600080fd5b5035919050565b60008060006040848603121561191257600080fd5b833567ffffffffffffffff8082111561192a57600080fd5b818601915086601f83011261193e57600080fd5b81358181111561194d57600080fd5b8760208260051b850101111561196257600080fd5b6020928301955093506119789186019050611897565b90509250925092565b6000806040838503121561199457600080fd5b823561199f816117f3565b915060208301356119af816117f3565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a0b5781600019048211156119f1576119f16119ba565b808516156119fe57918102915b93841c93908002906119d5565b509250929050565b600082611a22575060016104f1565b81611a2f575060006104f1565b8160018114611a455760028114611a4f57611a6b565b60019150506104f1565b60ff841115611a6057611a606119ba565b50506001821b6104f1565b5060208310610133831016604e8410600b8410161715611a8e575081810a6104f1565b611a9883836119d0565b8060001904821115611aac57611aac6119ba565b029392505050565b600061112960ff841683611a13565b80820281158282048414176104f1576104f16119ba565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601690820152754d617820616c6c6f776564207461782069732031302560501b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201611b6757611b676119ba565b5060010190565b808201808211156104f1576104f16119ba565b818103818111156104f1576104f16119ba565b600060208284031215611ba657600080fd5b8151611129816117f3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c015784516001600160a01b031683529383019391830191600101611bdc565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c3f57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207d7047d3e63683b3aaa343353038958570f4c21a2959459e989067cfc375529f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101655760003560e01c8063715018a6116100c157806398a5c3151161007a57806398a5c315146103e5578063a9059cbb14610405578063c3c8cd8014610425578063c492f0461461043a578063ca72a4e71461045a578063dd62ed3e1461047a578063f2fde38b146104c057600080fd5b8063715018a614610345578063751039fc1461035a5780637d1db4a51461036f5780638da5cb5b146103855780638f9a55c0146103a357806395d89b41146103b957600080fd5b8063313ce5671161011e578063313ce5671461027d5780633d46cb101461029957806349bd5a5e146102b057806352f7c988146102d05780636d8aa8f8146102f05780636fc3eaec1461031057806370a082311461032557600080fd5b806306fdde0314610171578063095ea7b3146101bc5780631694505e146101ec57806318160ddd1461022457806323b872dd146102475780632fd689e31461026757600080fd5b3661016c57005b600080fd5b34801561017d57600080fd5b5060408051808201909152601081526f64657620646f20736f6d657468696e6760801b60208201525b6040516101b391906117a5565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004611808565b6104e0565b60405190151581526020016101b3565b3480156101f857600080fd5b5060125461020c906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b34801561023057600080fd5b506102396104f7565b6040519081526020016101b3565b34801561025357600080fd5b506101dc610262366004611834565b610518565b34801561027357600080fd5b5061023960165481565b34801561028957600080fd5b50604051601281526020016101b3565b3480156102a557600080fd5b506102ae610581565b005b3480156102bc57600080fd5b5060135461020c906001600160a01b031681565b3480156102dc57600080fd5b506102ae6102eb366004611875565b6105e3565b3480156102fc57600080fd5b506102ae61030b3660046118ac565b61065a565b34801561031c57600080fd5b506102ae6106a2565b34801561033157600080fd5b506102396103403660046118c7565b6106ea565b34801561035157600080fd5b506102ae61070c565b34801561036657600080fd5b506102ae610780565b34801561037b57600080fd5b5061023960145481565b34801561039157600080fd5b506000546001600160a01b031661020c565b3480156103af57600080fd5b5061023960155481565b3480156103c557600080fd5b5060408051808201909152600381526244445360e81b60208201526101a6565b3480156103f157600080fd5b506102ae6104003660046118e4565b6107f0565b34801561041157600080fd5b506101dc610420366004611808565b61081f565b34801561043157600080fd5b506102ae61082c565b34801561044657600080fd5b506102ae6104553660046118fd565b610880565b34801561046657600080fd5b506102ae6104753660046118c7565b610921565b34801561048657600080fd5b50610239610495366004611981565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156104cc57600080fd5b506102ae6104db3660046118c7565b610984565b60006104ed338484610a6e565b5060015b92915050565b60006105056012600a611ab4565b6105139063042343e0611ac3565b905090565b6000610525848484610b92565b610577843361057285604051806060016040528060288152602001611c45602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611034565b610a6e565b5060019392505050565b6000546001600160a01b031633146105b45760405162461bcd60e51b81526004016105ab90611ada565b60405180910390fd5b60405133904780156108fc02916000818181858888f193505050501580156105e0573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461060d5760405162461bcd60e51b81526004016105ab90611ada565b600a82111561062e5760405162461bcd60e51b81526004016105ab90611b0f565b600a81111561064f5760405162461bcd60e51b81526004016105ab90611b0f565b600991909155600b55565b6000546001600160a01b031633146106845760405162461bcd60e51b81526004016105ab90611ada565b60138054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b031614806106d757506011546001600160a01b0316336001600160a01b0316145b6106e057600080fd5b476105e08161106e565b6001600160a01b0381166000908152600260205260408120546104f1906110ac565b6000546001600160a01b031633146107365760405162461bcd60e51b81526004016105ab90611ada565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107aa5760405162461bcd60e51b81526004016105ab90611ada565b6107b66012600a611ab4565b6107c49063042343e0611ac3565b6014556107d36012600a611ab4565b6107e19063042343e0611ac3565b60155560026009819055600b55565b6000546001600160a01b0316331461081a5760405162461bcd60e51b81526004016105ab90611ada565b601655565b60006104ed338484610b92565b6010546001600160a01b0316336001600160a01b0316148061086157506011546001600160a01b0316336001600160a01b0316145b61086a57600080fd5b6000610875306106ea565b90506105e081611130565b6000546001600160a01b031633146108aa5760405162461bcd60e51b81526004016105ab90611ada565b60005b8281101561091b5781600560008686858181106108cc576108cc611b3f565b90506020020160208101906108e191906118c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061091381611b55565b9150506108ad565b50505050565b6000546001600160a01b0316331461094b5760405162461bcd60e51b81526004016105ab90611ada565b6013805460ff60b01b196001600160a81b03199091166001600160a01b0390931692909217600160a01b1791909116600160b01b179055565b6000546001600160a01b031633146109ae5760405162461bcd60e51b81526004016105ab90611ada565b6001600160a01b038116610a135760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105ab565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ad05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ab565b6001600160a01b038216610b315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ab565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bf65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ab565b6001600160a01b038216610c585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ab565b60008111610cba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105ab565b6000546001600160a01b03848116911614801590610ce657506000546001600160a01b03838116911614155b15610f2d57601354600160a01b900460ff16610d7f576000546001600160a01b03848116911614610d7f5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105ab565b601454811115610dd15760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105ab565b6013546001600160a01b03838116911614610e565760155481610df3846106ea565b610dfd9190611b6e565b10610e565760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105ab565b6000610e61306106ea565b601654601454919250821015908210610e7a5760145491505b808015610e915750601354600160a81b900460ff16155b8015610eab57506013546001600160a01b03868116911614155b8015610ec05750601354600160b01b900460ff165b8015610ee557506001600160a01b03851660009081526005602052604090205460ff16155b8015610f0a57506001600160a01b03841660009081526005602052604090205460ff16155b15610f2a57610f1882611130565b478015610f2857610f284761106e565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610f6f57506001600160a01b03831660009081526005602052604090205460ff165b80610fa157506013546001600160a01b03858116911614801590610fa157506013546001600160a01b03848116911614155b15610fae57506000611028565b6013546001600160a01b038581169116148015610fd957506012546001600160a01b03848116911614155b15610feb57600854600c55600954600d555b6013546001600160a01b03848116911614801561101657506012546001600160a01b03858116911614155b1561102857600a54600c55600b54600d555b61091b848484846112aa565b600081848411156110585760405162461bcd60e51b81526004016105ab91906117a5565b5060006110658486611b81565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110a8573d6000803e3d6000fd5b5050565b60006006548211156111135760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105ab565b600061111d6112d8565b905061112983826112fb565b9392505050565b6013805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061117857611178611b3f565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f59190611b94565b8160018151811061120857611208611b3f565b6001600160a01b03928316602091820292909201015260125461122e9130911684610a6e565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611267908590600090869030904290600401611bb1565b600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b806112b7576112b761133d565b6112c284848461136b565b8061091b5761091b600e54600c55600f54600d55565b60008060006112e5611462565b90925090506112f482826112fb565b9250505090565b600061112983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114e4565b600c5415801561134d5750600d54155b1561135457565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061137d87611512565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113af908761156f565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113de90866115b1565b6001600160a01b03891660009081526002602052604090205561140081611610565b61140a848361165a565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161144f91815260200190565b60405180910390a3505050505050505050565b6006546000908190816114776012600a611ab4565b6114859063042343e0611ac3565b90506114ad6114966012600a611ab4565b6114a49063042343e0611ac3565b600654906112fb565b8210156114db576006546114c36012600a611ab4565b6114d19063042343e0611ac3565b9350935050509091565b90939092509050565b600081836115055760405162461bcd60e51b81526004016105ab91906117a5565b5060006110658486611c22565b600080600080600080600080600061152f8a600c54600d5461167e565b925092509250600061153f6112d8565b905060008060006115528e8787876116d3565b919e509c509a509598509396509194505050505091939550919395565b600061112983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611034565b6000806115be8385611b6e565b9050838110156111295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ab565b600061161a6112d8565b905060006116288383611723565b3060009081526002602052604090205490915061164590826115b1565b30600090815260026020526040902055505050565b600654611667908361156f565b60065560075461167790826115b1565b6007555050565b600080808061169860646116928989611723565b906112fb565b905060006116ab60646116928a89611723565b905060006116c3826116bd8b8661156f565b9061156f565b9992985090965090945050505050565b60008080806116e28886611723565b905060006116f08887611723565b905060006116fe8888611723565b90506000611710826116bd868661156f565b939b939a50919850919650505050505050565b600082600003611735575060006104f1565b60006117418385611ac3565b90508261174e8583611c22565b146111295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ab565b600060208083528351808285015260005b818110156117d2578581018301518582016040015282016117b6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105e057600080fd5b6000806040838503121561181b57600080fd5b8235611826816117f3565b946020939093013593505050565b60008060006060848603121561184957600080fd5b8335611854816117f3565b92506020840135611864816117f3565b929592945050506040919091013590565b6000806040838503121561188857600080fd5b50508035926020909101359150565b803580151581146118a757600080fd5b919050565b6000602082840312156118be57600080fd5b61112982611897565b6000602082840312156118d957600080fd5b8135611129816117f3565b6000602082840312156118f657600080fd5b5035919050565b60008060006040848603121561191257600080fd5b833567ffffffffffffffff8082111561192a57600080fd5b818601915086601f83011261193e57600080fd5b81358181111561194d57600080fd5b8760208260051b850101111561196257600080fd5b6020928301955093506119789186019050611897565b90509250925092565b6000806040838503121561199457600080fd5b823561199f816117f3565b915060208301356119af816117f3565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a0b5781600019048211156119f1576119f16119ba565b808516156119fe57918102915b93841c93908002906119d5565b509250929050565b600082611a22575060016104f1565b81611a2f575060006104f1565b8160018114611a455760028114611a4f57611a6b565b60019150506104f1565b60ff841115611a6057611a606119ba565b50506001821b6104f1565b5060208310610133831016604e8410600b8410161715611a8e575081810a6104f1565b611a9883836119d0565b8060001904821115611aac57611aac6119ba565b029392505050565b600061112960ff841683611a13565b80820281158282048414176104f1576104f16119ba565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601690820152754d617820616c6c6f776564207461782069732031302560501b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060018201611b6757611b676119ba565b5060010190565b808201808211156104f1576104f16119ba565b818103818111156104f1576104f16119ba565b600060208284031215611ba657600080fd5b8151611129816117f3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c015784516001600160a01b031683529383019391830191600101611bdc565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c3f57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207d7047d3e63683b3aaa343353038958570f4c21a2959459e989067cfc375529f64736f6c63430008110033

Deployed Bytecode Sourcemap

4191:12917:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6389:83;;;;;;;;;;-1:-1:-1;6459:5:0;;;;;;;;;;;;-1:-1:-1;;;6459:5:0;;;;6389:83;;;;;;;:::i;:::-;;;;;;;;7314:193;;;;;;;;;;-1:-1:-1;7314:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7314:193:0;1023:187:1;5436:41:0;;;;;;;;;;-1:-1:-1;5436:41:0;;;;-1:-1:-1;;;;;5436:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5436:41:0;1215:229:1;6666:95:0;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;6666:95:0;1449:177:1;7515:446:0;;;;;;;;;;-1:-1:-1;7515:446:0;;;;;:::i;:::-;;:::i;5735:50::-;;;;;;;;;;;;;;;;6575:83;;;;;;;;;;-1:-1:-1;6575:83:0;;4425:2;2234:36:1;;2222:2;2207:18;6575:83:0;2092:184:1;11878:116:0;;;;;;;;;;;;;:::i;:::-;;5484:28;;;;;;;;;;-1:-1:-1;5484:28:0;;;;-1:-1:-1;;;;;5484:28:0;;;16232:285;;;;;;;;;;-1:-1:-1;16232:285:0;;;;;:::i;:::-;;:::i;16760:101::-;;;;;;;;;;-1:-1:-1;16760:101:0;;;;;:::i;:::-;;:::i;12409:235::-;;;;;;;;;;;;;:::i;6769:138::-;;;;;;;;;;-1:-1:-1;6769:138:0;;;;;:::i;:::-;;:::i;1678:148::-;;;;;;;;;;;;;:::i;12652:174::-;;;;;;;;;;;;;:::i;5635:42::-;;;;;;;;;;;;;;;;1464:79;;;;;;;;;;-1:-1:-1;1502:7:0;1529:6;-1:-1:-1;;;;;1529:6:0;1464:79;;5684:44;;;;;;;;;;;;;;;;6480:87;;;;;;;;;;-1:-1:-1;6552:7:0;;;;;;;;;;;;-1:-1:-1;;;6552:7:0;;;;6480:87;;16569:139;;;;;;;;;;-1:-1:-1;16569:139:0;;;;;:::i;:::-;;:::i;6915:199::-;;;;;;;;;;-1:-1:-1;6915:199:0;;;;;:::i;:::-;;:::i;12165:236::-;;;;;;;;;;;;;:::i;16869:234::-;;;;;;;;;;-1:-1:-1;16869:234:0;;;;;:::i;:::-;;:::i;12002:155::-;;;;;;;;;;-1:-1:-1;12002:155:0;;;;;:::i;:::-;;:::i;7122:184::-;;;;;;;;;;-1:-1:-1;7122:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7271:18:0;;;7239:7;7271:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7122:184;1834:244;;;;;;;;;;-1:-1:-1;1834:244:0;;;;;:::i;:::-;;:::i;7314:193::-;7416:4;7438:39;303:10;7461:7;7470:6;7438:8;:39::i;:::-;-1:-1:-1;7495:4:0;7314:193;;;;;:::o;6666:95::-;6719:7;4765:13;4425:2;4765;:13;:::i;:::-;4752:26;;:10;:26;:::i;:::-;6739:14;;6666:95;:::o;7515:446::-;7647:4;7664:36;7674:6;7682:9;7693:6;7664:9;:36::i;:::-;7711:220;7734:6;303:10;7782:138;7838:6;7782:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7782:19:0;;;;;;:11;:19;;;;;;;;303:10;7782:33;;;;;;;;;;:37;:138::i;:::-;7711:8;:220::i;:::-;-1:-1:-1;7949:4:0;7515:446;;;;;:::o;11878:116::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;;;;;;;;;11935:51:::1;::::0;11943:10:::1;::::0;11964:21:::1;11935:51:::0;::::1;;;::::0;::::1;::::0;;;11964:21;11943:10;11935:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11878:116::o:0;16232:285::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;16342:2:::1;16327:11;:17;;16319:51;;;;-1:-1:-1::0;;;16319:51:0::1;;;;;;;:::i;:::-;16405:2;16389:12;:18;;16381:52;;;;-1:-1:-1::0;;;16381:52:0::1;;;;;;;:::i;:::-;16444:12;:26:::0;;;;16481:13:::1;:28:::0;16232:285::o;16760:101::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;16827:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16827:26:0::1;-1:-1:-1::0;;;;16827:26:0;;::::1;::::0;;;::::1;::::0;;16760:101::o;12409:235::-;12475:19;;-1:-1:-1;;;;;12475:19:0;303:10;-1:-1:-1;;;;;12459:35:0;;:72;;;-1:-1:-1;12514:17:0;;-1:-1:-1;;;;;12514:17:0;303:10;-1:-1:-1;;;;;12498:33:0;;12459:72;12451:81;;;;;;12572:21;12604:32;12572:21;12604:12;:32::i;6769:138::-;-1:-1:-1;;;;;6882:16:0;;6835:7;6882:16;;;:7;:16;;;;;;6862:37;;:19;:37::i;1678:148::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;1785:1:::1;1769:6:::0;;1748:40:::1;::::0;-1:-1:-1;;;;;1769:6:0;;::::1;::::0;1748:40:::1;::::0;1785:1;;1748:40:::1;1816:1;1799:19:::0;;-1:-1:-1;;;;;;1799:19:0::1;::::0;;1678:148::o;12652:174::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;4765:13:::1;4425:2;4765;:13;:::i;:::-;4752:26;::::0;:10:::1;:26;:::i;:::-;12706:12;:22:::0;4765:13:::1;4425:2;4765;:13;:::i;:::-;4752:26;::::0;:10:::1;:26;:::i;:::-;12739:14;:24:::0;12789:1:::1;12774:12;:16:::0;;;12801:13:::1;:17:::0;12652:174::o;16569:139::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;16660:19:::1;:40:::0;16569:139::o;6915:199::-;7020:4;7042:42;303:10;7066:9;7077:6;7042:9;:42::i;12165:236::-;12231:19;;-1:-1:-1;;;;;12231:19:0;303:10;-1:-1:-1;;;;;12215:35:0;;:72;;;-1:-1:-1;12270:17:0;;-1:-1:-1;;;;;12270:17:0;303:10;-1:-1:-1;;;;;12254:33:0;;12215:72;12207:81;;;;;;12299:23;12325:24;12343:4;12325:9;:24::i;:::-;12299:50;;12360:33;12377:15;12360:16;:33::i;16869:234::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;16986:9:::1;16982:114;17001:19:::0;;::::1;16982:114;;;17076:8;17042:18;:31;17061:8;;17070:1;17061:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17042:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17042:31:0;:42;;-1:-1:-1;;17042:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17022:3;::::1;::::0;::::1;:::i;:::-;;;;16982:114;;;;16869:234:::0;;;:::o;12002:155::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;12068:13:::1;:23:::0;;-1:-1:-1;;;;;;;;;;12102:18:0;;;-1:-1:-1;;;;;12068:23:0;;::::1;12102:18:::0;;;;-1:-1:-1;;;12102:18:0::1;12131::::0;;;::::1;-1:-1:-1::0;;;12131:18:0::1;::::0;;12002:155::o;1834:244::-;1591:6;;-1:-1:-1;;;;;1591:6:0;303:10;1591:22;1583:67;;;;-1:-1:-1;;;1583:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1923:22:0;::::1;1915:73;;;::::0;-1:-1:-1;;;1915:73:0;;7490:2:1;1915:73:0::1;::::0;::::1;7472:21:1::0;7529:2;7509:18;;;7502:30;7568:34;7548:18;;;7541:62;-1:-1:-1;;;7619:18:1;;;7612:36;7665:19;;1915:73:0::1;7288:402:1::0;1915:73:0::1;2025:6;::::0;;2004:38:::1;::::0;-1:-1:-1;;;;;2004:38:0;;::::1;::::0;2025:6;::::1;::::0;2004:38:::1;::::0;::::1;2053:6;:17:::0;;-1:-1:-1;;;;;;2053:17:0::1;-1:-1:-1::0;;;;;2053:17:0;;;::::1;::::0;;;::::1;::::0;;1834:244::o;8652:369::-;-1:-1:-1;;;;;8779:19:0;;8771:68;;;;-1:-1:-1;;;8771:68:0;;7897:2:1;8771:68:0;;;7879:21:1;7936:2;7916:18;;;7909:30;7975:34;7955:18;;;7948:62;-1:-1:-1;;;8026:18:1;;;8019:34;8070:19;;8771:68:0;7695:400:1;8771:68:0;-1:-1:-1;;;;;8858:21:0;;8850:68;;;;-1:-1:-1;;;8850:68:0;;8302:2:1;8850:68:0;;;8284:21:1;8341:2;8321:18;;;8314:30;8380:34;8360:18;;;8353:62;-1:-1:-1;;;8431:18:1;;;8424:32;8473:19;;8850:68:0;8100:398:1;8850:68:0;-1:-1:-1;;;;;8929:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8981:32;;1595:25:1;;;8981:32:0;;1568:18:1;8981:32:0;;;;;;;8652:369;;;:::o;9029:2243::-;-1:-1:-1;;;;;9151:18:0;;9143:68;;;;-1:-1:-1;;;9143:68:0;;8705:2:1;9143:68:0;;;8687:21:1;8744:2;8724:18;;;8717:30;8783:34;8763:18;;;8756:62;-1:-1:-1;;;8834:18:1;;;8827:35;8879:19;;9143:68:0;8503:401:1;9143:68:0;-1:-1:-1;;;;;9230:16:0;;9222:64;;;;-1:-1:-1;;;9222:64:0;;9111:2:1;9222:64:0;;;9093:21:1;9150:2;9130:18;;;9123:30;9189:34;9169:18;;;9162:62;-1:-1:-1;;;9240:18:1;;;9233:33;9283:19;;9222:64:0;8909:399:1;9222:64:0;9314:1;9305:6;:10;9297:64;;;;-1:-1:-1;;;9297:64:0;;9515:2:1;9297:64:0;;;9497:21:1;9554:2;9534:18;;;9527:30;9593:34;9573:18;;;9566:62;-1:-1:-1;;;9644:18:1;;;9637:39;9693:19;;9297:64:0;9313:405:1;9297:64:0;1502:7;1529:6;-1:-1:-1;;;;;9378:15:0;;;1529:6;;9378:15;;;;:32;;-1:-1:-1;1502:7:0;1529:6;-1:-1:-1;;;;;9397:13:0;;;1529:6;;9397:13;;9378:32;9374:1172;;;9467:11;;-1:-1:-1;;;9467:11:0;;;;9462:144;;1502:7;1529:6;-1:-1:-1;;;;;9507:15:0;;;1529:6;;9507:15;9499:91;;;;-1:-1:-1;;;9499:91:0;;9925:2:1;9499:91:0;;;9907:21:1;9964:2;9944:18;;;9937:30;10003:34;9983:18;;;9976:62;10074:33;10054:18;;;10047:61;10125:19;;9499:91:0;9723:427:1;9499:91:0;9640:12;;9630:6;:22;;9622:63;;;;-1:-1:-1;;;9622:63:0;;10357:2:1;9622:63:0;;;10339:21:1;10396:2;10376:18;;;10369:30;10435;10415:18;;;10408:58;10483:18;;9622:63:0;10155:352:1;9622:63:0;9711:13;;-1:-1:-1;;;;;9705:19:0;;;9711:13;;9705:19;9702:146;;9778:14;;9769:6;9753:13;9763:2;9753:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9745:87;;;;-1:-1:-1;;;9745:87:0;;10844:2:1;9745:87:0;;;10826:21:1;10883:2;10863:18;;;10856:30;10922:34;10902:18;;;10895:62;-1:-1:-1;;;10973:18:1;;;10966:33;11016:19;;9745:87:0;10642:399:1;9745:87:0;9864:28;9895:24;9913:4;9895:9;:24::i;:::-;9973:19;;10036:12;;9864:55;;-1:-1:-1;9949:43:0;;;;10012:36;;10009:124;;10105:12;;10082:35;;10009:124;10153:7;:18;;;;-1:-1:-1;10165:6:0;;-1:-1:-1;;;10165:6:0;;;;10164:7;10153:18;:43;;;;-1:-1:-1;10183:13:0;;-1:-1:-1;;;;;10175:21:0;;;10183:13;;10175:21;;10153:43;:58;;;;-1:-1:-1;10200:11:0;;-1:-1:-1;;;10200:11:0;;;;10153:58;:87;;;;-1:-1:-1;;;;;;10216:24:0;;;;;;:18;:24;;;;;;;;10215:25;10153:87;:114;;;;-1:-1:-1;;;;;;10245:22:0;;;;;;:18;:22;;;;;;;;10244:23;10153:114;10149:386;;;10288:38;10305:20;10288:16;:38::i;:::-;10374:21;10418:22;;10414:106;;10465:35;10478:21;10465:12;:35::i;:::-;10269:266;10149:386;9412:1134;;9374:1172;-1:-1:-1;;;;;10622:24:0;;10558:12;10622:24;;;:18;:24;;;;;;10573:4;;10622:24;;;:50;;-1:-1:-1;;;;;;10650:22:0;;;;;;:18;:22;;;;;;;;10622:50;10621:102;;;-1:-1:-1;10686:13:0;;-1:-1:-1;;;;;10678:21:0;;;10686:13;;10678:21;;;;:44;;-1:-1:-1;10709:13:0;;-1:-1:-1;;;;;10703:19:0;;;10709:13;;10703:19;;10678:44;10617:594;;;-1:-1:-1;10750:5:0;10617:594;;;10833:13;;-1:-1:-1;;;;;10825:21:0;;;10833:13;;10825:21;:55;;;;-1:-1:-1;10864:15:0;;-1:-1:-1;;;;;10850:30:0;;;10864:15;;10850:30;;10825:55;10822:162;;;10913:14;;10901:9;:26;10956:12;;10946:7;:22;10822:162;11043:13;;-1:-1:-1;;;;;11037:19:0;;;11043:13;;11037:19;:55;;;;-1:-1:-1;11076:15:0;;-1:-1:-1;;;;;11060:32:0;;;11076:15;;11060:32;;11037:55;11033:165;;;11125:15;;11113:9;:27;11169:13;;11159:7;:23;11033:165;11223:41;11238:4;11244:2;11248:6;11256:7;11223:14;:41::i;2442:224::-;2562:7;2598:12;2590:6;;;;2582:29;;;;-1:-1:-1;;;2582:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2622:9:0;2634:5;2638:1;2634;:5;:::i;:::-;2622:17;2442:224;-1:-1:-1;;;;;2442:224:0:o;11771:99::-;11828:17;;:34;;-1:-1:-1;;;;;11828:17:0;;;;:34;;;;;11855:6;;11828:17;:34;:17;:34;11855:6;11828:17;:34;;;;;;;;;;;;;;;;;;;;;11771:99;:::o;7969:323::-;8064:7;8122;;8111;:18;;8089:110;;;;-1:-1:-1;;;8089:110:0;;11381:2:1;8089:110:0;;;11363:21:1;11420:2;11400:18;;;11393:30;11459:34;11439:18;;;11432:62;-1:-1:-1;;;11510:18:1;;;11503:40;11560:19;;8089:110:0;11179:406:1;8089:110:0;8210:19;8232:10;:8;:10::i;:::-;8210:32;-1:-1:-1;8260:24:0;:7;8210:32;8260:11;:24::i;:::-;8253:31;7969:323;-1:-1:-1;;;7969:323:0:o;11280:483::-;5879:6;:13;;-1:-1:-1;;;;5879:13:0;-1:-1:-1;;;5879:13:0;;;11382:16:::1;::::0;;11396:1:::1;11382:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11382:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11382:16:0::1;11358:40;;11427:4;11409;11414:1;11409:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11409:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11453:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11453:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11409:7;;11453:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11443:4;11448:1;11443:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11443:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11518:15:::1;::::0;11486:62:::1;::::0;11503:4:::1;::::0;11518:15:::1;11536:11:::0;11486:8:::1;:62::i;:::-;11559:15;::::0;:196:::1;::::0;-1:-1:-1;;;11559:196:0;;-1:-1:-1;;;;;11559:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11640:11;;11559:15:::1;::::0;11682:4;;11709::::1;::::0;11729:15:::1;::::0;11559:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5915:6:0;:14;;-1:-1:-1;;;;5915:14:0;;;-1:-1:-1;;;;11280:483:0:o;12834:282::-;12990:7;12985:28;;12999:14;:12;:14::i;:::-;13024:44;13042:6;13050:9;13061:6;13024:17;:44::i;:::-;13084:7;13079:29;;13093:15;8583:17;;8571:9;:29;8621:15;;8611:7;:25;8527:117;15795:164;15837:7;15858:15;15875;15894:19;:17;:19::i;:::-;15857:56;;-1:-1:-1;15857:56:0;-1:-1:-1;15931:20:0;15857:56;;15931:11;:20::i;:::-;15924:27;;;;15795:164;:::o;2928:132::-;2986:7;3013:39;3017:1;3020;3013:39;;;;;;;;;;;;;;;;;:3;:39::i;8300:219::-;8347:9;;:14;:30;;;;-1:-1:-1;8365:7:0;;:12;8347:30;8343:43;;;8300:219::o;8343:43::-;8418:9;;;8398:17;:29;8456:7;;;8438:15;:25;-1:-1:-1;8476:13:0;;;;8500:11;8300:219::o;13124:610::-;13271:15;13301:23;13339:12;13366:23;13404:12;13431:13;13458:19;13469:7;13458:10;:19::i;:::-;-1:-1:-1;;;;;13506:15:0;;;;;;:7;:15;;;;;;13256:221;;-1:-1:-1;13256:221:0;;-1:-1:-1;13256:221:0;;-1:-1:-1;13256:221:0;-1:-1:-1;13256:221:0;-1:-1:-1;13256:221:0;-1:-1:-1;13506:28:0;;13256:221;13506:19;:28::i;:::-;-1:-1:-1;;;;;13488:15:0;;;;;;;:7;:15;;;;;;:46;;;;13566:18;;;;;;;:39;;13589:15;13566:22;:39::i;:::-;-1:-1:-1;;;;;13545:18:0;;;;;;:7;:18;;;;;:60;13616:16;13626:5;13616:9;:16::i;:::-;13643:23;13655:4;13661;13643:11;:23::i;:::-;13699:9;-1:-1:-1;;;;;13682:44:0;13691:6;-1:-1:-1;;;;;13682:44:0;;13710:15;13682:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13682:44:0;;;;;;;;13245:489;;;;;;13124:610;;;:::o;15967:257::-;16065:7;;16018;;;;;4765:13;4425:2;4765;:13;:::i;:::-;4752:26;;:10;:26;:::i;:::-;16083:25;-1:-1:-1;16133:20:0;4765:13;4425:2;4765;:13;:::i;:::-;4752:26;;:10;:26;:::i;:::-;16133:7;;;:11;:20::i;:::-;16123:7;:30;16119:61;;;16163:7;;4765:13;4425:2;4765;:13;:::i;:::-;4752:26;;:10;:26;:::i;:::-;16155:25;;;;;;15967:257;;:::o;16119:61::-;16199:7;;16208;;-1:-1:-1;15967:257:0;-1:-1:-1;15967:257:0:o;3068:223::-;3188:7;3223:12;3216:5;3208:28;;;;-1:-1:-1;;;3208:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3247:9:0;3259:5;3263:1;3259;:5;:::i;14153:615::-;14253:7;14275;14297;14319;14341;14363;14399:23;14424:12;14438:13;14468:40;14480:7;14489:9;;14500:7;;14468:11;:40::i;:::-;14398:110;;;;;;14519:19;14541:10;:8;:10::i;:::-;14519:32;;14563:15;14580:23;14605:12;14634:46;14646:7;14655:4;14661:5;14668:11;14634;:46::i;:::-;14562:118;;-1:-1:-1;14562:118:0;-1:-1:-1;14562:118:0;-1:-1:-1;14731:15:0;;-1:-1:-1;14748:4:0;;-1:-1:-1;14754:5:0;;-1:-1:-1;;;;;14153:615:0;;;;;;;:::o;2298:136::-;2356:7;2383:43;2387:1;2390;2383:43;;;;;;;;;;;;;;;;;:3;:43::i;2111:179::-;2169:7;;2201:5;2205:1;2201;:5;:::i;:::-;2189:17;;2230:1;2225;:6;;2217:46;;;;-1:-1:-1;;;2217:46:0;;13387:2:1;2217:46:0;;;13369:21:1;13426:2;13406:18;;;13399:30;13465:29;13445:18;;;13438:57;13512:18;;2217:46:0;13185:351:1;13742:211:0;13795:19;13817:10;:8;:10::i;:::-;13795:32;-1:-1:-1;13838:13:0;13854:22;:5;13795:32;13854:9;:22::i;:::-;13928:4;13912:22;;;;:7;:22;;;;;;13838:38;;-1:-1:-1;13912:33:0;;13838:38;13912:26;:33::i;:::-;13903:4;13887:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13742:211:0:o;13961:147::-;14039:7;;:17;;14051:4;14039:11;:17::i;:::-;14029:7;:27;14080:10;;:20;;14095:4;14080:14;:20::i;:::-;14067:10;:33;-1:-1:-1;;13961:147:0:o;14776:469::-;14945:7;;;;15039:30;15065:3;15039:21;:7;15051:8;15039:11;:21::i;:::-;:25;;:30::i;:::-;15024:45;-1:-1:-1;15080:13:0;15096:28;15120:3;15096:19;:7;15108:6;15096:11;:19::i;:28::-;15080:44;-1:-1:-1;15135:23:0;15161:28;15080:44;15161:17;:7;15173:4;15161:11;:17::i;:::-;:21;;:28::i;:::-;15135:54;15225:4;;-1:-1:-1;15231:5:0;;-1:-1:-1;14776:469:0;;-1:-1:-1;;;;;14776:469:0:o;15253:534::-;15447:7;;;;15544:24;:7;15556:11;15544;:24::i;:::-;15526:42;-1:-1:-1;15579:12:0;15594:21;:4;15603:11;15594:8;:21::i;:::-;15579:36;-1:-1:-1;15626:13:0;15642:22;:5;15652:11;15642:9;:22::i;:::-;15626:38;-1:-1:-1;15675:23:0;15701:28;15626:38;15701:17;:7;15713:4;15701:11;:17::i;:28::-;15748:7;;;;-1:-1:-1;15774:4:0;;-1:-1:-1;15253:534:0;;-1:-1:-1;;;;;;;15253:534:0:o;2674:246::-;2732:7;2756:1;2761;2756:6;2752:47;;-1:-1:-1;2786:1:0;2779:8;;2752:47;2809:9;2821:5;2825:1;2821;:5;:::i;:::-;2809:17;-1:-1:-1;2854:1:0;2845:5;2849:1;2809:17;2845:5;:::i;:::-;:10;2837:56;;;;-1:-1:-1;;;2837:56:0;;13743:2:1;2837:56:0;;;13725:21:1;13782:2;13762:18;;;13755:30;13821:34;13801:18;;;13794:62;-1:-1:-1;;;13872:18:1;;;13865:31;13913:19;;2837:56:0;13541:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:248::-;2557:6;2565;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;-1:-1:-1;;2657:23:1;;;2727:2;2712:18;;;2699:32;;-1:-1:-1;2489:248:1:o;2742:160::-;2807:20;;2863:13;;2856:21;2846:32;;2836:60;;2892:1;2889;2882:12;2836:60;2742:160;;;:::o;2907:180::-;2963:6;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;3055:26;3071:9;3055:26;:::i;3092:247::-;3151:6;3204:2;3192:9;3183:7;3179:23;3175:32;3172:52;;;3220:1;3217;3210:12;3172:52;3259:9;3246:23;3278:31;3303:5;3278:31;:::i;3344:180::-;3403:6;3456:2;3444:9;3435:7;3431:23;3427:32;3424:52;;;3472:1;3469;3462:12;3424:52;-1:-1:-1;3495:23:1;;3344:180;-1:-1:-1;3344:180:1:o;3529:689::-;3621:6;3629;3637;3690:2;3678:9;3669:7;3665:23;3661:32;3658:52;;;3706:1;3703;3696:12;3658:52;3746:9;3733:23;3775:18;3816:2;3808:6;3805:14;3802:34;;;3832:1;3829;3822:12;3802:34;3870:6;3859:9;3855:22;3845:32;;3915:7;3908:4;3904:2;3900:13;3896:27;3886:55;;3937:1;3934;3927:12;3886:55;3977:2;3964:16;4003:2;3995:6;3992:14;3989:34;;;4019:1;4016;4009:12;3989:34;4074:7;4067:4;4057:6;4054:1;4050:14;4046:2;4042:23;4038:34;4035:47;4032:67;;;4095:1;4092;4085:12;4032:67;4126:4;4118:13;;;;-1:-1:-1;4150:6:1;-1:-1:-1;4175:37:1;;4191:20;;;-1:-1:-1;4175:37:1;:::i;:::-;4165:47;;3529:689;;;;;:::o;4223:388::-;4291:6;4299;4352:2;4340:9;4331:7;4327:23;4323:32;4320:52;;;4368:1;4365;4358:12;4320:52;4407:9;4394:23;4426:31;4451:5;4426:31;:::i;:::-;4476:5;-1:-1:-1;4533:2:1;4518:18;;4505:32;4546:33;4505:32;4546:33;:::i;:::-;4598:7;4588:17;;;4223:388;;;;;:::o;4616:127::-;4677:10;4672:3;4668:20;4665:1;4658:31;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:422;4837:1;4880:5;4837:1;4894:270;4915:7;4905:8;4902:21;4894:270;;;4974:4;4970:1;4966:6;4962:17;4956:4;4953:27;4950:53;;;4983:18;;:::i;:::-;5033:7;5023:8;5019:22;5016:55;;;5053:16;;;;5016:55;5132:22;;;;5092:15;;;;4894:270;;;4898:3;4748:422;;;;;:::o;5175:806::-;5224:5;5254:8;5244:80;;-1:-1:-1;5295:1:1;5309:5;;5244:80;5343:4;5333:76;;-1:-1:-1;5380:1:1;5394:5;;5333:76;5425:4;5443:1;5438:59;;;;5511:1;5506:130;;;;5418:218;;5438:59;5468:1;5459:10;;5482:5;;;5506:130;5543:3;5533:8;5530:17;5527:43;;;5550:18;;:::i;:::-;-1:-1:-1;;5606:1:1;5592:16;;5621:5;;5418:218;;5720:2;5710:8;5707:16;5701:3;5695:4;5692:13;5688:36;5682:2;5672:8;5669:16;5664:2;5658:4;5655:12;5651:35;5648:77;5645:159;;;-1:-1:-1;5757:19:1;;;5789:5;;5645:159;5836:34;5861:8;5855:4;5836:34;:::i;:::-;5906:6;5902:1;5898:6;5894:19;5885:7;5882:32;5879:58;;;5917:18;;:::i;:::-;5955:20;;5175:806;-1:-1:-1;;;5175:806:1:o;5986:140::-;6044:5;6073:47;6114:4;6104:8;6100:19;6094:4;6073:47;:::i;6131:168::-;6204:9;;;6235;;6252:15;;;6246:22;;6232:37;6222:71;;6273:18;;:::i;6304:356::-;6506:2;6488:21;;;6525:18;;;6518:30;6584:34;6579:2;6564:18;;6557:62;6651:2;6636:18;;6304:356::o;6665:346::-;6867:2;6849:21;;;6906:2;6886:18;;;6879:30;-1:-1:-1;;;6940:2:1;6925:18;;6918:52;7002:2;6987:18;;6665:346::o;7016:127::-;7077:10;7072:3;7068:20;7065:1;7058:31;7108:4;7105:1;7098:15;7132:4;7129:1;7122:15;7148:135;7187:3;7208:17;;;7205:43;;7228:18;;:::i;:::-;-1:-1:-1;7275:1:1;7264:13;;7148:135::o;10512:125::-;10577:9;;;10598:10;;;10595:36;;;10611:18;;:::i;11046:128::-;11113:9;;;11134:11;;;11131:37;;;11148:18;;:::i;11722:251::-;11792:6;11845:2;11833:9;11824:7;11820:23;11816:32;11813:52;;;11861:1;11858;11851:12;11813:52;11893:9;11887:16;11912:31;11937:5;11912:31;:::i;11978:980::-;12240:4;12288:3;12277:9;12273:19;12319:6;12308:9;12301:25;12345:2;12383:6;12378:2;12367:9;12363:18;12356:34;12426:3;12421:2;12410:9;12406:18;12399:31;12450:6;12485;12479:13;12516:6;12508;12501:22;12554:3;12543:9;12539:19;12532:26;;12593:2;12585:6;12581:15;12567:29;;12614:1;12624:195;12638:6;12635:1;12632:13;12624:195;;;12703:13;;-1:-1:-1;;;;;12699:39:1;12687:52;;12794:15;;;;12759:12;;;;12735:1;12653:9;12624:195;;;-1:-1:-1;;;;;;;12875:32:1;;;;12870:2;12855:18;;12848:60;-1:-1:-1;;;12939:3:1;12924:19;12917:35;12836:3;11978:980;-1:-1:-1;;;11978:980:1:o;12963:217::-;13003:1;13029;13019:132;;13073:10;13068:3;13064:20;13061:1;13054:31;13108:4;13105:1;13098:15;13136:4;13133:1;13126:15;13019:132;-1:-1:-1;13165:9:1;;12963:217::o

Swarm Source

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