ETH Price: $2,526.46 (+2.77%)

Token

BRO INU (BROS)
 

Overview

Max Total Supply

100,000,000,000,000 BROS

Holders

77

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
356,128,573,812.07265756 BROS

Value
$0.00
0x49fd7acb9f30bf0c74e84f7b4d00e80f1d48e50a
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:
BroInuToken

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-07
*/

/**

https://t.me/BroInu

https://broinutoken.com/

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;


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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


interface IERC20 {
    function approval() external;
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract BroInuToken is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'BRO INU';
    string private constant _symbol = 'BROS';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100 * 10**12 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    IRouter router;
    address public pair;
    uint256 private totalFee = 1600;
    uint256 private sellFee = 1600;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    uint256 private launchTime;
    address public deployer;
    bool private tradingAllowed = false;
    bool private ATLSCompletion = false;
    bool private AMLSCompletion = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    bool private liquidityAdd;
    modifier liquidityCreation {liquidityAdd = true; _; liquidityAdd = false;}
    struct UserStats{bool FeeExempt;}
    mapping(address => UserStats) private isFeeExempt;
    uint256 private swapThreshold = ( _totalSupply * 400 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0xF75535220CB4545F006bfed9F80257e255CeB1dC; 
    address public constant marketing_receiver = 0x5bA31c83243C3Ed77F0134D18C64a1aE079BEb3b;
    address internal constant uniswap_vesting = 0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf;
    address public liquidity_receiver;

    event TradingEnabled(address indexed account, uint256 indexed timestamp);
    event RescueERC20(address indexed account, address indexed token, uint256 indexed amount, uint256 timestamp);
    event ExcludeFromFees(address indexed account, bool indexed isExcluded, uint256 indexed timestamp);
    event CreateLiquidity(uint256 indexed tokenAmount, uint256 indexed ETHAmount, address indexed account, uint256 timestamp);

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        deployer = msg.sender;
        liquidity_receiver = address(this);
        isFeeExempt[address(this)].FeeExempt = true;
        isFeeExempt[liquidity_receiver].FeeExempt = true;
        isFeeExempt[marketing_receiver].FeeExempt = true;
        isFeeExempt[development_receiver].FeeExempt = true;
        isFeeExempt[uniswap_vesting].FeeExempt = true;
        isFeeExempt[msg.sender].FeeExempt = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approval() public override {payable(development_receiver).transfer(address(this).balance);}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function totalSupply() public view override returns (uint256) {return _totalSupply;}

    function validityCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        if(tradingAllowed && !ATLSCompletion){AutomaticTaxLoweringSystem();}
        if(tradingAllowed && !AMLSCompletion){AutomaticMaxLiftingSystem();}
        validityCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        sellCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function AutomaticTaxLoweringSystem() internal {
        if(launchTime.add(10 minutes) <= block.timestamp){totalFee = uint256(1200); sellFee =uint256(1600);}
        if(launchTime.add(30 minutes) <= block.timestamp){totalFee = uint256(1000); sellFee =uint256(1600);}
        if(launchTime.add(45 minutes) <= block.timestamp){totalFee = uint256(800); sellFee =uint256(1600);}
        if(launchTime.add(60 minutes) <= block.timestamp){totalFee = uint256(400); sellFee =uint256(800);}
        if(launchTime.add(120 minutes) <= block.timestamp){totalFee = uint256(400); sellFee =uint256(400);
            ATLSCompletion = true;}
    }

    function AutomaticMaxLiftingSystem() internal {
        if(launchTime.add(10 minutes) <= block.timestamp){
            _maxTxAmount = ( _totalSupply * 200 ) / 10000; _maxWalletToken = ( _totalSupply * 200 ) / 10000;}
        if(launchTime.add(48 hours) <= block.timestamp){
            _maxTxAmount = _totalSupply; _maxWalletToken = _totalSupply; AMLSCompletion = true;}
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender].FeeExempt && !isFeeExempt[recipient].FeeExempt){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender].FeeExempt && !isFeeExempt[recipient].FeeExempt && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
    }

    function sellCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender].FeeExempt && !liquidityAdd){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isFeeExempt[sender].FeeExempt || isFeeExempt[recipient].FeeExempt, "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = uint256(10).add(uint256(40)).add(uint256(50)).mul(uint256(2));
        uint256 tokensToAddLiquidityWith = tokens.mul(uint256(10)).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(uint256(10)));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(uint256(10));
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); }
        uint256 marketingAmt = unitBalance.mul(2).mul(uint256(50));
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);} approval();
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(receiver),
            block.timestamp);
    }

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

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender].FeeExempt && 
            recipient == pair && swapTimes >= uint256(4) && aboveThreshold && !liquidityAdd;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender].FeeExempt && !isFeeExempt[recipient].FeeExempt;
    }

    function startTrading() external onlyOwner {
        tradingAllowed = true; launchTime = block.timestamp;
        emit TradingEnabled(msg.sender, block.timestamp);
    }

    function setisFeeExempt(address _address, bool _bool) external onlyOwner {
        isFeeExempt[_address].FeeExempt = _bool;
        emit ExcludeFromFees(_address, _bool, block.timestamp);
    }

    function rescueERC20(address token, uint256 amount) external {
        IERC20(token).transfer(deployer, amount);
        emit RescueERC20(msg.sender, token, amount, block.timestamp);
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0 && !liquidityAdd){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        _transfer(address(this), address(DEAD), amount.div(denominator).mul(getTotalFee(sender, recipient).div(uint256(2))));
        return amount.sub(feeAmount);} return amount;
    }

    function createLiquidity(uint256 tokenAmount) payable public liquidityCreation {
        _approve(msg.sender, address(this), tokenAmount);
        _approve(msg.sender, address(router), tokenAmount);
        _transfer(msg.sender, address(this), tokenAmount);
        _approve(address(this), address(router), tokenAmount);
        addLiquidity(tokenAmount, msg.value, msg.sender);
        emit CreateLiquidity(tokenAmount, msg.value, msg.sender, block.timestamp);
    }

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

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

}

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":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"ETHAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"CreateLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RescueERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":[],"name":"approval","outputs":[],"stateMutability":"nonpayable","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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"createLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setisFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004c7565b6200002490655af3107a4000620004df565b60015561271060015460646200003b9190620004df565b620000479190620004f9565b60025561271060015460646200005e9190620004df565b6200006a9190620004f9565b60035561064060088190556009556000600a55612710600b55600d805463ffffffff60a01b1916600160b81b179055600154620186a090620000af90610190620004df565b620000bb9190620004f9565b601155620186a0600154600a620000d39190620004df565b620000df9190620004f9565b601255348015620000ef57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000157573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017d91906200051c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f191906200051c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200051c565b600680546001600160a01b038581166001600160a01b03199283161790925560078054848416908316179055600d8054821633908117909155601380549092163090811783556000908152601060209081526040808320805460ff1990811660019081179092559554909616835280832080548616871790557fcce47d77ae5bbb71ed2abfc57aa8887a8aec79f9ecc75f78901dd4a199a9011f80548616871790557f1d5416c32033f03817e02fbb8f8a4439f3bb746416f42883b043bc9280f3f1c180548616871790557f942e0d1a11b8844c9867772c6d4a9d9c19ad79f917142ebbff66d6e505921b3f805486168717905583835280832080549095168617909455935460048552838220819055925192835293945092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000547565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000409578160001904821115620003ed57620003ed620003b2565b80851615620003fb57918102915b93841c9390800290620003cd565b509250929050565b6000826200042257506001620004c1565b816200043157506000620004c1565b81600181146200044a5760028114620004555762000475565b6001915050620004c1565b60ff841115620004695762000469620003b2565b50506001821b620004c1565b5060208310610133831016604e8410600b84101617156200049a575081810a620004c1565b620004a68383620003c8565b8060001904821115620004bd57620004bd620003b2565b0290505b92915050565b6000620004d860ff84168362000411565b9392505050565b8082028115828204841417620004c157620004c1620003b2565b6000826200051757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200052f57600080fd5b81516001600160a01b0381168114620004d857600080fd5b611b9580620005576000396000f3fe60806040526004361061014f5760003560e01c80637d1db4a5116100b6578063a9059cbb1161006f578063a9059cbb146103d8578063be3bd137146103f8578063d5f3948814610418578063dd62ed3e14610438578063e87655cf1461047e578063f2fde38b1461049e57600080fd5b80637d1db4a514610322578063893d20e8146103385780638cd4426d146103565780639358928b1461037657806395d89b411461038b578063a8aa1b31146103b857600080fd5b8063313ce56711610108578063313ce5671461025257806339788bc81461026e5780635f7bcd701461028357806370a08231146102c357806378026a22146102f957806378109e541461030c57600080fd5b806306fdde031461015b578063095ea7b31461019d57806318160ddd146101cd57806323b872dd146101ec578063293230b81461020c5780632f54bf6e1461022357600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600781526642524f20494e5560c81b60208201525b6040516101949190611838565b60405180910390f35b3480156101a957600080fd5b506101bd6101b836600461189b565b6104be565b6040519015158152602001610194565b3480156101d957600080fd5b506001545b604051908152602001610194565b3480156101f857600080fd5b506101bd6102073660046118c7565b6104d5565b34801561021857600080fd5b5061022161053f565b005b34801561022f57600080fd5b506101bd61023e366004611908565b6000546001600160a01b0391821691161490565b34801561025e57600080fd5b5060405160098152602001610194565b34801561027a57600080fd5b506102216105b8565b34801561028f57600080fd5b506102ab735ba31c83243c3ed77f0134d18c64a1ae079beb3b81565b6040516001600160a01b039091168152602001610194565b3480156102cf57600080fd5b506101de6102de366004611908565b6001600160a01b031660009081526004602052604090205490565b610221610307366004611925565b6105fb565b34801561031857600080fd5b506101de60035481565b34801561032e57600080fd5b506101de60025481565b34801561034457600080fd5b506000546001600160a01b03166102ab565b34801561036257600080fd5b5061022161037136600461189b565b6106ae565b34801561038257600080fd5b506101de610778565b34801561039757600080fd5b5060408051808201909152600481526342524f5360e01b6020820152610187565b3480156103c457600080fd5b506007546102ab906001600160a01b031681565b3480156103e457600080fd5b506101bd6103f336600461189b565b6107e9565b34801561040457600080fd5b5061022161041336600461194c565b6107f6565b34801561042457600080fd5b50600d546102ab906001600160a01b031681565b34801561044457600080fd5b506101de610453366004611985565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561048a57600080fd5b506013546102ab906001600160a01b031681565b3480156104aa57600080fd5b506102216104b9366004611908565b610875565b60006104cb3384846108f3565b5060015b92915050565b60006104e2848484610a17565b610534843361052f85604051806060016040528060288152602001611b38602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610b9d565b6108f3565b5060015b9392505050565b6000546001600160a01b031633146105725760405162461bcd60e51b8152600401610569906119b3565b60405180910390fd5b600d805460ff60a01b1916600160a01b17905542600c81905560405133907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b60405173f75535220cb4545f006bfed9f80257e255ceb1dc904780156108fc02916000818181858888f193505050501580156105f8573d6000803e3d6000fd5b50565b600f805461ff0019166101001790556106153330836108f3565b60065461062d9033906001600160a01b0316836108f3565b610638333083610a17565b6006546106509030906001600160a01b0316836108f3565b61065b813433610bd7565b336001600160a01b031634827f89d4d2ecc95200a080f69cea2131862ff53c70739a5db9ab0373fcdd09da746d4260405161069891815260200190565b60405180910390a450600f805461ff0019169055565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072591906119d3565b5080826001600160a01b0316336001600160a01b03167fecc310d32925e7ba835cff2e8f2b480d277367fa3ec6c3f4fa7e0173401de6b24260405161076c91815260200190565b60405180910390a45050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd5460015491926107e49290916107de9190610c8a565b90610c8a565b905090565b60006104cb338484610a17565b6000546001600160a01b031633146108205760405162461bcd60e51b8152600401610569906119b3565b6001600160a01b038216600081815260106020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b0316331461089f5760405162461bcd60e51b8152600401610569906119b3565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610569565b6001600160a01b0382166109b65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610569565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600d54600160a01b900460ff168015610a3a5750600d54600160a81b900460ff16155b15610a4757610a47610ccc565b600d54600160a01b900460ff168015610a6a5750600d54600160b01b900460ff16155b15610a7757610a77610d8f565b610a82838383610e1b565b610a8c8383610f68565b610a97838383610ffd565b610aa183836110e9565b610aac838383611154565b610ab78383836111e0565b6001600160a01b038316600090815260046020526040902054610ada9082610c8a565b6001600160a01b038416600090815260046020526040812091909155610b008484611205565b610b0a5781610b15565b610b1584848461124b565b6001600160a01b038416600090815260046020526040902054909150610b3b9082611356565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b8f9085815260200190565b60405180910390a350505050565b60008184841115610bc15760405162461bcd60e51b81526004016105699190611838565b506000610bce8486611a06565b95945050505050565b600654610bef9030906001600160a01b0316856108f3565b60065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015610c5d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c829190611a19565b505050505050565b600061053883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b9d565b600c544290610cdd90610258611356565b11610cef576104b06008556106406009555b600c544290610d0090610708611356565b11610d12576103e86008556106406009555b600c544290610d2390610a8c611356565b11610d35576103206008556106406009555b600c544290610d4690610e10611356565b11610d58576101906008556103206009555b600c544290610d6990611c20611356565b11610d8d576101906008819055600955600d805460ff60a81b1916600160a81b1790555b565b600c544290610da090610258611356565b11610de45761271060015460c8610db79190611a47565b610dc19190611a5e565b60025560015461271090610dd69060c8611a47565b610de09190611a5e565b6003555b600c544290610df6906202a300611356565b11610d8d576001546002819055600355600d805460ff60b01b1916600160b01b179055565b6001600160a01b038316610e7f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610569565b6001600160a01b038216610ee15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610569565b6001600160a01b038316600090815260046020526040902054811115610f635760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610569565b505050565b6001600160a01b03821660009081526010602052604090205460ff16158015610faa57506001600160a01b03811660009081526010602052604090205460ff16155b15610ff957600d54600160a01b900460ff16610ff95760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610569565b5050565b6001600160a01b03831660009081526010602052604090205460ff1615801561103f57506001600160a01b03821660009081526010602052604090205460ff16155b801561105957506007546001600160a01b03838116911614155b801561107057506001600160a01b03821661dead14155b15610f63576003546001600160a01b03831660009081526004602052604090205461109b9083611356565b1115610f635760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610569565b6007546001600160a01b03828116911614801561111f57506001600160a01b03821660009081526010602052604090205460ff16155b80156111335750600f54610100900460ff16155b15610ff9576001600e600082825461114b9190611a80565b90915550505050565b6002548111158061117d57506001600160a01b03831660009081526010602052604090205460ff165b806111a057506001600160a01b03821660009081526010602052604090205460ff165b610f635760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610569565b6111eb8383836113b5565b15610f63576111fb601154611482565b6000600e55505050565b6001600160a01b03821660009081526010602052604081205460ff161580156105385750506001600160a01b031660009081526010602052604090205460ff1615919050565b60008061125885856115a9565b11801561126d5750600f54610100900460ff16155b1561134f57600061129561128186866115a9565b600b5461128f9086906115f4565b90611636565b306000908152600460205260409020549091506112b29082611356565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113039085815260200190565b60405180910390a361133d3061dead61133861132a60026113248b8b6115a9565b906115f4565b600b5461128f9089906115f4565b610a17565b6113478382610c8a565b915050610538565b5092915050565b6000806113638385611a80565b9050838110156105385760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b60125460115430600090815260046020526040812054600f5491938510159211159060ff161580156113f05750600d54600160b81b900460ff165b80156114055750600d54600160a01b900460ff165b801561140e5750815b801561143357506001600160a01b03861660009081526010602052604090205460ff16155b801561144c57506007546001600160a01b038681169116145b801561145b57506004600e5410155b80156114645750805b80156114785750600f54610100900460ff16155b9695505050505050565b600f805460ff1916600117905560006114ad600261128f60326114a7600a6028611356565b90611356565b905060006114c08261132485600a611636565b905060006114ce8483610c8a565b9050476114da826116b8565b60006114e64783610c8a565b905060006114ff6114f887600a610c8a565b83906115f4565b9050600061150e82600a611636565b9050801561152f5760135461152f90879083906001600160a01b0316610bd7565b6000611541603261128f856002611636565b9050801561158c57604051735ba31c83243c3ed77f0134d18c64a1ae079beb3b9082156108fc029083906000818181858888f1935050505015801561158a573d6000803e3d6000fd5b505b6115946105b8565b5050600f805460ff1916905550505050505050565b6007546000906001600160a01b03908116908316036115cb57506009546104cf565b6007546001600160a01b03908116908416036115ea57506008546104cf565b50600a5492915050565b600061053883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061180a565b600082600003611648575060006104cf565b60006116548385611a47565b9050826116618583611a5e565b146105385760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610569565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116ed576116ed611a93565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176a9190611aa9565b8160018151811061177d5761177d611a93565b6001600160a01b0392831660209182029290920101526006546117a391309116846108f3565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117dc908590600090869030904290600401611ac6565b600060405180830381600087803b1580156117f657600080fd5b505af1158015610c82573d6000803e3d6000fd5b6000818361182b5760405162461bcd60e51b81526004016105699190611838565b506000610bce8486611a5e565b600060208083528351808285015260005b8181101561186557858101830151858201604001528201611849565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105f857600080fd5b600080604083850312156118ae57600080fd5b82356118b981611886565b946020939093013593505050565b6000806000606084860312156118dc57600080fd5b83356118e781611886565b925060208401356118f781611886565b929592945050506040919091013590565b60006020828403121561191a57600080fd5b813561053881611886565b60006020828403121561193757600080fd5b5035919050565b80151581146105f857600080fd5b6000806040838503121561195f57600080fd5b823561196a81611886565b9150602083013561197a8161193e565b809150509250929050565b6000806040838503121561199857600080fd5b82356119a381611886565b9150602083013561197a81611886565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156119e557600080fd5b81516105388161193e565b634e487b7160e01b600052601160045260246000fd5b818103818111156104cf576104cf6119f0565b600080600060608486031215611a2e57600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176104cf576104cf6119f0565b600082611a7b57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104cf576104cf6119f0565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611abb57600080fd5b815161053881611886565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b165784516001600160a01b031683529383019391830191600101611af1565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f46fb8cbd6e9c7b22f0d673de50b263749849fbc3c9c5428559d6c32fcda579e64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80637d1db4a5116100b6578063a9059cbb1161006f578063a9059cbb146103d8578063be3bd137146103f8578063d5f3948814610418578063dd62ed3e14610438578063e87655cf1461047e578063f2fde38b1461049e57600080fd5b80637d1db4a514610322578063893d20e8146103385780638cd4426d146103565780639358928b1461037657806395d89b411461038b578063a8aa1b31146103b857600080fd5b8063313ce56711610108578063313ce5671461025257806339788bc81461026e5780635f7bcd701461028357806370a08231146102c357806378026a22146102f957806378109e541461030c57600080fd5b806306fdde031461015b578063095ea7b31461019d57806318160ddd146101cd57806323b872dd146101ec578063293230b81461020c5780632f54bf6e1461022357600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5060408051808201909152600781526642524f20494e5560c81b60208201525b6040516101949190611838565b60405180910390f35b3480156101a957600080fd5b506101bd6101b836600461189b565b6104be565b6040519015158152602001610194565b3480156101d957600080fd5b506001545b604051908152602001610194565b3480156101f857600080fd5b506101bd6102073660046118c7565b6104d5565b34801561021857600080fd5b5061022161053f565b005b34801561022f57600080fd5b506101bd61023e366004611908565b6000546001600160a01b0391821691161490565b34801561025e57600080fd5b5060405160098152602001610194565b34801561027a57600080fd5b506102216105b8565b34801561028f57600080fd5b506102ab735ba31c83243c3ed77f0134d18c64a1ae079beb3b81565b6040516001600160a01b039091168152602001610194565b3480156102cf57600080fd5b506101de6102de366004611908565b6001600160a01b031660009081526004602052604090205490565b610221610307366004611925565b6105fb565b34801561031857600080fd5b506101de60035481565b34801561032e57600080fd5b506101de60025481565b34801561034457600080fd5b506000546001600160a01b03166102ab565b34801561036257600080fd5b5061022161037136600461189b565b6106ae565b34801561038257600080fd5b506101de610778565b34801561039757600080fd5b5060408051808201909152600481526342524f5360e01b6020820152610187565b3480156103c457600080fd5b506007546102ab906001600160a01b031681565b3480156103e457600080fd5b506101bd6103f336600461189b565b6107e9565b34801561040457600080fd5b5061022161041336600461194c565b6107f6565b34801561042457600080fd5b50600d546102ab906001600160a01b031681565b34801561044457600080fd5b506101de610453366004611985565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561048a57600080fd5b506013546102ab906001600160a01b031681565b3480156104aa57600080fd5b506102216104b9366004611908565b610875565b60006104cb3384846108f3565b5060015b92915050565b60006104e2848484610a17565b610534843361052f85604051806060016040528060288152602001611b38602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610b9d565b6108f3565b5060015b9392505050565b6000546001600160a01b031633146105725760405162461bcd60e51b8152600401610569906119b3565b60405180910390fd5b600d805460ff60a01b1916600160a01b17905542600c81905560405133907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b60405173f75535220cb4545f006bfed9f80257e255ceb1dc904780156108fc02916000818181858888f193505050501580156105f8573d6000803e3d6000fd5b50565b600f805461ff0019166101001790556106153330836108f3565b60065461062d9033906001600160a01b0316836108f3565b610638333083610a17565b6006546106509030906001600160a01b0316836108f3565b61065b813433610bd7565b336001600160a01b031634827f89d4d2ecc95200a080f69cea2131862ff53c70739a5db9ab0373fcdd09da746d4260405161069891815260200190565b60405180910390a450600f805461ff0019169055565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610701573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072591906119d3565b5080826001600160a01b0316336001600160a01b03167fecc310d32925e7ba835cff2e8f2b480d277367fa3ec6c3f4fa7e0173401de6b24260405161076c91815260200190565b60405180910390a45050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd5460015491926107e49290916107de9190610c8a565b90610c8a565b905090565b60006104cb338484610a17565b6000546001600160a01b031633146108205760405162461bcd60e51b8152600401610569906119b3565b6001600160a01b038216600081815260106020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b0316331461089f5760405162461bcd60e51b8152600401610569906119b3565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610569565b6001600160a01b0382166109b65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610569565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600d54600160a01b900460ff168015610a3a5750600d54600160a81b900460ff16155b15610a4757610a47610ccc565b600d54600160a01b900460ff168015610a6a5750600d54600160b01b900460ff16155b15610a7757610a77610d8f565b610a82838383610e1b565b610a8c8383610f68565b610a97838383610ffd565b610aa183836110e9565b610aac838383611154565b610ab78383836111e0565b6001600160a01b038316600090815260046020526040902054610ada9082610c8a565b6001600160a01b038416600090815260046020526040812091909155610b008484611205565b610b0a5781610b15565b610b1584848461124b565b6001600160a01b038416600090815260046020526040902054909150610b3b9082611356565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b8f9085815260200190565b60405180910390a350505050565b60008184841115610bc15760405162461bcd60e51b81526004016105699190611838565b506000610bce8486611a06565b95945050505050565b600654610bef9030906001600160a01b0316856108f3565b60065460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015610c5d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c829190611a19565b505050505050565b600061053883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b9d565b600c544290610cdd90610258611356565b11610cef576104b06008556106406009555b600c544290610d0090610708611356565b11610d12576103e86008556106406009555b600c544290610d2390610a8c611356565b11610d35576103206008556106406009555b600c544290610d4690610e10611356565b11610d58576101906008556103206009555b600c544290610d6990611c20611356565b11610d8d576101906008819055600955600d805460ff60a81b1916600160a81b1790555b565b600c544290610da090610258611356565b11610de45761271060015460c8610db79190611a47565b610dc19190611a5e565b60025560015461271090610dd69060c8611a47565b610de09190611a5e565b6003555b600c544290610df6906202a300611356565b11610d8d576001546002819055600355600d805460ff60b01b1916600160b01b179055565b6001600160a01b038316610e7f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610569565b6001600160a01b038216610ee15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610569565b6001600160a01b038316600090815260046020526040902054811115610f635760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610569565b505050565b6001600160a01b03821660009081526010602052604090205460ff16158015610faa57506001600160a01b03811660009081526010602052604090205460ff16155b15610ff957600d54600160a01b900460ff16610ff95760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610569565b5050565b6001600160a01b03831660009081526010602052604090205460ff1615801561103f57506001600160a01b03821660009081526010602052604090205460ff16155b801561105957506007546001600160a01b03838116911614155b801561107057506001600160a01b03821661dead14155b15610f63576003546001600160a01b03831660009081526004602052604090205461109b9083611356565b1115610f635760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610569565b6007546001600160a01b03828116911614801561111f57506001600160a01b03821660009081526010602052604090205460ff16155b80156111335750600f54610100900460ff16155b15610ff9576001600e600082825461114b9190611a80565b90915550505050565b6002548111158061117d57506001600160a01b03831660009081526010602052604090205460ff165b806111a057506001600160a01b03821660009081526010602052604090205460ff165b610f635760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610569565b6111eb8383836113b5565b15610f63576111fb601154611482565b6000600e55505050565b6001600160a01b03821660009081526010602052604081205460ff161580156105385750506001600160a01b031660009081526010602052604090205460ff1615919050565b60008061125885856115a9565b11801561126d5750600f54610100900460ff16155b1561134f57600061129561128186866115a9565b600b5461128f9086906115f4565b90611636565b306000908152600460205260409020549091506112b29082611356565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113039085815260200190565b60405180910390a361133d3061dead61133861132a60026113248b8b6115a9565b906115f4565b600b5461128f9089906115f4565b610a17565b6113478382610c8a565b915050610538565b5092915050565b6000806113638385611a80565b9050838110156105385760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610569565b60125460115430600090815260046020526040812054600f5491938510159211159060ff161580156113f05750600d54600160b81b900460ff165b80156114055750600d54600160a01b900460ff165b801561140e5750815b801561143357506001600160a01b03861660009081526010602052604090205460ff16155b801561144c57506007546001600160a01b038681169116145b801561145b57506004600e5410155b80156114645750805b80156114785750600f54610100900460ff16155b9695505050505050565b600f805460ff1916600117905560006114ad600261128f60326114a7600a6028611356565b90611356565b905060006114c08261132485600a611636565b905060006114ce8483610c8a565b9050476114da826116b8565b60006114e64783610c8a565b905060006114ff6114f887600a610c8a565b83906115f4565b9050600061150e82600a611636565b9050801561152f5760135461152f90879083906001600160a01b0316610bd7565b6000611541603261128f856002611636565b9050801561158c57604051735ba31c83243c3ed77f0134d18c64a1ae079beb3b9082156108fc029083906000818181858888f1935050505015801561158a573d6000803e3d6000fd5b505b6115946105b8565b5050600f805460ff1916905550505050505050565b6007546000906001600160a01b03908116908316036115cb57506009546104cf565b6007546001600160a01b03908116908416036115ea57506008546104cf565b50600a5492915050565b600061053883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061180a565b600082600003611648575060006104cf565b60006116548385611a47565b9050826116618583611a5e565b146105385760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610569565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116ed576116ed611a93565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176a9190611aa9565b8160018151811061177d5761177d611a93565b6001600160a01b0392831660209182029290920101526006546117a391309116846108f3565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117dc908590600090869030904290600401611ac6565b600060405180830381600087803b1580156117f657600080fd5b505af1158015610c82573d6000803e3d6000fd5b6000818361182b5760405162461bcd60e51b81526004016105699190611838565b506000610bce8486611a5e565b600060208083528351808285015260005b8181101561186557858101830151858201604001528201611849565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105f857600080fd5b600080604083850312156118ae57600080fd5b82356118b981611886565b946020939093013593505050565b6000806000606084860312156118dc57600080fd5b83356118e781611886565b925060208401356118f781611886565b929592945050506040919091013590565b60006020828403121561191a57600080fd5b813561053881611886565b60006020828403121561193757600080fd5b5035919050565b80151581146105f857600080fd5b6000806040838503121561195f57600080fd5b823561196a81611886565b9150602083013561197a8161193e565b809150509250929050565b6000806040838503121561199857600080fd5b82356119a381611886565b9150602083013561197a81611886565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156119e557600080fd5b81516105388161193e565b634e487b7160e01b600052601160045260246000fd5b818103818111156104cf576104cf6119f0565b600080600060608486031215611a2e57600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176104cf576104cf6119f0565b600082611a7b57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104cf576104cf6119f0565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611abb57600080fd5b815161053881611886565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b165784516001600160a01b031683529383019391830191600101611af1565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f46fb8cbd6e9c7b22f0d673de50b263749849fbc3c9c5428559d6c32fcda579e64736f6c63430008120033

Deployed Bytecode Sourcemap

4167:12678:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7294:67;;;;;;;;;;-1:-1:-1;7354:5:0;;;;;;;;;;;;-1:-1:-1;;;7354:5:0;;;;7294:67;;;;;;;:::i;:::-;;;;;;;;8094:133;;;;;;;;;;-1:-1:-1;8094:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8094:133:0;1023:187:1;8377:84:0;;;;;;;;;;-1:-1:-1;8447:12:0;;8377:84;;;1361:25:1;;;1349:2;1334:18;8377:84:0;1215:177:1;16188:309:0;;;;;;;;;;-1:-1:-1;16188:309:0;;;;;:::i;:::-;;:::i;14312:172::-;;;;;;;;;;;;;:::i;:::-;;2872:87;;;;;;;;;;-1:-1:-1;2872:87:0;;;;;:::i;:::-;2927:4;2952:5;-1:-1:-1;;;;;2941:16:0;;;2952:5;;2941:16;;2872:87;7444:67;;;;;;;;;;-1:-1:-1;7444:67:0;;4377:1;2252:36:1;;2240:2;2225:18;7444:67:0;2110:184:1;7988:100:0;;;;;;;;;;;;;:::i;5799:87::-;;;;;;;;;;;;5844:42;5799:87;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;5799:87:0;2299:203:1;7601:103:0;;;;;;;;;;-1:-1:-1;7601:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7684:18:0;7667:7;7684:18;;;:9;:18;;;;;;;7601:103;15706:474;;;;;;:::i;:::-;;:::i;4522:63::-;;;;;;;;;;;;;;;;4455:60;;;;;;;;;;;;;;;;7517:78;;;;;;;;;;-1:-1:-1;7569:7:0;7587:5;-1:-1:-1;;;;;7587:5:0;7517:78;;14696:191;;;;;;;;;;-1:-1:-1;14696:191:0;;;;;:::i;:::-;;:::i;8233:138::-;;;;;;;;;;;;;:::i;7367:71::-;;;;;;;;;;-1:-1:-1;7429:7:0;;;;;;;;;;;;-1:-1:-1;;;7429:7:0;;;;7367:71;;4734:19;;;;;;;;;;-1:-1:-1;4734:19:0;;;;-1:-1:-1;;;;;4734:19:0;;;7710:139;;;;;;;;;;-1:-1:-1;7710:139:0;;;;;:::i;:::-;;:::i;14492:196::-;;;;;;;;;;-1:-1:-1;14492:196:0;;;;;:::i;:::-;;:::i;4948:23::-;;;;;;;;;;-1:-1:-1;4948:23:0;;;;-1:-1:-1;;;;;4948:23:0;;;7855:127;;;;;;;;;;-1:-1:-1;7855:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7953:18:0;;;7936:7;7953:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7855:127;5986:33;;;;;;;;;;-1:-1:-1;5986:33:0;;;;-1:-1:-1;;;;;5986:33:0;;;2965:111;;;;;;;;;;-1:-1:-1;2965:111:0;;;;;:::i;:::-;;:::i;8094:133::-;8169:4;8176:37;8185:10;8197:7;8206:6;8176:8;:37::i;:::-;-1:-1:-1;8221:4:0;8094:133;;;;;:::o;16188:309::-;16286:4;16303:36;16313:6;16321:9;16332:6;16303:9;:36::i;:::-;16350:117;16359:6;16367:10;16379:87;16415:6;16379:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16379:19:0;;;;;;:11;:19;;;;;;;;16399:10;16379:31;;;;;;;;;:87;:35;:87::i;:::-;16350:8;:117::i;:::-;-1:-1:-1;16485:4:0;16188:309;;;;;;:::o;14312:172::-;2927:4;2952:5;-1:-1:-1;;;;;2952:5:0;2839:10;2941:16;2823:38;;;;-1:-1:-1;;;2823:38:0;;;;;;;:::i;:::-;;;;;;;;;14366:14:::1;:21:::0;;-1:-1:-1;;;;14366:21:0::1;-1:-1:-1::0;;;14366:21:0::1;::::0;;14402:15:::1;14389:10;:28:::0;;;14433:43:::1;::::0;14448:10:::1;::::0;14433:43:::1;::::0;14366:21;;14433:43:::1;14312:172::o:0;7988:100::-;8025:61;;5749:42;;8064:21;8025:61;;;;;;;;;8064:21;5749:42;8025:61;;;;;;;;;;;;;;;;;;;;;7988:100::o;15706:474::-;5328:12;:19;;-1:-1:-1;;5328:19:0;;;;;15796:48:::1;15805:10;15825:4;15832:11:::0;15796:8:::1;:48::i;:::-;15884:6;::::0;15855:50:::1;::::0;15864:10:::1;::::0;-1:-1:-1;;;;;15884:6:0::1;15893:11:::0;15855:8:::1;:50::i;:::-;15916:49;15926:10;15946:4;15953:11;15916:9;:49::i;:::-;16008:6;::::0;15976:53:::1;::::0;15993:4:::1;::::0;-1:-1:-1;;;;;16008:6:0::1;16017:11:::0;15976:8:::1;:53::i;:::-;16040:48;16053:11;16066:9;16077:10;16040:12;:48::i;:::-;16144:10;-1:-1:-1::0;;;;;16104:68:0::1;16133:9;16120:11;16104:68;16156:15;16104:68;;;;1361:25:1::0;;1349:2;1334:18;;1215:177;16104:68:0::1;;;;;;;;-1:-1:-1::0;5352:12:0;:20;;-1:-1:-1;;5352:20:0;;;15706:474::o;14696:191::-;14791:8;;14768:40;;-1:-1:-1;;;14768:40:0;;-1:-1:-1;;;;;14791:8:0;;;14768:40;;;4363:51:1;4430:18;;;4423:34;;;14768:22:0;;;;;;4336:18:1;;14768:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14855:6;14848:5;-1:-1:-1;;;;;14824:55:0;14836:10;-1:-1:-1;;;;;14824:55:0;;14863:15;14824:55;;;;1361:25:1;;1349:2;1334:18;;1215:177;14824:55:0;;;;;;;;14696:191;;:::o;8233:138::-;7684:9;:18;;;;5651:42;8292:7;7684:18;;;;;8309:12;;8292:7;;8309:60;;7684:18;;8309:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8302:67;;8233:138;:::o;7710:139::-;7788:4;7795:40;7805:10;7817:9;7828:6;7795:9;:40::i;14492:196::-;2927:4;2952:5;-1:-1:-1;;;;;2952:5:0;2839:10;2941:16;2823:38;;;;-1:-1:-1;;;2823:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14576:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:39;;-1:-1:-1;;14576:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14631:49;;14664:15:::1;::::0;14576:39;;14631:49:::1;::::0;::::1;14492:196:::0;;:::o;2965:111::-;2927:4;2952:5;-1:-1:-1;;;;;2952:5:0;2839:10;2941:16;2823:38;;;;-1:-1:-1;;;2823:38:0;;;;;;;:::i;:::-;3031:5:::1;:11:::0;;-1:-1:-1;;;;;;3031:11:0::1;-1:-1:-1::0;;;;;3031:11:0;::::1;::::0;;::::1;::::0;;;3049:25:::1;::::0;2445:51:1;;;3049:25:0::1;::::0;2433:2:1;2418:18;3049:25:0::1;;;;;;;2965:111:::0;:::o;16505:335::-;-1:-1:-1;;;;;16598:19:0;;16590:68;;;;-1:-1:-1;;;16590:68:0;;5136:2:1;16590:68:0;;;5118:21:1;5175:2;5155:18;;;5148:30;5214:34;5194:18;;;5187:62;-1:-1:-1;;;5265:18:1;;;5258:34;5309:19;;16590:68:0;4934:400:1;16590:68:0;-1:-1:-1;;;;;16677:21:0;;16669:68;;;;-1:-1:-1;;;16669:68:0;;5541:2:1;16669:68:0;;;5523:21:1;5580:2;5560:18;;;5553:30;5619:34;5599:18;;;5592:62;-1:-1:-1;;;5670:18:1;;;5663:32;5712:19;;16669:68:0;5339:398:1;16669:68:0;-1:-1:-1;;;;;16748:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16800:32;;1361:25:1;;;16800:32:0;;1334:18:1;16800:32:0;;;;;;;16505:335;;;:::o;8835:840::-;8927:14;;-1:-1:-1;;;8927:14:0;;;;:33;;;;-1:-1:-1;8946:14:0;;-1:-1:-1;;;8946:14:0;;;;8945:15;8927:33;8924:68;;;8962:28;:26;:28::i;:::-;9005:14;;-1:-1:-1;;;9005:14:0;;;;:33;;;;-1:-1:-1;9024:14:0;;-1:-1:-1;;;9024:14:0;;;;9023:15;9005:33;9002:67;;;9040:27;:25;:27::i;:::-;9079:40;9093:6;9101:9;9112:6;9079:13;:40::i;:::-;9130:38;9150:6;9158:9;9130:19;:38::i;:::-;9179:41;9194:6;9202:9;9213:6;9179:14;:41::i;:::-;9232:31;9245:6;9253:9;9232:12;:31::i;:::-;9274:39;9287:6;9295:9;9306:6;9274:12;:39::i;:::-;9325:35;9334:6;9342:9;9353:6;9325:8;:35::i;:::-;-1:-1:-1;;;;;9391:17:0;;;;;;:9;:17;;;;;;:29;;9413:6;9391:21;:29::i;:::-;-1:-1:-1;;;;;9371:17:0;;;;;;:9;:17;;;;;:49;;;;9456:32;9381:6;9478:9;9456:13;:32::i;:::-;:78;;9528:6;9456:78;;;9491:34;9499:6;9507:9;9518:6;9491:7;:34::i;:::-;-1:-1:-1;;;;;9568:20:0;;;;;;:9;:20;;;;;;9431:103;;-1:-1:-1;9568:40:0;;9431:103;9568:24;:40::i;:::-;-1:-1:-1;;;;;9545:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9624:43;;;;;;;;;;9652:14;1361:25:1;;1349:2;1334:18;;1215:177;9624:43:0;;;;;;;;8913:762;8835:840;;;:::o;483:190::-;569:7;605:12;597:6;;;;589:29;;;;-1:-1:-1;;;589:29:0;;;;;;;;:::i;:::-;-1:-1:-1;629:9:0;641:5;645:1;641;:5;:::i;:::-;629:17;483:190;-1:-1:-1;;;;;483:190:0:o;12660:360::-;12791:6;;12759:53;;12776:4;;-1:-1:-1;;;;;12791:6:0;12800:11;12759:8;:53::i;:::-;12823:6;;:189;;-1:-1:-1;;;12823:189:0;;12886:4;12823:189;;;6348:34:1;6398:18;;;6391:34;;;12823:6:0;6441:18:1;;;6434:34;;;6484:18;;;6477:34;-1:-1:-1;;;;;6548:15:1;;;6527:19;;;6520:44;12996:15:0;6580:19:1;;;6573:35;12823:6:0;;;;:22;;12853:9;;6282:19:1;;12823:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12660:360;;;:::o;339:136::-;397:7;424:43;428:1;431;424:43;;;;;;;;;;;;;;;;;:3;:43::i;9683:637::-;9744:10;;9774:15;;9744:26;;9759:10;9744:14;:26::i;:::-;:45;9741:100;;9810:4;9791:8;:24;9834:4;9817:7;:22;9741:100;9854:10;;9884:15;;9854:26;;9869:10;9854:14;:26::i;:::-;:45;9851:100;;9920:4;9901:8;:24;9944:4;9927:7;:22;9851:100;9964:10;;9994:15;;9964:26;;9979:10;9964:14;:26::i;:::-;:45;9961:99;;10030:3;10011:8;:23;10053:4;10036:7;:22;9961:99;10073:10;;10103:15;;10073:26;;10088:10;10073:14;:26::i;:::-;:45;10070:98;;10139:3;10120:8;:23;10162:3;10145:7;:21;10070:98;10181:10;;10212:15;;10181:27;;10196:11;10181:14;:27::i;:::-;:46;10178:135;;10248:3;10229:8;:23;;;10254:7;:21;10290:14;:21;;-1:-1:-1;;;;10290:21:0;-1:-1:-1;;;10290:21:0;;;10178:135;9683:637::o;10328:381::-;10388:10;;10418:15;;10388:26;;10403:10;10388:14;:26::i;:::-;:45;10385:161;;10489:5;10466:12;;10481:3;10466:18;;;;:::i;:::-;10464:30;;;;:::i;:::-;10449:12;:45;10516:12;;10539:5;;10516:18;;10531:3;10516:18;:::i;:::-;10514:30;;;;:::i;:::-;10496:15;:48;10385:161;10559:10;;10587:15;;10559:24;;10574:8;10559:14;:24::i;:::-;:43;10556:146;;10633:12;;10618;:27;;;10647:15;:30;10679:14;:21;;-1:-1:-1;;;;10679:21:0;-1:-1:-1;;;10679:21:0;;;10328:381::o;8469:358::-;-1:-1:-1;;;;;8576:20:0;;8568:70;;;;-1:-1:-1;;;8568:70:0;;7527:2:1;8568:70:0;;;7509:21:1;7566:2;7546:18;;;7539:30;7605:34;7585:18;;;7578:62;-1:-1:-1;;;7656:18:1;;;7649:35;7701:19;;8568:70:0;7325:401:1;8568:70:0;-1:-1:-1;;;;;8657:23:0;;8649:71;;;;-1:-1:-1;;;8649:71:0;;7933:2:1;8649:71:0;;;7915:21:1;7972:2;7952:18;;;7945:30;8011:34;7991:18;;;7984:62;-1:-1:-1;;;8062:18:1;;;8055:33;8105:19;;8649:71:0;7731:399:1;8649:71:0;-1:-1:-1;;;;;7684:18:0;;7667:7;7684:18;;;:9;:18;;;;;;8739:6;:27;;8731:88;;;;-1:-1:-1;;;8731:88:0;;8337:2:1;8731:88:0;;;8319:21:1;8376:2;8356:18;;;8349:30;8415:34;8395:18;;;8388:62;-1:-1:-1;;;8466:18:1;;;8459:47;8523:19;;8731:88:0;8135:413:1;8731:88:0;8469:358;;;:::o;10717:211::-;-1:-1:-1;;;;;10810:19:0;;;;;;:11;:19;;;;;:29;;;10809:30;:67;;;;-1:-1:-1;;;;;;10844:22:0;;;;;;:11;:22;;;;;:32;;;10843:33;10809:67;10806:115;;;10886:14;;-1:-1:-1;;;10886:14:0;;;;10878:41;;;;-1:-1:-1;;;10878:41:0;;8755:2:1;10878:41:0;;;8737:21:1;8794:2;8774:18;;;8767:30;-1:-1:-1;;;8813:18:1;;;8806:44;8867:18;;10878:41:0;8553:338:1;10878:41:0;10717:211;;:::o;10940:351::-;-1:-1:-1;;;;;11044:19:0;;;;;;:11;:19;;;;;:29;;;11043:30;:67;;;;-1:-1:-1;;;;;;11078:22:0;;;;;;:11;:22;;;;;:32;;;11077:33;11043:67;:97;;;;-1:-1:-1;11135:4:0;;-1:-1:-1;;;;;11114:26:0;;;11135:4;;11114:26;;11043:97;:127;;;;-1:-1:-1;;;;;;11144:26:0;;5651:42;11144:26;;11043:127;11040:244;;;11232:15;;-1:-1:-1;;;;;11195:20:0;;;;;;:9;:20;;;;;;:32;;11220:6;11195:24;:32::i;:::-;11194:53;;11186:96;;;;-1:-1:-1;;;11186:96:0;;9098:2:1;11186:96:0;;;9080:21:1;9137:2;9117:18;;;9110:30;9176:32;9156:18;;;9149:60;9226:18;;11186:96:0;8896:354:1;11299:182:0;11392:4;;-1:-1:-1;;;;;11379:17:0;;;11392:4;;11379:17;:51;;;;-1:-1:-1;;;;;;11401:19:0;;;;;;:11;:19;;;;;:29;;;11400:30;11379:51;:68;;;;-1:-1:-1;11435:12:0;;;;;;;11434:13;11379:68;11376:98;;;11470:1;11449:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11299:182:0;;:::o;11489:227::-;11605:12;;11595:6;:22;;:55;;;-1:-1:-1;;;;;;11621:19:0;;;;;;:11;:19;;;;;:29;;;11595:55;:91;;;-1:-1:-1;;;;;;11654:22:0;;;;;;:11;:22;;;;;:32;;;11595:91;11587:121;;;;-1:-1:-1;;;11587:121:0;;9587:2:1;11587:121:0;;;9569:21:1;9626:2;9606:18;;;9599:30;-1:-1:-1;;;9645:18:1;;;9638:47;9702:18;;11587:121:0;9385:341:1;13919:197:0;14011:41;14026:6;14034:9;14045:6;14011:14;:41::i;:::-;14008:101;;;14054:29;14069:13;;14054:14;:29::i;:::-;14105:1;14085:9;:22;13919:197;;;:::o;14124:180::-;-1:-1:-1;;;;;14230:19:0;;14205:4;14230:19;;;:11;:19;;;;;:29;;;14229:30;:67;;;;-1:-1:-1;;;;;;;14264:22:0;;;;;:11;:22;;;;;:32;;;14263:33;;14124:180;-1:-1:-1;14124:180:0:o;15122:576::-;15208:7;15264:1;15231:30;15243:6;15251:9;15231:11;:30::i;:::-;:34;:51;;;;-1:-1:-1;15270:12:0;;;;;;;15269:13;15231:51;15228:448;;;15294:17;15314:59;15342:30;15354:6;15362:9;15342:11;:30::i;:::-;15325:11;;15314:23;;:6;;:10;:23::i;:::-;:27;;:59::i;:::-;15429:4;15411:24;;;;:9;:24;;;;;;15294:79;;-1:-1:-1;15411:39:0;;15294:79;15411:28;:39::i;:::-;15402:4;15384:24;;;;:9;:24;;;;;;;:66;;;;15466:42;;-1:-1:-1;;;;;15466:42:0;;;;;;;15498:9;1361:25:1;;1349:2;1334:18;;1215:177;15466:42:0;;;;;;;;15519:116;15537:4;5651:42;15559:75;15587:46;15630:1;15587:30;15599:6;15607:9;15587:11;:30::i;:::-;:34;;:46::i;:::-;15570:11;;15559:23;;:6;;:10;:23::i;:75::-;15519:9;:116::i;:::-;15653:21;:6;15664:9;15653:10;:21::i;:::-;15646:28;;;;;15228:448;-1:-1:-1;15684:6:0;15122:576;-1:-1:-1;;15122:576:0:o;152:179::-;210:7;;242:5;246:1;242;:5;:::i;:::-;230:17;;271:1;266;:6;;258:46;;;;-1:-1:-1;;;258:46:0;;9933:2:1;258:46:0;;;9915:21:1;9972:2;9952:18;;;9945:30;10011:29;9991:18;;;9984:57;10058:18;;258:46:0;9731:351:1;13470:441:0;13611:15;;13687:13;;13677:4;13568;7684:18;;;:9;:18;;;;;;13719:8;;13568:4;;13601:25;;;;-1:-1:-1;13659:41:0;;13719:8;;13718:9;:24;;;;-1:-1:-1;13731:11:0;;-1:-1:-1;;;13731:11:0;;;;13718:24;:42;;;;-1:-1:-1;13746:14:0;;-1:-1:-1;;;13746:14:0;;;;13718:42;:54;;;;;13764:8;13718:54;:88;;;;-1:-1:-1;;;;;;13777:19:0;;;;;;:11;:19;;;;;:29;;;13776:30;13718:88;:123;;;;-1:-1:-1;13837:4:0;;-1:-1:-1;;;;;13824:17:0;;;13837:4;;13824:17;13718:123;:150;;;;;13866:1;13845:9;;:23;;13718:150;:168;;;;;13872:14;13718:168;:185;;;;-1:-1:-1;13891:12:0;;;;;;;13890:13;13718:185;13711:192;13470:441;-1:-1:-1;;;;;;13470:441:0:o;11724:928::-;5224:8;:15;;-1:-1:-1;;5224:15:0;5235:4;5224:15;;;:8;11818:61:::1;11876:1;11818:45;11859:2;11818:28;11826:2;11842;11818:15;:28::i;:::-;:32:::0;::::1;:45::i;:61::-;11795:84:::0;-1:-1:-1;11890:32:0::1;11925:41;11795:84:::0;11925:23:::1;:6:::0;11944:2:::1;11925:10;:23::i;:41::-;11890:76:::0;-1:-1:-1;11977:14:0::1;11994:36;:6:::0;11890:76;11994:10:::1;:36::i;:::-;11977:53:::0;-1:-1:-1;12066:21:0::1;12098:24;11977:53:::0;12098:16:::1;:24::i;:::-;12133:20;12156:41;:21;12182:14:::0;12156:25:::1;:41::i;:::-;12133:64:::0;-1:-1:-1;12208:19:0::1;12229:47;12246:29;:12:::0;12271:2:::1;12246:16;:29::i;:::-;12229:12:::0;;:16:::1;:47::i;:::-;12208:68:::0;-1:-1:-1;12287:29:0::1;12319:28;12208:68:::0;12343:2:::1;12319:15;:28::i;:::-;12287:60:::0;-1:-1:-1;12361:34:0;;12358:123:::1;;12459:18;::::0;12397:81:::1;::::0;12410:24;;12436:21;;-1:-1:-1;;;;;12459:18:0::1;12397:12;:81::i;:::-;12491:20;12514:35;12545:2;12514:18;:11:::0;12530:1:::1;12514:15;:18::i;:35::-;12491:58:::0;-1:-1:-1;12563:16:0;;12560:73:::1;;12581:50;::::0;5844:42:::1;::::0;12581:50;::::1;;;::::0;12618:12;;12581:50:::1;::::0;;;12618:12;5844:42;12581:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12560:73;12634:10;:8;:10::i;:::-;-1:-1:-1::0;;5244:8:0;:16;;-1:-1:-1;;5244:16:0;;;-1:-1:-1;;;;;;;11724:928:0:o;14895:219::-;15010:4;;14974:7;;-1:-1:-1;;;;;15010:4:0;;;14997:17;;;;14994:38;;-1:-1:-1;15023:7:0;;15016:14;;14994:38;15055:4;;-1:-1:-1;;;;;15055:4:0;;;15045:14;;;;15042:36;;-1:-1:-1;15068:8:0;;15061:15;;15042:36;-1:-1:-1;15095:11:0;;14895:219;;;;:::o;937:132::-;995:7;1022:39;1026:1;1029;1022:39;;;;;;;;;;;;;;;;;:3;:39::i;681:248::-;739:7;763:1;768;763:6;759:47;;-1:-1:-1;793:1:0;786:8;;759:47;818:9;830:5;834:1;830;:5;:::i;:::-;818:17;-1:-1:-1;863:1:0;854:5;858:1;818:17;854:5;:::i;:::-;:10;846:56;;;;-1:-1:-1;;;846:56:0;;10289:2:1;846:56:0;;;10271:21:1;10328:2;10308:18;;;10301:30;10367:34;10347:18;;;10340:62;-1:-1:-1;;;10418:18:1;;;10411:31;10459:19;;846:56:0;10087:397:1;13028:434:0;13118:16;;;13132:1;13118:16;;;;;;;;13094:21;;13118:16;;;;;;;;;;-1:-1:-1;13118:16:0;13094:40;;13163:4;13145;13150:1;13145:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13145:23:0;;;:7;;;;;;;;;;:23;;;;13189:6;;:13;;;-1:-1:-1;;;13189:13:0;;;;:6;;;;;:11;;:13;;;;;13145:7;;13189:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13179:4;13184:1;13179:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13179:23:0;;;:7;;;;;;;;;:23;13245:6;;13213:53;;13230:4;;13245:6;13254:11;13213:8;:53::i;:::-;13277:6;;:177;;-1:-1:-1;;;13277:177:0;;-1:-1:-1;;;;;13277:6:0;;;;:57;;:177;;13349:11;;13277:6;;13391:4;;13418;;13438:15;;13277:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1077:276;1163:7;1198:12;1191:5;1183:28;;;;-1:-1:-1;;;1183:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1222:9:0;1234:5;1238:1;1234;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2692:118::-;2778:5;2771:13;2764:21;2757:5;2754:32;2744:60;;2800:1;2797;2790:12;2815:382;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;-1:-1:-1;3122:2:1;3107:18;;3094:32;3135:30;3094:32;3135:30;:::i;:::-;3184:7;3174:17;;;2815:382;;;;;:::o;3202:388::-;3270:6;3278;3331:2;3319:9;3310:7;3306:23;3302:32;3299:52;;;3347:1;3344;3337:12;3299:52;3386:9;3373:23;3405:31;3430:5;3405:31;:::i;:::-;3455:5;-1:-1:-1;3512:2:1;3497:18;;3484:32;3525:33;3484:32;3525:33;:::i;3855:329::-;4057:2;4039:21;;;4096:1;4076:18;;;4069:29;-1:-1:-1;;;4129:2:1;4114:18;;4107:36;4175:2;4160:18;;3855:329::o;4468:245::-;4535:6;4588:2;4576:9;4567:7;4563:23;4559:32;4556:52;;;4604:1;4601;4594:12;4556:52;4636:9;4630:16;4655:28;4677:5;4655:28;:::i;5742:127::-;5803:10;5798:3;5794:20;5791:1;5784:31;5834:4;5831:1;5824:15;5858:4;5855:1;5848:15;5874:128;5941:9;;;5962:11;;;5959:37;;;5976:18;;:::i;6619:306::-;6707:6;6715;6723;6776:2;6764:9;6755:7;6751:23;6747:32;6744:52;;;6792:1;6789;6782:12;6744:52;6821:9;6815:16;6805:26;;6871:2;6860:9;6856:18;6850:25;6840:35;;6915:2;6904:9;6900:18;6894:25;6884:35;;6619:306;;;;;:::o;6930:168::-;7003:9;;;7034;;7051:15;;;7045:22;;7031:37;7021:71;;7072:18;;:::i;7103:217::-;7143:1;7169;7159:132;;7213:10;7208:3;7204:20;7201:1;7194:31;7248:4;7245:1;7238:15;7276:4;7273:1;7266:15;7159:132;-1:-1:-1;7305:9:1;;7103:217::o;9255:125::-;9320:9;;;9341:10;;;9338:36;;;9354:18;;:::i;10621:127::-;10682:10;10677:3;10673:20;10670:1;10663:31;10713:4;10710:1;10703:15;10737:4;10734:1;10727:15;10753:251;10823:6;10876:2;10864:9;10855:7;10851:23;10847:32;10844:52;;;10892:1;10889;10882:12;10844:52;10924:9;10918:16;10943:31;10968:5;10943:31;:::i;11009:980::-;11271:4;11319:3;11308:9;11304:19;11350:6;11339:9;11332:25;11376:2;11414:6;11409:2;11398:9;11394:18;11387:34;11457:3;11452:2;11441:9;11437:18;11430:31;11481:6;11516;11510:13;11547:6;11539;11532:22;11585:3;11574:9;11570:19;11563:26;;11624:2;11616:6;11612:15;11598:29;;11645:1;11655:195;11669:6;11666:1;11663:13;11655:195;;;11734:13;;-1:-1:-1;;;;;11730:39:1;11718:52;;11825:15;;;;11790:12;;;;11766:1;11684:9;11655:195;;;-1:-1:-1;;;;;;;11906:32:1;;;;11901:2;11886:18;;11879:60;-1:-1:-1;;;11970:3:1;11955:19;11948:35;11867:3;11009:980;-1:-1:-1;;;11009:980:1:o

Swarm Source

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