ETH Price: $3,063.93 (+3.13%)
Gas: 9 Gwei

Token

Xigou Inu (Xigou)
 

Overview

Max Total Supply

1,000,000,000 Xigou

Holders

112

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,859,828.902081349 Xigou

Value
$0.00
0x71418e8b045030ac52cfb779ef7e53c5fb91dd9f
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:
XigouInu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
 Telegram: https://t.me/XigouInu
 Twitter: https://twitter.com/xigouinu
 Website: https://xigouinu.io
*/

//
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

/* solhint-disable */

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

contract XigouInu is ERC20, Ownable {
    using SafeMath for uint256;
    address public routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public DEAD = 0x000000000000000000000000000000000000dEaD;

    string public constant _name = "Xigou Inu";
    string public constant _symbol = "Xigou";
    uint8 public constant _decimals = 9;

    uint256 public _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 100) / 100;

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

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

    bool public isTradingEnabled;
    uint256 public startTime;
    uint256 public constant BLACKLIST_TRADE_UNTIL = 30 seconds;

    uint256 public liquidityFee = 20;
    uint256 public marketingFee = 50;
    uint256 public totalFee = liquidityFee + marketingFee;
    uint256 public feeDenominator = 1000;

    address private marketingFeeReceiver = 0x82946f878Af1f4933063364e4535D7DB7f56ef0C;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply / 1000) * 2; //
    bool internal inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[owner] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

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

        if (recipient != pair && recipient != DEAD) {
            require(
                isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount,
                "Transfer amount exceeds the bag size."
            );
        }

        require(!_isBlackListed[sender] && !_isBlackListed[recipient], "Account is blacklisted");

        if (sender != owner && recipient != owner) {
            require(isTradingEnabled, "Trading not enabled yet");
            if (block.timestamp < startTime + BLACKLIST_TRADE_UNTIL) {
                if (sender == pair) {
                    _isBlackListed[recipient] = true;
                }
                if (recipient == pair) {
                    _isBlackListed[sender] = true;
                }
            }
        }

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

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

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

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

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);

        (bool MarketingSuccess /* bytes memory data */, ) = payable(marketingFeeReceiver).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if (amountToLiquify > 0) {
            router.addLiquidityETH{ value: amountETHLiquidity }(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(0, path, to, block.timestamp);
    }

    function clearStuckBalance() external {
        payable(marketingFeeReceiver).transfer(address(this).balance);
    }

    function setWalletLimit(uint256 amountPercent) external onlyOwner {
        _maxWalletAmount = (_totalSupply * amountPercent) / 1000;
    }

    function setFee(uint256 _liquidityFee, uint256 _marketingFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = liquidityFee + marketingFee;
    }

    function enableTrading() external onlyOwner {
        require(startTime == 0, "Trading already enabled");
        isTradingEnabled = true;
        startTime = block.timestamp;
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BLACKLIST_TRADE_UNTIL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","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":"","type":"address"}],"name":"_isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAdress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ac919062000970565b633b9aca00620000bd9190620009c1565b600355606480600354620000d29190620009c1565b620000de919062000a3b565b6004556014600c556032600d55600d54600c54620000fd919062000a73565b600e556103e8600f557382946f878af1f4933063364e4535d7db7f56ef0c601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260146101000a81548160ff02191690831515021790555060026103e86003546200018a919062000a3b565b620001969190620009c1565b601355348015620001a657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e0919062000b18565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000b18565b306040518363ffffffff1660e01b8152600401620003af92919062000b5b565b6020604051808303816000875af1158015620003cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f5919062000b18565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620007c8919062000b99565b60405180910390a362000bb6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000864578086048111156200083c576200083b620007d6565b5b60018516156200084c5780820291505b80810290506200085c8562000805565b94506200081c565b94509492505050565b6000826200087f576001905062000952565b816200088f576000905062000952565b8160018114620008a85760028114620008b357620008e9565b600191505062000952565b60ff841115620008c857620008c7620007d6565b5b8360020a915084821115620008e257620008e1620007d6565b5b5062000952565b5060208310610133831016604e8410600b8410161715620009235782820a9050838111156200091d576200091c620007d6565b5b62000952565b62000932848484600162000812565b925090508184048111156200094c576200094b620007d6565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200097d8262000959565b91506200098a8362000963565b9250620009b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200086d565b905092915050565b6000620009ce8262000959565b9150620009db8362000959565b9250828202620009eb8162000959565b9150828204841483151762000a055762000a04620007d6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a488262000959565b915062000a558362000959565b92508262000a685762000a6762000a0c565b5b828204905092915050565b600062000a808262000959565b915062000a8d8362000959565b925082820190508082111562000aa85762000aa7620007d6565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ae08262000ab3565b9050919050565b62000af28162000ad3565b811462000afe57600080fd5b50565b60008151905062000b128162000ae7565b92915050565b60006020828403121562000b315762000b3062000aae565b5b600062000b418482850162000b01565b91505092915050565b62000b558162000ad3565b82525050565b600060408201905062000b72600083018562000b4a565b62000b81602083018462000b4a565b9392505050565b62000b938162000959565b82525050565b600060208201905062000bb0600083018462000b88565b92915050565b61328d8062000bc66000396000f3fe60806040526004361061023f5760003560e01c80636c0a24eb1161012e578063954bbdec116100ab578063b09f12661161006f578063b09f1266146108b4578063d28d8852146108df578063dd62ed3e1461090a578063f1d5f51714610947578063f887ea401461097057610246565b8063954bbdec146107cb57806395d89b41146107f657806398118cb414610821578063a8aa1b311461084c578063a9059cbb1461087757610246565b8063715018a6116100f2578063715018a61461070a57806378e9792514610721578063893d20e81461074c5780638a8c523c146107775780638b42507f1461078e57610246565b80636c0a24eb146105fd5780636c9bb93b146106285780636ddd1713146106655780636ebcf6071461069057806370a08231146106cd57610246565b80632f54bf6e116101bc5780633eaaf86b116101805780633eaaf86b146105045780633f4218e01461052f57806352f7c9881461056c578063571ac8b0146105955780636b67c4df146105d257610246565b80632f54bf6e1461042f578063313ce5671461046c57806332424aa314610497578063364333f4146104c25780633d5ca64a146104d957610246565b8063095ea7b311610203578063095ea7b314610334578063180b0d7e1461037157806318160ddd1461039c5780631df4ccfc146103c757806323b872dd146103f257610246565b8063024c2ddd1461024b57806303fd2a45146102885780630445b667146102b3578063064a59d0146102de57806306fdde031461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906126b7565b61099b565b60405161027f9190612710565b60405180910390f35b34801561029457600080fd5b5061029d6109c0565b6040516102aa919061273a565b60405180910390f35b3480156102bf57600080fd5b506102c86109e6565b6040516102d59190612710565b60405180910390f35b3480156102ea57600080fd5b506102f36109ec565b6040516103009190612770565b60405180910390f35b34801561031557600080fd5b5061031e6109ff565b60405161032b919061281b565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190612869565b610a3c565b6040516103689190612770565b60405180910390f35b34801561037d57600080fd5b50610386610b2e565b6040516103939190612710565b60405180910390f35b3480156103a857600080fd5b506103b1610b34565b6040516103be9190612710565b60405180910390f35b3480156103d357600080fd5b506103dc610b3e565b6040516103e99190612710565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906128a9565b610b44565b6040516104269190612770565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906128fc565b610d44565b6040516104639190612770565b60405180910390f35b34801561047857600080fd5b50610481610d9d565b60405161048e9190612945565b60405180910390f35b3480156104a357600080fd5b506104ac610da6565b6040516104b99190612945565b60405180910390f35b3480156104ce57600080fd5b506104d7610dab565b005b3480156104e557600080fd5b506104ee610e16565b6040516104fb919061273a565b60405180910390f35b34801561051057600080fd5b50610519610e3c565b6040516105269190612710565b60405180910390f35b34801561053b57600080fd5b50610556600480360381019061055191906128fc565b610e42565b6040516105639190612770565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190612960565b610e62565b005b3480156105a157600080fd5b506105bc60048036038101906105b791906128fc565b610ed2565b6040516105c99190612770565b60405180910390f35b3480156105de57600080fd5b506105e7610f05565b6040516105f49190612710565b60405180910390f35b34801561060957600080fd5b50610612610f0b565b60405161061f9190612710565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906128fc565b610f11565b60405161065c9190612770565b60405180910390f35b34801561067157600080fd5b5061067a610f31565b6040516106879190612770565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906128fc565b610f44565b6040516106c49190612710565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef91906128fc565b610f5c565b6040516107019190612710565b60405180910390f35b34801561071657600080fd5b5061071f610fa5565b005b34801561072d57600080fd5b50610736611068565b6040516107439190612710565b60405180910390f35b34801561075857600080fd5b5061076161106e565b60405161076e919061273a565b60405180910390f35b34801561078357600080fd5b5061078c611097565b005b34801561079a57600080fd5b506107b560048036038101906107b091906128fc565b611148565b6040516107c29190612770565b60405180910390f35b3480156107d757600080fd5b506107e0611168565b6040516107ed9190612710565b60405180910390f35b34801561080257600080fd5b5061080b61116d565b604051610818919061281b565b60405180910390f35b34801561082d57600080fd5b506108366111aa565b6040516108439190612710565b60405180910390f35b34801561085857600080fd5b506108616111b0565b60405161086e919061273a565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190612869565b6111d6565b6040516108ab9190612770565b60405180910390f35b3480156108c057600080fd5b506108c96111eb565b6040516108d6919061281b565b60405180910390f35b3480156108eb57600080fd5b506108f4611224565b604051610901919061281b565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c91906126b7565b61125d565b60405161093e9190612710565b60405180910390f35b34801561095357600080fd5b5061096e600480360381019061096991906129a0565b6112e4565b005b34801561097c57600080fd5b50610985611350565b6040516109929190612a2c565b60405180910390f35b6006602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600a60009054906101000a900460ff1681565b60606040518060400160405280600981526020017f5869676f7520496e750000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b1c9190612710565b60405180910390a36001905092915050565b600f5481565b6000600354905090565b600e5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d3057610caf826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d3b8484846113da565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600981565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e13573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60076020528060005260406000206000915054906101000a900460ff1681565b610e6b33610d44565b610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612a93565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ec89190612ae2565b600e819055505050565b6000610efe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a3c565b9050919050565b600d5481565b60045481565b60096020528060005260406000206000915054906101000a900460ff1681565b601260149054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fae33610d44565b610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612a93565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161105e919061273a565b60405180910390a1565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110a033610d44565b6110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612a93565b60405180910390fd5b6000600b5414611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90612b62565b60405180910390fd5b6001600a60006101000a81548160ff02191690831515021790555042600b81905550565b60086020528060005260406000206000915054906101000a900460ff1681565b601e81565b60606040518060400160405280600581526020017f5869676f75000000000000000000000000000000000000000000000000000000815250905090565b600c5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111e33384846113da565b905092915050565b6040518060400160405280600581526020017f5869676f7500000000000000000000000000000000000000000000000000000081525081565b6040518060400160405280600981526020017f5869676f7520496e75000000000000000000000000000000000000000000000081525081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112ed33610d44565b61132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390612a93565b60405180910390fd5b6103e88160035461133d9190612b82565b6113479190612bf3565b60048190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383111582906113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5919061281b565b60405180910390fd5b50600083856113cd9190612c24565b9050809150509392505050565b6000601460009054906101000a900460ff1615611403576113fc848484611af6565b9050611aef565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114af5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561159857600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611558575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115559190612ae2565b11155b611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612cca565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561163c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612d36565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611723575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118eb57600a60009054906101000a900460ff16611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90612da2565b60405180910390fd5b601e600b546117869190612ae2565b4210156118ea57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361183b576001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e9576001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b6118f3611cc9565b1561190157611900611da0565b5b61198a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006119d8856122ea565b6119e257826119ed565b6119ec8584612341565b5b9050611a4181600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae19190612710565b60405180910390a360019150505b9392505050565b6000611b81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cb69190612710565b60405180910390a3600190509392505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d365750601460009054906101000a900460ff16155b8015611d4e5750601260149054906101000a900460ff165b8015611d9b5750601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff021916908315150217905550600060135490506000611e006002611df2600e54611de4600c54876124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b90506000611e1782846125a790919063ffffffff16565b90506000600267ffffffffffffffff811115611e3657611e35612dc2565b5b604051908082528060200260200182016040528015611e645781602001602082028036833780820191505090505b5090503081600081518110611e7c57611e7b612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f479190612e35565b81600181518110611f5b57611f5a612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611ffe959493929190612f5b565b600060405180830381600087803b15801561201857600080fd5b505af115801561202c573d6000803e3d6000fd5b50505050600061204582476125a790919063ffffffff16565b905060006120736120626002600c5461255d90919063ffffffff16565b600e546125a790919063ffffffff16565b905060006120b160026120a384612095600c54886124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b905060006120dc836120ce600d54876124e390919063ffffffff16565b61255d90919063ffffffff16565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161212a90612fe6565b600060405180830381858888f193505050503d8060008114612168576040519150601f19603f3d011682016040523d82523d6000602084013e61216d565b606091505b50509050806121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613047565b60405180910390fd5b60008911156122c357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161224396959493929190613067565b60606040518083038185885af1158015612261573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061228691906130dd565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516122ba929190613130565b60405180910390a15b505050505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061236d600f5461235f600e54866124e390919063ffffffff16565b61255d90919063ffffffff16565b90506123c181600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124619190612710565b60405180910390a361247c81846125a790919063ffffffff16565b91505092915050565b60008082846124949190612ae2565b9050838110156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d0906131a5565b60405180910390fd5b8091505092915050565b60008083036124f55760009050612557565b600082846125039190612b82565b90508284826125129190612bf3565b14612552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254990613237565b60405180910390fd5b809150505b92915050565b600061259f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f1565b905092915050565b60006125e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611376565b905092915050565b60008083118290612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f919061281b565b60405180910390fd5b50600083856126479190612bf3565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061268482612659565b9050919050565b61269481612679565b811461269f57600080fd5b50565b6000813590506126b18161268b565b92915050565b600080604083850312156126ce576126cd612654565b5b60006126dc858286016126a2565b92505060206126ed858286016126a2565b9150509250929050565b6000819050919050565b61270a816126f7565b82525050565b60006020820190506127256000830184612701565b92915050565b61273481612679565b82525050565b600060208201905061274f600083018461272b565b92915050565b60008115159050919050565b61276a81612755565b82525050565b60006020820190506127856000830184612761565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127c55780820151818401526020810190506127aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ed8261278b565b6127f78185612796565b93506128078185602086016127a7565b612810816127d1565b840191505092915050565b6000602082019050818103600083015261283581846127e2565b905092915050565b612846816126f7565b811461285157600080fd5b50565b6000813590506128638161283d565b92915050565b600080604083850312156128805761287f612654565b5b600061288e858286016126a2565b925050602061289f85828601612854565b9150509250929050565b6000806000606084860312156128c2576128c1612654565b5b60006128d0868287016126a2565b93505060206128e1868287016126a2565b92505060406128f286828701612854565b9150509250925092565b60006020828403121561291257612911612654565b5b6000612920848285016126a2565b91505092915050565b600060ff82169050919050565b61293f81612929565b82525050565b600060208201905061295a6000830184612936565b92915050565b6000806040838503121561297757612976612654565b5b600061298585828601612854565b925050602061299685828601612854565b9150509250929050565b6000602082840312156129b6576129b5612654565b5b60006129c484828501612854565b91505092915050565b6000819050919050565b60006129f26129ed6129e884612659565b6129cd565b612659565b9050919050565b6000612a04826129d7565b9050919050565b6000612a16826129f9565b9050919050565b612a2681612a0b565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a7d600683612796565b9150612a8882612a47565b602082019050919050565b60006020820190508181036000830152612aac81612a70565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aed826126f7565b9150612af8836126f7565b9250828201905080821115612b1057612b0f612ab3565b5b92915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612b4c601783612796565b9150612b5782612b16565b602082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b6000612b8d826126f7565b9150612b98836126f7565b9250828202612ba6816126f7565b91508282048414831517612bbd57612bbc612ab3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bfe826126f7565b9150612c09836126f7565b925082612c1957612c18612bc4565b5b828204905092915050565b6000612c2f826126f7565b9150612c3a836126f7565b9250828203905081811115612c5257612c51612ab3565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612cb4602583612796565b9150612cbf82612c58565b604082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b7f4163636f756e7420697320626c61636b6c697374656400000000000000000000600082015250565b6000612d20601683612796565b9150612d2b82612cea565b602082019050919050565b60006020820190508181036000830152612d4f81612d13565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612d8c601783612796565b9150612d9782612d56565b602082019050919050565b60006020820190508181036000830152612dbb81612d7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e2f8161268b565b92915050565b600060208284031215612e4b57612e4a612654565b5b6000612e5984828501612e20565b91505092915050565b6000819050919050565b6000612e87612e82612e7d84612e62565b6129cd565b6126f7565b9050919050565b612e9781612e6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ed281612679565b82525050565b6000612ee48383612ec9565b60208301905092915050565b6000602082019050919050565b6000612f0882612e9d565b612f128185612ea8565b9350612f1d83612eb9565b8060005b83811015612f4e578151612f358882612ed8565b9750612f4083612ef0565b925050600181019050612f21565b5085935050505092915050565b600060a082019050612f706000830188612701565b612f7d6020830187612e8e565b8181036040830152612f8f8186612efd565b9050612f9e606083018561272b565b612fab6080830184612701565b9695505050505050565b600081905092915050565b50565b6000612fd0600083612fb5565b9150612fdb82612fc0565b600082019050919050565b6000612ff182612fc3565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000613031601e83612796565b915061303c82612ffb565b602082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600060c08201905061307c600083018961272b565b6130896020830188612701565b6130966040830187612e8e565b6130a36060830186612e8e565b6130b0608083018561272b565b6130bd60a0830184612701565b979650505050505050565b6000815190506130d78161283d565b92915050565b6000806000606084860312156130f6576130f5612654565b5b6000613104868287016130c8565b9350506020613115868287016130c8565b9250506040613126868287016130c8565b9150509250925092565b60006040820190506131456000830185612701565b6131526020830184612701565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061318f601b83612796565b915061319a82613159565b602082019050919050565b600060208201905081810360008301526131be81613182565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613221602183612796565b915061322c826131c5565b604082019050919050565b6000602082019050818103600083015261325081613214565b905091905056fea2646970667358221220866a3734b1ff5e2db25dc08173886c9c62edcd80b3df77a5f165a17db955aed564736f6c63430008110033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80636c0a24eb1161012e578063954bbdec116100ab578063b09f12661161006f578063b09f1266146108b4578063d28d8852146108df578063dd62ed3e1461090a578063f1d5f51714610947578063f887ea401461097057610246565b8063954bbdec146107cb57806395d89b41146107f657806398118cb414610821578063a8aa1b311461084c578063a9059cbb1461087757610246565b8063715018a6116100f2578063715018a61461070a57806378e9792514610721578063893d20e81461074c5780638a8c523c146107775780638b42507f1461078e57610246565b80636c0a24eb146105fd5780636c9bb93b146106285780636ddd1713146106655780636ebcf6071461069057806370a08231146106cd57610246565b80632f54bf6e116101bc5780633eaaf86b116101805780633eaaf86b146105045780633f4218e01461052f57806352f7c9881461056c578063571ac8b0146105955780636b67c4df146105d257610246565b80632f54bf6e1461042f578063313ce5671461046c57806332424aa314610497578063364333f4146104c25780633d5ca64a146104d957610246565b8063095ea7b311610203578063095ea7b314610334578063180b0d7e1461037157806318160ddd1461039c5780631df4ccfc146103c757806323b872dd146103f257610246565b8063024c2ddd1461024b57806303fd2a45146102885780630445b667146102b3578063064a59d0146102de57806306fdde031461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906126b7565b61099b565b60405161027f9190612710565b60405180910390f35b34801561029457600080fd5b5061029d6109c0565b6040516102aa919061273a565b60405180910390f35b3480156102bf57600080fd5b506102c86109e6565b6040516102d59190612710565b60405180910390f35b3480156102ea57600080fd5b506102f36109ec565b6040516103009190612770565b60405180910390f35b34801561031557600080fd5b5061031e6109ff565b60405161032b919061281b565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190612869565b610a3c565b6040516103689190612770565b60405180910390f35b34801561037d57600080fd5b50610386610b2e565b6040516103939190612710565b60405180910390f35b3480156103a857600080fd5b506103b1610b34565b6040516103be9190612710565b60405180910390f35b3480156103d357600080fd5b506103dc610b3e565b6040516103e99190612710565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906128a9565b610b44565b6040516104269190612770565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906128fc565b610d44565b6040516104639190612770565b60405180910390f35b34801561047857600080fd5b50610481610d9d565b60405161048e9190612945565b60405180910390f35b3480156104a357600080fd5b506104ac610da6565b6040516104b99190612945565b60405180910390f35b3480156104ce57600080fd5b506104d7610dab565b005b3480156104e557600080fd5b506104ee610e16565b6040516104fb919061273a565b60405180910390f35b34801561051057600080fd5b50610519610e3c565b6040516105269190612710565b60405180910390f35b34801561053b57600080fd5b50610556600480360381019061055191906128fc565b610e42565b6040516105639190612770565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190612960565b610e62565b005b3480156105a157600080fd5b506105bc60048036038101906105b791906128fc565b610ed2565b6040516105c99190612770565b60405180910390f35b3480156105de57600080fd5b506105e7610f05565b6040516105f49190612710565b60405180910390f35b34801561060957600080fd5b50610612610f0b565b60405161061f9190612710565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906128fc565b610f11565b60405161065c9190612770565b60405180910390f35b34801561067157600080fd5b5061067a610f31565b6040516106879190612770565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906128fc565b610f44565b6040516106c49190612710565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef91906128fc565b610f5c565b6040516107019190612710565b60405180910390f35b34801561071657600080fd5b5061071f610fa5565b005b34801561072d57600080fd5b50610736611068565b6040516107439190612710565b60405180910390f35b34801561075857600080fd5b5061076161106e565b60405161076e919061273a565b60405180910390f35b34801561078357600080fd5b5061078c611097565b005b34801561079a57600080fd5b506107b560048036038101906107b091906128fc565b611148565b6040516107c29190612770565b60405180910390f35b3480156107d757600080fd5b506107e0611168565b6040516107ed9190612710565b60405180910390f35b34801561080257600080fd5b5061080b61116d565b604051610818919061281b565b60405180910390f35b34801561082d57600080fd5b506108366111aa565b6040516108439190612710565b60405180910390f35b34801561085857600080fd5b506108616111b0565b60405161086e919061273a565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190612869565b6111d6565b6040516108ab9190612770565b60405180910390f35b3480156108c057600080fd5b506108c96111eb565b6040516108d6919061281b565b60405180910390f35b3480156108eb57600080fd5b506108f4611224565b604051610901919061281b565b60405180910390f35b34801561091657600080fd5b50610931600480360381019061092c91906126b7565b61125d565b60405161093e9190612710565b60405180910390f35b34801561095357600080fd5b5061096e600480360381019061096991906129a0565b6112e4565b005b34801561097c57600080fd5b50610985611350565b6040516109929190612a2c565b60405180910390f35b6006602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b600a60009054906101000a900460ff1681565b60606040518060400160405280600981526020017f5869676f7520496e750000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b1c9190612710565b60405180910390a36001905092915050565b600f5481565b6000600354905090565b600e5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d3057610caf826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d3b8484846113da565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600981565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e13573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60076020528060005260406000206000915054906101000a900460ff1681565b610e6b33610d44565b610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612a93565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ec89190612ae2565b600e819055505050565b6000610efe827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a3c565b9050919050565b600d5481565b60045481565b60096020528060005260406000206000915054906101000a900460ff1681565b601260149054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fae33610d44565b610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612a93565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161105e919061273a565b60405180910390a1565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110a033610d44565b6110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612a93565b60405180910390fd5b6000600b5414611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90612b62565b60405180910390fd5b6001600a60006101000a81548160ff02191690831515021790555042600b81905550565b60086020528060005260406000206000915054906101000a900460ff1681565b601e81565b60606040518060400160405280600581526020017f5869676f75000000000000000000000000000000000000000000000000000000815250905090565b600c5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111e33384846113da565b905092915050565b6040518060400160405280600581526020017f5869676f7500000000000000000000000000000000000000000000000000000081525081565b6040518060400160405280600981526020017f5869676f7520496e75000000000000000000000000000000000000000000000081525081565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112ed33610d44565b61132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132390612a93565b60405180910390fd5b6103e88160035461133d9190612b82565b6113479190612bf3565b60048190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383111582906113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b5919061281b565b60405180910390fd5b50600083856113cd9190612c24565b9050809150509392505050565b6000601460009054906101000a900460ff1615611403576113fc848484611af6565b9050611aef565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114af5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561159857600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611558575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115559190612ae2565b11155b611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e90612cca565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561163c5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612d36565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611723575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118eb57600a60009054906101000a900460ff16611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e90612da2565b60405180910390fd5b601e600b546117869190612ae2565b4210156118ea57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361183b576001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e9576001600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b6118f3611cc9565b1561190157611900611da0565b5b61198a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006119d8856122ea565b6119e257826119ed565b6119ec8584612341565b5b9050611a4181600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae19190612710565b60405180910390a360019150505b9392505050565b6000611b81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113769092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cb69190612710565b60405180910390a3600190509392505050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d365750601460009054906101000a900460ff16155b8015611d4e5750601260149054906101000a900460ff165b8015611d9b5750601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff021916908315150217905550600060135490506000611e006002611df2600e54611de4600c54876124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b90506000611e1782846125a790919063ffffffff16565b90506000600267ffffffffffffffff811115611e3657611e35612dc2565b5b604051908082528060200260200182016040528015611e645781602001602082028036833780820191505090505b5090503081600081518110611e7c57611e7b612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f479190612e35565b81600181518110611f5b57611f5a612df1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611ffe959493929190612f5b565b600060405180830381600087803b15801561201857600080fd5b505af115801561202c573d6000803e3d6000fd5b50505050600061204582476125a790919063ffffffff16565b905060006120736120626002600c5461255d90919063ffffffff16565b600e546125a790919063ffffffff16565b905060006120b160026120a384612095600c54886124e390919063ffffffff16565b61255d90919063ffffffff16565b61255d90919063ffffffff16565b905060006120dc836120ce600d54876124e390919063ffffffff16565b61255d90919063ffffffff16565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161212a90612fe6565b600060405180830381858888f193505050503d8060008114612168576040519150601f19603f3d011682016040523d82523d6000602084013e61216d565b606091505b50509050806121b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a890613047565b60405180910390fd5b60008911156122c357601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161224396959493929190613067565b60606040518083038185885af1158015612261573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061228691906130dd565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a6040516122ba929190613130565b60405180910390a15b505050505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b60008061236d600f5461235f600e54866124e390919063ffffffff16565b61255d90919063ffffffff16565b90506123c181600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124619190612710565b60405180910390a361247c81846125a790919063ffffffff16565b91505092915050565b60008082846124949190612ae2565b9050838110156124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d0906131a5565b60405180910390fd5b8091505092915050565b60008083036124f55760009050612557565b600082846125039190612b82565b90508284826125129190612bf3565b14612552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254990613237565b60405180910390fd5b809150505b92915050565b600061259f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f1565b905092915050565b60006125e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611376565b905092915050565b60008083118290612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f919061281b565b60405180910390fd5b50600083856126479190612bf3565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061268482612659565b9050919050565b61269481612679565b811461269f57600080fd5b50565b6000813590506126b18161268b565b92915050565b600080604083850312156126ce576126cd612654565b5b60006126dc858286016126a2565b92505060206126ed858286016126a2565b9150509250929050565b6000819050919050565b61270a816126f7565b82525050565b60006020820190506127256000830184612701565b92915050565b61273481612679565b82525050565b600060208201905061274f600083018461272b565b92915050565b60008115159050919050565b61276a81612755565b82525050565b60006020820190506127856000830184612761565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127c55780820151818401526020810190506127aa565b60008484015250505050565b6000601f19601f8301169050919050565b60006127ed8261278b565b6127f78185612796565b93506128078185602086016127a7565b612810816127d1565b840191505092915050565b6000602082019050818103600083015261283581846127e2565b905092915050565b612846816126f7565b811461285157600080fd5b50565b6000813590506128638161283d565b92915050565b600080604083850312156128805761287f612654565b5b600061288e858286016126a2565b925050602061289f85828601612854565b9150509250929050565b6000806000606084860312156128c2576128c1612654565b5b60006128d0868287016126a2565b93505060206128e1868287016126a2565b92505060406128f286828701612854565b9150509250925092565b60006020828403121561291257612911612654565b5b6000612920848285016126a2565b91505092915050565b600060ff82169050919050565b61293f81612929565b82525050565b600060208201905061295a6000830184612936565b92915050565b6000806040838503121561297757612976612654565b5b600061298585828601612854565b925050602061299685828601612854565b9150509250929050565b6000602082840312156129b6576129b5612654565b5b60006129c484828501612854565b91505092915050565b6000819050919050565b60006129f26129ed6129e884612659565b6129cd565b612659565b9050919050565b6000612a04826129d7565b9050919050565b6000612a16826129f9565b9050919050565b612a2681612a0b565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a7d600683612796565b9150612a8882612a47565b602082019050919050565b60006020820190508181036000830152612aac81612a70565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aed826126f7565b9150612af8836126f7565b9250828201905080821115612b1057612b0f612ab3565b5b92915050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612b4c601783612796565b9150612b5782612b16565b602082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b6000612b8d826126f7565b9150612b98836126f7565b9250828202612ba6816126f7565b91508282048414831517612bbd57612bbc612ab3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bfe826126f7565b9150612c09836126f7565b925082612c1957612c18612bc4565b5b828204905092915050565b6000612c2f826126f7565b9150612c3a836126f7565b9250828203905081811115612c5257612c51612ab3565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612cb4602583612796565b9150612cbf82612c58565b604082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b7f4163636f756e7420697320626c61636b6c697374656400000000000000000000600082015250565b6000612d20601683612796565b9150612d2b82612cea565b602082019050919050565b60006020820190508181036000830152612d4f81612d13565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b6000612d8c601783612796565b9150612d9782612d56565b602082019050919050565b60006020820190508181036000830152612dbb81612d7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e2f8161268b565b92915050565b600060208284031215612e4b57612e4a612654565b5b6000612e5984828501612e20565b91505092915050565b6000819050919050565b6000612e87612e82612e7d84612e62565b6129cd565b6126f7565b9050919050565b612e9781612e6c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ed281612679565b82525050565b6000612ee48383612ec9565b60208301905092915050565b6000602082019050919050565b6000612f0882612e9d565b612f128185612ea8565b9350612f1d83612eb9565b8060005b83811015612f4e578151612f358882612ed8565b9750612f4083612ef0565b925050600181019050612f21565b5085935050505092915050565b600060a082019050612f706000830188612701565b612f7d6020830187612e8e565b8181036040830152612f8f8186612efd565b9050612f9e606083018561272b565b612fab6080830184612701565b9695505050505050565b600081905092915050565b50565b6000612fd0600083612fb5565b9150612fdb82612fc0565b600082019050919050565b6000612ff182612fc3565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000613031601e83612796565b915061303c82612ffb565b602082019050919050565b6000602082019050818103600083015261306081613024565b9050919050565b600060c08201905061307c600083018961272b565b6130896020830188612701565b6130966040830187612e8e565b6130a36060830186612e8e565b6130b0608083018561272b565b6130bd60a0830184612701565b979650505050505050565b6000815190506130d78161283d565b92915050565b6000806000606084860312156130f6576130f5612654565b5b6000613104868287016130c8565b9350506020613115868287016130c8565b9250506040613126868287016130c8565b9150509250925092565b60006040820190506131456000830185612701565b6131526020830184612701565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061318f601b83612796565b915061319a82613159565b602082019050919050565b600060208201905081810360008301526131be81613182565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613221602183612796565b915061322c826131c5565b604082019050919050565b6000602082019050818103600083015261325081613214565b905091905056fea2646970667358221220866a3734b1ff5e2db25dc08173886c9c62edcd80b3df77a5f165a17db955aed564736f6c63430008110033

Deployed Bytecode Sourcemap

4244:8836:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4802:66;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4399:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5538:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5036:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6629:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7113:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5307:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6311:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5247:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7631:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2470:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6421:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4568:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12329:118;;;;;;;;;;;;;:::i;:::-;;4320:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4612:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4877:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12604:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7337:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5208:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4682:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4981:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5501:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4751:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6831:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2579:131;;;;;;;;;;;;;:::i;:::-;;5071:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6731:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12828:185;;;;;;;;;;;;;:::i;:::-;;4927:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5102:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6523:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5169:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5473:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7467:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4521:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4472:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6958:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12455:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5442:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4802:66;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4399:64::-;;;;;;;;;;;;;:::o;5538:56::-;;;;:::o;5036:28::-;;;;;;;;;;;;;:::o;6629:94::-;6677:13;6710:5;;;;;;;;;;;;;;;;;6703:12;;6629:94;:::o;7113:216::-;7188:4;7240:6;7205:11;:23;7217:10;7205:23;;;;;;;;;;;;;;;:32;7229:7;7205:32;;;;;;;;;;;;;;;:41;;;;7283:7;7262:37;;7271:10;7262:37;;;7292:6;7262:37;;;;;;:::i;:::-;;;;;;;;7317:4;7310:11;;7113:216;;;;:::o;5307:36::-;;;;:::o;6311:102::-;6366:7;6393:12;;6386:19;;6311:102;:::o;5247:53::-;;;;:::o;7631:372::-;7731:4;7787:17;7752:11;:19;7764:6;7752:19;;;;;;;;;;;;;;;:31;7772:10;7752:31;;;;;;;;;;;;;;;;:52;7748:188;;7855:69;7891:6;7855:69;;;;;;;;;;;;;;;;;:11;:19;7867:6;7855:19;;;;;;;;;;;;;;;:31;7875:10;7855:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7821:11;:19;7833:6;7821:19;;;;;;;;;;;;;;;:31;7841:10;7821:31;;;;;;;;;;;;;;;:103;;;;7748:188;7955:40;7969:6;7977:9;7988:6;7955:13;:40::i;:::-;7948:47;;7631:372;;;;;:::o;2470:103::-;2525:4;2560:5;;;;;;;;;;;2549:16;;:7;:16;;;2542:23;;2470:103;;;:::o;6421:94::-;6473:5;4602:1;6491:16;;6421:94;:::o;4568:35::-;4602:1;4568:35;:::o;12329:118::-;12386:20;;;;;;;;;;;12378:38;;:61;12417:21;12378:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12329:118::o;4320:72::-;;;;;;;;;;;;;:::o;4612:63::-;;;;:::o;4877:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;12604:216::-;2423:19;2431:10;2423:7;:19::i;:::-;2415:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12711:13:::1;12696:12;:28;;;;12750:13;12735:12;:28;;;;12800:12;;12785;;:27;;;;:::i;:::-;12774:8;:38;;;;12604:216:::0;;:::o;7337:122::-;7392:4;7416:35;7424:7;7433:17;7416:7;:35::i;:::-;7409:42;;7337:122;;;:::o;5208:32::-;;;;:::o;4682:60::-;;;;:::o;4981:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;5501:30::-;;;;;;;;;;;;;:::o;4751:44::-;;;;;;;;;;;;;;;;;:::o;6831:119::-;6897:7;6924:9;:18;6934:7;6924:18;;;;;;;;;;;;;;;;6917:25;;6831:119;;;:::o;2579:131::-;2423:19;2431:10;2423:7;:19::i;:::-;2415:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2652:1:::1;2636:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2670:32;2699:1;2670:32;;;;;;:::i;:::-;;;;;;;;2579:131::o:0;5071:24::-;;;;:::o;6731:92::-;6783:7;6810:5;;;;;;;;;;;6803:12;;6731:92;:::o;12828:185::-;2423:19;2431:10;2423:7;:19::i;:::-;2415:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12904:1:::1;12891:9;;:14;12883:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12963:4;12944:16;;:23;;;;;;;;;;;;;;;;;;12990:15;12978:9;:27;;;;12828:185::o:0;4927:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;5102:58::-;5150:10;5102:58;:::o;6523:98::-;6573:13;6606:7;;;;;;;;;;;;;;;;;6599:14;;6523:98;:::o;5169:32::-;;;;:::o;5473:19::-;;;;;;;;;;;;;:::o;7467:156::-;7547:4;7571:44;7585:10;7597:9;7608:6;7571:13;:44::i;:::-;7564:51;;7467:156;;;;:::o;4521:40::-;;;;;;;;;;;;;;;;;;;:::o;4472:42::-;;;;;;;;;;;;;;;;;;;:::o;6958:147::-;7042:7;7069:11;:19;7081:6;7069:19;;;;;;;;;;;;;;;:28;7089:7;7069:28;;;;;;;;;;;;;;;;7062:35;;6958:147;;;;:::o;12455:141::-;2423:19;2431:10;2423:7;:19::i;:::-;2415:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12584:4:::1;12567:13;12552:12;;:28;;;;:::i;:::-;12551:37;;;;:::i;:::-;12532:16;:56;;;;12455:141:::0;:::o;5442:24::-;;;;;;;;;;;;;:::o;559:190::-;645:7;678:1;673;:6;;681:12;665:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;705:9;721:1;717;:5;;;;:::i;:::-;705:17;;740:1;733:8;;;559:190;;;;;:::o;8011:1420::-;8103:4;8124:6;;;;;;;;;;;8120:87;;;8154:41;8169:6;8177:9;8188:6;8154:14;:41::i;:::-;8147:48;;;;8120:87;8236:4;;;;;;;;;;;8223:17;;:9;:17;;;;:38;;;;;8257:4;;;;;;;;;;;8244:17;;:9;:17;;;;8223:38;8219:249;;;8304:15;:26;8320:9;8304:26;;;;;;;;;;;;;;;;;;;;;;;;;:79;;;;8367:16;;8357:6;8334:9;:20;8344:9;8334:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;8304:79;8278:178;;;;;;;;;;;;:::i;:::-;;;;;;;;;8219:249;8489:14;:22;8504:6;8489:22;;;;;;;;;;;;;;;;;;;;;;;;;8488:23;:53;;;;;8516:14;:25;8531:9;8516:25;;;;;;;;;;;;;;;;;;;;;;;;;8515:26;8488:53;8480:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8595:5;;;;;;;;;;8585:15;;:6;:15;;;;:37;;;;;8617:5;;;;;;;;;;8604:18;;:9;:18;;;;8585:37;8581:435;;;8647:16;;;;;;;;;;;8639:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;5150:10;8728:9;;:33;;;;:::i;:::-;8710:15;:51;8706:299;;;8796:4;;;;;;;;;;;8786:14;;:6;:14;;;8782:95;;8853:4;8825:14;:25;8840:9;8825:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8782:95;8912:4;;;;;;;;;;;8899:17;;:9;:17;;;8895:95;;8966:4;8941:14;:22;8956:6;8941:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8895:95;8706:299;8581:435;9032:16;:14;:16::i;:::-;9028:59;;;9065:10;:8;:10::i;:::-;9028:59;9119:53;9141:6;9119:53;;;;;;;;;;;;;;;;;:9;:17;9129:6;9119:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9099:9;:17;9109:6;9099:17;;;;;;;;;;;;;;;:73;;;;9185:22;9210:21;9224:6;9210:13;:21::i;:::-;:56;;9260:6;9210:56;;;9234:23;9242:6;9250;9234:7;:23::i;:::-;9210:56;9185:81;;9300:40;9325:14;9300:9;:20;9310:9;9300:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9277:9;:20;9287:9;9277:20;;;;;;;;;;;;;;;:63;;;;9375:9;9358:43;;9367:6;9358:43;;;9386:14;9358:43;;;;;;:::i;:::-;;;;;;;;9419:4;9412:11;;;8011:1420;;;;;;:::o;9439:330::-;9532:4;9569:53;9591:6;9569:53;;;;;;;;;;;;;;;;;:9;:17;9579:6;9569:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9549:9;:17;9559:6;9549:17;;;;;;;;;;;;;;;:73;;;;9656:32;9681:6;9656:9;:20;9666:9;9656:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9633:9;:20;9643:9;9633:20;;;;;;;;;;;;;;;:55;;;;9721:9;9704:35;;9713:6;9704:35;;;9732:6;9704:35;;;;;;:::i;:::-;;;;;;;;9757:4;9750:11;;9439:330;;;;;:::o;10236:170::-;10285:4;10323;;;;;;;;;;;10309:18;;:10;:18;;;;:29;;;;;10332:6;;;;;;;;;;;10331:7;10309:29;:44;;;;;10342:11;;;;;;;;;;;10309:44;:89;;;;;10385:13;;10357:9;:24;10375:4;10357:24;;;;;;;;;;;;;;;;:41;;10309:89;10302:96;;10236:170;:::o;10414:1590::-;5673:4;5664:6;;:13;;;;;;;;;;;;;;;;;;10463:28:::1;10494:13;;10463:44;;10518:23;10544:59;10601:1;10544:52;10587:8;;10544:38;10569:12;;10544:20;:24;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;10518:85;;10614:20;10637:41;10662:15;10637:20;:24;;:41;;;;:::i;:::-;10614:64;;10691:21;10729:1;10715:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10691:40;;10760:4;10742;10747:1;10742:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10786:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10776:4;10781:1;10776:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10812:21;10836;10812:45;;10870:6;;;;;;;;;;;:57;;;10942:12;10969:1;10985:4;11012;11032:15;10870:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11069:17;11089:40;11115:13;11089:21;:25;;:40;;;;:::i;:::-;11069:60;;11140:19;11162:33;11175:19;11192:1;11175:12;;:16;;:19;;;;:::i;:::-;11162:8;;:12;;:33;;;;:::i;:::-;11140:55;;11206:26;11235:51;11284:1;11235:44;11267:11;11235:27;11249:12;;11235:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;11206:80;;11297:26;11326:44;11358:11;11326:27;11340:12;;11326:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;11297:73;;11384:21;11443:20;;;;;;;;;;;11435:34;;11491:18;11529:5;11435:114;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11383:166;;;11568:16;11560:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11654:1;11636:15;:19;11632:365;;;11672:6;;;;;;;;;;;:22;;;11703:18;11750:4;11774:15;11808:1;11828::::0;11848:20:::1;;;;;;;;;;;11887:15;11672:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11937:48;11949:18;11969:15;11937:48;;;;;;;:::i;:::-;;;;;;;;11632:365;10452:1552;;;;;;;;;;5709:5:::0;5700:6;;:14;;;;;;;;;;;;;;;;;;10414:1590::o;9777:114::-;9839:4;9864:11;:19;9876:6;9864:19;;;;;;;;;;;;;;;;;;;;;;;;;9863:20;9856:27;;9777:114;;;:::o;9899:329::-;9966:7;9986:17;10006:40;10031:14;;10006:20;10017:8;;10006:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;9986:60;;10084:39;10113:9;10084;:24;10102:4;10084:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10057:9;:24;10075:4;10057:24;;;;;;;;;;;;;;;:66;;;;10164:4;10139:42;;10148:6;10139:42;;;10171:9;10139:42;;;;;;:::i;:::-;;;;;;;;10199:21;10210:9;10199:6;:10;;:21;;;;:::i;:::-;10192:28;;;9899:329;;;;:::o;232:179::-;290:7;310:9;326:1;322;:5;;;;:::i;:::-;310:17;;351:1;346;:6;;338:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;402:1;395:8;;;232:179;;;;:::o;755:246::-;813:7;842:1;837;:6;833:47;;867:1;860:8;;;;833:47;890:9;906:1;902;:5;;;;:::i;:::-;890:17;;935:1;930;926;:5;;;;:::i;:::-;:10;918:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;992:1;985:8;;;755:246;;;;;:::o;1007:132::-;1065:7;1092:39;1096:1;1099;1092:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1085:46;;1007:132;;;;:::o;417:136::-;475:7;502:43;506:1;509;502:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;495:50;;417:136;;;;:::o;1145:189::-;1231:7;1263:1;1259;:5;1266:12;1251:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1290:9;1306:1;1302;:5;;;;:::i;:::-;1290:17;;1325:1;1318:8;;;1145:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:474::-;909:6;917;966:2;954:9;945:7;941:23;937:32;934:119;;;972:79;;:::i;:::-;934:119;1092:1;1117:53;1162:7;1153:6;1142:9;1138:22;1117:53;:::i;:::-;1107:63;;1063:117;1219:2;1245:53;1290:7;1281:6;1270:9;1266:22;1245:53;:::i;:::-;1235:63;;1190:118;841:474;;;;;:::o;1321:77::-;1358:7;1387:5;1376:16;;1321:77;;;:::o;1404:118::-;1491:24;1509:5;1491:24;:::i;:::-;1486:3;1479:37;1404:118;;:::o;1528:222::-;1621:4;1659:2;1648:9;1644:18;1636:26;;1672:71;1740:1;1729:9;1725:17;1716:6;1672:71;:::i;:::-;1528:222;;;;:::o;1756:118::-;1843:24;1861:5;1843:24;:::i;:::-;1838:3;1831:37;1756:118;;:::o;1880:222::-;1973:4;2011:2;2000:9;1996:18;1988:26;;2024:71;2092:1;2081:9;2077:17;2068:6;2024:71;:::i;:::-;1880:222;;;;:::o;2108:90::-;2142:7;2185:5;2178:13;2171:21;2160:32;;2108:90;;;:::o;2204:109::-;2285:21;2300:5;2285:21;:::i;:::-;2280:3;2273:34;2204:109;;:::o;2319:210::-;2406:4;2444:2;2433:9;2429:18;2421:26;;2457:65;2519:1;2508:9;2504:17;2495:6;2457:65;:::i;:::-;2319:210;;;;:::o;2535:99::-;2587:6;2621:5;2615:12;2605:22;;2535:99;;;:::o;2640:169::-;2724:11;2758:6;2753:3;2746:19;2798:4;2793:3;2789:14;2774:29;;2640:169;;;;:::o;2815:246::-;2896:1;2906:113;2920:6;2917:1;2914:13;2906:113;;;3005:1;3000:3;2996:11;2990:18;2986:1;2981:3;2977:11;2970:39;2942:2;2939:1;2935:10;2930:15;;2906:113;;;3053:1;3044:6;3039:3;3035:16;3028:27;2877:184;2815:246;;;:::o;3067:102::-;3108:6;3159:2;3155:7;3150:2;3143:5;3139:14;3135:28;3125:38;;3067:102;;;:::o;3175:377::-;3263:3;3291:39;3324:5;3291:39;:::i;:::-;3346:71;3410:6;3405:3;3346:71;:::i;:::-;3339:78;;3426:65;3484:6;3479:3;3472:4;3465:5;3461:16;3426:65;:::i;:::-;3516:29;3538:6;3516:29;:::i;:::-;3511:3;3507:39;3500:46;;3267:285;3175:377;;;;:::o;3558:313::-;3671:4;3709:2;3698:9;3694:18;3686:26;;3758:9;3752:4;3748:20;3744:1;3733:9;3729:17;3722:47;3786:78;3859:4;3850:6;3786:78;:::i;:::-;3778:86;;3558:313;;;;:::o;3877:122::-;3950:24;3968:5;3950:24;:::i;:::-;3943:5;3940:35;3930:63;;3989:1;3986;3979:12;3930:63;3877:122;:::o;4005:139::-;4051:5;4089:6;4076:20;4067:29;;4105:33;4132:5;4105:33;:::i;:::-;4005:139;;;;:::o;4150:474::-;4218:6;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4150:474;;;;;:::o;4630:619::-;4707:6;4715;4723;4772:2;4760:9;4751:7;4747:23;4743:32;4740:119;;;4778:79;;:::i;:::-;4740:119;4898:1;4923:53;4968:7;4959:6;4948:9;4944:22;4923:53;:::i;:::-;4913:63;;4869:117;5025:2;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4996:118;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;4630:619;;;;;:::o;5255:329::-;5314:6;5363:2;5351:9;5342:7;5338:23;5334:32;5331:119;;;5369:79;;:::i;:::-;5331:119;5489:1;5514:53;5559:7;5550:6;5539:9;5535:22;5514:53;:::i;:::-;5504:63;;5460:117;5255:329;;;;:::o;5590:86::-;5625:7;5665:4;5658:5;5654:16;5643:27;;5590:86;;;:::o;5682:112::-;5765:22;5781:5;5765:22;:::i;:::-;5760:3;5753:35;5682:112;;:::o;5800:214::-;5889:4;5927:2;5916:9;5912:18;5904:26;;5940:67;6004:1;5993:9;5989:17;5980:6;5940:67;:::i;:::-;5800:214;;;;:::o;6020:474::-;6088:6;6096;6145:2;6133:9;6124:7;6120:23;6116:32;6113:119;;;6151:79;;:::i;:::-;6113:119;6271:1;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6242:117;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;6020:474;;;;;:::o;6500:329::-;6559:6;6608:2;6596:9;6587:7;6583:23;6579:32;6576:119;;;6614:79;;:::i;:::-;6576:119;6734:1;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6705:117;6500:329;;;;:::o;6835:60::-;6863:3;6884:5;6877:12;;6835:60;;;:::o;6901:142::-;6951:9;6984:53;7002:34;7011:24;7029:5;7011:24;:::i;:::-;7002:34;:::i;:::-;6984:53;:::i;:::-;6971:66;;6901:142;;;:::o;7049:126::-;7099:9;7132:37;7163:5;7132:37;:::i;:::-;7119:50;;7049:126;;;:::o;7181:144::-;7249:9;7282:37;7313:5;7282:37;:::i;:::-;7269:50;;7181:144;;;:::o;7331:167::-;7436:55;7485:5;7436:55;:::i;:::-;7431:3;7424:68;7331:167;;:::o;7504:258::-;7615:4;7653:2;7642:9;7638:18;7630:26;;7666:89;7752:1;7741:9;7737:17;7728:6;7666:89;:::i;:::-;7504:258;;;;:::o;7768:156::-;7908:8;7904:1;7896:6;7892:14;7885:32;7768:156;:::o;7930:365::-;8072:3;8093:66;8157:1;8152:3;8093:66;:::i;:::-;8086:73;;8168:93;8257:3;8168:93;:::i;:::-;8286:2;8281:3;8277:12;8270:19;;7930:365;;;:::o;8301:419::-;8467:4;8505:2;8494:9;8490:18;8482:26;;8554:9;8548:4;8544:20;8540:1;8529:9;8525:17;8518:47;8582:131;8708:4;8582:131;:::i;:::-;8574:139;;8301:419;;;:::o;8726:180::-;8774:77;8771:1;8764:88;8871:4;8868:1;8861:15;8895:4;8892:1;8885:15;8912:191;8952:3;8971:20;8989:1;8971:20;:::i;:::-;8966:25;;9005:20;9023:1;9005:20;:::i;:::-;9000:25;;9048:1;9045;9041:9;9034:16;;9069:3;9066:1;9063:10;9060:36;;;9076:18;;:::i;:::-;9060:36;8912:191;;;;:::o;9109:173::-;9249:25;9245:1;9237:6;9233:14;9226:49;9109:173;:::o;9288:366::-;9430:3;9451:67;9515:2;9510:3;9451:67;:::i;:::-;9444:74;;9527:93;9616:3;9527:93;:::i;:::-;9645:2;9640:3;9636:12;9629:19;;9288:366;;;:::o;9660:419::-;9826:4;9864:2;9853:9;9849:18;9841:26;;9913:9;9907:4;9903:20;9899:1;9888:9;9884:17;9877:47;9941:131;10067:4;9941:131;:::i;:::-;9933:139;;9660:419;;;:::o;10085:410::-;10125:7;10148:20;10166:1;10148:20;:::i;:::-;10143:25;;10182:20;10200:1;10182:20;:::i;:::-;10177:25;;10237:1;10234;10230:9;10259:30;10277:11;10259:30;:::i;:::-;10248:41;;10438:1;10429:7;10425:15;10422:1;10419:22;10399:1;10392:9;10372:83;10349:139;;10468:18;;:::i;:::-;10349:139;10133:362;10085:410;;;;:::o;10501:180::-;10549:77;10546:1;10539:88;10646:4;10643:1;10636:15;10670:4;10667:1;10660:15;10687:185;10727:1;10744:20;10762:1;10744:20;:::i;:::-;10739:25;;10778:20;10796:1;10778:20;:::i;:::-;10773:25;;10817:1;10807:35;;10822:18;;:::i;:::-;10807:35;10864:1;10861;10857:9;10852:14;;10687:185;;;;:::o;10878:194::-;10918:4;10938:20;10956:1;10938:20;:::i;:::-;10933:25;;10972:20;10990:1;10972:20;:::i;:::-;10967:25;;11016:1;11013;11009:9;11001:17;;11040:1;11034:4;11031:11;11028:37;;;11045:18;;:::i;:::-;11028:37;10878:194;;;;:::o;11078:224::-;11218:34;11214:1;11206:6;11202:14;11195:58;11287:7;11282:2;11274:6;11270:15;11263:32;11078:224;:::o;11308:366::-;11450:3;11471:67;11535:2;11530:3;11471:67;:::i;:::-;11464:74;;11547:93;11636:3;11547:93;:::i;:::-;11665:2;11660:3;11656:12;11649:19;;11308:366;;;:::o;11680:419::-;11846:4;11884:2;11873:9;11869:18;11861:26;;11933:9;11927:4;11923:20;11919:1;11908:9;11904:17;11897:47;11961:131;12087:4;11961:131;:::i;:::-;11953:139;;11680:419;;;:::o;12105:172::-;12245:24;12241:1;12233:6;12229:14;12222:48;12105:172;:::o;12283:366::-;12425:3;12446:67;12510:2;12505:3;12446:67;:::i;:::-;12439:74;;12522:93;12611:3;12522:93;:::i;:::-;12640:2;12635:3;12631:12;12624:19;;12283:366;;;:::o;12655:419::-;12821:4;12859:2;12848:9;12844:18;12836:26;;12908:9;12902:4;12898:20;12894:1;12883:9;12879:17;12872:47;12936:131;13062:4;12936:131;:::i;:::-;12928:139;;12655:419;;;:::o;13080:173::-;13220:25;13216:1;13208:6;13204:14;13197:49;13080:173;:::o;13259:366::-;13401:3;13422:67;13486:2;13481:3;13422:67;:::i;:::-;13415:74;;13498:93;13587:3;13498:93;:::i;:::-;13616:2;13611:3;13607:12;13600:19;;13259:366;;;:::o;13631:419::-;13797:4;13835:2;13824:9;13820:18;13812:26;;13884:9;13878:4;13874:20;13870:1;13859:9;13855:17;13848:47;13912:131;14038:4;13912:131;:::i;:::-;13904:139;;13631:419;;;:::o;14056:180::-;14104:77;14101:1;14094:88;14201:4;14198:1;14191:15;14225:4;14222:1;14215:15;14242:180;14290:77;14287:1;14280:88;14387:4;14384:1;14377:15;14411:4;14408:1;14401:15;14428:143;14485:5;14516:6;14510:13;14501:22;;14532:33;14559:5;14532:33;:::i;:::-;14428:143;;;;:::o;14577:351::-;14647:6;14696:2;14684:9;14675:7;14671:23;14667:32;14664:119;;;14702:79;;:::i;:::-;14664:119;14822:1;14847:64;14903:7;14894:6;14883:9;14879:22;14847:64;:::i;:::-;14837:74;;14793:128;14577:351;;;;:::o;14934:85::-;14979:7;15008:5;14997:16;;14934:85;;;:::o;15025:158::-;15083:9;15116:61;15134:42;15143:32;15169:5;15143:32;:::i;:::-;15134:42;:::i;:::-;15116:61;:::i;:::-;15103:74;;15025:158;;;:::o;15189:147::-;15284:45;15323:5;15284:45;:::i;:::-;15279:3;15272:58;15189:147;;:::o;15342:114::-;15409:6;15443:5;15437:12;15427:22;;15342:114;;;:::o;15462:184::-;15561:11;15595:6;15590:3;15583:19;15635:4;15630:3;15626:14;15611:29;;15462:184;;;;:::o;15652:132::-;15719:4;15742:3;15734:11;;15772:4;15767:3;15763:14;15755:22;;15652:132;;;:::o;15790:108::-;15867:24;15885:5;15867:24;:::i;:::-;15862:3;15855:37;15790:108;;:::o;15904:179::-;15973:10;15994:46;16036:3;16028:6;15994:46;:::i;:::-;16072:4;16067:3;16063:14;16049:28;;15904:179;;;;:::o;16089:113::-;16159:4;16191;16186:3;16182:14;16174:22;;16089:113;;;:::o;16238:732::-;16357:3;16386:54;16434:5;16386:54;:::i;:::-;16456:86;16535:6;16530:3;16456:86;:::i;:::-;16449:93;;16566:56;16616:5;16566:56;:::i;:::-;16645:7;16676:1;16661:284;16686:6;16683:1;16680:13;16661:284;;;16762:6;16756:13;16789:63;16848:3;16833:13;16789:63;:::i;:::-;16782:70;;16875:60;16928:6;16875:60;:::i;:::-;16865:70;;16721:224;16708:1;16705;16701:9;16696:14;;16661:284;;;16665:14;16961:3;16954:10;;16362:608;;;16238:732;;;;:::o;16976:831::-;17239:4;17277:3;17266:9;17262:19;17254:27;;17291:71;17359:1;17348:9;17344:17;17335:6;17291:71;:::i;:::-;17372:80;17448:2;17437:9;17433:18;17424:6;17372:80;:::i;:::-;17499:9;17493:4;17489:20;17484:2;17473:9;17469:18;17462:48;17527:108;17630:4;17621:6;17527:108;:::i;:::-;17519:116;;17645:72;17713:2;17702:9;17698:18;17689:6;17645:72;:::i;:::-;17727:73;17795:3;17784:9;17780:19;17771:6;17727:73;:::i;:::-;16976:831;;;;;;;;:::o;17813:147::-;17914:11;17951:3;17936:18;;17813:147;;;;:::o;17966:114::-;;:::o;18086:398::-;18245:3;18266:83;18347:1;18342:3;18266:83;:::i;:::-;18259:90;;18358:93;18447:3;18358:93;:::i;:::-;18476:1;18471:3;18467:11;18460:18;;18086:398;;;:::o;18490:379::-;18674:3;18696:147;18839:3;18696:147;:::i;:::-;18689:154;;18860:3;18853:10;;18490:379;;;:::o;18875:180::-;19015:32;19011:1;19003:6;18999:14;18992:56;18875:180;:::o;19061:366::-;19203:3;19224:67;19288:2;19283:3;19224:67;:::i;:::-;19217:74;;19300:93;19389:3;19300:93;:::i;:::-;19418:2;19413:3;19409:12;19402:19;;19061:366;;;:::o;19433:419::-;19599:4;19637:2;19626:9;19622:18;19614:26;;19686:9;19680:4;19676:20;19672:1;19661:9;19657:17;19650:47;19714:131;19840:4;19714:131;:::i;:::-;19706:139;;19433:419;;;:::o;19858:807::-;20107:4;20145:3;20134:9;20130:19;20122:27;;20159:71;20227:1;20216:9;20212:17;20203:6;20159:71;:::i;:::-;20240:72;20308:2;20297:9;20293:18;20284:6;20240:72;:::i;:::-;20322:80;20398:2;20387:9;20383:18;20374:6;20322:80;:::i;:::-;20412;20488:2;20477:9;20473:18;20464:6;20412:80;:::i;:::-;20502:73;20570:3;20559:9;20555:19;20546:6;20502:73;:::i;:::-;20585;20653:3;20642:9;20638:19;20629:6;20585:73;:::i;:::-;19858:807;;;;;;;;;:::o;20671:143::-;20728:5;20759:6;20753:13;20744:22;;20775:33;20802:5;20775:33;:::i;:::-;20671:143;;;;:::o;20820:663::-;20908:6;20916;20924;20973:2;20961:9;20952:7;20948:23;20944:32;20941:119;;;20979:79;;:::i;:::-;20941:119;21099:1;21124:64;21180:7;21171:6;21160:9;21156:22;21124:64;:::i;:::-;21114:74;;21070:128;21237:2;21263:64;21319:7;21310:6;21299:9;21295:22;21263:64;:::i;:::-;21253:74;;21208:129;21376:2;21402:64;21458:7;21449:6;21438:9;21434:22;21402:64;:::i;:::-;21392:74;;21347:129;20820:663;;;;;:::o;21489:332::-;21610:4;21648:2;21637:9;21633:18;21625:26;;21661:71;21729:1;21718:9;21714:17;21705:6;21661:71;:::i;:::-;21742:72;21810:2;21799:9;21795:18;21786:6;21742:72;:::i;:::-;21489:332;;;;;:::o;21827:177::-;21967:29;21963:1;21955:6;21951:14;21944:53;21827:177;:::o;22010:366::-;22152:3;22173:67;22237:2;22232:3;22173:67;:::i;:::-;22166:74;;22249:93;22338:3;22249:93;:::i;:::-;22367:2;22362:3;22358:12;22351:19;;22010:366;;;:::o;22382:419::-;22548:4;22586:2;22575:9;22571:18;22563:26;;22635:9;22629:4;22625:20;22621:1;22610:9;22606:17;22599:47;22663:131;22789:4;22663:131;:::i;:::-;22655:139;;22382:419;;;:::o;22807:220::-;22947:34;22943:1;22935:6;22931:14;22924:58;23016:3;23011:2;23003:6;22999:15;22992:28;22807:220;:::o;23033:366::-;23175:3;23196:67;23260:2;23255:3;23196:67;:::i;:::-;23189:74;;23272:93;23361:3;23272:93;:::i;:::-;23390:2;23385:3;23381:12;23374:19;;23033:366;;;:::o;23405:419::-;23571:4;23609:2;23598:9;23594:18;23586:26;;23658:9;23652:4;23648:20;23644:1;23633:9;23629:17;23622:47;23686:131;23812:4;23686:131;:::i;:::-;23678:139;;23405:419;;;:::o

Swarm Source

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