ETH Price: $2,285.21 (-3.45%)

Token

Rock Frog (ROCKFROG)
 

Overview

Max Total Supply

1,000,000,000 ROCKFROG

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
39,433,795.128302962370885382 ROCKFROG

Value
$0.00
0xd280ad40e0375ac5dd61c061aab0e5fdccfaf518
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:
ROCKFROG

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-20
*/

/**
 * https://t.me/rockfrog
 * https://rockfrog.art
 * https://x.com/rockfrogx
 */


// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.19;

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IERC20 {
    function totalSupply() 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 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
    );
}

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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ROCKFROG is IERC20, Ownable {
    using SafeMath for uint256;

    string constant _name = "Rock Frog";
    string constant _symbol = "ROCKFROG";
    uint8 constant _decimals = 18;

    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address public autoLiquidityReceiver;
    address public marketingWallet;

    uint256 _totalSupply = 1_000_000_000 * (10**_decimals);
    uint256 public _maxTxAmount = (_totalSupply * 20) / 1000;
    uint256 public _walletMax = (_totalSupply * 20) / 1000;
    bool public restrictWhales = true;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    bool public tradingOpen = false;

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

    bool public takeBuyFee = true;
    bool public takeSellFee = true;
    bool public takeTransferFee = true;

    uint256 public liquidityFee = 0;
    uint256 public marketingFee = 300;
    uint256 public rewardsFee = 0;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    IDEXRouter public router;
    address public pair;
    mapping(address => bool) public isPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = (_totalSupply * 5) / 1000000;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    event AutoLiquify(uint256 amountETH, uint256 amountToken);

    constructor() {
        autoLiquidityReceiver = msg.sender;
        marketingWallet = 0xBeB26939e9E76DA3E482f0eed398Cb25d2Fe35B5;

        router = IDEXRouter(routerAddress);

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[marketingWallet] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[address(this)] = true;

        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

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

    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 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 createPair() external onlyOwner {
        address pair_weth = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        pair = pair_weth;
        isPair[pair] = true;

        isTxLimitExempt[pair_weth] = true;

        router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            address(0),
            block.timestamp
        );

        tradingOpen = true;
        swapAndLiquifyEnabled = true;
    }

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

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

        require(
            amount <= _maxTxAmount ||
                isTxLimitExempt[sender] ||
                !restrictWhales,
            "TX Limit Exceeded"
        );

        if (isPair[recipient] && !inSwapAndLiquify && swapAndLiquifyEnabled) {
            swapBack();
        }

        if (!isTxLimitExempt[recipient] && restrictWhales) {
            require(
                _balances[recipient].add(amount) <= _walletMax,
                "Wallet Limit Exceeded"
            );
        }

        uint256 finalAmount = takeFee(sender, recipient, amount);
        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);

        return true;
    }

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

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        bool fee = !isFeeExempt[sender] && !isFeeExempt[recipient];
        uint256 feeAmount = 0;
        if (fee) {
            uint256 feeApplicable = 0;

            if (isPair[recipient] && takeSellFee) {
                feeApplicable = totalFeeIfSelling;
            }
            if (isPair[sender] && takeBuyFee) {
                feeApplicable = totalFee;
            }
            if (!isPair[sender] && !isPair[recipient]) {
                if (takeTransferFee) {
                    feeApplicable = totalFeeIfSelling;
                } else {
                    feeApplicable = 0;
                }
            }

            feeAmount = amount.mul(feeApplicable).div(1000);
        } else {
            if (sender == marketingWallet) {
                return amount;
            }
        }

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

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

    function swapBack() internal lockTheSwap {
        uint256 amountToSwap = _balances[address(this)];
        if (amountToSwap >= swapThreshold * 2000)
            amountToSwap = swapThreshold * 2000;

        if (amountToSwap >= swapThreshold) {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = router.WETH();

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

        uint256 amountETH = address(this).balance;

        payable(marketingWallet).transfer(amountETH);
    }

    function changeFees(
        uint256 newLiqFeeThou,
        uint256 newRewardFeeThou,
        uint256 newmarketingFee,
        uint256 extraSellFee
    ) external onlyOwner {
        liquidityFee = newLiqFeeThou;
        rewardsFee = newRewardFeeThou;
        marketingFee = newmarketingFee;

        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee + extraSellFee;
        require(
            totalFee <= 990 && totalFeeIfSelling <= 990,
            "Token: Combined fees must be under %"
        );
    }

    function removeLimits() external onlyOwner {
        _walletMax = type(uint256).max;
        _maxTxAmount = type(uint256).max;
    }

    function removeERC20(address tokenAddress, uint256 tokens)
        public
        onlyOwner
        returns (bool success)
    {
        require(tokenAddress != address(this), "Cant remove the native token");
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function removeEther(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFeeThou","type":"uint256"},{"internalType":"uint256","name":"newRewardFeeThou","type":"uint256"},{"internalType":"uint256","name":"newmarketingFee","type":"uint256"},{"internalType":"uint256","name":"extraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","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":"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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"removeERC20","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"removeEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"pure","type":"function"},{"inputs":[],"name":"takeBuyFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000386012600a620003eb565b6200004890633b9aca00620003fc565b6004556103e860045460146200005f9190620003fc565b6200006b919062000416565b6005556103e86004546014620000829190620003fc565b6200008e919062000416565b60065560078054600160ff1991821617909155600a80549091169055600d805462ffffff1916620101011790556000600e81905561012c600f55601081905560118190556012556016805462ffff0019169055600454620f424090620000f6906005620003fc565b62000102919062000416565b6017553480156200011257600080fd5b506200011e3362000271565b60028054336001600160a01b031991821681179092556003805473beb26939e9e76da3e482f0eed398cb25d2fe35b590831617815560018054601380546001600160a01b039283169516851790553060008181526009602090815260408083209783529681528682206000199055878252600b8152868220805460ff19908116871790915583835287832080548216871790559554841682528682208054871686179055968152600c9096528486208054851684179055601454909116855283852080548416831790558452919092208054909216179055601054600f54600e54620002189291620002119190620002c1565b90620002c1565b601181905560125560045433600081815260086020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200044f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620002cf828462000439565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200032f578160001904821115620003135762000313620002d8565b808516156200032157918102915b93841c9390800290620002f3565b509250929050565b6000826200034857506001620002d2565b816200035757506000620002d2565b81600181146200037057600281146200037b576200039b565b6001915050620002d2565b60ff8411156200038f576200038f620002d8565b50506001821b620002d2565b5060208310610133831016604e8410600b8410161715620003c0575081810a620002d2565b620003cc8383620002ee565b8060001904821115620003e357620003e3620002d8565b029392505050565b6000620002cf60ff84168362000337565b8082028115828204841417620002d257620002d2620002d8565b6000826200043457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620002d257620002d2620002d8565b611a13806200045f6000396000f3fe6080604052600436106102345760003560e01c80637d1db4a51161012e578063a9059cbb116100ab578063e5e31b131161006f578063e5e31b13146106bb578063f0ef821f146106eb578063f2fde38b14610705578063f887ea4014610725578063ffb54a991461074557600080fd5b8063a9059cbb146105ff578063ca33e64c1461061f578063ca987b0e1461063f578063da00097d14610655578063dd62ed3e1461067557600080fd5b806395d89b41116100f257806395d89b411461056357806398118cb4146105945780639e78fb4f146105aa578063a5355989146105bf578063a8aa1b31146105df57600080fd5b80637d1db4a5146104c9578063807c2d9c146104df5780638637b069146104f55780638b42507f146105155780638da5cb5b1461054557600080fd5b806344de2e4c116101bc57806370a082311161018057806370a0823114610411578063715018a614610447578063751039fc1461045c57806375f0a87414610471578063787a051b146104a957600080fd5b806344de2e4c146103815780634a74bb021461039b578063650c4226146103ba5780636b67c4df146103dc57806370540933146103f257600080fd5b80631df4ccfc116102035780631df4ccfc146102e957806323b872dd146102ff5780632bb14e1d1461031f578063313ce567146103355780633f4218e01461035157600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b3146102a457806318160ddd146102d457600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660175481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b50604080518082019091526009815268526f636b2046726f6760b81b60208201525b60405161026091906116ce565b3480156102b057600080fd5b506102c46102bf366004611731565b61075f565b6040519015158152602001610260565b3480156102e057600080fd5b50600454610256565b3480156102f557600080fd5b5061025660115481565b34801561030b57600080fd5b506102c461031a36600461175d565b6107cc565b34801561032b57600080fd5b5061025660105481565b34801561034157600080fd5b5060405160128152602001610260565b34801561035d57600080fd5b506102c461036c36600461179e565b600b6020526000908152604090205460ff1681565b34801561038d57600080fd5b506007546102c49060ff1681565b3480156103a757600080fd5b506016546102c490610100900460ff1681565b3480156103c657600080fd5b506103da6103d53660046117bb565b61088e565b005b3480156103e857600080fd5b50610256600f5481565b3480156103fe57600080fd5b50600d546102c490610100900460ff1681565b34801561041d57600080fd5b5061025661042c36600461179e565b6001600160a01b031660009081526008602052604090205490565b34801561045357600080fd5b506103da61096d565b34801561046857600080fd5b506103da6109a3565b34801561047d57600080fd5b50600354610491906001600160a01b031681565b6040516001600160a01b039091168152602001610260565b3480156104b557600080fd5b506103da6104c43660046117ed565b6109da565b3480156104d557600080fd5b5061025660055481565b3480156104eb57600080fd5b5061025660065481565b34801561050157600080fd5b506102c4610510366004611731565b610a4c565b34801561052157600080fd5b506102c461053036600461179e565b600c6020526000908152604090205460ff1681565b34801561055157600080fd5b506000546001600160a01b0316610491565b34801561056f57600080fd5b50604080518082019091526008815267524f434b46524f4760c01b6020820152610297565b3480156105a057600080fd5b50610256600e5481565b3480156105b657600080fd5b506103da610b40565b3480156105cb57600080fd5b50600d546102c49062010000900460ff1681565b3480156105eb57600080fd5b50601454610491906001600160a01b031681565b34801561060b57600080fd5b506102c461061a366004611731565b610de7565b34801561062b57600080fd5b50600254610491906001600160a01b031681565b34801561064b57600080fd5b5061025660125481565b34801561066157600080fd5b506016546102c49062010000900460ff1681565b34801561068157600080fd5b50610256610690366004611806565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106c757600080fd5b506102c46106d636600461179e565b60156020526000908152604090205460ff1681565b3480156106f757600080fd5b50600d546102c49060ff1681565b34801561071157600080fd5b506103da61072036600461179e565b610df4565b34801561073157600080fd5b50601354610491906001600160a01b031681565b34801561075157600080fd5b50600a546102c49060ff1681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107ba9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610879576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610854918490610e8f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610884848484610ebb565b90505b9392505050565b6000546001600160a01b031633146108c15760405162461bcd60e51b81526004016108b89061183f565b60405180910390fd5b600e8490556010839055600f8290556108e4836108de868561113c565b9061113c565b60118190556108f490829061188a565b6012556011546103de1080159061090f57506103de60125411155b6109675760405162461bcd60e51b8152602060048201526024808201527f546f6b656e3a20436f6d62696e65642066656573206d75737420626520756e646044820152636572202560e01b60648201526084016108b8565b50505050565b6000546001600160a01b031633146109975760405162461bcd60e51b81526004016108b89061183f565b6109a16000611148565b565b6000546001600160a01b031633146109cd5760405162461bcd60e51b81526004016108b89061183f565b6000196006819055600555565b6000546001600160a01b03163314610a045760405162461bcd60e51b81526004016108b89061183f565b47336108fc6064610a15858561189d565b610a1f91906118b4565b6040518115909202916000818181858888f19350505050158015610a47573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610a775760405162461bcd60e51b81526004016108b89061183f565b306001600160a01b03841603610acf5760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e0000000060448201526064016108b8565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088791906118d6565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b81526004016108b89061183f565b6013546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd891906118f8565b6001600160a01b031663c9c65396601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d91906118f8565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd91906118f8565b601480546001600160a01b0319166001600160a01b038381169182179092556000908152601560209081526040808320805460ff199081166001908117909255600c84528285208054909116909117905560135430808552600890935292205493945091169163f305d7199147916040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201526000604482018190526064820181905260848201524260a482015260c40160606040518083038185885af1158015610da0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dc59190611915565b5050600a805460ff1916600117905550506016805461ff001916610100179055565b6000610887338484610ebb565b6000546001600160a01b03163314610e1e5760405162461bcd60e51b81526004016108b89061183f565b6001600160a01b038116610e835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b8565b610e8c81611148565b50565b60008184841115610eb35760405162461bcd60e51b81526004016108b891906116ce565b505050900390565b60165460009060ff1615610edb57610ed4848484611198565b9050610887565b6001600160a01b0384166000908152600b602052604090205460ff16610f4457600a5460ff16610f445760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b8565b60055482111580610f6d57506001600160a01b0384166000908152600c602052604090205460ff165b80610f7b575060075460ff16155b610fbb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108b8565b6001600160a01b03831660009081526015602052604090205460ff168015610fe6575060165460ff16155b8015610ff95750601654610100900460ff165b156110065761100661127e565b6001600160a01b0383166000908152600c602052604090205460ff16158015611031575060075460ff165b156110a2576006546001600160a01b03841660009081526008602052604090205461105c908461113c565b11156110a25760405162461bcd60e51b815260206004820152601560248201527415d85b1b195d08131a5b5a5d08115e18d959591959605a1b60448201526064016108b8565b60006110af858585611453565b6001600160a01b0385166000908152600860205260409020549091506110d5908261113c565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111299085815260200190565b60405180910390a3506001949350505050565b6000610887828461188a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546111e9918490610e8f565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611218908361113c565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126c9086815260200190565b60405180910390a35060019392505050565b6016805460ff19166001179055306000908152600860205260409020546017546112aa906107d061189d565b81106112c2576017546112bf906107d061189d565b90505b601754811061140a57604080516002808252606082018352600092602083019080368337019050509050308160008151811061130057611300611943565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d91906118f8565b8160018151811061139057611390611943565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906113d6908590600090869030904290600401611959565b600060405180830381600087803b1580156113f057600080fd5b505af1158015611404573d6000803e3d6000fd5b50505050505b60035460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611444573d6000803e3d6000fd5b50506016805460ff1916905550565b6001600160a01b0383166000908152600b6020526040812054819060ff1615801561149757506001600160a01b0384166000908152600b602052604090205460ff16155b905060008115611591576001600160a01b03851660009081526015602052604081205460ff1680156114d05750600d54610100900460ff165b156114da57506012545b6001600160a01b03871660009081526015602052604090205460ff1680156115045750600d5460ff165b1561150e57506011545b6001600160a01b03871660009081526015602052604090205460ff1615801561155057506001600160a01b03861660009081526015602052604090205460ff16155b1561157357600d5462010000900460ff161561156f5750601254611573565b5060005b6115896103e861158387846116aa565b906116b6565b9150506115b1565b6003546001600160a01b03908116908716036115b1578392505050610887565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260089091529190912054611603918690610e8f565b6001600160a01b0387166000908152600860205260409020558015611696573060009081526008602052604090205461163c908261113c565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061168d9085815260200190565b60405180910390a35b6116a084826116c2565b9695505050505050565b6000610887828461189d565b600061088782846118b4565b600061088782846119ca565b600060208083528351808285015260005b818110156116fb578581018301518582016040015282016116df565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e8c57600080fd5b6000806040838503121561174457600080fd5b823561174f8161171c565b946020939093013593505050565b60008060006060848603121561177257600080fd5b833561177d8161171c565b9250602084013561178d8161171c565b929592945050506040919091013590565b6000602082840312156117b057600080fd5b81356108878161171c565b600080600080608085870312156117d157600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156117ff57600080fd5b5035919050565b6000806040838503121561181957600080fd5b82356118248161171c565b915060208301356118348161171c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c6576107c6611874565b80820281158282048414176107c6576107c6611874565b6000826118d157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156118e857600080fd5b8151801515811461088757600080fd5b60006020828403121561190a57600080fd5b81516108878161171c565b60008060006060848603121561192a57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119a95784516001600160a01b031683529383019391830191600101611984565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156107c6576107c661187456fea26469706673582212207e3776f55f5feaedfb461b11248d2d3012aa43aedfcef2b0026d283c1993ee5b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637d1db4a51161012e578063a9059cbb116100ab578063e5e31b131161006f578063e5e31b13146106bb578063f0ef821f146106eb578063f2fde38b14610705578063f887ea4014610725578063ffb54a991461074557600080fd5b8063a9059cbb146105ff578063ca33e64c1461061f578063ca987b0e1461063f578063da00097d14610655578063dd62ed3e1461067557600080fd5b806395d89b41116100f257806395d89b411461056357806398118cb4146105945780639e78fb4f146105aa578063a5355989146105bf578063a8aa1b31146105df57600080fd5b80637d1db4a5146104c9578063807c2d9c146104df5780638637b069146104f55780638b42507f146105155780638da5cb5b1461054557600080fd5b806344de2e4c116101bc57806370a082311161018057806370a0823114610411578063715018a614610447578063751039fc1461045c57806375f0a87414610471578063787a051b146104a957600080fd5b806344de2e4c146103815780634a74bb021461039b578063650c4226146103ba5780636b67c4df146103dc57806370540933146103f257600080fd5b80631df4ccfc116102035780631df4ccfc146102e957806323b872dd146102ff5780632bb14e1d1461031f578063313ce567146103355780633f4218e01461035157600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b3146102a457806318160ddd146102d457600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660175481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b50604080518082019091526009815268526f636b2046726f6760b81b60208201525b60405161026091906116ce565b3480156102b057600080fd5b506102c46102bf366004611731565b61075f565b6040519015158152602001610260565b3480156102e057600080fd5b50600454610256565b3480156102f557600080fd5b5061025660115481565b34801561030b57600080fd5b506102c461031a36600461175d565b6107cc565b34801561032b57600080fd5b5061025660105481565b34801561034157600080fd5b5060405160128152602001610260565b34801561035d57600080fd5b506102c461036c36600461179e565b600b6020526000908152604090205460ff1681565b34801561038d57600080fd5b506007546102c49060ff1681565b3480156103a757600080fd5b506016546102c490610100900460ff1681565b3480156103c657600080fd5b506103da6103d53660046117bb565b61088e565b005b3480156103e857600080fd5b50610256600f5481565b3480156103fe57600080fd5b50600d546102c490610100900460ff1681565b34801561041d57600080fd5b5061025661042c36600461179e565b6001600160a01b031660009081526008602052604090205490565b34801561045357600080fd5b506103da61096d565b34801561046857600080fd5b506103da6109a3565b34801561047d57600080fd5b50600354610491906001600160a01b031681565b6040516001600160a01b039091168152602001610260565b3480156104b557600080fd5b506103da6104c43660046117ed565b6109da565b3480156104d557600080fd5b5061025660055481565b3480156104eb57600080fd5b5061025660065481565b34801561050157600080fd5b506102c4610510366004611731565b610a4c565b34801561052157600080fd5b506102c461053036600461179e565b600c6020526000908152604090205460ff1681565b34801561055157600080fd5b506000546001600160a01b0316610491565b34801561056f57600080fd5b50604080518082019091526008815267524f434b46524f4760c01b6020820152610297565b3480156105a057600080fd5b50610256600e5481565b3480156105b657600080fd5b506103da610b40565b3480156105cb57600080fd5b50600d546102c49062010000900460ff1681565b3480156105eb57600080fd5b50601454610491906001600160a01b031681565b34801561060b57600080fd5b506102c461061a366004611731565b610de7565b34801561062b57600080fd5b50600254610491906001600160a01b031681565b34801561064b57600080fd5b5061025660125481565b34801561066157600080fd5b506016546102c49062010000900460ff1681565b34801561068157600080fd5b50610256610690366004611806565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106c757600080fd5b506102c46106d636600461179e565b60156020526000908152604090205460ff1681565b3480156106f757600080fd5b50600d546102c49060ff1681565b34801561071157600080fd5b506103da61072036600461179e565b610df4565b34801561073157600080fd5b50601354610491906001600160a01b031681565b34801561075157600080fd5b50600a546102c49060ff1681565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107ba9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610879576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610854918490610e8f565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610884848484610ebb565b90505b9392505050565b6000546001600160a01b031633146108c15760405162461bcd60e51b81526004016108b89061183f565b60405180910390fd5b600e8490556010839055600f8290556108e4836108de868561113c565b9061113c565b60118190556108f490829061188a565b6012556011546103de1080159061090f57506103de60125411155b6109675760405162461bcd60e51b8152602060048201526024808201527f546f6b656e3a20436f6d62696e65642066656573206d75737420626520756e646044820152636572202560e01b60648201526084016108b8565b50505050565b6000546001600160a01b031633146109975760405162461bcd60e51b81526004016108b89061183f565b6109a16000611148565b565b6000546001600160a01b031633146109cd5760405162461bcd60e51b81526004016108b89061183f565b6000196006819055600555565b6000546001600160a01b03163314610a045760405162461bcd60e51b81526004016108b89061183f565b47336108fc6064610a15858561189d565b610a1f91906118b4565b6040518115909202916000818181858888f19350505050158015610a47573d6000803e3d6000fd5b505050565b600080546001600160a01b03163314610a775760405162461bcd60e51b81526004016108b89061183f565b306001600160a01b03841603610acf5760405162461bcd60e51b815260206004820152601c60248201527f43616e742072656d6f766520746865206e617469766520746f6b656e0000000060448201526064016108b8565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088791906118d6565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b81526004016108b89061183f565b6013546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd891906118f8565b6001600160a01b031663c9c65396601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d91906118f8565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd91906118f8565b601480546001600160a01b0319166001600160a01b038381169182179092556000908152601560209081526040808320805460ff199081166001908117909255600c84528285208054909116909117905560135430808552600890935292205493945091169163f305d7199147916040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201526000604482018190526064820181905260848201524260a482015260c40160606040518083038185885af1158015610da0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610dc59190611915565b5050600a805460ff1916600117905550506016805461ff001916610100179055565b6000610887338484610ebb565b6000546001600160a01b03163314610e1e5760405162461bcd60e51b81526004016108b89061183f565b6001600160a01b038116610e835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b8565b610e8c81611148565b50565b60008184841115610eb35760405162461bcd60e51b81526004016108b891906116ce565b505050900390565b60165460009060ff1615610edb57610ed4848484611198565b9050610887565b6001600160a01b0384166000908152600b602052604090205460ff16610f4457600a5460ff16610f445760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108b8565b60055482111580610f6d57506001600160a01b0384166000908152600c602052604090205460ff165b80610f7b575060075460ff16155b610fbb5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108b8565b6001600160a01b03831660009081526015602052604090205460ff168015610fe6575060165460ff16155b8015610ff95750601654610100900460ff165b156110065761100661127e565b6001600160a01b0383166000908152600c602052604090205460ff16158015611031575060075460ff165b156110a2576006546001600160a01b03841660009081526008602052604090205461105c908461113c565b11156110a25760405162461bcd60e51b815260206004820152601560248201527415d85b1b195d08131a5b5a5d08115e18d959591959605a1b60448201526064016108b8565b60006110af858585611453565b6001600160a01b0385166000908152600860205260409020549091506110d5908261113c565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111299085815260200190565b60405180910390a3506001949350505050565b6000610887828461188a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546111e9918490610e8f565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611218908361113c565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126c9086815260200190565b60405180910390a35060019392505050565b6016805460ff19166001179055306000908152600860205260409020546017546112aa906107d061189d565b81106112c2576017546112bf906107d061189d565b90505b601754811061140a57604080516002808252606082018352600092602083019080368337019050509050308160008151811061130057611300611943565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d91906118f8565b8160018151811061139057611390611943565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906113d6908590600090869030904290600401611959565b600060405180830381600087803b1580156113f057600080fd5b505af1158015611404573d6000803e3d6000fd5b50505050505b60035460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611444573d6000803e3d6000fd5b50506016805460ff1916905550565b6001600160a01b0383166000908152600b6020526040812054819060ff1615801561149757506001600160a01b0384166000908152600b602052604090205460ff16155b905060008115611591576001600160a01b03851660009081526015602052604081205460ff1680156114d05750600d54610100900460ff165b156114da57506012545b6001600160a01b03871660009081526015602052604090205460ff1680156115045750600d5460ff165b1561150e57506011545b6001600160a01b03871660009081526015602052604090205460ff1615801561155057506001600160a01b03861660009081526015602052604090205460ff16155b1561157357600d5462010000900460ff161561156f5750601254611573565b5060005b6115896103e861158387846116aa565b906116b6565b9150506115b1565b6003546001600160a01b03908116908716036115b1578392505050610887565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260089091529190912054611603918690610e8f565b6001600160a01b0387166000908152600860205260409020558015611696573060009081526008602052604090205461163c908261113c565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061168d9085815260200190565b60405180910390a35b6116a084826116c2565b9695505050505050565b6000610887828461189d565b600061088782846118b4565b600061088782846119ca565b600060208083528351808285015260005b818110156116fb578581018301518582016040015282016116df565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e8c57600080fd5b6000806040838503121561174457600080fd5b823561174f8161171c565b946020939093013593505050565b60008060006060848603121561177257600080fd5b833561177d8161171c565b9250602084013561178d8161171c565b929592945050506040919091013590565b6000602082840312156117b057600080fd5b81356108878161171c565b600080600080608085870312156117d157600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156117ff57600080fd5b5035919050565b6000806040838503121561181957600080fd5b82356118248161171c565b915060208301356118348161171c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c6576107c6611874565b80820281158282048414176107c6576107c6611874565b6000826118d157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156118e857600080fd5b8151801515811461088757600080fd5b60006020828403121561190a57600080fd5b81516108878161171c565b60008060006060848603121561192a57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119a95784516001600160a01b031683529383019391830191600101611984565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156107c6576107c661187456fea26469706673582212207e3776f55f5feaedfb461b11248d2d3012aa43aedfcef2b0026d283c1993ee5b64736f6c63430008130033

Deployed Bytecode Sourcemap

5888:9466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7277:59;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7277:59:0;;;;;;;;8326:94;;;;;;;;;;-1:-1:-1;8407:5:0;;;;;;;;;;;;-1:-1:-1;;;8407:5:0;;;;8326:94;;;;;;;:::i;9069:248::-;;;;;;;;;;-1:-1:-1;9069:248:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;9069:248:0;1205:187:1;8636:102:0;;;;;;;;;;-1:-1:-1;8718:12:0;;8636:102;;6964:27;;;;;;;;;;;;;;;;9521:422;;;;;;;;;;-1:-1:-1;9521:422:0;;;;;:::i;:::-;;:::i;6926:29::-;;;;;;;;;;;;;;;;8534:94;;;;;;;;;;-1:-1:-1;8534:94:0;;6079:2;2000:36:1;;1988:2;1973:18;8534:94:0;1858:184:1;6626:43:0;;;;;;;;;;-1:-1:-1;6626:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6432:33;;;;;;;;;;-1:-1:-1;6432:33:0;;;;;;;;7175:41;;;;;;;;;;-1:-1:-1;7175:41:0;;;;;;;;;;;14132:570;;;;;;;;;;-1:-1:-1;14132:570:0;;;;;:::i;:::-;;:::i;:::-;;6886:33;;;;;;;;;;;;;;;;6768:30;;;;;;;;;;-1:-1:-1;6768:30:0;;;;;;;;;;;8746:119;;;;;;;;;;-1:-1:-1;8746:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8839:18:0;8812:7;8839:18;;;:9;:18;;;;;;;8746:119;5333:103;;;;;;;;;;;;;:::i;14710:135::-;;;;;;;;;;;;;:::i;6208:30::-;;;;;;;;;;-1:-1:-1;6208:30:0;;;;-1:-1:-1;;;;;6208:30:0;;;;;;-1:-1:-1;;;;;2853:32:1;;;2835:51;;2823:2;2808:18;6208:30:0;2689:203:1;15148::0;;;;;;;;;;-1:-1:-1;15148:203:0;;;;;:::i;:::-;;:::i;6308:56::-;;;;;;;;;;;;;;;;6371:54;;;;;;;;;;;;;;;;14853:287;;;;;;;;;;-1:-1:-1;14853:287:0;;;;;:::i;:::-;;:::i;6676:47::-;;;;;;;;;;-1:-1:-1;6676:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5110:87;;;;;;;;;;-1:-1:-1;5156:7:0;5183:6;-1:-1:-1;;;;;5183:6:0;5110:87;;8428:98;;;;;;;;;;-1:-1:-1;8511:7:0;;;;;;;;;;;;-1:-1:-1;;;8511:7:0;;;;8428:98;;6848:31;;;;;;;;;;;;;;;;9951:590;;;;;;;;;;;;;:::i;6805:34::-;;;;;;;;;;-1:-1:-1;6805:34:0;;;;;;;;;;;7074:19;;;;;;;;;;-1:-1:-1;7074:19:0;;;;-1:-1:-1;;;;;7074:19:0;;;9325:188;;;;;;;;;;-1:-1:-1;9325:188:0;;;;;:::i;:::-;;:::i;6165:36::-;;;;;;;;;;-1:-1:-1;6165:36:0;;;;-1:-1:-1;;;;;6165:36:0;;;6998;;;;;;;;;;;;;;;;7223:45;;;;;;;;;;-1:-1:-1;7223:45:0;;;;;;;;;;;8873:188;;;;;;;;;;-1:-1:-1;8873:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;9025:19:0;;;8993:7;9025:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8873:188;7100:38;;;;;;;;;;-1:-1:-1;7100:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6732:29;;;;;;;;;;-1:-1:-1;6732:29:0;;;;;;;;5444:238;;;;;;;;;;-1:-1:-1;5444:238:0;;;;;:::i;:::-;;:::i;7043:24::-;;;;;;;;;;-1:-1:-1;7043:24:0;;;;-1:-1:-1;;;;;7043:24:0;;;6586:31;;;;;;;;;;-1:-1:-1;6586:31:0;;;;;;;;9069:248;9205:10;9171:4;9193:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9193:32:0;;;;;;;;;;:41;;;9250:37;9171:4;;9193:32;;9250:37;;;;9228:6;160:25:1;;148:2;133:18;;14:177;9250:37:0;;;;;;;;-1:-1:-1;9305:4:0;9069:248;;;;;:::o;9521:422::-;-1:-1:-1;;;;;9676:19:0;;9655:4;9676:19;;;:11;:19;;;;;;;;9696:10;9676:31;;;;;;;;-1:-1:-1;;9676:52:0;9672:206;;9779:87;;;;;;;;;;;-1:-1:-1;;;9779:87:0;;;;;;;;-1:-1:-1;;;;;9779:19:0;;-1:-1:-1;9779:19:0;;;:11;:19;;;;;9799:10;9779:31;;;;;;;;;;:87;;9833:6;;9779:53;:87::i;:::-;-1:-1:-1;;;;;9745:19:0;;;;;;:11;:19;;;;;;;;9765:10;9745:31;;;;;;;:121;9672:206;9895:40;9909:6;9917:9;9928:6;9895:13;:40::i;:::-;9888:47;;9521:422;;;;;;:::o;14132:570::-;5156:7;5183:6;-1:-1:-1;;;;;5183:6:0;4711:10;5245:23;5237:68;;;;-1:-1:-1;;;5237:68:0;;;;;;;:::i;:::-;;;;;;;;;14321:12:::1;:28:::0;;;14360:10:::1;:29:::0;;;14400:12:::1;:30:::0;;;14454:46:::1;14373:16:::0;14454:30:::1;14336:13:::0;14415:15;14454:16:::1;:30::i;:::-;:34:::0;::::1;:46::i;:::-;14443:8;:57:::0;;;14531:23:::1;::::0;14542:12;;14531:23:::1;:::i;:::-;14511:17;:43:::0;14587:8:::1;::::0;14599:3:::1;-1:-1:-1::0;14587:15:0;::::1;::::0;:43:::1;;;14627:3;14606:17;;:24;;14587:43;14565:129;;;::::0;-1:-1:-1;;;14565:129:0;;4526:2:1;14565:129:0::1;::::0;::::1;4508:21:1::0;4565:2;4545:18;;;4538:30;4604:34;4584:18;;;4577:62;-1:-1:-1;;;4655:18:1;;;4648:34;4699:19;;14565:129:0::1;4324:400:1::0;14565:129:0::1;14132:570:::0;;;;:::o;5333:103::-;5156:7;5183:6;-1:-1:-1;;;;;5183:6:0;4711:10;5245:23;5237:68;;;;-1:-1:-1;;;5237:68:0;;;;;;;:::i;:::-;5398:30:::1;5425:1;5398:18;:30::i;:::-;5333:103::o:0;14710:135::-;5156:7;5183:6;-1:-1:-1;;;;;5183:6:0;4711:10;5245:23;5237:68;;;;-1:-1:-1;;;5237:68:0;;;;;;;:::i;:::-;-1:-1:-1;;14764:10:0::1;:30:::0;;;14805:12:::1;:32:::0;14710:135::o;15148:203::-;5156:7;5183:6;-1:-1:-1;;;;;5183:6:0;4711:10;5245:23;5237:68;;;;-1:-1:-1;;;5237:68:0;;;;;;;:::i;:::-;15245:21:::1;15285:10;15277:66;15339:3;15307:28;15319:16:::0;15245:21;15307:28:::1;:::i;:::-;15306:36;;;;:::i;:::-;15277:66;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15214:137;15148:203:::0;:::o;14853:287::-;14965:12;5183:6;;-1:-1:-1;;;;;5183:6:0;4711:10;5245:23;5237:68;;;;-1:-1:-1;;;5237:68:0;;;;;;;:::i;:::-;15027:4:::1;-1:-1:-1::0;;;;;15003:29:0;::::1;::::0;14995:70:::1;;;::::0;-1:-1:-1;;;14995:70:0;;5326:2:1;14995:70:0::1;::::0;::::1;5308:21:1::0;5365:2;5345:18;;;5338:30;5404;5384:18;;;5377:58;5452:18;;14995:70:0::1;5124:352:1::0;14995:70:0::1;15083:49;::::0;-1:-1:-1;;;15083:49:0;;15113:10:::1;15083:49;::::0;::::1;5655:51:1::0;5722:18;;;5715:34;;;-1:-1:-1;;;;;15083:29:0;::::1;::::0;::::1;::::0;5628:18:1;;15083:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9951:590::-:0;5156:7;5183:6;-1:-1:-1;;;;;5183:6:0;4711:10;5245:23;5237:68;;;;-1:-1:-1;;;5237:68:0;;;;;;;:::i;:::-;10035:6:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;10035:16:0;;;;10003:17:::1;::::0;-1:-1:-1;;;;;10035:6:0::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10023:40:0::1;;10078:6;;;;;;;;;-1:-1:-1::0;;;;;10078:6:0::1;-1:-1:-1::0;;;;;10078:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10023:107;::::0;-1:-1:-1;;;;;;10023:107:0::1;::::0;;;;;;-1:-1:-1;;;;;6528:15:1;;;10023:107:0::1;::::0;::::1;6510:34:1::0;10114:4:0::1;6560:18:1::0;;;6553:43;6445:18;;10023:107:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10141:4;:16:::0;;-1:-1:-1;;;;;;10141:16:0::1;-1:-1:-1::0;;;;;10141:16:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10168:12:0;;;:6:::1;:12;::::0;;;;;;;:19;;-1:-1:-1;;10168:19:0;;::::1;-1:-1:-1::0;10168:19:0;;::::1;::::0;;;10200:15:::1;:26:::0;;;;;:33;;;;::::1;::::0;;::::1;::::0;;10246:6:::1;::::0;10321:4:::1;8839:18:::0;;;:9;:18;;;;;;10141:16;;-1:-1:-1;10246:6:0;::::1;::::0;:22:::1;::::0;10276:21:::1;::::0;10246:217:::1;::::0;-1:-1:-1;;;;;;10246:217:0::1;::::0;;;;;;-1:-1:-1;;;;;6966:15:1;;;10246:217:0::1;::::0;::::1;6948:34:1::0;6998:18;;;6991:34;10380:1:0::1;7041:18:1::0;;;7034:34;;;7084:18;;;7077:34;;;7127:19;;;7120:44;10437:15:0::1;7180:19:1::0;;;7173:35;6882:19;;10246:217:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10476:11:0::1;:18:::0;;-1:-1:-1;;10476:18:0::1;10490:4;10476:18;::::0;;-1:-1:-1;;10505:21:0::1;:28:::0;;-1:-1:-1;;10505:28:0::1;10476:18;10505:28;::::0;;9951:590::o;9325:188::-;9432:4;9461:44;9475:10;9487:9;9498:6;9461:13;:44::i;5444:238::-;5156:7;5183:6;-1:-1:-1;;;;;5183:6:0;4711:10;5245:23;5237:68;;;;-1:-1:-1;;;5237:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5547:22:0;::::1;5525:110;;;::::0;-1:-1:-1;;;5525:110:0;;7732:2:1;5525:110:0::1;::::0;::::1;7714:21:1::0;7771:2;7751:18;;;7744:30;7810:34;7790:18;;;7783:62;-1:-1:-1;;;7861:18:1;;;7854:36;7907:19;;5525:110:0::1;7530:402:1::0;5525:110:0::1;5646:28;5665:8;5646:18;:28::i;:::-;5444:238:::0;:::o;1991:240::-;2111:7;2172:12;2164:6;;;;2156:29;;;;-1:-1:-1;;;2156:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2207:5:0;;;1991:240::o;10549:1097::-;10696:16;;10675:4;;10696:16;;10692:97;;;10736:41;10751:6;10759:9;10770:6;10736:14;:41::i;:::-;10729:48;;;;10692:97;-1:-1:-1;;;;;10806:19:0;;;;;;:11;:19;;;;;;;;10801:97;;10850:11;;;;10842:44;;;;-1:-1:-1;;;10842:44:0;;8139:2:1;10842:44:0;;;8121:21:1;8178:2;8158:18;;;8151:30;-1:-1:-1;;;8197:18:1;;;8190:50;8257:18;;10842:44:0;7937:344:1;10842:44:0;10942:12;;10932:6;:22;;:66;;;-1:-1:-1;;;;;;10975:23:0;;;;;;:15;:23;;;;;;;;10932:66;:102;;;-1:-1:-1;11020:14:0;;;;11019:15;10932:102;10910:169;;;;-1:-1:-1;;;10910:169:0;;8488:2:1;10910:169:0;;;8470:21:1;8527:2;8507:18;;;8500:30;-1:-1:-1;;;8546:18:1;;;8539:47;8603:18;;10910:169:0;8286:341:1;10910:169:0;-1:-1:-1;;;;;11096:17:0;;;;;;:6;:17;;;;;;;;:38;;;;-1:-1:-1;11118:16:0;;;;11117:17;11096:38;:63;;;;-1:-1:-1;11138:21:0;;;;;;;11096:63;11092:106;;;11176:10;:8;:10::i;:::-;-1:-1:-1;;;;;11215:26:0;;;;;;:15;:26;;;;;;;;11214:27;:45;;;;-1:-1:-1;11245:14:0;;;;11214:45;11210:207;;;11338:10;;-1:-1:-1;;;;;11302:20:0;;;;;;:9;:20;;;;;;:32;;11327:6;11302:24;:32::i;:::-;:46;;11276:129;;;;-1:-1:-1;;;11276:129:0;;8834:2:1;11276:129:0;;;8816:21:1;8873:2;8853:18;;;8846:30;-1:-1:-1;;;8892:18:1;;;8885:51;8953:18;;11276:129:0;8632:345:1;11276:129:0;11429:19;11451:34;11459:6;11467:9;11478:6;11451:7;:34::i;:::-;-1:-1:-1;;;;;11519:20:0;;;;;;:9;:20;;;;;;11429:56;;-1:-1:-1;11519:37:0;;11429:56;11519:24;:37::i;:::-;-1:-1:-1;;;;;11496:20:0;;;;;;;:9;:20;;;;;;;:60;;;;11574:40;;;;;;;;;;11602:11;160:25:1;;148:2;133:18;;14:177;11574:40:0;;;;;;;;-1:-1:-1;11634:4:0;;10549:1097;-1:-1:-1;;;;10549:1097:0:o;1461:98::-;1519:7;1546:5;1550:1;1546;:5;:::i;5690:191::-;5764:16;5783:6;;-1:-1:-1;;;;;5800:17:0;;;-1:-1:-1;;;;;;5800:17:0;;;;;;5833:40;;5783:6;;;;;;;5833:40;;5764:16;5833:40;5753:128;5690:191;:::o;11654:401::-;11818:90;;;;;;;;;;;-1:-1:-1;;;11818:90:0;;;;;;;;-1:-1:-1;;;;;11818:17:0;;11781:4;11818:17;;;:9;:17;;;;;;;:90;;11854:6;;11818:21;:90::i;:::-;-1:-1:-1;;;;;11798:17:0;;;;;;;:9;:17;;;;;;:110;;;;11942:20;;;;;;;:32;;11967:6;11942:24;:32::i;:::-;-1:-1:-1;;;;;11919:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11990:35;;;;;;;;;;12018:6;160:25:1;;148:2;133:18;;14:177;11990:35:0;;;;;;;;-1:-1:-1;12043:4:0;11654:401;;;;;:::o;13386:738::-;7379:16;:23;;-1:-1:-1;;7379:23:0;7398:4;7379:23;;;13479:4:::1;7379:16:::0;13461:24;;;:9:::1;:24;::::0;;;;;13516:13:::1;::::0;:20:::1;::::0;13532:4:::1;13516:20;:::i;:::-;13500:12;:36;13496:90;;13566:13;::::0;:20:::1;::::0;13582:4:::1;13566:20;:::i;:::-;13551:35;;13496:90;13619:13;;13603:12;:29;13599:407;;13673:16;::::0;;13687:1:::1;13673:16:::0;;;;;::::1;::::0;;13649:21:::1;::::0;13673:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13673:16:0::1;13649:40;;13722:4;13704;13709:1;13704:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13704:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13752:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;13752:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;13704:7;;13752:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13742:4;13747:1;13742:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13742:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13782:6:::1;::::0;:212:::1;::::0;-1:-1:-1;;;13782:212:0;;:6;::::1;::::0;:57:::1;::::0;:212:::1;::::0;13858:12;;13782:6:::1;::::0;13909:4;;13940::::1;::::0;13964:15:::1;::::0;13782:212:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13634:372;13599:407;14080:15;::::0;14072:44:::1;::::0;14038:21:::1;::::0;-1:-1:-1;;;;;14080:15:0::1;::::0;14072:44;::::1;;;::::0;14038:21;;14018:17:::1;14072:44:::0;14018:17;14072:44;14038:21;14080:15;14072:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7425:16:0;:24;;-1:-1:-1;;7425:24:0;;;-1:-1:-1;13386:738:0:o;12063:1315::-;-1:-1:-1;;;;;12215:19:0;;12183:7;12215:19;;;:11;:19;;;;;;12183:7;;12215:19;;12214:20;:47;;;;-1:-1:-1;;;;;;12239:22:0;;;;;;:11;:22;;;;;;;;12238:23;12214:47;12203:58;;12272:17;12308:3;12304:719;;;-1:-1:-1;;;;;12374:17:0;;12328:21;12374:17;;;:6;:17;;;;;;;;:32;;;;-1:-1:-1;12395:11:0;;;;;;;12374:32;12370:106;;;-1:-1:-1;12443:17:0;;12370:106;-1:-1:-1;;;;;12494:14:0;;;;;;:6;:14;;;;;;;;:28;;;;-1:-1:-1;12512:10:0;;;;12494:28;12490:93;;;-1:-1:-1;12559:8:0;;12490:93;-1:-1:-1;;;;;12602:14:0;;;;;;:6;:14;;;;;;;;12601:15;:37;;;;-1:-1:-1;;;;;;12621:17:0;;;;;;:6;:17;;;;;;;;12620:18;12601:37;12597:240;;;12663:15;;;;;;;12659:163;;;-1:-1:-1;12719:17:0;;12659:163;;;-1:-1:-1;12801:1:0;12659:163;12865:35;12895:4;12865:25;:6;12876:13;12865:10;:25::i;:::-;:29;;:35::i;:::-;12853:47;;12313:599;12304:719;;;12947:15;;-1:-1:-1;;;;;12947:15:0;;;12937:25;;;;12933:79;;12990:6;12983:13;;;;;;12933:79;13055:90;;;;;;;;;;;-1:-1:-1;;;13055:90:0;;;;;;;;-1:-1:-1;;;;;13055:17:0;;-1:-1:-1;13055:17:0;;;:9;:17;;;;;;;;:90;;13091:6;;13055:21;:90::i;:::-;-1:-1:-1;;;;;13035:17:0;;;;;;:9;:17;;;;;:110;13162:13;;13158:174;;13237:4;13219:24;;;;:9;:24;;;;;;:39;;13248:9;13219:28;:39::i;:::-;13210:4;13192:24;;;;:9;:24;;;;;;;:66;;;;13278:42;;-1:-1:-1;;;;;13278:42:0;;;;;;;13310:9;160:25:1;;148:2;133:18;;14:177;13278:42:0;;;;;;;;13158:174;13349:21;:6;13360:9;13349:10;:21::i;:::-;13342:28;12063:1315;-1:-1:-1;;;;;;12063:1315:0:o;1673:98::-;1731:7;1758:5;1762:1;1758;:5;:::i;1779:98::-;1837:7;1864:5;1868:1;1864;:5;:::i;1567:98::-;1625:7;1652:5;1656:1;1652;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885: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;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2299:385::-;2385:6;2393;2401;2409;2462:3;2450:9;2441:7;2437:23;2433:33;2430:53;;;2479:1;2476;2469:12;2430:53;-1:-1:-1;;2502:23:1;;;2572:2;2557:18;;2544:32;;-1:-1:-1;2623:2:1;2608:18;;2595:32;;2674:2;2659:18;2646:32;;-1:-1:-1;2299:385:1;-1:-1:-1;2299:385:1:o;2897:180::-;2956:6;3009:2;2997:9;2988:7;2984:23;2980:32;2977:52;;;3025:1;3022;3015:12;2977:52;-1:-1:-1;3048:23:1;;2897:180;-1:-1:-1;2897:180:1:o;3082:388::-;3150:6;3158;3211:2;3199:9;3190:7;3186:23;3182:32;3179:52;;;3227:1;3224;3217:12;3179:52;3266:9;3253:23;3285:31;3310:5;3285:31;:::i;:::-;3335:5;-1:-1:-1;3392:2:1;3377:18;;3364:32;3405:33;3364:32;3405:33;:::i;:::-;3457:7;3447:17;;;3082:388;;;;;:::o;3701:356::-;3903:2;3885:21;;;3922:18;;;3915:30;3981:34;3976:2;3961:18;;3954:62;4048:2;4033:18;;3701:356::o;4062:127::-;4123:10;4118:3;4114:20;4111:1;4104:31;4154:4;4151:1;4144:15;4178:4;4175:1;4168:15;4194:125;4259:9;;;4280:10;;;4277:36;;;4293:18;;:::i;4729:168::-;4802:9;;;4833;;4850:15;;;4844:22;;4830:37;4820:71;;4871:18;;:::i;4902:217::-;4942:1;4968;4958:132;;5012:10;5007:3;5003:20;5000:1;4993:31;5047:4;5044:1;5037:15;5075:4;5072:1;5065:15;4958:132;-1:-1:-1;5104:9:1;;4902:217::o;5760:277::-;5827:6;5880:2;5868:9;5859:7;5855:23;5851:32;5848:52;;;5896:1;5893;5886:12;5848:52;5928:9;5922:16;5981:5;5974:13;5967:21;5960:5;5957:32;5947:60;;6003:1;6000;5993:12;6042:251;6112:6;6165:2;6153:9;6144:7;6140:23;6136:32;6133:52;;;6181:1;6178;6171:12;6133:52;6213:9;6207:16;6232:31;6257:5;6232:31;:::i;7219:306::-;7307:6;7315;7323;7376:2;7364:9;7355:7;7351:23;7347:32;7344:52;;;7392:1;7389;7382:12;7344:52;7421:9;7415:16;7405:26;;7471:2;7460:9;7456:18;7450:25;7440:35;;7515:2;7504:9;7500:18;7494:25;7484:35;;7219:306;;;;;:::o;9114:127::-;9175:10;9170:3;9166:20;9163:1;9156:31;9206:4;9203:1;9196:15;9230:4;9227:1;9220:15;9246:980;9508:4;9556:3;9545:9;9541:19;9587:6;9576:9;9569:25;9613:2;9651:6;9646:2;9635:9;9631:18;9624:34;9694:3;9689:2;9678:9;9674:18;9667:31;9718:6;9753;9747:13;9784:6;9776;9769:22;9822:3;9811:9;9807:19;9800:26;;9861:2;9853:6;9849:15;9835:29;;9882:1;9892:195;9906:6;9903:1;9900:13;9892:195;;;9971:13;;-1:-1:-1;;;;;9967:39:1;9955:52;;10062:15;;;;10027:12;;;;10003:1;9921:9;9892:195;;;-1:-1:-1;;;;;;;10143:32:1;;;;10138:2;10123:18;;10116:60;-1:-1:-1;;;10207:3:1;10192:19;10185:35;10104:3;9246:980;-1:-1:-1;;;9246:980:1:o;10231:128::-;10298:9;;;10319:11;;;10316:37;;;10333:18;;:::i

Swarm Source

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