ETH Price: $3,319.58 (+0.36%)
Gas: 16 Gwei

Token

0xShards (0xShards)
 

Overview

Max Total Supply

1,000,000,000,000 0xShards

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,992,808,800.336249519 0xShards

Value
$0.00
0x1d4d86c6ba4b3f471cae03f3d01572738e530081
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:
OXShards

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-16
*/

/**

https://t.me/Shards0x

https://twitter.com/Shards0x



*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;


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 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 OXShards is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = '0xShards';
    string private constant _symbol = '0xShards';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000000 * (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 = 1000;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 3000;
    uint256 private sellFee = 6000;
    uint256 private transferFee = 6000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 1500 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x85D6E2F72eD0D9532Ed659648712971f66f0C56d; 
    address internal constant marketing_receiver = 0x85D6E2F72eD0D9532Ed659648712971f66f0C56d;
    address internal constant liquidity_receiver = 0x85D6E2F72eD0D9532Ed659648712971f66f0C56d;

    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 startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    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 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 totalSupply() 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 setFee(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 setLimits(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) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    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":[],"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":"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":"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":"setFee","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":"setLimits","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":"startTrading","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"}]

60806040526009600a62000014919062000713565b64e8d4a5100062000026919062000764565b6001556064600255606460035560646004556000600a60146101000a81548160ff0219169083151502179055506000600b556103e8600c556103e8600d556000600e55610bb8600f556117706010556117706011556127106012556001601360006101000a81548160ff021916908315150217905550620186a06105dc600154620000b2919062000764565b620000be9190620007de565b601655620186a0600a600154620000d6919062000764565b620000e29190620007de565b601755348015620000f257600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c2919062000880565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000250919062000880565b6040518363ffffffff1660e01b81526004016200026f929190620008c3565b6020604051808303816000875af11580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b5919062000880565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007385d6e2f72ed0d9532ed659648712971f66f0c56d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760007385d6e2f72ed0d9532ed659648712971f66f0c56d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000569919062000901565b60405180910390a350506200091e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060757808604811115620005df57620005de62000579565b5b6001851615620005ef5780820291505b8081029050620005ff85620005a8565b9450620005bf565b94509492505050565b600082620006225760019050620006f5565b81620006325760009050620006f5565b81600181146200064b576002811462000656576200068c565b6001915050620006f5565b60ff8411156200066b576200066a62000579565b5b8360020a91508482111562000685576200068462000579565b5b50620006f5565b5060208310610133831016604e8410600b8410161715620006c65782820a905083811115620006c057620006bf62000579565b5b620006f5565b620006d58484846001620005b5565b92509050818404811115620006ef57620006ee62000579565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072082620006fc565b91506200072d8362000706565b92506200075c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000610565b905092915050565b60006200077182620006fc565b91506200077e83620006fc565b92508282026200078e81620006fc565b91508282048414831517620007a857620007a762000579565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007eb82620006fc565b9150620007f883620006fc565b9250826200080b576200080a620007af565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000848826200081b565b9050919050565b6200085a816200083b565b81146200086657600080fd5b50565b6000815190506200087a816200084f565b92915050565b60006020828403121562000899576200089862000816565b5b6000620008a98482850162000869565b91505092915050565b620008bd816200083b565b82525050565b6000604082019050620008da6000830185620008b2565b620008e96020830184620008b2565b9392505050565b620008fb81620006fc565b82525050565b6000602082019050620009186000830184620008f0565b92915050565b613393806200092e6000396000f3fe60806040526004361061012e5760003560e01c806348ff2b8b116100ab57806395d89b411161006f57806395d89b4114610401578063a8aa1b311461042c578063a9059cbb14610457578063aeb5b9b514610494578063dd62ed3e146104bd578063f2fde38b146104fa57610135565b806348ff2b8b1461031a57806370a082311461034357806378109e54146103805780637d1db4a5146103ab578063893d20e8146103d657610135565b806323b872dd116100f257806323b872dd14610221578063293230b81461025e5780632f54bf6e14610275578063313ce567146102b25780633f4218e0146102dd57610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a2578063189ae5f2146101cd5780631f976b7e146101f657610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610523565b60405161015c919061243e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906124f9565b610560565b6040516101999190612554565b60405180910390f35b3480156101ae57600080fd5b506101b7610577565b6040516101c4919061257e565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612599565b6105b8565b005b34801561020257600080fd5b5061020b610718565b604051610218919061257e565b60405180910390f35b34801561022d57600080fd5b50610248600480360381019061024391906125ec565b610741565b6040516102559190612554565b60405180910390f35b34801561026a57600080fd5b5061027361080c565b005b34801561028157600080fd5b5061029c6004803603810190610297919061263f565b610871565b6040516102a99190612554565b60405180910390f35b3480156102be57600080fd5b506102c76108ca565b6040516102d49190612688565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff919061263f565b6108d3565b6040516103119190612554565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c91906126cf565b6108f3565b005b34801561034f57600080fd5b5061036a6004803603810190610365919061263f565b610996565b604051610377919061257e565b60405180910390f35b34801561038c57600080fd5b506103956109df565b6040516103a2919061257e565b60405180910390f35b3480156103b757600080fd5b506103c0610a08565b6040516103cd919061257e565b60405180910390f35b3480156103e257600080fd5b506103eb610a31565b6040516103f8919061271e565b60405180910390f35b34801561040d57600080fd5b50610416610a5a565b604051610423919061243e565b60405180910390f35b34801561043857600080fd5b50610441610a97565b60405161044e919061271e565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906124f9565b610abd565b60405161048b9190612554565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190612739565b610ad4565b005b3480156104c957600080fd5b506104e460048036038101906104df91906127db565b610bd3565b6040516104f1919061257e565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190612859565b610c5a565b005b60606040518060400160405280600881526020017f3078536861726473000000000000000000000000000000000000000000000000815250905090565b600061056d338484610d1c565b6001905092915050565b60006105b36105866000610996565b6105a561059461dead610996565b600154610ee590919063ffffffff16565b610ee590919063ffffffff16565b905090565b6105c133610871565b610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f7906128d2565b60405180910390fd5b60006127108461060e610577565b6106189190612921565b6106229190612992565b9050600061271084610632610577565b61063c9190612921565b6106469190612992565b9050600061271084610656610577565b6106609190612921565b61066a9190612992565b905085600281905550846003819055508360048190555060006106b26103e86106a46005610696610577565b610efb90919063ffffffff16565b610f1190919063ffffffff16565b90508084101580156106c45750808310155b80156106d05750808210155b61070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612a35565b60405180910390fd5b50505050505050565b6000601254600354610728610577565b6107329190612921565b61073c9190612992565b905090565b600061074e848484610f27565b61080184336107fc8560405180606001604052806028815260200161333660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111209092919063ffffffff16565b610d1c565b600190509392505050565b61081533610871565b610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b906128d2565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6108fc33610871565b61093b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610932906128d2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006012546004546109ef610577565b6109f99190612921565b610a039190612992565b905090565b6000601254600254610a18610577565b610a229190612921565b610a2c9190612992565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f3078536861726473000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610aca338484610f27565b6001905092915050565b610add33610871565b610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906128d2565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b636005601254610f1190919063ffffffff16565b600f5411158015610b8b5750610b856005601254610f1190919063ffffffff16565b60105411155b610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190612ac7565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c6333610871565b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c99906128d2565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d119190612b46565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290612bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190612c65565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed8919061257e565b60405180910390a3505050565b60008183610ef39190612c85565b905092915050565b60008183610f099190612921565b905092915050565b60008183610f1f9190612992565b905092915050565b610f32838383611175565b610f3c83836112e6565b610f478383836113e3565b610f5183836115c1565b610f5c83838361168c565b610f678383836118cb565b610fb981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061100884846118f4565b611012578161101e565b61101d8484846119a2565b5b905061107281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611112919061257e565b60405180910390a350505050565b6000838311158290611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f919061243e565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612d2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612dbd565b60405180910390fd5b60008111611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612e4f565b60405180910390fd5b61129f83610996565b8111156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890612ee1565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561138a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113df57600a60149054906101000a900460ff166113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612f4d565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114e15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561151b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115bc576115286109df565b61157a82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b11156115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612fb9565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156116685750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611688576001601460008282546116809190612fd9565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117d4576116e9610718565b811115806117405750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117945750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90613059565b60405180910390fd5b5b6117dc610a08565b811115806118335750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bd90613059565b60405180910390fd5b505050565b6118d6838383611b60565b156118ef576118e6601654611c99565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561199a5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806119af8585611eea565b1115611b3f5760006119e76119c48686611eea565b6119d960125486610f1190919063ffffffff16565b610efb90919063ffffffff16565b9050611a3b81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611adb919061257e565b60405180910390a36000600e541115611b2457611b233061dead611b1e600e54611b1060125489610f1190919063ffffffff16565b610efb90919063ffffffff16565b610f27565b5b611b378184610ee590919063ffffffff16565b915050611b43565b8190505b9392505050565b60008183611b589190612fd9565b905092915050565b60008060175483101590506000601654611b7930610996565b10159050601560009054906101000a900460ff16158015611ba65750601360009054906101000a900460ff165b8015611bbe5750600a60149054906101000a900460ff165b8015611bc75750815b8015611c1d5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c765750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611c855750600060145410155b8015611c8e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611d076002611cf9600d54611ceb600c54611cdd6001600b54611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b610efb90919063ffffffff16565b90506000611d3282611d24600b5486610efb90919063ffffffff16565b610f1190919063ffffffff16565b90506000611d498285610ee590919063ffffffff16565b90506000479050611d5982612079565b6000611d6e8247610ee590919063ffffffff16565b90506000611d99611d8a600b5488610ee590919063ffffffff16565b83610f1190919063ffffffff16565b90506000611db2600b5483610efb90919063ffffffff16565b90506000811115611dc857611dc786826122bc565b5b6000611df2600c54611de4600286610efb90919063ffffffff16565b610efb90919063ffffffff16565b90506000811115611e59577385d6e2f72ed0d9532ed659648712971f66f0c56d73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e57573d6000803e3d6000fd5b505b60004790506000811115611ec3577385d6e2f72ed0d9532ed659648712971f66f0c56d73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ec1573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f8d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611faf57611fa86064601254610ee590919063ffffffff16565b9050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200e576010549050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206d57600f549050612073565b60115490505b92915050565b6000600267ffffffffffffffff81111561209657612095613079565b5b6040519080825280602002602001820160405280156120c45781602001602082028036833780820191505090505b50905030816000815181106120dc576120db6130a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a791906130ec565b816001815181106121bb576121ba6130a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061222230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612286959493929190613212565b600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b505050505050565b6122e930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807385d6e2f72ed0d9532ed659648712971f66f0c56d426040518863ffffffff1660e01b81526004016123649695949392919061326c565b60606040518083038185885af1158015612382573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123a791906132e2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123e85780820151818401526020810190506123cd565b60008484015250505050565b6000601f19601f8301169050919050565b6000612410826123ae565b61241a81856123b9565b935061242a8185602086016123ca565b612433816123f4565b840191505092915050565b600060208201905081810360008301526124588184612405565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061249082612465565b9050919050565b6124a081612485565b81146124ab57600080fd5b50565b6000813590506124bd81612497565b92915050565b6000819050919050565b6124d6816124c3565b81146124e157600080fd5b50565b6000813590506124f3816124cd565b92915050565b600080604083850312156125105761250f612460565b5b600061251e858286016124ae565b925050602061252f858286016124e4565b9150509250929050565b60008115159050919050565b61254e81612539565b82525050565b60006020820190506125696000830184612545565b92915050565b612578816124c3565b82525050565b6000602082019050612593600083018461256f565b92915050565b6000806000606084860312156125b2576125b1612460565b5b60006125c0868287016124e4565b93505060206125d1868287016124e4565b92505060406125e2868287016124e4565b9150509250925092565b60008060006060848603121561260557612604612460565b5b6000612613868287016124ae565b9350506020612624868287016124ae565b9250506040612635868287016124e4565b9150509250925092565b60006020828403121561265557612654612460565b5b6000612663848285016124ae565b91505092915050565b600060ff82169050919050565b6126828161266c565b82525050565b600060208201905061269d6000830184612679565b92915050565b6126ac81612539565b81146126b757600080fd5b50565b6000813590506126c9816126a3565b92915050565b600080604083850312156126e6576126e5612460565b5b60006126f4858286016124ae565b9250506020612705858286016126ba565b9150509250929050565b61271881612485565b82525050565b6000602082019050612733600083018461270f565b92915050565b600080600080600080600060e0888a03121561275857612757612460565b5b60006127668a828b016124e4565b97505060206127778a828b016124e4565b96505060406127888a828b016124e4565b95505060606127998a828b016124e4565b94505060806127aa8a828b016124e4565b93505060a06127bb8a828b016124e4565b92505060c06127cc8a828b016124e4565b91505092959891949750929550565b600080604083850312156127f2576127f1612460565b5b6000612800858286016124ae565b9250506020612811858286016124ae565b9150509250929050565b600061282682612465565b9050919050565b6128368161281b565b811461284157600080fd5b50565b6000813590506128538161282d565b92915050565b60006020828403121561286f5761286e612460565b5b600061287d84828501612844565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128bc6006836123b9565b91506128c782612886565b602082019050919050565b600060208201905081810360008301526128eb816128af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292c826124c3565b9150612937836124c3565b9250828202612945816124c3565b9150828204841483151761295c5761295b6128f2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299d826124c3565b91506129a8836124c3565b9250826129b8576129b7612963565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612a1f602e836123b9565b9150612a2a826129c3565b604082019050919050565b60006020820190508181036000830152612a4e81612a12565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612ab1602c836123b9565b9150612abc82612a55565b604082019050919050565b60006020820190508181036000830152612ae081612aa4565b9050919050565b6000819050919050565b6000612b0c612b07612b0284612465565b612ae7565b612465565b9050919050565b6000612b1e82612af1565b9050919050565b6000612b3082612b13565b9050919050565b612b4081612b25565b82525050565b6000602082019050612b5b6000830184612b37565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bbd6024836123b9565b9150612bc882612b61565b604082019050919050565b60006020820190508181036000830152612bec81612bb0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c4f6022836123b9565b9150612c5a82612bf3565b604082019050919050565b60006020820190508181036000830152612c7e81612c42565b9050919050565b6000612c90826124c3565b9150612c9b836124c3565b9250828203905081811115612cb357612cb26128f2565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d156025836123b9565b9150612d2082612cb9565b604082019050919050565b60006020820190508181036000830152612d4481612d08565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612da76023836123b9565b9150612db282612d4b565b604082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e396029836123b9565b9150612e4482612ddd565b604082019050919050565b60006020820190508181036000830152612e6881612e2c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612ecb6031836123b9565b9150612ed682612e6f565b604082019050919050565b60006020820190508181036000830152612efa81612ebe565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f37600e836123b9565b9150612f4282612f01565b602082019050919050565b60006020820190508181036000830152612f6681612f2a565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612fa3601e836123b9565b9150612fae82612f6d565b602082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b6000612fe4826124c3565b9150612fef836124c3565b9250828201905080821115613007576130066128f2565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006130436011836123b9565b915061304e8261300d565b602082019050919050565b6000602082019050818103600083015261307281613036565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130e681612497565b92915050565b60006020828403121561310257613101612460565b5b6000613110848285016130d7565b91505092915050565b6000819050919050565b600061313e61313961313484613119565b612ae7565b6124c3565b9050919050565b61314e81613123565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61318981612485565b82525050565b600061319b8383613180565b60208301905092915050565b6000602082019050919050565b60006131bf82613154565b6131c9818561315f565b93506131d483613170565b8060005b838110156132055781516131ec888261318f565b97506131f7836131a7565b9250506001810190506131d8565b5085935050505092915050565b600060a082019050613227600083018861256f565b6132346020830187613145565b818103604083015261324681866131b4565b9050613255606083018561270f565b613262608083018461256f565b9695505050505050565b600060c082019050613281600083018961270f565b61328e602083018861256f565b61329b6040830187613145565b6132a86060830186613145565b6132b5608083018561270f565b6132c260a083018461256f565b979650505050505050565b6000815190506132dc816124cd565b92915050565b6000806000606084860312156132fb576132fa612460565b5b6000613309868287016132cd565b935050602061331a868287016132cd565b925050604061332b868287016132cd565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206019a4f93d6fd3129ef6cc0fe470612f2ee1f8d3ef336a5191ce8a48d23475ca64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806348ff2b8b116100ab57806395d89b411161006f57806395d89b4114610401578063a8aa1b311461042c578063a9059cbb14610457578063aeb5b9b514610494578063dd62ed3e146104bd578063f2fde38b146104fa57610135565b806348ff2b8b1461031a57806370a082311461034357806378109e54146103805780637d1db4a5146103ab578063893d20e8146103d657610135565b806323b872dd116100f257806323b872dd14610221578063293230b81461025e5780632f54bf6e14610275578063313ce567146102b25780633f4218e0146102dd57610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a2578063189ae5f2146101cd5780631f976b7e146101f657610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610523565b60405161015c919061243e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906124f9565b610560565b6040516101999190612554565b60405180910390f35b3480156101ae57600080fd5b506101b7610577565b6040516101c4919061257e565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612599565b6105b8565b005b34801561020257600080fd5b5061020b610718565b604051610218919061257e565b60405180910390f35b34801561022d57600080fd5b50610248600480360381019061024391906125ec565b610741565b6040516102559190612554565b60405180910390f35b34801561026a57600080fd5b5061027361080c565b005b34801561028157600080fd5b5061029c6004803603810190610297919061263f565b610871565b6040516102a99190612554565b60405180910390f35b3480156102be57600080fd5b506102c76108ca565b6040516102d49190612688565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff919061263f565b6108d3565b6040516103119190612554565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c91906126cf565b6108f3565b005b34801561034f57600080fd5b5061036a6004803603810190610365919061263f565b610996565b604051610377919061257e565b60405180910390f35b34801561038c57600080fd5b506103956109df565b6040516103a2919061257e565b60405180910390f35b3480156103b757600080fd5b506103c0610a08565b6040516103cd919061257e565b60405180910390f35b3480156103e257600080fd5b506103eb610a31565b6040516103f8919061271e565b60405180910390f35b34801561040d57600080fd5b50610416610a5a565b604051610423919061243e565b60405180910390f35b34801561043857600080fd5b50610441610a97565b60405161044e919061271e565b60405180910390f35b34801561046357600080fd5b5061047e600480360381019061047991906124f9565b610abd565b60405161048b9190612554565b60405180910390f35b3480156104a057600080fd5b506104bb60048036038101906104b69190612739565b610ad4565b005b3480156104c957600080fd5b506104e460048036038101906104df91906127db565b610bd3565b6040516104f1919061257e565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190612859565b610c5a565b005b60606040518060400160405280600881526020017f3078536861726473000000000000000000000000000000000000000000000000815250905090565b600061056d338484610d1c565b6001905092915050565b60006105b36105866000610996565b6105a561059461dead610996565b600154610ee590919063ffffffff16565b610ee590919063ffffffff16565b905090565b6105c133610871565b610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f7906128d2565b60405180910390fd5b60006127108461060e610577565b6106189190612921565b6106229190612992565b9050600061271084610632610577565b61063c9190612921565b6106469190612992565b9050600061271084610656610577565b6106609190612921565b61066a9190612992565b905085600281905550846003819055508360048190555060006106b26103e86106a46005610696610577565b610efb90919063ffffffff16565b610f1190919063ffffffff16565b90508084101580156106c45750808310155b80156106d05750808210155b61070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690612a35565b60405180910390fd5b50505050505050565b6000601254600354610728610577565b6107329190612921565b61073c9190612992565b905090565b600061074e848484610f27565b61080184336107fc8560405180606001604052806028815260200161333660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111209092919063ffffffff16565b610d1c565b600190509392505050565b61081533610871565b610854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084b906128d2565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6108fc33610871565b61093b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610932906128d2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006012546004546109ef610577565b6109f99190612921565b610a039190612992565b905090565b6000601254600254610a18610577565b610a229190612921565b610a2c9190612992565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f3078536861726473000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610aca338484610f27565b6001905092915050565b610add33610871565b610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906128d2565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b636005601254610f1190919063ffffffff16565b600f5411158015610b8b5750610b856005601254610f1190919063ffffffff16565b60105411155b610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190612ac7565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c6333610871565b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c99906128d2565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d119190612b46565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290612bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190612c65565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed8919061257e565b60405180910390a3505050565b60008183610ef39190612c85565b905092915050565b60008183610f099190612921565b905092915050565b60008183610f1f9190612992565b905092915050565b610f32838383611175565b610f3c83836112e6565b610f478383836113e3565b610f5183836115c1565b610f5c83838361168c565b610f678383836118cb565b610fb981600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061100884846118f4565b611012578161101e565b61101d8484846119a2565b5b905061107281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611112919061257e565b60405180910390a350505050565b6000838311158290611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f919061243e565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612d2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612dbd565b60405180910390fd5b60008111611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612e4f565b60405180910390fd5b61129f83610996565b8111156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d890612ee1565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561138a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113df57600a60149054906101000a900460ff166113de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d590612f4d565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114e15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561151b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115bc576115286109df565b61157a82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b11156115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612fb9565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156116685750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611688576001601460008282546116809190612fd9565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117d4576116e9610718565b811115806117405750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117945750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90613059565b60405180910390fd5b5b6117dc610a08565b811115806118335750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118875750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bd90613059565b60405180910390fd5b505050565b6118d6838383611b60565b156118ef576118e6601654611c99565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561199a5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806119af8585611eea565b1115611b3f5760006119e76119c48686611eea565b6119d960125486610f1190919063ffffffff16565b610efb90919063ffffffff16565b9050611a3b81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b4a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611adb919061257e565b60405180910390a36000600e541115611b2457611b233061dead611b1e600e54611b1060125489610f1190919063ffffffff16565b610efb90919063ffffffff16565b610f27565b5b611b378184610ee590919063ffffffff16565b915050611b43565b8190505b9392505050565b60008183611b589190612fd9565b905092915050565b60008060175483101590506000601654611b7930610996565b10159050601560009054906101000a900460ff16158015611ba65750601360009054906101000a900460ff165b8015611bbe5750600a60149054906101000a900460ff165b8015611bc75750815b8015611c1d5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c765750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611c855750600060145410155b8015611c8e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611d076002611cf9600d54611ceb600c54611cdd6001600b54611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b611b4a90919063ffffffff16565b610efb90919063ffffffff16565b90506000611d3282611d24600b5486610efb90919063ffffffff16565b610f1190919063ffffffff16565b90506000611d498285610ee590919063ffffffff16565b90506000479050611d5982612079565b6000611d6e8247610ee590919063ffffffff16565b90506000611d99611d8a600b5488610ee590919063ffffffff16565b83610f1190919063ffffffff16565b90506000611db2600b5483610efb90919063ffffffff16565b90506000811115611dc857611dc786826122bc565b5b6000611df2600c54611de4600286610efb90919063ffffffff16565b610efb90919063ffffffff16565b90506000811115611e59577385d6e2f72ed0d9532ed659648712971f66f0c56d73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e57573d6000803e3d6000fd5b505b60004790506000811115611ec3577385d6e2f72ed0d9532ed659648712971f66f0c56d73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ec1573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f8d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611faf57611fa86064601254610ee590919063ffffffff16565b9050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200e576010549050612073565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206d57600f549050612073565b60115490505b92915050565b6000600267ffffffffffffffff81111561209657612095613079565b5b6040519080825280602002602001820160405280156120c45781602001602082028036833780820191505090505b50905030816000815181106120dc576120db6130a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a791906130ec565b816001815181106121bb576121ba6130a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061222230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612286959493929190613212565b600060405180830381600087803b1580156122a057600080fd5b505af11580156122b4573d6000803e3d6000fd5b505050505050565b6122e930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d1c565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807385d6e2f72ed0d9532ed659648712971f66f0c56d426040518863ffffffff1660e01b81526004016123649695949392919061326c565b60606040518083038185885af1158015612382573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123a791906132e2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123e85780820151818401526020810190506123cd565b60008484015250505050565b6000601f19601f8301169050919050565b6000612410826123ae565b61241a81856123b9565b935061242a8185602086016123ca565b612433816123f4565b840191505092915050565b600060208201905081810360008301526124588184612405565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061249082612465565b9050919050565b6124a081612485565b81146124ab57600080fd5b50565b6000813590506124bd81612497565b92915050565b6000819050919050565b6124d6816124c3565b81146124e157600080fd5b50565b6000813590506124f3816124cd565b92915050565b600080604083850312156125105761250f612460565b5b600061251e858286016124ae565b925050602061252f858286016124e4565b9150509250929050565b60008115159050919050565b61254e81612539565b82525050565b60006020820190506125696000830184612545565b92915050565b612578816124c3565b82525050565b6000602082019050612593600083018461256f565b92915050565b6000806000606084860312156125b2576125b1612460565b5b60006125c0868287016124e4565b93505060206125d1868287016124e4565b92505060406125e2868287016124e4565b9150509250925092565b60008060006060848603121561260557612604612460565b5b6000612613868287016124ae565b9350506020612624868287016124ae565b9250506040612635868287016124e4565b9150509250925092565b60006020828403121561265557612654612460565b5b6000612663848285016124ae565b91505092915050565b600060ff82169050919050565b6126828161266c565b82525050565b600060208201905061269d6000830184612679565b92915050565b6126ac81612539565b81146126b757600080fd5b50565b6000813590506126c9816126a3565b92915050565b600080604083850312156126e6576126e5612460565b5b60006126f4858286016124ae565b9250506020612705858286016126ba565b9150509250929050565b61271881612485565b82525050565b6000602082019050612733600083018461270f565b92915050565b600080600080600080600060e0888a03121561275857612757612460565b5b60006127668a828b016124e4565b97505060206127778a828b016124e4565b96505060406127888a828b016124e4565b95505060606127998a828b016124e4565b94505060806127aa8a828b016124e4565b93505060a06127bb8a828b016124e4565b92505060c06127cc8a828b016124e4565b91505092959891949750929550565b600080604083850312156127f2576127f1612460565b5b6000612800858286016124ae565b9250506020612811858286016124ae565b9150509250929050565b600061282682612465565b9050919050565b6128368161281b565b811461284157600080fd5b50565b6000813590506128538161282d565b92915050565b60006020828403121561286f5761286e612460565b5b600061287d84828501612844565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128bc6006836123b9565b91506128c782612886565b602082019050919050565b600060208201905081810360008301526128eb816128af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061292c826124c3565b9150612937836124c3565b9250828202612945816124c3565b9150828204841483151761295c5761295b6128f2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299d826124c3565b91506129a8836124c3565b9250826129b8576129b7612963565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612a1f602e836123b9565b9150612a2a826129c3565b604082019050919050565b60006020820190508181036000830152612a4e81612a12565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612ab1602c836123b9565b9150612abc82612a55565b604082019050919050565b60006020820190508181036000830152612ae081612aa4565b9050919050565b6000819050919050565b6000612b0c612b07612b0284612465565b612ae7565b612465565b9050919050565b6000612b1e82612af1565b9050919050565b6000612b3082612b13565b9050919050565b612b4081612b25565b82525050565b6000602082019050612b5b6000830184612b37565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bbd6024836123b9565b9150612bc882612b61565b604082019050919050565b60006020820190508181036000830152612bec81612bb0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c4f6022836123b9565b9150612c5a82612bf3565b604082019050919050565b60006020820190508181036000830152612c7e81612c42565b9050919050565b6000612c90826124c3565b9150612c9b836124c3565b9250828203905081811115612cb357612cb26128f2565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d156025836123b9565b9150612d2082612cb9565b604082019050919050565b60006020820190508181036000830152612d4481612d08565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612da76023836123b9565b9150612db282612d4b565b604082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e396029836123b9565b9150612e4482612ddd565b604082019050919050565b60006020820190508181036000830152612e6881612e2c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612ecb6031836123b9565b9150612ed682612e6f565b604082019050919050565b60006020820190508181036000830152612efa81612ebe565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f37600e836123b9565b9150612f4282612f01565b602082019050919050565b60006020820190508181036000830152612f6681612f2a565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612fa3601e836123b9565b9150612fae82612f6d565b602082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b6000612fe4826124c3565b9150612fef836124c3565b9250828201905080821115613007576130066128f2565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006130436011836123b9565b915061304e8261300d565b602082019050919050565b6000602082019050818103600083015261307281613036565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130e681612497565b92915050565b60006020828403121561310257613101612460565b5b6000613110848285016130d7565b91505092915050565b6000819050919050565b600061313e61313961313484613119565b612ae7565b6124c3565b9050919050565b61314e81613123565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61318981612485565b82525050565b600061319b8383613180565b60208301905092915050565b6000602082019050919050565b60006131bf82613154565b6131c9818561315f565b93506131d483613170565b8060005b838110156132055781516131ec888261318f565b97506131f7836131a7565b9250506001810190506131d8565b5085935050505092915050565b600060a082019050613227600083018861256f565b6132346020830187613145565b818103604083015261324681866131b4565b9050613255606083018561270f565b613262608083018461256f565b9695505050505050565b600060c082019050613281600083018961270f565b61328e602083018861256f565b61329b6040830187613145565b6132a86060830186613145565b6132b5608083018561270f565b6132c260a083018461256f565b979650505050505050565b6000815190506132dc816124cd565b92915050565b6000806000606084860312156132fb576132fa612460565b5b6000613309868287016132cd565b935050602061331a868287016132cd565b925050604061332b868287016132cd565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206019a4f93d6fd3129ef6cc0fe470612f2ee1f8d3ef336a5191ce8a48d23475ca64736f6c63430008120033

Deployed Bytecode Sourcemap

4684:11510:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7038:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8053:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8192:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10366:580;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8569:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15537:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7261:67;;;;;;;;;;;;;:::i;:::-;;3064:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7188:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5248:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7939:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7418:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8330:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8450:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7334:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7111:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5366:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7527:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9837:521;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7672:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3157:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7038:67;7075:13;7098:5;;;;;;;;;;;;;;;;;7091:12;;7038:67;:::o;8053:133::-;8128:4;8135:37;8144:10;8156:7;8165:6;8135:8;:37::i;:::-;8180:4;8173:11;;8053:133;;;;:::o;8192:132::-;8245:7;8262:60;8300:21;8318:1;8300:9;:21::i;:::-;8262:33;8279:15;6093:42;8279:9;:15::i;:::-;8262:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8255:67;;8192:132;:::o;10366:580::-;3023:19;3031:10;3023:7;:19::i;:::-;3015:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10462:13:::1;10503:5;10495:4;10479:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10478:30;;;;:::i;:::-;10462:46;;10519:19;10568:5;10558:6;10542:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10541:32;;;;:::i;:::-;10519:54;;10584:17;10632:5;10621:7;10605:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10604:33;;;;:::i;:::-;10584:53;;10670:4;10648:19;:26;;;;10707:6;10685:19;:28;;;;10744:7;10724:17;:27;;;;10762:13;10778:30;10803:4;10778:20;10796:1;10778:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10762:46;;10836:5;10827;:14;;:38;;;;;10860:5;10845:11;:20;;10827:38;:60;;;;;10882:5;10869:9;:18;;10827:60;10819:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10451:495;;;;10366:580:::0;;;:::o;8569:119::-;8620:7;8675:11;;8653:19;;8637:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8630:56;;8569:119;:::o;15537:309::-;15635:4;15652:36;15662:6;15670:9;15681:6;15652:9;:36::i;:::-;15699:117;15708:6;15716:10;15728:87;15764:6;15728:87;;;;;;;;;;;;;;;;;:11;:19;15740:6;15728:19;;;;;;;;;;;;;;;:31;15748:10;15728:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15699:8;:117::i;:::-;15834:4;15827:11;;15537:309;;;;;:::o;7261:67::-;3023:19;3031:10;3023:7;:19::i;:::-;3015:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7322:4:::1;7305:14;;:21;;;;;;;;;;;;;;;;;;7261:67::o:0;3064:87::-;3119:4;3144:5;;;;;;;;;;;3133:16;;:7;:16;;;3126:23;;3064:87;;;:::o;7188:67::-;7229:5;4896:1;7237:16;;7188:67;:::o;5248:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7939:108::-;3023:19;3031:10;3023:7;:19::i;:::-;3015:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8037:8:::1;8013:11;:21;8025:8;8013:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7939:108:::0;;:::o;7418:103::-;7484:7;7501:9;:18;7511:7;7501:18;;;;;;;;;;;;;;;;7494:25;;7418:103;;;:::o;8330:114::-;8378:7;8431:11;;8411:17;;8395:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8388:54;;8330:114;:::o;8450:113::-;8495:7;8550:11;;8528:19;;8512:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8505:56;;8450:113;:::o;7334:78::-;7386:7;7404:5;;;;;;;;;;;7397:12;;7334:78;:::o;7111:71::-;7150:13;7173:7;;;;;;;;;;;;;;;;;7166:14;;7111:71;:::o;5366:19::-;;;;;;;;;;;;;:::o;7527:139::-;7605:4;7612:40;7622:10;7634:9;7645:6;7612:9;:40::i;:::-;7660:4;7653:11;;7527:139;;;;:::o;9837:521::-;3023:19;3031:10;3023:7;:19::i;:::-;3015:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10022:10:::1;10007:12;:25;;;;10058:10;10043:12;:25;;;;10089:5;10079:7;:15;;;;10122:12;10105:14;:29;;;;10156:6;10145:8;:17;;;;10183:5;10173:7;:15;;;;10213:6;10199:11;:20;;;;10250:18;10266:1;10250:11;;:15;;:18;;;;:::i;:::-;10238:8;;:30;;:63;;;;;10283:18;10299:1;10283:11;;:15;;:18;;;;:::i;:::-;10272:7;;:29;;10238:63;10230:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;9837:521:::0;;;;;;;:::o;7672:127::-;7753:7;7770:11;:18;7782:5;7770:18;;;;;;;;;;;;;;;:27;7789:7;7770:27;;;;;;;;;;;;;;;;7763:34;;7672:127;;;;:::o;3157:111::-;3023:19;3031:10;3023:7;:19::i;:::-;3015:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3231:3:::1;3223:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3241:25;3262:3;3241:25;;;;;;:::i;:::-;;;;;;;;3157:111:::0;:::o;15854:335::-;15964:1;15947:19;;:5;:19;;;15939:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16045:1;16026:21;;:7;:21;;;16018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16127:6;16097:11;:18;16109:5;16097:18;;;;;;;;;;;;;;;:27;16116:7;16097:27;;;;;;;;;;;;;;;:36;;;;16165:7;16149:32;;16158:5;16149:32;;;16174:6;16149:32;;;;;;:::i;:::-;;;;;;;;15854:335;;;:::o;250:82::-;308:7;329:1;325;:5;;;;:::i;:::-;318:12;;250:82;;;;:::o;338:::-;396:7;417:1;413;:5;;;;:::i;:::-;406:12;;338:82;;;;:::o;426:::-;484:7;505:1;501;:5;;;;:::i;:::-;494:12;;426:82;;;;:::o;9143:686::-;9232:37;9243:6;9251:9;9262:6;9232:10;:37::i;:::-;9280:38;9300:6;9308:9;9280:19;:38::i;:::-;9329:41;9344:6;9352:9;9363:6;9329:14;:41::i;:::-;9382:35;9399:6;9407:9;9382:16;:35::i;:::-;9428:39;9441:6;9449:9;9460:6;9428:12;:39::i;:::-;9479:35;9488:6;9496:9;9507:6;9479:8;:35::i;:::-;9545:29;9567:6;9545:9;:17;9555:6;9545:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9525:9;:17;9535:6;9525:17;;;;;;;;;;;;;;;:49;;;;9585:22;9610:32;9624:6;9632:9;9610:13;:32::i;:::-;:78;;9682:6;9610:78;;;9645:34;9653:6;9661:9;9672:6;9645:7;:34::i;:::-;9610:78;9585:103;;9722:40;9747:14;9722:9;:20;9732:9;9722:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9699:9;:20;9709:9;9699:20;;;;;;;;;;;;;;;:63;;;;9795:9;9778:43;;9787:6;9778:43;;;9806:14;9778:43;;;;;;:::i;:::-;;;;;;;;9221:608;9143:686;;;:::o;1463:162::-;1549:7;1592:1;1587;:6;;1595:12;1579:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1621:1;1617;:5;1610:12;;1463:162;;;;;:::o;8696:439::-;8818:1;8800:20;;:6;:20;;;8792:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8902:1;8881:23;;:9;:23;;;8873:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8980:1;8963:6;:19;8955:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9057:17;9067:6;9057:9;:17::i;:::-;9047:6;:27;;9039:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8696:439;;;:::o;10954:191::-;11047:11;:19;11059:6;11047:19;;;;;;;;;;;;;;;;;;;;;;;;;11046:20;:47;;;;;11071:11;:22;11083:9;11071:22;;;;;;;;;;;;;;;;;;;;;;;;;11070:23;11046:47;11043:95;;;11103:14;;;;;;;;;;;11095:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11043:95;10954:191;;:::o;11157:333::-;11261:11;:19;11273:6;11261:19;;;;;;;;;;;;;;;;;;;;;;;;;11260:20;:47;;;;;11285:11;:22;11297:9;11285:22;;;;;;;;;;;;;;;;;;;;;;;;;11284:23;11260:47;:77;;;;;11332:4;;;;;;;;;;;11311:26;;:9;:26;;;;11260:77;:107;;;;;6093:42;11341:26;;:9;:26;;;;11260:107;11257:226;;;11429:17;:15;:17::i;:::-;11392:32;11417:6;11392:9;:20;11402:9;11392:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11391:55;;11383:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11257:226;11157:333;;;:::o;11498:159::-;11595:4;;;;;;;;;;;11582:17;;:9;:17;;;:41;;;;;11604:11;:19;11616:6;11604:19;;;;;;;;;;;;;;;;;;;;;;;;;11603:20;11582:41;11579:71;;;11646:1;11625:9;;:23;;;;;;;:::i;:::-;;;;;;;;11579:71;11498:159;;:::o;11665:349::-;11776:4;;;;;;;;;;;11766:14;;:6;:14;;;11763:130;;11800:20;:18;:20::i;:::-;11790:6;:30;;:53;;;;11824:11;:19;11836:6;11824:19;;;;;;;;;;;;;;;;;;;;;;;;;11790:53;:79;;;;11847:11;:22;11859:9;11847:22;;;;;;;;;;;;;;;;;;;;;;;;;11790:79;11782:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11763:130;11921:14;:12;:14::i;:::-;11911:6;:24;;:47;;;;11939:11;:19;11951:6;11939:19;;;;;;;;;;;;;;;;;;;;;;;;;11911:47;:73;;;;11962:11;:22;11974:9;11962:22;;;;;;;;;;;;;;;;;;;;;;;;;11911:73;11903:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11665:349;;;:::o;14297:197::-;14389:41;14404:6;14412:9;14423:6;14389:14;:41::i;:::-;14386:101;;;14432:29;14447:13;;14432:14;:29::i;:::-;14483:1;14463:9;:22;;;;14386:101;14297:197;;;:::o;14502:160::-;14583:4;14608:11;:19;14620:6;14608:19;;;;;;;;;;;;;;;;;;;;;;;;;14607:20;:47;;;;;14632:11;:22;14644:9;14632:22;;;;;;;;;;;;;;;;;;;;;;;;;14631:23;14607:47;14600:54;;14502:160;;;;:::o;14983:546::-;15069:7;15125:1;15092:30;15104:6;15112:9;15092:11;:30::i;:::-;:34;15089:418;;;15138:17;15158:59;15186:30;15198:6;15206:9;15186:11;:30::i;:::-;15158:23;15169:11;;15158:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15138:79;;15255:39;15284:9;15255;:24;15273:4;15255:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15228:9;:24;15246:4;15228:24;;;;;;;;;;;;;;;:66;;;;15335:4;15310:42;;15319:6;15310:42;;;15342:9;15310:42;;;;;;:::i;:::-;;;;;;;;15384:1;15366:7;;:20;15363:104;;;15388:77;15406:4;6093:42;15428:36;15456:7;;15428:23;15439:11;;15428:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15388:9;:77::i;:::-;15363:104;15484:21;15495:9;15484:6;:10;;:21;;;;:::i;:::-;15477:28;;;;;15089:418;15515:6;15508:13;;14983:546;;;;;;:::o;162:82::-;220:7;241:1;237;:5;;;;:::i;:::-;230:12;;162:82;;;;:::o;13889:400::-;13987:4;14004:13;14030:15;;14020:6;:25;;14004:41;;14056:19;14106:13;;14078:24;14096:4;14078:9;:24::i;:::-;:41;;14056:63;;14138:8;;;;;;;;;;;14137:9;:24;;;;;14150:11;;;;;;;;;;;14137:24;:42;;;;;14165:14;;;;;;;;;;;14137:42;:54;;;;;14183:8;14137:54;:78;;;;;14196:11;:19;14208:6;14196:19;;;;;;;;;;;;;;;;;;;;;;;;;14195:20;14137:78;:99;;;;;14232:4;;;;;;;;;;;14219:17;;:9;:17;;;14137:99;:126;;;;;14261:1;14240:9;;:23;;14137:126;:144;;;;;14267:14;14137:144;14130:151;;;;13889:400;;;;;:::o;12022:1066::-;6025:4;6014:8;;:15;;;;;;;;;;;;;;;;;;12093:20:::1;12116:66;12180:1;12117:57;12159:14;;12117:37;12141:12;;12117:19;12134:1;12117:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12116:63;;:66;;;;:::i;:::-;12093:89;;12193:32;12228:42;12257:12;12228:24;12239:12;;12228:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12193:77;;12281:14;12298:36;12309:24;12298:6;:10;;:36;;;;:::i;:::-;12281:53;;12345:22;12370:21;12345:46;;12402:24;12419:6;12402:16;:24::i;:::-;12437:20;12460:41;12486:14;12460:21;:25;;:41;;;;:::i;:::-;12437:64;;12512:19;12533:48;12550:30;12567:12;;12550;:16;;:30;;;;:::i;:::-;12533:12;:16;;:48;;;;:::i;:::-;12512:69;;12592:29;12624;12640:12;;12624:11;:15;;:29;;;;:::i;:::-;12592:61;;12699:1;12667:21;:34;12664:103;;;12703:61;12716:24;12742:21;12703:12;:61::i;:::-;12664:103;12777:20;12800:36;12823:12;;12800:18;12816:1;12800:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12777:59;;12865:1;12850:12;:16;12847:73;;;6288:42;12868:36;;:50;12905:12;12868:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12847:73;12930:24;12957:21;12930:48;;13019:1;12992:16;:29;12989:92;;;6191:42;13023:38;;:56;13062:16;13023:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12989:92;12082:1006;;;;;;;;;6045:5:::0;6034:8;;:16;;;;;;;;;;;;;;;;;;12022:1066;:::o;14670:305::-;14749:7;14772:5;:13;14778:6;14772:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;14789:5;:16;14795:9;14789:16;;;;;;;;;;;;;;;;;;;;;;;;;14772:33;14769:76;;;14814:29;14838:3;14814:11;;:15;;:29;;;;:::i;:::-;14807:36;;;;14769:76;14871:4;;;;;;;;;;;14858:17;;:9;:17;;;14855:38;;14884:7;;14877:14;;;;14855:38;14916:4;;;;;;;;;;;14906:14;;:6;:14;;;14903:36;;14929:8;;14922:15;;;;14903:36;14956:11;;14949:18;;14670:305;;;;;:::o;13447:434::-;13513:21;13551:1;13537:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13513:40;;13582:4;13564;13569:1;13564:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13608:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13598:4;13603:1;13598:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13632:53;13649:4;13664:6;;;;;;;;;;;13673:11;13632:8;:53::i;:::-;13696:6;;;;;;;;;;;:57;;;13768:11;13794:1;13810:4;13837;13857:15;13696:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13502:379;13447:434;:::o;13096:343::-;13177:53;13194:4;13209:6;;;;;;;;;;;13218:11;13177:8;:53::i;:::-;13241:6;;;;;;;;;;;:22;;;13271:9;13304:4;13324:11;13350:1;13366;6384:42;13415:15;13241:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13096: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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:329::-;5107:6;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5048:329;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:116::-;5883:21;5898:5;5883:21;:::i;:::-;5876:5;5873:32;5863:60;;5919:1;5916;5909:12;5863:60;5813:116;:::o;5935:133::-;5978:5;6016:6;6003:20;5994:29;;6032:30;6056:5;6032:30;:::i;:::-;5935:133;;;;:::o;6074:468::-;6139:6;6147;6196:2;6184:9;6175:7;6171:23;6167:32;6164:119;;;6202:79;;:::i;:::-;6164:119;6322:1;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6293:117;6449:2;6475:50;6517:7;6508:6;6497:9;6493:22;6475:50;:::i;:::-;6465:60;;6420:115;6074:468;;;;;:::o;6548:118::-;6635:24;6653:5;6635:24;:::i;:::-;6630:3;6623:37;6548:118;;:::o;6672:222::-;6765:4;6803:2;6792:9;6788:18;6780:26;;6816:71;6884:1;6873:9;6869:17;6860:6;6816:71;:::i;:::-;6672:222;;;;:::o;6900:1203::-;7013:6;7021;7029;7037;7045;7053;7061;7110:3;7098:9;7089:7;7085:23;7081:33;7078:120;;;7117:79;;:::i;:::-;7078:120;7237:1;7262:53;7307:7;7298:6;7287:9;7283:22;7262:53;:::i;:::-;7252:63;;7208:117;7364:2;7390:53;7435:7;7426:6;7415:9;7411:22;7390:53;:::i;:::-;7380:63;;7335:118;7492:2;7518:53;7563:7;7554:6;7543:9;7539:22;7518:53;:::i;:::-;7508:63;;7463:118;7620:2;7646:53;7691:7;7682:6;7671:9;7667:22;7646:53;:::i;:::-;7636:63;;7591:118;7748:3;7775:53;7820:7;7811:6;7800:9;7796:22;7775:53;:::i;:::-;7765:63;;7719:119;7877:3;7904:53;7949:7;7940:6;7929:9;7925:22;7904:53;:::i;:::-;7894:63;;7848:119;8006:3;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7977:119;6900:1203;;;;;;;;;;:::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:180::-;10361:77;10358:1;10351:88;10458:4;10455:1;10448:15;10482:4;10479:1;10472:15;10499:410;10539:7;10562:20;10580:1;10562:20;:::i;:::-;10557:25;;10596:20;10614:1;10596:20;:::i;:::-;10591:25;;10651:1;10648;10644:9;10673:30;10691:11;10673:30;:::i;:::-;10662:41;;10852:1;10843:7;10839:15;10836:1;10833:22;10813:1;10806:9;10786:83;10763:139;;10882:18;;:::i;:::-;10763:139;10547:362;10499:410;;;;:::o;10915:180::-;10963:77;10960:1;10953:88;11060:4;11057:1;11050:15;11084:4;11081:1;11074:15;11101:185;11141:1;11158:20;11176:1;11158:20;:::i;:::-;11153:25;;11192:20;11210:1;11192:20;:::i;:::-;11187:25;;11231:1;11221:35;;11236:18;;:::i;:::-;11221:35;11278:1;11275;11271:9;11266:14;;11101:185;;;;:::o;11292:233::-;11432:34;11428:1;11420:6;11416:14;11409:58;11501:16;11496:2;11488:6;11484:15;11477:41;11292:233;:::o;11531:366::-;11673:3;11694:67;11758:2;11753:3;11694:67;:::i;:::-;11687:74;;11770:93;11859:3;11770:93;:::i;:::-;11888:2;11883:3;11879:12;11872:19;;11531:366;;;:::o;11903:419::-;12069:4;12107:2;12096:9;12092:18;12084:26;;12156:9;12150:4;12146:20;12142:1;12131:9;12127:17;12120:47;12184:131;12310:4;12184:131;:::i;:::-;12176:139;;11903:419;;;:::o;12328:231::-;12468:34;12464:1;12456:6;12452:14;12445:58;12537:14;12532:2;12524:6;12520:15;12513:39;12328:231;:::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://6019a4f93d6fd3129ef6cc0fe470612f2ee1f8d3ef336a5191ce8a48d23475ca
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.