ETH Price: $3,094.94 (+0.23%)

Token

FlipETH (FLIP)
 

Overview

Max Total Supply

100,000,000 FLIP

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
167,863.830186968 FLIP

Value
$0.00
0x2c35b1d2001303e3ca19becff29fd4ef6d4fdd9e
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:
FlipETH

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

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

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

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

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

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

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

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

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    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 FlipETH is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode'FlipETH';
    string private constant _symbol = 'FLIP';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 100; // 10000;
    uint256 private _maxTransferPercent = 100;
    uint256 private _maxWalletPercent = 100;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 300;
    uint256 private developmentFee = 300;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 2500;
    uint256 private transferFee = 2500;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0xae82A766Bd5EF637d9ad65852AA586050c910079; 
    address internal constant marketing_receiver = 0xae82A766Bd5EF637d9ad65852AA586050c910079;
    address internal constant liquidity_receiver = 0xae82A766Bd5EF637d9ad65852AA586050c910079;
    address public bettingContract;
    

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function TurnOnTrade() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function SetFees(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%");
    }

    function SetWallet(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

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

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

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

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

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

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

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

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(recipient == bettingContract) {
            return  false;
        } else {

            return !isFeeExempt[sender] && !isFeeExempt[recipient];

        }
 
    }

    function setBettingContract(address _bet) external onlyOwner {
         bettingContract = _bet;
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"SetWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TurnOnTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bettingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bet","type":"address"}],"name":"setBettingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000712565b6305f5e10062000025919062000763565b6001556064600255606460035560646004556000600a60146101000a81548160ff0219169083151502179055506000600b5561012c600c5561012c600d556000600e556109c4600f556109c46010556109c46011556127106012556001601360006101000a81548160ff021916908315150217905550620186a06103e8600154620000b1919062000763565b620000bd9190620007dd565b601655620186a0600a600154620000d5919062000763565b620000e19190620007dd565b601755348015620000f157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c191906200087f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f91906200087f565b6040518363ffffffff1660e01b81526004016200026e929190620008c2565b6020604051808303816000875af11580156200028e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b491906200087f565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ae82a766bd5ef637d9ad65852aa586050c91007973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ae82a766bd5ef637d9ad65852aa586050c91007973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000568919062000900565b60405180910390a350506200091d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060657808604811115620005de57620005dd62000578565b5b6001851615620005ee5780820291505b8081029050620005fe85620005a7565b9450620005be565b94509492505050565b600082620006215760019050620006f4565b81620006315760009050620006f4565b81600181146200064a576002811462000655576200068b565b6001915050620006f4565b60ff8411156200066a576200066962000578565b5b8360020a91508482111562000684576200068362000578565b5b50620006f4565b5060208310610133831016604e8410600b8410161715620006c55782820a905083811115620006bf57620006be62000578565b5b620006f4565b620006d48484846001620005b4565b92509050818404811115620006ee57620006ed62000578565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071f82620006fb565b91506200072c8362000705565b92506200075b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200060f565b905092915050565b60006200077082620006fb565b91506200077d83620006fb565b92508282026200078d81620006fb565b91508282048414831517620007a757620007a662000578565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007ea82620006fb565b9150620007f783620006fb565b9250826200080a5762000809620007ae565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000847826200081a565b9050919050565b62000859816200083a565b81146200086557600080fd5b50565b60008151905062000879816200084e565b92915050565b60006020828403121562000898576200089762000815565b5b6000620008a88482850162000868565b91505092915050565b620008bc816200083a565b82525050565b6000604082019050620008d96000830185620008b1565b620008e86020830184620008b1565b9392505050565b620008fa81620006fb565b82525050565b6000602082019050620009176000830184620008ef565b92915050565b613635806200092d6000396000f3fe60806040526004361061016a5760003560e01c806348ff2b8b116100d1578063930c3ee11161008a578063a8aa1b3111610064578063a8aa1b3114610539578063a9059cbb14610564578063dd62ed3e146105a1578063f2fde38b146105de57610171565b8063930c3ee1146104ba5780639358928b146104e357806395d89b411461050e57610171565b806348ff2b8b146103aa57806370a08231146103d357806378109e54146104105780637d1db4a51461043b578063893d20e8146104665780638c41180e1461049157610171565b806323b872dd1161012357806323b872dd146102885780632f54bf6e146102c557806330fce48b14610302578063313ce5671461032b5780633f4218e01461035657806343409bce1461039357610171565b806306fdde0314610176578063095ea7b3146101a1578063167a3d44146101de57806318160ddd146102075780631f976b7e1461023257806321cb48311461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610607565b60405161019891906126e0565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061279b565b610644565b6040516101d591906127f6565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190612811565b61065b565b005b34801561021357600080fd5b5061021c61075a565b60405161022991906128c2565b60405180910390f35b34801561023e57600080fd5b50610247610764565b60405161025491906128c2565b60405180910390f35b34801561026957600080fd5b5061027261078d565b60405161027f91906128ec565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612907565b6107b3565b6040516102bc91906127f6565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e7919061295a565b61087e565b6040516102f991906127f6565b60405180910390f35b34801561030e57600080fd5b506103296004803603810190610324919061295a565b6108d7565b005b34801561033757600080fd5b50610340610963565b60405161034d91906129a3565b60405180910390f35b34801561036257600080fd5b5061037d6004803603810190610378919061295a565b61096c565b60405161038a91906127f6565b60405180910390f35b34801561039f57600080fd5b506103a861098c565b005b3480156103b657600080fd5b506103d160048036038101906103cc91906129ea565b6109f1565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061295a565b610a94565b60405161040791906128c2565b60405180910390f35b34801561041c57600080fd5b50610425610add565b60405161043291906128c2565b60405180910390f35b34801561044757600080fd5b50610450610b06565b60405161045d91906128c2565b60405180910390f35b34801561047257600080fd5b5061047b610b2f565b60405161048891906128ec565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906129ea565b610b58565b005b3480156104c657600080fd5b506104e160048036038101906104dc9190612a2a565b610bfb565b005b3480156104ef57600080fd5b506104f8610d5b565b60405161050591906128c2565b60405180910390f35b34801561051a57600080fd5b50610523610d9c565b60405161053091906126e0565b60405180910390f35b34801561054557600080fd5b5061054e610dd9565b60405161055b91906128ec565b60405180910390f35b34801561057057600080fd5b5061058b6004803603810190610586919061279b565b610dff565b60405161059891906127f6565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c39190612a7d565b610e16565b6040516105d591906128c2565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190612afb565b610e9d565b005b60606040518060400160405280600781526020017f466c697045544800000000000000000000000000000000000000000000000000815250905090565b6000610651338484610f5f565b6001905092915050565b6106643361087e565b6106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a90612b74565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106ea600560125461112890919063ffffffff16565b600f5411158015610712575061070c600560125461112890919063ffffffff16565b60105411155b610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074890612c06565b60405180910390fd5b50505050505050565b6000600154905090565b600060125460035461077461075a565b61077e9190612c55565b6107889190612cc6565b905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107c084848461113e565b610873843361086e856040518060600160405280602881526020016135d860289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113379092919063ffffffff16565b610f5f565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6108e03361087e565b61091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091690612b74565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6109953361087e565b6109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb90612b74565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b6109fa3361087e565b610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090612b74565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610aed61075a565b610af79190612c55565b610b019190612cc6565b905090565b6000601254600254610b1661075a565b610b209190612c55565b610b2a9190612cc6565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b613361087e565b610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9790612b74565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c043361087e565b610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90612b74565b60405180910390fd5b600061271084610c5161075a565b610c5b9190612c55565b610c659190612cc6565b9050600061271084610c7561075a565b610c7f9190612c55565b610c899190612cc6565b9050600061271084610c9961075a565b610ca39190612c55565b610cad9190612cc6565b90508560028190555084600381905550836004819055506000610cf56103e8610ce76005610cd961075a565b61138c90919063ffffffff16565b61112890919063ffffffff16565b9050808410158015610d075750808310155b8015610d135750808210155b610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612d69565b60405180910390fd5b50505050505050565b6000610d97610d6a6000610a94565b610d89610d7861dead610a94565b6001546113a290919063ffffffff16565b6113a290919063ffffffff16565b905090565b60606040518060400160405280600481526020017f464c495000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e0c33848461113e565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ea63361087e565b610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90612b74565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610f549190612de8565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612f07565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161111b91906128c2565b60405180910390a3505050565b600081836111369190612cc6565b905092915050565b6111498383836113b8565b6111538383611529565b61115e838383611626565b6111688383611804565b6111738383836118cf565b61117e838383611b0e565b6111d081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061121f8484611b37565b6112295781611235565b611234848484611c44565b5b905061128981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dec90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161132991906128c2565b60405180910390a350505050565b600083831115829061137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137691906126e0565b60405180910390fd5b5082840390509392505050565b6000818361139a9190612c55565b905092915050565b600081836113b09190612f27565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612fcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d9061305f565b60405180910390fd5b600081116114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906130f1565b60405180910390fd5b6114e283610a94565b811115611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613183565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115cd5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561162257600a60149054906101000a900460ff16611621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611618906131ef565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116ca5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117245750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561175e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117ff5761176b610add565b6117bd82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dec90919063ffffffff16565b11156117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061325b565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118ab5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118cb576001601460008282546118c3919061327b565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a175761192c610764565b811115806119835750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119d75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d906132fb565b60405180910390fd5b5b611a1f610b06565b81111580611a765750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aca5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00906132fb565b60405180910390fd5b505050565b611b19838383611e02565b15611b3257611b29601654611f3b565b60006014819055505b505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b975760009050611c3e565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c3b5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90505b92915050565b600080611c51858561218c565b1115611de1576000611c89611c66868661218c565b611c7b6012548661112890919063ffffffff16565b61138c90919063ffffffff16565b9050611cdd81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dec90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d7d91906128c2565b60405180910390a36000600e541115611dc657611dc53061dead611dc0600e54611db26012548961112890919063ffffffff16565b61138c90919063ffffffff16565b61113e565b5b611dd981846113a290919063ffffffff16565b915050611de5565b8190505b9392505050565b60008183611dfa919061327b565b905092915050565b60008060175483101590506000601654611e1b30610a94565b10159050601560009054906101000a900460ff16158015611e485750601360009054906101000a900460ff165b8015611e605750600a60149054906101000a900460ff165b8015611e695750815b8015611ebf5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f185750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611f275750600060145410155b8015611f305750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611fa96002611f9b600d54611f8d600c54611f7f6001600b54611dec90919063ffffffff16565b611dec90919063ffffffff16565b611dec90919063ffffffff16565b61138c90919063ffffffff16565b90506000611fd482611fc6600b548661138c90919063ffffffff16565b61112890919063ffffffff16565b90506000611feb82856113a290919063ffffffff16565b90506000479050611ffb8261231b565b600061201082476113a290919063ffffffff16565b9050600061203b61202c600b54886113a290919063ffffffff16565b8361112890919063ffffffff16565b90506000612054600b548361138c90919063ffffffff16565b9050600081111561206a57612069868261255e565b5b6000612094600c5461208660028661138c90919063ffffffff16565b61138c90919063ffffffff16565b905060008111156120fb5773ae82a766bd5ef637d9ad65852aa586050c91007973ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120f9573d6000803e3d6000fd5b505b600047905060008111156121655773ae82a766bd5ef637d9ad65852aa586050c91007973ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612163573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061222f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122515761224a60646012546113a290919063ffffffff16565b9050612315565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122b0576010549050612315565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361230f57600f549050612315565b60115490505b92915050565b6000600267ffffffffffffffff8111156123385761233761331b565b5b6040519080825280602002602001820160405280156123665781602001602082028036833780820191505090505b509050308160008151811061237e5761237d61334a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612449919061338e565b8160018151811061245d5761245c61334a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c430600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f5f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125289594939291906134b4565b600060405180830381600087803b15801561254257600080fd5b505af1158015612556573d6000803e3d6000fd5b505050505050565b61258b30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f5f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073ae82a766bd5ef637d9ad65852aa586050c910079426040518863ffffffff1660e01b81526004016126069695949392919061350e565b60606040518083038185885af1158015612624573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126499190613584565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561268a57808201518184015260208101905061266f565b60008484015250505050565b6000601f19601f8301169050919050565b60006126b282612650565b6126bc818561265b565b93506126cc81856020860161266c565b6126d581612696565b840191505092915050565b600060208201905081810360008301526126fa81846126a7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061273282612707565b9050919050565b61274281612727565b811461274d57600080fd5b50565b60008135905061275f81612739565b92915050565b6000819050919050565b61277881612765565b811461278357600080fd5b50565b6000813590506127958161276f565b92915050565b600080604083850312156127b2576127b1612702565b5b60006127c085828601612750565b92505060206127d185828601612786565b9150509250929050565b60008115159050919050565b6127f0816127db565b82525050565b600060208201905061280b60008301846127e7565b92915050565b600080600080600080600060e0888a0312156128305761282f612702565b5b600061283e8a828b01612786565b975050602061284f8a828b01612786565b96505060406128608a828b01612786565b95505060606128718a828b01612786565b94505060806128828a828b01612786565b93505060a06128938a828b01612786565b92505060c06128a48a828b01612786565b91505092959891949750929550565b6128bc81612765565b82525050565b60006020820190506128d760008301846128b3565b92915050565b6128e681612727565b82525050565b600060208201905061290160008301846128dd565b92915050565b6000806000606084860312156129205761291f612702565b5b600061292e86828701612750565b935050602061293f86828701612750565b925050604061295086828701612786565b9150509250925092565b6000602082840312156129705761296f612702565b5b600061297e84828501612750565b91505092915050565b600060ff82169050919050565b61299d81612987565b82525050565b60006020820190506129b86000830184612994565b92915050565b6129c7816127db565b81146129d257600080fd5b50565b6000813590506129e4816129be565b92915050565b60008060408385031215612a0157612a00612702565b5b6000612a0f85828601612750565b9250506020612a20858286016129d5565b9150509250929050565b600080600060608486031215612a4357612a42612702565b5b6000612a5186828701612786565b9350506020612a6286828701612786565b9250506040612a7386828701612786565b9150509250925092565b60008060408385031215612a9457612a93612702565b5b6000612aa285828601612750565b9250506020612ab385828601612750565b9150509250929050565b6000612ac882612707565b9050919050565b612ad881612abd565b8114612ae357600080fd5b50565b600081359050612af581612acf565b92915050565b600060208284031215612b1157612b10612702565b5b6000612b1f84828501612ae6565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612b5e60068361265b565b9150612b6982612b28565b602082019050919050565b60006020820190508181036000830152612b8d81612b51565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bf0602c8361265b565b9150612bfb82612b94565b604082019050919050565b60006020820190508181036000830152612c1f81612be3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c6082612765565b9150612c6b83612765565b9250828202612c7981612765565b91508282048414831517612c9057612c8f612c26565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cd182612765565b9150612cdc83612765565b925082612cec57612ceb612c97565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612d53602e8361265b565b9150612d5e82612cf7565b604082019050919050565b60006020820190508181036000830152612d8281612d46565b9050919050565b6000819050919050565b6000612dae612da9612da484612707565b612d89565b612707565b9050919050565b6000612dc082612d93565b9050919050565b6000612dd282612db5565b9050919050565b612de281612dc7565b82525050565b6000602082019050612dfd6000830184612dd9565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e5f60248361265b565b9150612e6a82612e03565b604082019050919050565b60006020820190508181036000830152612e8e81612e52565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ef160228361265b565b9150612efc82612e95565b604082019050919050565b60006020820190508181036000830152612f2081612ee4565b9050919050565b6000612f3282612765565b9150612f3d83612765565b9250828203905081811115612f5557612f54612c26565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fb760258361265b565b9150612fc282612f5b565b604082019050919050565b60006020820190508181036000830152612fe681612faa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061304960238361265b565b915061305482612fed565b604082019050919050565b600060208201905081810360008301526130788161303c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130db60298361265b565b91506130e68261307f565b604082019050919050565b6000602082019050818103600083015261310a816130ce565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061316d60318361265b565b915061317882613111565b604082019050919050565b6000602082019050818103600083015261319c81613160565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131d9600e8361265b565b91506131e4826131a3565b602082019050919050565b60006020820190508181036000830152613208816131cc565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613245601e8361265b565b91506132508261320f565b602082019050919050565b6000602082019050818103600083015261327481613238565b9050919050565b600061328682612765565b915061329183612765565b92508282019050808211156132a9576132a8612c26565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132e560118361265b565b91506132f0826132af565b602082019050919050565b60006020820190508181036000830152613314816132d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061338881612739565b92915050565b6000602082840312156133a4576133a3612702565b5b60006133b284828501613379565b91505092915050565b6000819050919050565b60006133e06133db6133d6846133bb565b612d89565b612765565b9050919050565b6133f0816133c5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342b81612727565b82525050565b600061343d8383613422565b60208301905092915050565b6000602082019050919050565b6000613461826133f6565b61346b8185613401565b935061347683613412565b8060005b838110156134a757815161348e8882613431565b975061349983613449565b92505060018101905061347a565b5085935050505092915050565b600060a0820190506134c960008301886128b3565b6134d660208301876133e7565b81810360408301526134e88186613456565b90506134f760608301856128dd565b61350460808301846128b3565b9695505050505050565b600060c08201905061352360008301896128dd565b61353060208301886128b3565b61353d60408301876133e7565b61354a60608301866133e7565b61355760808301856128dd565b61356460a08301846128b3565b979650505050505050565b60008151905061357e8161276f565b92915050565b60008060006060848603121561359d5761359c612702565b5b60006135ab8682870161356f565b93505060206135bc8682870161356f565b92505060406135cd8682870161356f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d8694b2d815412eb40d972d85686356d404830ef15fe5967e4f55fb04cd2b44f64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806348ff2b8b116100d1578063930c3ee11161008a578063a8aa1b3111610064578063a8aa1b3114610539578063a9059cbb14610564578063dd62ed3e146105a1578063f2fde38b146105de57610171565b8063930c3ee1146104ba5780639358928b146104e357806395d89b411461050e57610171565b806348ff2b8b146103aa57806370a08231146103d357806378109e54146104105780637d1db4a51461043b578063893d20e8146104665780638c41180e1461049157610171565b806323b872dd1161012357806323b872dd146102885780632f54bf6e146102c557806330fce48b14610302578063313ce5671461032b5780633f4218e01461035657806343409bce1461039357610171565b806306fdde0314610176578063095ea7b3146101a1578063167a3d44146101de57806318160ddd146102075780631f976b7e1461023257806321cb48311461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610607565b60405161019891906126e0565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061279b565b610644565b6040516101d591906127f6565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190612811565b61065b565b005b34801561021357600080fd5b5061021c61075a565b60405161022991906128c2565b60405180910390f35b34801561023e57600080fd5b50610247610764565b60405161025491906128c2565b60405180910390f35b34801561026957600080fd5b5061027261078d565b60405161027f91906128ec565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612907565b6107b3565b6040516102bc91906127f6565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e7919061295a565b61087e565b6040516102f991906127f6565b60405180910390f35b34801561030e57600080fd5b506103296004803603810190610324919061295a565b6108d7565b005b34801561033757600080fd5b50610340610963565b60405161034d91906129a3565b60405180910390f35b34801561036257600080fd5b5061037d6004803603810190610378919061295a565b61096c565b60405161038a91906127f6565b60405180910390f35b34801561039f57600080fd5b506103a861098c565b005b3480156103b657600080fd5b506103d160048036038101906103cc91906129ea565b6109f1565b005b3480156103df57600080fd5b506103fa60048036038101906103f5919061295a565b610a94565b60405161040791906128c2565b60405180910390f35b34801561041c57600080fd5b50610425610add565b60405161043291906128c2565b60405180910390f35b34801561044757600080fd5b50610450610b06565b60405161045d91906128c2565b60405180910390f35b34801561047257600080fd5b5061047b610b2f565b60405161048891906128ec565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906129ea565b610b58565b005b3480156104c657600080fd5b506104e160048036038101906104dc9190612a2a565b610bfb565b005b3480156104ef57600080fd5b506104f8610d5b565b60405161050591906128c2565b60405180910390f35b34801561051a57600080fd5b50610523610d9c565b60405161053091906126e0565b60405180910390f35b34801561054557600080fd5b5061054e610dd9565b60405161055b91906128ec565b60405180910390f35b34801561057057600080fd5b5061058b6004803603810190610586919061279b565b610dff565b60405161059891906127f6565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c39190612a7d565b610e16565b6040516105d591906128c2565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190612afb565b610e9d565b005b60606040518060400160405280600781526020017f466c697045544800000000000000000000000000000000000000000000000000815250905090565b6000610651338484610f5f565b6001905092915050565b6106643361087e565b6106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a90612b74565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106ea600560125461112890919063ffffffff16565b600f5411158015610712575061070c600560125461112890919063ffffffff16565b60105411155b610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074890612c06565b60405180910390fd5b50505050505050565b6000600154905090565b600060125460035461077461075a565b61077e9190612c55565b6107889190612cc6565b905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006107c084848461113e565b610873843361086e856040518060600160405280602881526020016135d860289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113379092919063ffffffff16565b610f5f565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6108e03361087e565b61091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091690612b74565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6109953361087e565b6109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb90612b74565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b6109fa3361087e565b610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090612b74565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610aed61075a565b610af79190612c55565b610b019190612cc6565b905090565b6000601254600254610b1661075a565b610b209190612c55565b610b2a9190612cc6565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b613361087e565b610ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9790612b74565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c043361087e565b610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90612b74565b60405180910390fd5b600061271084610c5161075a565b610c5b9190612c55565b610c659190612cc6565b9050600061271084610c7561075a565b610c7f9190612c55565b610c899190612cc6565b9050600061271084610c9961075a565b610ca39190612c55565b610cad9190612cc6565b90508560028190555084600381905550836004819055506000610cf56103e8610ce76005610cd961075a565b61138c90919063ffffffff16565b61112890919063ffffffff16565b9050808410158015610d075750808310155b8015610d135750808210155b610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612d69565b60405180910390fd5b50505050505050565b6000610d97610d6a6000610a94565b610d89610d7861dead610a94565b6001546113a290919063ffffffff16565b6113a290919063ffffffff16565b905090565b60606040518060400160405280600481526020017f464c495000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e0c33848461113e565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ea63361087e565b610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90612b74565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610f549190612de8565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc590612e75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612f07565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161111b91906128c2565b60405180910390a3505050565b600081836111369190612cc6565b905092915050565b6111498383836113b8565b6111538383611529565b61115e838383611626565b6111688383611804565b6111738383836118cf565b61117e838383611b0e565b6111d081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061121f8484611b37565b6112295781611235565b611234848484611c44565b5b905061128981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dec90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161132991906128c2565b60405180910390a350505050565b600083831115829061137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137691906126e0565b60405180910390fd5b5082840390509392505050565b6000818361139a9190612c55565b905092915050565b600081836113b09190612f27565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612fcd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d9061305f565b60405180910390fd5b600081116114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906130f1565b60405180910390fd5b6114e283610a94565b811115611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613183565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115cd5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561162257600a60149054906101000a900460ff16611621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611618906131ef565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116ca5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117245750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561175e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117ff5761176b610add565b6117bd82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dec90919063ffffffff16565b11156117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061325b565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118ab5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118cb576001601460008282546118c3919061327b565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a175761192c610764565b811115806119835750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119d75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d906132fb565b60405180910390fd5b5b611a1f610b06565b81111580611a765750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aca5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00906132fb565b60405180910390fd5b505050565b611b19838383611e02565b15611b3257611b29601654611f3b565b60006014819055505b505050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b975760009050611c3e565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c3b5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90505b92915050565b600080611c51858561218c565b1115611de1576000611c89611c66868661218c565b611c7b6012548661112890919063ffffffff16565b61138c90919063ffffffff16565b9050611cdd81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dec90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d7d91906128c2565b60405180910390a36000600e541115611dc657611dc53061dead611dc0600e54611db26012548961112890919063ffffffff16565b61138c90919063ffffffff16565b61113e565b5b611dd981846113a290919063ffffffff16565b915050611de5565b8190505b9392505050565b60008183611dfa919061327b565b905092915050565b60008060175483101590506000601654611e1b30610a94565b10159050601560009054906101000a900460ff16158015611e485750601360009054906101000a900460ff165b8015611e605750600a60149054906101000a900460ff165b8015611e695750815b8015611ebf5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f185750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611f275750600060145410155b8015611f305750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611fa96002611f9b600d54611f8d600c54611f7f6001600b54611dec90919063ffffffff16565b611dec90919063ffffffff16565b611dec90919063ffffffff16565b61138c90919063ffffffff16565b90506000611fd482611fc6600b548661138c90919063ffffffff16565b61112890919063ffffffff16565b90506000611feb82856113a290919063ffffffff16565b90506000479050611ffb8261231b565b600061201082476113a290919063ffffffff16565b9050600061203b61202c600b54886113a290919063ffffffff16565b8361112890919063ffffffff16565b90506000612054600b548361138c90919063ffffffff16565b9050600081111561206a57612069868261255e565b5b6000612094600c5461208660028661138c90919063ffffffff16565b61138c90919063ffffffff16565b905060008111156120fb5773ae82a766bd5ef637d9ad65852aa586050c91007973ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120f9573d6000803e3d6000fd5b505b600047905060008111156121655773ae82a766bd5ef637d9ad65852aa586050c91007973ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612163573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061222f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122515761224a60646012546113a290919063ffffffff16565b9050612315565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122b0576010549050612315565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361230f57600f549050612315565b60115490505b92915050565b6000600267ffffffffffffffff8111156123385761233761331b565b5b6040519080825280602002602001820160405280156123665781602001602082028036833780820191505090505b509050308160008151811061237e5761237d61334a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612449919061338e565b8160018151811061245d5761245c61334a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c430600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f5f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125289594939291906134b4565b600060405180830381600087803b15801561254257600080fd5b505af1158015612556573d6000803e3d6000fd5b505050505050565b61258b30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f5f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073ae82a766bd5ef637d9ad65852aa586050c910079426040518863ffffffff1660e01b81526004016126069695949392919061350e565b60606040518083038185885af1158015612624573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126499190613584565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561268a57808201518184015260208101905061266f565b60008484015250505050565b6000601f19601f8301169050919050565b60006126b282612650565b6126bc818561265b565b93506126cc81856020860161266c565b6126d581612696565b840191505092915050565b600060208201905081810360008301526126fa81846126a7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061273282612707565b9050919050565b61274281612727565b811461274d57600080fd5b50565b60008135905061275f81612739565b92915050565b6000819050919050565b61277881612765565b811461278357600080fd5b50565b6000813590506127958161276f565b92915050565b600080604083850312156127b2576127b1612702565b5b60006127c085828601612750565b92505060206127d185828601612786565b9150509250929050565b60008115159050919050565b6127f0816127db565b82525050565b600060208201905061280b60008301846127e7565b92915050565b600080600080600080600060e0888a0312156128305761282f612702565b5b600061283e8a828b01612786565b975050602061284f8a828b01612786565b96505060406128608a828b01612786565b95505060606128718a828b01612786565b94505060806128828a828b01612786565b93505060a06128938a828b01612786565b92505060c06128a48a828b01612786565b91505092959891949750929550565b6128bc81612765565b82525050565b60006020820190506128d760008301846128b3565b92915050565b6128e681612727565b82525050565b600060208201905061290160008301846128dd565b92915050565b6000806000606084860312156129205761291f612702565b5b600061292e86828701612750565b935050602061293f86828701612750565b925050604061295086828701612786565b9150509250925092565b6000602082840312156129705761296f612702565b5b600061297e84828501612750565b91505092915050565b600060ff82169050919050565b61299d81612987565b82525050565b60006020820190506129b86000830184612994565b92915050565b6129c7816127db565b81146129d257600080fd5b50565b6000813590506129e4816129be565b92915050565b60008060408385031215612a0157612a00612702565b5b6000612a0f85828601612750565b9250506020612a20858286016129d5565b9150509250929050565b600080600060608486031215612a4357612a42612702565b5b6000612a5186828701612786565b9350506020612a6286828701612786565b9250506040612a7386828701612786565b9150509250925092565b60008060408385031215612a9457612a93612702565b5b6000612aa285828601612750565b9250506020612ab385828601612750565b9150509250929050565b6000612ac882612707565b9050919050565b612ad881612abd565b8114612ae357600080fd5b50565b600081359050612af581612acf565b92915050565b600060208284031215612b1157612b10612702565b5b6000612b1f84828501612ae6565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612b5e60068361265b565b9150612b6982612b28565b602082019050919050565b60006020820190508181036000830152612b8d81612b51565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bf0602c8361265b565b9150612bfb82612b94565b604082019050919050565b60006020820190508181036000830152612c1f81612be3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c6082612765565b9150612c6b83612765565b9250828202612c7981612765565b91508282048414831517612c9057612c8f612c26565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cd182612765565b9150612cdc83612765565b925082612cec57612ceb612c97565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612d53602e8361265b565b9150612d5e82612cf7565b604082019050919050565b60006020820190508181036000830152612d8281612d46565b9050919050565b6000819050919050565b6000612dae612da9612da484612707565b612d89565b612707565b9050919050565b6000612dc082612d93565b9050919050565b6000612dd282612db5565b9050919050565b612de281612dc7565b82525050565b6000602082019050612dfd6000830184612dd9565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e5f60248361265b565b9150612e6a82612e03565b604082019050919050565b60006020820190508181036000830152612e8e81612e52565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ef160228361265b565b9150612efc82612e95565b604082019050919050565b60006020820190508181036000830152612f2081612ee4565b9050919050565b6000612f3282612765565b9150612f3d83612765565b9250828203905081811115612f5557612f54612c26565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fb760258361265b565b9150612fc282612f5b565b604082019050919050565b60006020820190508181036000830152612fe681612faa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061304960238361265b565b915061305482612fed565b604082019050919050565b600060208201905081810360008301526130788161303c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130db60298361265b565b91506130e68261307f565b604082019050919050565b6000602082019050818103600083015261310a816130ce565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061316d60318361265b565b915061317882613111565b604082019050919050565b6000602082019050818103600083015261319c81613160565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131d9600e8361265b565b91506131e4826131a3565b602082019050919050565b60006020820190508181036000830152613208816131cc565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613245601e8361265b565b91506132508261320f565b602082019050919050565b6000602082019050818103600083015261327481613238565b9050919050565b600061328682612765565b915061329183612765565b92508282019050808211156132a9576132a8612c26565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132e560118361265b565b91506132f0826132af565b602082019050919050565b60006020820190508181036000830152613314816132d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061338881612739565b92915050565b6000602082840312156133a4576133a3612702565b5b60006133b284828501613379565b91505092915050565b6000819050919050565b60006133e06133db6133d6846133bb565b612d89565b612765565b9050919050565b6133f0816133c5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342b81612727565b82525050565b600061343d8383613422565b60208301905092915050565b6000602082019050919050565b6000613461826133f6565b61346b8185613401565b935061347683613412565b8060005b838110156134a757815161348e8882613431565b975061349983613449565b92505060018101905061347a565b5085935050505092915050565b600060a0820190506134c960008301886128b3565b6134d660208301876133e7565b81810360408301526134e88186613456565b90506134f760608301856128dd565b61350460808301846128b3565b9695505050505050565b600060c08201905061352360008301896128dd565b61353060208301886128b3565b61353d60408301876133e7565b61354a60608301866133e7565b61355760808301856128dd565b61356460a08301846128b3565b979650505050505050565b60008151905061357e8161276f565b92915050565b60008060006060848603121561359d5761359c612702565b5b60006135ab8682870161356f565b93505060206135bc8682870161356f565b92505060406135cd8682870161356f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d8694b2d815412eb40d972d85686356d404830ef15fe5967e4f55fb04cd2b44f64736f6c63430008110033

