ETH Price: $2,508.71 (-0.64%)

Token

SantaFloki (HoHoHo)
 

Overview

Max Total Supply

25,120,000,000 HoHoHo

Holders

84

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
110,000,000 HoHoHo

Value
$0.00
0xb68793b66cc250b505eddb0e4b14b3c450e18e7d
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:
SantaFlokiERC

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-19
*/

// SPDX-License-Identifier: MIT

/*

TG: https://t.me/Santa_Floki
X: https://twitter.com/Santa_Floki
Web: https://santafloki.com/

*/

pragma solidity 0.8.21;

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 ERC20 {
    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 Auth {
    address public 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 renounceOwnership() external onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(owner);
    }
    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

contract SantaFlokiERC is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "SantaFloki";
    string public constant symbol = "HoHoHo";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 25_120_000_000 * 10**decimals;

    uint256 public _maxWalletToken = totalSupply / 50;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public marketingFee = 3;
    uint256 public operationsFee = 1;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 500;
    uint256 sellMultiplier = 500;
    uint256 transferMultiplier = 0;

    address public marketingFeeReceiver;
    address public operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    uint256 public swapThreshold = totalSupply / 500;
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xc9ef4155183B3227318a42733825B5Fac324D3db;
        operationsFeeReceiver = 0x9791B53E3ed5Eb9D4B18063C187FEe2350bBf21d;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingFeeReceiver] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[marketingFeeReceiver] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent(uint256 _newmaxwallet) external onlyOwner {
        require(_newmaxwallet >= 2,"Cannot set max wallet less than 2%");
        _maxWalletToken = (totalSupply * _newmaxwallet ) / 100;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!isFeeExempt[sender]){
            require(tradingOpen,"trading not open yet");
        }

        if (!isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function manualSwap() external {
        payable(operationsFeeReceiver).transfer(address(this).balance);
    }

    function openTrading() external onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOps = (amountETH * operationsFee) / totalFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(operationsFeeReceiver).transfer(amountETHOps);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees(uint256 _marketing, uint256 _ops) external onlyOwner {
        marketingFee = _marketing;
        operationsFee = _ops;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(tokenAddress != address(this), "Cannot withdraw native token");

        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }

        return ERC20(tokenAddress).transfer(operationsFeeReceiver, tokens);
    }

    function clearStuckBalance(uint256 amountPercentage) external {
        require(amountPercentage <= 100, "Max 100%");
        uint256 amountBNB = address(this).balance;
        uint256 amountToClear = ( amountBNB * amountPercentage ) / 100;
        payable(operationsFeeReceiver).transfer(amountToClear);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_ops","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxwallet","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]

