ETH Price: $3,608.03 (+4.69%)
 

Overview

Max Total Supply

100,000,000 CAT

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
98,118,141.179112138948549498 CAT

Value
$0.00
0x87260f61f4e5aaa7fbbe0e77fcf9c5735acb0e6e
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:
simoncat

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-12
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
pragma experimental ABIEncoderV2;

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());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        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), "simoncat Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,  address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA,
     address tokenB)
    external
    view
    returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA,
     address tokenB)
    external
    returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner,
     address spender)
    external
    view
    returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,  address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
    external
    view
    returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
    external
    returns (
        uint256 amountA,
        uint256 amountB,
        uint256 liquidity
    );

    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;
}

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 per(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= 100, "Percentage simoncat must be between 0 and 100");
        return a * b / 100;
    }

    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;
        }
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20:simoncat decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

contract simoncat is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable _uniswapV2Router;
    address public uniswapV2Pair;
    address private devWallet;
    address private constant deadAddress = address(0xdead);

    uint8 private constant _decimals = 18;
    uint256 public initialTotalSupply = 100000000 * 10**_decimals;


    // buy / sell tax
    uint256 public buyFee = 0;
    uint256 public sellFee = 0;

    bool private swapping;

    bool public transferDelayEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    
    //swap for 0.1%
    uint256 public swapTokensAtAmount;

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

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("Simons Cat", "CAT"){
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        devWallet = payable(_msgSender());

        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(_msgSender()), true);
        excludeFromFees(devWallet, true);
        // mint
        _mint(devWallet, initialTotalSupply);
    }

    receive() external payable {}



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


    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
    public
    onlyOwner
    {
        require(pair != uniswapV2Pair, "The pair cannot be simoncat removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0),
         "ERC20: transfer simoncat from the zero address");
        require(to != address(0), "ERC20: simoncat transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            if (!tradingOpen) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
            }

        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if (canSwap && swapEnabled && !swapping &&automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to];

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(sellFee).div(100);
            }
            else if(automatedMarketMakerPairs[from]) {
                fees = amount.mul(buyFee).div(100);
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

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


    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap = contractBalance;

        if (tokensToSwap >= swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount;
        }

        swapTokensForEth(tokensToSwap);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526012600a6100129190610776565b6305f5e10061002191906107c0565b6008555f6009555f600a556001600b60016101000a81548160ff0219169083151502179055505f600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff021916908315150217905550348015610085575f80fd5b506040518060400160405280600a81526020017f53696d6f6e7320436174000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f434154000000000000000000000000000000000000000000000000000000000081525081600390816101019190610a32565b5080600490816101119190610a32565b50505061013061012561027160201b60201c565b61027860201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505061018661027160201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101d630600161033b60201b60201c565b6101e961dead600161033b60201b60201c565b6102076101fa61027160201b60201c565b600161033b60201b60201c565b61023960075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161033b60201b60201c565b61026c60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008546103ef60201b60201c565b610c6f565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61034961054960201b60201c565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516103e39190610b1b565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361045d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045490610b8e565b60405180910390fd5b61046e5f83836105d360201b60201c565b8060025f82825461047f9190610bac565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161052c9190610bee565b60405180910390a36105455f83836105d860201b60201c565b5050565b61055761027160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661057b6105dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c890610c51565b60405180910390fd5b565b505050565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156106875780860481111561066357610662610605565b5b60018516156106725780820291505b808102905061068085610632565b9450610647565b94509492505050565b5f8261069f576001905061075a565b816106ac575f905061075a565b81600181146106c257600281146106cc576106fb565b600191505061075a565b60ff8411156106de576106dd610605565b5b8360020a9150848211156106f5576106f4610605565b5b5061075a565b5060208310610133831016604e8410600b84101617156107305782820a90508381111561072b5761072a610605565b5b61075a565b61073d848484600161063e565b9250905081840481111561075457610753610605565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61078082610761565b915061078b8361076a565b92506107b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610690565b905092915050565b5f6107ca82610761565b91506107d583610761565b92508282026107e381610761565b915082820484148315176107fa576107f9610605565b5b5092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061087c57607f821691505b60208210810361088f5761088e610838565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026108f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826108b6565b6108fb86836108b6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61093661093161092c84610761565b610913565b610761565b9050919050565b5f819050919050565b61094f8361091c565b61096361095b8261093d565b8484546108c2565b825550505050565b5f90565b61097761096b565b610982818484610946565b505050565b5b818110156109a55761099a5f8261096f565b600181019050610988565b5050565b601f8211156109ea576109bb81610895565b6109c4846108a7565b810160208510156109d3578190505b6109e76109df856108a7565b830182610987565b50505b505050565b5f82821c905092915050565b5f610a0a5f19846008026109ef565b1980831691505092915050565b5f610a2283836109fb565b9150826002028217905092915050565b610a3b82610801565b67ffffffffffffffff811115610a5457610a5361080b565b5b610a5e8254610865565b610a698282856109a9565b5f60209050601f831160018114610a9a575f8415610a88578287015190505b610a928582610a17565b865550610af9565b601f198416610aa886610895565b5f5b82811015610acf57848901518255600182019150602085019450602081019050610aaa565b86831015610aec5784890151610ae8601f8916826109fb565b8355505b6001600288020188555050505b505050505050565b5f8115159050919050565b610b1581610b01565b82525050565b5f602082019050610b2e5f830184610b0c565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610b78601f83610b34565b9150610b8382610b44565b602082019050919050565b5f6020820190508181035f830152610ba581610b6c565b9050919050565b5f610bb682610761565b9150610bc183610761565b9250828201905080821115610bd957610bd8610605565b5b92915050565b610be881610761565b82525050565b5f602082019050610c015f830184610bdf565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610c3b602083610b34565b9150610c4682610c07565b602082019050919050565b5f6020820190508181035f830152610c6881610c2f565b9050919050565b608051612a83610c955f395f818161082c01528181611abd0152611b980152612a835ff3fe60806040526004361061019f575f3560e01c806370a08231116100eb578063c024666811610089578063dd62ed3e11610063578063dd62ed3e146105c2578063e2f45605146105fe578063f2fde38b14610628578063ffb54a9914610650576101a6565b8063c02466681461055a578063c876d0b914610582578063c9567bf9146105ac576101a6565b806395d89b41116100c557806395d89b41146104905780639a7a23d6146104ba578063a457c2d7146104e2578063a9059cbb1461051e576101a6565b806370a0823114610414578063715018a6146104505780638da5cb5b14610466576101a6565b8063313ce5671161015857806349bd5a5e1161013257806349bd5a5e1461035a5780634fbee19314610384578063583e0568146103c05780636ddd1713146103ea576101a6565b8063313ce567146102ca57806339509351146102f45780634706240214610330576101a6565b806306fdde03146101aa578063095ea7b3146101d457806318160ddd1461021057806323b872dd1461023a5780632b14ca5614610276578063311028af146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61067a565b6040516101cb9190611cb9565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190611d6a565b61070a565b6040516102079190611dc2565b60405180910390f35b34801561021b575f80fd5b5061022461072c565b6040516102319190611dea565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190611e03565b610735565b60405161026d9190611dc2565b60405180910390f35b348015610281575f80fd5b5061028a610763565b6040516102979190611dea565b60405180910390f35b3480156102ab575f80fd5b506102b4610769565b6040516102c19190611dea565b60405180910390f35b3480156102d5575f80fd5b506102de61076f565b6040516102eb9190611e6e565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190611d6a565b610777565b6040516103279190611dc2565b60405180910390f35b34801561033b575f80fd5b506103446107ad565b6040516103519190611dea565b60405180910390f35b348015610365575f80fd5b5061036e6107b3565b60405161037b9190611e96565b60405180910390f35b34801561038f575f80fd5b506103aa60048036038101906103a59190611eaf565b6107d8565b6040516103b79190611dc2565b60405180910390f35b3480156103cb575f80fd5b506103d461082a565b6040516103e19190611f35565b60405180910390f35b3480156103f5575f80fd5b506103fe61084e565b60405161040b9190611dc2565b60405180910390f35b34801561041f575f80fd5b5061043a60048036038101906104359190611eaf565b610861565b6040516104479190611dea565b60405180910390f35b34801561045b575f80fd5b506104646108a6565b005b348015610471575f80fd5b5061047a6108b9565b6040516104879190611e96565b60405180910390f35b34801561049b575f80fd5b506104a46108e1565b6040516104b19190611cb9565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190611f78565b610971565b005b3480156104ed575f80fd5b5061050860048036038101906105039190611d6a565b610a16565b6040516105159190611dc2565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190611d6a565b610a8b565b6040516105519190611dc2565b60405180910390f35b348015610565575f80fd5b50610580600480360381019061057b9190611f78565b610aad565b005b34801561058d575f80fd5b50610596610b5b565b6040516105a39190611dc2565b60405180910390f35b3480156105b7575f80fd5b506105c0610b6e565b005b3480156105cd575f80fd5b506105e860048036038101906105e39190611fb6565b610bad565b6040516105f59190611dea565b60405180910390f35b348015610609575f80fd5b50610612610c2f565b60405161061f9190611dea565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190611eaf565b610c35565b005b34801561065b575f80fd5b50610664610cb7565b6040516106719190611dc2565b60405180910390f35b60606003805461068990612021565b80601f01602080910402602001604051908101604052809291908181526020018280546106b590612021565b80156107005780601f106106d757610100808354040283529160200191610700565b820191905f5260205f20905b8154815290600101906020018083116106e357829003601f168201915b5050505050905090565b5f80610714610cc9565b9050610721818585610cd0565b600191505092915050565b5f600254905090565b5f8061073f610cc9565b905061074c858285610e93565b610757858585610f1e565b60019150509392505050565b600a5481565b60085481565b5f6012905090565b5f80610781610cc9565b90506107a28185856107938589610bad565b61079d919061207e565b610cd0565b600191505092915050565b60095481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108ae611575565b6108b75f6115f3565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108f090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461091c90612021565b80156109675780601f1061093e57610100808354040283529160200191610967565b820191905f5260205f20905b81548152906001019060200180831161094a57829003601f168201915b5050505050905090565b610979611575565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612147565b60405180910390fd5b610a1282826116b6565b5050565b5f80610a20610cc9565b90505f610a2d8286610bad565b905083811015610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a69906121d5565b60405180910390fd5b610a7f8286868403610cd0565b60019250505092915050565b5f80610a95610cc9565b9050610aa2818585610f1e565b600191505092915050565b610ab5611575565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610b4f9190611dc2565b60405180910390a25050565b600b60019054906101000a900460ff1681565b610b76611575565b6001600e60016101000a81548160ff0219169083151502179055506001600e5f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b610c3d611575565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290612263565b60405180910390fd5b610cb4816115f3565b50565b600e5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906122f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da39061237f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e869190611dea565b60405180910390a3505050565b5f610e9e8484610bad565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f185781811015610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f01906123e7565b60405180910390fd5b610f178484848403610cd0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390612475565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190612503565b60405180910390fd5b5f81036110115761100c83835f611754565b611570565b6110196108b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561108757506110576108b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110bf57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110f9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156111115750600b5f9054906101000a900460ff16155b1561120557600e5f9054906101000a900460ff1661120457600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806111c45750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061256b565b60405180910390fd5b5b5b5f61120f30610861565b90505f600d5482101590508080156112335750600e60019054906101000a900460ff165b801561124b5750600b5f9054906101000a900460ff16155b801561129d575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156112f05750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113435750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611384576001600b5f6101000a81548160ff02191690831515021790555061136a6119c0565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff161580156113e85750600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561143b5750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f81156115605760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156114c2576114bb60646114ad600a54886119ec90919063ffffffff16565b611a0190919063ffffffff16565b905061153d565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561153c57611539606461152b600954886119ec90919063ffffffff16565b611a0190919063ffffffff16565b90505b5b5f81111561155157611550873083611754565b5b808561155d9190612589565b94505b61156b878787611754565b505050505b505050565b61157d610cc9565b73ffffffffffffffffffffffffffffffffffffffff1661159b6108b9565b73ffffffffffffffffffffffffffffffffffffffff16146115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890612606565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612694565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182790612722565b60405180910390fd5b61183b838383611a16565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b5906127b0565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119a79190611dea565b60405180910390a36119ba848484611a1b565b50505050565b5f6119ca30610861565b90505f819050600d5481106119df57600d5490505b6119e881611a20565b5050565b5f81836119f991906127ce565b905092915050565b5f8183611a0e919061283c565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115611a3c57611a3b61286c565b5b604051908082528060200260200182016040528015611a6a5781602001602082028036833780820191505090505b50905030815f81518110611a8157611a80612899565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4891906128da565b81600181518110611b5c57611b5b612899565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611c189594939291906129f5565b5f604051808303815f87803b158015611c2f575f80fd5b505af1158015611c41573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c8b82611c49565b611c958185611c53565b9350611ca5818560208601611c63565b611cae81611c71565b840191505092915050565b5f6020820190508181035f830152611cd18184611c81565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d0682611cdd565b9050919050565b611d1681611cfc565b8114611d20575f80fd5b50565b5f81359050611d3181611d0d565b92915050565b5f819050919050565b611d4981611d37565b8114611d53575f80fd5b50565b5f81359050611d6481611d40565b92915050565b5f8060408385031215611d8057611d7f611cd9565b5b5f611d8d85828601611d23565b9250506020611d9e85828601611d56565b9150509250929050565b5f8115159050919050565b611dbc81611da8565b82525050565b5f602082019050611dd55f830184611db3565b92915050565b611de481611d37565b82525050565b5f602082019050611dfd5f830184611ddb565b92915050565b5f805f60608486031215611e1a57611e19611cd9565b5b5f611e2786828701611d23565b9350506020611e3886828701611d23565b9250506040611e4986828701611d56565b9150509250925092565b5f60ff82169050919050565b611e6881611e53565b82525050565b5f602082019050611e815f830184611e5f565b92915050565b611e9081611cfc565b82525050565b5f602082019050611ea95f830184611e87565b92915050565b5f60208284031215611ec457611ec3611cd9565b5b5f611ed184828501611d23565b91505092915050565b5f819050919050565b5f611efd611ef8611ef384611cdd565b611eda565b611cdd565b9050919050565b5f611f0e82611ee3565b9050919050565b5f611f1f82611f04565b9050919050565b611f2f81611f15565b82525050565b5f602082019050611f485f830184611f26565b92915050565b611f5781611da8565b8114611f61575f80fd5b50565b5f81359050611f7281611f4e565b92915050565b5f8060408385031215611f8e57611f8d611cd9565b5b5f611f9b85828601611d23565b9250506020611fac85828601611f64565b9150509250929050565b5f8060408385031215611fcc57611fcb611cd9565b5b5f611fd985828601611d23565b9250506020611fea85828601611d23565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203857607f821691505b60208210810361204b5761204a611ff4565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61208882611d37565b915061209383611d37565b92508282019050808211156120ab576120aa612051565b5b92915050565b7f54686520706169722063616e6e6f742062652073696d6f6e6361742072656d6f5f8201527f7665642066726f6d206175746f6d617465644d61726b65744d616b657250616960208201527f7273000000000000000000000000000000000000000000000000000000000000604082015250565b5f612131604283611c53565b915061213c826120b1565b606082019050919050565b5f6020820190508181035f83015261215e81612125565b9050919050565b7f45524332303a73696d6f6e6361742064656372656173656420616c6c6f77616e5f8201527f63652062656c6f77207a65726f00000000000000000000000000000000000000602082015250565b5f6121bf602d83611c53565b91506121ca82612165565b604082019050919050565b5f6020820190508181035f8301526121ec816121b3565b9050919050565b7f73696d6f6e636174204f776e61626c653a206e6577206f776e657220697320745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f61224d602f83611c53565b9150612258826121f3565b604082019050919050565b5f6020820190508181035f83015261227a81612241565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6122db602483611c53565b91506122e682612281565b604082019050919050565b5f6020820190508181035f830152612308816122cf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612369602283611c53565b91506123748261230f565b604082019050919050565b5f6020820190508181035f8301526123968161235d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6123d1601d83611c53565b91506123dc8261239d565b602082019050919050565b5f6020820190508181035f8301526123fe816123c5565b9050919050565b7f45524332303a207472616e736665722073696d6f6e6361742066726f6d2074685f8201527f65207a65726f2061646472657373000000000000000000000000000000000000602082015250565b5f61245f602e83611c53565b915061246a82612405565b604082019050919050565b5f6020820190508181035f83015261248c81612453565b9050919050565b7f45524332303a2073696d6f6e636174207472616e7366657220746f20746865205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f6124ed602c83611c53565b91506124f882612493565b604082019050919050565b5f6020820190508181035f83015261251a816124e1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f612555601683611c53565b915061256082612521565b602082019050919050565b5f6020820190508181035f83015261258281612549565b9050919050565b5f61259382611d37565b915061259e83611d37565b92508282039050818111156125b6576125b5612051565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6125f0602083611c53565b91506125fb826125bc565b602082019050919050565b5f6020820190508181035f83015261261d816125e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61267e602583611c53565b915061268982612624565b604082019050919050565b5f6020820190508181035f8301526126ab81612672565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61270c602383611c53565b9150612717826126b2565b604082019050919050565b5f6020820190508181035f83015261273981612700565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61279a602683611c53565b91506127a582612740565b604082019050919050565b5f6020820190508181035f8301526127c78161278e565b9050919050565b5f6127d882611d37565b91506127e383611d37565b92508282026127f181611d37565b9150828204841483151761280857612807612051565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61284682611d37565b915061285183611d37565b9250826128615761286061280f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128d481611d0d565b92915050565b5f602082840312156128ef576128ee611cd9565b5b5f6128fc848285016128c6565b91505092915050565b5f819050919050565b5f61292861292361291e84612905565b611eda565b611d37565b9050919050565b6129388161290e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61297081611cfc565b82525050565b5f6129818383612967565b60208301905092915050565b5f602082019050919050565b5f6129a38261293e565b6129ad8185612948565b93506129b883612958565b805f5b838110156129e85781516129cf8882612976565b97506129da8361298d565b9250506001810190506129bb565b5085935050505092915050565b5f60a082019050612a085f830188611ddb565b612a15602083018761292f565b8181036040830152612a278186612999565b9050612a366060830185611e87565b612a436080830184611ddb565b969550505050505056fea264697066735822122010282b68634bbe1dacb75b42a6edc6fa453c8826cdbde1dad8ed052e0fb896b964736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061019f575f3560e01c806370a08231116100eb578063c024666811610089578063dd62ed3e11610063578063dd62ed3e146105c2578063e2f45605146105fe578063f2fde38b14610628578063ffb54a9914610650576101a6565b8063c02466681461055a578063c876d0b914610582578063c9567bf9146105ac576101a6565b806395d89b41116100c557806395d89b41146104905780639a7a23d6146104ba578063a457c2d7146104e2578063a9059cbb1461051e576101a6565b806370a0823114610414578063715018a6146104505780638da5cb5b14610466576101a6565b8063313ce5671161015857806349bd5a5e1161013257806349bd5a5e1461035a5780634fbee19314610384578063583e0568146103c05780636ddd1713146103ea576101a6565b8063313ce567146102ca57806339509351146102f45780634706240214610330576101a6565b806306fdde03146101aa578063095ea7b3146101d457806318160ddd1461021057806323b872dd1461023a5780632b14ca5614610276578063311028af146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61067a565b6040516101cb9190611cb9565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190611d6a565b61070a565b6040516102079190611dc2565b60405180910390f35b34801561021b575f80fd5b5061022461072c565b6040516102319190611dea565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190611e03565b610735565b60405161026d9190611dc2565b60405180910390f35b348015610281575f80fd5b5061028a610763565b6040516102979190611dea565b60405180910390f35b3480156102ab575f80fd5b506102b4610769565b6040516102c19190611dea565b60405180910390f35b3480156102d5575f80fd5b506102de61076f565b6040516102eb9190611e6e565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190611d6a565b610777565b6040516103279190611dc2565b60405180910390f35b34801561033b575f80fd5b506103446107ad565b6040516103519190611dea565b60405180910390f35b348015610365575f80fd5b5061036e6107b3565b60405161037b9190611e96565b60405180910390f35b34801561038f575f80fd5b506103aa60048036038101906103a59190611eaf565b6107d8565b6040516103b79190611dc2565b60405180910390f35b3480156103cb575f80fd5b506103d461082a565b6040516103e19190611f35565b60405180910390f35b3480156103f5575f80fd5b506103fe61084e565b60405161040b9190611dc2565b60405180910390f35b34801561041f575f80fd5b5061043a60048036038101906104359190611eaf565b610861565b6040516104479190611dea565b60405180910390f35b34801561045b575f80fd5b506104646108a6565b005b348015610471575f80fd5b5061047a6108b9565b6040516104879190611e96565b60405180910390f35b34801561049b575f80fd5b506104a46108e1565b6040516104b19190611cb9565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190611f78565b610971565b005b3480156104ed575f80fd5b5061050860048036038101906105039190611d6a565b610a16565b6040516105159190611dc2565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190611d6a565b610a8b565b6040516105519190611dc2565b60405180910390f35b348015610565575f80fd5b50610580600480360381019061057b9190611f78565b610aad565b005b34801561058d575f80fd5b50610596610b5b565b6040516105a39190611dc2565b60405180910390f35b3480156105b7575f80fd5b506105c0610b6e565b005b3480156105cd575f80fd5b506105e860048036038101906105e39190611fb6565b610bad565b6040516105f59190611dea565b60405180910390f35b348015610609575f80fd5b50610612610c2f565b60405161061f9190611dea565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190611eaf565b610c35565b005b34801561065b575f80fd5b50610664610cb7565b6040516106719190611dc2565b60405180910390f35b60606003805461068990612021565b80601f01602080910402602001604051908101604052809291908181526020018280546106b590612021565b80156107005780601f106106d757610100808354040283529160200191610700565b820191905f5260205f20905b8154815290600101906020018083116106e357829003601f168201915b5050505050905090565b5f80610714610cc9565b9050610721818585610cd0565b600191505092915050565b5f600254905090565b5f8061073f610cc9565b905061074c858285610e93565b610757858585610f1e565b60019150509392505050565b600a5481565b60085481565b5f6012905090565b5f80610781610cc9565b90506107a28185856107938589610bad565b61079d919061207e565b610cd0565b600191505092915050565b60095481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600e60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108ae611575565b6108b75f6115f3565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108f090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461091c90612021565b80156109675780601f1061093e57610100808354040283529160200191610967565b820191905f5260205f20905b81548152906001019060200180831161094a57829003601f168201915b5050505050905090565b610979611575565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612147565b60405180910390fd5b610a1282826116b6565b5050565b5f80610a20610cc9565b90505f610a2d8286610bad565b905083811015610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a69906121d5565b60405180910390fd5b610a7f8286868403610cd0565b60019250505092915050565b5f80610a95610cc9565b9050610aa2818585610f1e565b600191505092915050565b610ab5611575565b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610b4f9190611dc2565b60405180910390a25050565b600b60019054906101000a900460ff1681565b610b76611575565b6001600e60016101000a81548160ff0219169083151502179055506001600e5f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b610c3d611575565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290612263565b60405180910390fd5b610cb4816115f3565b50565b600e5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906122f1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da39061237f565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e869190611dea565b60405180910390a3505050565b5f610e9e8484610bad565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f185781811015610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f01906123e7565b60405180910390fd5b610f178484848403610cd0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390612475565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190612503565b60405180910390fd5b5f81036110115761100c83835f611754565b611570565b6110196108b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561108757506110576108b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110bf57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110f9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156111115750600b5f9054906101000a900460ff16155b1561120557600e5f9054906101000a900460ff1661120457600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806111c45750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061256b565b60405180910390fd5b5b5b5f61120f30610861565b90505f600d5482101590508080156112335750600e60019054906101000a900460ff165b801561124b5750600b5f9054906101000a900460ff16155b801561129d575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156112f05750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113435750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611384576001600b5f6101000a81548160ff02191690831515021790555061136a6119c0565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff161580156113e85750600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561143b5750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f81156115605760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156114c2576114bb60646114ad600a54886119ec90919063ffffffff16565b611a0190919063ffffffff16565b905061153d565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561153c57611539606461152b600954886119ec90919063ffffffff16565b611a0190919063ffffffff16565b90505b5b5f81111561155157611550873083611754565b5b808561155d9190612589565b94505b61156b878787611754565b505050505b505050565b61157d610cc9565b73ffffffffffffffffffffffffffffffffffffffff1661159b6108b9565b73ffffffffffffffffffffffffffffffffffffffff16146115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890612606565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612694565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182790612722565b60405180910390fd5b61183b838383611a16565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b5906127b0565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119a79190611dea565b60405180910390a36119ba848484611a1b565b50505050565b5f6119ca30610861565b90505f819050600d5481106119df57600d5490505b6119e881611a20565b5050565b5f81836119f991906127ce565b905092915050565b5f8183611a0e919061283c565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115611a3c57611a3b61286c565b5b604051908082528060200260200182016040528015611a6a5781602001602082028036833780820191505090505b50905030815f81518110611a8157611a80612899565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4891906128da565b81600181518110611b5c57611b5b612899565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611c189594939291906129f5565b5f604051808303815f87803b158015611c2f575f80fd5b505af1158015611c41573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611c8b82611c49565b611c958185611c53565b9350611ca5818560208601611c63565b611cae81611c71565b840191505092915050565b5f6020820190508181035f830152611cd18184611c81565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d0682611cdd565b9050919050565b611d1681611cfc565b8114611d20575f80fd5b50565b5f81359050611d3181611d0d565b92915050565b5f819050919050565b611d4981611d37565b8114611d53575f80fd5b50565b5f81359050611d6481611d40565b92915050565b5f8060408385031215611d8057611d7f611cd9565b5b5f611d8d85828601611d23565b9250506020611d9e85828601611d56565b9150509250929050565b5f8115159050919050565b611dbc81611da8565b82525050565b5f602082019050611dd55f830184611db3565b92915050565b611de481611d37565b82525050565b5f602082019050611dfd5f830184611ddb565b92915050565b5f805f60608486031215611e1a57611e19611cd9565b5b5f611e2786828701611d23565b9350506020611e3886828701611d23565b9250506040611e4986828701611d56565b9150509250925092565b5f60ff82169050919050565b611e6881611e53565b82525050565b5f602082019050611e815f830184611e5f565b92915050565b611e9081611cfc565b82525050565b5f602082019050611ea95f830184611e87565b92915050565b5f60208284031215611ec457611ec3611cd9565b5b5f611ed184828501611d23565b91505092915050565b5f819050919050565b5f611efd611ef8611ef384611cdd565b611eda565b611cdd565b9050919050565b5f611f0e82611ee3565b9050919050565b5f611f1f82611f04565b9050919050565b611f2f81611f15565b82525050565b5f602082019050611f485f830184611f26565b92915050565b611f5781611da8565b8114611f61575f80fd5b50565b5f81359050611f7281611f4e565b92915050565b5f8060408385031215611f8e57611f8d611cd9565b5b5f611f9b85828601611d23565b9250506020611fac85828601611f64565b9150509250929050565b5f8060408385031215611fcc57611fcb611cd9565b5b5f611fd985828601611d23565b9250506020611fea85828601611d23565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203857607f821691505b60208210810361204b5761204a611ff4565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61208882611d37565b915061209383611d37565b92508282019050808211156120ab576120aa612051565b5b92915050565b7f54686520706169722063616e6e6f742062652073696d6f6e6361742072656d6f5f8201527f7665642066726f6d206175746f6d617465644d61726b65744d616b657250616960208201527f7273000000000000000000000000000000000000000000000000000000000000604082015250565b5f612131604283611c53565b915061213c826120b1565b606082019050919050565b5f6020820190508181035f83015261215e81612125565b9050919050565b7f45524332303a73696d6f6e6361742064656372656173656420616c6c6f77616e5f8201527f63652062656c6f77207a65726f00000000000000000000000000000000000000602082015250565b5f6121bf602d83611c53565b91506121ca82612165565b604082019050919050565b5f6020820190508181035f8301526121ec816121b3565b9050919050565b7f73696d6f6e636174204f776e61626c653a206e6577206f776e657220697320745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f61224d602f83611c53565b9150612258826121f3565b604082019050919050565b5f6020820190508181035f83015261227a81612241565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6122db602483611c53565b91506122e682612281565b604082019050919050565b5f6020820190508181035f830152612308816122cf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612369602283611c53565b91506123748261230f565b604082019050919050565b5f6020820190508181035f8301526123968161235d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6123d1601d83611c53565b91506123dc8261239d565b602082019050919050565b5f6020820190508181035f8301526123fe816123c5565b9050919050565b7f45524332303a207472616e736665722073696d6f6e6361742066726f6d2074685f8201527f65207a65726f2061646472657373000000000000000000000000000000000000602082015250565b5f61245f602e83611c53565b915061246a82612405565b604082019050919050565b5f6020820190508181035f83015261248c81612453565b9050919050565b7f45524332303a2073696d6f6e636174207472616e7366657220746f20746865205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f6124ed602c83611c53565b91506124f882612493565b604082019050919050565b5f6020820190508181035f83015261251a816124e1565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f612555601683611c53565b915061256082612521565b602082019050919050565b5f6020820190508181035f83015261258281612549565b9050919050565b5f61259382611d37565b915061259e83611d37565b92508282039050818111156125b6576125b5612051565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6125f0602083611c53565b91506125fb826125bc565b602082019050919050565b5f6020820190508181035f83015261261d816125e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61267e602583611c53565b915061268982612624565b604082019050919050565b5f6020820190508181035f8301526126ab81612672565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61270c602383611c53565b9150612717826126b2565b604082019050919050565b5f6020820190508181035f83015261273981612700565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61279a602683611c53565b91506127a582612740565b604082019050919050565b5f6020820190508181035f8301526127c78161278e565b9050919050565b5f6127d882611d37565b91506127e383611d37565b92508282026127f181611d37565b9150828204841483151761280857612807612051565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61284682611d37565b915061285183611d37565b9250826128615761286061280f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506128d481611d0d565b92915050565b5f602082840312156128ef576128ee611cd9565b5b5f6128fc848285016128c6565b91505092915050565b5f819050919050565b5f61292861292361291e84612905565b611eda565b611d37565b9050919050565b6129388161290e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61297081611cfc565b82525050565b5f6129818383612967565b60208301905092915050565b5f602082019050919050565b5f6129a38261293e565b6129ad8185612948565b93506129b883612958565b805f5b838110156129e85781516129cf8882612976565b97506129da8361298d565b9250506001810190506129bb565b5085935050505092915050565b5f60a082019050612a085f830188611ddb565b612a15602083018761292f565b8181036040830152612a278186612999565b9050612a366060830185611e87565b612a436080830184611ddb565b969550505050505056fea264697066735822122010282b68634bbe1dacb75b42a6edc6fa453c8826cdbde1dad8ed052e0fb896b964736f6c634300081a0033

Deployed Bytecode Sourcemap

14490:4848:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9710:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10642:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10031:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10851:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14928:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14801:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9930:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11120:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14896:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14627:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16685:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14568:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15217:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10147:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;897:103;;;;;;;;;;;;;:::i;:::-;;662:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9818:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16411:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11366:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10282:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16221:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14993:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16101:110;;;;;;;;;;;;;:::i;:::-;;10483:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15137:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1008:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15179:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9710:100;9764:13;9797:5;9790:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9710:100;:::o;10642:201::-;10725:4;10742:13;10758:12;:10;:12::i;:::-;10742:28;;10781:32;10790:5;10797:7;10806:6;10781:8;:32::i;:::-;10831:4;10824:11;;;10642:201;;;;:::o;10031:108::-;10092:7;10119:12;;10112:19;;10031:108;:::o;10851:261::-;10948:4;10965:15;10983:12;:10;:12::i;:::-;10965:30;;11006:38;11022:4;11028:7;11037:6;11006:15;:38::i;:::-;11055:27;11065:4;11071:2;11075:6;11055:9;:27::i;:::-;11100:4;11093:11;;;10851:261;;;;;:::o;14928:26::-;;;;:::o;14801:61::-;;;;:::o;9930:93::-;9988:5;10013:2;10006:9;;9930:93;:::o;11120:238::-;11208:4;11225:13;11241:12;:10;:12::i;:::-;11225:28;;11264:64;11273:5;11280:7;11317:10;11289:25;11299:5;11306:7;11289:9;:25::i;:::-;:38;;;;:::i;:::-;11264:8;:64::i;:::-;11346:4;11339:11;;;11120:238;;;;:::o;14896:25::-;;;;:::o;14627:28::-;;;;;;;;;;;;;:::o;16685:126::-;16751:4;16775:19;:28;16795:7;16775:28;;;;;;;;;;;;;;;;;;;;;;;;;16768:35;;16685:126;;;:::o;14568:52::-;;;:::o;15217:31::-;;;;;;;;;;;;;:::o;10147:127::-;10221:7;10248:9;:18;10258:7;10248:18;;;;;;;;;;;;;;;;10241:25;;10147:127;;;:::o;897:103::-;621:13;:11;:13::i;:::-;962:30:::1;989:1;962:18;:30::i;:::-;897:103::o:0;662:87::-;708:7;735:6;;;;;;;;;;;728:13;;662:87;:::o;9818:104::-;9874:13;9907:7;9900:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9818:104;:::o;16411:266::-;621:13;:11;:13::i;:::-;16533::::1;;;;;;;;;;;16525:21;;:4;:21;;::::0;16517:100:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16628:41;16657:4;16663:5;16628:28;:41::i;:::-;16411:266:::0;;:::o;11366:444::-;11459:4;11476:13;11492:12;:10;:12::i;:::-;11476:28;;11515:24;11542:25;11552:5;11559:7;11542:9;:25::i;:::-;11515:52;;11606:15;11586:16;:35;;11578:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;11707:60;11716:5;11723:7;11751:15;11732:16;:34;11707:8;:60::i;:::-;11798:4;11791:11;;;;11366:444;;;;:::o;10282:193::-;10361:4;10378:13;10394:12;:10;:12::i;:::-;10378:28;;10417;10427:5;10434:2;10438:6;10417:9;:28::i;:::-;10463:4;10456:11;;;10282:193;;;;:::o;16221:182::-;621:13;:11;:13::i;:::-;16337:8:::1;16306:19;:28;16326:7;16306:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16377:7;16361:34;;;16386:8;16361:34;;;;;;:::i;:::-;;;;;;;;16221:182:::0;;:::o;14993:39::-;;;;;;;;;;;;;:::o;16101:110::-;621:13;:11;:13::i;:::-;16170:4:::1;16156:11;;:18;;;;;;;;;;;;;;;;;;16199:4;16185:11;;:18;;;;;;;;;;;;;;;;;;16101:110::o:0;10483:151::-;10572:7;10599:11;:18;10611:5;10599:18;;;;;;;;;;;;;;;:27;10618:7;10599:27;;;;;;;;;;;;;;;;10592:34;;10483:151;;;;:::o;15137:33::-;;;;:::o;1008:210::-;621:13;:11;:13::i;:::-;1117:1:::1;1097:22;;:8;:22;;::::0;1089:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1182:28;1201:8;1182:18;:28::i;:::-;1008:210:::0;:::o;15179:31::-;;;;;;;;;;;;;:::o;129:98::-;182:7;209:10;202:17;;129:98;:::o;13513:346::-;13632:1;13615:19;;:5;:19;;;13607:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13713:1;13694:21;;:7;:21;;;13686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13797:6;13767:11;:18;13779:5;13767:18;;;;;;;;;;;;;;;:27;13786:7;13767:27;;;;;;;;;;;;;;;:36;;;;13835:7;13819:32;;13828:5;13819:32;;;13844:6;13819:32;;;;;;:::i;:::-;;;;;;;;13513:346;;;:::o;13867:419::-;13968:24;13995:25;14005:5;14012:7;13995:9;:25::i;:::-;13968:52;;14055:17;14035:16;:37;14031:248;;14117:6;14097:16;:26;;14089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14201:51;14210:5;14217:7;14245:6;14226:16;:25;14201:8;:51::i;:::-;14031:248;13957:329;13867:419;;;:::o;17013:1607::-;17127:1;17111:18;;:4;:18;;;17103:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17223:1;17209:16;;:2;:16;;;17201:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17301:1;17291:6;:11;17287:93;;17319:28;17335:4;17341:2;17345:1;17319:15;:28::i;:::-;17362:7;;17287:93;17404:7;:5;:7::i;:::-;17396:15;;:4;:15;;;;:32;;;;;17421:7;:5;:7::i;:::-;17415:13;;:2;:13;;;;17396:32;:52;;;;;17446:1;17432:16;;:2;:16;;;;17396:52;:77;;;;;17466:6;17452:21;;:2;:21;;;;17396:77;:90;;;;;17478:8;;;;;;;;;;;17477:9;17396:90;17392:264;;;17508:11;;;;;;;;;;;17503:140;;17548:19;:25;17568:4;17548:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17577:19;:23;17597:2;17577:23;;;;;;;;;;;;;;;;;;;;;;;;;17548:52;17540:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17503:140;17392:264;17668:28;17699:24;17717:4;17699:9;:24::i;:::-;17668:55;;17734:12;17773:18;;17749:20;:42;;17734:57;;17806:7;:22;;;;;17817:11;;;;;;;;;;;17806:22;:35;;;;;17833:8;;;;;;;;;;;17832:9;17806:35;:69;;;;;17844:25;:31;17870:4;17844:31;;;;;;;;;;;;;;;;;;;;;;;;;17806:69;:99;;;;;17880:19;:25;17900:4;17880:25;;;;;;;;;;;;;;;;;;;;;;;;;17879:26;17806:99;:127;;;;;17910:19;:23;17930:2;17910:23;;;;;;;;;;;;;;;;;;;;;;;;;17909:24;17806:127;17802:231;;;17961:4;17950:8;;:15;;;;;;;;;;;;;;;;;;17980:10;:8;:10::i;:::-;18016:5;18005:8;;:16;;;;;;;;;;;;;;;;;;17802:231;18045:12;18061:8;;;;;;;;;;;18060:9;:39;;;;;18074:19;:25;18094:4;18074:25;;;;;;;;;;;;;;;;;;;;;;;;;18073:26;18060:39;:67;;;;;18104:19;:23;18124:2;18104:23;;;;;;;;;;;;;;;;;;;;;;;;;18103:24;18060:67;18045:82;;18140:12;18171:7;18167:402;;;18199:25;:29;18225:2;18199:29;;;;;;;;;;;;;;;;;;;;;;;;;18195:229;;;18256:28;18280:3;18256:19;18267:7;;18256:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;18249:35;;18195:229;;;18322:25;:31;18348:4;18322:31;;;;;;;;;;;;;;;;;;;;;;;;;18319:105;;;18381:27;18404:3;18381:18;18392:6;;18381;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;18374:34;;18319:105;18195:229;18449:1;18442:4;:8;18438:91;;;18471:42;18487:4;18501;18508;18471:15;:42::i;:::-;18438:91;18553:4;18543:14;;;;;:::i;:::-;;;18167:402;18579:33;18595:4;18601:2;18605:6;18579:15;:33::i;:::-;17092:1528;;;;17013:1607;;;;:::o;757:132::-;832:12;:10;:12::i;:::-;821:23;;:7;:5;:7::i;:::-;:23;;;813:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;757:132::o;1226:201::-;1300:16;1319:6;;;;;;;;;;;1300:25;;1345:8;1336:6;;:17;;;;;;;;;;;;;;;;;;1410:8;1369:50;;1390:8;1369:50;;;;;;;;;;;;1289:138;1226:201;:::o;16819:186::-;16936:5;16902:25;:31;16928:4;16902:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16991:5;16957:40;;16985:4;16957:40;;;;;;;;;;;;16819:186;;:::o;11818:641::-;11931:1;11915:18;;:4;:18;;;11907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12008:1;11994:16;;:2;:16;;;11986:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12063:38;12084:4;12090:2;12094:6;12063:20;:38::i;:::-;12114:19;12136:9;:15;12146:4;12136:15;;;;;;;;;;;;;;;;12114:37;;12185:6;12170:11;:21;;12162:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12302:6;12288:11;:20;12270:9;:15;12280:4;12270:15;;;;;;;;;;;;;;;:38;;;;12340:6;12323:9;:13;12333:2;12323:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12390:2;12375:26;;12384:4;12375:26;;;12394:6;12375:26;;;;;;:::i;:::-;;;;;;;;12414:37;12434:4;12440:2;12444:6;12414:19;:37::i;:::-;11896:563;11818:641;;;:::o;19034:301::-;19073:23;19099:24;19117:4;19099:9;:24::i;:::-;19073:50;;19134:20;19157:15;19134:38;;19205:18;;19189:12;:34;19185:100;;19255:18;;19240:33;;19185:100;19297:30;19314:12;19297:16;:30::i;:::-;19062:273;;19034:301::o;8158:98::-;8216:7;8247:1;8243;:5;;;;:::i;:::-;8236:12;;8158:98;;;;:::o;8264:::-;8322:7;8353:1;8349;:5;;;;:::i;:::-;8342:12;;8264:98;;;;:::o;14294:91::-;;;;:::o;14393:90::-;;;;:::o;18628:396::-;18694:21;18732:1;18718:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18694:40;;18763:4;18745;18750:1;18745:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18789:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18779:4;18784:1;18779:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;18823:16;:67;;;18905:11;18931:1;18947:4;18966:9;;;;;;;;;;;18990:15;18823:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18683:341;18628:396;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:118::-;4833:24;4851:5;4833:24;:::i;:::-;4828:3;4821:37;4746:118;;:::o;4870:222::-;4963:4;5001:2;4990:9;4986:18;4978:26;;5014:71;5082:1;5071:9;5067:17;5058:6;5014:71;:::i;:::-;4870:222;;;;:::o;5098:329::-;5157:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5098:329;;;;:::o;5433:60::-;5461:3;5482:5;5475:12;;5433:60;;;:::o;5499:142::-;5549:9;5582:53;5600:34;5609:24;5627:5;5609:24;:::i;:::-;5600:34;:::i;:::-;5582:53;:::i;:::-;5569:66;;5499:142;;;:::o;5647:126::-;5697:9;5730:37;5761:5;5730:37;:::i;:::-;5717:50;;5647:126;;;:::o;5779:152::-;5855:9;5888:37;5919:5;5888:37;:::i;:::-;5875:50;;5779:152;;;:::o;5937:183::-;6050:63;6107:5;6050:63;:::i;:::-;6045:3;6038:76;5937:183;;:::o;6126:274::-;6245:4;6283:2;6272:9;6268:18;6260:26;;6296:97;6390:1;6379:9;6375:17;6366:6;6296:97;:::i;:::-;6126:274;;;;:::o;6406:116::-;6476:21;6491:5;6476:21;:::i;:::-;6469:5;6466:32;6456:60;;6512:1;6509;6502:12;6456:60;6406:116;:::o;6528:133::-;6571:5;6609:6;6596:20;6587:29;;6625:30;6649:5;6625:30;:::i;:::-;6528:133;;;;:::o;6667:468::-;6732:6;6740;6789:2;6777:9;6768:7;6764:23;6760:32;6757:119;;;6795:79;;:::i;:::-;6757:119;6915:1;6940:53;6985:7;6976:6;6965:9;6961:22;6940:53;:::i;:::-;6930:63;;6886:117;7042:2;7068:50;7110:7;7101:6;7090:9;7086:22;7068:50;:::i;:::-;7058:60;;7013:115;6667:468;;;;;:::o;7141:474::-;7209:6;7217;7266:2;7254:9;7245:7;7241:23;7237:32;7234:119;;;7272:79;;:::i;:::-;7234:119;7392:1;7417:53;7462:7;7453:6;7442:9;7438:22;7417:53;:::i;:::-;7407:63;;7363:117;7519:2;7545:53;7590:7;7581:6;7570:9;7566:22;7545:53;:::i;:::-;7535:63;;7490:118;7141:474;;;;;:::o;7621:180::-;7669:77;7666:1;7659:88;7766:4;7763:1;7756:15;7790:4;7787:1;7780:15;7807:320;7851:6;7888:1;7882:4;7878:12;7868:22;;7935:1;7929:4;7925:12;7956:18;7946:81;;8012:4;8004:6;8000:17;7990:27;;7946:81;8074:2;8066:6;8063:14;8043:18;8040:38;8037:84;;8093:18;;:::i;:::-;8037:84;7858:269;7807:320;;;:::o;8133:180::-;8181:77;8178:1;8171:88;8278:4;8275:1;8268:15;8302:4;8299:1;8292:15;8319:191;8359:3;8378:20;8396:1;8378:20;:::i;:::-;8373:25;;8412:20;8430:1;8412:20;:::i;:::-;8407:25;;8455:1;8452;8448:9;8441:16;;8476:3;8473:1;8470:10;8467:36;;;8483:18;;:::i;:::-;8467:36;8319:191;;;;:::o;8516:290::-;8656:34;8652:1;8644:6;8640:14;8633:58;8725:34;8720:2;8712:6;8708:15;8701:59;8794:4;8789:2;8781:6;8777:15;8770:29;8516:290;:::o;8812:366::-;8954:3;8975:67;9039:2;9034:3;8975:67;:::i;:::-;8968:74;;9051:93;9140:3;9051:93;:::i;:::-;9169:2;9164:3;9160:12;9153:19;;8812:366;;;:::o;9184:419::-;9350:4;9388:2;9377:9;9373:18;9365:26;;9437:9;9431:4;9427:20;9423:1;9412:9;9408:17;9401:47;9465:131;9591:4;9465:131;:::i;:::-;9457:139;;9184:419;;;:::o;9609:232::-;9749:34;9745:1;9737:6;9733:14;9726:58;9818:15;9813:2;9805:6;9801:15;9794:40;9609:232;:::o;9847:366::-;9989:3;10010:67;10074:2;10069:3;10010:67;:::i;:::-;10003:74;;10086:93;10175:3;10086:93;:::i;:::-;10204:2;10199:3;10195:12;10188:19;;9847:366;;;:::o;10219:419::-;10385:4;10423:2;10412:9;10408:18;10400:26;;10472:9;10466:4;10462:20;10458:1;10447:9;10443:17;10436:47;10500:131;10626:4;10500:131;:::i;:::-;10492:139;;10219:419;;;:::o;10644:234::-;10784:34;10780:1;10772:6;10768:14;10761:58;10853:17;10848:2;10840:6;10836:15;10829:42;10644:234;:::o;10884:366::-;11026:3;11047:67;11111:2;11106:3;11047:67;:::i;:::-;11040:74;;11123:93;11212:3;11123:93;:::i;:::-;11241:2;11236:3;11232:12;11225:19;;10884:366;;;:::o;11256:419::-;11422:4;11460:2;11449:9;11445:18;11437:26;;11509:9;11503:4;11499:20;11495:1;11484:9;11480:17;11473:47;11537:131;11663:4;11537:131;:::i;:::-;11529:139;;11256:419;;;:::o;11681:223::-;11821:34;11817:1;11809:6;11805:14;11798:58;11890:6;11885:2;11877:6;11873:15;11866:31;11681:223;:::o;11910:366::-;12052:3;12073:67;12137:2;12132:3;12073:67;:::i;:::-;12066:74;;12149:93;12238:3;12149:93;:::i;:::-;12267:2;12262:3;12258:12;12251:19;;11910:366;;;:::o;12282:419::-;12448:4;12486:2;12475:9;12471:18;12463:26;;12535:9;12529:4;12525:20;12521:1;12510:9;12506:17;12499:47;12563:131;12689:4;12563:131;:::i;:::-;12555:139;;12282:419;;;:::o;12707:221::-;12847:34;12843:1;12835:6;12831:14;12824:58;12916:4;12911:2;12903:6;12899:15;12892:29;12707:221;:::o;12934:366::-;13076:3;13097:67;13161:2;13156:3;13097:67;:::i;:::-;13090:74;;13173:93;13262:3;13173:93;:::i;:::-;13291:2;13286:3;13282:12;13275:19;;12934:366;;;:::o;13306:419::-;13472:4;13510:2;13499:9;13495:18;13487:26;;13559:9;13553:4;13549:20;13545:1;13534:9;13530:17;13523:47;13587:131;13713:4;13587:131;:::i;:::-;13579:139;;13306:419;;;:::o;13731:179::-;13871:31;13867:1;13859:6;13855:14;13848:55;13731:179;:::o;13916:366::-;14058:3;14079:67;14143:2;14138:3;14079:67;:::i;:::-;14072:74;;14155:93;14244:3;14155:93;:::i;:::-;14273:2;14268:3;14264:12;14257:19;;13916:366;;;:::o;14288:419::-;14454:4;14492:2;14481:9;14477:18;14469:26;;14541:9;14535:4;14531:20;14527:1;14516:9;14512:17;14505:47;14569:131;14695:4;14569:131;:::i;:::-;14561:139;;14288:419;;;:::o;14713:233::-;14853:34;14849:1;14841:6;14837:14;14830:58;14922:16;14917:2;14909:6;14905:15;14898:41;14713:233;:::o;14952:366::-;15094:3;15115:67;15179:2;15174:3;15115:67;:::i;:::-;15108:74;;15191:93;15280:3;15191:93;:::i;:::-;15309:2;15304:3;15300:12;15293:19;;14952:366;;;:::o;15324:419::-;15490:4;15528:2;15517:9;15513:18;15505:26;;15577:9;15571:4;15567:20;15563:1;15552:9;15548:17;15541:47;15605:131;15731:4;15605:131;:::i;:::-;15597:139;;15324:419;;;:::o;15749:231::-;15889:34;15885:1;15877:6;15873:14;15866:58;15958:14;15953:2;15945:6;15941:15;15934:39;15749:231;:::o;15986:366::-;16128:3;16149:67;16213:2;16208:3;16149:67;:::i;:::-;16142:74;;16225:93;16314:3;16225:93;:::i;:::-;16343:2;16338:3;16334:12;16327:19;;15986:366;;;:::o;16358:419::-;16524:4;16562:2;16551:9;16547:18;16539:26;;16611:9;16605:4;16601:20;16597:1;16586:9;16582:17;16575:47;16639:131;16765:4;16639:131;:::i;:::-;16631:139;;16358:419;;;:::o;16783:172::-;16923:24;16919:1;16911:6;16907:14;16900:48;16783:172;:::o;16961:366::-;17103:3;17124:67;17188:2;17183:3;17124:67;:::i;:::-;17117:74;;17200:93;17289:3;17200:93;:::i;:::-;17318:2;17313:3;17309:12;17302:19;;16961:366;;;:::o;17333:419::-;17499:4;17537:2;17526:9;17522:18;17514:26;;17586:9;17580:4;17576:20;17572:1;17561:9;17557:17;17550:47;17614:131;17740:4;17614:131;:::i;:::-;17606:139;;17333:419;;;:::o;17758:194::-;17798:4;17818:20;17836:1;17818:20;:::i;:::-;17813:25;;17852:20;17870:1;17852:20;:::i;:::-;17847:25;;17896:1;17893;17889:9;17881:17;;17920:1;17914:4;17911:11;17908:37;;;17925:18;;:::i;:::-;17908:37;17758:194;;;;:::o;17958:182::-;18098:34;18094:1;18086:6;18082:14;18075:58;17958:182;:::o;18146:366::-;18288:3;18309:67;18373:2;18368:3;18309:67;:::i;:::-;18302:74;;18385:93;18474:3;18385:93;:::i;:::-;18503:2;18498:3;18494:12;18487:19;;18146:366;;;:::o;18518:419::-;18684:4;18722:2;18711:9;18707:18;18699:26;;18771:9;18765:4;18761:20;18757:1;18746:9;18742:17;18735:47;18799:131;18925:4;18799:131;:::i;:::-;18791:139;;18518:419;;;:::o;18943:224::-;19083:34;19079:1;19071:6;19067:14;19060:58;19152:7;19147:2;19139:6;19135:15;19128:32;18943:224;:::o;19173:366::-;19315:3;19336:67;19400:2;19395:3;19336:67;:::i;:::-;19329:74;;19412:93;19501:3;19412:93;:::i;:::-;19530:2;19525:3;19521:12;19514:19;;19173:366;;;:::o;19545:419::-;19711:4;19749:2;19738:9;19734:18;19726:26;;19798:9;19792:4;19788:20;19784:1;19773:9;19769:17;19762:47;19826:131;19952:4;19826:131;:::i;:::-;19818:139;;19545:419;;;:::o;19970:222::-;20110:34;20106:1;20098:6;20094:14;20087:58;20179:5;20174:2;20166:6;20162:15;20155:30;19970:222;:::o;20198:366::-;20340:3;20361:67;20425:2;20420:3;20361:67;:::i;:::-;20354:74;;20437:93;20526:3;20437:93;:::i;:::-;20555:2;20550:3;20546:12;20539:19;;20198:366;;;:::o;20570:419::-;20736:4;20774:2;20763:9;20759:18;20751:26;;20823:9;20817:4;20813:20;20809:1;20798:9;20794:17;20787:47;20851:131;20977:4;20851:131;:::i;:::-;20843:139;;20570:419;;;:::o;20995:225::-;21135:34;21131:1;21123:6;21119:14;21112:58;21204:8;21199:2;21191:6;21187:15;21180:33;20995:225;:::o;21226:366::-;21368:3;21389:67;21453:2;21448:3;21389:67;:::i;:::-;21382:74;;21465:93;21554:3;21465:93;:::i;:::-;21583:2;21578:3;21574:12;21567:19;;21226:366;;;:::o;21598:419::-;21764:4;21802:2;21791:9;21787:18;21779:26;;21851:9;21845:4;21841:20;21837:1;21826:9;21822:17;21815:47;21879:131;22005:4;21879:131;:::i;:::-;21871:139;;21598:419;;;:::o;22023:410::-;22063:7;22086:20;22104:1;22086:20;:::i;:::-;22081:25;;22120:20;22138:1;22120:20;:::i;:::-;22115:25;;22175:1;22172;22168:9;22197:30;22215:11;22197:30;:::i;:::-;22186:41;;22376:1;22367:7;22363:15;22360:1;22357:22;22337:1;22330:9;22310:83;22287:139;;22406:18;;:::i;:::-;22287:139;22071:362;22023:410;;;;:::o;22439:180::-;22487:77;22484:1;22477:88;22584:4;22581:1;22574:15;22608:4;22605:1;22598:15;22625:185;22665:1;22682:20;22700:1;22682:20;:::i;:::-;22677:25;;22716:20;22734:1;22716:20;:::i;:::-;22711:25;;22755:1;22745:35;;22760:18;;:::i;:::-;22745:35;22802:1;22799;22795:9;22790:14;;22625:185;;;;:::o;22816:180::-;22864:77;22861:1;22854:88;22961:4;22958:1;22951:15;22985:4;22982:1;22975:15;23002:180;23050:77;23047:1;23040:88;23147:4;23144:1;23137:15;23171:4;23168:1;23161:15;23188:143;23245:5;23276:6;23270:13;23261:22;;23292:33;23319:5;23292:33;:::i;:::-;23188:143;;;;:::o;23337:351::-;23407:6;23456:2;23444:9;23435:7;23431:23;23427:32;23424:119;;;23462:79;;:::i;:::-;23424:119;23582:1;23607:64;23663:7;23654:6;23643:9;23639:22;23607:64;:::i;:::-;23597:74;;23553:128;23337:351;;;;:::o;23694:85::-;23739:7;23768:5;23757:16;;23694:85;;;:::o;23785:158::-;23843:9;23876:61;23894:42;23903:32;23929:5;23903:32;:::i;:::-;23894:42;:::i;:::-;23876:61;:::i;:::-;23863:74;;23785:158;;;:::o;23949:147::-;24044:45;24083:5;24044:45;:::i;:::-;24039:3;24032:58;23949:147;;:::o;24102:114::-;24169:6;24203:5;24197:12;24187:22;;24102:114;;;:::o;24222:184::-;24321:11;24355:6;24350:3;24343:19;24395:4;24390:3;24386:14;24371:29;;24222:184;;;;:::o;24412:132::-;24479:4;24502:3;24494:11;;24532:4;24527:3;24523:14;24515:22;;24412:132;;;:::o;24550:108::-;24627:24;24645:5;24627:24;:::i;:::-;24622:3;24615:37;24550:108;;:::o;24664:179::-;24733:10;24754:46;24796:3;24788:6;24754:46;:::i;:::-;24832:4;24827:3;24823:14;24809:28;;24664:179;;;;:::o;24849:113::-;24919:4;24951;24946:3;24942:14;24934:22;;24849:113;;;:::o;24998:732::-;25117:3;25146:54;25194:5;25146:54;:::i;:::-;25216:86;25295:6;25290:3;25216:86;:::i;:::-;25209:93;;25326:56;25376:5;25326:56;:::i;:::-;25405:7;25436:1;25421:284;25446:6;25443:1;25440:13;25421:284;;;25522:6;25516:13;25549:63;25608:3;25593:13;25549:63;:::i;:::-;25542:70;;25635:60;25688:6;25635:60;:::i;:::-;25625:70;;25481:224;25468:1;25465;25461:9;25456:14;;25421:284;;;25425:14;25721:3;25714:10;;25122:608;;;24998:732;;;;:::o;25736:831::-;25999:4;26037:3;26026:9;26022:19;26014:27;;26051:71;26119:1;26108:9;26104:17;26095:6;26051:71;:::i;:::-;26132:80;26208:2;26197:9;26193:18;26184:6;26132:80;:::i;:::-;26259:9;26253:4;26249:20;26244:2;26233:9;26229:18;26222:48;26287:108;26390:4;26381:6;26287:108;:::i;:::-;26279:116;;26405:72;26473:2;26462:9;26458:18;26449:6;26405:72;:::i;:::-;26487:73;26555:3;26544:9;26540:19;26531:6;26487:73;:::i;:::-;25736:831;;;;;;;;:::o

Swarm Source

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