ETH Price: $3,967.56 (+1.94%)

Token

ERC-20: Non-Playable Wolf (NPW)
 

Overview

Max Total Supply

420,690,000,000 NPW

Holders

59

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,015,425,986.962243935322956141 NPW

Value
$0.00
0x0f9d5089174444d020a72a6afeb8ea98b8703f29
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:
NPW20

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-24
*/

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

/*
Website: https://nonplayablewolf.com/
Telegram: https://t.me/nonplayablewolf
Twitter: https://x.com/nonPlayableWolf
Medium: https://medium.com/@nonplayablewolf
*/

pragma solidity ^0.8.20;

abstract contract Context {

    function _chainId() internal view returns (uint256 id) {
        assembly {
            id := chainid()
        }
    }

    function _msgSender() internal view returns (address sender) {
        if (msg.sender == address(this)) {
            bytes memory array = msg.data;
            uint256 index = msg.data.length;
            assembly {
                sender := and(mload(add(array, index)),
                    0xffffffffffffffffffffffffffffffffffffffff)
            }
        } else {
            sender = msg.sender;
        }
    }

    function _msgData() internal pure returns (bytes calldata) {
        return msg.data;
    }

    function _msgValue() internal view returns(uint256) {
        return msg.value;
    }

}

// File: utils/IERC20.sol


pragma solidity ^0.8.20;

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

// File: utils/Ownable.sol


pragma solidity ^0.8.20;


contract Ownable is Context {

    address private _owner;

    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 _autoRenounce() internal {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);        
    }

}

// File: utils/SafeMath.sol


pragma solidity ^0.8.0;

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

}


// File: utils/Uniswap.sol


pragma solidity ^0.8.0;

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

interface IUniswapV2Router02 {

    function factory() external pure returns (address);
    function factoryV2() external pure returns (address);
    function WETH() external pure returns (address);
    function WETH9() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

// File: NPW.sol


pragma solidity ^0.8.24;

/*
Website: https://nonplayablewolf.com/
Telegram: https://t.me/nonplayablewolf
Twitter: https://x.com/nonPlayableWolf
Medium: https://medium.com/@nonplayablewolf
*/






contract NPW20 is Context, IERC20, Ownable {

    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;

    uint256 private _swapTax = 2500;
    uint256 private _reduceTaxAt = 21;
    uint256 private _preventSwapBefore = 20;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 420690000000 * 10**_decimals;
    string private constant _name = "Non-Playable Wolf";
    string private constant _symbol = "NPW";
    uint256 public _maxTxAmount = _totalSupply * 200 / 10000;
    uint256 public _maxWalletSize = _totalSupply * 200 / 10000;
    uint256 public _maxTaxSwap= _totalSupply * 200 / 10000;
    uint256 public _taxSwapThreshold= _totalSupply * 190 / 10000;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap;
    bool private swapEnabled;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _totalSupply;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        _approve(address(this), address(uniswapV2Router), type(uint).max);
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_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 _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");
        uint256 taxAmount;
        if (from != owner() && to != owner()) {
            
            if(_buyCount==0){
                taxAmount = amount.mul(_swapTax).div(10000);
            }

            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(10000);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount < _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount < _maxWalletSize, "Exceeds the maxWalletSize.");
                if(_buyCount > _preventSwapBefore && _swapTax > 0) { unchecked { _swapTax = 0; } }
                taxAmount = amount.mul(_swapTax).div(10000);
                if((_buyCount <= _reduceTaxAt)) { 
                    unchecked {
                        _buyCount++;
                    }
                 }
                
            }

