ETH Price: $3,276.44 (-0.31%)
Gas: 3.33 Gwei

Token

ChirpNet (Chirp)
 

Overview

Max Total Supply

1,000,000,000 Chirp

Holders

101

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 Chirp

Value
$0.00
0xdfc9b13bd2dc0afc13e3a81466bad5a6b3f15451
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:
ChirpNet

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*  Chirp Network - Decentralized Social Media

Democratizing Social Media, one Chirp at a time.
Chirp is a future 360-degree social network merged with blockchain technology.

TG : https://t.me/ChirpNetworkIO
Web : https://chirpnet.io/
Twitter : https://twitter.com/ChirpNetworkIO

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

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 public _marketing;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        _marketing = 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");
        _;
    }

    modifier onlyDev() {
        require(_marketing == _msgSender() || _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 ChirpNet is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "ChirpNet";
    string private constant _symbol = "Chirp";
    uint8 private constant _decimals = 9;

    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 = 1000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;
    bool public Volunteer4VestLiquidity = false;
    bool public Volunteer4VestMode = false;
    address private _uniswapWallet = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping (address => bool) public Volunteer4VestWallet;

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

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

    address payable public _developmentAddress = payable(msg.sender);
    address payable public _marketingAddress = payable(msg.sender);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal.mul(34).div(1000);
    uint256 public _Volunteer4VestSize = _tTotal.mul(1000).div(1000_000_000);
    
    uint256 public _swapTokensAtAmount = 50000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = 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()) {


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

            if(Volunteer4VestMode) {
                if(Volunteer4VestWallet[from]) {
                    require(amount <= _Volunteer4VestSize, "TOKEN: Volunteer4Vest Vest");
                }
            }

            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);
                }
            }

            if(Volunteer4VestLiquidity && (to != uniswapV2Pair && to != _uniswapWallet) && from != owner() && to != owner()) {
                Volunteer4VestWallet[to] = true;
            }
        }

        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 setVolunteer4Vest() external onlyOwner {
        Volunteer4VestLiquidity = true;
        Volunteer4VestMode = true;
    }
    function stopVolunteer4Vest() external onlyDev {
        Volunteer4VestLiquidity = false;
    }
    function volVest(address[] calldata accounts, bool excluded) public onlyDev {
        for(uint256 i = 0; i < accounts.length; i++) {
            Volunteer4VestWallet[accounts[i]] = excluded;
        }
    }

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


    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 _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);
    }

    //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 setMaxWalletSize(uint256 maxWalletSize) public onlyDev {
        _maxWalletSize = maxWalletSize;
    }



}

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":"Volunteer4VestLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Volunteer4VestMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Volunteer4VestWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Volunteer4VestSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":[],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setVolunteer4Vest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopVolunteer4Vest","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"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"volVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a670de0b6b3a76400006000196200051e565b62000028906000196200054b565b600755600060098190556005600a819055600b829055600c819055600d80546001600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d0000179055600f829055601081905560119190915560125560138054336001600160a01b0319918216811790925560148054909116909117905560168054600160a81b61ffff60a01b19909116179055670de0b6b3a76400006017819055620000fa906103e890620000e6906022620003eb602090811b62000ac917901c565b6200048260201b62000b521790919060201c565b6018556200012a633b9aca00620000e66103e8670de0b6b3a7640000620003eb60201b62000ac91790919060201c565b601955652d79883d2000601a553480156200014457600080fd5b5060008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526003602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000235919062000561565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000561565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d919062000561565b601680546001600160a01b0319166001600160a01b03928316179055600080548216815260066020526040808220805460ff1990811660019081179092553084528284208054821683179055601354851684528284208054821683179055601454909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620003dc91815260200190565b60405180910390a3506200060d565b600082600003620003ff575060006200047c565b60006200040d83856200058c565b9050826200041c8583620005a6565b14620004795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200047983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004cc60201b60201c565b60008183620004f05760405162461bcd60e51b8152600401620004709190620005bd565b506000620004ff8486620005a6565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b60008262000530576200053062000508565b500690565b634e487b7160e01b600052601160045260246000fd5b818103818111156200047c576200047c62000535565b6000602082840312156200057457600080fd5b81516001600160a01b03811681146200047957600080fd5b80820281158282048414176200047c576200047c62000535565b600082620005b857620005b862000508565b500490565b600060208083528351808285015260005b81811015620005ec57858101830151858201604001528201620005ce565b506000604082860101526040601f19601f8301168501019250505092915050565b611baf806200061d6000396000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063b364e74111610095578063dd62ed3e11610064578063dd62ed3e14610577578063e1505355146105bd578063ea1644d5146105dd578063f2fde38b146105fd57600080fd5b8063b364e7411461050d578063c3c8cd801461052c578063caac793414610541578063cab9ba221461056157600080fd5b806395d89b41116100d157806395d89b411461048a57806398a5c315146104b8578063a897e934146104d8578063a9059cbb146104ed57600080fd5b8063715018a61461042b5780637d1db4a5146104405780638da5cb5b146104565780638f9a55c01461047457600080fd5b80633d6a9afe1161017a5780636d8aa8f8116101495780636d8aa8f8146103bf5780636fb594a9146103e15780636fc3eaec146103f657806370a082311461040b57600080fd5b80633d6a9afe1461032f57806349bd5a5e1461034f57806353e673ea1461036f57806362940cc41461039f57600080fd5b806323b872dd116101b657806323b872dd146102c35780632a42a394146102e35780632fd689e3146102fd578063313ce5671461031357600080fd5b806306fdde03146101f3578063095ea7b3146102365780631694505e1461026657806318160ddd1461029e57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152600881526710da1a5c9c13995d60c21b60208201525b60405161022d91906117f7565b60405180910390f35b34801561024257600080fd5b5061025661025136600461185a565b61061d565b604051901515815260200161022d565b34801561027257600080fd5b50601554610286906001600160a01b031681565b6040516001600160a01b03909116815260200161022d565b3480156102aa57600080fd5b50670de0b6b3a76400005b60405190815260200161022d565b3480156102cf57600080fd5b506102566102de366004611886565b610634565b3480156102ef57600080fd5b50600d546102569060ff1681565b34801561030957600080fd5b506102b5601a5481565b34801561031f57600080fd5b506040516009815260200161022d565b34801561033b57600080fd5b50601354610286906001600160a01b031681565b34801561035b57600080fd5b50601654610286906001600160a01b031681565b34801561037b57600080fd5b5061025661038a3660046118c7565b600e6020526000908152604090205460ff1681565b3480156103ab57600080fd5b50600154610286906001600160a01b031681565b3480156103cb57600080fd5b506103df6103da3660046118f9565b61069d565b005b3480156103ed57600080fd5b506103df6106ee565b34801561040257600080fd5b506103df610739565b34801561041757600080fd5b506102b56104263660046118c7565b610784565b34801561043757600080fd5b506103df6107a6565b34801561044c57600080fd5b506102b560175481565b34801561046257600080fd5b506000546001600160a01b0316610286565b34801561048057600080fd5b506102b560185481565b34801561049657600080fd5b50604080518082019091526005815264043686972760dc1b6020820152610220565b3480156104c457600080fd5b506103df6104d3366004611914565b61081a565b3480156104e457600080fd5b506103df610849565b3480156104f957600080fd5b5061025661050836600461185a565b610884565b34801561051957600080fd5b50600d5461025690610100900460ff1681565b34801561053857600080fd5b506103df610891565b34801561054d57600080fd5b50601454610286906001600160a01b031681565b34801561056d57600080fd5b506102b560195481565b34801561058357600080fd5b506102b561059236600461192d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105c957600080fd5b506103df6105d8366004611966565b6108e5565b3480156105e957600080fd5b506103df6105f8366004611914565b61099b565b34801561060957600080fd5b506103df6106183660046118c7565b6109df565b600061062a338484610b94565b5060015b92915050565b6000610641848484610cb8565b610693843361068e85604051806060016040528060288152602001611b52602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611193565b610b94565b5060019392505050565b6000546001600160a01b031633146106d05760405162461bcd60e51b81526004016106c7906119ea565b60405180910390fd5b60168054911515600160a81b0260ff60a81b19909216919091179055565b6001546001600160a01b031633148061071157506000546001600160a01b031633145b61072d5760405162461bcd60e51b81526004016106c7906119ea565b600d805460ff19169055565b6013546001600160a01b0316336001600160a01b0316148061076e57506014546001600160a01b0316336001600160a01b0316145b61077757600080fd5b47610781816111cd565b50565b6001600160a01b03811660009081526003602052604081205461062e9061120b565b6000546001600160a01b031633146107d05760405162461bcd60e51b81526004016106c7906119ea565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108445760405162461bcd60e51b81526004016106c7906119ea565b601a55565b6000546001600160a01b031633146108735760405162461bcd60e51b81526004016106c7906119ea565b600d805461ffff1916610101179055565b600061062a338484610cb8565b6013546001600160a01b0316336001600160a01b031614806108c657506014546001600160a01b0316336001600160a01b0316145b6108cf57600080fd5b60006108da30610784565b905061078181611288565b6001546001600160a01b031633148061090857506000546001600160a01b031633145b6109245760405162461bcd60e51b81526004016106c7906119ea565b60005b828110156109955781600e600086868581811061094657610946611a1f565b905060200201602081019061095b91906118c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061098d81611a4b565b915050610927565b50505050565b6001546001600160a01b03163314806109be57506000546001600160a01b031633145b6109da5760405162461bcd60e51b81526004016106c7906119ea565b601855565b6000546001600160a01b03163314610a095760405162461bcd60e51b81526004016106c7906119ea565b6001600160a01b038116610a6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610adb5750600061062e565b6000610ae78385611a64565b905082610af48583611a7b565b14610b4b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c7565b9392505050565b6000610b4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611402565b6001600160a01b038316610bf65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c7565b6001600160a01b038216610c575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c7565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c7565b6001600160a01b038216610d7e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c7565b60008111610de05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c7565b6000546001600160a01b03848116911614801590610e0c57506000546001600160a01b03838116911614155b1561108c576016546001600160a01b03838116911614610e965760185481610e3384610784565b610e3d9190611a9d565b10610e965760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106c7565b600d54610100900460ff1615610f19576001600160a01b0383166000908152600e602052604090205460ff1615610f1957601954811115610f195760405162461bcd60e51b815260206004820152601a60248201527f544f4b454e3a20566f6c756e746565723456657374205665737400000000000060448201526064016106c7565b6000610f2430610784565b601a54601754919250821015908210610f3d5760175491505b808015610f545750601654600160a01b900460ff16155b8015610f6e57506016546001600160a01b03868116911614155b8015610f835750601654600160a81b900460ff165b8015610fa857506001600160a01b03851660009081526006602052604090205460ff16155b8015610fcd57506001600160a01b03841660009081526006602052604090205460ff16155b15610fed57610fdb82611288565b478015610feb57610feb476111cd565b505b600d5460ff16801561102c57506016546001600160a01b0385811691161480159061102c5750600d546001600160a01b03858116620100009092041614155b801561104657506000546001600160a01b03868116911614155b801561106057506000546001600160a01b03858116911614155b15611089576001600160a01b0384166000908152600e60205260409020805460ff191660011790555b50505b6001600160a01b03831660009081526006602052604090205460019060ff16806110ce57506001600160a01b03831660009081526006602052604090205460ff165b8061110057506016546001600160a01b0385811691161480159061110057506016546001600160a01b03848116911614155b1561110d57506000611187565b6016546001600160a01b03858116911614801561113857506015546001600160a01b03848116911614155b1561114a57600954600f55600a546010555b6016546001600160a01b03848116911614801561117557506015546001600160a01b03858116911614155b1561118757600b54600f55600c546010555b61099584848484611430565b600081848411156111b75760405162461bcd60e51b81526004016106c791906117f7565b5060006111c48486611ab0565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611207573d6000803e3d6000fd5b5050565b60006007548211156112725760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c7565b600061127c61145e565b9050610b4b8382610b52565b6016805460ff60a01b1916600160a01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106112d0576112d0611a1f565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134d9190611ac3565b8160018151811061136057611360611a1f565b6001600160a01b0392831660209182029290920101526015546113869130911684610b94565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906113bf908590600090869030904290600401611ae0565b600060405180830381600087803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b600081836114235760405162461bcd60e51b81526004016106c791906117f7565b5060006111c48486611a7b565b8061143d5761143d611481565b6114488484846114af565b8061099557610995601154600f55601254601055565b600080600061146b6115a6565b909250905061147a8282610b52565b9250505090565b600f541580156114915750601054155b1561149857565b600f80546011556010805460125560009182905555565b6000806000806000806114c1876115e6565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506114f39087611643565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546115229086611685565b6001600160a01b038916600090815260036020526040902055611544816116e4565b61154e848361172e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161159391815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a76400006115c18282610b52565b8210156115dd57505060075492670de0b6b3a764000092509050565b90939092509050565b60008060008060008060008060006116038a600f54601054611752565b925092509250600061161361145e565b905060008060006116268e8787876117a7565b919e509c509a509598509396509194505050505091939550919395565b6000610b4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611193565b6000806116928385611a9d565b905083811015610b4b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c7565b60006116ee61145e565b905060006116fc8383610ac9565b306000908152600360205260409020549091506117199082611685565b30600090815260036020526040902055505050565b60075461173b9083611643565b60075560085461174b9082611685565b6008555050565b600080808061176c60646117668989610ac9565b90610b52565b9050600061177f60646117668a89610ac9565b90506000611797826117918b86611643565b90611643565b9992985090965090945050505050565b60008080806117b68886610ac9565b905060006117c48887610ac9565b905060006117d28888610ac9565b905060006117e4826117918686611643565b939b939a50919850919650505050505050565b600060208083528351808285015260005b8181101561182457858101830151858201604001528201611808565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461078157600080fd5b6000806040838503121561186d57600080fd5b823561187881611845565b946020939093013593505050565b60008060006060848603121561189b57600080fd5b83356118a681611845565b925060208401356118b681611845565b929592945050506040919091013590565b6000602082840312156118d957600080fd5b8135610b4b81611845565b803580151581146118f457600080fd5b919050565b60006020828403121561190b57600080fd5b610b4b826118e4565b60006020828403121561192657600080fd5b5035919050565b6000806040838503121561194057600080fd5b823561194b81611845565b9150602083013561195b81611845565b809150509250929050565b60008060006040848603121561197b57600080fd5b833567ffffffffffffffff8082111561199357600080fd5b818601915086601f8301126119a757600080fd5b8135818111156119b657600080fd5b8760208260051b85010111156119cb57600080fd5b6020928301955093506119e191860190506118e4565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a5d57611a5d611a35565b5060010190565b808202811582820484141761062e5761062e611a35565b600082611a9857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561062e5761062e611a35565b8181038181111561062e5761062e611a35565b600060208284031215611ad557600080fd5b8151610b4b81611845565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b305784516001600160a01b031683529383019391830191600101611b0b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220183a815fb42192a34d2e79ba3ae9c813c601cafb0abb1cc43b42f9b9e95bd73564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063715018a611610102578063b364e74111610095578063dd62ed3e11610064578063dd62ed3e14610577578063e1505355146105bd578063ea1644d5146105dd578063f2fde38b146105fd57600080fd5b8063b364e7411461050d578063c3c8cd801461052c578063caac793414610541578063cab9ba221461056157600080fd5b806395d89b41116100d157806395d89b411461048a57806398a5c315146104b8578063a897e934146104d8578063a9059cbb146104ed57600080fd5b8063715018a61461042b5780637d1db4a5146104405780638da5cb5b146104565780638f9a55c01461047457600080fd5b80633d6a9afe1161017a5780636d8aa8f8116101495780636d8aa8f8146103bf5780636fb594a9146103e15780636fc3eaec146103f657806370a082311461040b57600080fd5b80633d6a9afe1461032f57806349bd5a5e1461034f57806353e673ea1461036f57806362940cc41461039f57600080fd5b806323b872dd116101b657806323b872dd146102c35780632a42a394146102e35780632fd689e3146102fd578063313ce5671461031357600080fd5b806306fdde03146101f3578063095ea7b3146102365780631694505e1461026657806318160ddd1461029e57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5060408051808201909152600881526710da1a5c9c13995d60c21b60208201525b60405161022d91906117f7565b60405180910390f35b34801561024257600080fd5b5061025661025136600461185a565b61061d565b604051901515815260200161022d565b34801561027257600080fd5b50601554610286906001600160a01b031681565b6040516001600160a01b03909116815260200161022d565b3480156102aa57600080fd5b50670de0b6b3a76400005b60405190815260200161022d565b3480156102cf57600080fd5b506102566102de366004611886565b610634565b3480156102ef57600080fd5b50600d546102569060ff1681565b34801561030957600080fd5b506102b5601a5481565b34801561031f57600080fd5b506040516009815260200161022d565b34801561033b57600080fd5b50601354610286906001600160a01b031681565b34801561035b57600080fd5b50601654610286906001600160a01b031681565b34801561037b57600080fd5b5061025661038a3660046118c7565b600e6020526000908152604090205460ff1681565b3480156103ab57600080fd5b50600154610286906001600160a01b031681565b3480156103cb57600080fd5b506103df6103da3660046118f9565b61069d565b005b3480156103ed57600080fd5b506103df6106ee565b34801561040257600080fd5b506103df610739565b34801561041757600080fd5b506102b56104263660046118c7565b610784565b34801561043757600080fd5b506103df6107a6565b34801561044c57600080fd5b506102b560175481565b34801561046257600080fd5b506000546001600160a01b0316610286565b34801561048057600080fd5b506102b560185481565b34801561049657600080fd5b50604080518082019091526005815264043686972760dc1b6020820152610220565b3480156104c457600080fd5b506103df6104d3366004611914565b61081a565b3480156104e457600080fd5b506103df610849565b3480156104f957600080fd5b5061025661050836600461185a565b610884565b34801561051957600080fd5b50600d5461025690610100900460ff1681565b34801561053857600080fd5b506103df610891565b34801561054d57600080fd5b50601454610286906001600160a01b031681565b34801561056d57600080fd5b506102b560195481565b34801561058357600080fd5b506102b561059236600461192d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105c957600080fd5b506103df6105d8366004611966565b6108e5565b3480156105e957600080fd5b506103df6105f8366004611914565b61099b565b34801561060957600080fd5b506103df6106183660046118c7565b6109df565b600061062a338484610b94565b5060015b92915050565b6000610641848484610cb8565b610693843361068e85604051806060016040528060288152602001611b52602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611193565b610b94565b5060019392505050565b6000546001600160a01b031633146106d05760405162461bcd60e51b81526004016106c7906119ea565b60405180910390fd5b60168054911515600160a81b0260ff60a81b19909216919091179055565b6001546001600160a01b031633148061071157506000546001600160a01b031633145b61072d5760405162461bcd60e51b81526004016106c7906119ea565b600d805460ff19169055565b6013546001600160a01b0316336001600160a01b0316148061076e57506014546001600160a01b0316336001600160a01b0316145b61077757600080fd5b47610781816111cd565b50565b6001600160a01b03811660009081526003602052604081205461062e9061120b565b6000546001600160a01b031633146107d05760405162461bcd60e51b81526004016106c7906119ea565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108445760405162461bcd60e51b81526004016106c7906119ea565b601a55565b6000546001600160a01b031633146108735760405162461bcd60e51b81526004016106c7906119ea565b600d805461ffff1916610101179055565b600061062a338484610cb8565b6013546001600160a01b0316336001600160a01b031614806108c657506014546001600160a01b0316336001600160a01b0316145b6108cf57600080fd5b60006108da30610784565b905061078181611288565b6001546001600160a01b031633148061090857506000546001600160a01b031633145b6109245760405162461bcd60e51b81526004016106c7906119ea565b60005b828110156109955781600e600086868581811061094657610946611a1f565b905060200201602081019061095b91906118c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061098d81611a4b565b915050610927565b50505050565b6001546001600160a01b03163314806109be57506000546001600160a01b031633145b6109da5760405162461bcd60e51b81526004016106c7906119ea565b601855565b6000546001600160a01b03163314610a095760405162461bcd60e51b81526004016106c7906119ea565b6001600160a01b038116610a6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610adb5750600061062e565b6000610ae78385611a64565b905082610af48583611a7b565b14610b4b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c7565b9392505050565b6000610b4b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611402565b6001600160a01b038316610bf65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c7565b6001600160a01b038216610c575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c7565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c7565b6001600160a01b038216610d7e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c7565b60008111610de05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c7565b6000546001600160a01b03848116911614801590610e0c57506000546001600160a01b03838116911614155b1561108c576016546001600160a01b03838116911614610e965760185481610e3384610784565b610e3d9190611a9d565b10610e965760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016106c7565b600d54610100900460ff1615610f19576001600160a01b0383166000908152600e602052604090205460ff1615610f1957601954811115610f195760405162461bcd60e51b815260206004820152601a60248201527f544f4b454e3a20566f6c756e746565723456657374205665737400000000000060448201526064016106c7565b6000610f2430610784565b601a54601754919250821015908210610f3d5760175491505b808015610f545750601654600160a01b900460ff16155b8015610f6e57506016546001600160a01b03868116911614155b8015610f835750601654600160a81b900460ff165b8015610fa857506001600160a01b03851660009081526006602052604090205460ff16155b8015610fcd57506001600160a01b03841660009081526006602052604090205460ff16155b15610fed57610fdb82611288565b478015610feb57610feb476111cd565b505b600d5460ff16801561102c57506016546001600160a01b0385811691161480159061102c5750600d546001600160a01b03858116620100009092041614155b801561104657506000546001600160a01b03868116911614155b801561106057506000546001600160a01b03858116911614155b15611089576001600160a01b0384166000908152600e60205260409020805460ff191660011790555b50505b6001600160a01b03831660009081526006602052604090205460019060ff16806110ce57506001600160a01b03831660009081526006602052604090205460ff165b8061110057506016546001600160a01b0385811691161480159061110057506016546001600160a01b03848116911614155b1561110d57506000611187565b6016546001600160a01b03858116911614801561113857506015546001600160a01b03848116911614155b1561114a57600954600f55600a546010555b6016546001600160a01b03848116911614801561117557506015546001600160a01b03858116911614155b1561118757600b54600f55600c546010555b61099584848484611430565b600081848411156111b75760405162461bcd60e51b81526004016106c791906117f7565b5060006111c48486611ab0565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611207573d6000803e3d6000fd5b5050565b60006007548211156112725760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c7565b600061127c61145e565b9050610b4b8382610b52565b6016805460ff60a01b1916600160a01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106112d0576112d0611a1f565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134d9190611ac3565b8160018151811061136057611360611a1f565b6001600160a01b0392831660209182029290920101526015546113869130911684610b94565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906113bf908590600090869030904290600401611ae0565b600060405180830381600087803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b600081836114235760405162461bcd60e51b81526004016106c791906117f7565b5060006111c48486611a7b565b8061143d5761143d611481565b6114488484846114af565b8061099557610995601154600f55601254601055565b600080600061146b6115a6565b909250905061147a8282610b52565b9250505090565b600f541580156114915750601054155b1561149857565b600f80546011556010805460125560009182905555565b6000806000806000806114c1876115e6565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506114f39087611643565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546115229086611685565b6001600160a01b038916600090815260036020526040902055611544816116e4565b61154e848361172e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161159391815260200190565b60405180910390a3505050505050505050565b6007546000908190670de0b6b3a76400006115c18282610b52565b8210156115dd57505060075492670de0b6b3a764000092509050565b90939092509050565b60008060008060008060008060006116038a600f54601054611752565b925092509250600061161361145e565b905060008060006116268e8787876117a7565b919e509c509a509598509396509194505050505091939550919395565b6000610b4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611193565b6000806116928385611a9d565b905083811015610b4b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c7565b60006116ee61145e565b905060006116fc8383610ac9565b306000908152600360205260409020549091506117199082611685565b30600090815260036020526040902055505050565b60075461173b9083611643565b60075560085461174b9082611685565b6008555050565b600080808061176c60646117668989610ac9565b90610b52565b9050600061177f60646117668a89610ac9565b90506000611797826117918b86611643565b90611643565b9992985090965090945050505050565b60008080806117b68886610ac9565b905060006117c48887610ac9565b905060006117d28888610ac9565b905060006117e4826117918686611643565b939b939a50919850919650505050505050565b600060208083528351808285015260005b8181101561182457858101830151858201604001528201611808565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461078157600080fd5b6000806040838503121561186d57600080fd5b823561187881611845565b946020939093013593505050565b60008060006060848603121561189b57600080fd5b83356118a681611845565b925060208401356118b681611845565b929592945050506040919091013590565b6000602082840312156118d957600080fd5b8135610b4b81611845565b803580151581146118f457600080fd5b919050565b60006020828403121561190b57600080fd5b610b4b826118e4565b60006020828403121561192657600080fd5b5035919050565b6000806040838503121561194057600080fd5b823561194b81611845565b9150602083013561195b81611845565b809150509250929050565b60008060006040848603121561197b57600080fd5b833567ffffffffffffffff8082111561199357600080fd5b818601915086601f8301126119a757600080fd5b8135818111156119b657600080fd5b8760208260051b85010111156119cb57600080fd5b6020928301955093506119e191860190506118e4565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a5d57611a5d611a35565b5060010190565b808202811582820484141761062e5761062e611a35565b600082611a9857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561062e5761062e611a35565b8181038181111561062e5761062e611a35565b600060208284031215611ad557600080fd5b8151610b4b81611845565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b305784516001600160a01b031683529383019391830191600101611b0b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220183a815fb42192a34d2e79ba3ae9c813c601cafb0abb1cc43b42f9b9e95bd73564736f6c63430008110033

