ETH Price: $2,457.03 (+2.58%)

Token

KravMaga (KRMAGA)
 

Overview

Max Total Supply

420,690,000,000 KRMAGA

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,675,108,100 KRMAGA

Value
$0.00
0x946bdb568626fe7fd3812a4108904eba14975ea0
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:
KRMAGA

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 5000000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
/*
Website: https://kravmaga.fun
Telegram: https://t.me/kravmagaerc
Twitter: https://x.com/KravMAGAtoken
Medium: https://medium.com/@krvmaga
*/
// File: utils/Context.sol


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: Kravmaga.sol


pragma solidity ^0.8.24;

/*
Website: https://kravmaga.fun
Telegram: https://t.me/kravmagaerc
Twitter: https://x.com/KravMAGAtoken
Medium: https://medium.com/@krvmaga
*/






contract KRMAGA 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 = 2900;
    uint256 private _reduceTaxAt = 31;
    uint256 private _preventSwapBefore = 30;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 420690000000 * 10**_decimals;
    string private constant _name = "KravMaga";
    string private constant _symbol = "KRMAGA";
    uint256 public _maxTxAmount = _totalSupply * 200 / 10000;
    uint256 public _maxWalletSize = _totalSupply * 200 / 10000;
    uint256 public _maxTaxSwap= _totalSupply * 200 / 10000;
    uint256 public _taxSwapThreshold= _totalSupply * 195 / 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());
        _approve(address(this), address(uniswapV2Router), type(uint).max);
        IERC20(uniswapV2Pair).approve(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 removeAllLimits() 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");
        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); }
    }

    function initLP() external onlyOwner {
        _initLP();
    }

    function _initLP() internal {
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
    }    
    
}

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":"initLP","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":"removeAllLimits","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"},{"stateMutability":"payable","type":"receive"}]