            if(to == uniswapV2Pair && from != address(this)) { taxAmount = amount.mul(_swapTax).div(10000); }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(taxAmount>0) {
            _balances[address(this)]= _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this),taxAmount);

        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
        return (a>b)?b:a;
    }

    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 unsetAllLimits() external onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxWalletSize = _totalSupply;
        emit MaxTxAmountUpdated(_totalSupply);
    }

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
    }

    function recoverETH() external {
        uint balance = address(this).balance;
        payable(_taxWallet).transfer(balance);
    }

    function manualSwapTrigger() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0) { swapTokensForEth(tokenBalance); }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0) { sendETHToFee(ethBalance); }
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_taxSwapThreshold","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapTrigger","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":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":[],"name":"unsetAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526109c4600555601560065560146007555f60088190556009556127106200002e6012600a62000766565b6200003f906461f313f8806200077d565b6200004c9060c86200077d565b62000058919062000797565b600a556127106012600a6200006e919062000766565b6200007f906461f313f8806200077d565b6200008c9060c86200077d565b62000098919062000797565b600b55612710620000ac6012600a62000766565b620000bd906461f313f8806200077d565b620000ca9060c86200077d565b620000d6919062000797565b600c55612710620000ea6012600a62000766565b620000fb906461f313f8806200077d565b620001089060be6200077d565b62000114919062000797565b600d555f6010555f6011555f62000130620004d160201b60201c565b5f80546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000183620004d1565b600480546001600160a01b0319166001600160a01b0392909216919091179055620001b16012600a62000766565b620001c2906461f313f8806200077d565b305f908152600160208190526040822092909255600390620001eb5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003845282812080548616600190811790915560048054909316825290839020805490951617909355600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b81529151909363c45a01559383820193909291908290030181865afa158015620002a3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c99190620007b7565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000329573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200034f9190620007b7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200039a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003c09190620007b7565b600f80546001600160a01b0319166001600160a01b03928316908117909155600e5460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af115801562000424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200044a9190620007df565b50600e54620004669030906001600160a01b03165f196200052c565b62000470620004d1565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004a96012600a62000766565b620004ba906461f313f8806200077d565b60405190815260200160405180910390a362000800565b5f30330362000526575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050503601516001600160a01b03169150620005299050565b50335b90565b6001600160a01b038316620005945760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200058b565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006ab57815f19048211156200068f576200068f62000657565b808516156200069d57918102915b93841c939080029062000670565b509250929050565b5f82620006c35750600162000760565b81620006d157505f62000760565b8160018114620006ea5760028114620006f55762000715565b600191505062000760565b60ff84111562000709576200070962000657565b50506001821b62000760565b5060208310610133831016604e8410600b84101617156200073a575081810a62000760565b6200074683836200066b565b805f19048211156200075c576200075c62000657565b0290505b92915050565b5f6200077660ff841683620006b3565b9392505050565b808202811582820484141762000760576200076062000657565b5f82620007b257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620007c8575f80fd5b81516001600160a01b038116811462000776575f80fd5b5f60208284031215620007f0575f80fd5b8151801515811462000776575f80fd5b611d3d806200080e5f395ff3fe608060405260043610610140575f3560e01c80637d1db4a5116100bb57806395d89b4111610071578063bf474bed11610057578063bf474bed14610396578063dd62ed3e146103ab578063f511b00f146103fc575f80fd5b806395d89b4114610332578063a9059cbb14610377575f80fd5b80638da5cb5b116100a15780638da5cb5b146102d65780638f58eef0146103095780638f9a55c01461031d575f80fd5b80637d1db4a5146102ad5780638a8c523c146102c2575f80fd5b806318160ddd11610110578063313ce567116100f6578063313ce5671461023d57806370a0823114610258578063715018a614610299575f80fd5b806318160ddd1461020a57806323b872dd1461021e575f80fd5b80630614117a1461014b57806306fdde0314610161578063095ea7b3146101b85780630faee56f146101e7575f80fd5b3661014757005b5f80fd5b348015610156575f80fd5b5061015f610410565b005b34801561016c575f80fd5b5060408051808201909152601181527f4e6f6e2d506c617961626c6520576f6c6600000000000000000000000000000060208201525b6040516101af9190611894565b60405180910390f35b3480156101c3575f80fd5b506101d76101d2366004611922565b610458565b60405190151581526020016101af565b3480156101f2575f80fd5b506101fc600c5481565b6040519081526020016101af565b348015610215575f80fd5b506101fc610475565b348015610229575f80fd5b506101d761023836600461194c565b610496565b348015610248575f80fd5b50604051601281526020016101af565b348015610263575f80fd5b506101fc61027236600461198a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b3480156102a4575f80fd5b5061015f610534565b3480156102b8575f80fd5b506101fc600a5481565b3480156102cd575f80fd5b5061015f610631565b3480156102e1575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101af565b348015610314575f80fd5b5061015f6108a2565b348015610328575f80fd5b506101fc600b5481565b34801561033d575f80fd5b5060408051808201909152600381527f4e5057000000000000000000000000000000000000000000000000000000000060208201526101a2565b348015610382575f80fd5b506101d7610391366004611922565b610910565b3480156103a1575f80fd5b506101fc600d5481565b3480156103b6575f80fd5b506101fc6103c53660046119a5565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b348015610407575f80fd5b5061015f610923565b600454604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083905f818181858888f19350505050158015610454573d5f803e3d5ffd5b5050565b5f61046b610464610a3b565b8484610aa1565b5060015b92915050565b5f6104826012600a611b27565b610491906461f313f880611b35565b905090565b5f6104a2848484610c53565b61052a846104ae610a3b565b61052585604051806060016040528060288152602001611ce06028913973ffffffffffffffffffffffffffffffffffffffff8a165f908152600260205260408120906104f8610a3b565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205491906113de565b610aa1565b5060019392505050565b61053c610a3b565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146105c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610639610a3b565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146106bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bb565b600f5474010000000000000000000000000000000000000000900460ff1615610741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105bb565b600e5473ffffffffffffffffffffffffffffffffffffffff1663f305d719473061078c8173ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b5f806107ac5f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610837573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061085c9190611b4c565b5050600f80547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff1676010001000000000000000000000000000000000000000017905550565b60045473ffffffffffffffffffffffffffffffffffffffff166108c3610a3b565b73ffffffffffffffffffffffffffffffffffffffff16146108e2575f80fd5b305f9081526001602052604090205480156109005761090081611430565b4780156104545761045481611641565b5f61046b61091c610a3b565b8484610c53565b61092b610a3b565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bb565b6109ba6012600a611b27565b6109c9906461f313f880611b35565b600a9081556109da90601290611b27565b6109e9906461f313f880611b35565b600b557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610a196012600a611b27565b610a28906461f313f880611b35565b60405190815260200160405180910390a1565b5f303303610a9b575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff169150610a9e9050565b50335b90565b73ffffffffffffffffffffffffffffffffffffffff8316610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bb565b73ffffffffffffffffffffffffffffffffffffffff8216610be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bb565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bb565b73ffffffffffffffffffffffffffffffffffffffff8216610d99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bb565b5f8111610e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016105bb565b5f805473ffffffffffffffffffffffffffffffffffffffff858116911614801590610e6d57505f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611260576009545f03610e9f57610e9c612710610e966005548561168590919063ffffffff16565b90611740565b90505b60095415610ec557610ec2612710610e966008548561168590919063ffffffff16565b90505b600f5473ffffffffffffffffffffffffffffffffffffffff8581169116148015610f0a5750600e5473ffffffffffffffffffffffffffffffffffffffff848116911614155b8015610f3b575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b1561109b57600a548210610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105bb565b600b5482610fda8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b610fe49190611b77565b1061104b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105bb565b60075460095411801561105f57505f600554115b15611069575f6005555b611084612710610e966005548561168590919063ffffffff16565b90506006546009541161109b576009805460010190555b600f5473ffffffffffffffffffffffffffffffffffffffff84811691161480156110db575073ffffffffffffffffffffffffffffffffffffffff84163014155b156110fe576110fb612710610e966005548561168590919063ffffffff16565b90505b305f90815260016020526040902054600f547501000000000000000000000000000000000000000000900460ff161580156111535750600f5473ffffffffffffffffffffffffffffffffffffffff8581169116145b801561117b5750600f54760100000000000000000000000000000000000000000000900460ff165b80156111885750600d5481115b80156111975750600754600954115b1561125e576011544311156111ab575f6010555b600360105410611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016105bb565b61123461122f8461122a84600c54611781565b611781565b611430565b4780156112445761124447611641565b60108054905f61125383611b8a565b909155505043601155505b505b80156112e557305f9081526001602052604090205461127f9082611795565b305f818152600160205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112dc9085815260200190565b60405180910390a35b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054611314908361180d565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902055611371611346838361180d565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604090205490611795565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113c7858561180d565b60405190815260200160405180910390a350505050565b5f818484111561141b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bb9190611894565b505f6114278486611bc1565b95945050505050565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106114a3576114a3611bd4565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611520573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115449190611c01565b8160018151811061155757611557611bd4565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600e5461158a9130911684610aa1565b600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906115e89085905f90869030904290600401611c1c565b5f604051808303815f87803b1580156115ff575f80fd5b505af1158015611611573d5f803e3d5ffd5b5050600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b60045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015610454573d5f803e3d5ffd5b5f825f0361169457505f61046f565b5f61169f8385611b35565b9050826116ac8583611ca7565b14611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016105bb565b9392505050565b5f61173983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061184e565b5f81831161178f5782611739565b50919050565b5f806117a18385611b77565b905083811015611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105bb565b5f61173983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113de565b5f8183611888576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bb9190611894565b505f6114278486611ca7565b5f602080835283518060208501525f5b818110156118c0578581018301518582016040015282016118a4565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461191f575f80fd5b50565b5f8060408385031215611933575f80fd5b823561193e816118fe565b946020939093013593505050565b5f805f6060848603121561195e575f80fd5b8335611969816118fe565b92506020840135611979816118fe565b929592945050506040919091013590565b5f6020828403121561199a575f80fd5b8135611739816118fe565b5f80604083850312156119b6575f80fd5b82356119c1816118fe565b915060208301356119d1816118fe565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b80851115611a6257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611a4857611a486119dc565b80851615611a5557918102915b93841c9390800290611a0e565b509250929050565b5f82611a785750600161046f565b81611a8457505f61046f565b8160018114611a9a5760028114611aa457611ac0565b600191505061046f565b60ff841115611ab557611ab56119dc565b50506001821b61046f565b5060208310610133831016604e8410600b8410161715611ae3575081810a61046f565b611aed8383611a09565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611b1f57611b1f6119dc565b029392505050565b5f61173960ff841683611a6a565b808202811582820484141761046f5761046f6119dc565b5f805f60608486031215611b5e575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561046f5761046f6119dc565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bba57611bba6119dc565b5060010190565b8181038181111561046f5761046f6119dc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c11575f80fd5b8151611739816118fe565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c7957845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611c47565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b5f82611cda577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd3f667474e39bcbb50d729d544b18c73a19053b0e8568e185871e33756130ac64736f6c63430008180033