Deployed Bytecode Sourcemap

4675:11972:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7067:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8276:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10066:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7446:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8798:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6419:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15990:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3055:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15012:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7217:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5236:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7290:66;;;;;;;;;;;;;:::i;:::-;;8162:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7536:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8559:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8679:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7362:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8057:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10596:580;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8415:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7140:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5354:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7645:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7790:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3148:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7067:67;7104:13;7127:5;;;;;;;;;;;;;;;;;7120:12;;7067:67;:::o;8276:133::-;8351:4;8358:37;8367:10;8379:7;8388:6;8358:8;:37::i;:::-;8403:4;8396:11;;8276:133;;;;:::o;10066:522::-;3014:19;3022:10;3014:7;:19::i;:::-;3006:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10252:10:::1;10237:12;:25;;;;10288:10;10273:12;:25;;;;10319:5;10309:7;:15;;;;10352:12;10335:14;:29;;;;10386:6;10375:8;:17;;;;10413:5;10403:7;:15;;;;10443:6;10429:11;:20;;;;10480:18;10496:1;10480:11;;:15;;:18;;;;:::i;:::-;10468:8;;:30;;:63;;;;;10513:18;10529:1;10513:11;;:15;;:18;;;;:::i;:::-;10502:7;;:29;;10468:63;10460:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;10066:522:::0;;;;;;;:::o;7446:84::-;7499:7;7516:12;;7509:19;;7446:84;:::o;8798:119::-;8849:7;8904:11;;8882:19;;8866:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8859:56;;8798:119;:::o;6419:30::-;;;;;;;;;;;;;:::o;15990:309::-;16088:4;16105:36;16115:6;16123:9;16134:6;16105:9;:36::i;:::-;16152:117;16161:6;16169:10;16181:87;16217:6;16181:87;;;;;;;;;;;;;;;;;:11;:19;16193:6;16181:19;;;;;;;;;;;;;;;:31;16201:10;16181:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16152:8;:117::i;:::-;16287:4;16280:11;;15990:309;;;;;:::o;3055:87::-;3110:4;3135:5;;;;;;;;;;;3124:16;;:7;:16;;;3117:23;;3055:87;;;:::o;15012:103::-;3014:19;3022:10;3014:7;:19::i;:::-;3006:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15103:4:::1;15085:15;;:22;;;;;;;;;;;;;;;;;;15012:103:::0;:::o;7217:67::-;7258:5;4888:1;7266:16;;7217:67;:::o;5236:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7290:66::-;3014:19;3022:10;3014:7;:19::i;:::-;3006:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7350:4:::1;7333:14;;:21;;;;;;;;;;;;;;;;;;7290:66::o:0;8162:108::-;3014:19;3022:10;3014:7;:19::i;:::-;3006:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8260:8:::1;8236:11;:21;8248:8;8236:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8162:108:::0;;:::o;7536:103::-;7602:7;7619:9;:18;7629:7;7619:18;;;;;;;;;;;;;;;;7612:25;;7536:103;;;:::o;8559:114::-;8607:7;8660:11;;8640:17;;8624:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8617:54;;8559:114;:::o;8679:113::-;8724:7;8779:11;;8757:19;;8741:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8734:56;;8679:113;:::o;7362:78::-;7414:7;7432:5;;;;;;;;;;;7425:12;;7362:78;:::o;8057:99::-;3014:19;3022:10;3014:7;:19::i;:::-;3006:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8146:8:::1;8128:5;:15;8134:8;8128:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8057:99:::0;;:::o;10596:580::-;3014:19;3022:10;3014:7;:19::i;:::-;3006:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10692:13:::1;10733:5;10725:4;10709:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10708:30;;;;:::i;:::-;10692:46;;10749:19;10798:5;10788:6;10772:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10771:32;;;;:::i;:::-;10749:54;;10814:17;10862:5;10851:7;10835:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10834:33;;;;:::i;:::-;10814:53;;10900:4;10878:19;:26;;;;10937:6;10915:19;:28;;;;10974:7;10954:17;:27;;;;10992:13;11008:30;11033:4;11008:20;11026:1;11008:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10992:46;;11066:5;11057;:14;;:38;;;;;11090:5;11075:11;:20;;11057:38;:60;;;;;11112:5;11099:9;:18;;11057:60;11049:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10681:495;;;;10596:580:::0;;;:::o;8415:138::-;8474:7;8491:60;8529:21;8547:1;8529:9;:21::i;:::-;8491:33;8508:15;6079:42;8508:9;:15::i;:::-;8491:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8484:67;;8415:138;:::o;7140:71::-;7179:13;7202:7;;;;;;;;;;;;;;;;;7195:14;;7140:71;:::o;5354:19::-;;;;;;;;;;;;;:::o;7645:139::-;7723:4;7730:40;7740:10;7752:9;7763:6;7730:9;:40::i;:::-;7778:4;7771:11;;7645:139;;;;:::o;7790:127::-;7871:7;7888:11;:18;7900:5;7888:18;;;;;;;;;;;;;;;:27;7907:7;7888:27;;;;;;;;;;;;;;;;7881:34;;7790:127;;;;:::o;3148:111::-;3014:19;3022:10;3014:7;:19::i;:::-;3006:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3222:3:::1;3214:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3232:25;3253:3;3232:25;;;;;;:::i;:::-;;;;;;;;3148:111:::0;:::o;16307:335::-;16417:1;16400:19;;:5;:19;;;16392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16498:1;16479:21;;:7;:21;;;16471:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16580:6;16550:11;:18;16562:5;16550:18;;;;;;;;;;;;;;;:27;16569:7;16550:27;;;;;;;;;;;;;;;:36;;;;16618:7;16602:32;;16611:5;16602:32;;;16627:6;16602:32;;;;;;:::i;:::-;;;;;;;;16307:335;;;:::o;350:82::-;408:7;429:1;425;:5;;;;:::i;:::-;418:12;;350:82;;;;:::o;9372:686::-;9461:37;9472:6;9480:9;9491:6;9461:10;:37::i;:::-;9509:38;9529:6;9537:9;9509:19;:38::i;:::-;9558:41;9573:6;9581:9;9592:6;9558:14;:41::i;:::-;9611:35;9628:6;9636:9;9611:16;:35::i;:::-;9657:39;9670:6;9678:9;9689:6;9657:12;:39::i;:::-;9708:35;9717:6;9725:9;9736:6;9708:8;:35::i;:::-;9774:29;9796:6;9774:9;:17;9784:6;9774:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9754:9;:17;9764:6;9754:17;;;;;;;;;;;;;;;:49;;;;9814:22;9839:32;9853:6;9861:9;9839:13;:32::i;:::-;:78;;9911:6;9839:78;;;9874:34;9882:6;9890:9;9901:6;9874:7;:34::i;:::-;9839:78;9814:103;;9951:40;9976:14;9951:9;:20;9961:9;9951:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9928:9;:20;9938:9;9928:20;;;;;;;;;;;;;;;:63;;;;10024:9;10007:43;;10016:6;10007:43;;;10035:14;10007:43;;;;;;:::i;:::-;;;;;;;;9450:608;9372:686;;;:::o;1387:162::-;1473:7;1516:1;1511;:6;;1519:12;1503:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1545:1;1541;:5;1534:12;;1387:162;;;;;:::o;262:82::-;320:7;341:1;337;:5;;;;:::i;:::-;330:12;;262:82;;;;:::o;174:::-;232:7;253:1;249;:5;;;;:::i;:::-;242:12;;174:82;;;;:::o;8925:439::-;9047:1;9029:20;;:6;:20;;;9021:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9131:1;9110:23;;:9;:23;;;9102:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9209:1;9192:6;:19;9184:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9286:17;9296:6;9286:9;:17::i;:::-;9276:6;:27;;9268:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8925:439;;;:::o;11184:191::-;11277:11;:19;11289:6;11277:19;;;;;;;;;;;;;;;;;;;;;;;;;11276:20;:47;;;;;11301:11;:22;11313:9;11301:22;;;;;;;;;;;;;;;;;;;;;;;;;11300:23;11276:47;11273:95;;;11333:14;;;;;;;;;;;11325:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11273:95;11184:191;;:::o;11387:333::-;11491:11;:19;11503:6;11491:19;;;;;;;;;;;;;;;;;;;;;;;;;11490:20;:47;;;;;11515:11;:22;11527:9;11515:22;;;;;;;;;;;;;;;;;;;;;;;;;11514:23;11490:47;:77;;;;;11562:4;;;;;;;;;;;11541:26;;:9;:26;;;;11490:77;:107;;;;;6079:42;11571:26;;:9;:26;;;;11490:107;11487:226;;;11659:17;:15;:17::i;:::-;11622:32;11647:6;11622:9;:20;11632:9;11622:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11621:55;;11613:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11487:226;11387:333;;;:::o;11728:159::-;11825:4;;;;;;;;;;;11812:17;;:9;:17;;;:41;;;;;11834:11;:19;11846:6;11834:19;;;;;;;;;;;;;;;;;;;;;;;;;11833:20;11812:41;11809:71;;;11876:1;11855:9;;:23;;;;;;;:::i;:::-;;;;;;;;11809:71;11728:159;;:::o;11895:349::-;12006:4;;;;;;;;;;;11996:14;;:6;:14;;;11993:130;;12030:20;:18;:20::i;:::-;12020:6;:30;;:53;;;;12054:11;:19;12066:6;12054:19;;;;;;;;;;;;;;;;;;;;;;;;;12020:53;:79;;;;12077:11;:22;12089:9;12077:22;;;;;;;;;;;;;;;;;;;;;;;;;12020:79;12012:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11993:130;12151:14;:12;:14::i;:::-;12141:6;:24;;:47;;;;12169:11;:19;12181:6;12169:19;;;;;;;;;;;;;;;;;;;;;;;;;12141:47;:73;;;;12192:11;:22;12204:9;12192:22;;;;;;;;;;;;;;;;;;;;;;;;;12141:73;12133:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11895:349;;;:::o;14527:197::-;14619:41;14634:6;14642:9;14653:6;14619:14;:41::i;:::-;14616:101;;;14662:29;14677:13;;14662:14;:29::i;:::-;14713:1;14693:9;:22;;;;14616:101;14527:197;;;:::o;14732:272::-;14813:4;14846:15;;;;;;;;;;;14833:28;;:9;:28;;;14830:164;;14886:5;14878:13;;;;14830:164;14934:11;:19;14946:6;14934:19;;;;;;;;;;;;;;;;;;;;;;;;;14933:20;:47;;;;;14958:11;:22;14970:9;14958:22;;;;;;;;;;;;;;;;;;;;;;;;;14957:23;14933:47;14926:54;;14732:272;;;;;:::o;15436:546::-;15522:7;15578:1;15545:30;15557:6;15565:9;15545:11;:30::i;:::-;:34;15542:418;;;15591:17;15611:59;15639:30;15651:6;15659:9;15639:11;:30::i;:::-;15611:23;15622:11;;15611:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15591:79;;15708:39;15737:9;15708;:24;15726:4;15708:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15681:9;:24;15699:4;15681:24;;;;;;;;;;;;;;;:66;;;;15788:4;15763:42;;15772:6;15763:42;;;15795:9;15763:42;;;;;;:::i;:::-;;;;;;;;15837:1;15819:7;;:20;15816:104;;;15841:77;15859:4;6079:42;15881:36;15909:7;;15881:23;15892:11;;15881:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15841:9;:77::i;:::-;15816:104;15937:21;15948:9;15937:6;:10;;:21;;;;:::i;:::-;15930:28;;;;;15542:418;15968:6;15961:13;;15436:546;;;;;;:::o;86:82::-;144:7;165:1;161;:5;;;;:::i;:::-;154:12;;86:82;;;;:::o;14119:400::-;14217:4;14234:13;14260:15;;14250:6;:25;;14234:41;;14286:19;14336:13;;14308:24;14326:4;14308:9;:24::i;:::-;:41;;14286:63;;14368:8;;;;;;;;;;;14367:9;:24;;;;;14380:11;;;;;;;;;;;14367:24;:42;;;;;14395:14;;;;;;;;;;;14367:42;:54;;;;;14413:8;14367:54;:78;;;;;14426:11;:19;14438:6;14426:19;;;;;;;;;;;;;;;;;;;;;;;;;14425:20;14367:78;:99;;;;;14462:4;;;;;;;;;;;14449:17;;:9;:17;;;14367:99;:126;;;;;14491:1;14470:9;;:23;;14367:126;:144;;;;;14497:14;14367:144;14360:151;;;;14119:400;;;;;:::o;12252:1066::-;6011:4;6000:8;;:15;;;;;;;;;;;;;;;;;;12323:20:::1;12346:66;12410:1;12347:57;12389:14;;12347:37;12371:12;;12347:19;12364:1;12347:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12346:63;;:66;;;;:::i;:::-;12323:89;;12423:32;12458:42;12487:12;12458:24;12469:12;;12458:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12423:77;;12511:14;12528:36;12539:24;12528:6;:10;;:36;;;;:::i;:::-;12511:53;;12575:22;12600:21;12575:46;;12632:24;12649:6;12632:16;:24::i;:::-;12667:20;12690:41;12716:14;12690:21;:25;;:41;;;;:::i;:::-;12667:64;;12742:19;12763:48;12780:30;12797:12;;12780;:16;;:30;;;;:::i;:::-;12763:12;:16;;:48;;;;:::i;:::-;12742:69;;12822:29;12854;12870:12;;12854:11;:15;;:29;;;;:::i;:::-;12822:61;;12929:1;12897:21;:34;12894:103;;;12933:61;12946:24;12972:21;12933:12;:61::i;:::-;12894:103;13007:20;13030:36;13053:12;;13030:18;13046:1;13030:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;13007:59;;13095:1;13080:12;:16;13077:73;;;6274:42;13098:36;;:50;13135:12;13098:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13077:73;13160:24;13187:21;13160:48;;13249:1;13222:16;:29;13219:92;;;6177:42;13253:38;;:56;13292:16;13253:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13219:92;12312:1006;;;;;;;;;6031:5:::0;6020:8;;:16;;;;;;;;;;;;;;;;;;12252:1066;:::o;15123:305::-;15202:7;15225:5;:13;15231:6;15225:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15242:5;:16;15248:9;15242:16;;;;;;;;;;;;;;;;;;;;;;;;;15225:33;15222:76;;;15267:29;15291:3;15267:11;;:15;;:29;;;;:::i;:::-;15260:36;;;;15222:76;15324:4;;;;;;;;;;;15311:17;;:9;:17;;;15308:38;;15337:7;;15330:14;;;;15308:38;15369:4;;;;;;;;;;;15359:14;;:6;:14;;;15356:36;;15382:8;;15375:15;;;;15356:36;15409:11;;15402:18;;15123:305;;;;;:::o;13677:434::-;13743:21;13781:1;13767:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13743:40;;13812:4;13794;13799:1;13794:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13838:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13828:4;13833:1;13828:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13862:53;13879:4;13894:6;;;;;;;;;;;13903:11;13862:8;:53::i;:::-;13926:6;;;;;;;;;;;:57;;;13998:11;14024:1;14040:4;14067;14087:15;13926:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13732:379;13677:434;:::o;13326:343::-;13407:53;13424:4;13439:6;;;;;;;;;;;13448:11;13407:8;:53::i;:::-;13471:6;;;;;;;;;;;:22;;;13501:9;13534:4;13554:11;13580:1;13596;6370:42;13645:15;13471:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13326:343;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:1203::-;3559:6;3567;3575;3583;3591;3599;3607;3656:3;3644:9;3635:7;3631:23;3627:33;3624:120;;;3663:79;;:::i;:::-;3624:120;3783:1;3808:53;3853:7;3844:6;3833:9;3829:22;3808:53;:::i;:::-;3798:63;;3754:117;3910:2;3936:53;3981:7;3972:6;3961:9;3957:22;3936:53;:::i;:::-;3926:63;;3881:118;4038:2;4064:53;4109:7;4100:6;4089:9;4085:22;4064:53;:::i;:::-;4054:63;;4009:118;4166:2;4192:53;4237:7;4228:6;4217:9;4213:22;4192:53;:::i;:::-;4182:63;;4137:118;4294:3;4321:53;4366:7;4357:6;4346:9;4342:22;4321:53;:::i;:::-;4311:63;;4265:119;4423:3;4450:53;4495:7;4486:6;4475:9;4471:22;4450:53;:::i;:::-;4440:63;;4394:119;4552:3;4579:53;4624:7;4615:6;4604:9;4600:22;4579:53;:::i;:::-;4569:63;;4523:119;3446:1203;;;;;;;;;;:::o;4655:118::-;4742:24;4760:5;4742:24;:::i;:::-;4737:3;4730:37;4655:118;;:::o;4779:222::-;4872:4;4910:2;4899:9;4895:18;4887:26;;4923:71;4991:1;4980:9;4976:17;4967:6;4923:71;:::i;:::-;4779:222;;;;:::o;5007:118::-;5094:24;5112:5;5094:24;:::i;:::-;5089:3;5082:37;5007:118;;:::o;5131:222::-;5224:4;5262:2;5251:9;5247:18;5239:26;;5275:71;5343:1;5332:9;5328:17;5319:6;5275:71;:::i;:::-;5131:222;;;;:::o;5359:619::-;5436:6;5444;5452;5501:2;5489:9;5480:7;5476:23;5472:32;5469:119;;;5507:79;;:::i;:::-;5469:119;5627:1;5652:53;5697:7;5688:6;5677:9;5673:22;5652:53;:::i;:::-;5642:63;;5598:117;5754:2;5780:53;5825:7;5816:6;5805:9;5801:22;5780:53;:::i;:::-;5770:63;;5725:118;5882:2;5908:53;5953:7;5944:6;5933:9;5929:22;5908:53;:::i;:::-;5898:63;;5853:118;5359:619;;;;;:::o;5984:329::-;6043:6;6092:2;6080:9;6071:7;6067:23;6063:32;6060:119;;;6098:79;;:::i;:::-;6060:119;6218:1;6243:53;6288:7;6279:6;6268:9;6264:22;6243:53;:::i;:::-;6233:63;;6189:117;5984:329;;;;:::o;6319:86::-;6354:7;6394:4;6387:5;6383:16;6372:27;;6319:86;;;:::o;6411:112::-;6494:22;6510:5;6494:22;:::i;:::-;6489:3;6482:35;6411:112;;:::o;6529:214::-;6618:4;6656:2;6645:9;6641:18;6633:26;;6669:67;6733:1;6722:9;6718:17;6709:6;6669:67;:::i;:::-;6529:214;;;;:::o;6749:116::-;6819:21;6834:5;6819:21;:::i;:::-;6812:5;6809:32;6799:60;;6855:1;6852;6845:12;6799:60;6749:116;:::o;6871:133::-;6914:5;6952:6;6939:20;6930:29;;6968:30;6992:5;6968:30;:::i;:::-;6871:133;;;;:::o;7010:468::-;7075:6;7083;7132:2;7120:9;7111:7;7107:23;7103:32;7100:119;;;7138:79;;:::i;:::-;7100:119;7258:1;7283:53;7328:7;7319:6;7308:9;7304:22;7283:53;:::i;:::-;7273:63;;7229:117;7385:2;7411:50;7453:7;7444:6;7433:9;7429:22;7411:50;:::i;:::-;7401:60;;7356:115;7010:468;;;;;:::o;7484:619::-;7561:6;7569;7577;7626:2;7614:9;7605:7;7601:23;7597:32;7594:119;;;7632:79;;:::i;:::-;7594:119;7752:1;7777:53;7822:7;7813:6;7802:9;7798:22;7777:53;:::i;:::-;7767:63;;7723:117;7879:2;7905:53;7950:7;7941:6;7930:9;7926:22;7905:53;:::i;:::-;7895:63;;7850:118;8007:2;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7978:118;7484:619;;;;;:::o;8109:474::-;8177:6;8185;8234:2;8222:9;8213:7;8209:23;8205:32;8202:119;;;8240:79;;:::i;:::-;8202:119;8360:1;8385:53;8430:7;8421:6;8410:9;8406:22;8385:53;:::i;:::-;8375:63;;8331:117;8487:2;8513:53;8558:7;8549:6;8538:9;8534:22;8513:53;:::i;:::-;8503:63;;8458:118;8109:474;;;;;:::o;8589:104::-;8634:7;8663:24;8681:5;8663:24;:::i;:::-;8652:35;;8589:104;;;:::o;8699:138::-;8780:32;8806:5;8780:32;:::i;:::-;8773:5;8770:43;8760:71;;8827:1;8824;8817:12;8760:71;8699:138;:::o;8843:155::-;8897:5;8935:6;8922:20;8913:29;;8951:41;8986:5;8951:41;:::i;:::-;8843:155;;;;:::o;9004:345::-;9071:6;9120:2;9108:9;9099:7;9095:23;9091:32;9088:119;;;9126:79;;:::i;:::-;9088:119;9246:1;9271:61;9324:7;9315:6;9304:9;9300:22;9271:61;:::i;:::-;9261:71;;9217:125;9004:345;;;;:::o;9355:156::-;9495:8;9491:1;9483:6;9479:14;9472:32;9355:156;:::o;9517:365::-;9659:3;9680:66;9744:1;9739:3;9680:66;:::i;:::-;9673:73;;9755:93;9844:3;9755:93;:::i;:::-;9873:2;9868:3;9864:12;9857:19;;9517:365;;;:::o;9888:419::-;10054:4;10092:2;10081:9;10077:18;10069:26;;10141:9;10135:4;10131:20;10127:1;10116:9;10112:17;10105:47;10169:131;10295:4;10169:131;:::i;:::-;10161:139;;9888:419;;;:::o;10313:231::-;10453:34;10449:1;10441:6;10437:14;10430:58;10522:14;10517:2;10509:6;10505:15;10498:39;10313:231;:::o;10550:366::-;10692:3;10713:67;10777:2;10772:3;10713:67;:::i;:::-;10706:74;;10789:93;10878:3;10789:93;:::i;:::-;10907:2;10902:3;10898:12;10891:19;;10550:366;;;:::o;10922:419::-;11088:4;11126:2;11115:9;11111:18;11103:26;;11175:9;11169:4;11165:20;11161:1;11150:9;11146:17;11139:47;11203:131;11329:4;11203:131;:::i;:::-;11195:139;;10922:419;;;:::o;11347:180::-;11395:77;11392:1;11385:88;11492:4;11489:1;11482:15;11516:4;11513:1;11506:15;11533:410;11573:7;11596:20;11614:1;11596:20;:::i;:::-;11591:25;;11630:20;11648:1;11630:20;:::i;:::-;11625:25;;11685:1;11682;11678:9;11707:30;11725:11;11707:30;:::i;:::-;11696:41;;11886:1;11877:7;11873:15;11870:1;11867:22;11847:1;11840:9;11820:83;11797:139;;11916:18;;:::i;:::-;11797:139;11581:362;11533:410;;;;:::o;11949:180::-;11997:77;11994:1;11987:88;12094:4;12091:1;12084:15;12118:4;12115:1;12108:15;12135:185;12175:1;12192:20;12210:1;12192:20;:::i;:::-;12187:25;;12226:20;12244:1;12226:20;:::i;:::-;12221:25;;12265:1;12255:35;;12270:18;;:::i;:::-;12255:35;12312:1;12309;12305:9;12300:14;;12135:185;;;;:::o;12326:233::-;12466:34;12462:1;12454:6;12450:14;12443:58;12535:16;12530:2;12522:6;12518:15;12511:41;12326:233;:::o;12565:366::-;12707:3;12728:67;12792:2;12787:3;12728:67;:::i;:::-;12721:74;;12804:93;12893:3;12804:93;:::i;:::-;12922:2;12917:3;12913:12;12906:19;;12565:366;;;:::o;12937:419::-;13103:4;13141:2;13130:9;13126:18;13118:26;;13190:9;13184:4;13180:20;13176:1;13165:9;13161:17;13154:47;13218:131;13344:4;13218:131;:::i;:::-;13210:139;;12937:419;;;:::o;13362:60::-;13390:3;13411:5;13404:12;;13362:60;;;:::o;13428:142::-;13478:9;13511:53;13529:34;13538:24;13556:5;13538:24;:::i;:::-;13529:34;:::i;:::-;13511:53;:::i;:::-;13498:66;;13428:142;;;:::o;13576:126::-;13626:9;13659:37;13690:5;13659:37;:::i;:::-;13646:50;;13576:126;;;:::o;13708:134::-;13766:9;13799:37;13830:5;13799:37;:::i;:::-;13786:50;;13708:134;;;:::o;13848:147::-;13943:45;13982:5;13943:45;:::i;:::-;13938:3;13931:58;13848:147;;:::o;14001:238::-;14102:4;14140:2;14129:9;14125:18;14117:26;;14153:79;14229:1;14218:9;14214:17;14205:6;14153:79;:::i;:::-;14001:238;;;;:::o;14245:223::-;14385:34;14381:1;14373:6;14369:14;14362:58;14454:6;14449:2;14441:6;14437:15;14430:31;14245:223;:::o;14474:366::-;14616:3;14637:67;14701:2;14696:3;14637:67;:::i;:::-;14630:74;;14713:93;14802:3;14713:93;:::i;:::-;14831:2;14826:3;14822:12;14815:19;;14474:366;;;:::o;14846:419::-;15012:4;15050:2;15039:9;15035:18;15027:26;;15099:9;15093:4;15089:20;15085:1;15074:9;15070:17;15063:47;15127:131;15253:4;15127:131;:::i;:::-;15119:139;;14846:419;;;:::o;15271:221::-;15411:34;15407:1;15399:6;15395:14;15388:58;15480:4;15475:2;15467:6;15463:15;15456:29;15271:221;:::o;15498:366::-;15640:3;15661:67;15725:2;15720:3;15661:67;:::i;:::-;15654:74;;15737:93;15826:3;15737:93;:::i;:::-;15855:2;15850:3;15846:12;15839:19;;15498:366;;;:::o;15870:419::-;16036:4;16074:2;16063:9;16059:18;16051:26;;16123:9;16117:4;16113:20;16109:1;16098:9;16094:17;16087:47;16151:131;16277:4;16151:131;:::i;:::-;16143:139;;15870:419;;;:::o;16295:194::-;16335:4;16355:20;16373:1;16355:20;:::i;:::-;16350:25;;16389:20;16407:1;16389:20;:::i;:::-;16384:25;;16433:1;16430;16426:9;16418:17;;16457:1;16451:4;16448:11;16445:37;;;16462:18;;:::i;:::-;16445:37;16295:194;;;;:::o;16495:224::-;16635:34;16631:1;16623:6;16619:14;16612:58;16704:7;16699:2;16691:6;16687:15;16680:32;16495:224;:::o;16725:366::-;16867:3;16888:67;16952:2;16947:3;16888:67;:::i;:::-;16881:74;;16964:93;17053:3;16964:93;:::i;:::-;17082:2;17077:3;17073:12;17066:19;;16725:366;;;:::o;17097:419::-;17263:4;17301:2;17290:9;17286:18;17278:26;;17350:9;17344:4;17340:20;17336:1;17325:9;17321:17;17314:47;17378:131;17504:4;17378:131;:::i;:::-;17370:139;;17097:419;;;:::o;17522:222::-;17662:34;17658:1;17650:6;17646:14;17639:58;17731:5;17726:2;17718:6;17714:15;17707:30;17522:222;:::o;17750:366::-;17892:3;17913:67;17977:2;17972:3;17913:67;:::i;:::-;17906:74;;17989:93;18078:3;17989:93;:::i;:::-;18107:2;18102:3;18098:12;18091:19;;17750:366;;;:::o;18122:419::-;18288:4;18326:2;18315:9;18311:18;18303:26;;18375:9;18369:4;18365:20;18361:1;18350:9;18346:17;18339:47;18403:131;18529:4;18403:131;:::i;:::-;18395:139;;18122:419;;;:::o;18547:228::-;18687:34;18683:1;18675:6;18671:14;18664:58;18756:11;18751:2;18743:6;18739:15;18732:36;18547:228;:::o;18781:366::-;18923:3;18944:67;19008:2;19003:3;18944:67;:::i;:::-;18937:74;;19020:93;19109:3;19020:93;:::i;:::-;19138:2;19133:3;19129:12;19122:19;;18781:366;;;:::o;19153:419::-;19319:4;19357:2;19346:9;19342:18;19334:26;;19406:9;19400:4;19396:20;19392:1;19381:9;19377:17;19370:47;19434:131;19560:4;19434:131;:::i;:::-;19426:139;;19153:419;;;:::o;19578:236::-;19718:34;19714:1;19706:6;19702:14;19695:58;19787:19;19782:2;19774:6;19770:15;19763:44;19578:236;:::o;19820:366::-;19962:3;19983:67;20047:2;20042:3;19983:67;:::i;:::-;19976:74;;20059:93;20148:3;20059:93;:::i;:::-;20177:2;20172:3;20168:12;20161:19;;19820:366;;;:::o;20192:419::-;20358:4;20396:2;20385:9;20381:18;20373:26;;20445:9;20439:4;20435:20;20431:1;20420:9;20416:17;20409:47;20473:131;20599:4;20473:131;:::i;:::-;20465:139;;20192:419;;;:::o;20617:164::-;20757:16;20753:1;20745:6;20741:14;20734:40;20617:164;:::o;20787:366::-;20929:3;20950:67;21014:2;21009:3;20950:67;:::i;:::-;20943:74;;21026:93;21115:3;21026:93;:::i;:::-;21144:2;21139:3;21135:12;21128:19;;20787:366;;;:::o;21159:419::-;21325:4;21363:2;21352:9;21348:18;21340:26;;21412:9;21406:4;21402:20;21398:1;21387:9;21383:17;21376:47;21440:131;21566:4;21440:131;:::i;:::-;21432:139;;21159:419;;;:::o;21584:180::-;21724:32;21720:1;21712:6;21708:14;21701:56;21584:180;:::o;21770:366::-;21912:3;21933:67;21997:2;21992:3;21933:67;:::i;:::-;21926:74;;22009:93;22098:3;22009:93;:::i;:::-;22127:2;22122:3;22118:12;22111:19;;21770:366;;;:::o;22142:419::-;22308:4;22346:2;22335:9;22331:18;22323:26;;22395:9;22389:4;22385:20;22381:1;22370:9;22366:17;22359:47;22423:131;22549:4;22423:131;:::i;:::-;22415:139;;22142:419;;;:::o;22567:191::-;22607:3;22626:20;22644:1;22626:20;:::i;:::-;22621:25;;22660:20;22678:1;22660:20;:::i;:::-;22655:25;;22703:1;22700;22696:9;22689:16;;22724:3;22721:1;22718:10;22715:36;;;22731:18;;:::i;:::-;22715:36;22567:191;;;;:::o;22764:167::-;22904:19;22900:1;22892:6;22888:14;22881:43;22764:167;:::o;22937:366::-;23079:3;23100:67;23164:2;23159:3;23100:67;:::i;:::-;23093:74;;23176:93;23265:3;23176:93;:::i;:::-;23294:2;23289:3;23285:12;23278:19;;22937:366;;;:::o;23309:419::-;23475:4;23513:2;23502:9;23498:18;23490:26;;23562:9;23556:4;23552:20;23548:1;23537:9;23533:17;23526:47;23590:131;23716:4;23590:131;:::i;:::-;23582:139;;23309:419;;;:::o;23734:180::-;23782:77;23779:1;23772:88;23879:4;23876:1;23869:15;23903:4;23900:1;23893:15;23920:180;23968:77;23965:1;23958:88;24065:4;24062:1;24055:15;24089:4;24086:1;24079:15;24106:143;24163:5;24194:6;24188:13;24179:22;;24210:33;24237:5;24210:33;:::i;:::-;24106:143;;;;:::o;24255:351::-;24325:6;24374:2;24362:9;24353:7;24349:23;24345:32;24342:119;;;24380:79;;:::i;:::-;24342:119;24500:1;24525:64;24581:7;24572:6;24561:9;24557:22;24525:64;:::i;:::-;24515:74;;24471:128;24255:351;;;;:::o;24612:85::-;24657:7;24686:5;24675:16;;24612:85;;;:::o;24703:158::-;24761:9;24794:61;24812:42;24821:32;24847:5;24821:32;:::i;:::-;24812:42;:::i;:::-;24794:61;:::i;:::-;24781:74;;24703:158;;;:::o;24867:147::-;24962:45;25001:5;24962:45;:::i;:::-;24957:3;24950:58;24867:147;;:::o;25020:114::-;25087:6;25121:5;25115:12;25105:22;;25020:114;;;:::o;25140:184::-;25239:11;25273:6;25268:3;25261:19;25313:4;25308:3;25304:14;25289:29;;25140:184;;;;:::o;25330:132::-;25397:4;25420:3;25412:11;;25450:4;25445:3;25441:14;25433:22;;25330:132;;;:::o;25468:108::-;25545:24;25563:5;25545:24;:::i;:::-;25540:3;25533:37;25468:108;;:::o;25582:179::-;25651:10;25672:46;25714:3;25706:6;25672:46;:::i;:::-;25750:4;25745:3;25741:14;25727:28;;25582:179;;;;:::o;25767:113::-;25837:4;25869;25864:3;25860:14;25852:22;;25767:113;;;:::o;25916:732::-;26035:3;26064:54;26112:5;26064:54;:::i;:::-;26134:86;26213:6;26208:3;26134:86;:::i;:::-;26127:93;;26244:56;26294:5;26244:56;:::i;:::-;26323:7;26354:1;26339:284;26364:6;26361:1;26358:13;26339:284;;;26440:6;26434:13;26467:63;26526:3;26511:13;26467:63;:::i;:::-;26460:70;;26553:60;26606:6;26553:60;:::i;:::-;26543:70;;26399:224;26386:1;26383;26379:9;26374:14;;26339:284;;;26343:14;26639:3;26632:10;;26040:608;;;25916:732;;;;:::o;26654:831::-;26917:4;26955:3;26944:9;26940:19;26932:27;;26969:71;27037:1;27026:9;27022:17;27013:6;26969:71;:::i;:::-;27050:80;27126:2;27115:9;27111:18;27102:6;27050:80;:::i;:::-;27177:9;27171:4;27167:20;27162:2;27151:9;27147:18;27140:48;27205:108;27308:4;27299:6;27205:108;:::i;:::-;27197:116;;27323:72;27391:2;27380:9;27376:18;27367:6;27323:72;:::i;:::-;27405:73;27473:3;27462:9;27458:19;27449:6;27405:73;:::i;:::-;26654:831;;;;;;;;:::o;27491:807::-;27740:4;27778:3;27767:9;27763:19;27755:27;;27792:71;27860:1;27849:9;27845:17;27836:6;27792:71;:::i;:::-;27873:72;27941:2;27930:9;27926:18;27917:6;27873:72;:::i;:::-;27955:80;28031:2;28020:9;28016:18;28007:6;27955:80;:::i;:::-;28045;28121:2;28110:9;28106:18;28097:6;28045:80;:::i;:::-;28135:73;28203:3;28192:9;28188:19;28179:6;28135:73;:::i;:::-;28218;28286:3;28275:9;28271:19;28262:6;28218:73;:::i;:::-;27491:807;;;;;;;;;:::o;28304:143::-;28361:5;28392:6;28386:13;28377:22;;28408:33;28435:5;28408:33;:::i;:::-;28304:143;;;;:::o;28453:663::-;28541:6;28549;28557;28606:2;28594:9;28585:7;28581:23;28577:32;28574:119;;;28612:79;;:::i;:::-;28574:119;28732:1;28757:64;28813:7;28804:6;28793:9;28789:22;28757:64;:::i;:::-;28747:74;;28703:128;28870:2;28896:64;28952:7;28943:6;28932:9;28928:22;28896:64;:::i;:::-;28886:74;;28841:129;29009:2;29035:64;29091:7;29082:6;29071:9;29067:22;29035:64;:::i;:::-;29025:74;;28980:129;28453:663;;;;;:::o

Swarm Source

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