6080604052610b54600555601f600655601e6007555f600881905560095561271061002c6012600a610710565b61003b906461f313f880610725565b6100469060c8610725565b610050919061073c565b600a556127106012600a6100649190610710565b610073906461f313f880610725565b61007e9060c8610725565b610088919061073c565b600b5561271061009a6012600a610710565b6100a9906461f313f880610725565b6100b49060c8610725565b6100be919061073c565b600c556127106100d06012600a610710565b6100df906461f313f880610725565b6100ea9060c3610725565b6100f4919061073c565b600d555f6010555f6011555f61010e61049660201b60201c565b5f80546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061015f610496565b600480546001600160a01b0319166001600160a01b039290921691909117905561018b6012600a610710565b61019a906461f313f880610725565b305f9081526001602081905260408220929092556003906101c25f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003845282812080548616600190811790915560048054909316825290839020805490951617909355600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b81529151909363c45a01559383820193909291908290030181865afa158015610279573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029d919061075b565b6001600160a01b031663c9c6539630600e5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610320919061075b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561036a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038e919061075b565b600f80546001600160a01b0319166001600160a01b03928316179055600e546103bb913091165f196104ef565b600f54600e5460405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af115801561040d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104319190610781565b5061043a610496565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6104716012600a610710565b610480906461f313f880610725565b60405190815260200160405180910390a36107a0565b5f3033036104e9575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050503601516001600160a01b031691506104ec9050565b50335b90565b6001600160a01b0383166105565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166105b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156106665780850481111561064a5761064a610617565b600184161561065857908102905b60019390931c92800261062f565b935093915050565b5f8261067c5750600161070a565b8161068857505f61070a565b816001811461069e57600281146106a8576106c4565b600191505061070a565b60ff8411156106b9576106b9610617565b50506001821b61070a565b5060208310610133831016604e8410600b84101617156106e7575081810a61070a565b6106f35f19848461062b565b805f190482111561070657610706610617565b0290505b92915050565b5f61071e60ff84168361066e565b9392505050565b808202811582820484141761070a5761070a610617565b5f8261075657634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561076b575f80fd5b81516001600160a01b038116811461071e575f80fd5b5f60208284031215610791575f80fd5b8151801515811461071e575f80fd5b611ded806107ad5f395ff3fe60806040526004361061015a575f3560e01c80637d1db4a5116100bb57806395d89b4111610071578063bf474bed11610057578063bf474bed146103c4578063db05e5cb146103d9578063dd62ed3e146103ed575f80fd5b806395d89b4114610360578063a9059cbb146103a5575f80fd5b80638da5cb5b116100a15780638da5cb5b146103045780638f58eef0146103375780638f9a55c01461034b575f80fd5b80637d1db4a5146102db5780638a8c523c146102f0575f80fd5b806323b872dd116101105780636e34e91d116100f65780636e34e91d1461027257806370a0823114610286578063715018a6146102c7575f80fd5b806323b872dd14610238578063313ce56714610257575f80fd5b8063095ea7b311610140578063095ea7b3146101d25780630faee56f1461020157806318160ddd14610224575f80fd5b80630614117a1461016557806306fdde031461017b575f80fd5b3661016157005b5f80fd5b348015610170575f80fd5b5061017961043e565b005b348015610186575f80fd5b5060408051808201909152600881527f4b7261764d61676100000000000000000000000000000000000000000000000060208201525b6040516101c99190611959565b60405180910390f35b3480156101dd575f80fd5b506101f16101ec3660046119d0565b610486565b60405190151581526020016101c9565b34801561020c575f80fd5b50610216600c5481565b6040519081526020016101c9565b34801561022f575f80fd5b506102166104a3565b348015610243575f80fd5b506101f16102523660046119fa565b6104c4565b348015610262575f80fd5b50604051601281526020016101c9565b34801561027d575f80fd5b50610179610562565b348015610291575f80fd5b506102166102a0366004611a38565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b3480156102d2575f80fd5b506101796105fc565b3480156102e6575f80fd5b50610216600a5481565b3480156102fb575f80fd5b506101796106f4565b34801561030f575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c9565b348015610342575f80fd5b50610179610847565b348015610356575f80fd5b50610216600b5481565b34801561036b575f80fd5b5060408051808201909152600681527f4b524d414741000000000000000000000000000000000000000000000000000060208201526101bc565b3480156103b0575f80fd5b506101f16103bf3660046119d0565b6108b5565b3480156103cf575f80fd5b50610216600d5481565b3480156103e4575f80fd5b506101796108c8565b3480156103f8575f80fd5b50610216610407366004611a53565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b600454604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083905f818181858888f19350505050158015610482573d5f803e3d5ffd5b5050565b5f6104996104926109e0565b8484610a46565b5060015b92915050565b5f6104b06012600a611bd8565b6104bf906461f313f880611be6565b905090565b5f6104d0848484610bf8565b610558846104dc6109e0565b61055385604051806060016040528060288152602001611d906028913973ffffffffffffffffffffffffffffffffffffffff8a165f908152600260205260408120906105266109e0565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f20549190611383565b610a46565b5060019392505050565b61056a6109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146105f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6105fa6113d5565b565b6106046109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff908116911614610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e9565b5f805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6106fc6109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff90811691161461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e9565b600f5474010000000000000000000000000000000000000000900460ff1615610804576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105e9565b600f80547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff16760100010000000000000000000000000000000000000000179055565b60045473ffffffffffffffffffffffffffffffffffffffff166108686109e0565b73ffffffffffffffffffffffffffffffffffffffff1614610887575f80fd5b305f9081526001602052604090205480156108a5576108a5816114f5565b4780156104825761048281611706565b5f6104996108c16109e0565b8484610bf8565b6108d06109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff908116911614610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e9565b61095f6012600a611bd8565b61096e906461f313f880611be6565b600a90815561097f90601290611bd8565b61098e906461f313f880611be6565b600b557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109be6012600a611bd8565b6109cd906461f313f880611be6565b60405190815260200160405180910390a1565b5f303303610a40575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff169150610a439050565b50335b90565b73ffffffffffffffffffffffffffffffffffffffff8316610ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105e9565b73ffffffffffffffffffffffffffffffffffffffff8216610b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105e9565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105e9565b73ffffffffffffffffffffffffffffffffffffffff8216610d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105e9565b5f8111610dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016105e9565b5f805473ffffffffffffffffffffffffffffffffffffffff858116911614801590610e1257505f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611205576009545f03610e4457610e41612710610e3b6005548561174a90919063ffffffff16565b90611805565b90505b60095415610e6a57610e67612710610e3b6008548561174a90919063ffffffff16565b90505b600f5473ffffffffffffffffffffffffffffffffffffffff8581169116148015610eaf5750600e5473ffffffffffffffffffffffffffffffffffffffff848116911614155b8015610ee0575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b1561104057600a548210610f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105e9565b600b5482610f7f8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b610f899190611bfd565b10610ff0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105e9565b60075460095411801561100457505f600554115b1561100e575f6005555b611029612710610e3b6005548561174a90919063ffffffff16565b905060065460095411611040576009805460010190555b600f5473ffffffffffffffffffffffffffffffffffffffff8481169116148015611080575073ffffffffffffffffffffffffffffffffffffffff84163014155b156110a3576110a0612710610e3b6005548561174a90919063ffffffff16565b90505b305f90815260016020526040902054600f547501000000000000000000000000000000000000000000900460ff161580156110f85750600f5473ffffffffffffffffffffffffffffffffffffffff8581169116145b80156111205750600f54760100000000000000000000000000000000000000000000900460ff165b801561112d5750600d5481115b801561113c5750600754600954115b1561120357601154431115611150575f6010555b6003601054106111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016105e9565b6111d96111d4846111cf84600c54611846565b611846565b6114f5565b4780156111e9576111e947611706565b60108054905f6111f883611c10565b909155505043601155505b505b801561128a57305f90815260016020526040902054611224908261185a565b305f818152600160205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112819085815260200190565b60405180910390a35b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260409020546112b990836118d2565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600160205260409020556113166112eb83836118d2565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600160205260409020549061185a565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61136c85856118d2565b60405190815260200160405180910390a350505050565b5f81848411156113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e99190611959565b505f6113cc8486611c47565b95945050505050565b600e5473ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114208173ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b5f806114405f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156114cb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114f09190611c5a565b505050565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061156857611568611c85565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156115e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116099190611cb2565b8160018151811061161c5761161c611c85565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600e5461164f9130911684610a46565b600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906116ad9085905f90869030904290600401611ccd565b5f604051808303815f87803b1580156116c4575f80fd5b505af11580156116d6573d5f803e3d5ffd5b5050600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b60045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015610482573d5f803e3d5ffd5b5f825f0361175957505f61049d565b5f6117648385611be6565b9050826117718583611d57565b146117fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016105e9565b9392505050565b5f6117fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611913565b5f81831161185457826117fe565b50919050565b5f806118668385611bfd565b9050838110156117fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e9565b5f6117fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611383565b5f818361194d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e99190611959565b505f6113cc8486611d57565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146119cd575f80fd5b50565b5f80604083850312156119e1575f80fd5b82356119ec816119ac565b946020939093013593505050565b5f805f60608486031215611a0c575f80fd5b8335611a17816119ac565b92506020840135611a27816119ac565b929592945050506040919091013590565b5f60208284031215611a48575f80fd5b81356117fe816119ac565b5f8060408385031215611a64575f80fd5b8235611a6f816119ac565b91506020830135611a7f816119ac565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001815b6001841115611af257808504811115611ad657611ad6611a8a565b6001841615611ae457908102905b60019390931c928002611abb565b935093915050565b5f82611b085750600161049d565b81611b1457505f61049d565b8160018114611b2a5760028114611b3457611b50565b600191505061049d565b60ff841115611b4557611b45611a8a565b50506001821b61049d565b5060208310610133831016604e8410600b8410161715611b73575081810a61049d565b611b9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ab7565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611bd057611bd0611a8a565b029392505050565b5f6117fe60ff841683611afa565b808202811582820484141761049d5761049d611a8a565b8082018082111561049d5761049d611a8a565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c4057611c40611a8a565b5060010190565b8181038181111561049d5761049d611a8a565b5f805f60608486031215611c6c575f80fd5b5050815160208301516040909301519094929350919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611cc2575f80fd5b81516117fe816119ac565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611d2a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611cf6565b505073ffffffffffffffffffffffffffffffffffffffff9590951660608401525050608001529392505050565b5f82611d8a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220351eae42da2308167fcaebe9999a72cdce1ed41a711e27f7c73d04c3acaf632364736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061015a575f3560e01c80637d1db4a5116100bb57806395d89b4111610071578063bf474bed11610057578063bf474bed146103c4578063db05e5cb146103d9578063dd62ed3e146103ed575f80fd5b806395d89b4114610360578063a9059cbb146103a5575f80fd5b80638da5cb5b116100a15780638da5cb5b146103045780638f58eef0146103375780638f9a55c01461034b575f80fd5b80637d1db4a5146102db5780638a8c523c146102f0575f80fd5b806323b872dd116101105780636e34e91d116100f65780636e34e91d1461027257806370a0823114610286578063715018a6146102c7575f80fd5b806323b872dd14610238578063313ce56714610257575f80fd5b8063095ea7b311610140578063095ea7b3146101d25780630faee56f1461020157806318160ddd14610224575f80fd5b80630614117a1461016557806306fdde031461017b575f80fd5b3661016157005b5f80fd5b348015610170575f80fd5b5061017961043e565b005b348015610186575f80fd5b5060408051808201909152600881527f4b7261764d61676100000000000000000000000000000000000000000000000060208201525b6040516101c99190611959565b60405180910390f35b3480156101dd575f80fd5b506101f16101ec3660046119d0565b610486565b60405190151581526020016101c9565b34801561020c575f80fd5b50610216600c5481565b6040519081526020016101c9565b34801561022f575f80fd5b506102166104a3565b348015610243575f80fd5b506101f16102523660046119fa565b6104c4565b348015610262575f80fd5b50604051601281526020016101c9565b34801561027d575f80fd5b50610179610562565b348015610291575f80fd5b506102166102a0366004611a38565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b3480156102d2575f80fd5b506101796105fc565b3480156102e6575f80fd5b50610216600a5481565b3480156102fb575f80fd5b506101796106f4565b34801561030f575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c9565b348015610342575f80fd5b50610179610847565b348015610356575f80fd5b50610216600b5481565b34801561036b575f80fd5b5060408051808201909152600681527f4b524d414741000000000000000000000000000000000000000000000000000060208201526101bc565b3480156103b0575f80fd5b506101f16103bf3660046119d0565b6108b5565b3480156103cf575f80fd5b50610216600d5481565b3480156103e4575f80fd5b506101796108c8565b3480156103f8575f80fd5b50610216610407366004611a53565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260026020908152604080832093909416825291909152205490565b600454604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083905f818181858888f19350505050158015610482573d5f803e3d5ffd5b5050565b5f6104996104926109e0565b8484610a46565b5060015b92915050565b5f6104b06012600a611bd8565b6104bf906461f313f880611be6565b905090565b5f6104d0848484610bf8565b610558846104dc6109e0565b61055385604051806060016040528060288152602001611d906028913973ffffffffffffffffffffffffffffffffffffffff8a165f908152600260205260408120906105266109e0565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f20549190611383565b610a46565b5060019392505050565b61056a6109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff9081169116146105f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6105fa6113d5565b565b6106046109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff908116911614610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e9565b5f805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6106fc6109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff90811691161461077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e9565b600f5474010000000000000000000000000000000000000000900460ff1615610804576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016105e9565b600f80547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff16760100010000000000000000000000000000000000000000179055565b60045473ffffffffffffffffffffffffffffffffffffffff166108686109e0565b73ffffffffffffffffffffffffffffffffffffffff1614610887575f80fd5b305f9081526001602052604090205480156108a5576108a5816114f5565b4780156104825761048281611706565b5f6104996108c16109e0565b8484610bf8565b6108d06109e0565b5f5473ffffffffffffffffffffffffffffffffffffffff908116911614610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e9565b61095f6012600a611bd8565b61096e906461f313f880611be6565b600a90815561097f90601290611bd8565b61098e906461f313f880611be6565b600b557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6109be6012600a611bd8565b6109cd906461f313f880611be6565b60405190815260200160405180910390a1565b5f303303610a40575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff169150610a439050565b50335b90565b73ffffffffffffffffffffffffffffffffffffffff8316610ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105e9565b73ffffffffffffffffffffffffffffffffffffffff8216610b8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105e9565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105e9565b73ffffffffffffffffffffffffffffffffffffffff8216610d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105e9565b5f8111610dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016105e9565b5f805473ffffffffffffffffffffffffffffffffffffffff858116911614801590610e1257505f5473ffffffffffffffffffffffffffffffffffffffff848116911614155b15611205576009545f03610e4457610e41612710610e3b6005548561174a90919063ffffffff16565b90611805565b90505b60095415610e6a57610e67612710610e3b6008548561174a90919063ffffffff16565b90505b600f5473ffffffffffffffffffffffffffffffffffffffff8581169116148015610eaf5750600e5473ffffffffffffffffffffffffffffffffffffffff848116911614155b8015610ee0575073ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604090205460ff16155b1561104057600a548210610f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016105e9565b600b5482610f7f8573ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b610f899190611bfd565b10610ff0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016105e9565b60075460095411801561100457505f600554115b1561100e575f6005555b611029612710610e3b6005548561174a90919063ffffffff16565b905060065460095411611040576009805460010190555b600f5473ffffffffffffffffffffffffffffffffffffffff8481169116148015611080575073ffffffffffffffffffffffffffffffffffffffff84163014155b156110a3576110a0612710610e3b6005548561174a90919063ffffffff16565b90505b305f90815260016020526040902054600f547501000000000000000000000000000000000000000000900460ff161580156110f85750600f5473ffffffffffffffffffffffffffffffffffffffff8581169116145b80156111205750600f54760100000000000000000000000000000000000000000000900460ff165b801561112d5750600d5481115b801561113c5750600754600954115b1561120357601154431115611150575f6010555b6003601054106111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b2100000000000000000060448201526064016105e9565b6111d96111d4846111cf84600c54611846565b611846565b6114f5565b4780156111e9576111e947611706565b60108054905f6111f883611c10565b909155505043601155505b505b801561128a57305f90815260016020526040902054611224908261185a565b305f818152600160205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112819085815260200190565b60405180910390a35b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260409020546112b990836118d2565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600160205260409020556113166112eb83836118d2565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600160205260409020549061185a565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61136c85856118d2565b60405190815260200160405180910390a350505050565b5f81848411156113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e99190611959565b505f6113cc8486611c47565b95945050505050565b600e5473ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114208173ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b5f806114405f5473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156114cb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114f09190611c5a565b505050565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061156857611568611c85565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156115e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116099190611cb2565b8160018151811061161c5761161c611c85565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600e5461164f9130911684610a46565b600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906116ad9085905f90869030904290600401611ccd565b5f604051808303815f87803b1580156116c4575f80fd5b505af11580156116d6573d5f803e3d5ffd5b5050600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b60045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083905f818181858888f19350505050158015610482573d5f803e3d5ffd5b5f825f0361175957505f61049d565b5f6117648385611be6565b9050826117718583611d57565b146117fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016105e9565b9392505050565b5f6117fe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611913565b5f81831161185457826117fe565b50919050565b5f806118668385611bfd565b9050838110156117fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105e9565b5f6117fe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611383565b5f818361194d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e99190611959565b505f6113cc8486611d57565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146119cd575f80fd5b50565b5f80604083850312156119e1575f80fd5b82356119ec816119ac565b946020939093013593505050565b5f805f60608486031215611a0c575f80fd5b8335611a17816119ac565b92506020840135611a27816119ac565b929592945050506040919091013590565b5f60208284031215611a48575f80fd5b81356117fe816119ac565b5f8060408385031215611a64575f80fd5b8235611a6f816119ac565b91506020830135611a7f816119ac565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001815b6001841115611af257808504811115611ad657611ad6611a8a565b6001841615611ae457908102905b60019390931c928002611abb565b935093915050565b5f82611b085750600161049d565b81611b1457505f61049d565b8160018114611b2a5760028114611b3457611b50565b600191505061049d565b60ff841115611b4557611b45611a8a565b50506001821b61049d565b5060208310610133831016604e8410600b8410161715611b73575081810a61049d565b611b9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ab7565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611bd057611bd0611a8a565b029392505050565b5f6117fe60ff841683611afa565b808202811582820484141761049d5761049d611a8a565b8082018082111561049d5761049d611a8a565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c4057611c40611a8a565b5060010190565b8181038181111561049d5761049d611a8a565b5f805f60608486031215611c6c575f80fd5b5050815160208301516040909301519094929350919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611cc2575f80fd5b81516117fe816119ac565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611d2a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611cf6565b505073ffffffffffffffffffffffffffffffffffffffff9590951660608401525050608001529392505050565b5f82611d8a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220351eae42da2308167fcaebe9999a72cdce1ed41a711e27f7c73d04c3acaf632364736f6c634300081a0033