Deployed Bytecode

0x608060405260043610610140575f3560e01c80637d1db4a5116100bb57806395d89b4111610071578063bf474bed11610057578063bf474bed14610396578063dd62ed3e146103ab578063f511b00f146103fc575f80fd5b806395d89b4114610332578063a9059cbb14610377575f80fd5b80638da5cb5b116100a15780638da5cb5b146102d65780638f58eef0146103095780638f9a55c01461031d575f80fd5b80637d1db4a5146102ad5780638a8c523c146102c2575f80fd5b806318160ddd11610110578063313ce567116100f6578063313ce5671461023d57806370a0823114610258578063715018a614610299575f80fd5b806318160ddd1461020a57806323b872dd1461021e575f80fd5b80630614117a1461014b57806306fdde0314610161578063095ea7b3146101b85780630faee56f146101e7575f80fd5b3661014757005b5f80fd5b348015610156575f80fd5b5061015f610410565b005b34801561016c575f80fd5b5060408051808201909152601181527f4e6f6e2d506c617961626c6520576f6c6600000000000000000000000000000060208201525b6040516101af9190611894565b60405180910390f35b3480156101c3575f80fd5b506101d76101d2366004611922565b610458565b60405190151581526020016101af565b3480156101f2575f80fd5b506101fc600c5481565b6040519081526020016101af565b348015610215575f80fd5b506101fc610475565b348015610229575f80fd5b506101d761023836600461194c565b610496565b348015610248575f80fd5b50604051601281526020016101af565b348015610263575f80fd5b506101fc61027236600461198a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b3480156102a4575f80fd5b5061015f610534565b3480156102b8575f80fd5b506101fc600a5481565b3480156102cd575f80fd5b5061015f610631565b3480156102e1575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101af565b348015610314575f80fd5b5061015f6108a2565b348015610328575f80fd5b506101fc600b5481565b34801561033d575f80fd5b5060408051808201909152600381527f4e5057000000000000000000000000000000000000000000000000000000000060208201526101a2565b348015610382575f80fd5b506101d7610391366004611922565b610910565b3480156103a1575f80fd5b506101fc600d5481565b3480156103b6575f80fd5b506101fc6103c53660046119a5565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b348015610407575f80fd5b5061015f610923565b600454604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083905f818181858888f19350505050158015610454573d5f803e3d5ffd5b5050565b5f61046b610464610a3b565b8484610aa1565b5060015b92915050565b5f6104826012600a611b27565b610491906461f313f880611b35565b905090565b5f6104a2848484610c53565b61052a846104ae610a3b565b61052585604051806060016040528060288152602001611ce06028913973ffffffffffffffffffffffffffffffffffffffff8a165f908152600260205260408120906104f8610a3b565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205491906113de565b610aa1565b5060019392505050565b61053c610a3b565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146105c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b5f805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610639610a3b565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146106bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bb565b600f5474010000000000000000000000000000000000000000900460ff1615610741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105bb565b600e5473ffffffffffffffffffffffffffffffffffffffff1663f305d719473061078c8173ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b5f806107ac5f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610837573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061085c9190611b4c565b5050600f80547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff1676010001000000000000000000000000000000000000000017905550565b60045473ffffffffffffffffffffffffffffffffffffffff166108c3610a3b565b73ffffffffffffffffffffffffffffffffffffffff16146108e2575f80fd5b305f9081526001602052604090205480156109005761090081611430565b4780156104545761045481611641565b5f61046b61091c610a3b565b8484610c53565b61092b610a3b565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105bb565b6109ba6012600a611b27565b6109c9906461f313f880611b35565b600a9081556109da90601290611b27565b6109e9906461f313f880611b35565b600b557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610a196012600a611b27565b610a28906461f313f880611b35565b60405190815260200160405180910390a1565b5f303303610a9b575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff169150610a9e9050565b50335b90565b73ffffffffffffffffffffffffffffffffffffffff8316610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bb565b73ffffffffffffffffffffffffffffffffffffffff8216610be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bb565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bb565b73ffffffffffffffffffffffffffffffffffffffff8216610d99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bb565b5f8111610e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016105bb565b5f805473ffffffffffffffffffffffffffffffffffffffff858116911614801590610e6d57505f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611260576009545f03610e9f57610e9c612710610e966005548561168590919063ffffffff16565b90611740565b90505b60095415610ec557610ec2612710610e966008548561168590919063ffffffff16565b90505b600f5473ffffffffffffffffffffffffffffffffffffffff8581169116148015610f0a5750600e5473ffffffffffffffffffffffffffffffffffffffff848116911614155b8015610f3b575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b1561109b57600a548210610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105bb565b600b5482610fda8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b610fe49190611b77565b1061104b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105bb565b60075460095411801561105f57505f600554115b15611069575f6005555b611084612710610e966005548561168590919063ffffffff16565b90506006546009541161109b576009805460010190555b600f5473ffffffffffffffffffffffffffffffffffffffff84811691161480156110db575073ffffffffffffffffffffffffffffffffffffffff84163014155b156110fe576110fb612710610e966005548561168590919063ffffffff16565b90505b305f90815260016020526040902054600f547501000000000000000000000000000000000000000000900460ff161580156111535750600f5473ffffffffffffffffffffffffffffffffffffffff8581169116145b801561117b5750600f54760100000000000000000000000000000000000000000000900460ff165b80156111885750600d5481115b80156111975750600754600954115b1561125e576011544311156111ab575f6010555b600360105410611217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016105bb565b61123461122f8461122a84600c54611781565b611781565b611430565b4780156112445761124447611641565b60108054905f61125383611b8a565b909155505043601155505b505b80156112e557305f9081526001602052604090205461127f9082611795565b305f818152600160205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112dc9085815260200190565b60405180910390a35b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054611314908361180d565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902055611371611346838361180d565b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604090205490611795565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113c7858561180d565b60405190815260200160405180910390a350505050565b5f818484111561141b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bb9190611894565b505f6114278486611bc1565b95945050505050565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106114a3576114a3611bd4565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611520573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115449190611c01565b8160018151811061155757611557611bd4565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600e5461158a9130911684610aa1565b600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906115e89085905f90869030904290600401611c1c565b5f604051808303815f87803b1580156115ff575f80fd5b505af1158015611611573d5f803e3d5ffd5b5050600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b60045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015610454573d5f803e3d5ffd5b5f825f0361169457505f61046f565b5f61169f8385611b35565b9050826116ac8583611ca7565b14611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016105bb565b9392505050565b5f61173983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061184e565b5f81831161178f5782611739565b50919050565b5f806117a18385611b77565b905083811015611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105bb565b5f61173983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113de565b5f8183611888576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bb9190611894565b505f6114278486611ca7565b5f602080835283518060208501525f5b818110156118c0578581018301518582016040015282016118a4565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461191f575f80fd5b50565b5f8060408385031215611933575f80fd5b823561193e816118fe565b946020939093013593505050565b5f805f6060848603121561195e575f80fd5b8335611969816118fe565b92506020840135611979816118fe565b929592945050506040919091013590565b5f6020828403121561199a575f80fd5b8135611739816118fe565b5f80604083850312156119b6575f80fd5b82356119c1816118fe565b915060208301356119d1816118fe565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b80851115611a6257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611a4857611a486119dc565b80851615611a5557918102915b93841c9390800290611a0e565b509250929050565b5f82611a785750600161046f565b81611a8457505f61046f565b8160018114611a9a5760028114611aa457611ac0565b600191505061046f565b60ff841115611ab557611ab56119dc565b50506001821b61046f565b5060208310610133831016604e8410600b8410161715611ae3575081810a61046f565b611aed8383611a09565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611b1f57611b1f6119dc565b029392505050565b5f61173960ff841683611a6a565b808202811582820484141761046f5761046f6119dc565b5f805f60608486031215611b5e575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561046f5761046f6119dc565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bba57611bba6119dc565b5060010190565b8181038181111561046f5761046f6119dc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c11575f80fd5b8151611739816118fe565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c7957845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611c47565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b5f82611cda577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd3f667474e39bcbb50d729d544b18c73a19053b0e8568e185871e33756130ac64736f6c63430008180033

