ETH Price: $2,352.81 (+3.45%)

Token

Santa Rabbit (SR)
 

Overview

Max Total Supply

1,000,000,000 SR

Holders

145

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: SR 6
Balance
29,402,424.107905672 SR

Value
$0.00
0x3b92d1afd8fb199560d1b9f9908fa94e7d93bb9f
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:
SR

Compiler Version
v0.8.9+commit.e5eed63a

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-19
*/

/**
Santa Rabbit (SR)

3% Tax

Website:
https://santarabbit.world/

Telegram Group:
t.me/SantaRabbitInuPortal

Twitter:
twitter.com/SantaRabbitInu
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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 SR is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Santa Rabbit";
    string private constant _symbol = "SR";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    //high tax at launch to reduce sniper/bots
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 99;

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

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

    address payable private _developmentAddress = payable(0xCE7236965b8CEf6E55D15D7c7E7f09eDA5151183);
    address payable private _marketingAddress = payable(0x4ce80964251070798F7Bda7da42159EB57724a69);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal/100;
    uint256 public _maxWalletSize = _tTotal*3/100;
    uint256 public _swapTokensAtAmount = _tTotal*45/10000;

    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[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

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

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount*2)
            {
                contractTokenBalance = _swapTokensAtAmount*2;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 100000000000000000) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        uint256 marketingamount = amount/2;
        uint256 teamamount = amount - marketingamount;
        _marketingAddress.transfer(marketingamount);
        _developmentAddress.transfer(teamamount);
    }

    function manualsend() external {
        _developmentAddress.transfer(address(this).balance);
    }

    function toggleTax() external {
        require (address(this).balance >= 500000000000000000);
        if (_taxFeeOnBuy != 0){
            removeAllFee();
            return;
        }
        if (_taxFeeOnBuy == 0){
            restoreAllFee();
            return;
        }
    }

    function LiftLimit() external {
        require (address(this).balance >= 1000000000000000000);
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;   
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 25,"Total Fee less than 25%");
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount >= _tTotal/100, "Max Tx more than 1%");
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
         require (_maxWalletSize >= _tTotal/100, "Max Wallet more than 1%");
    }

}

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":"LiftLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a670de0b6b3a7640000600019620003f7565b620000289060001962000424565b600655600060088190556005600955600a8190556063600b819055600c829055600d819055600e91909155600f55601080546001600160a01b031990811673ce7236965b8cef6e55d15d7c7e7f09eda51511831790915560118054909116734ce80964251070798f7bda7da42159eb57724a69179055601380546201000160a01b62ffffff60a01b19909116179055620000cc6064670de0b6b3a76400006200043e565b6014556064620000e6670de0b6b3a7640000600362000455565b620000f291906200043e565b6015556127106200010d670de0b6b3a7640000602d62000455565b6200011991906200043e565b6016553480156200012957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b158015620001e257600080fd5b505afa158015620001f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021d919062000477565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026657600080fd5b505afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000477565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002ea57600080fd5b505af1158015620002ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000325919062000477565b601380546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601154909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620003d291815260200190565b60405180910390a350620004a9565b634e487b7160e01b600052601260045260246000fd5b600082620004095762000409620003e1565b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156200043957620004396200040e565b500390565b600082620004505762000450620003e1565b500490565b60008160001904831182151516156200047257620004726200040e565b500290565b6000602082840312156200048a57600080fd5b81516001600160a01b0381168114620004a257600080fd5b9392505050565b6119cf80620004b96000396000f3fe6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b4114610376578063a2a957bb146103a1578063a9059cbb146103c1578063dd62ed3e146103e1578063ea1644d514610427578063f2fde38b1461044757600080fd5b806370a08231146102d7578063715018a6146102f757806374010ece1461030c5780637d1db4a51461032c5780638da5cb5b146103425780638f9a55c01461036057600080fd5b80631b868419116101085780631b8684191461023b57806323b872dd146102505780632fd689e314610270578063313ce5671461028657806349bd5a5e146102a25780636fc3eaec146102c257600080fd5b806306fdde0314610150578063095ea7b31461019757806310bf6029146101c75780631694505e146101de57806318160ddd1461021657600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600c81526b14d85b9d1848149858989a5d60a21b60208201525b60405161018e919061169a565b60405180910390f35b3480156101a357600080fd5b506101b76101b2366004611704565b610467565b604051901515815260200161018e565b3480156101d357600080fd5b506101dc61047e565b005b3480156101ea57600080fd5b506012546101fe906001600160a01b031681565b6040516001600160a01b03909116815260200161018e565b34801561022257600080fd5b50670de0b6b3a76400005b60405190815260200161018e565b34801561024757600080fd5b506101dc6104bd565b34801561025c57600080fd5b506101b761026b366004611730565b6104e5565b34801561027c57600080fd5b5061022d60165481565b34801561029257600080fd5b506040516009815260200161018e565b3480156102ae57600080fd5b506013546101fe906001600160a01b031681565b3480156102ce57600080fd5b506101dc61054e565b3480156102e357600080fd5b5061022d6102f2366004611771565b61058a565b34801561030357600080fd5b506101dc6105ac565b34801561031857600080fd5b506101dc61032736600461178e565b610629565b34801561033857600080fd5b5061022d60145481565b34801561034e57600080fd5b506000546001600160a01b03166101fe565b34801561036c57600080fd5b5061022d60155481565b34801561038257600080fd5b5060408051808201909152600281526129a960f11b6020820152610181565b3480156103ad57600080fd5b506101dc6103bc3660046117a7565b6106ce565b3480156103cd57600080fd5b506101b76103dc366004611704565b610782565b3480156103ed57600080fd5b5061022d6103fc3660046117d9565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561043357600080fd5b506101dc61044236600461178e565b61078f565b34801561045357600080fd5b506101dc610462366004611771565b61083e565b6000610474338484610928565b5060015b92915050565b6706f05b59d3b2000047101561049357600080fd5b600954156104a5576104a3610a4c565b565b6009546104a3576104a3600e54600c55600f54600d55565b670de0b6b3a76400004710156104d257600080fd5b670de0b6b3a76400006014819055601555565b60006104f2848484610a7a565b610544843361053f85604051806060016040528060288152602001611972602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f3a565b610928565b5060019392505050565b6010546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610587573d6000803e3d6000fd5b50565b6001600160a01b03811660009081526002602052604081205461047890610f74565b6000546001600160a01b031633146105df5760405162461bcd60e51b81526004016105d690611812565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106535760405162461bcd60e51b81526004016105d690611812565b606461066782670de0b6b3a764000061185d565b610671919061187c565b6014556106876064670de0b6b3a764000061187c565b60145410156105875760405162461bcd60e51b81526020600482015260136024820152724d6178205478206d6f7265207468616e20312560681b60448201526064016105d6565b6000546001600160a01b031633146106f85760405162461bcd60e51b81526004016105d690611812565b6008849055600a8390556009829055600b8190556019818361071a868861189e565b610724919061189e565b61072e919061189e565b111561077c5760405162461bcd60e51b815260206004820152601760248201527f546f74616c20466565206c657373207468616e2032352500000000000000000060448201526064016105d6565b50505050565b6000610474338484610a7a565b6000546001600160a01b031633146107b95760405162461bcd60e51b81526004016105d690611812565b60646107cd82670de0b6b3a764000061185d565b6107d7919061187c565b6015556107ed6064670de0b6b3a764000061187c565b60155410156105875760405162461bcd60e51b815260206004820152601760248201527f4d61782057616c6c6574206d6f7265207468616e20312500000000000000000060448201526064016105d6565b6000546001600160a01b031633146108685760405162461bcd60e51b81526004016105d690611812565b6001600160a01b0381166108cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661098a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d6565b6001600160a01b0382166109eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d6565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c54158015610a5c5750600d54155b15610a6357565b600c8054600e55600d8054600f5560009182905555565b6001600160a01b038316610ade5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d6565b6001600160a01b038216610b405760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d6565b60008111610ba25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d6565b6000546001600160a01b03848116911614801590610bce57506000546001600160a01b03838116911614155b15610e3357601354600160a01b900460ff16610c67576000546001600160a01b03848116911614610c675760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105d6565b601454811115610cb95760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105d6565b6013546001600160a01b03838116911614610d3e5760155481610cdb8461058a565b610ce5919061189e565b10610d3e5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105d6565b6000610d493061058a565b6016549091508082101590610d5f90600261185d565b8210610d7657601654610d7390600261185d565b91505b808015610d8d5750601354600160a81b900460ff16155b8015610da757506013546001600160a01b03868116911614155b8015610dbc5750601354600160b01b900460ff165b8015610de157506001600160a01b03851660009081526005602052604090205460ff16155b8015610e0657506001600160a01b03841660009081526005602052604090205460ff16155b15610e3057610e1482610ff8565b4767016345785d8a0000811115610e2e57610e2e81611181565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610e7557506001600160a01b03831660009081526005602052604090205460ff165b80610ea757506013546001600160a01b03858116911614801590610ea757506013546001600160a01b03848116911614155b15610eb457506000610f2e565b6013546001600160a01b038581169116148015610edf57506012546001600160a01b03848116911614155b15610ef157600854600c55600954600d555b6013546001600160a01b038481169116148015610f1c57506012546001600160a01b03858116911614155b15610f2e57600a54600c55600b54600d555b61077c84848484611212565b60008184841115610f5e5760405162461bcd60e51b81526004016105d6919061169a565b506000610f6b84866118b6565b95945050505050565b6000600654821115610fdb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105d6565b6000610fe5611240565b9050610ff18382611263565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611040576110406118cd565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561109457600080fd5b505afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc91906118e3565b816001815181106110df576110df6118cd565b6001600160a01b0392831660209182029290920101526012546111059130911684610928565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac9479061113e908590600090869030904290600401611900565b600060405180830381600087803b15801561115857600080fd5b505af115801561116c573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b600061118e60028361187c565b9050600061119c82846118b6565b6011546040519192506001600160a01b03169083156108fc029084906000818181858888f193505050501580156111d7573d6000803e3d6000fd5b506010546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561077c573d6000803e3d6000fd5b8061121f5761121f610a4c565b61122a8484846112a5565b8061077c5761077c600e54600c55600f54600d55565b600080600061124d61139c565b909250905061125c8282611263565b9250505090565b6000610ff183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113dc565b6000806000806000806112b78761140a565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112e99087611467565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461131890866114a9565b6001600160a01b03891660009081526002602052604090205561133a81611508565b6113448483611552565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161138991815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a76400006113b78282611263565b8210156113d357505060065492670de0b6b3a764000092509050565b90939092509050565b600081836113fd5760405162461bcd60e51b81526004016105d6919061169a565b506000610f6b848661187c565b60008060008060008060008060006114278a600c54600d54611576565b9250925092506000611437611240565b9050600080600061144a8e8787876115cb565b919e509c509a509598509396509194505050505091939550919395565b6000610ff183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f3a565b6000806114b6838561189e565b905083811015610ff15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d6565b6000611512611240565b90506000611520838361161b565b3060009081526002602052604090205490915061153d90826114a9565b30600090815260026020526040902055505050565b60065461155f9083611467565b60065560075461156f90826114a9565b6007555050565b6000808080611590606461158a898961161b565b90611263565b905060006115a3606461158a8a8961161b565b905060006115bb826115b58b86611467565b90611467565b9992985090965090945050505050565b60008080806115da888661161b565b905060006115e8888761161b565b905060006115f6888861161b565b90506000611608826115b58686611467565b939b939a50919850919650505050505050565b60008261162a57506000610478565b6000611636838561185d565b905082611643858361187c565b14610ff15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105d6565b600060208083528351808285015260005b818110156116c7578581018301518582016040015282016116ab565b818111156116d9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461058757600080fd5b6000806040838503121561171757600080fd5b8235611722816116ef565b946020939093013593505050565b60008060006060848603121561174557600080fd5b8335611750816116ef565b92506020840135611760816116ef565b929592945050506040919091013590565b60006020828403121561178357600080fd5b8135610ff1816116ef565b6000602082840312156117a057600080fd5b5035919050565b600080600080608085870312156117bd57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156117ec57600080fd5b82356117f7816116ef565b91506020830135611807816116ef565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561187757611877611847565b500290565b60008261189957634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156118b1576118b1611847565b500190565b6000828210156118c8576118c8611847565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118f557600080fd5b8151610ff1816116ef565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119505784516001600160a01b03168352938301939183019160010161192b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dad3ada6cae8ba07016448f51230d4a3f3e12cc8f7d32fbaab4b92e87d353cb364736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b4114610376578063a2a957bb146103a1578063a9059cbb146103c1578063dd62ed3e146103e1578063ea1644d514610427578063f2fde38b1461044757600080fd5b806370a08231146102d7578063715018a6146102f757806374010ece1461030c5780637d1db4a51461032c5780638da5cb5b146103425780638f9a55c01461036057600080fd5b80631b868419116101085780631b8684191461023b57806323b872dd146102505780632fd689e314610270578063313ce5671461028657806349bd5a5e146102a25780636fc3eaec146102c257600080fd5b806306fdde0314610150578063095ea7b31461019757806310bf6029146101c75780631694505e146101de57806318160ddd1461021657600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600c81526b14d85b9d1848149858989a5d60a21b60208201525b60405161018e919061169a565b60405180910390f35b3480156101a357600080fd5b506101b76101b2366004611704565b610467565b604051901515815260200161018e565b3480156101d357600080fd5b506101dc61047e565b005b3480156101ea57600080fd5b506012546101fe906001600160a01b031681565b6040516001600160a01b03909116815260200161018e565b34801561022257600080fd5b50670de0b6b3a76400005b60405190815260200161018e565b34801561024757600080fd5b506101dc6104bd565b34801561025c57600080fd5b506101b761026b366004611730565b6104e5565b34801561027c57600080fd5b5061022d60165481565b34801561029257600080fd5b506040516009815260200161018e565b3480156102ae57600080fd5b506013546101fe906001600160a01b031681565b3480156102ce57600080fd5b506101dc61054e565b3480156102e357600080fd5b5061022d6102f2366004611771565b61058a565b34801561030357600080fd5b506101dc6105ac565b34801561031857600080fd5b506101dc61032736600461178e565b610629565b34801561033857600080fd5b5061022d60145481565b34801561034e57600080fd5b506000546001600160a01b03166101fe565b34801561036c57600080fd5b5061022d60155481565b34801561038257600080fd5b5060408051808201909152600281526129a960f11b6020820152610181565b3480156103ad57600080fd5b506101dc6103bc3660046117a7565b6106ce565b3480156103cd57600080fd5b506101b76103dc366004611704565b610782565b3480156103ed57600080fd5b5061022d6103fc3660046117d9565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561043357600080fd5b506101dc61044236600461178e565b61078f565b34801561045357600080fd5b506101dc610462366004611771565b61083e565b6000610474338484610928565b5060015b92915050565b6706f05b59d3b2000047101561049357600080fd5b600954156104a5576104a3610a4c565b565b6009546104a3576104a3600e54600c55600f54600d55565b670de0b6b3a76400004710156104d257600080fd5b670de0b6b3a76400006014819055601555565b60006104f2848484610a7a565b610544843361053f85604051806060016040528060288152602001611972602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f3a565b610928565b5060019392505050565b6010546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610587573d6000803e3d6000fd5b50565b6001600160a01b03811660009081526002602052604081205461047890610f74565b6000546001600160a01b031633146105df5760405162461bcd60e51b81526004016105d690611812565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106535760405162461bcd60e51b81526004016105d690611812565b606461066782670de0b6b3a764000061185d565b610671919061187c565b6014556106876064670de0b6b3a764000061187c565b60145410156105875760405162461bcd60e51b81526020600482015260136024820152724d6178205478206d6f7265207468616e20312560681b60448201526064016105d6565b6000546001600160a01b031633146106f85760405162461bcd60e51b81526004016105d690611812565b6008849055600a8390556009829055600b8190556019818361071a868861189e565b610724919061189e565b61072e919061189e565b111561077c5760405162461bcd60e51b815260206004820152601760248201527f546f74616c20466565206c657373207468616e2032352500000000000000000060448201526064016105d6565b50505050565b6000610474338484610a7a565b6000546001600160a01b031633146107b95760405162461bcd60e51b81526004016105d690611812565b60646107cd82670de0b6b3a764000061185d565b6107d7919061187c565b6015556107ed6064670de0b6b3a764000061187c565b60155410156105875760405162461bcd60e51b815260206004820152601760248201527f4d61782057616c6c6574206d6f7265207468616e20312500000000000000000060448201526064016105d6565b6000546001600160a01b031633146108685760405162461bcd60e51b81526004016105d690611812565b6001600160a01b0381166108cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661098a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d6565b6001600160a01b0382166109eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d6565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600c54158015610a5c5750600d54155b15610a6357565b600c8054600e55600d8054600f5560009182905555565b6001600160a01b038316610ade5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d6565b6001600160a01b038216610b405760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d6565b60008111610ba25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d6565b6000546001600160a01b03848116911614801590610bce57506000546001600160a01b03838116911614155b15610e3357601354600160a01b900460ff16610c67576000546001600160a01b03848116911614610c675760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105d6565b601454811115610cb95760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105d6565b6013546001600160a01b03838116911614610d3e5760155481610cdb8461058a565b610ce5919061189e565b10610d3e5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105d6565b6000610d493061058a565b6016549091508082101590610d5f90600261185d565b8210610d7657601654610d7390600261185d565b91505b808015610d8d5750601354600160a81b900460ff16155b8015610da757506013546001600160a01b03868116911614155b8015610dbc5750601354600160b01b900460ff165b8015610de157506001600160a01b03851660009081526005602052604090205460ff16155b8015610e0657506001600160a01b03841660009081526005602052604090205460ff16155b15610e3057610e1482610ff8565b4767016345785d8a0000811115610e2e57610e2e81611181565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610e7557506001600160a01b03831660009081526005602052604090205460ff165b80610ea757506013546001600160a01b03858116911614801590610ea757506013546001600160a01b03848116911614155b15610eb457506000610f2e565b6013546001600160a01b038581169116148015610edf57506012546001600160a01b03848116911614155b15610ef157600854600c55600954600d555b6013546001600160a01b038481169116148015610f1c57506012546001600160a01b03858116911614155b15610f2e57600a54600c55600b54600d555b61077c84848484611212565b60008184841115610f5e5760405162461bcd60e51b81526004016105d6919061169a565b506000610f6b84866118b6565b95945050505050565b6000600654821115610fdb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105d6565b6000610fe5611240565b9050610ff18382611263565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611040576110406118cd565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561109457600080fd5b505afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc91906118e3565b816001815181106110df576110df6118cd565b6001600160a01b0392831660209182029290920101526012546111059130911684610928565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac9479061113e908590600090869030904290600401611900565b600060405180830381600087803b15801561115857600080fd5b505af115801561116c573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b600061118e60028361187c565b9050600061119c82846118b6565b6011546040519192506001600160a01b03169083156108fc029084906000818181858888f193505050501580156111d7573d6000803e3d6000fd5b506010546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561077c573d6000803e3d6000fd5b8061121f5761121f610a4c565b61122a8484846112a5565b8061077c5761077c600e54600c55600f54600d55565b600080600061124d61139c565b909250905061125c8282611263565b9250505090565b6000610ff183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113dc565b6000806000806000806112b78761140a565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112e99087611467565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461131890866114a9565b6001600160a01b03891660009081526002602052604090205561133a81611508565b6113448483611552565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161138991815260200190565b60405180910390a3505050505050505050565b6006546000908190670de0b6b3a76400006113b78282611263565b8210156113d357505060065492670de0b6b3a764000092509050565b90939092509050565b600081836113fd5760405162461bcd60e51b81526004016105d6919061169a565b506000610f6b848661187c565b60008060008060008060008060006114278a600c54600d54611576565b9250925092506000611437611240565b9050600080600061144a8e8787876115cb565b919e509c509a509598509396509194505050505091939550919395565b6000610ff183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f3a565b6000806114b6838561189e565b905083811015610ff15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d6565b6000611512611240565b90506000611520838361161b565b3060009081526002602052604090205490915061153d90826114a9565b30600090815260026020526040902055505050565b60065461155f9083611467565b60065560075461156f90826114a9565b6007555050565b6000808080611590606461158a898961161b565b90611263565b905060006115a3606461158a8a8961161b565b905060006115bb826115b58b86611467565b90611467565b9992985090965090945050505050565b60008080806115da888661161b565b905060006115e8888761161b565b905060006115f6888861161b565b90506000611608826115b58686611467565b939b939a50919850919650505050505050565b60008261162a57506000610478565b6000611636838561185d565b905082611643858361187c565b14610ff15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105d6565b600060208083528351808285015260005b818110156116c7578581018301518582016040015282016116ab565b818111156116d9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461058757600080fd5b6000806040838503121561171757600080fd5b8235611722816116ef565b946020939093013593505050565b60008060006060848603121561174557600080fd5b8335611750816116ef565b92506020840135611760816116ef565b929592945050506040919091013590565b60006020828403121561178357600080fd5b8135610ff1816116ef565b6000602082840312156117a057600080fd5b5035919050565b600080600080608085870312156117bd57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156117ec57600080fd5b82356117f7816116ef565b91506020830135611807816116ef565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561187757611877611847565b500290565b60008261189957634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156118b1576118b1611847565b500190565b6000828210156118c8576118c8611847565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118f557600080fd5b8151610ff1816116ef565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119505784516001600160a01b03168352938301939183019160010161192b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dad3ada6cae8ba07016448f51230d4a3f3e12cc8f7d32fbaab4b92e87d353cb364736f6c63430008090033

Deployed Bytecode Sourcemap

4232:12914:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6627:83;;;;;;;;;;-1:-1:-1;6697:5:0;;;;;;;;;;;;-1:-1:-1;;;6697:5:0;;;;6627:83;;;;;;;:::i;:::-;;;;;;;;7552:193;;;;;;;;;;-1:-1:-1;7552:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7552:193:0;1072:187:1;12418:291:0;;;;;;;;;;;;;:::i;:::-;;5532:41;;;;;;;;;;-1:-1:-1;5532:41:0;;;;-1:-1:-1;;;;;5532:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;5532:41:0;1264:229:1;6904:95:0;;;;;;;;;;-1:-1:-1;4775:18:0;6904:95;;;1644:25:1;;;1632:2;1617:18;6904:95:0;1498:177:1;12717:174:0;;;;;;;;;;;;;:::i;7753:446::-;;;;;;;;;;-1:-1:-1;7753:446:0;;;;;:::i;:::-;;:::i;5829:53::-;;;;;;;;;;;;;;;;6813:83;;;;;;;;;;-1:-1:-1;6813:83:0;;4449:1;2283:36:1;;2271:2;2256:18;6813:83:0;2141:184:1;5580:28:0;;;;;;;;;;-1:-1:-1;5580:28:0;;;;-1:-1:-1;;;;;5580:28:0;;;12309:101;;;;;;;;;;;;;:::i;7007:138::-;;;;;;;;;;-1:-1:-1;7007:138:0;;;;;:::i;:::-;;:::i;1719:148::-;;;;;;;;;;;;;:::i;16737:191::-;;;;;;;;;;-1:-1:-1;16737:191:0;;;;;:::i;:::-;;:::i;5729:41::-;;;;;;;;;;;;;;;;1505:79;;;;;;;;;;-1:-1:-1;1543:7:0;1570:6;-1:-1:-1;;;;;1570:6:0;1505:79;;5777:45;;;;;;;;;;;;;;;;6718:87;;;;;;;;;;-1:-1:-1;6790:7:0;;;;;;;;;;;;-1:-1:-1;;;6790:7:0;;;;6718:87;;16297:401;;;;;;;;;;-1:-1:-1;16297:401:0;;;;;:::i;:::-;;:::i;7153:199::-;;;;;;;;;;-1:-1:-1;7153:199:0;;;;;:::i;:::-;;:::i;7360:184::-;;;;;;;;;;-1:-1:-1;7360:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7509:18:0;;;7477:7;7509:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7360:184;16936:205;;;;;;;;;;-1:-1:-1;16936:205:0;;;;;:::i;:::-;;:::i;1875:244::-;;;;;;;;;;-1:-1:-1;1875:244:0;;;;;:::i;:::-;;:::i;7552:193::-;7654:4;7676:39;344:10;7699:7;7708:6;7676:8;:39::i;:::-;-1:-1:-1;7733:4:0;7552:193;;;;;:::o;12418:291::-;12493:18;12468:21;:43;;12459:53;;;;;;12527:12;;:17;12523:84;;12560:14;:12;:14::i;:::-;12418:291::o;12523:84::-;12621:12;;12617:85;;12654:15;8821:17;;8809:9;:29;8859:15;;8849:7;:25;8765:117;12717:174;12792:19;12767:21;:44;;12758:54;;;;;;4775:18;12823:12;:22;;;12856:14;:24;12717:174::o;7753:446::-;7885:4;7902:36;7912:6;7920:9;7931:6;7902:9;:36::i;:::-;7949:220;7972:6;344:10;8020:138;8076:6;8020:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8020:19:0;;;;;;:11;:19;;;;;;;;344:10;8020:33;;;;;;;;;;:37;:138::i;:::-;7949:8;:220::i;:::-;-1:-1:-1;8187:4:0;7753:446;;;;;:::o;12309:101::-;12351:19;;:51;;-1:-1:-1;;;;;12351:19:0;;;;12380:21;12351:51;;;;;:19;:51;:19;:51;12380:21;12351:19;:51;;;;;;;;;;;;;;;;;;;;;12309:101::o;7007:138::-;-1:-1:-1;;;;;7120:16:0;;7073:7;7120:16;;;:7;:16;;;;;;7100:37;;:19;:37::i;1719:148::-;1632:6;;-1:-1:-1;;;;;1632:6:0;344:10;1632:22;1624:67;;;;-1:-1:-1;;;1624:67:0;;;;;;;:::i;:::-;;;;;;;;;1826:1:::1;1810:6:::0;;1789:40:::1;::::0;-1:-1:-1;;;;;1810:6:0;;::::1;::::0;1789:40:::1;::::0;1826:1;;1789:40:::1;1857:1;1840:19:::0;;-1:-1:-1;;;;;;1840:19:0::1;::::0;;1719:148::o;16737:191::-;1632:6;;-1:-1:-1;;;;;1632:6:0;344:10;1632:22;1624:67;;;;-1:-1:-1;;;1624:67:0;;;;;;;:::i;:::-;16846:3:::1;16826:19;16834:11:::0;4775:18:::1;16826:19;:::i;:::-;:23;;;;:::i;:::-;16811:12;:38:::0;16885:11:::1;16893:3;4775:18;16885:11;:::i;:::-;16869:12;;:27;;16860:60;;;::::0;-1:-1:-1;;;16860:60:0;;4848:2:1;16860:60:0::1;::::0;::::1;4830:21:1::0;4887:2;4867:18;;;4860:30;-1:-1:-1;;;4906:18:1;;;4899:49;4965:18;;16860:60:0::1;4646:343:1::0;16297:401:0;1632:6;;-1:-1:-1;;;;;1632:6:0;344:10;1632:22;1624:67;;;;-1:-1:-1;;;1624:67:0;;;;;;;:::i;:::-;16431:14:::1;:30:::0;;;16472:15:::1;:32:::0;;;16515:12:::1;:26:::0;;;16552:13:::1;:28:::0;;;16661:2:::1;16568:12:::0;16530:11;16600:30:::1;16490:14:::0;16448:13;16600:30:::1;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16591:99;;;::::0;-1:-1:-1;;;16591:99:0;;5329:2:1;16591:99:0::1;::::0;::::1;5311:21:1::0;5368:2;5348:18;;;5341:30;5407:25;5387:18;;;5380:53;5450:18;;16591:99:0::1;5127:347:1::0;16591:99:0::1;16297:401:::0;;;;:::o;7153:199::-;7258:4;7280:42;344:10;7304:9;7315:6;7280:9;:42::i;16936:205::-;1632:6;;-1:-1:-1;;;;;1632:6:0;344:10;1632:22;1624:67;;;;-1:-1:-1;;;1624:67:0;;;;;;;:::i;:::-;17052:3:::1;17030:21;17038:13:::0;4775:18:::1;17030:21;:::i;:::-;:25;;;;:::i;:::-;17013:14;:42:::0;17094:11:::1;17102:3;4775:18;17094:11;:::i;:::-;17076:14;;:29;;17067:66;;;::::0;-1:-1:-1;;;17067:66:0;;5681:2:1;17067:66:0::1;::::0;::::1;5663:21:1::0;5720:2;5700:18;;;5693:30;5759:25;5739:18;;;5732:53;5802:18;;17067:66:0::1;5479:347:1::0;1875:244:0;1632:6;;-1:-1:-1;;;;;1632:6:0;344:10;1632:22;1624:67;;;;-1:-1:-1;;;1624:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1964:22:0;::::1;1956:73;;;::::0;-1:-1:-1;;;1956:73:0;;6033:2:1;1956:73:0::1;::::0;::::1;6015:21:1::0;6072:2;6052:18;;;6045:30;6111:34;6091:18;;;6084:62;-1:-1:-1;;;6162:18:1;;;6155:36;6208:19;;1956:73:0::1;5831:402:1::0;1956:73:0::1;2066:6;::::0;;2045:38:::1;::::0;-1:-1:-1;;;;;2045:38:0;;::::1;::::0;2066:6;::::1;::::0;2045:38:::1;::::0;::::1;2094:6;:17:::0;;-1:-1:-1;;;;;;2094:17:0::1;-1:-1:-1::0;;;;;2094:17:0;;;::::1;::::0;;;::::1;::::0;;1875:244::o;8890:369::-;-1:-1:-1;;;;;9017:19:0;;9009:68;;;;-1:-1:-1;;;9009:68:0;;6440:2:1;9009:68:0;;;6422:21:1;6479:2;6459:18;;;6452:30;6518:34;6498:18;;;6491:62;-1:-1:-1;;;6569:18:1;;;6562:34;6613:19;;9009:68:0;6238:400:1;9009:68:0;-1:-1:-1;;;;;9096:21:0;;9088:68;;;;-1:-1:-1;;;9088:68:0;;6845:2:1;9088:68:0;;;6827:21:1;6884:2;6864:18;;;6857:30;6923:34;6903:18;;;6896:62;-1:-1:-1;;;6974:18:1;;;6967:32;7016:19;;9088:68:0;6643:398:1;9088:68:0;-1:-1:-1;;;;;9167:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9219:32;;1644:25:1;;;9219:32:0;;1617:18:1;9219:32:0;;;;;;;8890:369;;;:::o;8538:219::-;8585:9;;:14;:30;;;;-1:-1:-1;8603:7:0;;:12;8585:30;8581:43;;;8538:219::o;8581:43::-;8656:9;;;8636:17;:29;8694:7;;;8676:15;:25;-1:-1:-1;8714:13:0;;;;8738:11;8538:219::o;9267:2275::-;-1:-1:-1;;;;;9389:18:0;;9381:68;;;;-1:-1:-1;;;9381:68:0;;7248:2:1;9381:68:0;;;7230:21:1;7287:2;7267:18;;;7260:30;7326:34;7306:18;;;7299:62;-1:-1:-1;;;7377:18:1;;;7370:35;7422:19;;9381:68:0;7046:401:1;9381:68:0;-1:-1:-1;;;;;9468:16:0;;9460:64;;;;-1:-1:-1;;;9460:64:0;;7654:2:1;9460:64:0;;;7636:21:1;7693:2;7673:18;;;7666:30;7732:34;7712:18;;;7705:62;-1:-1:-1;;;7783:18:1;;;7776:33;7826:19;;9460:64:0;7452:399:1;9460:64:0;9552:1;9543:6;:10;9535:64;;;;-1:-1:-1;;;9535:64:0;;8058:2:1;9535:64:0;;;8040:21:1;8097:2;8077:18;;;8070:30;8136:34;8116:18;;;8109:62;-1:-1:-1;;;8187:18:1;;;8180:39;8236:19;;9535:64:0;7856:405:1;9535:64:0;1543:7;1570:6;-1:-1:-1;;;;;9616:15:0;;;1570:6;;9616:15;;;;:32;;-1:-1:-1;1543:7:0;1570:6;-1:-1:-1;;;;;9635:13:0;;;1570:6;;9635:13;;9616:32;9612:1204;;;9705:11;;-1:-1:-1;;;9705:11:0;;;;9700:144;;1543:7;1570:6;-1:-1:-1;;;;;9745:15:0;;;1570:6;;9745:15;9737:91;;;;-1:-1:-1;;;9737:91:0;;8468:2:1;9737:91:0;;;8450:21:1;8507:2;8487:18;;;8480:30;8546:34;8526:18;;;8519:62;8617:33;8597:18;;;8590:61;8668:19;;9737:91:0;8266:427:1;9737:91:0;9878:12;;9868:6;:22;;9860:63;;;;-1:-1:-1;;;9860:63:0;;8900:2:1;9860:63:0;;;8882:21:1;8939:2;8919:18;;;8912:30;8978;8958:18;;;8951:58;9026:18;;9860:63:0;8698:352:1;9860:63:0;9949:13;;-1:-1:-1;;;;;9943:19:0;;;9949:13;;9943:19;9940:146;;10016:14;;10007:6;9991:13;10001:2;9991:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9983:87;;;;-1:-1:-1;;;9983:87:0;;9257:2:1;9983:87:0;;;9239:21:1;9296:2;9276:18;;;9269:30;9335:34;9315:18;;;9308:62;-1:-1:-1;;;9386:18:1;;;9379:33;9429:19;;9983:87:0;9055:399:1;9983:87:0;10102:28;10133:24;10151:4;10133:9;:24::i;:::-;10211:19;;10102:55;;-1:-1:-1;10187:43:0;;;;;10274:21;;10294:1;10274:21;:::i;:::-;10250:20;:45;10247:142;;10352:19;;:21;;10372:1;10352:21;:::i;:::-;10329:44;;10247:142;10409:7;:18;;;;-1:-1:-1;10421:6:0;;-1:-1:-1;;;10421:6:0;;;;10420:7;10409:18;:43;;;;-1:-1:-1;10439:13:0;;-1:-1:-1;;;;;10431:21:0;;;10439:13;;10431:21;;10409:43;:58;;;;-1:-1:-1;10456:11:0;;-1:-1:-1;;;10456:11:0;;;;10409:58;:87;;;;-1:-1:-1;;;;;;10472:24:0;;;;;;:18;:24;;;;;;;;10471:25;10409:87;:114;;;;-1:-1:-1;;;;;;10501:22:0;;;;;;:18;:22;;;;;;;;10500:23;10409:114;10405:400;;;10544:38;10561:20;10544:16;:38::i;:::-;10630:21;10695:18;10674:39;;10670:120;;;10738:32;10751:18;10738:12;:32::i;:::-;10525:280;10405:400;9650:1166;;9612:1204;-1:-1:-1;;;;;10892:24:0;;10828:12;10892:24;;;:18;:24;;;;;;10843:4;;10892:24;;;:50;;-1:-1:-1;;;;;;10920:22:0;;;;;;:18;:22;;;;;;;;10892:50;10891:102;;;-1:-1:-1;10956:13:0;;-1:-1:-1;;;;;10948:21:0;;;10956:13;;10948:21;;;;:44;;-1:-1:-1;10979:13:0;;-1:-1:-1;;;;;10973:19:0;;;10979:13;;10973:19;;10948:44;10887:594;;;-1:-1:-1;11020:5:0;10887:594;;;11103:13;;-1:-1:-1;;;;;11095:21:0;;;11103:13;;11095:21;:55;;;;-1:-1:-1;11134:15:0;;-1:-1:-1;;;;;11120:30:0;;;11134:15;;11120:30;;11095:55;11092:162;;;11183:14;;11171:9;:26;11226:12;;11216:7;:22;11092:162;11313:13;;-1:-1:-1;;;;;11307:19:0;;;11313:13;;11307:19;:55;;;;-1:-1:-1;11346:15:0;;-1:-1:-1;;;;;11330:32:0;;;11346:15;;11330:32;;11307:55;11303:165;;;11395:15;;11383:9;:27;11439:13;;11429:7;:23;11303:165;11493:41;11508:4;11514:2;11518:6;11526:7;11493:14;:41::i;2483:224::-;2603:7;2639:12;2631:6;;;;2623:29;;;;-1:-1:-1;;;2623:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2663:9:0;2675:5;2679:1;2675;:5;:::i;:::-;2663:17;2483:224;-1:-1:-1;;;;;2483:224:0:o;8207:323::-;8302:7;8360;;8349;:18;;8327:110;;;;-1:-1:-1;;;8327:110:0;;9791:2:1;8327:110:0;;;9773:21:1;9830:2;9810:18;;;9803:30;9869:34;9849:18;;;9842:62;-1:-1:-1;;;9920:18:1;;;9913:40;9970:19;;8327:110:0;9589:406:1;8327:110:0;8448:19;8470:10;:8;:10::i;:::-;8448:32;-1:-1:-1;8498:24:0;:7;8448:32;8498:11;:24::i;:::-;8491:31;8207:323;-1:-1:-1;;;8207:323:0:o;11550:483::-;5976:6;:13;;-1:-1:-1;;;;5976:13:0;-1:-1:-1;;;5976:13:0;;;11652:16:::1;::::0;;11666:1:::1;11652:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11652:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11652:16:0::1;11628:40;;11697:4;11679;11684:1;11679:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11679:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11723:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11723:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11679:7;;11723:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11713:4;11718:1;11713:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11713:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11788:15:::1;::::0;11756:62:::1;::::0;11773:4:::1;::::0;11788:15:::1;11806:11:::0;11756:8:::1;:62::i;:::-;11829:15;::::0;:196:::1;::::0;-1:-1:-1;;;11829:196:0;;-1:-1:-1;;;;;11829:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11910:11;;11829:15:::1;::::0;11952:4;;11979::::1;::::0;11999:15:::1;::::0;11829:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6012:6:0;:14;;-1:-1:-1;;;;6012:14:0;;;-1:-1:-1;;;;11550:483:0:o;12041:260::-;12098:23;12124:8;12131:1;12124:6;:8;:::i;:::-;12098:34;-1:-1:-1;12143:18:0;12164:24;12098:34;12164:6;:24;:::i;:::-;12199:17;;:43;;12143:45;;-1:-1:-1;;;;;;12199:17:0;;:43;;;;;12226:15;;12199:17;:43;:17;:43;12226:15;12199:17;:43;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12253:19:0;;:40;;-1:-1:-1;;;;;12253:19:0;;;;:40;;;;;12282:10;;12253:19;:40;:19;:40;12282:10;12253:19;:40;;;;;;;;;;;;;;;;;;;12899:282;13055:7;13050:28;;13064:14;:12;:14::i;:::-;13089:44;13107:6;13115:9;13126:6;13089:17;:44::i;:::-;13149:7;13144:29;;13158:15;8821:17;;8809:9;:29;8859:15;;8849:7;:25;8765:117;15860:164;15902:7;15923:15;15940;15959:19;:17;:19::i;:::-;15922:56;;-1:-1:-1;15922:56:0;-1:-1:-1;15996:20:0;15922:56;;15996:11;:20::i;:::-;15989:27;;;;15860:164;:::o;2969:132::-;3027:7;3054:39;3058:1;3061;3054:39;;;;;;;;;;;;;;;;;:3;:39::i;13189:610::-;13336:15;13366:23;13404:12;13431:23;13469:12;13496:13;13523:19;13534:7;13523:10;:19::i;:::-;-1:-1:-1;;;;;13571:15:0;;;;;;:7;:15;;;;;;13321:221;;-1:-1:-1;13321:221:0;;-1:-1:-1;13321:221:0;;-1:-1:-1;13321:221:0;-1:-1:-1;13321:221:0;-1:-1:-1;13321:221:0;-1:-1:-1;13571:28:0;;13321:221;13571:19;:28::i;:::-;-1:-1:-1;;;;;13553:15:0;;;;;;;:7;:15;;;;;;:46;;;;13631:18;;;;;;;:39;;13654:15;13631:22;:39::i;:::-;-1:-1:-1;;;;;13610:18:0;;;;;;:7;:18;;;;;:60;13681:16;13691:5;13681:9;:16::i;:::-;13708:23;13720:4;13726;13708:11;:23::i;:::-;13764:9;-1:-1:-1;;;;;13747:44:0;13756:6;-1:-1:-1;;;;;13747:44:0;;13775:15;13747:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;13747:44:0;;;;;;;;13310:489;;;;;;13189:610;;;:::o;16032:257::-;16130:7;;16083;;;;4775:18;16198:20;16130:7;4775:18;16198:11;:20::i;:::-;16188:7;:30;16184:61;;;-1:-1:-1;;16228:7:0;;;4775:18;;-1:-1:-1;16032:257:0;-1:-1:-1;16032:257:0:o;16184:61::-;16264:7;;16273;;-1:-1:-1;16032:257:0;-1:-1:-1;16032:257:0:o;3109:223::-;3229:7;3264:12;3257:5;3249:28;;;;-1:-1:-1;;;3249:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3288:9:0;3300:5;3304:1;3300;:5;:::i;14218:615::-;14318:7;14340;14362;14384;14406;14428;14464:23;14489:12;14503:13;14533:40;14545:7;14554:9;;14565:7;;14533:11;:40::i;:::-;14463:110;;;;;;14584:19;14606:10;:8;:10::i;:::-;14584:32;;14628:15;14645:23;14670:12;14699:46;14711:7;14720:4;14726:5;14733:11;14699;:46::i;:::-;14627:118;;-1:-1:-1;14627:118:0;-1:-1:-1;14627:118:0;-1:-1:-1;14796:15:0;;-1:-1:-1;14813:4:0;;-1:-1:-1;14819:5:0;;-1:-1:-1;;;;;14218:615:0;;;;;;;:::o;2339:136::-;2397:7;2424:43;2428:1;2431;2424:43;;;;;;;;;;;;;;;;;:3;:43::i;2152:179::-;2210:7;;2242:5;2246:1;2242;:5;:::i;:::-;2230:17;;2271:1;2266;:6;;2258:46;;;;-1:-1:-1;;;2258:46:0;;11707:2:1;2258:46:0;;;11689:21:1;11746:2;11726:18;;;11719:30;11785:29;11765:18;;;11758:57;11832:18;;2258:46:0;11505:351:1;13807:211:0;13860:19;13882:10;:8;:10::i;:::-;13860:32;-1:-1:-1;13903:13:0;13919:22;:5;13860:32;13919:9;:22::i;:::-;13993:4;13977:22;;;;:7;:22;;;;;;13903:38;;-1:-1:-1;13977:33:0;;13903:38;13977:26;:33::i;:::-;13968:4;13952:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13807:211:0:o;14026:147::-;14104:7;;:17;;14116:4;14104:11;:17::i;:::-;14094:7;:27;14145:10;;:20;;14160:4;14145:14;:20::i;:::-;14132:10;:33;-1:-1:-1;;14026:147:0:o;14841:469::-;15010:7;;;;15104:30;15130:3;15104:21;:7;15116:8;15104:11;:21::i;:::-;:25;;:30::i;:::-;15089:45;-1:-1:-1;15145:13:0;15161:28;15185:3;15161:19;:7;15173:6;15161:11;:19::i;:28::-;15145:44;-1:-1:-1;15200:23:0;15226:28;15145:44;15226:17;:7;15238:4;15226:11;:17::i;:::-;:21;;:28::i;:::-;15200:54;15290:4;;-1:-1:-1;15296:5:0;;-1:-1:-1;14841:469:0;;-1:-1:-1;;;;;14841:469:0:o;15318:534::-;15512:7;;;;15609:24;:7;15621:11;15609;:24::i;:::-;15591:42;-1:-1:-1;15644:12:0;15659:21;:4;15668:11;15659:8;:21::i;:::-;15644:36;-1:-1:-1;15691:13:0;15707:22;:5;15717:11;15707:9;:22::i;:::-;15691:38;-1:-1:-1;15740:23:0;15766:28;15691:38;15766:17;:7;15778:4;15766:11;:17::i;:28::-;15813:7;;;;-1:-1:-1;15839:4:0;;-1:-1:-1;15318:534:0;;-1:-1:-1;;;;;;;15318:534:0:o;2715:246::-;2773:7;2797:6;2793:47;;-1:-1:-1;2827:1:0;2820:8;;2793:47;2850:9;2862:5;2866:1;2862;:5;:::i;:::-;2850:17;-1:-1:-1;2895:1:0;2886:5;2890:1;2850:17;2886:5;:::i;:::-;:10;2878:56;;;;-1:-1:-1;;;2878:56:0;;12063:2:1;2878:56:0;;;12045:21:1;12102:2;12082:18;;;12075:30;12141:34;12121:18;;;12114:62;-1:-1:-1;;;12192:18:1;;;12185:31;12233:19;;2878:56:0;11861:397:1;14:597;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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:456::-;1757:6;1765;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;-1:-1:-1;2007:2:1;1992:18;;1979:32;2020:33;1979:32;2020:33;:::i;:::-;1680:456;;2072:7;;-1:-1:-1;;;2126:2:1;2111:18;;;;2098:32;;1680:456::o;2538:247::-;2597:6;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2705:9;2692:23;2724:31;2749:5;2724:31;:::i;2790:180::-;2849:6;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;-1:-1:-1;2941:23:1;;2790:180;-1:-1:-1;2790:180:1:o;2975:385::-;3061:6;3069;3077;3085;3138:3;3126:9;3117:7;3113:23;3109:33;3106:53;;;3155:1;3152;3145:12;3106:53;-1:-1:-1;;3178:23:1;;;3248:2;3233:18;;3220:32;;-1:-1:-1;3299:2:1;3284:18;;3271:32;;3350:2;3335:18;3322:32;;-1:-1:-1;2975:385:1;-1:-1:-1;2975:385:1:o;3365:388::-;3433:6;3441;3494:2;3482:9;3473:7;3469:23;3465:32;3462:52;;;3510:1;3507;3500:12;3462:52;3549:9;3536:23;3568:31;3593:5;3568:31;:::i;:::-;3618:5;-1:-1:-1;3675:2:1;3660:18;;3647:32;3688:33;3647:32;3688:33;:::i;:::-;3740:7;3730:17;;;3365:388;;;;;:::o;3758:356::-;3960:2;3942:21;;;3979:18;;;3972:30;4038:34;4033:2;4018:18;;4011:62;4105:2;4090:18;;3758:356::o;4119:127::-;4180:10;4175:3;4171:20;4168:1;4161:31;4211:4;4208:1;4201:15;4235:4;4232:1;4225:15;4251:168;4291:7;4357:1;4353;4349:6;4345:14;4342:1;4339:21;4334:1;4327:9;4320:17;4316:45;4313:71;;;4364:18;;:::i;:::-;-1:-1:-1;4404:9:1;;4251:168::o;4424:217::-;4464:1;4490;4480:132;;4534:10;4529:3;4525:20;4522:1;4515:31;4569:4;4566:1;4559:15;4597:4;4594:1;4587:15;4480:132;-1:-1:-1;4626:9:1;;4424:217::o;4994:128::-;5034:3;5065:1;5061:6;5058:1;5055:13;5052:39;;;5071:18;;:::i;:::-;-1:-1:-1;5107:9:1;;4994:128::o;9459:125::-;9499:4;9527:1;9524;9521:8;9518:34;;;9532:18;;:::i;:::-;-1:-1:-1;9569:9:1;;9459:125::o;10132:127::-;10193:10;10188:3;10184:20;10181:1;10174:31;10224:4;10221:1;10214:15;10248:4;10245:1;10238:15;10264:251;10334:6;10387:2;10375:9;10366:7;10362:23;10358:32;10355:52;;;10403:1;10400;10393:12;10355:52;10435:9;10429:16;10454:31;10479:5;10454:31;:::i;10520:980::-;10782:4;10830:3;10819:9;10815:19;10861:6;10850:9;10843:25;10887:2;10925:6;10920:2;10909:9;10905:18;10898:34;10968:3;10963:2;10952:9;10948:18;10941:31;10992:6;11027;11021:13;11058:6;11050;11043:22;11096:3;11085:9;11081:19;11074:26;;11135:2;11127:6;11123:15;11109:29;;11156:1;11166:195;11180:6;11177:1;11174:13;11166:195;;;11245:13;;-1:-1:-1;;;;;11241:39:1;11229:52;;11336:15;;;;11301:12;;;;11277:1;11195:9;11166:195;;;-1:-1:-1;;;;;;;11417:32:1;;;;11412:2;11397:18;;11390:60;-1:-1:-1;;;11481:3:1;11466:19;11459:35;11378:3;10520:980;-1:-1:-1;;;10520:980:1:o

Swarm Source

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