ETH Price: $3,676.74 (-1.46%)

Token

ERC-20: Pyramid Dog (PDOG)
 

Overview

Max Total Supply

420,690,000,000 PDOG

Holders

33

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
PDOG

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-16
*/

/*

https://t.me/insiderpaper/31024

https://t.me/PyramidDog

*/


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
        function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract PDOG is ERC20, Ownable {
    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniswapV2Pair;
    address public immutable feeReceiver;

    uint256 private maxWalletSize = 8413800000 * 1e9;
    uint256 private swapbackMax = 8413800000 * 1e9;
    uint256 private swapbackMin = 1262070000 * 1e9;  
    uint32 private _buyCount;
    uint32 private _sellCount;
    uint32 private _lastSellBlock;
    uint32 private _preventSwapBefore = 20;
    uint32 private _lowerFeesAt = 20;
    uint32 private _finalBuyFee = 0;
    uint32 private _finalSellFee = 0;
    bool private _inSwap;

    uint256 public buyFeeProcent;
    uint256 public sellFeeProcent;

    mapping (address => bool) private excludedFromTxLimits;

    constructor() ERC20("Pyramid Dog", "PDOG") payable {
        uint256 totalSupply = 420690000000 * 1e9;

        feeReceiver = payable(_msgSender());
        buyFeeProcent = 23;
        sellFeeProcent = 23;

        excludedFromTxLimits[feeReceiver] = true;
        excludedFromTxLimits[msg.sender] = true;
        excludedFromTxLimits[address(this)] = true;
        excludedFromTxLimits[address(0xdead)] = true;
        
        _approve(address(this), address(_router), totalSupply);
        _approve(msg.sender, address(_router), totalSupply);
        _mint(msg.sender, totalSupply);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = excludedFromTxLimits[from] || excludedFromTxLimits[to];
        require(uniswapV2Pair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniswapV2Pair;
        bool isBuy = from == uniswapV2Pair;

        if(isBuy && !excluded){
            require(balanceOf(to) + amount <= maxWalletSize ||
                to == address(_router), "Max wallet exceeded");
            if(_buyCount <= _lowerFeesAt)
                _buyCount++;
            if(_buyCount == _lowerFeesAt){
                buyFeeProcent = _finalBuyFee;
                sellFeeProcent = _finalSellFee;
            }
        }            

        uint256 contractTokenBalance = balanceOf(address(this));
        if (isSell && !_inSwap && contractTokenBalance >= swapbackMin &&
          !excluded && _buyCount > _preventSwapBefore
        ) {
            if (block.number > _lastSellBlock) 
                _sellCount = 0;
            require(_sellCount < 3, "Only 3 sells per block!");
            _inSwap = true;
            swapTokensForEth(min(amount, min(contractTokenBalance, swapbackMax)));
            _inSwap = false;
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) 
                sendETHToFee(contractETHBalance);        
            _sellCount++;
            _lastSellBlock = uint32(block.number);
        }

        uint256 fee = isBuy ? buyFeeProcent : sellFeeProcent;

        if (fee > 0 && !excluded && !_inSwap && (isBuy || isSell)) {
            uint256 fees = amount * fee / 100;
            if (fees > 0){
                super._transfer(from, address(this), fees);
                amount-= fees;
            }
        }
        super._transfer(from, to, amount);
    }

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

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

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

    function startTrading() external payable onlyOwner {
        super._transfer(msg.sender, address(this), totalSupply());
        _router.addLiquidityETH{value: 1000000000000000000}(address(this), 324621000000000000000, 0, 0, msg.sender, block.timestamp);
        uniswapV2Pair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function setFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        buyFeeProcent = newBuyFee;
        sellFeeProcent = newSellFee;
    }

    function removeLimits() external onlyOwner {                
        maxWalletSize = totalSupply();
    }

    function setSwapSettings(uint256 maxAmount, uint256 minAmount) external onlyOwner {                
        swapbackMax = maxAmount;
        swapbackMin = minAmount;
    }

    function sweepStuckEther() external onlyOwner {
        payable(feeReceiver).transfer(address(this).balance);
    }

    function transferStuckTokens(IERC20 token) external onlyOwner {
        token.transfer(feeReceiver, token.balanceOf(address(this)));
    }

    receive() external payable {}
}

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":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":[{"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":"buyFeeProcent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeProcent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sweepStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"transferStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6774c3d285932e80006007819055600855671183c5fa6fad6000600955600a8054600160601b600160e01b031916701400000014000000000000000000000000179055600b60a09081526a507972616d696420446f6760a81b60c052610120604052600460e09081526350444f4760e01b6101005260036200008283826200047e565b5060046200009182826200047e565b505050620000ae620000a86200017a60201b60201c565b6200017e565b3360808190526017600b819055600c555f908152600d60205260408082208054600160ff19918216811790925530808552928420805482168317905561dead9093527fdc7fafdc41998a74ecacb8f8bd877011aba1f1d03a3a0d37a2e7879a393b1d6a8054909316179091556816ce3f1e16bf150000906200014690737a250d5630b4cf539739df2c5dacb4c659f2488d83620001cf565b6200016733737a250d5630b4cf539739df2c5dacb4c659f2488d83620001cf565b620001733382620002fa565b5062000570565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316620002375760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200029a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200022e565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620003525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200022e565b8060025f8282546200036591906200054a565b90915550506001600160a01b0382165f9081526020819052604081208054839290620003939084906200054a565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200040a57607f821691505b6020821081036200042957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003dc57805f5260205f20601f840160051c81016020851015620004565750805b601f840160051c820191505b8181101562000477575f815560010162000462565b5050505050565b81516001600160401b038111156200049a576200049a620003e1565b620004b281620004ab8454620003f5565b846200042f565b602080601f831160018114620004e8575f8415620004d05750858301515b5f19600386901b1c1916600185901b17855562000542565b5f85815260208120601f198616915b828110156200051857888601518255948401946001909101908401620004f7565b50858210156200053657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b808201808211156200056a57634e487b7160e01b5f52601160045260245ffd5b92915050565b608051611a2a6200059e5f395f81816103ad0152818161058401528181610a3101526116740152611a2a5ff3fe60806040526004361061014a575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb1461037d578063b3f006741461039c578063d0811807146103cf578063dbc3889f146103e4578063dd62ed3e14610403578063f2fde38b14610447575f80fd5b8063715018a6146102e6578063751039fc146102fa5780638da5cb5b1461030e5780638f4590d21461032b57806395d89b411461034a578063a457c2d71461035e575f80fd5b806323b872dd1161010457806323b872dd1461021a578063293230b814610239578063313ce56714610241578063395093511461025c57806349bd5a5e1461027b57806370a08231146102b2575f80fd5b806306fdde0314610155578063095ea7b31461017f5780630b78f9c0146101ae5780631678e6f8146101cf57806317ccb1bf146101f257806318160ddd14610206575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610466565b60405161017691906116ba565b60405180910390f35b34801561018a575f80fd5b5061019e61019936600461171a565b6104f6565b6040519015158152602001610176565b3480156101b9575f80fd5b506101cd6101c8366004611744565b61050f565b005b3480156101da575f80fd5b506101e4600c5481565b604051908152602001610176565b3480156101fd575f80fd5b506101cd61054d565b348015610211575f80fd5b506002546101e4565b348015610225575f80fd5b5061019e610234366004611764565b6105cc565b6101cd6105ef565b34801561024c575f80fd5b5060405160098152602001610176565b348015610267575f80fd5b5061019e61027636600461171a565b61085a565b348015610286575f80fd5b5060065461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b3480156102bd575f80fd5b506101e46102cc3660046117a2565b6001600160a01b03165f9081526020819052604090205490565b3480156102f1575f80fd5b506101cd610898565b348015610305575f80fd5b506101cd6108cd565b348015610319575f80fd5b506005546001600160a01b031661029a565b348015610336575f80fd5b506101cd610345366004611744565b6108ff565b348015610355575f80fd5b50610169610934565b348015610369575f80fd5b5061019e61037836600461171a565b610943565b348015610388575f80fd5b5061019e61039736600461171a565b6109d4565b3480156103a7575f80fd5b5061029a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103da575f80fd5b506101e4600b5481565b3480156103ef575f80fd5b506101cd6103fe3660046117a2565b6109e1565b34801561040e575f80fd5b506101e461041d3660046117bd565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610452575f80fd5b506101cd6104613660046117a2565b610b0b565b606060038054610475906117f4565b80601f01602080910402602001604051908101604052809291908181526020018280546104a1906117f4565b80156104ec5780601f106104c3576101008083540402835291602001916104ec565b820191905f5260205f20905b8154815290600101906020018083116104cf57829003601f168201915b5050505050905090565b5f33610503818585610ba3565b60019150505b92915050565b6005546001600160a01b031633146105425760405162461bcd60e51b81526004016105399061182c565b60405180910390fd5b600b91909155600c55565b6005546001600160a01b031633146105775760405162461bcd60e51b81526004016105399061182c565b6040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016904780156108fc02915f818181858888f193505050501580156105c9573d5f803e3d5ffd5b50565b5f336105d9858285610cc6565b6105e4858585610d56565b506001949350505050565b6005546001600160a01b031633146106195760405162461bcd60e51b81526004016105399061182c565b61062c333061062760025490565b6112aa565b60405163f305d71960e01b81523060048201526811990577959014800060248201525f6044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990670de0b6b3a76400009060c40160606040518083038185885af11580156106ac573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906106d19190611861565b505050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610724573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610748919061188c565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cb919061188c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610814573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610838919061188c565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919061050390829086906108939087906118bb565b610ba3565b6005546001600160a01b031633146108c25760405162461bcd60e51b81526004016105399061182c565b6108cb5f611476565b565b6005546001600160a01b031633146108f75760405162461bcd60e51b81526004016105399061182c565b600254600755565b6005546001600160a01b031633146109295760405162461bcd60e51b81526004016105399061182c565b600891909155600955565b606060048054610475906117f4565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190838110156109c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610539565b6105e48286868403610ba3565b5f33610503818585610d56565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016105399061182c565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb907f00000000000000000000000000000000000000000000000000000000000000009083906370a0823190602401602060405180830381865afa158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b91906118ce565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610ae3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0791906118e5565b5050565b6005546001600160a01b03163314610b355760405162461bcd60e51b81526004016105399061182c565b6001600160a01b038116610b9a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610539565b6105c981611476565b6001600160a01b038316610c055760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610539565b6001600160a01b038216610c665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610539565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610d505781811015610d435760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610539565b610d508484848403610ba3565b50505050565b6001600160a01b038316610dc05760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610539565b6001600160a01b038216610e285760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610539565b5f8111610e8a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610539565b6001600160a01b0383165f908152600d602052604081205460ff1680610ec757506001600160a01b0383165f908152600d602052604090205460ff165b6006549091506001600160a01b0316151580610ee05750805b610f2c5760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610539565b6006546001600160a01b03908116848216811491861614808015610f4e575082155b156110705760075484610f75876001600160a01b03165f9081526020819052604090205490565b610f7f91906118bb565b111580610fa857506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b610fea5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610539565b600a5463ffffffff600160801b8204811691161161103757600a805463ffffffff16905f61101783611904565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b600a5463ffffffff600160801b8204811691160361107057600a5463ffffffff600160a01b82048116600b55600160c01b90910416600c555b305f908152602081905260409020548280156110965750600a54600160e01b900460ff16155b80156110a457506009548110155b80156110ae575083155b80156110ca5750600a5463ffffffff600160601b820481169116115b1561121057600a5468010000000000000000900463ffffffff164311156110fd57600a805467ffffffff00000000191690555b600a54600364010000000090910463ffffffff161061115e5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000006044820152606401610539565b600a805460ff60e01b1916600160e01b1790556008546111939061118e9087906111899085906114c7565b6114c7565b6114de565b600a805460ff60e01b191690554780156111b0576111b081611667565b600a8054640100000000900463ffffffff169060046111ce83611904565b91906101000a81548163ffffffff021916908363ffffffff1602179055505043600a60086101000a81548163ffffffff021916908363ffffffff160217905550505b5f8261121e57600c54611222565b600b545b90505f81118015611231575084155b80156112475750600a54600160e01b900460ff16155b8015611257575082806112575750835b15611295575f60646112698389611926565b611273919061193d565b90508015611293576112868930836112aa565b611290818861195c565b96505b505b6112a08888886112aa565b5050505050505050565b6001600160a01b03831661130e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610539565b6001600160a01b0382166113705760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610539565b6001600160a01b0383165f90815260208190526040902054818110156113e75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610539565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061141d9084906118bb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146991815260200190565b60405180910390a3610d50565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8183116114d557826114d7565b815b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115115761151161196f565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611581573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a5919061188c565b816001815181106115b8576115b861196f565b60200260200101906001600160a01b031690816001600160a01b0316815250506115f730737a250d5630b4cf539739df2c5dacb4c659f2488d84610ba3565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116369085905f90869030904290600401611983565b5f604051808303815f87803b15801561164d575f80fd5b505af115801561165f573d5f803e3d5ffd5b505050505050565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083905f818181858888f19350505050158015610b07573d5f803e3d5ffd5b5f602080835283518060208501525f5b818110156116e6578581018301518582016040015282016116ca565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105c9575f80fd5b5f806040838503121561172b575f80fd5b823561173681611706565b946020939093013593505050565b5f8060408385031215611755575f80fd5b50508035926020909101359150565b5f805f60608486031215611776575f80fd5b833561178181611706565b9250602084013561179181611706565b929592945050506040919091013590565b5f602082840312156117b2575f80fd5b81356114d781611706565b5f80604083850312156117ce575f80fd5b82356117d981611706565b915060208301356117e981611706565b809150509250929050565b600181811c9082168061180857607f821691505b60208210810361182657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f60608486031215611873575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561189c575f80fd5b81516114d781611706565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610509576105096118a7565b5f602082840312156118de575f80fd5b5051919050565b5f602082840312156118f5575f80fd5b815180151581146114d7575f80fd5b5f63ffffffff80831681810361191c5761191c6118a7565b6001019392505050565b8082028115828204841417610509576105096118a7565b5f8261195757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610509576105096118a7565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119d35784516001600160a01b0316835293830193918301916001016119ae565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e32dccc644af0d1277cce0050aa787087054232b091de1c6e2aecd208ba3b0a764736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb1461037d578063b3f006741461039c578063d0811807146103cf578063dbc3889f146103e4578063dd62ed3e14610403578063f2fde38b14610447575f80fd5b8063715018a6146102e6578063751039fc146102fa5780638da5cb5b1461030e5780638f4590d21461032b57806395d89b411461034a578063a457c2d71461035e575f80fd5b806323b872dd1161010457806323b872dd1461021a578063293230b814610239578063313ce56714610241578063395093511461025c57806349bd5a5e1461027b57806370a08231146102b2575f80fd5b806306fdde0314610155578063095ea7b31461017f5780630b78f9c0146101ae5780631678e6f8146101cf57806317ccb1bf146101f257806318160ddd14610206575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b50610169610466565b60405161017691906116ba565b60405180910390f35b34801561018a575f80fd5b5061019e61019936600461171a565b6104f6565b6040519015158152602001610176565b3480156101b9575f80fd5b506101cd6101c8366004611744565b61050f565b005b3480156101da575f80fd5b506101e4600c5481565b604051908152602001610176565b3480156101fd575f80fd5b506101cd61054d565b348015610211575f80fd5b506002546101e4565b348015610225575f80fd5b5061019e610234366004611764565b6105cc565b6101cd6105ef565b34801561024c575f80fd5b5060405160098152602001610176565b348015610267575f80fd5b5061019e61027636600461171a565b61085a565b348015610286575f80fd5b5060065461029a906001600160a01b031681565b6040516001600160a01b039091168152602001610176565b3480156102bd575f80fd5b506101e46102cc3660046117a2565b6001600160a01b03165f9081526020819052604090205490565b3480156102f1575f80fd5b506101cd610898565b348015610305575f80fd5b506101cd6108cd565b348015610319575f80fd5b506005546001600160a01b031661029a565b348015610336575f80fd5b506101cd610345366004611744565b6108ff565b348015610355575f80fd5b50610169610934565b348015610369575f80fd5b5061019e61037836600461171a565b610943565b348015610388575f80fd5b5061019e61039736600461171a565b6109d4565b3480156103a7575f80fd5b5061029a7f0000000000000000000000001aec864ecdf07d261ed731679f7a3181467f0f8a81565b3480156103da575f80fd5b506101e4600b5481565b3480156103ef575f80fd5b506101cd6103fe3660046117a2565b6109e1565b34801561040e575f80fd5b506101e461041d3660046117bd565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610452575f80fd5b506101cd6104613660046117a2565b610b0b565b606060038054610475906117f4565b80601f01602080910402602001604051908101604052809291908181526020018280546104a1906117f4565b80156104ec5780601f106104c3576101008083540402835291602001916104ec565b820191905f5260205f20905b8154815290600101906020018083116104cf57829003601f168201915b5050505050905090565b5f33610503818585610ba3565b60019150505b92915050565b6005546001600160a01b031633146105425760405162461bcd60e51b81526004016105399061182c565b60405180910390fd5b600b91909155600c55565b6005546001600160a01b031633146105775760405162461bcd60e51b81526004016105399061182c565b6040516001600160a01b037f0000000000000000000000001aec864ecdf07d261ed731679f7a3181467f0f8a16904780156108fc02915f818181858888f193505050501580156105c9573d5f803e3d5ffd5b50565b5f336105d9858285610cc6565b6105e4858585610d56565b506001949350505050565b6005546001600160a01b031633146106195760405162461bcd60e51b81526004016105399061182c565b61062c333061062760025490565b6112aa565b60405163f305d71960e01b81523060048201526811990577959014800060248201525f6044820181905260648201523360848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990670de0b6b3a76400009060c40160606040518083038185885af11580156106ac573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906106d19190611861565b505050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610724573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610748919061188c565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cb919061188c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610814573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610838919061188c565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919061050390829086906108939087906118bb565b610ba3565b6005546001600160a01b031633146108c25760405162461bcd60e51b81526004016105399061182c565b6108cb5f611476565b565b6005546001600160a01b031633146108f75760405162461bcd60e51b81526004016105399061182c565b600254600755565b6005546001600160a01b031633146109295760405162461bcd60e51b81526004016105399061182c565b600891909155600955565b606060048054610475906117f4565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190838110156109c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610539565b6105e48286868403610ba3565b5f33610503818585610d56565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016105399061182c565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb907f0000000000000000000000001aec864ecdf07d261ed731679f7a3181467f0f8a9083906370a0823190602401602060405180830381865afa158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b91906118ce565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610ae3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0791906118e5565b5050565b6005546001600160a01b03163314610b355760405162461bcd60e51b81526004016105399061182c565b6001600160a01b038116610b9a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610539565b6105c981611476565b6001600160a01b038316610c055760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610539565b6001600160a01b038216610c665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610539565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610d505781811015610d435760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610539565b610d508484848403610ba3565b50505050565b6001600160a01b038316610dc05760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610539565b6001600160a01b038216610e285760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610539565b5f8111610e8a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610539565b6001600160a01b0383165f908152600d602052604081205460ff1680610ec757506001600160a01b0383165f908152600d602052604090205460ff165b6006549091506001600160a01b0316151580610ee05750805b610f2c5760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610539565b6006546001600160a01b03908116848216811491861614808015610f4e575082155b156110705760075484610f75876001600160a01b03165f9081526020819052604090205490565b610f7f91906118bb565b111580610fa857506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b610fea5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610539565b600a5463ffffffff600160801b8204811691161161103757600a805463ffffffff16905f61101783611904565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b600a5463ffffffff600160801b8204811691160361107057600a5463ffffffff600160a01b82048116600b55600160c01b90910416600c555b305f908152602081905260409020548280156110965750600a54600160e01b900460ff16155b80156110a457506009548110155b80156110ae575083155b80156110ca5750600a5463ffffffff600160601b820481169116115b1561121057600a5468010000000000000000900463ffffffff164311156110fd57600a805467ffffffff00000000191690555b600a54600364010000000090910463ffffffff161061115e5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000006044820152606401610539565b600a805460ff60e01b1916600160e01b1790556008546111939061118e9087906111899085906114c7565b6114c7565b6114de565b600a805460ff60e01b191690554780156111b0576111b081611667565b600a8054640100000000900463ffffffff169060046111ce83611904565b91906101000a81548163ffffffff021916908363ffffffff1602179055505043600a60086101000a81548163ffffffff021916908363ffffffff160217905550505b5f8261121e57600c54611222565b600b545b90505f81118015611231575084155b80156112475750600a54600160e01b900460ff16155b8015611257575082806112575750835b15611295575f60646112698389611926565b611273919061193d565b90508015611293576112868930836112aa565b611290818861195c565b96505b505b6112a08888886112aa565b5050505050505050565b6001600160a01b03831661130e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610539565b6001600160a01b0382166113705760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610539565b6001600160a01b0383165f90815260208190526040902054818110156113e75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610539565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061141d9084906118bb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146991815260200190565b60405180910390a3610d50565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8183116114d557826114d7565b815b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115115761151161196f565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611581573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a5919061188c565b816001815181106115b8576115b861196f565b60200260200101906001600160a01b031690816001600160a01b0316815250506115f730737a250d5630b4cf539739df2c5dacb4c659f2488d84610ba3565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116369085905f90869030904290600401611983565b5f604051808303815f87803b15801561164d575f80fd5b505af115801561165f573d5f803e3d5ffd5b505050505050565b6040516001600160a01b037f0000000000000000000000001aec864ecdf07d261ed731679f7a3181467f0f8a169082156108fc029083905f818181858888f19350505050158015610b07573d5f803e3d5ffd5b5f602080835283518060208501525f5b818110156116e6578581018301518582016040015282016116ca565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105c9575f80fd5b5f806040838503121561172b575f80fd5b823561173681611706565b946020939093013593505050565b5f8060408385031215611755575f80fd5b50508035926020909101359150565b5f805f60608486031215611776575f80fd5b833561178181611706565b9250602084013561179181611706565b929592945050506040919091013590565b5f602082840312156117b2575f80fd5b81356114d781611706565b5f80604083850312156117ce575f80fd5b82356117d981611706565b915060208301356117e981611706565b809150509250929050565b600181811c9082168061180857607f821691505b60208210810361182657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f805f60608486031215611873575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561189c575f80fd5b81516114d781611706565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610509576105096118a7565b5f602082840312156118de575f80fd5b5051919050565b5f602082840312156118f5575f80fd5b815180151581146114d7575f80fd5b5f63ffffffff80831681810361191c5761191c6118a7565b6001019392505050565b8082028115828204841417610509576105096118a7565b5f8261195757634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610509576105096118a7565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119d35784516001600160a01b0316835293830193918301916001016119ae565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e32dccc644af0d1277cce0050aa787087054232b091de1c6e2aecd208ba3b0a764736f6c63430008170033

Deployed Bytecode Sourcemap

8392:5435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3407:201;;;;;;;;;;-1:-1:-1;3407:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3407:201:0;1023:187:1;13060:157:0;;;;;;;;;;-1:-1:-1;13060:157:0;;;;;:::i;:::-;;:::i;:::-;;9115:29;;;;;;;;;;;;;;;;;;;1614:25:1;;;1602:2;1587:18;9115:29:0;1468:177:1;13522:117:0;;;;;;;;;;;;;:::i;2796:108::-;;;;;;;;;;-1:-1:-1;2884:12:0;;2796:108;;3616:295;;;;;;;;;;-1:-1:-1;3616:295:0;;;;;:::i;:::-;;:::i;12688:364::-;;;:::i;2696:92::-;;;;;;;;;;-1:-1:-1;2696:92:0;;2779:1;2253:36:1;;2241:2;2226:18;2696:92:0;2111:184:1;3919:240:0;;;;;;;;;;-1:-1:-1;3919:240:0;;;;;:::i;:::-;;:::i;8548:28::-;;;;;;;;;;-1:-1:-1;8548:28:0;;;;-1:-1:-1;;;;;8548:28:0;;;;;;-1:-1:-1;;;;;2464:32:1;;;2446:51;;2434:2;2419:18;8548:28:0;2300:203:1;2912:127:0;;;;;;;;;;-1:-1:-1;2912:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3013:18:0;2986:7;3013:18;;;;;;;;;;;;2912:127;7874:103;;;;;;;;;;;;;:::i;13225:107::-;;;;;;;;;;;;;:::i;7651:87::-;;;;;;;;;;-1:-1:-1;7724:6:0;;-1:-1:-1;;;;;7724:6:0;7651:87;;13340:174;;;;;;;;;;-1:-1:-1;13340:174:0;;;;;:::i;:::-;;:::i;2584:104::-;;;;;;;;;;;;;:::i;4167:438::-;;;;;;;;;;-1:-1:-1;4167:438:0;;;;;:::i;:::-;;:::i;3047:193::-;;;;;;;;;;-1:-1:-1;3047:193:0;;;;;:::i;:::-;;:::i;8583:36::-;;;;;;;;;;;;;;;9080:28;;;;;;;;;;;;;;;;13647:140;;;;;;;;;;-1:-1:-1;13647:140:0;;;;;:::i;:::-;;:::i;3248:151::-;;;;;;;;;;-1:-1:-1;3248:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3364:18:0;;;3337:7;3364:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3248:151;7985:201;;;;;;;;;;-1:-1:-1;7985:201:0;;;;;:::i;:::-;;:::i;2476:100::-;2530:13;2563:5;2556:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:100;:::o;3407:201::-;3490:4;1020:10;3546:32;1020:10;3562:7;3571:6;3546:8;:32::i;:::-;3596:4;3589:11;;;3407:201;;;;;:::o;13060:157::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;;;;;;;;;13146:13:::1;:25:::0;;;;13182:14:::1;:27:::0;13060:157::o;13522:117::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;13579:52:::1;::::0;-1:-1:-1;;;;;13587:11:0::1;13579:29;::::0;13609:21:::1;13579:52:::0;::::1;;;::::0;::::1;::::0;;;13609:21;13579:29;:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13522:117::o:0;3616:295::-;3747:4;1020:10;3805:38;3821:4;1020:10;3836:6;3805:15;:38::i;:::-;3854:27;3864:4;3870:2;3874:6;3854:9;:27::i;:::-;-1:-1:-1;3899:4:0;;3616:295;-1:-1:-1;;;;3616:295:0:o;12688:364::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;12750:57:::1;12766:10;12786:4;12793:13;2884:12:::0;;;2796:108;12793:13:::1;12750:15;:57::i;:::-;12818:124;::::0;-1:-1:-1;;;12818:124:0;;12878:4:::1;12818:124;::::0;::::1;4534:34:1::0;12885:21:0::1;4584:18:1::0;;;4577:34;12908:1:0::1;4627:18:1::0;;;4620:34;;;4670:18;;;4663:34;12914:10:0::1;4713:19:1::0;;;4706:44;12926:15:0::1;4766:19:1::0;;;4759:35;8496:42:0::1;::::0;12818:23:::1;::::0;12849:19:::1;::::0;4468::1;;12818:124:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8496:42;-1:-1:-1::0;;;;;12987:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12969:44:0::1;;13022:4;8496:42;-1:-1:-1::0;;;;;13029:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12969:75;::::0;-1:-1:-1;;;;;;12969:75:0::1;::::0;;;;;;-1:-1:-1;;;;;5602:15:1;;;12969:75:0::1;::::0;::::1;5584:34:1::0;5654:15;;5634:18;;;5627:43;5519:18;;12969:75:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12953:13;:91:::0;;-1:-1:-1;;;;;;12953:91:0::1;-1:-1:-1::0;;;;;12953:91:0;;;::::1;::::0;;;::::1;::::0;;12688:364::o;3919:240::-;1020:10;4007:4;4088:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4088:27:0;;;;;;;;;;4007:4;;1020:10;4063:66;;1020:10;;4088:27;;:40;;4118:10;;4088:40;:::i;:::-;4063:8;:66::i;7874:103::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;7939:30:::1;7966:1;7939:18;:30::i;:::-;7874:103::o:0;13225:107::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;2884:12;;13295:13:::1;:29:::0;13225:107::o;13340:174::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;13449:11:::1;:23:::0;;;;13483:11:::1;:23:::0;13340:174::o;2584:104::-;2640:13;2673:7;2666:14;;;;;:::i;4167:438::-;1020:10;4260:4;4343:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4343:27:0;;;;;;;;;;4260:4;;1020:10;4389:35;;;;4381:85;;;;-1:-1:-1;;;4381:85:0;;6145:2:1;4381:85:0;;;6127:21:1;6184:2;6164:18;;;6157:30;6223:34;6203:18;;;6196:62;-1:-1:-1;;;6274:18:1;;;6267:35;6319:19;;4381:85:0;5943:401:1;4381:85:0;4502:60;4511:5;4518:7;4546:15;4527:16;:34;4502:8;:60::i;3047:193::-;3126:4;1020:10;3182:28;1020:10;3199:2;3203:6;3182:9;:28::i;13647:140::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;13748:30:::1;::::0;-1:-1:-1;;;13748:30:0;;13772:4:::1;13748:30;::::0;::::1;2446:51:1::0;-1:-1:-1;;;;;13720:14:0;::::1;::::0;::::1;::::0;13735:11:::1;::::0;13720:14;;13748:15:::1;::::0;2419:18:1;;13748:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13720:59;::::0;-1:-1:-1;;;;;;13720:59:0::1;::::0;;;;;;-1:-1:-1;;;;;6730:32:1;;;13720:59:0::1;::::0;::::1;6712:51:1::0;6779:18;;;6772:34;6685:18;;13720:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13647:140:::0;:::o;7985:201::-;7724:6;;-1:-1:-1;;;;;7724:6:0;1020:10;7786:23;7778:68;;;;-1:-1:-1;;;7778:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8074:22:0;::::1;8066:73;;;::::0;-1:-1:-1;;;8066:73:0;;7301:2:1;8066:73:0::1;::::0;::::1;7283:21:1::0;7340:2;7320:18;;;7313:30;7379:34;7359:18;;;7352:62;-1:-1:-1;;;7430:18:1;;;7423:36;7476:19;;8066:73:0::1;7099:402:1::0;8066:73:0::1;8150:28;8169:8;8150:18;:28::i;6298:380::-:0;-1:-1:-1;;;;;6434:19:0;;6426:68;;;;-1:-1:-1;;;6426:68:0;;7708:2:1;6426:68:0;;;7690:21:1;7747:2;7727:18;;;7720:30;7786:34;7766:18;;;7759:62;-1:-1:-1;;;7837:18:1;;;7830:34;7881:19;;6426:68:0;7506:400:1;6426:68:0;-1:-1:-1;;;;;6513:21:0;;6505:68;;;;-1:-1:-1;;;6505:68:0;;8113:2:1;6505:68:0;;;8095:21:1;8152:2;8132:18;;;8125:30;8191:34;8171:18;;;8164:62;-1:-1:-1;;;8242:18:1;;;8235:32;8284:19;;6505:68:0;7911:398:1;6505:68:0;-1:-1:-1;;;;;6586:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6638:32;;1614:25:1;;;6638:32:0;;1587:18:1;6638:32:0;;;;;;;6298:380;;;:::o;6686:453::-;-1:-1:-1;;;;;3364:18:0;;;6821:24;3364:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6888:37:0;;6884:248;;6970:6;6950:16;:26;;6942:68;;;;-1:-1:-1;;;6942:68:0;;8516:2:1;6942:68:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:31;8574:18;;;8567:59;8643:18;;6942:68:0;8314:353:1;6942:68:0;7054:51;7063:5;7070:7;7098:6;7079:16;:25;7054:8;:51::i;:::-;6810:329;6686:453;;;:::o;9830:2178::-;-1:-1:-1;;;;;9962:18:0;;9954:74;;;;-1:-1:-1;;;9954:74:0;;8874:2:1;9954:74:0;;;8856:21:1;8913:2;8893:18;;;8886:30;8952:34;8932:18;;;8925:62;-1:-1:-1;;;9003:18:1;;;8996:41;9054:19;;9954:74:0;8672:407:1;9954:74:0;-1:-1:-1;;;;;10047:16:0;;10039:70;;;;-1:-1:-1;;;10039:70:0;;9286:2:1;10039:70:0;;;9268:21:1;9325:2;9305:18;;;9298:30;9364:34;9344:18;;;9337:62;-1:-1:-1;;;9415:18:1;;;9408:39;9464:19;;10039:70:0;9084:405:1;10039:70:0;10137:1;10128:6;:10;10120:65;;;;-1:-1:-1;;;10120:65:0;;9696:2:1;10120:65:0;;;9678:21:1;9735:2;9715:18;;;9708:30;9774:34;9754:18;;;9747:62;-1:-1:-1;;;9825:18:1;;;9818:40;9875:19;;10120:65:0;9494:406:1;10120:65:0;-1:-1:-1;;;;;10214:26:0;;10198:13;10214:26;;;:20;:26;;;;;;;;;:54;;-1:-1:-1;;;;;;10244:24:0;;;;;;:20;:24;;;;;;;;10214:54;10287:13;;10198:70;;-1:-1:-1;;;;;;10287:13:0;:27;;;:39;;;10318:8;10287:39;10279:83;;;;-1:-1:-1;;;10279:83:0;;10107:2:1;10279:83:0;;;10089:21:1;10146:2;10126:18;;;10119:30;10185:33;10165:18;;;10158:61;10236:18;;10279:83:0;9905:355:1;10279:83:0;10395:13;;-1:-1:-1;;;;;10395:13:0;;;10389:19;;;;;;10432:21;;;;10469:18;;;;;10479:8;10478:9;10469:18;10466:391;;;10537:13;;10527:6;10511:13;10521:2;-1:-1:-1;;;;;3013:18:0;2986:7;3013:18;;;;;;;;;;;;2912:127;10511:13;:22;;;;:::i;:::-;:39;;:82;;;-1:-1:-1;;;;;;10571:22:0;;8496:42;10571:22;10511:82;10503:114;;;;-1:-1:-1;;;10503:114:0;;10467:2:1;10503:114:0;;;10449:21:1;10506:2;10486:18;;;10479:30;-1:-1:-1;;;10525:18:1;;;10518:49;10584:18;;10503:114:0;10265:343:1;10503:114:0;10648:12;;;-1:-1:-1;;;10648:12:0;;;;10635:9;;:25;10632:58;;10679:9;:11;;;;;:9;:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;10632:58;10721:12;;;-1:-1:-1;;;10721:12:0;;;;10708:9;;:25;10705:141;;10769:12;;;-1:-1:-1;;;10769:12:0;;;;10753:13;:28;-1:-1:-1;;;10817:13:0;;;;10800:14;:30;10705:141;10930:4;10881:28;3013:18;;;;;;;;;;;10951:6;:18;;;;-1:-1:-1;10962:7:0;;-1:-1:-1;;;10962:7:0;;;;10961:8;10951:18;:57;;;;;10997:11;;10973:20;:35;;10951:57;:81;;;;;11024:8;11023:9;10951:81;:115;;;;-1:-1:-1;11048:18:0;;;-1:-1:-1;;;11048:18:0;;;;11036:9;;:30;10951:115;10947:678;;;11112:14;;;;;;;11097:12;:29;11093:67;;;11146:10;:14;;-1:-1:-1;;11146:14:0;;;11093:67;11183:10;;11196:1;11183:10;;;;;;:14;11175:50;;;;-1:-1:-1;;;11175:50:0;;11021:2:1;11175:50:0;;;11003:21:1;11060:2;11040:18;;;11033:30;11099:25;11079:18;;;11072:53;11142:18;;11175:50:0;10819:347:1;11175:50:0;11240:7;:14;;-1:-1:-1;;;;11240:14:0;-1:-1:-1;;;11240:14:0;;;11324:11;;11269:69;;11286:51;;11290:6;;11298:38;;11302:20;;11298:3;:38::i;:::-;11286:3;:51::i;:::-;11269:16;:69::i;:::-;11353:7;:15;;-1:-1:-1;;;;11353:15:0;;;11412:21;11452:22;;11448:78;;11494:32;11507:18;11494:12;:32::i;:::-;11549:10;:12;;;;;;;;:10;:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;11600;11576:14;;:37;;;;;;;;;;;;;;;;;;11078:547;10947:678;11637:11;11651:5;:38;;11675:14;;11651:38;;;11659:13;;11651:38;11637:52;;11712:1;11706:3;:7;:20;;;;;11718:8;11717:9;11706:20;:32;;;;-1:-1:-1;11731:7:0;;-1:-1:-1;;;11731:7:0;;;;11730:8;11706:32;:53;;;;;11743:5;:15;;;;11752:6;11743:15;11702:255;;;11776:12;11806:3;11791:12;11800:3;11791:6;:12;:::i;:::-;:18;;;;:::i;:::-;11776:33;-1:-1:-1;11828:8:0;;11824:122;;11856:42;11872:4;11886;11893;11856:15;:42::i;:::-;11917:13;11926:4;11917:13;;:::i;:::-;;;11824:122;11761:196;11702:255;11967:33;11983:4;11989:2;11993:6;11967:15;:33::i;:::-;9943:2065;;;;;9830:2178;;;:::o;4613:671::-;-1:-1:-1;;;;;4744:18:0;;4736:68;;;;-1:-1:-1;;;4736:68:0;;11901:2:1;4736:68:0;;;11883:21:1;11940:2;11920:18;;;11913:30;11979:34;11959:18;;;11952:62;-1:-1:-1;;;12030:18:1;;;12023:35;12075:19;;4736:68:0;11699:401:1;4736:68:0;-1:-1:-1;;;;;4823:16:0;;4815:64;;;;-1:-1:-1;;;4815:64:0;;12307:2:1;4815:64:0;;;12289:21:1;12346:2;12326:18;;;12319:30;12385:34;12365:18;;;12358:62;-1:-1:-1;;;12436:18:1;;;12429:33;12479:19;;4815:64:0;12105:399:1;4815:64:0;-1:-1:-1;;;;;4965:15:0;;4943:19;4965:15;;;;;;;;;;;4999:21;;;;4991:72;;;;-1:-1:-1;;;4991:72:0;;12711:2:1;4991:72:0;;;12693:21:1;12750:2;12730:18;;;12723:30;12789:34;12769:18;;;12762:62;-1:-1:-1;;;12840:18:1;;;12833:36;12886:19;;4991:72:0;12509:402:1;4991:72:0;-1:-1:-1;;;;;5099:15:0;;;:9;:15;;;;;;;;;;;5117:20;;;5099:38;;5159:13;;;;;;;;:23;;5131:6;;5099:9;5159:23;;5131:6;;5159:23;:::i;:::-;;;;;;;;5215:2;-1:-1:-1;;;;;5200:26:0;5209:4;-1:-1:-1;;;;;5200:26:0;;5219:6;5200:26;;;;1614:25:1;;1602:2;1587:18;;1468:177;5200:26:0;;;;;;;;5239:37;7147:125;8194:191;8287:6;;;-1:-1:-1;;;;;8304:17:0;;;-1:-1:-1;;;;;;8304:17:0;;;;;;;8337:40;;8287:6;;;8304:17;8287:6;;8337:40;;8268:16;;8337:40;8257:128;8194:191;:::o;12016:98::-;12073:7;12100:1;12098;:3;12097:9;;12105:1;12097:9;;;12103:1;12097:9;12090:16;12016:98;-1:-1:-1;;;12016:98:0:o;12123:447::-;12213:16;;;12227:1;12213:16;;;;;;;;12189:21;;12213:16;;;;;;;;;;-1:-1:-1;12213:16:0;12189:40;;12258:4;12240;12245:1;12240:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12240:23:0;;;-1:-1:-1;;;;;12240:23:0;;;;;8496:42;-1:-1:-1;;;;;12284:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12274:4;12279:1;12274:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;12274:24:0;;;-1:-1:-1;;;;;12274:24:0;;;;;12309:54;12326:4;8496:42;12351:11;12309:8;:54::i;:::-;12374:188;;-1:-1:-1;;;12374:188:0;;8496:42;;12374:58;;:188;;12447:11;;12473:1;;12489:4;;12516;;12536:15;;12374:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12178:392;12123:447;:::o;12578:102::-;12635:37;;-1:-1:-1;;;;;12643:11:0;12635:29;;:37;;;;;12665:6;;12635:37;;;;12665:6;12635:29;:37;;;;;;;;;;;;;;;;;;;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;1215:248::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;-1:-1:-1;;1383:23:1;;;1453:2;1438:18;;;1425:32;;-1:-1:-1;1215:248:1:o;1650:456::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;1851:9;1838:23;1870:31;1895:5;1870:31;:::i;:::-;1920:5;-1:-1:-1;1977:2:1;1962:18;;1949:32;1990:33;1949:32;1990:33;:::i;:::-;1650:456;;2042:7;;-1:-1:-1;;;2096:2:1;2081:18;;;;2068:32;;1650:456::o;2508:247::-;2567:6;2620:2;2608:9;2599:7;2595:23;2591:32;2588:52;;;2636:1;2633;2626:12;2588:52;2675:9;2662:23;2694:31;2719:5;2694:31;:::i;3026:388::-;3094:6;3102;3155:2;3143:9;3134:7;3130:23;3126:32;3123:52;;;3171:1;3168;3161:12;3123:52;3210:9;3197:23;3229:31;3254:5;3229:31;:::i;:::-;3279:5;-1:-1:-1;3336:2:1;3321:18;;3308:32;3349:33;3308:32;3349:33;:::i;:::-;3401:7;3391:17;;;3026:388;;;;;:::o;3419:380::-;3498:1;3494:12;;;;3541;;;3562:61;;3616:4;3608:6;3604:17;3594:27;;3562:61;3669:2;3661:6;3658:14;3638:18;3635:38;3632:161;;3715:10;3710:3;3706:20;3703:1;3696:31;3750:4;3747:1;3740:15;3778:4;3775:1;3768:15;3632:161;;3419:380;;;:::o;3804:356::-;4006:2;3988:21;;;4025:18;;;4018:30;4084:34;4079:2;4064:18;;4057:62;4151:2;4136:18;;3804:356::o;4805:306::-;4893:6;4901;4909;4962:2;4950:9;4941:7;4937:23;4933:32;4930:52;;;4978:1;4975;4968:12;4930:52;5007:9;5001:16;4991:26;;5057:2;5046:9;5042:18;5036:25;5026:35;;5101:2;5090:9;5086:18;5080:25;5070:35;;4805:306;;;;;:::o;5116:251::-;5186:6;5239:2;5227:9;5218:7;5214:23;5210:32;5207:52;;;5255:1;5252;5245:12;5207:52;5287:9;5281:16;5306:31;5331:5;5306:31;:::i;5681:127::-;5742:10;5737:3;5733:20;5730:1;5723:31;5773:4;5770:1;5763:15;5797:4;5794:1;5787:15;5813:125;5878:9;;;5899:10;;;5896:36;;;5912:18;;:::i;6349:184::-;6419:6;6472:2;6460:9;6451:7;6447:23;6443:32;6440:52;;;6488:1;6485;6478:12;6440:52;-1:-1:-1;6511:16:1;;6349:184;-1:-1:-1;6349:184:1:o;6817:277::-;6884:6;6937:2;6925:9;6916:7;6912:23;6908:32;6905:52;;;6953:1;6950;6943:12;6905:52;6985:9;6979:16;7038:5;7031:13;7024:21;7017:5;7014:32;7004:60;;7060:1;7057;7050:12;10613:201;10651:3;10679:10;10724:2;10717:5;10713:14;10751:2;10742:7;10739:15;10736:41;;10757:18;;:::i;:::-;10806:1;10793:15;;10613:201;-1:-1:-1;;;10613:201:1:o;11171:168::-;11244:9;;;11275;;11292:15;;;11286:22;;11272:37;11262:71;;11313:18;;:::i;11344:217::-;11384:1;11410;11400:132;;11454:10;11449:3;11445:20;11442:1;11435:31;11489:4;11486:1;11479:15;11517:4;11514:1;11507:15;11400:132;-1:-1:-1;11546:9:1;;11344:217::o;11566:128::-;11633:9;;;11654:11;;;11651:37;;;11668:18;;:::i;13048:127::-;13109:10;13104:3;13100:20;13097:1;13090:31;13140:4;13137:1;13130:15;13164:4;13161:1;13154:15;13180:980;13442:4;13490:3;13479:9;13475:19;13521:6;13510:9;13503:25;13547:2;13585:6;13580:2;13569:9;13565:18;13558:34;13628:3;13623:2;13612:9;13608:18;13601:31;13652:6;13687;13681:13;13718:6;13710;13703:22;13756:3;13745:9;13741:19;13734:26;;13795:2;13787:6;13783:15;13769:29;;13816:1;13826:195;13840:6;13837:1;13834:13;13826:195;;;13905:13;;-1:-1:-1;;;;;13901:39:1;13889:52;;13996:15;;;;13961:12;;;;13937:1;13855:9;13826:195;;;-1:-1:-1;;;;;;;14077:32:1;;;;14072:2;14057:18;;14050:60;-1:-1:-1;;;14141:3:1;14126:19;14119:35;14038:3;13180:980;-1:-1:-1;;;13180:980:1:o

Swarm Source

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