Deployed Bytecode Sourcemap

9400:8004:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16936:134;;;;;;;;;;;;;:::i;:::-;;11544:83;;;;;;;;;;-1:-1:-1;11614:5:0;;;;;;;;;;;;;;;;;11544:83;;;;;;;:::i;:::-;;;;;;;;12382:161;;;;;;;;;;-1:-1:-1;12382:161:0;;;;;:::i;:::-;;:::i;:::-;;;1270:14:1;;1263:22;1245:41;;1233:2;1218:18;12382:161:0;1105:187:1;10268:54:0;;;;;;;;;;;;;;;;;;;1443:25:1;;;1431:2;1416:18;10268:54:0;1297:177:1;11821:100:0;;;;;;;;;;;;;:::i;12551:313::-;;;;;;;;;;-1:-1:-1;12551:313:0;;;;;:::i;:::-;;:::i;11730:83::-;;;;;;;;;;-1:-1:-1;11730:83:0;;9952:2;2082:36:1;;2070:2;2055:18;11730:83:0;1940:184:1;11929:119:0;;;;;;;;;;-1:-1:-1;11929:119:0;;;;;:::i;:::-;12022:18;;11995:7;12022:18;;;:9;:18;;;;;;;11929:119;2551:148;;;;;;;;;;;;;:::i;10140:56::-;;;;;;;;;;;;;;;;16618:310;;;;;;;;;;;;;:::i;2337:79::-;;;;;;;;;;-1:-1:-1;2375:7:0;2402:6;2337:79;;2402:6;;;;2527:74:1;;2515:2;2500:18;2337:79:0;2381:226:1;17078:317:0;;;;;;;;;;;;;:::i;10203:58::-;;;;;;;;;;;;;;;;11635:87;;;;;;;;;;-1:-1:-1;11707:7:0;;;;;;;;;;;;;;;;;11635:87;;12056:167;;;;;;;;;;-1:-1:-1;12056:167:0;;;;;:::i;:::-;;:::i;10329:60::-;;;;;;;;;;;;;;;;12231:143;;;;;;;;;;-1:-1:-1;12231:143:0;;;;;:::i;:::-;12339:18;;;;12312:7;12339:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12231:143;16331:179;;;;;;;;;;;;;:::i;16936:134::-;17033:10;;17025:37;;16993:21;;17033:10;;;17025:37;;;;;16993:21;;16978:12;17025:37;16978:12;17025:37;16993:21;17033:10;17025:37;;;;;;;;;;;;;;;;;;;;;16967:103;16936:134::o;12382:161::-;12457:4;12474:39;12483:12;:10;:12::i;:::-;12497:7;12506:6;12474:8;:39::i;:::-;-1:-1:-1;12531:4:0;12382:161;;;;;:::o;11821:100::-;11874:7;10016:13;9952:2;10016;:13;:::i;:::-;10001:28;;:12;:28;:::i;:::-;11894:19;;11821:100;:::o;12551:313::-;12649:4;12666:36;12676:6;12684:9;12695:6;12666:9;:36::i;:::-;12713:121;12722:6;12730:12;:10;:12::i;:::-;12744:89;12782:6;12744:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;12764:12;:10;:12::i;:::-;12744:33;;;;;;;;;;;;;-1:-1:-1;12744:33:0;;;:89;:37;:89::i;:::-;12713:8;:121::i;:::-;-1:-1:-1;12852:4:0;12551:313;;;;;:::o;2551:148::-;2474:12;:10;:12::i;:::-;2464:6;;:22;:6;;;:22;;;2456:67;;;;;;;5066:2:1;2456:67:0;;;5048:21:1;;;5085:18;;;5078:30;5144:34;5124:18;;;5117:62;5196:18;;2456:67:0;;;;;;;;;2658:1:::1;2642:6:::0;;2621:40:::1;::::0;::::1;2642:6:::0;;::::1;::::0;2621:40:::1;::::0;2658:1;;2621:40:::1;2689:1;2672:19:::0;;;::::1;::::0;;2551:148::o;16618:310::-;2474:12;:10;:12::i;:::-;2464:6;;:22;:6;;;:22;;;2456:67;;;;;;;5066:2:1;2456:67:0;;;5048:21:1;;;5085:18;;;5078:30;5144:34;5124:18;;;5117:62;5196:18;;2456:67:0;4864:356:1;2456:67:0;16684:11:::1;::::0;;;::::1;;;16683:12;16675:47;;;::::0;::::1;::::0;;5427:2:1;16675:47:0::1;::::0;::::1;5409:21:1::0;5466:2;5446:18;;;5439:30;5505:25;5485:18;;;5478:53;5548:18;;16675:47:0::1;5225:347:1::0;16675:47:0::1;16733:15;::::0;::::1;;:31;16772:21;16803:4;16809:24;16803:4:::0;12022:18;;11995:7;12022:18;;;:9;:18;;;;;;;11929:119;16809:24:::1;16834:1;16836::::0;16838:7:::1;2375::::0;2402:6;;;;2337:79;16838:7:::1;16733:129;::::0;::::1;::::0;;;;;;;5890:42:1;5959:15;;;16733:129:0::1;::::0;::::1;5941:34:1::0;5991:18;;;5984:34;;;;6034:18;;;6027:34;;;;6077:18;;;6070:34;6141:15;;;6120:19;;;6113:44;16846:15:0::1;6173:19:1::0;;;6166:35;5852:19;;16733:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16873:11:0::1;:18:::0;;16902;;;;;;-1:-1:-1;16618:310:0:o;17078:317::-;17149:10;;;;17135:12;:10;:12::i;:::-;:24;;;17127:33;;;;;;17210:4;17171:20;12022:18;;;:9;:18;;;;;;17230:14;;17227:54;;17248:30;17265:12;17248:16;:30::i;:::-;17310:21;17345:12;;17342:46;;17361:24;17374:10;17361:12;:24::i;12056:167::-;12134:4;12151:42;12161:12;:10;:12::i;:::-;12175:9;12186:6;12151:9;:42::i;16331:179::-;2474:12;:10;:12::i;:::-;2464:6;;:22;:6;;;:22;;;2456:67;;;;;;;5066:2:1;2456:67:0;;;5048:21:1;;;5085:18;;;5078:30;5144:34;5124:18;;;5117:62;5196:18;;2456:67:0;4864:356:1;2456:67:0;10016:13:::1;9952:2;10016;:13;:::i;:::-;10001:28;::::0;:12:::1;:28;:::i;:::-;16387:12;:27:::0;;;10016:13:::1;::::0;9952:2:::1;::::0;10016:13:::1;:::i;:::-;10001:28;::::0;:12:::1;:28;:::i;:::-;16425:14;:29:::0;16470:32:::1;10016:13;9952:2;10016;:13;:::i;:::-;10001:28;::::0;:12:::1;:28;:::i;:::-;16470:32;::::0;1443:25:1;;;1431:2;1416:18;16470:32:0::1;;;;;;;16331:179::o:0;429:427::-;474:14;527:4;505:10;:27;501:348;;549:18;570:8;;549:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;609:8:0;687:17;681:24;728:42;677:94;;-1:-1:-1;501:348:0;;-1:-1:-1;501:348:0;;-1:-1:-1;827:10:0;501:348;429:427;:::o;12872:335::-;12965:19;;;12957:68;;;;;;;6725:2:1;12957:68:0;;;6707:21:1;6764:2;6744:18;;;6737:30;6803:34;6783:18;;;6776:62;6874:6;6854:18;;;6847:34;6898:19;;12957:68:0;6523:400:1;12957:68:0;13044:21;;;13036:68;;;;;;;7130:2:1;13036:68:0;;;7112:21:1;7169:2;7149:18;;;7142:30;7208:34;7188:18;;;7181:62;7279:4;7259:18;;;7252:32;7301:19;;13036:68:0;6928:398:1;13036:68:0;13115:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13167:32;;1443:25:1;;;13167:32:0;;1416:18:1;13167:32:0;;;;;;;12872:335;;;:::o;13215:2507::-;13303:18;;;13295:68;;;;;;;7533:2:1;13295:68:0;;;7515:21:1;7572:2;7552:18;;;7545:30;7611:34;7591:18;;;7584:62;7682:7;7662:18;;;7655:35;7707:19;;13295:68:0;7331:401:1;13295:68:0;13382:16;;;13374:64;;;;;;;7939:2:1;13374:64:0;;;7921:21:1;7978:2;7958:18;;;7951:30;8017:34;7997:18;;;7990:62;8088:5;8068:18;;;8061:33;8111:19;;13374:64:0;7737:399:1;13374:64:0;13466:1;13457:6;:10;13449:64;;;;;;;8343:2:1;13449:64:0;;;8325:21:1;8382:2;8362:18;;;8355:30;8421:34;8401:18;;;8394:62;8492:11;8472:18;;;8465:39;8521:19;;13449:64:0;8141:405:1;13449:64:0;13524:17;2402:6;;;13556:15;;;2402:6;;13556:15;;;;:32;;-1:-1:-1;2375:7:0;2402:6;;13575:13;;;2402:6;;13575:13;;13556:32;13552:1806;;;13622:9;;13633:1;13622:12;13619:94;;13666:31;13691:5;13666:20;13677:8;;13666:6;:10;;:20;;;;:::i;:::-;:24;;:31::i;:::-;13654:43;;13619:94;13732:9;;:11;13729:97;;13775:35;13804:5;13775:24;13786:12;;13775:6;:10;;:24;;;;:::i;:35::-;13763:47;;13729:97;13854:13;;;13846:21;;;13854:13;;13846:21;:55;;;;-1:-1:-1;13885:15:0;;;13871:30;;;13885:15;;13871:30;;13846:55;:83;;;;-1:-1:-1;13907:22:0;;;;;;;:18;:22;;;;;;;;13905:24;13846:83;13842:627;;;13968:12;;13959:6;:21;13951:59;;;;;;;8753:2:1;13951:59:0;;;8735:21:1;8792:2;8772:18;;;8765:30;8831:27;8811:18;;;8804:55;8876:18;;13951:59:0;8551:349:1;13951:59:0;14062:14;;14053:6;14037:13;14047:2;12022:18;;11995:7;12022:18;;;:9;:18;;;;;;;11929:119;14037:13;:22;;;;:::i;:::-;:39;14029:78;;;;;;;9237:2:1;14029:78:0;;;9219:21:1;9276:2;9256:18;;;9249:30;9315:28;9295:18;;;9288:56;9361:18;;14029:78:0;9035:350:1;14029:78:0;14141:18;;14129:9;;:30;:46;;;;;14174:1;14163:8;;:12;14129:46;14126:82;;;14202:1;14191:8;:12;14126:82;14238:31;14263:5;14238:20;14249:8;;14238:6;:10;;:20;;;;:::i;:31::-;14226:43;;14305:12;;14292:9;;:25;14288:148;;14381:9;:11;;;;;;14288:148;14494:13;;;14488:19;;;14494:13;;14488:19;:44;;;;-1:-1:-1;14511:21:0;;;14527:4;14511:21;;14488:44;14485:97;;;14548:31;14573:5;14548:20;14559:8;;14548:6;:10;;:20;;;;:::i;:31::-;14536:43;;14485:97;14647:4;14598:28;12022:18;;;:9;:18;;;;;;14673:6;;;;;;;14672:7;:30;;;;-1:-1:-1;14689:13:0;;;14683:19;;;14689:13;;14683:19;14672:30;:45;;;;-1:-1:-1;14706:11:0;;;;;;;14672:45;:89;;;;;14744:17;;14721:20;:40;14672:89;:123;;;;;14777:18;;14765:9;;:30;14672:123;14668:679;;;14835:13;;14820:12;:28;14816:90;;;14885:1;14873:9;:13;14816:90;14944:1;14932:9;;:13;14924:49;;;;;;;9592:2:1;14924:49:0;;;9574:21:1;9631:2;9611:18;;;9604:30;9670:25;9650:18;;;9643:53;9713:18;;14924:49:0;9390:347:1;14924:49:0;14992:69;15009:51;15013:6;15021:38;15025:20;15047:11;;15021:3;:38::i;:::-;15009:3;:51::i;:::-;14992:16;:69::i;:::-;15109:21;15153:22;;15149:106;;15200:35;15213:21;15200:12;:35::i;:::-;15273:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;15319:12:0;15303:13;:28;-1:-1:-1;14668:679:0;13590:1768;13552:1806;15373:11;;15370:169;;15445:4;15427:24;;;;:9;:24;;;;;;:39;;15456:9;15427:28;:39::i;:::-;15419:4;15401:24;;;;:9;:24;;;;;;;:65;;;;15486:39;;15401:24;15486:39;;;;;;;15515:9;1443:25:1;;1431:2;1416:18;;1297:177;15486:39:0;;;;;;;;15370:169;15565:15;;;;;;;:9;:15;;;;;;:27;;15585:6;15565:19;:27::i;:::-;15549:15;;;;;;;:9;:15;;;;;:43;15617:40;15635:21;:6;15646:9;15635:10;:21::i;:::-;15617:13;;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;15603:13;;;;;;;;:9;:13;;;;;:54;;;;15673:41;;;15692:21;:6;15703:9;15692:10;:21::i;:::-;15673:41;;1443:25:1;;;1431:2;1416:18;15673:41:0;;;;;;;13284:2438;13215:2507;;;:::o;3267:190::-;3353:7;3389:12;3381:6;;;;3373:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3413:9:0;3425:5;3429:1;3425;:5;:::i;:::-;3413:17;3267:190;-1:-1:-1;;;;;3267:190:0:o;15840:483::-;10729:6;:13;;;;;;;;15942:16:::1;::::0;;15956:1:::1;15942:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15942:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15942:16:0::1;15918:40;;15987:4;15969;15974:1;15969:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;16013:15:::1;::::0;:22:::1;::::0;;;;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15969:7;;16013:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16003:4;16008:1;16003:7;;;;;;;;:::i;:::-;:32;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16078:15:::1;::::0;16046:62:::1;::::0;16063:4:::1;::::0;16078:15:::1;16096:11:::0;16046:8:::1;:62::i;:::-;16119:15;::::0;:196:::1;::::0;;;;:15:::1;::::0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16200:11;;16119:15:::1;::::0;16242:4;;16269::::1;::::0;16289:15:::1;::::0;16119:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10765:6:0;:14;;;;;;-1:-1:-1;;;;15840:483:0:o;16518:92::-;16575:10;;:27;;:10;;;;;:27;;;;;16595:6;;16575:10;:27;:10;:27;16595:6;16575:10;:27;;;;;;;;;;;;;;;;;;;3465:246;3523:7;3547:1;3552;3547:6;3543:47;;-1:-1:-1;3577:1:0;3570:8;;3543:47;3600:9;3612:5;3616:1;3612;:5;:::i;:::-;3600:17;-1:-1:-1;3645:1:0;3636:5;3640:1;3600:17;3636:5;:::i;:::-;:10;3628:56;;;;;;;12221:2:1;3628:56:0;;;12203:21:1;12260:2;12240:18;;;12233:30;12299:34;12279:18;;;12272:62;12370:3;12350:18;;;12343:31;12391:19;;3628:56:0;12019:397:1;3628:56:0;3702:1;3465:246;-1:-1:-1;;;3465:246:0:o;3719:132::-;3777:7;3804:39;3808:1;3811;3804:39;;;;;;;;;;;;;;;;;:3;:39::i;15732:100::-;15789:7;15818:1;15816;:3;15815:9;;15823:1;15815:9;;;-1:-1:-1;15821:1:0;15732:100;-1:-1:-1;15732:100:0:o;2936:179::-;2994:7;;3026:5;3030:1;3026;:5;:::i;:::-;3014:17;;3055:1;3050;:6;;3042:46;;;;;;;12623:2:1;3042:46:0;;;12605:21:1;12662:2;12642:18;;;12635:30;12701:29;12681:18;;;12674:57;12748:18;;3042:46:0;12421:351:1;3123:136:0;3181:7;3208:43;3212:1;3215;3208:43;;;;;;;;;;;;;;;;;:3;:43::i;3859:189::-;3945:7;3980:12;3973:5;3965:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4004:9:0;4016:5;4020:1;4016;:5;:::i;14:607: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;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:154::-;712:42;705:5;701:54;694:5;691:65;681:93;;770:1;767;760:12;681:93;626:154;:::o;785:315::-;853:6;861;914:2;902:9;893:7;889:23;885:32;882:52;;;930:1;927;920:12;882:52;969:9;956:23;988:31;1013:5;988:31;:::i;:::-;1038:5;1090:2;1075:18;;;;1062:32;;-1:-1:-1;;;785:315:1:o;1479:456::-;1556:6;1564;1572;1625:2;1613:9;1604:7;1600:23;1596:32;1593:52;;;1641:1;1638;1631:12;1593:52;1680:9;1667:23;1699:31;1724:5;1699:31;:::i;:::-;1749:5;-1:-1:-1;1806:2:1;1791:18;;1778:32;1819:33;1778:32;1819:33;:::i;:::-;1479:456;;1871:7;;-1:-1:-1;;;1925:2:1;1910:18;;;;1897:32;;1479:456::o;2129:247::-;2188:6;2241:2;2229:9;2220:7;2216:23;2212:32;2209:52;;;2257:1;2254;2247:12;2209:52;2296:9;2283:23;2315:31;2340:5;2315:31;:::i;2612:388::-;2680:6;2688;2741:2;2729:9;2720:7;2716:23;2712:32;2709:52;;;2757:1;2754;2747:12;2709:52;2796:9;2783:23;2815:31;2840:5;2815:31;:::i;:::-;2865:5;-1:-1:-1;2922:2:1;2907:18;;2894:32;2935:33;2894:32;2935:33;:::i;:::-;2987:7;2977:17;;;2612:388;;;;;:::o;3005:184::-;3057:77;3054:1;3047:88;3154:4;3151:1;3144:15;3178:4;3175:1;3168:15;3194:476;3283:1;3320:5;3283:1;3334:330;3355:7;3345:8;3342:21;3334:330;;;3474:4;3406:66;3402:77;3396:4;3393:87;3390:113;;;3483:18;;:::i;:::-;3533:7;3523:8;3519:22;3516:55;;;3553:16;;;;3516:55;3632:22;;;;3592:15;;;;3334:330;;;3338:3;3194:476;;;;;:::o;3675:866::-;3724:5;3754:8;3744:80;;-1:-1:-1;3795:1:1;3809:5;;3744:80;3843:4;3833:76;;-1:-1:-1;3880:1:1;3894:5;;3833:76;3925:4;3943:1;3938:59;;;;4011:1;4006:130;;;;3918:218;;3938:59;3968:1;3959:10;;3982:5;;;4006:130;4043:3;4033:8;4030:17;4027:43;;;4050:18;;:::i;:::-;-1:-1:-1;;4106:1:1;4092:16;;4121:5;;3918:218;;4220:2;4210:8;4207:16;4201:3;4195:4;4192:13;4188:36;4182:2;4172:8;4169:16;4164:2;4158:4;4155:12;4151:35;4148:77;4145:159;;;-1:-1:-1;4257:19:1;;;4289:5;;4145:159;4336:34;4361:8;4355:4;4336:34;:::i;:::-;4466:6;4398:66;4394:79;4385:7;4382:92;4379:118;;;4477:18;;:::i;:::-;4515:20;;3675:866;-1:-1:-1;;;3675:866:1:o;4546:140::-;4604:5;4633:47;4674:4;4664:8;4660:19;4654:4;4633:47;:::i;4691:168::-;4764:9;;;4795;;4812:15;;;4806:22;;4792:37;4782:71;;4833:18;;:::i;6212:306::-;6300:6;6308;6316;6369:2;6357:9;6348:7;6344:23;6340:32;6337:52;;;6385:1;6382;6375:12;6337:52;6414:9;6408:16;6398:26;;6464:2;6453:9;6449:18;6443:25;6433:35;;6508:2;6497:9;6493:18;6487:25;6477:35;;6212:306;;;;;:::o;8905:125::-;8970:9;;;8991:10;;;8988:36;;;9004:18;;:::i;9742:195::-;9781:3;9812:66;9805:5;9802:77;9799:103;;9882:18;;:::i;:::-;-1:-1:-1;9929:1:1;9918:13;;9742:195::o;9942:128::-;10009:9;;;10030:11;;;10027:37;;;10044:18;;:::i;10264:184::-;10316:77;10313:1;10306:88;10413:4;10410:1;10403:15;10437:4;10434:1;10427:15;10453:251;10523:6;10576:2;10564:9;10555:7;10551:23;10547:32;10544:52;;;10592:1;10589;10582:12;10544:52;10624:9;10618:16;10643:31;10668:5;10643:31;:::i;10709:1026::-;10971:4;11019:3;11008:9;11004:19;11050:6;11039:9;11032:25;11076:2;11114:6;11109:2;11098:9;11094:18;11087:34;11157:3;11152:2;11141:9;11137:18;11130:31;11181:6;11216;11210:13;11247:6;11239;11232:22;11285:3;11274:9;11270:19;11263:26;;11324:2;11316:6;11312:15;11298:29;;11345:1;11355:218;11369:6;11366:1;11363:13;11355:218;;;11434:13;;11449:42;11430:62;11418:75;;11548:15;;;;11513:12;;;;11391:1;11384:9;11355:218;;;-1:-1:-1;;11641:42:1;11629:55;;;;11624:2;11609:18;;11602:83;-1:-1:-1;;;11716:3:1;11701:19;11694:35;11590:3;10709:1026;-1:-1:-1;;;10709:1026:1:o;11740:274::-;11780:1;11806;11796:189;;11841:77;11838:1;11831:88;11942:4;11939:1;11932:15;11970:4;11967:1;11960:15;11796:189;-1:-1:-1;11999:9:1;;11740:274::o

Swarm Source

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