Deployed Bytecode Sourcemap

9389:8121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16781:134;;;;;;;;;;;;;:::i;:::-;;11528:83;;;;;;;;;;-1:-1:-1;11598:5:0;;;;;;;;;;;;;;;;;11528:83;;;;;;;:::i;:::-;;;;;;;;12366:161;;;;;;;;;;-1:-1:-1;12366:161:0;;;;;:::i;:::-;;:::i;:::-;;;1192:14:1;;1185:22;1167:41;;1155:2;1140:18;12366:161:0;1027:187:1;10252:54:0;;;;;;;;;;;;;;;;;;;1365:25:1;;;1353:2;1338:18;10252:54:0;1219:177:1;11805:100:0;;;;;;;;;;;;;:::i;12535:313::-;;;;;;;;;;-1:-1:-1;12535:313:0;;;;;:::i;:::-;;:::i;11714:83::-;;;;;;;;;;-1:-1:-1;11714:83:0;;9942:2;2056:36:1;;2044:2;2029:18;11714:83:0;1914:184:1;17248:65:0;;;;;;;;;;;;;:::i;11913:119::-;;;;;;;;;;-1:-1:-1;11913:119:0;;;;;:::i;:::-;12006:18;;11979:7;12006:18;;;:9;:18;;;;;;;11913:119;2557:148;;;;;;;;;;;;;:::i;10124:56::-;;;;;;;;;;;;;;;;16603:170;;;;;;;;;;;;;:::i;2343:79::-;;;;;;;;;;-1:-1:-1;2381:7:0;2408:6;2343:79;;2408:6;;;;2501:74:1;;2489:2;2474:18;2343:79:0;2355:226:1;16923:317:0;;;;;;;;;;;;;:::i;10187:58::-;;;;;;;;;;;;;;;;11619:87;;;;;;;;;;-1:-1:-1;11691:7:0;;;;;;;;;;;;;;;;;11619:87;;12040:167;;;;;;;;;;-1:-1:-1;12040:167:0;;;;;:::i;:::-;;:::i;10313:60::-;;;;;;;;;;;;;;;;16315:180;;;;;;;;;;;;;:::i;12215:143::-;;;;;;;;;;-1:-1:-1;12215:143:0;;;;;:::i;:::-;12323:18;;;;12296:7;12323:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12215:143;16781:134;16878:10;;16870:37;;16838:21;;16878:10;;;16870:37;;;;;16838:21;;16823:12;16870:37;16823:12;16870:37;16838:21;16878:10;16870:37;;;;;;;;;;;;;;;;;;;;;16812:103;16781:134::o;12366:161::-;12441:4;12458:39;12467:12;:10;:12::i;:::-;12481:7;12490:6;12458:8;:39::i;:::-;-1:-1:-1;12515:4:0;12366:161;;;;;:::o;11805:100::-;11858:7;10006:13;9942:2;10006;:13;:::i;:::-;9991:28;;:12;:28;:::i;:::-;11878:19;;11805:100;:::o;12535:313::-;12633:4;12650:36;12660:6;12668:9;12679:6;12650:9;:36::i;:::-;12697:121;12706:6;12714:12;:10;:12::i;:::-;12728:89;12766:6;12728:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;12748:12;:10;:12::i;:::-;12728:33;;;;;;;;;;;;;-1:-1:-1;12728:33:0;;;:89;:37;:89::i;:::-;12697:8;:121::i;:::-;-1:-1:-1;12836:4:0;12535:313;;;;;:::o;17248:65::-;2480:12;:10;:12::i;:::-;2470:6;;:22;:6;;;:22;;;2462:67;;;;;;;5095:2:1;2462:67:0;;;5077:21:1;;;5114:18;;;5107:30;5173:34;5153:18;;;5146:62;5225:18;;2462:67:0;;;;;;;;;17296:9:::1;:7;:9::i;:::-;17248:65::o:0;2557:148::-;2480:12;:10;:12::i;:::-;2470:6;;:22;:6;;;:22;;;2462:67;;;;;;;5095:2:1;2462:67:0;;;5077:21:1;;;5114:18;;;5107:30;5173:34;5153:18;;;5146:62;5225:18;;2462:67:0;4893:356:1;2462:67:0;2664:1:::1;2648:6:::0;;2627:40:::1;::::0;::::1;2648:6:::0;;::::1;::::0;2627:40:::1;::::0;2664:1;;2627:40:::1;2695:1;2678:19:::0;;;::::1;::::0;;2557:148::o;16603:170::-;2480:12;:10;:12::i;:::-;2470:6;;:22;:6;;;:22;;;2462:67;;;;;;;5095:2:1;2462:67:0;;;5077:21:1;;;5114:18;;;5107:30;5173:34;5153:18;;;5146:62;5225:18;;2462:67:0;4893:356:1;2462:67:0;16669:11:::1;::::0;;;::::1;;;16668:12;16660:47;;;::::0;::::1;::::0;;5456:2:1;16660:47:0::1;::::0;::::1;5438:21:1::0;5495:2;5475:18;;;5468:30;5534:25;5514:18;;;5507:53;5577:18;;16660:47:0::1;5254:347:1::0;16660:47:0::1;16718:11;:18:::0;;16747;;;;;;16603:170::o;16923:317::-;16994:10;;;;16980:12;:10;:12::i;:::-;:24;;;16972:33;;;;;;17055:4;17016:20;12006:18;;;:9;:18;;;;;;17075:14;;17072:54;;17093:30;17110:12;17093:16;:30::i;:::-;17155:21;17190:12;;17187:46;;17206:24;17219:10;17206:12;:24::i;12040:167::-;12118:4;12135:42;12145:12;:10;:12::i;:::-;12159:9;12170:6;12135:9;:42::i;16315:180::-;2480:12;:10;:12::i;:::-;2470:6;;:22;:6;;;:22;;;2462:67;;;;;;;5095:2:1;2462:67:0;;;5077:21:1;;;5114:18;;;5107:30;5173:34;5153:18;;;5146:62;5225:18;;2462:67:0;4893:356:1;2462:67:0;10006:13:::1;9942:2;10006;:13;:::i;:::-;9991:28;::::0;:12:::1;:28;:::i;:::-;16372:12;:27:::0;;;10006:13:::1;::::0;9942:2:::1;::::0;10006:13:::1;:::i;:::-;9991:28;::::0;:12:::1;:28;:::i;:::-;16410:14;:29:::0;16455:32:::1;10006:13;9942:2;10006;:13;:::i;:::-;9991:28;::::0;:12:::1;:28;:::i;:::-;16455:32;::::0;1365:25:1;;;1353:2;1338:18;16455:32:0::1;;;;;;;16315:180::o:0;435:427::-;480:14;533:4;511:10;:27;507:348;;555:18;576:8;;555:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;615:8:0;693:17;687:24;734:42;683:94;;-1:-1:-1;507:348:0;;-1:-1:-1;507:348:0;;-1:-1:-1;833:10:0;507:348;435:427;:::o;12856:335::-;12949:19;;;12941:68;;;;;;;5808:2:1;12941:68:0;;;5790:21:1;5847:2;5827:18;;;5820:30;5886:34;5866:18;;;5859:62;5957:6;5937:18;;;5930:34;5981:19;;12941:68:0;5606:400:1;12941:68:0;13028:21;;;13020:68;;;;;;;6213:2:1;13020:68:0;;;6195:21:1;6252:2;6232:18;;;6225:30;6291:34;6271:18;;;6264:62;6362:4;6342:18;;;6335:32;6384:19;;13020:68:0;6011:398:1;13020:68:0;13099:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13151:32;;1365:25:1;;;13151:32:0;;1338:18:1;13151:32:0;;;;;;;12856:335;;;:::o;13199:2507::-;13287:18;;;13279:68;;;;;;;6616:2:1;13279:68:0;;;6598:21:1;6655:2;6635:18;;;6628:30;6694:34;6674:18;;;6667:62;6765:7;6745:18;;;6738:35;6790:19;;13279:68:0;6414:401:1;13279:68:0;13366:16;;;13358:64;;;;;;;7022:2:1;13358:64:0;;;7004:21:1;7061:2;7041:18;;;7034:30;7100:34;7080:18;;;7073:62;7171:5;7151:18;;;7144:33;7194:19;;13358:64:0;6820:399:1;13358:64:0;13450:1;13441:6;:10;13433:64;;;;;;;7426:2:1;13433:64:0;;;7408:21:1;7465:2;7445:18;;;7438:30;7504:34;7484:18;;;7477:62;7575:11;7555:18;;;7548:39;7604:19;;13433:64:0;7224:405:1;13433:64:0;13508:17;2408:6;;;13540:15;;;2408:6;;13540:15;;;;:32;;-1:-1:-1;2381:7:0;2408:6;;13559:13;;;2408:6;;13559:13;;13540:32;13536:1806;;;13606:9;;13617:1;13606:12;13603:94;;13650:31;13675:5;13650:20;13661:8;;13650:6;:10;;:20;;;;:::i;:::-;:24;;:31::i;:::-;13638:43;;13603:94;13716:9;;:11;13713:97;;13759:35;13788:5;13759:24;13770:12;;13759:6;:10;;:24;;;;:::i;:35::-;13747:47;;13713:97;13838:13;;;13830:21;;;13838:13;;13830:21;:55;;;;-1:-1:-1;13869:15:0;;;13855:30;;;13869:15;;13855:30;;13830:55;:83;;;;-1:-1:-1;13891:22:0;;;;;;;:18;:22;;;;;;;;13889:24;13830:83;13826:627;;;13952:12;;13943:6;:21;13935:59;;;;;;;7836:2:1;13935:59:0;;;7818:21:1;7875:2;7855:18;;;7848:30;7914:27;7894:18;;;7887:55;7959:18;;13935:59:0;7634:349:1;13935:59:0;14046:14;;14037:6;14021:13;14031:2;12006:18;;11979:7;12006:18;;;:9;:18;;;;;;;11913:119;14021:13;:22;;;;:::i;:::-;:39;14013:78;;;;;;;8320:2:1;14013:78:0;;;8302:21:1;8359:2;8339:18;;;8332:30;8398:28;8378:18;;;8371:56;8444:18;;14013:78:0;8118:350:1;14013:78:0;14125:18;;14113:9;;:30;:46;;;;;14158:1;14147:8;;:12;14113:46;14110:82;;;14186:1;14175:8;:12;14110:82;14222:31;14247:5;14222:20;14233:8;;14222:6;:10;;:20;;;;:::i;:31::-;14210:43;;14289:12;;14276:9;;:25;14272:148;;14365:9;:11;;;;;;14272:148;14478:13;;;14472:19;;;14478:13;;14472:19;:44;;;;-1:-1:-1;14495:21:0;;;14511:4;14495:21;;14472:44;14469:97;;;14532:31;14557:5;14532:20;14543:8;;14532:6;:10;;:20;;;;:::i;:31::-;14520:43;;14469:97;14631:4;14582:28;12006:18;;;:9;:18;;;;;;14657:6;;;;;;;14656:7;:30;;;;-1:-1:-1;14673:13:0;;;14667:19;;;14673:13;;14667:19;14656:30;:45;;;;-1:-1:-1;14690:11:0;;;;;;;14656:45;:89;;;;;14728:17;;14705:20;:40;14656:89;:123;;;;;14761:18;;14749:9;;:30;14656:123;14652:679;;;14819:13;;14804:12;:28;14800:90;;;14869:1;14857:9;:13;14800:90;14928:1;14916:9;;:13;14908:49;;;;;;;8675:2:1;14908:49:0;;;8657:21:1;8714:2;8694:18;;;8687:30;8753:25;8733:18;;;8726:53;8796:18;;14908:49:0;8473:347:1;14908:49:0;14976:69;14993:51;14997:6;15005:38;15009:20;15031:11;;15005:3;:38::i;:::-;14993:3;:51::i;:::-;14976:16;:69::i;:::-;15093:21;15137:22;;15133:106;;15184:35;15197:21;15184:12;:35::i;:::-;15257:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;15303:12:0;15287:13;:28;-1:-1:-1;14652:679:0;13574:1768;13536:1806;15357:11;;15354:169;;15429:4;15411:24;;;;:9;:24;;;;;;:39;;15440:9;15411:28;:39::i;:::-;15403:4;15385:24;;;;:9;:24;;;;;;;:65;;;;15470:39;;15385:24;15470:39;;;;;;;15499:9;1365:25:1;;1353:2;1338:18;;1219:177;15470:39:0;;;;;;;;15354:169;15549:15;;;;;;;:9;:15;;;;;;:27;;15569:6;15549:19;:27::i;:::-;15533:15;;;;;;;:9;:15;;;;;:43;15601:40;15619:21;:6;15630:9;15619:10;:21::i;:::-;15601:13;;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;15587:13;;;;;;;;:9;:13;;;;;:54;;;;15657:41;;;15676:21;:6;15687:9;15676:10;:21::i;:::-;15657:41;;1365:25:1;;;1353:2;1338:18;15657:41:0;;;;;;;13268:2438;13199:2507;;;:::o;3273:190::-;3359:7;3395:12;3387:6;;;;3379:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3419:9:0;3431:5;3435:1;3431;:5;:::i;:::-;3419:17;3273:190;-1:-1:-1;;;;;3273:190:0:o;17321:176::-;17360:15;;;;:31;17399:21;17430:4;17436:24;17430:4;12006:18;;11979:7;12006:18;;;:9;:18;;;;;;;11913:119;17436:24;17461:1;17463;17465:7;2381;2408:6;;;;2343:79;17465:7;17360:129;;;;;;;;;;9491:42:1;9479:55;;;17360:129:0;;;9461:74:1;9551:18;;;9544:34;;;;9594:18;;;9587:34;;;;9637:18;;;9630:34;9701:55;;;9680:19;;;9673:84;17473:15:0;9773:19:1;;;9766:35;9433:19;;17360:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17321:176::o;15824:483::-;10713:6;:13;;;;;;;;15926:16:::1;::::0;;15940:1:::1;15926:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15926:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15926:16:0::1;15902:40;;15971:4;15953;15958:1;15953:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15997:15:::1;::::0;:22:::1;::::0;;;;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15953:7;;15997:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15987:4;15992:1;15987:7;;;;;;;;:::i;:::-;:32;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;16062:15:::1;::::0;16030:62:::1;::::0;16047:4:::1;::::0;16062:15:::1;16080:11:::0;16030:8:::1;:62::i;:::-;16103:15;::::0;:196:::1;::::0;;;;:15:::1;::::0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;16184:11;;16103:15:::1;::::0;16226:4;;16253::::1;::::0;16273:15:::1;::::0;16103:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10749:6:0;:14;;;;;;-1:-1:-1;;;;15824:483:0:o;16503:92::-;16560:10;;:27;;:10;;;;;:27;;;;;16580:6;;16560:10;:27;:10;:27;16580:6;16560:10;:27;;;;;;;;;;;;;;;;;;;3471:246;3529:7;3553:1;3558;3553:6;3549:47;;-1:-1:-1;3583:1:0;3576:8;;3549:47;3606:9;3618:5;3622:1;3618;:5;:::i;:::-;3606:17;-1:-1:-1;3651:1:0;3642:5;3646:1;3606:17;3642:5;:::i;:::-;:10;3634:56;;;;;;;12398:2:1;3634:56:0;;;12380:21:1;12437:2;12417:18;;;12410:30;12476:34;12456:18;;;12449:62;12547:3;12527:18;;;12520:31;12568:19;;3634:56:0;12196:397:1;3634:56:0;3708:1;3471:246;-1:-1:-1;;;3471:246:0:o;3725:132::-;3783:7;3810:39;3814:1;3817;3810:39;;;;;;;;;;;;;;;;;:3;:39::i;15716:100::-;15773:7;15802:1;15800;:3;15799:9;;15807:1;15799:9;;;-1:-1:-1;15805:1:0;15716:100;-1:-1:-1;15716:100:0:o;2942:179::-;3000:7;;3032:5;3036:1;3032;:5;:::i;:::-;3020:17;;3061:1;3056;:6;;3048:46;;;;;;;12800:2:1;3048:46:0;;;12782:21:1;12839:2;12819:18;;;12812:30;12878:29;12858:18;;;12851:57;12925:18;;3048:46:0;12598:351:1;3129:136:0;3187:7;3214:43;3218:1;3221;3214:43;;;;;;;;;;;;;;;;;:3;:43::i;3865:189::-;3951:7;3986:12;3979:5;3971:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4010:9:0;4022:5;4026:1;4022;:5;:::i;14:477:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;482:2;412:66;407:2;399:6;395:15;391:88;380:9;376:104;372:113;364:121;;;14:477;;;;:::o;496:154::-;582:42;575:5;571:54;564:5;561:65;551:93;;640:1;637;630:12;551:93;496:154;:::o;655:367::-;723:6;731;784:2;772:9;763:7;759:23;755:32;752:52;;;800:1;797;790:12;752:52;839:9;826:23;858:31;883:5;858:31;:::i;:::-;908:5;986:2;971:18;;;;958:32;;-1:-1:-1;;;655:367:1:o;1401:508::-;1478:6;1486;1494;1547:2;1535:9;1526:7;1522:23;1518:32;1515:52;;;1563:1;1560;1553:12;1515:52;1602:9;1589:23;1621:31;1646:5;1621:31;:::i;:::-;1671:5;-1:-1:-1;1728:2:1;1713:18;;1700:32;1741:33;1700:32;1741:33;:::i;:::-;1401:508;;1793:7;;-1:-1:-1;;;1873:2:1;1858:18;;;;1845:32;;1401:508::o;2103:247::-;2162:6;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;2586:388::-;2654:6;2662;2715:2;2703:9;2694:7;2690:23;2686:32;2683:52;;;2731:1;2728;2721:12;2683:52;2770:9;2757:23;2789:31;2814:5;2789:31;:::i;:::-;2839:5;-1:-1:-1;2896:2:1;2881:18;;2868:32;2909:33;2868:32;2909:33;:::i;:::-;2961:7;2951:17;;;2586:388;;;;;:::o;2979:184::-;3031:77;3028:1;3021:88;3128:4;3125:1;3118:15;3152:4;3149:1;3142:15;3168:375;3256:1;3274:5;3288:249;3309:1;3299:8;3296:15;3288:249;;;3359:4;3354:3;3350:14;3344:4;3341:24;3338:50;;;3368:18;;:::i;:::-;3418:1;3408:8;3404:16;3401:49;;;3432:16;;;;3401:49;3515:1;3511:16;;;;;3471:15;;3288:249;;;3168:375;;;;;;:::o;3548:1022::-;3597:5;3627:8;3617:80;;-1:-1:-1;3668:1:1;3682:5;;3617:80;3716:4;3706:76;;-1:-1:-1;3753:1:1;3767:5;;3706:76;3798:4;3816:1;3811:59;;;;3884:1;3879:174;;;;3791:262;;3811:59;3841:1;3832:10;;3855:5;;;3879:174;3916:3;3906:8;3903:17;3900:43;;;3923:18;;:::i;:::-;-1:-1:-1;;3979:1:1;3965:16;;4038:5;;3791:262;;4137:2;4127:8;4124:16;4118:3;4112:4;4109:13;4105:36;4099:2;4089:8;4086:16;4081:2;4075:4;4072:12;4068:35;4065:77;4062:203;;;-1:-1:-1;4174:19:1;;;4250:5;;4062:203;4297:102;4332:66;4322:8;4316:4;4297:102;:::i;:::-;4495:6;4427:66;4423:79;4414:7;4411:92;4408:118;;;4506:18;;:::i;:::-;4544:20;;3548:1022;-1:-1:-1;;;3548:1022:1:o;4575:140::-;4633:5;4662:47;4703:4;4693:8;4689:19;4683:4;4662:47;:::i;4720:168::-;4793:9;;;4824;;4841:15;;;4835:22;;4821:37;4811:71;;4862:18;;:::i;7988:125::-;8053:9;;;8074:10;;;8071:36;;;8087:18;;:::i;8825:195::-;8864:3;8895:66;8888:5;8885:77;8882:103;;8965:18;;:::i;:::-;-1:-1:-1;9012:1:1;9001:13;;8825:195::o;9025:128::-;9092:9;;;9113:11;;;9110:37;;;9127:18;;:::i;9812:456::-;9900:6;9908;9916;9969:2;9957:9;9948:7;9944:23;9940:32;9937:52;;;9985:1;9982;9975:12;9937:52;-1:-1:-1;;10030:16:1;;10136:2;10121:18;;10115:25;10232:2;10217:18;;;10211:25;10030:16;;10115:25;;-1:-1:-1;10211:25:1;9812:456;-1:-1:-1;9812:456:1:o;10462:184::-;10514:77;10511:1;10504:88;10611:4;10608:1;10601:15;10635:4;10632:1;10625:15;10651:251;10721:6;10774:2;10762:9;10753:7;10749:23;10745:32;10742:52;;;10790:1;10787;10780:12;10742:52;10822:9;10816:16;10841:31;10866:5;10841:31;:::i;10907:1005::-;11169:4;11217:3;11206:9;11202:19;11248:6;11237:9;11230:25;11291:6;11286:2;11275:9;11271:18;11264:34;11334:3;11329:2;11318:9;11314:18;11307:31;11358:6;11393;11387:13;11424:6;11416;11409:22;11462:3;11451:9;11447:19;11440:26;;11501:2;11493:6;11489:15;11475:29;;11522:1;11532:218;11546:6;11543:1;11540:13;11532:218;;;11611:13;;11626:42;11607:62;11595:75;;11699:2;11725:15;;;;11690:12;;;;11568:1;11561:9;11532:218;;;-1:-1:-1;;11818:42:1;11806:55;;;;11801:2;11786:18;;11779:83;-1:-1:-1;;11893:3:1;11878:19;11871:35;11767:3;10907:1005;-1:-1:-1;;;10907:1005:1:o;11917:274::-;11957:1;11983;11973:189;;12018:77;12015:1;12008:88;12119:4;12116:1;12109:15;12147:4;12144:1;12137:15;11973:189;-1:-1:-1;12176:9:1;;11917:274::o

Swarm Source

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