60c06040526032620000146012600a620004c5565b62000025906405d944c800620004dc565b620000319190620004f6565b6001556003600655600160075560075460065462000050919062000516565b6008556101f46009819055600a8181555f600b55600e805461ffff60a01b191690556200008090601290620004c5565b62000091906405d944c800620004dc565b6200009d9190620004f6565b600f55348015620000ac575f80fd5b505f8054336001600160a01b031991821617909155600e8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200011a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014091906200052c565b6001600160a01b03908116608052600e546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200018f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b591906200052c565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000204573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022a91906200052c565b6001600160a01b0390811660a052305f818152600360209081526040808320600e548616845282528083205f199055600c80546001600160a01b031990811673c9ef4155183b3227318a42733825b5fac324d3db178255600d8054909116739791b53e3ed5eb9d4b18063c187fee2350bbf21d1790553380855260048452828520805460ff199081166001908117909255835489168752848720805482168317905591865260059094528285208054821685179055905490951683528083208054861683179055928252918120805484168317905561dead90527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549092161790556200033b6012600a620004c5565b6200034c906405d944c800620004dc565b335f81815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200038e6012600a620004c5565b6200039f906405d944c800620004dc565b60405190815260200160405180910390a362000554565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040a57815f1904821115620003ee57620003ee620003b6565b80851615620003fc57918102915b93841c9390800290620003cf565b509250929050565b5f826200042257506001620004bf565b816200043057505f620004bf565b8160018114620004495760028114620004545762000474565b6001915050620004bf565b60ff841115620004685762000468620003b6565b50506001821b620004bf565b5060208310610133831016604e8410600b841016171562000499575081810a620004bf565b620004a58383620003ca565b805f1904821115620004bb57620004bb620003b6565b0290505b92915050565b5f620004d560ff84168362000412565b9392505050565b8082028115828204841417620004bf57620004bf620003b6565b5f826200051157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004bf57620004bf620003b6565b5f602082840312156200053d575f80fd5b81516001600160a01b0381168114620004d5575f80fd5b60805160a051611cf6620005925f395f818161061d01528181611019015281816113080152818161155b015261158f01525f6113cf0152611cf65ff3fe608060405260043610610229575f3560e01c80636b67c4df1161012957806395d89b41116100a8578063dd62ed3e1161006d578063dd62ed3e146106a0578063df20fd49146106e4578063e96fada214610703578063f887ea4014610722578063ffb54a9914610741575f80fd5b806395d89b41146105db578063a8aa1b311461060c578063a9059cbb1461063f578063c867d60b1461065e578063c9567bf91461068c575f80fd5b806377b54bad116100ee57806377b54bad1461054e57806378109e541461056d57806382bf293c14610582578063893d20e8146105a15780638da5cb5b146105bd575f80fd5b80636b67c4df146104bb5780636ce46bc3146104d05780636ddd1713146104ef57806370a082311461050f578063715018a61461053a575f80fd5b806318160ddd116101b55780632f54bf6e1161017a5780632f54bf6e14610407578063313ce567146104345780633f4218e01461045a57806351bc3c8514610488578063571ac8b01461049c575f80fd5b806318160ddd1461038c5780631da1db5e146103a05780631df4ccfc146103bf57806323b872dd146103d45780632b112e49146103f3575f80fd5b806306fdde03116101fb57806306fdde03146102d3578063090896be14610315578063095ea7b31461032a5780630b78f9c014610359578063180b0d7e14610378575f80fd5b806210868314610234578062bff4461461025557806303382cbb146102745780630445b667146102b0575f80fd5b3661023057005b5f80fd5b34801561023f575f80fd5b5061025361024e366004611824565b610761565b005b348015610260575f80fd5b5061025361026f366004611824565b610826565b34801561027f575f80fd5b50600d54610293906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102bb575f80fd5b506102c5600f5481565b6040519081526020016102a7565b3480156102de575f80fd5b506103086040518060400160405280600a81526020016953616e7461466c6f6b6960b01b81525081565b6040516102a791906118a3565b348015610320575f80fd5b506102c560075481565b348015610335575f80fd5b50610349610344366004611909565b6108dc565b60405190151581526020016102a7565b348015610364575f80fd5b50610253610373366004611931565b610948565b348015610383575f80fd5b506102c5606481565b348015610397575f80fd5b506102c561097c565b3480156103ab575f80fd5b506102536103ba366004611951565b61099a565b3480156103ca575f80fd5b506102c560085481565b3480156103df575f80fd5b506103496103ee366004611968565b610a26565b3480156103fe575f80fd5b506102c5610ae4565b348015610412575f80fd5b506103496104213660046119a1565b5f546001600160a01b0391821691161490565b34801561043f575f80fd5b50610448601281565b60405160ff90911681526020016102a7565b348015610465575f80fd5b506103496104743660046119a1565b60046020525f908152604090205460ff1681565b348015610493575f80fd5b50610253610b6b565b3480156104a7575f80fd5b506103496104b63660046119a1565b610ba4565b3480156104c6575f80fd5b506102c560065481565b3480156104db575f80fd5b506102536104ea3660046119ba565b610bb0565b3480156104fa575f80fd5b50600e5461034990600160a81b900460ff1681565b34801561051a575f80fd5b506102c56105293660046119a1565b60026020525f908152604090205481565b348015610545575f80fd5b50610253610bea565b348015610559575f80fd5b50610349610568366004611909565b610c57565b348015610578575f80fd5b506102c560015481565b34801561058d575f80fd5b5061025361059c366004611951565b610d94565b3480156105ac575f80fd5b505f546001600160a01b0316610293565b3480156105c8575f80fd5b505f54610293906001600160a01b031681565b3480156105e6575f80fd5b5061030860405180604001604052806006815260200165486f486f486f60d01b81525081565b348015610617575f80fd5b506102937f000000000000000000000000000000000000000000000000000000000000000081565b34801561064a575f80fd5b50610349610659366004611909565b610e51565b348015610669575f80fd5b506103496106783660046119a1565b60056020525f908152604090205460ff1681565b348015610697575f80fd5b50610253610e5d565b3480156106ab575f80fd5b506102c56106ba3660046119e3565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106ef575f80fd5b506102536106fe366004611a14565b610e9d565b34801561070e575f80fd5b50600c54610293906001600160a01b031681565b34801561072d575f80fd5b50600e54610293906001600160a01b031681565b34801561074c575f80fd5b50600e5461034990600160a01b900460ff1681565b5f546001600160a01b031633146107935760405162461bcd60e51b815260040161078a90611a30565b60405180910390fd5b6101f582106107b45760405162461bcd60e51b815260040161078a90611a50565b5f5b82811015610820578160055f8686858181106107d4576107d4611a95565b90506020020160208101906107e991906119a1565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905561081981611abd565b90506107b6565b50505050565b5f546001600160a01b0316331461084f5760405162461bcd60e51b815260040161078a90611a30565b6101f582106108705760405162461bcd60e51b815260040161078a90611a50565b5f5b82811015610820578160045f86868581811061089057610890611a95565b90506020020160208101906108a591906119a1565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556108d581611abd565b9050610872565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109369086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109715760405162461bcd60e51b815260040161078a90611a30565b600691909155600755565b6109886012600a611bb5565b610997906405d944c800611bc3565b81565b60648111156109d65760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b604482015260640161078a565b475f60646109e48484611bc3565b6109ee9190611bda565b600d546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610820573d5f803e3d5ffd5b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610acf576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610aab918490610f0a565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610ada848484610f42565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54909190610b436012600a611bb5565b610b52906405d944c800611bc3565b610b5c9190611bf9565b610b669190611bf9565b905090565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610ba1573d5f803e3d5ffd5b50565b5f610942825f196108dc565b5f546001600160a01b03163314610bd95760405162461bcd60e51b815260040161078a90611a30565b600a91909155600991909155600b55565b5f546001600160a01b03163314610c135760405162461bcd60e51b815260040161078a90611a30565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f306001600160a01b03841603610cb05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e00000000604482015260640161078a565b815f03610d20576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610cf9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1d9190611c0c565b91505b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610d70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610add9190611c23565b5f546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161078a90611a30565b6002811015610e195760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261322560f01b606482015260840161078a565b606481610e286012600a611bb5565b610e37906405d944c800611bc3565b610e419190611bc3565b610e4b9190611bda565b60015550565b5f610add338484610f42565b5f546001600160a01b03163314610e865760405162461bcd60e51b815260040161078a90611a30565b600e805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610ec65760405162461bcd60e51b815260040161078a90611a30565b600e805460ff60a81b1916600160a81b8415150217905580610eea6012600a611bb5565b610ef9906405d944c800611bc3565b610f039190611bda565b600f555050565b5f8184841115610f2d5760405162461bcd60e51b815260040161078a91906118a3565b505f610f398486611bf9565b95945050505050565b6010545f9060ff1615610f6157610f5a848484611219565b9050610add565b6001600160a01b0384165f9081526004602052604090205460ff16610fd057600e54600160a01b900460ff16610fd05760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161078a565b6001600160a01b0384165f9081526005602052604090205460ff1615801561101057506001600160a01b0383165f9081526005602052604090205460ff16155b801561104e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156110c7576001546001600160a01b0384165f90815260026020526040902054611079908490611c3e565b11156110c75760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161078a565b6110cf6112fc565b156110dc576110dc61136d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526002909152919091205461112d918490610f0a565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff168061117857506001600160a01b0384165f9081526004602052604090205460ff165b61118c57611187858486611534565b61118e565b825b6001600160a01b0385165f908152600260205260409020549091506111b3908261168d565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112069085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600290915291822054611269918490610f0a565b6001600160a01b038086165f908152600260205260408082209390935590851681522054611297908361168d565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ea9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611339575060105460ff16155b801561134e5750600e54600160a81b900460ff165b8015610b66575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106113ad576113ad611a95565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061140157611401611a95565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac9479161144a91905f90869030904290600401611c51565b5f604051808303815f87803b158015611461575f80fd5b505af1158015611473573d5f803e3d5ffd5b50506008546006544793505f925061148b9084611bc3565b6114959190611bda565b90505f600854600754846114a99190611bc3565b6114b39190611bda565b600c546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156114eb573d5f803e3d5ffd5b50600d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611523573d5f803e3d5ffd5b50506010805460ff19169055505050565b5f8215806115425750600854155b1561154e575081610add565b600b546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169084160361158d5750600a546115cb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036115cb57506009545b5f6115ff6115da606480611bc3565b6115f9846115f36008548a6116eb90919063ffffffff16565b906116eb565b90611769565b9050801561167957305f90815260026020526040902054611620908261168d565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116709085815260200190565b60405180910390a35b61168385826117aa565b9695505050505050565b5f806116998385611c3e565b905083811015610add5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161078a565b5f825f036116fa57505f610942565b5f6117058385611bc3565b9050826117128583611bda565b14610add5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078a565b5f610add83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117eb565b5f610add83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f0a565b5f818361180b5760405162461bcd60e51b815260040161078a91906118a3565b505f610f398486611bda565b8015158114610ba1575f80fd5b5f805f60408486031215611836575f80fd5b833567ffffffffffffffff8082111561184d575f80fd5b818601915086601f830112611860575f80fd5b81358181111561186e575f80fd5b8760208260051b8501011115611882575f80fd5b6020928301955093505084013561189881611817565b809150509250925092565b5f6020808352835180828501525f5b818110156118ce578581018301518582016040015282016118b2565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611904575f80fd5b919050565b5f806040838503121561191a575f80fd5b611923836118ee565b946020939093013593505050565b5f8060408385031215611942575f80fd5b50508035926020909101359150565b5f60208284031215611961575f80fd5b5035919050565b5f805f6060848603121561197a575f80fd5b611983846118ee565b9250611991602085016118ee565b9150604084013590509250925092565b5f602082840312156119b1575f80fd5b610add826118ee565b5f805f606084860312156119cc575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156119f4575f80fd5b6119fd836118ee565b9150611a0b602084016118ee565b90509250929050565b5f8060408385031215611a25575f80fd5b823561192381611817565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611ace57611ace611aa9565b5060010190565b600181815b80851115611b0f57815f1904821115611af557611af5611aa9565b80851615611b0257918102915b93841c9390800290611ada565b509250929050565b5f82611b2557506001610942565b81611b3157505f610942565b8160018114611b475760028114611b5157611b6d565b6001915050610942565b60ff841115611b6257611b62611aa9565b50506001821b610942565b5060208310610133831016604e8410600b8410161715611b90575081810a610942565b611b9a8383611ad5565b805f1904821115611bad57611bad611aa9565b029392505050565b5f610add60ff841683611b17565b808202811582820484141761094257610942611aa9565b5f82611bf457634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561094257610942611aa9565b5f60208284031215611c1c575f80fd5b5051919050565b5f60208284031215611c33575f80fd5b8151610add81611817565b8082018082111561094257610942611aa9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c9f5784516001600160a01b031683529383019391830191600101611c7a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b1eb766279746cfeb2b2944420ecf40182b8a7022a242b83f70c1a4d3d1ed2af64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610229575f3560e01c80636b67c4df1161012957806395d89b41116100a8578063dd62ed3e1161006d578063dd62ed3e146106a0578063df20fd49146106e4578063e96fada214610703578063f887ea4014610722578063ffb54a9914610741575f80fd5b806395d89b41146105db578063a8aa1b311461060c578063a9059cbb1461063f578063c867d60b1461065e578063c9567bf91461068c575f80fd5b806377b54bad116100ee57806377b54bad1461054e57806378109e541461056d57806382bf293c14610582578063893d20e8146105a15780638da5cb5b146105bd575f80fd5b80636b67c4df146104bb5780636ce46bc3146104d05780636ddd1713146104ef57806370a082311461050f578063715018a61461053a575f80fd5b806318160ddd116101b55780632f54bf6e1161017a5780632f54bf6e14610407578063313ce567146104345780633f4218e01461045a57806351bc3c8514610488578063571ac8b01461049c575f80fd5b806318160ddd1461038c5780631da1db5e146103a05780631df4ccfc146103bf57806323b872dd146103d45780632b112e49146103f3575f80fd5b806306fdde03116101fb57806306fdde03146102d3578063090896be14610315578063095ea7b31461032a5780630b78f9c014610359578063180b0d7e14610378575f80fd5b806210868314610234578062bff4461461025557806303382cbb146102745780630445b667146102b0575f80fd5b3661023057005b5f80fd5b34801561023f575f80fd5b5061025361024e366004611824565b610761565b005b348015610260575f80fd5b5061025361026f366004611824565b610826565b34801561027f575f80fd5b50600d54610293906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102bb575f80fd5b506102c5600f5481565b6040519081526020016102a7565b3480156102de575f80fd5b506103086040518060400160405280600a81526020016953616e7461466c6f6b6960b01b81525081565b6040516102a791906118a3565b348015610320575f80fd5b506102c560075481565b348015610335575f80fd5b50610349610344366004611909565b6108dc565b60405190151581526020016102a7565b348015610364575f80fd5b50610253610373366004611931565b610948565b348015610383575f80fd5b506102c5606481565b348015610397575f80fd5b506102c561097c565b3480156103ab575f80fd5b506102536103ba366004611951565b61099a565b3480156103ca575f80fd5b506102c560085481565b3480156103df575f80fd5b506103496103ee366004611968565b610a26565b3480156103fe575f80fd5b506102c5610ae4565b348015610412575f80fd5b506103496104213660046119a1565b5f546001600160a01b0391821691161490565b34801561043f575f80fd5b50610448601281565b60405160ff90911681526020016102a7565b348015610465575f80fd5b506103496104743660046119a1565b60046020525f908152604090205460ff1681565b348015610493575f80fd5b50610253610b6b565b3480156104a7575f80fd5b506103496104b63660046119a1565b610ba4565b3480156104c6575f80fd5b506102c560065481565b3480156104db575f80fd5b506102536104ea3660046119ba565b610bb0565b3480156104fa575f80fd5b50600e5461034990600160a81b900460ff1681565b34801561051a575f80fd5b506102c56105293660046119a1565b60026020525f908152604090205481565b348015610545575f80fd5b50610253610bea565b348015610559575f80fd5b50610349610568366004611909565b610c57565b348015610578575f80fd5b506102c560015481565b34801561058d575f80fd5b5061025361059c366004611951565b610d94565b3480156105ac575f80fd5b505f546001600160a01b0316610293565b3480156105c8575f80fd5b505f54610293906001600160a01b031681565b3480156105e6575f80fd5b5061030860405180604001604052806006815260200165486f486f486f60d01b81525081565b348015610617575f80fd5b506102937f000000000000000000000000d1eb4c61908e74ec942c7f2c435dc6be1dafc09381565b34801561064a575f80fd5b50610349610659366004611909565b610e51565b348015610669575f80fd5b506103496106783660046119a1565b60056020525f908152604090205460ff1681565b348015610697575f80fd5b50610253610e5d565b3480156106ab575f80fd5b506102c56106ba3660046119e3565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106ef575f80fd5b506102536106fe366004611a14565b610e9d565b34801561070e575f80fd5b50600c54610293906001600160a01b031681565b34801561072d575f80fd5b50600e54610293906001600160a01b031681565b34801561074c575f80fd5b50600e5461034990600160a01b900460ff1681565b5f546001600160a01b031633146107935760405162461bcd60e51b815260040161078a90611a30565b60405180910390fd5b6101f582106107b45760405162461bcd60e51b815260040161078a90611a50565b5f5b82811015610820578160055f8686858181106107d4576107d4611a95565b90506020020160208101906107e991906119a1565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905561081981611abd565b90506107b6565b50505050565b5f546001600160a01b0316331461084f5760405162461bcd60e51b815260040161078a90611a30565b6101f582106108705760405162461bcd60e51b815260040161078a90611a50565b5f5b82811015610820578160045f86868581811061089057610890611a95565b90506020020160208101906108a591906119a1565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556108d581611abd565b9050610872565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109369086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146109715760405162461bcd60e51b815260040161078a90611a30565b600691909155600755565b6109886012600a611bb5565b610997906405d944c800611bc3565b81565b60648111156109d65760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b604482015260640161078a565b475f60646109e48484611bc3565b6109ee9190611bda565b600d546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015610820573d5f803e3d5ffd5b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610acf576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600382528381203382529091529190912054610aab918490610f0a565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b610ada848484610f42565b90505b9392505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54909190610b436012600a611bb5565b610b52906405d944c800611bc3565b610b5c9190611bf9565b610b669190611bf9565b905090565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610ba1573d5f803e3d5ffd5b50565b5f610942825f196108dc565b5f546001600160a01b03163314610bd95760405162461bcd60e51b815260040161078a90611a30565b600a91909155600991909155600b55565b5f546001600160a01b03163314610c135760405162461bcd60e51b815260040161078a90611a30565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f306001600160a01b03841603610cb05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e00000000604482015260640161078a565b815f03610d20576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610cf9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1d9190611c0c565b91505b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af1158015610d70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610add9190611c23565b5f546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161078a90611a30565b6002811015610e195760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261322560f01b606482015260840161078a565b606481610e286012600a611bb5565b610e37906405d944c800611bc3565b610e419190611bc3565b610e4b9190611bda565b60015550565b5f610add338484610f42565b5f546001600160a01b03163314610e865760405162461bcd60e51b815260040161078a90611a30565b600e805461ffff60a01b191661010160a01b179055565b5f546001600160a01b03163314610ec65760405162461bcd60e51b815260040161078a90611a30565b600e805460ff60a81b1916600160a81b8415150217905580610eea6012600a611bb5565b610ef9906405d944c800611bc3565b610f039190611bda565b600f555050565b5f8184841115610f2d5760405162461bcd60e51b815260040161078a91906118a3565b505f610f398486611bf9565b95945050505050565b6010545f9060ff1615610f6157610f5a848484611219565b9050610add565b6001600160a01b0384165f9081526004602052604090205460ff16610fd057600e54600160a01b900460ff16610fd05760405162461bcd60e51b81526020600482015260146024820152731d1c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161078a565b6001600160a01b0384165f9081526005602052604090205460ff1615801561101057506001600160a01b0383165f9081526005602052604090205460ff16155b801561104e57507f000000000000000000000000d1eb4c61908e74ec942c7f2c435dc6be1dafc0936001600160a01b0316836001600160a01b031614155b156110c7576001546001600160a01b0384165f90815260026020526040902054611079908490611c3e565b11156110c75760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161078a565b6110cf6112fc565b156110dc576110dc61136d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526002909152919091205461112d918490610f0a565b6001600160a01b0385165f90815260026020908152604080832093909355600490529081205460ff168061117857506001600160a01b0384165f9081526004602052604090205460ff165b61118c57611187858486611534565b61118e565b825b6001600160a01b0385165f908152600260205260409020549091506111b3908261168d565b6001600160a01b038086165f8181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112069085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600290915291822054611269918490610f0a565b6001600160a01b038086165f908152600260205260408082209390935590851681522054611297908361168d565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ea9086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f000000000000000000000000d1eb4c61908e74ec942c7f2c435dc6be1dafc0931614801590611339575060105460ff16155b801561134e5750600e54600160a81b900460ff165b8015610b66575050600f54305f90815260026020526040902054101590565b6010805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106113ad576113ad611a95565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061140157611401611a95565b6001600160a01b039283166020918202929092010152600e54600f5460405163791ac94760e01b8152919092169163791ac9479161144a91905f90869030904290600401611c51565b5f604051808303815f87803b158015611461575f80fd5b505af1158015611473573d5f803e3d5ffd5b50506008546006544793505f925061148b9084611bc3565b6114959190611bda565b90505f600854600754846114a99190611bc3565b6114b39190611bda565b600c546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156114eb573d5f803e3d5ffd5b50600d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611523573d5f803e3d5ffd5b50506010805460ff19169055505050565b5f8215806115425750600854155b1561154e575081610add565b600b546001600160a01b037f000000000000000000000000d1eb4c61908e74ec942c7f2c435dc6be1dafc09381169084160361158d5750600a546115cb565b7f000000000000000000000000d1eb4c61908e74ec942c7f2c435dc6be1dafc0936001600160a01b0316856001600160a01b0316036115cb57506009545b5f6115ff6115da606480611bc3565b6115f9846115f36008548a6116eb90919063ffffffff16565b906116eb565b90611769565b9050801561167957305f90815260026020526040902054611620908261168d565b305f81815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116709085815260200190565b60405180910390a35b61168385826117aa565b9695505050505050565b5f806116998385611c3e565b905083811015610add5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161078a565b5f825f036116fa57505f610942565b5f6117058385611bc3565b9050826117128583611bda565b14610add5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078a565b5f610add83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117eb565b5f610add83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f0a565b5f818361180b5760405162461bcd60e51b815260040161078a91906118a3565b505f610f398486611bda565b8015158114610ba1575f80fd5b5f805f60408486031215611836575f80fd5b833567ffffffffffffffff8082111561184d575f80fd5b818601915086601f830112611860575f80fd5b81358181111561186e575f80fd5b8760208260051b8501011115611882575f80fd5b6020928301955093505084013561189881611817565b809150509250925092565b5f6020808352835180828501525f5b818110156118ce578581018301518582016040015282016118b2565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611904575f80fd5b919050565b5f806040838503121561191a575f80fd5b611923836118ee565b946020939093013593505050565b5f8060408385031215611942575f80fd5b50508035926020909101359150565b5f60208284031215611961575f80fd5b5035919050565b5f805f6060848603121561197a575f80fd5b611983846118ee565b9250611991602085016118ee565b9150604084013590509250925092565b5f602082840312156119b1575f80fd5b610add826118ee565b5f805f606084860312156119cc575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156119f4575f80fd5b6119fd836118ee565b9150611a0b602084016118ee565b90509250929050565b5f8060408385031215611a25575f80fd5b823561192381611817565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611ace57611ace611aa9565b5060010190565b600181815b80851115611b0f57815f1904821115611af557611af5611aa9565b80851615611b0257918102915b93841c9390800290611ada565b509250929050565b5f82611b2557506001610942565b81611b3157505f610942565b8160018114611b475760028114611b5157611b6d565b6001915050610942565b60ff841115611b6257611b62611aa9565b50506001821b610942565b5060208310610133831016604e8410600b8410161715611b90575081810a610942565b611b9a8383611ad5565b805f1904821115611bad57611bad611aa9565b029392505050565b5f610add60ff841683611b17565b808202811582820484141761094257610942611aa9565b5f82611bf457634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561094257610942611aa9565b5f60208284031215611c1c575f80fd5b5051919050565b5f60208284031215611c33575f80fd5b8151610add81611817565b8082018082111561094257610942611aa9565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c9f5784516001600160a01b031683529383019391830191600101611c7a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220b1eb766279746cfeb2b2944420ecf40182b8a7022a242b83f70c1a4d3d1ed2af64736f6c63430008150033