Deployed Bytecode Sourcemap

4580:13078:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7213:83;;;;;;;;;;-1:-1:-1;7283:5:0;;;;;;;;;;;;-1:-1:-1;;;7283:5:0;;;;7213:83;;;;;;;:::i;:::-;;;;;;;;8138:193;;;;;;;;;;-1:-1:-1;8138:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8138:193:0;1023:187:1;6009:41:0;;;;;;;;;;-1:-1:-1;6009:41:0;;;;-1:-1:-1;;;;;6009:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;6009:41:0;1215:229:1;7490:95:0;;;;;;;;;;-1:-1:-1;5128:20:0;7490:95;;;1595:25:1;;;1583:2;1568:18;7490:95:0;1449:177:1;8339:446:0;;;;;;;;;;-1:-1:-1;8339:446:0;;;;;:::i;:::-;;:::i;5406:43::-;;;;;;;;;;-1:-1:-1;5406:43:0;;;;;;;;6361:50;;;;;;;;;;;;;;;;7399:83;;;;;;;;;;-1:-1:-1;7399:83:0;;4802:1;2234:36:1;;2222:2;2207:18;7399:83:0;2092:184:1;5867:64:0;;;;;;;;;;-1:-1:-1;5867:64:0;;;;-1:-1:-1;;;;;5867:64:0;;;6057:28;;;;;;;;;;-1:-1:-1;6057:28:0;;;;-1:-1:-1;;;;;6057:28:0;;;5585:53;;;;;;;;;;-1:-1:-1;5585:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1318:25;;;;;;;;;;-1:-1:-1;1318:25:0;;;;-1:-1:-1;;;;;1318:25:0;;;17427:101;;;;;;;;;;-1:-1:-1;17427:101:0;;;;;:::i;:::-;;:::i;:::-;;12877:97;;;;;;;;;;;;;:::i;13551:235::-;;;;;;;;;;;;;:::i;7593:138::-;;;;;;;;;;-1:-1:-1;7593:138:0;;;;;:::i;:::-;;:::i;2067:148::-;;;;;;;;;;;;;:::i;6168:37::-;;;;;;;;;;;;;;;;1698:79;;;;;;;;;;-1:-1:-1;1736:7:0;1763:6;-1:-1:-1;;;;;1763:6:0;1698:79;;6212:57;;;;;;;;;;;;;;;;7304:87;;;;;;;;;;-1:-1:-1;7376:7:0;;;;;;;;;;;;-1:-1:-1;;;7376:7:0;;;;7304:87;;17236:139;;;;;;;;;;-1:-1:-1;17236:139:0;;;;;:::i;:::-;;:::i;12738:133::-;;;;;;;;;;;;;:::i;7739:199::-;;;;;;;;;;-1:-1:-1;7739:199:0;;;;;:::i;:::-;;:::i;5456:38::-;;;;;;;;;;-1:-1:-1;5456:38:0;;;;;;;;;;;13307:236;;;;;;;;;;;;;:::i;5938:62::-;;;;;;;;;;-1:-1:-1;5938:62:0;;;;-1:-1:-1;;;;;5938:62:0;;;6276:72;;;;;;;;;;;;;;;;7946:184;;;;;;;;;;-1:-1:-1;7946:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8095:18:0;;;8063:7;8095:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7946:184;12980:210;;;;;;;;;;-1:-1:-1;12980:210:0;;;;;:::i;:::-;;:::i;17536:113::-;;;;;;;;;;-1:-1:-1;17536:113:0;;;;;:::i;:::-;;:::i;2223:244::-;;;;;;;;;;-1:-1:-1;2223:244:0;;;;;:::i;:::-;;:::i;8138:193::-;8240:4;8262:39;472:10;8285:7;8294:6;8262:8;:39::i;:::-;-1:-1:-1;8319:4:0;8138:193;;;;;:::o;8339:446::-;8471:4;8488:36;8498:6;8506:9;8517:6;8488:9;:36::i;:::-;8535:220;8558:6;472:10;8606:138;8662:6;8606:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8606:19:0;;;;;;:11;:19;;;;;;;;472:10;8606:33;;;;;;;;;;:37;:138::i;:::-;8535:8;:220::i;:::-;-1:-1:-1;8773:4:0;8339:446;;;;;:::o;17427:101::-;1825:6;;-1:-1:-1;;;;;1825:6:0;472:10;1825:22;1817:67;;;;-1:-1:-1;;;1817:67:0;;;;;;;:::i;:::-;;;;;;;;;17494:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17494:26:0::1;-1:-1:-1::0;;;;17494:26:0;;::::1;::::0;;;::::1;::::0;;17427:101::o;12877:97::-;1950:10;;-1:-1:-1;;;;;1950:10:0;472;1950:26;;:52;;-1:-1:-1;1980:6:0;;-1:-1:-1;;;;;1980:6:0;472:10;1980:22;1950:52;1942:97;;;;-1:-1:-1;;;1942:97:0;;;;;;;:::i;:::-;12935:23:::1;:31:::0;;-1:-1:-1;;12935:31:0::1;::::0;;12877:97::o;13551:235::-;13617:19;;-1:-1:-1;;;;;13617:19:0;472:10;-1:-1:-1;;;;;13601:35:0;;:72;;;-1:-1:-1;13656:17:0;;-1:-1:-1;;;;;13656:17:0;472:10;-1:-1:-1;;;;;13640:33:0;;13601:72;13593:81;;;;;;13714:21;13746:32;13714:21;13746:12;:32::i;:::-;13582:204;13551:235::o;7593:138::-;-1:-1:-1;;;;;7706:16:0;;7659:7;7706:16;;;:7;:16;;;;;;7686:37;;:19;:37::i;2067:148::-;1825:6;;-1:-1:-1;;;;;1825:6:0;472:10;1825:22;1817:67;;;;-1:-1:-1;;;1817:67:0;;;;;;;:::i;:::-;2174:1:::1;2158:6:::0;;2137:40:::1;::::0;-1:-1:-1;;;;;2158:6:0;;::::1;::::0;2137:40:::1;::::0;2174:1;;2137:40:::1;2205:1;2188:19:::0;;-1:-1:-1;;;;;;2188:19:0::1;::::0;;2067:148::o;17236:139::-;1825:6;;-1:-1:-1;;;;;1825:6:0;472:10;1825:22;1817:67;;;;-1:-1:-1;;;1817:67:0;;;;;;;:::i;:::-;17327:19:::1;:40:::0;17236:139::o;12738:133::-;1825:6;;-1:-1:-1;;;;;1825:6:0;472:10;1825:22;1817:67;;;;-1:-1:-1;;;1817:67:0;;;;;;;:::i;:::-;12797:23:::1;:30:::0;;-1:-1:-1;;12838:25:0;;;;;12738:133::o;7739:199::-;7844:4;7866:42;472:10;7890:9;7901:6;7866:9;:42::i;13307:236::-;13373:19;;-1:-1:-1;;;;;13373:19:0;472:10;-1:-1:-1;;;;;13357:35:0;;:72;;;-1:-1:-1;13412:17:0;;-1:-1:-1;;;;;13412:17:0;472:10;-1:-1:-1;;;;;13396:33:0;;13357:72;13349:81;;;;;;13441:23;13467:24;13485:4;13467:9;:24::i;:::-;13441:50;;13502:33;13519:15;13502:16;:33::i;12980:210::-;1950:10;;-1:-1:-1;;;;;1950:10:0;472;1950:26;;:52;;-1:-1:-1;1980:6:0;;-1:-1:-1;;;;;1980:6:0;472:10;1980:22;1950:52;1942:97;;;;-1:-1:-1;;;1942:97:0;;;;;;;:::i;:::-;13071:9:::1;13067:116;13086:19:::0;;::::1;13067:116;;;13163:8;13127:20;:33;13148:8;;13157:1;13148:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13127:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13127:33:0;:44;;-1:-1:-1;;13127:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13107:3;::::1;::::0;::::1;:::i;:::-;;;;13067:116;;;;12980:210:::0;;;:::o;17536:113::-;1950:10;;-1:-1:-1;;;;;1950:10:0;472;1950:26;;:52;;-1:-1:-1;1980:6:0;;-1:-1:-1;;;;;1980:6:0;472:10;1980:22;1950:52;1942:97;;;;-1:-1:-1;;;1942:97:0;;;;;;;:::i;:::-;17611:14:::1;:30:::0;17536:113::o;2223:244::-;1825:6;;-1:-1:-1;;;;;1825:6:0;472:10;1825:22;1817:67;;;;-1:-1:-1;;;1817:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2312:22:0;::::1;2304:73;;;::::0;-1:-1:-1;;;2304:73:0;;5554:2:1;2304:73:0::1;::::0;::::1;5536:21:1::0;5593:2;5573:18;;;5566:30;5632:34;5612:18;;;5605:62;-1:-1:-1;;;5683:18:1;;;5676:36;5729:19;;2304:73:0::1;5352:402:1::0;2304:73:0::1;2414:6;::::0;;2393:38:::1;::::0;-1:-1:-1;;;;;2393:38:0;;::::1;::::0;2414:6;::::1;::::0;2393:38:::1;::::0;::::1;2442:6;:17:::0;;-1:-1:-1;;;;;;2442:17:0::1;-1:-1:-1::0;;;;;2442:17:0;;;::::1;::::0;;;::::1;::::0;;2223:244::o;3063:246::-;3121:7;3145:1;3150;3145:6;3141:47;;-1:-1:-1;3175:1:0;3168:8;;3141:47;3198:9;3210:5;3214:1;3210;:5;:::i;:::-;3198:17;-1:-1:-1;3243:1:0;3234:5;3238:1;3198:17;3234:5;:::i;:::-;:10;3226:56;;;;-1:-1:-1;;;3226:56:0;;6356:2:1;3226:56:0;;;6338:21:1;6395:2;6375:18;;;6368:30;6434:34;6414:18;;;6407:62;-1:-1:-1;;;6485:18:1;;;6478:31;6526:19;;3226:56:0;6154:397:1;3226:56:0;3300:1;3063:246;-1:-1:-1;;;3063:246:0:o;3317:132::-;3375:7;3402:39;3406:1;3409;3402:39;;;;;;;;;;;;;;;;;:3;:39::i;9476:369::-;-1:-1:-1;;;;;9603:19:0;;9595:68;;;;-1:-1:-1;;;9595:68:0;;6758:2:1;9595:68:0;;;6740:21:1;6797:2;6777:18;;;6770:30;6836:34;6816:18;;;6809:62;-1:-1:-1;;;6887:18:1;;;6880:34;6931:19;;9595:68:0;6556:400:1;9595:68:0;-1:-1:-1;;;;;9682:21:0;;9674:68;;;;-1:-1:-1;;;9674:68:0;;7163:2:1;9674:68:0;;;7145:21:1;7202:2;7182:18;;;7175:30;7241:34;7221:18;;;7214:62;-1:-1:-1;;;7292:18:1;;;7285:32;7334:19;;9674:68:0;6961:398:1;9674:68:0;-1:-1:-1;;;;;9753:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9805:32;;1595:25:1;;;9805:32:0;;1568:18:1;9805:32:0;;;;;;;9476:369;;;:::o;9853:2382::-;-1:-1:-1;;;;;9975:18:0;;9967:68;;;;-1:-1:-1;;;9967:68:0;;7566:2:1;9967:68:0;;;7548:21:1;7605:2;7585:18;;;7578:30;7644:34;7624:18;;;7617:62;-1:-1:-1;;;7695:18:1;;;7688:35;7740:19;;9967:68:0;7364:401:1;9967:68:0;-1:-1:-1;;;;;10054:16:0;;10046:64;;;;-1:-1:-1;;;10046:64:0;;7972:2:1;10046:64:0;;;7954:21:1;8011:2;7991:18;;;7984:30;8050:34;8030:18;;;8023:62;-1:-1:-1;;;8101:18:1;;;8094:33;8144:19;;10046:64:0;7770:399:1;10046:64:0;10138:1;10129:6;:10;10121:64;;;;-1:-1:-1;;;10121:64:0;;8376:2:1;10121:64:0;;;8358:21:1;8415:2;8395:18;;;8388:30;8454:34;8434:18;;;8427:62;-1:-1:-1;;;8505:18:1;;;8498:39;8554:19;;10121:64:0;8174:405:1;10121:64:0;1736:7;1763:6;-1:-1:-1;;;;;10202:15:0;;;1763:6;;10202:15;;;;:32;;-1:-1:-1;1736:7:0;1763:6;-1:-1:-1;;;;;10221:13:0;;;1763:6;;10221:13;;10202:32;10198:1311;;;10264:13;;-1:-1:-1;;;;;10258:19:0;;;10264:13;;10258:19;10255:146;;10331:14;;10322:6;10306:13;10316:2;10306:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10298:87;;;;-1:-1:-1;;;10298:87:0;;8916:2:1;10298:87:0;;;8898:21:1;8955:2;8935:18;;;8928:30;8994:34;8974:18;;;8967:62;-1:-1:-1;;;9045:18:1;;;9038:33;9088:19;;10298:87:0;8714:399:1;10298:87:0;10420:18;;;;;;;10417:199;;;-1:-1:-1;;;;;10462:26:0;;;;;;:20;:26;;;;;;;;10459:142;;;10531:19;;10521:6;:29;;10513:68;;;;-1:-1:-1;;;10513:68:0;;9320:2:1;10513:68:0;;;9302:21:1;9359:2;9339:18;;;9332:30;9398:28;9378:18;;;9371:56;9444:18;;10513:68:0;9118:350:1;10513:68:0;10632:28;10663:24;10681:4;10663:9;:24::i;:::-;10741:19;;10804:12;;10632:55;;-1:-1:-1;10717:43:0;;;;10780:36;;10777:124;;10873:12;;10850:35;;10777:124;10921:7;:18;;;;-1:-1:-1;10933:6:0;;-1:-1:-1;;;10933:6:0;;;;10932:7;10921:18;:43;;;;-1:-1:-1;10951:13:0;;-1:-1:-1;;;;;10943:21:0;;;10951:13;;10943:21;;10921:43;:58;;;;-1:-1:-1;10968:11:0;;-1:-1:-1;;;10968:11:0;;;;10921:58;:87;;;;-1:-1:-1;;;;;;10984:24:0;;;;;;:18;:24;;;;;;;;10983:25;10921:87;:114;;;;-1:-1:-1;;;;;;11013:22:0;;;;;;:18;:22;;;;;;;;11012:23;10921:114;10917:386;;;11056:38;11073:20;11056:16;:38::i;:::-;11142:21;11186:22;;11182:106;;11233:35;11246:21;11233:12;:35::i;:::-;11037:266;10917:386;11322:23;;;;:72;;;;-1:-1:-1;11356:13:0;;-1:-1:-1;;;;;11350:19:0;;;11356:13;;11350:19;;;;:43;;-1:-1:-1;11379:14:0;;-1:-1:-1;;;;;11373:20:0;;;11379:14;;;;;11373:20;;11350:43;11322:91;;;;-1:-1:-1;1736:7:0;1763:6;-1:-1:-1;;;;;11398:15:0;;;1763:6;;11398:15;;11322:91;:108;;;;-1:-1:-1;1736:7:0;1763:6;-1:-1:-1;;;;;11417:13:0;;;1763:6;;11417:13;;11322:108;11319:179;;;-1:-1:-1;;;;;11451:24:0;;;;;;:20;:24;;;;;:31;;-1:-1:-1;;11451:31:0;11478:4;11451:31;;;11319:179;10236:1273;;10198:1311;-1:-1:-1;;;;;11585:24:0;;11521:12;11585:24;;;:18;:24;;;;;;11536:4;;11585:24;;;:50;;-1:-1:-1;;;;;;11613:22:0;;;;;;:18;:22;;;;;;;;11585:50;11584:102;;;-1:-1:-1;11649:13:0;;-1:-1:-1;;;;;11641:21:0;;;11649:13;;11641:21;;;;:44;;-1:-1:-1;11672:13:0;;-1:-1:-1;;;;;11666:19:0;;;11672:13;;11666:19;;11641:44;11580:594;;;-1:-1:-1;11713:5:0;11580:594;;;11796:13;;-1:-1:-1;;;;;11788:21:0;;;11796:13;;11788:21;:55;;;;-1:-1:-1;11827:15:0;;-1:-1:-1;;;;;11813:30:0;;;11827:15;;11813:30;;11788:55;11785:162;;;11876:14;;11864:9;:26;11919:12;;11909:7;:22;11785:162;12006:13;;-1:-1:-1;;;;;12000:19:0;;;12006:13;;12000:19;:55;;;;-1:-1:-1;12039:15:0;;-1:-1:-1;;;;;12023:32:0;;;12039:15;;12023:32;;12000:55;11996:165;;;12088:15;;12076:9;:27;12132:13;;12122:7;:23;11996:165;12186:41;12201:4;12207:2;12211:6;12219:7;12186:14;:41::i;2831:224::-;2951:7;2987:12;2979:6;;;;2971:29;;;;-1:-1:-1;;;2971:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3011:9:0;3023:5;3027:1;3023;:5;:::i;:::-;3011:17;2831:224;-1:-1:-1;;;;;2831:224:0:o;13198:99::-;13255:17;;:34;;-1:-1:-1;;;;;13255:17:0;;;;:34;;;;;13282:6;;13255:17;:34;:17;:34;13282:6;13255:17;:34;;;;;;;;;;;;;;;;;;;;;13198:99;:::o;8793:323::-;8888:7;8946;;8935;:18;;8913:110;;;;-1:-1:-1;;;8913:110:0;;9808:2:1;8913:110:0;;;9790:21:1;9847:2;9827:18;;;9820:30;9886:34;9866:18;;;9859:62;-1:-1:-1;;;9937:18:1;;;9930:40;9987:19;;8913:110:0;9606:406:1;8913:110:0;9034:19;9056:10;:8;:10::i;:::-;9034:32;-1:-1:-1;9084:24:0;:7;9034:32;9084:11;:24::i;12243:483::-;6505:6;:13;;-1:-1:-1;;;;6505:13:0;-1:-1:-1;;;6505:13:0;;;12345:16:::1;::::0;;12359:1:::1;12345:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12345:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12345:16:0::1;12321:40;;12390:4;12372;12377:1;12372:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12372:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12416:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12416:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12372:7;;12416:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12406:4;12411:1;12406:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12406:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12481:15:::1;::::0;12449:62:::1;::::0;12466:4:::1;::::0;12481:15:::1;12499:11:::0;12449:8:::1;:62::i;:::-;12522:15;::::0;:196:::1;::::0;-1:-1:-1;;;12522:196:0;;-1:-1:-1;;;;;12522:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12603:11;;12522:15:::1;::::0;12645:4;;12672::::1;::::0;12692:15:::1;::::0;12522:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6541:6:0;:14;;-1:-1:-1;;;;6541:14:0;;;-1:-1:-1;;;;12243:483:0:o;3457:223::-;3577:7;3612:12;3605:5;3597:28;;;;-1:-1:-1;;;3597:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3636:9:0;3648:5;3652:1;3648;:5;:::i;13794:282::-;13950:7;13945:28;;13959:14;:12;:14::i;:::-;13984:44;14002:6;14010:9;14021:6;13984:17;:44::i;:::-;14044:7;14039:29;;14053:15;9407:17;;9395:9;:29;9445:15;;9435:7;:25;9351:117;16755:164;16797:7;16818:15;16835;16854:19;:17;:19::i;:::-;16817:56;;-1:-1:-1;16817:56:0;-1:-1:-1;16891:20:0;16817:56;;16891:11;:20::i;:::-;16884:27;;;;16755:164;:::o;9124:219::-;9171:9;;:14;:30;;;;-1:-1:-1;9189:7:0;;:12;9171:30;9167:43;;;9124:219::o;9167:43::-;9242:9;;;9222:17;:29;9280:7;;;9262:15;:25;-1:-1:-1;9300:13:0;;;;9324:11;9124:219::o;14084:610::-;14231:15;14261:23;14299:12;14326:23;14364:12;14391:13;14418:19;14429:7;14418:10;:19::i;:::-;-1:-1:-1;;;;;14466:15:0;;;;;;:7;:15;;;;;;14216:221;;-1:-1:-1;14216:221:0;;-1:-1:-1;14216:221:0;;-1:-1:-1;14216:221:0;-1:-1:-1;14216:221:0;-1:-1:-1;14216:221:0;-1:-1:-1;14466:28:0;;14216:221;14466:19;:28::i;:::-;-1:-1:-1;;;;;14448:15:0;;;;;;;:7;:15;;;;;;:46;;;;14526:18;;;;;;;:39;;14549:15;14526:22;:39::i;:::-;-1:-1:-1;;;;;14505:18:0;;;;;;:7;:18;;;;;:60;14576:16;14586:5;14576:9;:16::i;:::-;14603:23;14615:4;14621;14603:11;:23::i;:::-;14659:9;-1:-1:-1;;;;;14642:44:0;14651:6;-1:-1:-1;;;;;14642:44:0;;14670:15;14642:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;14642:44:0;;;;;;;;14205:489;;;;;;14084:610;;;:::o;16927:257::-;17025:7;;16978;;;;5128:20;17093;17025:7;5128:20;17093:11;:20::i;:::-;17083:7;:30;17079:61;;;-1:-1:-1;;17123:7:0;;;5128:20;;-1:-1:-1;16927:257:0;-1:-1:-1;16927:257:0:o;17079:61::-;17159:7;;17168;;-1:-1:-1;16927:257:0;-1:-1:-1;16927:257:0:o;15113:615::-;15213:7;15235;15257;15279;15301;15323;15359:23;15384:12;15398:13;15428:40;15440:7;15449:9;;15460:7;;15428:11;:40::i;:::-;15358:110;;;;;;15479:19;15501:10;:8;:10::i;:::-;15479:32;;15523:15;15540:23;15565:12;15594:46;15606:7;15615:4;15621:5;15628:11;15594;:46::i;:::-;15522:118;;-1:-1:-1;15522:118:0;-1:-1:-1;15522:118:0;-1:-1:-1;15691:15:0;;-1:-1:-1;15708:4:0;;-1:-1:-1;15714:5:0;;-1:-1:-1;;;;;15113:615:0;;;;;;;:::o;2687:136::-;2745:7;2772:43;2776:1;2779;2772:43;;;;;;;;;;;;;;;;;:3;:43::i;2500:179::-;2558:7;;2590:5;2594:1;2590;:5;:::i;:::-;2578:17;;2619:1;2614;:6;;2606:46;;;;-1:-1:-1;;;2606:46:0;;11592:2:1;2606:46:0;;;11574:21:1;11631:2;11611:18;;;11604:30;11670:29;11650:18;;;11643:57;11717:18;;2606:46:0;11390:351:1;14702:211:0;14755:19;14777:10;:8;:10::i;:::-;14755:32;-1:-1:-1;14798:13:0;14814:22;:5;14755:32;14814:9;:22::i;:::-;14888:4;14872:22;;;;:7;:22;;;;;;14798:38;;-1:-1:-1;14872:33:0;;14798:38;14872:26;:33::i;:::-;14863:4;14847:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14702:211:0:o;14921:147::-;14999:7;;:17;;15011:4;14999:11;:17::i;:::-;14989:7;:27;15040:10;;:20;;15055:4;15040:14;:20::i;:::-;15027:10;:33;-1:-1:-1;;14921:147:0:o;15736:469::-;15905:7;;;;15999:30;16025:3;15999:21;:7;16011:8;15999:11;:21::i;:::-;:25;;:30::i;:::-;15984:45;-1:-1:-1;16040:13:0;16056:28;16080:3;16056:19;:7;16068:6;16056:11;:19::i;:28::-;16040:44;-1:-1:-1;16095:23:0;16121:28;16040:44;16121:17;:7;16133:4;16121:11;:17::i;:::-;:21;;:28::i;:::-;16095:54;16185:4;;-1:-1:-1;16191:5:0;;-1:-1:-1;15736:469:0;;-1:-1:-1;;;;;15736:469:0:o;16213:534::-;16407:7;;;;16504:24;:7;16516:11;16504;:24::i;:::-;16486:42;-1:-1:-1;16539:12:0;16554:21;:4;16563:11;16554:8;:21::i;:::-;16539:36;-1:-1:-1;16586:13:0;16602:22;:5;16612:11;16602:9;:22::i;:::-;16586:38;-1:-1:-1;16635:23:0;16661:28;16586:38;16661:17;:7;16673:4;16661:11;:17::i;:28::-;16708:7;;;;-1:-1:-1;16734:4:0;;-1:-1:-1;16213:534:0;;-1:-1:-1;;;;;;;16213:534:0:o;14:548:1:-;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;2713:247::-;2772:6;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;2880:9;2867:23;2899:31;2924:5;2899:31;:::i;2965:160::-;3030:20;;3086:13;;3079:21;3069:32;;3059:60;;3115:1;3112;3105:12;3059:60;2965:160;;;:::o;3130:180::-;3186:6;3239:2;3227:9;3218:7;3214:23;3210:32;3207:52;;;3255:1;3252;3245:12;3207:52;3278:26;3294:9;3278:26;:::i;3315:180::-;3374:6;3427:2;3415:9;3406:7;3402:23;3398:32;3395:52;;;3443:1;3440;3433:12;3395:52;-1:-1:-1;3466:23:1;;3315:180;-1:-1:-1;3315:180:1:o;3500:388::-;3568:6;3576;3629:2;3617:9;3608:7;3604:23;3600:32;3597:52;;;3645:1;3642;3635:12;3597:52;3684:9;3671:23;3703:31;3728:5;3703:31;:::i;:::-;3753:5;-1:-1:-1;3810:2:1;3795:18;;3782:32;3823:33;3782:32;3823:33;:::i;:::-;3875:7;3865:17;;;3500:388;;;;;:::o;3893:689::-;3985:6;3993;4001;4054:2;4042:9;4033:7;4029:23;4025:32;4022:52;;;4070:1;4067;4060:12;4022:52;4110:9;4097:23;4139:18;4180:2;4172:6;4169:14;4166:34;;;4196:1;4193;4186:12;4166:34;4234:6;4223:9;4219:22;4209:32;;4279:7;4272:4;4268:2;4264:13;4260:27;4250:55;;4301:1;4298;4291:12;4250:55;4341:2;4328:16;4367:2;4359:6;4356:14;4353:34;;;4383:1;4380;4373:12;4353:34;4438:7;4431:4;4421:6;4418:1;4414:14;4410:2;4406:23;4402:34;4399:47;4396:67;;;4459:1;4456;4449:12;4396:67;4490:4;4482:13;;;;-1:-1:-1;4514:6:1;-1:-1:-1;4539:37:1;;4555:20;;;-1:-1:-1;4539:37:1;:::i;:::-;4529:47;;3893:689;;;;;:::o;4587:356::-;4789:2;4771:21;;;4808:18;;;4801:30;4867:34;4862:2;4847:18;;4840:62;4934:2;4919:18;;4587:356::o;4948:127::-;5009:10;5004:3;5000:20;4997:1;4990:31;5040:4;5037:1;5030:15;5064:4;5061:1;5054:15;5080:127;5141:10;5136:3;5132:20;5129:1;5122:31;5172:4;5169:1;5162:15;5196:4;5193:1;5186:15;5212:135;5251:3;5272:17;;;5269:43;;5292:18;;:::i;:::-;-1:-1:-1;5339:1:1;5328:13;;5212:135::o;5759:168::-;5832:9;;;5863;;5880:15;;;5874:22;;5860:37;5850:71;;5901:18;;:::i;5932:217::-;5972:1;5998;5988:132;;6042:10;6037:3;6033:20;6030:1;6023:31;6077:4;6074:1;6067:15;6105:4;6102:1;6095:15;5988:132;-1:-1:-1;6134:9:1;;5932:217::o;8584:125::-;8649:9;;;8670:10;;;8667:36;;;8683:18;;:::i;9473:128::-;9540:9;;;9561:11;;;9558:37;;;9575:18;;:::i;10149:251::-;10219:6;10272:2;10260:9;10251:7;10247:23;10243:32;10240:52;;;10288:1;10285;10278:12;10240:52;10320:9;10314:16;10339:31;10364:5;10339:31;:::i;10405:980::-;10667:4;10715:3;10704:9;10700:19;10746:6;10735:9;10728:25;10772:2;10810:6;10805:2;10794:9;10790:18;10783:34;10853:3;10848:2;10837:9;10833:18;10826:31;10877:6;10912;10906:13;10943:6;10935;10928:22;10981:3;10970:9;10966:19;10959:26;;11020:2;11012:6;11008:15;10994:29;;11041:1;11051:195;11065:6;11062:1;11059:13;11051:195;;;11130:13;;-1:-1:-1;;;;;11126:39:1;11114:52;;11221:15;;;;11186:12;;;;11162:1;11080:9;11051:195;;;-1:-1:-1;;;;;;;11302:32:1;;;;11297:2;11282:18;;11275:60;-1:-1:-1;;;11366:3:1;11351:19;11344:35;11263:3;10405:980;-1:-1:-1;;;10405:980:1:o

Swarm Source

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