Deployed Bytecode Sourcemap

2973:8863:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9423:310;;;;;;;;;;-1:-1:-1;9423:310:0;;;;;:::i;:::-;;:::i;:::-;;9121:294;;;;;;;;;;-1:-1:-1;9121:294:0;;;;;:::i;:::-;;:::i;4083:36::-;;;;;;;;;;-1:-1:-1;4083:36:0;;;;-1:-1:-1;;;;;4083:36:0;;;;;;-1:-1:-1;;;;;1056:32:1;;;1038:51;;1026:2;1011:18;4083:36:0;;;;;;;;4275:48;;;;;;;;;;;;;;;;;;;1246:25:1;;;1234:2;1219:18;4275:48:0;1100:177:1;3230:42:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3230:42:0;;;;;;;;;;;;:::i;3776:32::-;;;;;;;;;;;;;;;;5553:216;;;;;;;;;;-1:-1:-1;5553:216:0;;;;;:::i;:::-;;:::i;:::-;;;2437:14:1;;2430:22;2412:41;;2400:2;2385:18;5553:216:0;2272:187:1;10655:145:0;;;;;;;;;;-1:-1:-1;10655:145:0;;;;;:::i;:::-;;:::i;3876:44::-;;;;;;;;;;;;3917:3;3876:44;;3370:67;;;;;;;;;;;;;:::i;11373:315::-;;;;;;;;;;-1:-1:-1;11373:315:0;;;;;:::i;:::-;;:::i;3815:54::-;;;;;;;;;;;;;;;;6071:370;;;;;;;;;;-1:-1:-1;6071:370:0;;;;;:::i;:::-;;:::i;11696:137::-;;;;;;;;;;;;;:::i;2204:103::-;;;;;;;;;;-1:-1:-1;2204:103:0;;;;;:::i;:::-;2259:4;2294:5;-1:-1:-1;;;;;2283:16:0;;;2294:5;;2283:16;;2204:103;3326:35;;;;;;;;;;;;3359:2;3326:35;;;;;3598:4:1;3586:17;;;3568:36;;3556:2;3541:18;3326:35:0;3426:184:1;3626:44:0;;;;;;;;;;-1:-1:-1;3626:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8885:112;;;;;;;;;;;;;:::i;5777:122::-;;;;;;;;;;-1:-1:-1;5777:122:0;;;;;:::i;:::-;;:::i;3738:31::-;;;;;;;;;;;;;;;;10449:198;;;;;;;;;;-1:-1:-1;10449:198:0;;;;;:::i;:::-;;:::i;4235:31::-;;;;;;;;;;-1:-1:-1;4235:31:0;;;;-1:-1:-1;;;4235:31:0;;;;;;3504:45;;;;;;;;;;-1:-1:-1;3504:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2315:128;;;;;;;;;;;;;:::i;10995:370::-;;;;;;;;;;-1:-1:-1;10995:370:0;;;;;:::i;:::-;;:::i;3446:49::-;;;;;;;;;;;;;;;;6449:219;;;;;;;;;;-1:-1:-1;6449:219:0;;;;;:::i;:::-;;:::i;5328:78::-;;;;;;;;;;-1:-1:-1;5380:7:0;5398:5;-1:-1:-1;;;;;5398:5:0;5328:78;;2017:20;;;;;;;;;;-1:-1:-1;2017:20:0;;;;-1:-1:-1;;;;;2017:20:0;;;3279:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3279:40:0;;;;;4159:29;;;;;;;;;;;;;;;5907:156;;;;;;;;;;-1:-1:-1;5907:156:0;;;;;:::i;:::-;;:::i;3677:52::-;;;;;;;;;;-1:-1:-1;3677:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9005:108;;;;;;;;;;;;;:::i;5412:133::-;;;;;;;;;;-1:-1:-1;5412:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;5514:19:0;;;5496:7;5514:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;5412:133;10808:179;;;;;;;;;;-1:-1:-1;10808:179:0;;;;;:::i;:::-;;:::i;4041:35::-;;;;;;;;;;-1:-1:-1;4041:35:0;;;;-1:-1:-1;;;;;4041:35:0;;;4128:24;;;;;;;;;;-1:-1:-1;4128:24:0;;;;-1:-1:-1;;;;;4128:24:0;;;4197:31;;;;;;;;;;-1:-1:-1;4197:31:0;;;;-1:-1:-1;;;4197:31:0;;;;;;9423:310;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;;;;;;;;;9557:3:::1;9538:22:::0;::::1;9530:71;;;;-1:-1:-1::0;;;9530:71:0::1;;;;;;;:::i;:::-;9617:9;9612:114;9630:20:::0;;::::1;9612:114;;;9708:6;9672:19;:33;9692:9;;9702:1;9692:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9672:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9672:33:0;:42;;-1:-1:-1;;9672:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9652:3:::1;::::0;::::1;:::i;:::-;;;9612:114;;;;9423:310:::0;;;:::o;9121:294::-;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;9247:3:::1;9228:22:::0;::::1;9220:71;;;;-1:-1:-1::0;;;9220:71:0::1;;;;;;;:::i;:::-;9307:9;9302:106;9320:20:::0;;::::1;9302:106;;;9390:6;9362:11;:25;9374:9;;9384:1;9374:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9362:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9362:25:0;:34;;-1:-1:-1;;9362:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9342:3:::1;::::0;::::1;:::i;:::-;;;9302:106;;5553:216:::0;5657:10;5628:4;5645:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5645:32:0;;;;;;;;;;:41;;;5702:37;5628:4;;5645:32;;5702:37;;;;5680:6;1246:25:1;;1234:2;1219:18;;1100:177;5702:37:0;;;;;;;;-1:-1:-1;5757:4:0;5553:216;;;;;:::o;10655:145::-;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;10736:12:::1;:25:::0;;;;10772:13:::1;:20:::0;10655:145::o;3370:67::-;3425:12;3359:2;3425;:12;:::i;:::-;3408:29;;:14;:29;:::i;:::-;3370:67;:::o;11373:315::-;11474:3;11454:16;:23;;11446:44;;;;-1:-1:-1;;;11446:44:0;;7643:2:1;11446:44:0;;;7625:21:1;7682:1;7662:18;;;7655:29;-1:-1:-1;;;7700:18:1;;;7693:38;7748:18;;11446:44:0;7441:331:1;11446:44:0;11521:21;11501:17;11612:3;11579:28;11591:16;11521:21;11579:28;:::i;:::-;11577:38;;;;:::i;:::-;11634:21;;11626:54;;11553:62;;-1:-1:-1;;;;;;11634:21:0;;11626:54;;;;;11553:62;;11634:21;11626:54;11634:21;11626:54;11553:62;11634:21;11626:54;;;;;;;;;;;;;;;;;;;6071:370;-1:-1:-1;;;;;6191:19:0;;6171:4;6191:19;;;:11;:19;;;;;;;;6211:10;6191:31;;;;;;;;-1:-1:-1;;6191:52:0;6188:186;;6293:69;;;;;;;;;;;-1:-1:-1;;;6293:69:0;;;;;;;;-1:-1:-1;;;;;6293:19:0;;-1:-1:-1;6293:19:0;;;:11;:19;;;;;6313:10;6293:31;;;;;;;;;;:69;;6329:6;;6293:35;:69::i;:::-;-1:-1:-1;;;;;6259:19:0;;;;;;:11;:19;;;;;;;;6279:10;6259:31;;;;;;;:103;6188:186;6393:40;6407:6;6415:9;6426:6;6393:13;:40::i;:::-;6386:47;;6071:370;;;;;;:::o;11696:137::-;11809:9;:15;;;;3106:42;11749:7;11791:15;;;;;11749:7;;11809:15;3425:12;3359:2;3425;:12;:::i;:::-;3408:29;;:14;:29;:::i;:::-;11777;;;;:::i;:::-;:47;;;;:::i;:::-;11769:56;;11696:137;:::o;8885:112::-;8935:21;;8927:62;;-1:-1:-1;;;;;8935:21:0;;;;8967;8927:62;;;;;8935:21;8927:62;8935:21;8927:62;8967:21;8935;8927:62;;;;;;;;;;;;;;;;;;;;;8885:112::o;5777:122::-;5832:4;5856:35;5864:7;-1:-1:-1;;5856:7:0;:35::i;10449:198::-;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;10548:14:::1;:22:::0;;;;10581:13:::1;:20:::0;;;;10612:18:::1;:27:::0;10449:198::o;2315:128::-;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;2390:1:::1;2374:18:::0;;-1:-1:-1;;;;;;2374:18:0::1;::::0;;2408:27:::1;::::0;1038:51:1;;;2408:27:0::1;::::0;1026:2:1;1011:18;2408:27:0::1;;;;;;;2315:128::o:0;10995:370::-;11076:12;11133:4;-1:-1:-1;;;;;11109:29:0;;;11101:70;;;;-1:-1:-1;;;11101:70:0;;8334:2:1;11101:70:0;;;8316:21:1;8373:2;8353:18;;;8346:30;8412;8392:18;;;8385:58;8460:18;;11101:70:0;8132:352:1;11101:70:0;11187:6;11197:1;11187:11;11184:95;;11223:44;;-1:-1:-1;;;11223:44:0;;11261:4;11223:44;;;1038:51:1;-1:-1:-1;;;;;11223:29:0;;;;;1011:18:1;;11223:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11214:53;;11184:95;11327:21;;11298:59;;-1:-1:-1;;;11298:59:0;;-1:-1:-1;;;;;11327:21:0;;;11298:59;;;8852:51:1;8919:18;;;8912:34;;;11298:28:0;;;;;;8825:18:1;;11298:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6449:219::-;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;6556:1:::1;6539:13;:18;;6531:64;;;::::0;-1:-1:-1;;;6531:64:0;;9409:2:1;6531:64:0::1;::::0;::::1;9391:21:1::0;9448:2;9428:18;;;9421:30;9487:34;9467:18;;;9460:62;-1:-1:-1;;;9538:18:1;;;9531:32;9580:19;;6531:64:0::1;9207:398:1::0;6531:64:0::1;6657:3;6639:13:::0;3425:12:::1;3359:2;3425;:12;:::i;:::-;3408:29;::::0;:14:::1;:29;:::i;:::-;6625:27;;;;:::i;:::-;6624:36;;;;:::i;:::-;6606:15;:54:::0;-1:-1:-1;6449:219:0:o;5907:156::-;5987:4;6011:44;6025:10;6037:9;6048:6;6011:13;:44::i;9005:108::-;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;9058:11:::1;:18:::0;;-1:-1:-1;;;;9087:18:0;-1:-1:-1;;;9087:18:0;;;9005:108::o;10808:179::-;2259:4;2294:5;-1:-1:-1;;;;;2294:5:0;2163:10;2283:16;2147:38;;;;-1:-1:-1;;;2147:38:0;;;;;;;:::i;:::-;10904:11:::1;:22:::0;;-1:-1:-1;;;;10904:22:0::1;-1:-1:-1::0;;;10904:22:0;::::1;;;;::::0;;10967:12;3425::::1;3359:2;3425;:12;:::i;:::-;3408:29;::::0;:14:::1;:29;:::i;:::-;10953:26;;;;:::i;:::-;10937:13;:42:::0;-1:-1:-1;;10808:179:0:o;525:192::-;611:7;647:12;639:6;;;;631:29;;;;-1:-1:-1;;;631:29:0;;;;;;;;:::i;:::-;-1:-1:-1;671:9:0;683:5;687:1;683;:5;:::i;:::-;671:17;525:192;-1:-1:-1;;;;;525:192:0:o;6676:923::-;6788:6;;6768:4;;6788:6;;6785:63;;;6804:41;6819:6;6827:9;6838:6;6804:14;:41::i;:::-;6797:48;;;;6785:63;-1:-1:-1;;;;;6864:19:0;;;;;;:11;:19;;;;;;;;6860:94;;6907:11;;-1:-1:-1;;;6907:11:0;;;;6899:43;;;;-1:-1:-1;;;6899:43:0;;9812:2:1;6899:43:0;;;9794:21:1;9851:2;9831:18;;;9824:30;-1:-1:-1;;;9870:18:1;;;9863:50;9930:18;;6899:43:0;9610:344:1;6899:43:0;-1:-1:-1;;;;;6971:27:0;;;;;;:19;:27;;;;;;;;6970:28;:63;;;;-1:-1:-1;;;;;;7003:30:0;;;;;;:19;:30;;;;;;;;7002:31;6970:63;:84;;;;;7050:4;-1:-1:-1;;;;;7037:17:0;:9;-1:-1:-1;;;;;7037:17:0;;;6970:84;6966:203;;;7114:15;;-1:-1:-1;;;;;7080:20:0;;;;;;:9;:20;;;;;;:29;;7103:6;;7080:29;:::i;:::-;7079:50;;7071:86;;;;-1:-1:-1;;;7071:86:0;;10291:2:1;7071:86:0;;;10273:21:1;10330:2;10310:18;;;10303:30;10369:26;10349:18;;;10342:54;10413:18;;7071:86:0;10089:348:1;7071:86:0;7184:16;:14;:16::i;:::-;7181:35;;;7203:10;:8;:10::i;:::-;7248:53;;;;;;;;;;;-1:-1:-1;;;7248:53:0;;;;;;;;-1:-1:-1;;;;;7248:17:0;;-1:-1:-1;7248:17:0;;;:9;:17;;;;;;;;:53;;7270:6;;7248:21;:53::i;:::-;-1:-1:-1;;;;;7228:17:0;;;;;;:9;:17;;;;;;;;:73;;;;7340:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;7363:22:0;;;;;;:11;:22;;;;;;;;7340:45;7339:93;;7398:34;7406:6;7414;7422:9;7398:7;:34::i;:::-;7339:93;;;7389:6;7339:93;-1:-1:-1;;;;;7468:20:0;;;;;;:9;:20;;;;;;7314:118;;-1:-1:-1;7468:40:0;;7314:118;7468:24;:40::i;:::-;-1:-1:-1;;;;;7445:20:0;;;;;;;:9;:20;;;;;;;:63;;;;7526:43;;;;;;;;;;7554:14;1246:25:1;;1234:2;1219:18;;1100:177;7526:43:0;;;;;;;;-1:-1:-1;7587:4:0;;6676:923;-1:-1:-1;;;;6676:923:0:o;7611:330::-;7741:53;;;;;;;;;;;-1:-1:-1;;;7741:53:0;;;;;;;;-1:-1:-1;;;;;7741:17:0;;7704:4;7741:17;;;:9;:17;;;;;;;:53;;7763:6;;7741:21;:53::i;:::-;-1:-1:-1;;;;;7721:17:0;;;;;;;:9;:17;;;;;;:73;;;;7828:20;;;;;;;:32;;7853:6;7828:24;:32::i;:::-;-1:-1:-1;;;;;7805:20:0;;;;;;;:9;:20;;;;;;;:55;;;;7876:35;;;;;;;;;;7904:6;1246:25:1;;1234:2;1219:18;;1100:177;7876:35:0;;;;;;;;-1:-1:-1;7929:4:0;7611:330;;;;;:::o;8680:197::-;8729:4;8753:10;-1:-1:-1;;;;;8767:4:0;8753:18;;;;;:38;;-1:-1:-1;8785:6:0;;;;8784:7;8753:38;:62;;;;-1:-1:-1;8804:11:0;;-1:-1:-1;;;8804:11:0;;;;8753:62;:116;;;;-1:-1:-1;;8856:13:0;;8846:4;8828:24;;;;:9;:24;;;;;;:41;;;8680:197::o;9741:700::-;4376:6;:13;;-1:-1:-1;;4376:13:0;4385:4;4376:13;;;9816:16:::1;::::0;;9830:1:::1;9816:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9816:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9816:16:0::1;9792:40;;9861:4;9843;9848:1;9843:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9843:23:0::1;;;-1:-1:-1::0;;;;;9843:23:0::1;;;::::0;::::1;9887:4;9877;9882:1;9877:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9877:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;9904:6:::1;::::0;9976:13:::1;::::0;9904:189:::1;::::0;-1:-1:-1;;;9904:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;9976:13;9904:6:::1;::::0;10020:4;;10047::::1;::::0;10067:15:::1;::::0;9904:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10218:8:0::1;::::0;10202:12:::1;::::0;10126:21:::1;::::0;-1:-1:-1;10106:17:0::1;::::0;-1:-1:-1;10190:24:0::1;::::0;10126:21;10190:24:::1;:::i;:::-;10189:37;;;;:::i;:::-;10160:66;;10237:20;10290:8;;10273:13;;10261:9;:25;;;;:::i;:::-;10260:38;;;;:::i;:::-;10319:20;::::0;10311:58:::1;::::0;10237:61;;-1:-1:-1;;;;;;10319:20:0::1;::::0;10311:58;::::1;;;::::0;10350:18;;10319:20:::1;10311:58:::0;10319:20;10311:58;10350:18;10319:20;10311:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10388:21:0::1;::::0;10380:53:::1;::::0;-1:-1:-1;;;;;10388:21:0;;::::1;::::0;10380:53;::::1;;;::::0;10420:12;;10388:21:::1;10380:53:::0;10388:21;10380:53;10420:12;10388:21;10380:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4394:6:0;:14;;-1:-1:-1;;4394:14:0;;;-1:-1:-1;;;9741:700:0:o;7949:723::-;8035:7;8058:11;;;:28;;-1:-1:-1;8073:8:0;;:13;8058:28;8055:72;;;-1:-1:-1;8109:6:0;8102:13;;8055:72;8160:18;;-1:-1:-1;;;;;8207:4:0;8194:17;;;;;;8191:154;;-1:-1:-1;8241:14:0;;8191:154;;;8286:4;-1:-1:-1;;;;;8276:14:0;:6;-1:-1:-1;;;;;8276:14:0;;8273:72;;-1:-1:-1;8320:13:0;;8273:72;8357:17;8377:62;8418:20;3917:3;;8418:20;:::i;:::-;8377:36;8402:10;8377:20;8388:8;;8377:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;8357:82;-1:-1:-1;8455:13:0;;8452:172;;8529:4;8511:24;;;;:9;:24;;;;;;:39;;8540:9;8511:28;:39::i;:::-;8502:4;8484:24;;;;:9;:24;;;;;;;:66;;;;8570:42;;-1:-1:-1;;;;;8570:42:0;;;;;;;8602:9;1246:25:1;;1234:2;1219:18;;1100:177;8570:42:0;;;;;;;;8452:172;8643:21;:6;8654:9;8643:10;:21::i;:::-;8636:28;7949:723;-1:-1:-1;;;;;;7949:723:0:o;196:181::-;254:7;;286:5;290:1;286;:5;:::i;:::-;274:17;;315:1;310;:6;;302:46;;;;-1:-1:-1;;;302:46:0;;11761:2:1;302:46:0;;;11743:21:1;11800:2;11780:18;;;11773:30;11839:29;11819:18;;;11812:57;11886:18;;302:46:0;11559:351:1;723:250:0;781:7;805:1;810;805:6;801:47;;-1:-1:-1;835:1:0;828:8;;801:47;860:9;872:5;876:1;872;:5;:::i;:::-;860:17;-1:-1:-1;905:1:0;896:5;900:1;860:17;896:5;:::i;:::-;:10;888:56;;;;-1:-1:-1;;;888:56:0;;12117:2:1;888:56:0;;;12099:21:1;12156:2;12136:18;;;12129:30;12195:34;12175:18;;;12168:62;-1:-1:-1;;;12246:18:1;;;12239:31;12287:19;;888:56:0;11915:397:1;979:132:0;1037:7;1064:39;1068:1;1071;1064:39;;;;;;;;;;;;;;;;;:3;:39::i;383:136::-;441:7;468:43;472:1;475;468:43;;;;;;;;;;;;;;;;;:3;:43::i;1117:189::-;1203:7;1238:12;1231:5;1223:28;;;;-1:-1:-1;;;1223:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1262:9:0;1274:5;1278:1;1274;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:750;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1282:548::-;1394:4;1423:2;1452;1441:9;1434:21;1484:6;1478:13;1527:6;1522:2;1511:9;1507:18;1500:34;1552:1;1562:140;1576:6;1573:1;1570:13;1562:140;;;1671:14;;;1667:23;;1661:30;1637:17;;;1656:2;1633:26;1626:66;1591:10;;1562:140;;;1566:3;1751:1;1746:2;1737:6;1726:9;1722:22;1718:31;1711:42;1821:2;1814;1810:7;1805:2;1797:6;1793:15;1789:29;1778:9;1774:45;1770:54;1762:62;;;;1282:548;;;;:::o;1835:173::-;1903:20;;-1:-1:-1;;;;;1952:31:1;;1942:42;;1932:70;;1998:1;1995;1988:12;1932:70;1835:173;;;:::o;2013:254::-;2081:6;2089;2142:2;2130:9;2121:7;2117:23;2113:32;2110:52;;;2158:1;2155;2148:12;2110:52;2181:29;2200:9;2181:29;:::i;:::-;2171:39;2257:2;2242:18;;;;2229:32;;-1:-1:-1;;;2013:254:1:o;2464:248::-;2532:6;2540;2593:2;2581:9;2572:7;2568:23;2564:32;2561:52;;;2609:1;2606;2599:12;2561:52;-1:-1:-1;;2632:23:1;;;2702:2;2687:18;;;2674:32;;-1:-1:-1;2464:248:1:o;2717:180::-;2776:6;2829:2;2817:9;2808:7;2804:23;2800:32;2797:52;;;2845:1;2842;2835:12;2797:52;-1:-1:-1;2868:23:1;;2717:180;-1:-1:-1;2717:180:1:o;2902:328::-;2979:6;2987;2995;3048:2;3036:9;3027:7;3023:23;3019:32;3016:52;;;3064:1;3061;3054:12;3016:52;3087:29;3106:9;3087:29;:::i;:::-;3077:39;;3135:38;3169:2;3158:9;3154:18;3135:38;:::i;:::-;3125:48;;3220:2;3209:9;3205:18;3192:32;3182:42;;2902:328;;;;;:::o;3235:186::-;3294:6;3347:2;3335:9;3326:7;3322:23;3318:32;3315:52;;;3363:1;3360;3353:12;3315:52;3386:29;3405:9;3386:29;:::i;3615:316::-;3692:6;3700;3708;3761:2;3749:9;3740:7;3736:23;3732:32;3729:52;;;3777:1;3774;3767:12;3729:52;-1:-1:-1;;3800:23:1;;;3870:2;3855:18;;3842:32;;-1:-1:-1;3921:2:1;3906:18;;;3893:32;;3615:316;-1:-1:-1;3615:316:1:o;3936:260::-;4004:6;4012;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:29;4123:9;4104:29;:::i;:::-;4094:39;;4152:38;4186:2;4175:9;4171:18;4152:38;:::i;:::-;4142:48;;3936:260;;;;;:::o;4201:309::-;4266:6;4274;4327:2;4315:9;4306:7;4302:23;4298:32;4295:52;;;4343:1;4340;4333:12;4295:52;4382:9;4369:23;4401:28;4423:5;4401:28;:::i;4741:329::-;4943:2;4925:21;;;4982:1;4962:18;;;4955:29;-1:-1:-1;;;5015:2:1;5000:18;;4993:36;5061:2;5046:18;;4741:329::o;5075:401::-;5277:2;5259:21;;;5316:2;5296:18;;;5289:30;5355:34;5350:2;5335:18;;5328:62;-1:-1:-1;;;5421:2:1;5406:18;;5399:35;5466:3;5451:19;;5075:401::o;5481:127::-;5542:10;5537:3;5533:20;5530:1;5523:31;5573:4;5570:1;5563:15;5597:4;5594:1;5587:15;5613:127;5674:10;5669:3;5665:20;5662:1;5655:31;5705:4;5702:1;5695:15;5729:4;5726:1;5719:15;5745:135;5784:3;5805:17;;;5802:43;;5825:18;;:::i;:::-;-1:-1:-1;5872:1:1;5861:13;;5745:135::o;5885:422::-;5974:1;6017:5;5974:1;6031:270;6052:7;6042:8;6039:21;6031:270;;;6111:4;6107:1;6103:6;6099:17;6093:4;6090:27;6087:53;;;6120:18;;:::i;:::-;6170:7;6160:8;6156:22;6153:55;;;6190:16;;;;6153:55;6269:22;;;;6229:15;;;;6031:270;;;6035:3;5885:422;;;;;:::o;6312:806::-;6361:5;6391:8;6381:80;;-1:-1:-1;6432:1:1;6446:5;;6381:80;6480:4;6470:76;;-1:-1:-1;6517:1:1;6531:5;;6470:76;6562:4;6580:1;6575:59;;;;6648:1;6643:130;;;;6555:218;;6575:59;6605:1;6596:10;;6619:5;;;6643:130;6680:3;6670:8;6667:17;6664:43;;;6687:18;;:::i;:::-;-1:-1:-1;;6743:1:1;6729:16;;6758:5;;6555:218;;6857:2;6847:8;6844:16;6838:3;6832:4;6829:13;6825:36;6819:2;6809:8;6806:16;6801:2;6795:4;6792:12;6788:35;6785:77;6782:159;;;-1:-1:-1;6894:19:1;;;6926:5;;6782:159;6973:34;6998:8;6992:4;6973:34;:::i;:::-;7043:6;7039:1;7035:6;7031:19;7022:7;7019:32;7016:58;;;7054:18;;:::i;:::-;7092:20;;6312:806;-1:-1:-1;;;6312:806:1:o;7123:140::-;7181:5;7210:47;7251:4;7241:8;7237:19;7231:4;7210:47;:::i;7268:168::-;7341:9;;;7372;;7389:15;;;7383:22;;7369:37;7359:71;;7410:18;;:::i;7777:217::-;7817:1;7843;7833:132;;7887:10;7882:3;7878:20;7875:1;7868:31;7922:4;7919:1;7912:15;7950:4;7947:1;7940:15;7833:132;-1:-1:-1;7979:9:1;;7777:217::o;7999:128::-;8066:9;;;8087:11;;;8084:37;;;8101:18;;:::i;8489:184::-;8559:6;8612:2;8600:9;8591:7;8587:23;8583:32;8580:52;;;8628:1;8625;8618:12;8580:52;-1:-1:-1;8651:16:1;;8489:184;-1:-1:-1;8489:184:1:o;8957:245::-;9024:6;9077:2;9065:9;9056:7;9052:23;9048:32;9045:52;;;9093:1;9090;9083:12;9045:52;9125:9;9119:16;9144:28;9166:5;9144:28;:::i;9959:125::-;10024:9;;;10045:10;;;10042:36;;;10058:18;;:::i;10574:980::-;10836:4;10884:3;10873:9;10869:19;10915:6;10904:9;10897:25;10941:2;10979:6;10974:2;10963:9;10959:18;10952:34;11022:3;11017:2;11006:9;11002:18;10995:31;11046:6;11081;11075:13;11112:6;11104;11097:22;11150:3;11139:9;11135:19;11128:26;;11189:2;11181:6;11177:15;11163:29;;11210:1;11220:195;11234:6;11231:1;11228:13;11220:195;;;11299:13;;-1:-1:-1;;;;;11295:39:1;11283:52;;11390:15;;;;11355:12;;;;11331:1;11249:9;11220:195;;;-1:-1:-1;;;;;;;11471:32:1;;;;11466:2;11451:18;;11444:60;-1:-1:-1;;;11535:3:1;11520:19;11513:35;11432:3;10574:980;-1:-1:-1;;;10574:980:1:o

Swarm Source

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