ETH Price: $2,273.82 (+0.12%)

Token

Odyssey, Penguin Edition (Odyssey)
 

Overview

Max Total Supply

1,000,000,000 Odyssey

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
31,257,937.869509221 Odyssey

Value
$0.00
0x65153d76a8d894d84693bdbaa251967efd60fd0f
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:
Odyssey

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-26
*/

/**


https://t.me/

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;


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 Odyssey is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode'Odyssey, Penguin Edition';
    string private constant _symbol = unicode'Odyssey';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200; 
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    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 = true;
    uint256 private liquidityFee = 500;
    uint256 private marketingFee = 1000;
    uint256 private developmentFee = 500;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 2000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 20 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

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

    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 setFees(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setWalletLimits(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 >= swapAmount && aboveThreshold;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    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":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","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":"setWalletLimits","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"}]

60806040526009600a62000014919062000718565b633b9aca0062000025919062000769565b60015560c860025560c860035560c86004556001600a60146101000a81548160ff0219169083151502179055506101f4600b556103e8600c556101f4600d556000600e556107d0600f556107d06010556107d06011556127106012556001601360006101000a81548160ff0219169083151502179055506001601655620186a06103e8600154620000b7919062000769565b620000c39190620007f9565b601755620186a06014600154620000db919062000769565b620000e79190620007f9565b601855348015620000f757600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c791906200089b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025591906200089b565b6040518363ffffffff1660e01b815260040162000274929190620008de565b6020604051808303816000875af115801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba91906200089b565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bb444c87cd9ae4440d6de72a243871b645e71b3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bb444c87cd9ae4440d6de72a243871b645e71b3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200056e91906200091c565b60405180910390a3505062000939565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060c57808604811115620005e457620005e36200057e565b5b6001851615620005f45780820291505b80810290506200060485620005ad565b9450620005c4565b94509492505050565b600082620006275760019050620006fa565b81620006375760009050620006fa565b81600181146200065057600281146200065b5762000691565b6001915050620006fa565b60ff84111562000670576200066f6200057e565b5b8360020a9150848211156200068a57620006896200057e565b5b50620006fa565b5060208310610133831016604e8410600b8410161715620006cb5782820a905083811115620006c557620006c46200057e565b5b620006fa565b620006da8484846001620005ba565b92509050818404811115620006f457620006f36200057e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007258262000701565b915062000732836200070b565b9250620007617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000615565b905092915050565b6000620007768262000701565b9150620007838362000701565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007bf57620007be6200057e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008068262000701565b9150620008138362000701565b925082620008265762000825620007ca565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008638262000836565b9050919050565b620008758162000856565b81146200088157600080fd5b50565b60008151905062000895816200086a565b92915050565b600060208284031215620008b457620008b362000831565b5b6000620008c48482850162000884565b91505092915050565b620008d88162000856565b82525050565b6000604082019050620008f56000830185620008cd565b620009046020830184620008cd565b9392505050565b620009168162000701565b82525050565b60006020820190506200093360008301846200090b565b92915050565b61349480620009496000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab578063a8aa1b311161006f578063a8aa1b3114610437578063a9059cbb14610462578063da2e3bad1461049f578063dd62ed3e146104c8578063e94dd17c14610505578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b6578063893d20e8146103e157806395d89b411461040c57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce567146102945780633f4218e0146102bf57806348ff2b8b146102fc57806366dc3e331461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612527565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906125e2565b610594565b6040516101a4919061263d565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612667565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612667565b60405180910390f35b34801561020f57600080fd5b5061022a60048036038101906102259190612682565b610615565b604051610237919061263d565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e600480360381019061027991906126d5565b610745565b60405161028b919061263d565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b6919061271e565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e191906126d5565b6107a7565b6040516102f3919061263d565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612765565b6107c7565b005b34801561033157600080fd5b5061034c600480360381019061034791906127a5565b61086a565b005b34801561035a57600080fd5b50610375600480360381019061037091906126d5565b6109ca565b6040516103829190612667565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612667565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612667565b60405180910390f35b3480156103ed57600080fd5b506103f6610a65565b6040516104039190612807565b60405180910390f35b34801561041857600080fd5b50610421610a8e565b60405161042e9190612527565b60405180910390f35b34801561044357600080fd5b5061044c610acb565b6040516104599190612807565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906125e2565b610af1565b604051610496919061263d565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612822565b610b08565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906128c4565b610c07565b6040516104fc9190612667565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906127a5565b610c8e565b005b34801561053a57600080fd5b5061055560048036038101906105509190612942565b610d42565b005b60606040518060400160405280601881526020017f4f6479737365792c2050656e6775696e2045646974696f6e0000000000000000815250905090565b60006105a1338484610e04565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610fcd90919063ffffffff16565b610fcd90919063ffffffff16565b905090565b60006012546003546105fc6105ab565b610606919061299e565b6106109190612a27565b905090565b6000610622848484610fe3565b6106d584336106d08560405180606001604052806028815260200161343760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111dc9092919063ffffffff16565b610e04565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aa4565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6107d033610745565b61080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080690612aa4565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61087333610745565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a990612aa4565b60405180910390fd5b6000612710846108c06105ab565b6108ca919061299e565b6108d49190612a27565b90506000612710846108e46105ab565b6108ee919061299e565b6108f89190612a27565b90506000612710846109086105ab565b610912919061299e565b61091c9190612a27565b905085600281905550846003819055508360048190555060006109646103e861095660056109486105ab565b61123190919063ffffffff16565b61124790919063ffffffff16565b90508084101580156109765750808310155b80156109825750808210155b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612b36565b60405180910390fd5b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d919061299e565b610a379190612a27565b905090565b6000601254600254610a4c6105ab565b610a56919061299e565b610a609190612a27565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4f64797373657900000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610afe338484610fe3565b6001905092915050565b610b1133610745565b610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612aa4565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b97600160125461124790919063ffffffff16565b600f5411158015610bbf5750610bb9600160125461124790919063ffffffff16565b60105411155b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612bc8565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c9733610745565b610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612aa4565b60405180910390fd5b82601681905550610d07620186a0610cf98460015461123190919063ffffffff16565b61124790919063ffffffff16565b601781905550610d37620186a0610d298360015461123190919063ffffffff16565b61124790919063ffffffff16565b601881905550505050565b610d4b33610745565b610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190612aa4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610df99190612c47565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90612cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612d66565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fc09190612667565b60405180910390a3505050565b60008183610fdb9190612d86565b905092915050565b610fee83838361125d565b610ff883836113ce565b6110038383836114cb565b61100d83836116a9565b611018838383611774565b6110238383836119b3565b61107581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fcd90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110c484846119dc565b6110ce57816110da565b6110d9848484611a8a565b5b905061112e81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111ce9190612667565b60405180910390a350505050565b6000838311158290611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b9190612527565b60405180910390fd5b5082840390509392505050565b6000818361123f919061299e565b905092915050565b600081836112559190612a27565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c390612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612ebe565b60405180910390fd5b6000811161137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590612f50565b60405180910390fd5b611387836109ca565b8111156113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090612fe2565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114725750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114c757600a60149054906101000a900460ff166114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061304e565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561156f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115c95750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611603575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116a457611610610a13565b61166282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b11156116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a906130ba565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117505750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117705760016014600082825461176891906130da565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118bc576117d16105ec565b811115806118285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061187c5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b29061315a565b60405180910390fd5b5b6118c4610a3c565b8111158061191b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061196f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a59061315a565b60405180910390fd5b505050565b6119be838383611c48565b156119d7576119ce601754611d82565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a825750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a978585611fd3565b1115611c27576000611acf611aac8686611fd3565b611ac16012548661124790919063ffffffff16565b61123190919063ffffffff16565b9050611b2381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc39190612667565b60405180910390a36000600e541115611c0c57611c0b3061dead611c06600e54611bf86012548961124790919063ffffffff16565b61123190919063ffffffff16565b610fe3565b5b611c1f8184610fcd90919063ffffffff16565b915050611c2b565b8190505b9392505050565b60008183611c4091906130da565b905092915050565b60008060185483101590506000601754611c61306109ca565b10159050601560009054906101000a900460ff16158015611c8e5750601360009054906101000a900460ff165b8015611ca65750600a60149054906101000a900460ff165b8015611caf5750815b8015611d055750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d5e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d6e575060165460145410155b8015611d775750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611df06002611de2600d54611dd4600c54611dc66001600b54611c3290919063ffffffff16565b611c3290919063ffffffff16565b611c3290919063ffffffff16565b61123190919063ffffffff16565b90506000611e1b82611e0d600b548661123190919063ffffffff16565b61124790919063ffffffff16565b90506000611e328285610fcd90919063ffffffff16565b90506000479050611e4282612162565b6000611e578247610fcd90919063ffffffff16565b90506000611e82611e73600b5488610fcd90919063ffffffff16565b8361124790919063ffffffff16565b90506000611e9b600b548361123190919063ffffffff16565b90506000811115611eb157611eb086826123a5565b5b6000611edb600c54611ecd60028661123190919063ffffffff16565b61123190919063ffffffff16565b90506000811115611f425773bb444c87cd9ae4440d6de72a243871b645e71b3a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f40573d6000803e3d6000fd5b505b60004790506000811115611fac5773bb444c87cd9ae4440d6de72a243871b645e71b3a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611faa573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120765750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612098576120916064601254610fcd90919063ffffffff16565b905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f757601054905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215657600f54905061215c565b60115490505b92915050565b6000600267ffffffffffffffff81111561217f5761217e61317a565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030816000815181106121c5576121c46131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229091906131ed565b816001815181106122a4576122a36131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230b30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236f959493929190613313565b600060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b505050505050565b6123d230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073bb444c87cd9ae4440d6de72a243871b645e71b3a426040518863ffffffff1660e01b815260040161244d9695949392919061336d565b60606040518083038185885af115801561246b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249091906133e3565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124d15780820151818401526020810190506124b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006124f982612497565b61250381856124a2565b93506125138185602086016124b3565b61251c816124dd565b840191505092915050565b6000602082019050818103600083015261254181846124ee565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125798261254e565b9050919050565b6125898161256e565b811461259457600080fd5b50565b6000813590506125a681612580565b92915050565b6000819050919050565b6125bf816125ac565b81146125ca57600080fd5b50565b6000813590506125dc816125b6565b92915050565b600080604083850312156125f9576125f8612549565b5b600061260785828601612597565b9250506020612618858286016125cd565b9150509250929050565b60008115159050919050565b61263781612622565b82525050565b6000602082019050612652600083018461262e565b92915050565b612661816125ac565b82525050565b600060208201905061267c6000830184612658565b92915050565b60008060006060848603121561269b5761269a612549565b5b60006126a986828701612597565b93505060206126ba86828701612597565b92505060406126cb868287016125cd565b9150509250925092565b6000602082840312156126eb576126ea612549565b5b60006126f984828501612597565b91505092915050565b600060ff82169050919050565b61271881612702565b82525050565b6000602082019050612733600083018461270f565b92915050565b61274281612622565b811461274d57600080fd5b50565b60008135905061275f81612739565b92915050565b6000806040838503121561277c5761277b612549565b5b600061278a85828601612597565b925050602061279b85828601612750565b9150509250929050565b6000806000606084860312156127be576127bd612549565b5b60006127cc868287016125cd565b93505060206127dd868287016125cd565b92505060406127ee868287016125cd565b9150509250925092565b6128018161256e565b82525050565b600060208201905061281c60008301846127f8565b92915050565b600080600080600080600060e0888a03121561284157612840612549565b5b600061284f8a828b016125cd565b97505060206128608a828b016125cd565b96505060406128718a828b016125cd565b95505060606128828a828b016125cd565b94505060806128938a828b016125cd565b93505060a06128a48a828b016125cd565b92505060c06128b58a828b016125cd565b91505092959891949750929550565b600080604083850312156128db576128da612549565b5b60006128e985828601612597565b92505060206128fa85828601612597565b9150509250929050565b600061290f8261254e565b9050919050565b61291f81612904565b811461292a57600080fd5b50565b60008135905061293c81612916565b92915050565b60006020828403121561295857612957612549565b5b60006129668482850161292d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129a9826125ac565b91506129b4836125ac565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129ed576129ec61296f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a32826125ac565b9150612a3d836125ac565b925082612a4d57612a4c6129f8565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a8e6006836124a2565b9150612a9982612a58565b602082019050919050565b60006020820190508181036000830152612abd81612a81565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b20602e836124a2565b9150612b2b82612ac4565b604082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bb2602c836124a2565b9150612bbd82612b56565b604082019050919050565b60006020820190508181036000830152612be181612ba5565b9050919050565b6000819050919050565b6000612c0d612c08612c038461254e565b612be8565b61254e565b9050919050565b6000612c1f82612bf2565b9050919050565b6000612c3182612c14565b9050919050565b612c4181612c26565b82525050565b6000602082019050612c5c6000830184612c38565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cbe6024836124a2565b9150612cc982612c62565b604082019050919050565b60006020820190508181036000830152612ced81612cb1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d506022836124a2565b9150612d5b82612cf4565b604082019050919050565b60006020820190508181036000830152612d7f81612d43565b9050919050565b6000612d91826125ac565b9150612d9c836125ac565b9250828203905081811115612db457612db361296f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e166025836124a2565b9150612e2182612dba565b604082019050919050565b60006020820190508181036000830152612e4581612e09565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea86023836124a2565b9150612eb382612e4c565b604082019050919050565b60006020820190508181036000830152612ed781612e9b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f3a6029836124a2565b9150612f4582612ede565b604082019050919050565b60006020820190508181036000830152612f6981612f2d565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612fcc6031836124a2565b9150612fd782612f70565b604082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613038600e836124a2565b915061304382613002565b602082019050919050565b600060208201905081810360008301526130678161302b565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130a4601e836124a2565b91506130af8261306e565b602082019050919050565b600060208201905081810360008301526130d381613097565b9050919050565b60006130e5826125ac565b91506130f0836125ac565b92508282019050808211156131085761310761296f565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006131446011836124a2565b915061314f8261310e565b602082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131e781612580565b92915050565b60006020828403121561320357613202612549565b5b6000613211848285016131d8565b91505092915050565b6000819050919050565b600061323f61323a6132358461321a565b612be8565b6125ac565b9050919050565b61324f81613224565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328a8161256e565b82525050565b600061329c8383613281565b60208301905092915050565b6000602082019050919050565b60006132c082613255565b6132ca8185613260565b93506132d583613271565b8060005b838110156133065781516132ed8882613290565b97506132f8836132a8565b9250506001810190506132d9565b5085935050505092915050565b600060a0820190506133286000830188612658565b6133356020830187613246565b818103604083015261334781866132b5565b905061335660608301856127f8565b6133636080830184612658565b9695505050505050565b600060c08201905061338260008301896127f8565b61338f6020830188612658565b61339c6040830187613246565b6133a96060830186613246565b6133b660808301856127f8565b6133c360a0830184612658565b979650505050505050565b6000815190506133dd816125b6565b92915050565b6000806000606084860312156133fc576133fb612549565b5b600061340a868287016133ce565b935050602061341b868287016133ce565b925050604061342c868287016133ce565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201fae602a589624edb60035498ea1012d233ff5127f6780c1f2797efa2fe2257064736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806370a08231116100ab578063a8aa1b311161006f578063a8aa1b3114610437578063a9059cbb14610462578063da2e3bad1461049f578063dd62ed3e146104c8578063e94dd17c14610505578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b6578063893d20e8146103e157806395d89b411461040c57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce567146102945780633f4218e0146102bf57806348ff2b8b146102fc57806366dc3e331461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612527565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906125e2565b610594565b6040516101a4919061263d565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612667565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612667565b60405180910390f35b34801561020f57600080fd5b5061022a60048036038101906102259190612682565b610615565b604051610237919061263d565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e600480360381019061027991906126d5565b610745565b60405161028b919061263d565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b6919061271e565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e191906126d5565b6107a7565b6040516102f3919061263d565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612765565b6107c7565b005b34801561033157600080fd5b5061034c600480360381019061034791906127a5565b61086a565b005b34801561035a57600080fd5b50610375600480360381019061037091906126d5565b6109ca565b6040516103829190612667565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612667565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612667565b60405180910390f35b3480156103ed57600080fd5b506103f6610a65565b6040516104039190612807565b60405180910390f35b34801561041857600080fd5b50610421610a8e565b60405161042e9190612527565b60405180910390f35b34801561044357600080fd5b5061044c610acb565b6040516104599190612807565b60405180910390f35b34801561046e57600080fd5b50610489600480360381019061048491906125e2565b610af1565b604051610496919061263d565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612822565b610b08565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906128c4565b610c07565b6040516104fc9190612667565b60405180910390f35b34801561051157600080fd5b5061052c600480360381019061052791906127a5565b610c8e565b005b34801561053a57600080fd5b5061055560048036038101906105509190612942565b610d42565b005b60606040518060400160405280601881526020017f4f6479737365792c2050656e6775696e2045646974696f6e0000000000000000815250905090565b60006105a1338484610e04565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610fcd90919063ffffffff16565b610fcd90919063ffffffff16565b905090565b60006012546003546105fc6105ab565b610606919061299e565b6106109190612a27565b905090565b6000610622848484610fe3565b6106d584336106d08560405180606001604052806028815260200161343760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111dc9092919063ffffffff16565b610e04565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aa4565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6107d033610745565b61080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080690612aa4565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61087333610745565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a990612aa4565b60405180910390fd5b6000612710846108c06105ab565b6108ca919061299e565b6108d49190612a27565b90506000612710846108e46105ab565b6108ee919061299e565b6108f89190612a27565b90506000612710846109086105ab565b610912919061299e565b61091c9190612a27565b905085600281905550846003819055508360048190555060006109646103e861095660056109486105ab565b61123190919063ffffffff16565b61124790919063ffffffff16565b90508084101580156109765750808310155b80156109825750808210155b6109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890612b36565b60405180910390fd5b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d919061299e565b610a379190612a27565b905090565b6000601254600254610a4c6105ab565b610a56919061299e565b610a609190612a27565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4f64797373657900000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610afe338484610fe3565b6001905092915050565b610b1133610745565b610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790612aa4565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610b97600160125461124790919063ffffffff16565b600f5411158015610bbf5750610bb9600160125461124790919063ffffffff16565b60105411155b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf590612bc8565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c9733610745565b610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612aa4565b60405180910390fd5b82601681905550610d07620186a0610cf98460015461123190919063ffffffff16565b61124790919063ffffffff16565b601781905550610d37620186a0610d298360015461123190919063ffffffff16565b61124790919063ffffffff16565b601881905550505050565b610d4b33610745565b610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190612aa4565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610df99190612c47565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90612cd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612d66565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fc09190612667565b60405180910390a3505050565b60008183610fdb9190612d86565b905092915050565b610fee83838361125d565b610ff883836113ce565b6110038383836114cb565b61100d83836116a9565b611018838383611774565b6110238383836119b3565b61107581600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fcd90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110c484846119dc565b6110ce57816110da565b6110d9848484611a8a565b5b905061112e81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111ce9190612667565b60405180910390a350505050565b6000838311158290611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b9190612527565b60405180910390fd5b5082840390509392505050565b6000818361123f919061299e565b905092915050565b600081836112559190612a27565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c390612e2c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612ebe565b60405180910390fd5b6000811161137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590612f50565b60405180910390fd5b611387836109ca565b8111156113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090612fe2565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114725750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114c757600a60149054906101000a900460ff166114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061304e565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561156f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115c95750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611603575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116a457611610610a13565b61166282600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b11156116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a906130ba565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117505750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117705760016014600082825461176891906130da565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118bc576117d16105ec565b811115806118285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061187c5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b29061315a565b60405180910390fd5b5b6118c4610a3c565b8111158061191b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061196f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a59061315a565b60405180910390fd5b505050565b6119be838383611c48565b156119d7576119ce601754611d82565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a825750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611a978585611fd3565b1115611c27576000611acf611aac8686611fd3565b611ac16012548661124790919063ffffffff16565b61123190919063ffffffff16565b9050611b2381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc39190612667565b60405180910390a36000600e541115611c0c57611c0b3061dead611c06600e54611bf86012548961124790919063ffffffff16565b61123190919063ffffffff16565b610fe3565b5b611c1f8184610fcd90919063ffffffff16565b915050611c2b565b8190505b9392505050565b60008183611c4091906130da565b905092915050565b60008060185483101590506000601754611c61306109ca565b10159050601560009054906101000a900460ff16158015611c8e5750601360009054906101000a900460ff165b8015611ca65750600a60149054906101000a900460ff165b8015611caf5750815b8015611d055750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d5e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d6e575060165460145410155b8015611d775750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611df06002611de2600d54611dd4600c54611dc66001600b54611c3290919063ffffffff16565b611c3290919063ffffffff16565b611c3290919063ffffffff16565b61123190919063ffffffff16565b90506000611e1b82611e0d600b548661123190919063ffffffff16565b61124790919063ffffffff16565b90506000611e328285610fcd90919063ffffffff16565b90506000479050611e4282612162565b6000611e578247610fcd90919063ffffffff16565b90506000611e82611e73600b5488610fcd90919063ffffffff16565b8361124790919063ffffffff16565b90506000611e9b600b548361123190919063ffffffff16565b90506000811115611eb157611eb086826123a5565b5b6000611edb600c54611ecd60028661123190919063ffffffff16565b61123190919063ffffffff16565b90506000811115611f425773bb444c87cd9ae4440d6de72a243871b645e71b3a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f40573d6000803e3d6000fd5b505b60004790506000811115611fac5773bb444c87cd9ae4440d6de72a243871b645e71b3a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611faa573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120765750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612098576120916064601254610fcd90919063ffffffff16565b905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f757601054905061215c565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215657600f54905061215c565b60115490505b92915050565b6000600267ffffffffffffffff81111561217f5761217e61317a565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030816000815181106121c5576121c46131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229091906131ed565b816001815181106122a4576122a36131a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230b30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236f959493929190613313565b600060405180830381600087803b15801561238957600080fd5b505af115801561239d573d6000803e3d6000fd5b505050505050565b6123d230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e04565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073bb444c87cd9ae4440d6de72a243871b645e71b3a426040518863ffffffff1660e01b815260040161244d9695949392919061336d565b60606040518083038185885af115801561246b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249091906133e3565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124d15780820151818401526020810190506124b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006124f982612497565b61250381856124a2565b93506125138185602086016124b3565b61251c816124dd565b840191505092915050565b6000602082019050818103600083015261254181846124ee565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125798261254e565b9050919050565b6125898161256e565b811461259457600080fd5b50565b6000813590506125a681612580565b92915050565b6000819050919050565b6125bf816125ac565b81146125ca57600080fd5b50565b6000813590506125dc816125b6565b92915050565b600080604083850312156125f9576125f8612549565b5b600061260785828601612597565b9250506020612618858286016125cd565b9150509250929050565b60008115159050919050565b61263781612622565b82525050565b6000602082019050612652600083018461262e565b92915050565b612661816125ac565b82525050565b600060208201905061267c6000830184612658565b92915050565b60008060006060848603121561269b5761269a612549565b5b60006126a986828701612597565b93505060206126ba86828701612597565b92505060406126cb868287016125cd565b9150509250925092565b6000602082840312156126eb576126ea612549565b5b60006126f984828501612597565b91505092915050565b600060ff82169050919050565b61271881612702565b82525050565b6000602082019050612733600083018461270f565b92915050565b61274281612622565b811461274d57600080fd5b50565b60008135905061275f81612739565b92915050565b6000806040838503121561277c5761277b612549565b5b600061278a85828601612597565b925050602061279b85828601612750565b9150509250929050565b6000806000606084860312156127be576127bd612549565b5b60006127cc868287016125cd565b93505060206127dd868287016125cd565b92505060406127ee868287016125cd565b9150509250925092565b6128018161256e565b82525050565b600060208201905061281c60008301846127f8565b92915050565b600080600080600080600060e0888a03121561284157612840612549565b5b600061284f8a828b016125cd565b97505060206128608a828b016125cd565b96505060406128718a828b016125cd565b95505060606128828a828b016125cd565b94505060806128938a828b016125cd565b93505060a06128a48a828b016125cd565b92505060c06128b58a828b016125cd565b91505092959891949750929550565b600080604083850312156128db576128da612549565b5b60006128e985828601612597565b92505060206128fa85828601612597565b9150509250929050565b600061290f8261254e565b9050919050565b61291f81612904565b811461292a57600080fd5b50565b60008135905061293c81612916565b92915050565b60006020828403121561295857612957612549565b5b60006129668482850161292d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129a9826125ac565b91506129b4836125ac565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129ed576129ec61296f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a32826125ac565b9150612a3d836125ac565b925082612a4d57612a4c6129f8565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a8e6006836124a2565b9150612a9982612a58565b602082019050919050565b60006020820190508181036000830152612abd81612a81565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b20602e836124a2565b9150612b2b82612ac4565b604082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bb2602c836124a2565b9150612bbd82612b56565b604082019050919050565b60006020820190508181036000830152612be181612ba5565b9050919050565b6000819050919050565b6000612c0d612c08612c038461254e565b612be8565b61254e565b9050919050565b6000612c1f82612bf2565b9050919050565b6000612c3182612c14565b9050919050565b612c4181612c26565b82525050565b6000602082019050612c5c6000830184612c38565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cbe6024836124a2565b9150612cc982612c62565b604082019050919050565b60006020820190508181036000830152612ced81612cb1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d506022836124a2565b9150612d5b82612cf4565b604082019050919050565b60006020820190508181036000830152612d7f81612d43565b9050919050565b6000612d91826125ac565b9150612d9c836125ac565b9250828203905081811115612db457612db361296f565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e166025836124a2565b9150612e2182612dba565b604082019050919050565b60006020820190508181036000830152612e4581612e09565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea86023836124a2565b9150612eb382612e4c565b604082019050919050565b60006020820190508181036000830152612ed781612e9b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f3a6029836124a2565b9150612f4582612ede565b604082019050919050565b60006020820190508181036000830152612f6981612f2d565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612fcc6031836124a2565b9150612fd782612f70565b604082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613038600e836124a2565b915061304382613002565b602082019050919050565b600060208201905081810360008301526130678161302b565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130a4601e836124a2565b91506130af8261306e565b602082019050919050565b600060208201905081810360008301526130d381613097565b9050919050565b60006130e5826125ac565b91506130f0836125ac565b92508282019050808211156131085761310761296f565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006131446011836124a2565b915061314f8261310e565b602082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131e781612580565b92915050565b60006020828403121561320357613202612549565b5b6000613211848285016131d8565b91505092915050565b6000819050919050565b600061323f61323a6132358461321a565b612be8565b6125ac565b9050919050565b61324f81613224565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61328a8161256e565b82525050565b600061329c8383613281565b60208301905092915050565b6000602082019050919050565b60006132c082613255565b6132ca8185613260565b93506132d583613271565b8060005b838110156133065781516132ed8882613290565b97506132f8836132a8565b9250506001810190506132d9565b5085935050505092915050565b600060a0820190506133286000830188612658565b6133356020830187613246565b818103604083015261334781866132b5565b905061335660608301856127f8565b6133636080830184612658565b9695505050505050565b600060c08201905061338260008301896127f8565b61338f6020830188612658565b61339c6040830187613246565b6133a96060830186613246565b6133b660808301856127f8565b6133c360a0830184612658565b979650505050505050565b6000815190506133dd816125b6565b92915050565b6000806000606084860312156133fc576133fb612549565b5b600061340a868287016133ce565b935050602061341b868287016133ce565b925050604061342c868287016133ce565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201fae602a589624edb60035498ea1012d233ff5127f6780c1f2797efa2fe2257064736f6c63430008100033

Deployed Bytecode Sourcemap

4642:11882:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7039:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8054:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8193:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8570:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15867:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7262:67;;;;;;;;;;;;;:::i;:::-;;3022:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7189:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5222:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7940:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10368:586;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7419:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8331:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8451:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7335:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7112:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5340:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7528:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9838:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7673:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14304:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3115:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7039:67;7076:13;7099:5;;;;;;;;;;;;;;;;;7092:12;;7039:67;:::o;8054:133::-;8129:4;8136:37;8145:10;8157:7;8166:6;8136:8;:37::i;:::-;8181:4;8174:11;;8054:133;;;;:::o;8193:132::-;8246:7;8263:60;8301:21;8319:1;8301:9;:21::i;:::-;8263:33;8280:15;6094:42;8280:9;:15::i;:::-;8263:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8256:67;;8193:132;:::o;8570:119::-;8621:7;8676:11;;8654:19;;8638:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8631:56;;8570:119;:::o;15867:309::-;15965:4;15982:36;15992:6;16000:9;16011:6;15982:9;:36::i;:::-;16029:117;16038:6;16046:10;16058:87;16094:6;16058:87;;;;;;;;;;;;;;;;;:11;:19;16070:6;16058:19;;;;;;;;;;;;;;;:31;16078:10;16058:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16029:8;:117::i;:::-;16164:4;16157:11;;15867:309;;;;;:::o;7262:67::-;2981:19;2989:10;2981:7;:19::i;:::-;2973:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7323:4:::1;7306:14;;:21;;;;;;;;;;;;;;;;;;7262:67::o:0;3022:87::-;3077:4;3102:5;;;;;;;;;;;3091:16;;:7;:16;;;3084:23;;3022:87;;;:::o;7189:67::-;7230:5;4882:1;7238:16;;7189:67;:::o;5222:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7940:108::-;2981:19;2989:10;2981:7;:19::i;:::-;2973:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8038:8:::1;8014:11;:21;8026:8;8014:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7940:108:::0;;:::o;10368:586::-;2981:19;2989:10;2981:7;:19::i;:::-;2973:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10470:13:::1;10511:5;10503:4;10487:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10486:30;;;;:::i;:::-;10470:46;;10527:19;10576:5;10566:6;10550:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10549:32;;;;:::i;:::-;10527:54;;10592:17;10640:5;10629:7;10613:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10612:33;;;;:::i;:::-;10592:53;;10678:4;10656:19;:26;;;;10715:6;10693:19;:28;;;;10752:7;10732:17;:27;;;;10770:13;10786:30;10811:4;10786:20;10804:1;10786:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10770:46;;10844:5;10835;:14;;:38;;;;;10868:5;10853:11;:20;;10835:38;:60;;;;;10890:5;10877:9;:18;;10835:60;10827:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10459:495;;;;10368:586:::0;;;:::o;7419:103::-;7485:7;7502:9;:18;7512:7;7502:18;;;;;;;;;;;;;;;;7495:25;;7419:103;;;:::o;8331:114::-;8379:7;8432:11;;8412:17;;8396:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8389:54;;8331:114;:::o;8451:113::-;8496:7;8551:11;;8529:19;;8513:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8506:56;;8451:113;:::o;7335:78::-;7387:7;7405:5;;;;;;;;;;;7398:12;;7335:78;:::o;7112:71::-;7151:13;7174:7;;;;;;;;;;;;;;;;;7167:14;;7112:71;:::o;5340:19::-;;;;;;;;;;;;;:::o;7528:139::-;7606:4;7613:40;7623:10;7635:9;7646:6;7613:9;:40::i;:::-;7661:4;7654:11;;7528:139;;;;:::o;9838:522::-;2981:19;2989:10;2981:7;:19::i;:::-;2973:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10024:10:::1;10009:12;:25;;;;10060:10;10045:12;:25;;;;10091:5;10081:7;:15;;;;10124:12;10107:14;:29;;;;10158:6;10147:8;:17;;;;10185:5;10175:7;:15;;;;10215:6;10201:11;:20;;;;10252:18;10268:1;10252:11;;:15;;:18;;;;:::i;:::-;10240:8;;:30;;:63;;;;;10285:18;10301:1;10285:11;;:15;;:18;;;;:::i;:::-;10274:7;;:29;;10240:63;10232:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;9838:522:::0;;;;;;;:::o;7673:127::-;7754:7;7771:11;:18;7783:5;7771:18;;;;;;;;;;;;;;;:27;7790:7;7771:27;;;;;;;;;;;;;;;;7764:34;;7673:127;;;;:::o;14304:315::-;2981:19;2989:10;2981:7;:19::i;:::-;2973:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14446:11:::1;14433:10;:24;;;;14475:53;14520:6;14475:32;14492:14;14475:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;14459:13;:69;;;;14557:54;14603:6;14557:33;14574:15;14557:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14540:14;:71;;;;14304:315:::0;;;:::o;3115:111::-;2981:19;2989:10;2981:7;:19::i;:::-;2973:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3189:3:::1;3181:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3199:25;3220:3;3199:25;;;;;;:::i;:::-;;;;;;;;3115:111:::0;:::o;16184:335::-;16294:1;16277:19;;:5;:19;;;16269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16375:1;16356:21;;:7;:21;;;16348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16457:6;16427:11;:18;16439:5;16427:18;;;;;;;;;;;;;;;:27;16446:7;16427:27;;;;;;;;;;;;;;;:36;;;;16495:7;16479:32;;16488:5;16479:32;;;16504:6;16479:32;;;;;;:::i;:::-;;;;;;;;16184:335;;;:::o;208:82::-;266:7;287:1;283;:5;;;;:::i;:::-;276:12;;208:82;;;;:::o;9144:686::-;9233:37;9244:6;9252:9;9263:6;9233:10;:37::i;:::-;9281:38;9301:6;9309:9;9281:19;:38::i;:::-;9330:41;9345:6;9353:9;9364:6;9330:14;:41::i;:::-;9383:35;9400:6;9408:9;9383:16;:35::i;:::-;9429:39;9442:6;9450:9;9461:6;9429:12;:39::i;:::-;9480:35;9489:6;9497:9;9508:6;9480:8;:35::i;:::-;9546:29;9568:6;9546:9;:17;9556:6;9546:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9526:9;:17;9536:6;9526:17;;;;;;;;;;;;;;;:49;;;;9586:22;9611:32;9625:6;9633:9;9611:13;:32::i;:::-;:78;;9683:6;9611:78;;;9646:34;9654:6;9662:9;9673:6;9646:7;:34::i;:::-;9611:78;9586:103;;9723:40;9748:14;9723:9;:20;9733:9;9723:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9700:9;:20;9710:9;9700:20;;;;;;;;;;;;;;;:63;;;;9796:9;9779:43;;9788:6;9779:43;;;9807:14;9779:43;;;;;;:::i;:::-;;;;;;;;9222:608;9144:686;;;:::o;1421:162::-;1507:7;1550:1;1545;:6;;1553:12;1537:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1579:1;1575;:5;1568:12;;1421:162;;;;;:::o;296:82::-;354:7;375:1;371;:5;;;;:::i;:::-;364:12;;296:82;;;;:::o;384:::-;442:7;463:1;459;:5;;;;:::i;:::-;452:12;;384:82;;;;:::o;8697:439::-;8819:1;8801:20;;:6;:20;;;8793:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8903:1;8882:23;;:9;:23;;;8874:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8981:1;8964:6;:19;8956:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9058:17;9068:6;9058:9;:17::i;:::-;9048:6;:27;;9040:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8697:439;;;:::o;10962:191::-;11055:11;:19;11067:6;11055:19;;;;;;;;;;;;;;;;;;;;;;;;;11054:20;:47;;;;;11079:11;:22;11091:9;11079:22;;;;;;;;;;;;;;;;;;;;;;;;;11078:23;11054:47;11051:95;;;11111:14;;;;;;;;;;;11103:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11051:95;10962:191;;:::o;11165:333::-;11269:11;:19;11281:6;11269:19;;;;;;;;;;;;;;;;;;;;;;;;;11268:20;:47;;;;;11293:11;:22;11305:9;11293:22;;;;;;;;;;;;;;;;;;;;;;;;;11292:23;11268:47;:77;;;;;11340:4;;;;;;;;;;;11319:26;;:9;:26;;;;11268:77;:107;;;;;6094:42;11349:26;;:9;:26;;;;11268:107;11265:226;;;11437:17;:15;:17::i;:::-;11400:32;11425:6;11400:9;:20;11410:9;11400:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11399:55;;11391:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11265:226;11165:333;;;:::o;11506:159::-;11603:4;;;;;;;;;;;11590:17;;:9;:17;;;:41;;;;;11612:11;:19;11624:6;11612:19;;;;;;;;;;;;;;;;;;;;;;;;;11611:20;11590:41;11587:71;;;11654:1;11633:9;;:23;;;;;;;:::i;:::-;;;;;;;;11587:71;11506:159;;:::o;11673:349::-;11784:4;;;;;;;;;;;11774:14;;:6;:14;;;11771:130;;11808:20;:18;:20::i;:::-;11798:6;:30;;:53;;;;11832:11;:19;11844:6;11832:19;;;;;;;;;;;;;;;;;;;;;;;;;11798:53;:79;;;;11855:11;:22;11867:9;11855:22;;;;;;;;;;;;;;;;;;;;;;;;;11798:79;11790:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11771:130;11929:14;:12;:14::i;:::-;11919:6;:24;;:47;;;;11947:11;:19;11959:6;11947:19;;;;;;;;;;;;;;;;;;;;;;;;;11919:47;:73;;;;11970:11;:22;11982:9;11970:22;;;;;;;;;;;;;;;;;;;;;;;;;11919:73;11911:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11673:349;;;:::o;14627:197::-;14719:41;14734:6;14742:9;14753:6;14719:14;:41::i;:::-;14716:101;;;14762:29;14777:13;;14762:14;:29::i;:::-;14813:1;14793:9;:22;;;;14716:101;14627:197;;;:::o;14832:160::-;14913:4;14938:11;:19;14950:6;14938:19;;;;;;;;;;;;;;;;;;;;;;;;;14937:20;:47;;;;;14962:11;:22;14974:9;14962:22;;;;;;;;;;;;;;;;;;;;;;;;;14961:23;14937:47;14930:54;;14832:160;;;;:::o;15313:546::-;15399:7;15455:1;15422:30;15434:6;15442:9;15422:11;:30::i;:::-;:34;15419:418;;;15468:17;15488:59;15516:30;15528:6;15536:9;15516:11;:30::i;:::-;15488:23;15499:11;;15488:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15468:79;;15585:39;15614:9;15585;:24;15603:4;15585:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15558:9;:24;15576:4;15558:24;;;;;;;;;;;;;;;:66;;;;15665:4;15640:42;;15649:6;15640:42;;;15672:9;15640:42;;;;;;:::i;:::-;;;;;;;;15714:1;15696:7;;:20;15693:104;;;15718:77;15736:4;6094:42;15758:36;15786:7;;15758:23;15769:11;;15758:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15718:9;:77::i;:::-;15693:104;15814:21;15825:9;15814:6;:10;;:21;;;;:::i;:::-;15807:28;;;;;15419:418;15845:6;15838:13;;15313:546;;;;;;:::o;120:82::-;178:7;199:1;195;:5;;;;:::i;:::-;188:12;;120:82;;;;:::o;13897:399::-;13995:4;14012:13;14038:14;;14028:6;:24;;14012:40;;14063:19;14113:13;;14085:24;14103:4;14085:9;:24::i;:::-;:41;;14063:63;;14145:8;;;;;;;;;;;14144:9;:24;;;;;14157:11;;;;;;;;;;;14144:24;:42;;;;;14172:14;;;;;;;;;;;14144:42;:54;;;;;14190:8;14144:54;:78;;;;;14203:11;:19;14215:6;14203:19;;;;;;;;;;;;;;;;;;;;;;;;;14202:20;14144:78;:99;;;;;14239:4;;;;;;;;;;;14226:17;;:9;:17;;;14144:99;:126;;;;;14260:10;;14247:9;;:23;;14144:126;:144;;;;;14274:14;14144:144;14137:151;;;;13897:399;;;;;:::o;12030:1066::-;6026:4;6015:8;;:15;;;;;;;;;;;;;;;;;;12101:20:::1;12124:66;12188:1;12125:57;12167:14;;12125:37;12149:12;;12125:19;12142:1;12125:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12124:63;;:66;;;;:::i;:::-;12101:89;;12201:32;12236:42;12265:12;12236:24;12247:12;;12236:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12201:77;;12289:14;12306:36;12317:24;12306:6;:10;;:36;;;;:::i;:::-;12289:53;;12353:22;12378:21;12353:46;;12410:24;12427:6;12410:16;:24::i;:::-;12445:20;12468:41;12494:14;12468:21;:25;;:41;;;;:::i;:::-;12445:64;;12520:19;12541:48;12558:30;12575:12;;12558;:16;;:30;;;;:::i;:::-;12541:12;:16;;:48;;;;:::i;:::-;12520:69;;12600:29;12632;12648:12;;12632:11;:15;;:29;;;;:::i;:::-;12600:61;;12707:1;12675:21;:34;12672:103;;;12711:61;12724:24;12750:21;12711:12;:61::i;:::-;12672:103;12785:20;12808:36;12831:12;;12808:18;12824:1;12808:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12785:59;;12873:1;12858:12;:16;12855:73;;;6289:42;12876:36;;:50;12913:12;12876:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12855:73;12938:24;12965:21;12938:48;;13027:1;13000:16;:29;12997:92;;;6192:42;13031:38;;:56;13070:16;13031:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12997:92;12090:1006;;;;;;;;;6046:5:::0;6035:8;;:16;;;;;;;;;;;;;;;;;;12030:1066;:::o;15000:305::-;15079:7;15102:5;:13;15108:6;15102:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15119:5;:16;15125:9;15119:16;;;;;;;;;;;;;;;;;;;;;;;;;15102:33;15099:76;;;15144:29;15168:3;15144:11;;:15;;:29;;;;:::i;:::-;15137:36;;;;15099:76;15201:4;;;;;;;;;;;15188:17;;:9;:17;;;15185:38;;15214:7;;15207:14;;;;15185:38;15246:4;;;;;;;;;;;15236:14;;:6;:14;;;15233:36;;15259:8;;15252:15;;;;15233:36;15286:11;;15279:18;;15000:305;;;;;:::o;13455:434::-;13521:21;13559:1;13545:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13521:40;;13590:4;13572;13577:1;13572:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13616:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13606:4;13611:1;13606:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13640:53;13657:4;13672:6;;;;;;;;;;;13681:11;13640:8;:53::i;:::-;13704:6;;;;;;;;;;;:57;;;13776:11;13802:1;13818:4;13845;13865:15;13704:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13510:379;13455:434;:::o;13104:343::-;13185:53;13202:4;13217:6;;;;;;;;;;;13226:11;13185:8;:53::i;:::-;13249:6;;;;;;;;;;;:22;;;13279:9;13312:4;13332:11;13358:1;13374;6385:42;13423:15;13249:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13104: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:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:619::-;6000:6;6008;6016;6065:2;6053:9;6044:7;6040:23;6036:32;6033:119;;;6071:79;;:::i;:::-;6033:119;6191:1;6216:53;6261:7;6252:6;6241:9;6237:22;6216:53;:::i;:::-;6206:63;;6162:117;6318:2;6344:53;6389:7;6380:6;6369:9;6365:22;6344:53;:::i;:::-;6334:63;;6289:118;6446:2;6472:53;6517:7;6508:6;6497:9;6493:22;6472:53;:::i;:::-;6462:63;;6417:118;5923:619;;;;;:::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:180::-;9403:77;9400:1;9393:88;9500:4;9497:1;9490:15;9524:4;9521:1;9514:15;9541:348;9581:7;9604:20;9622:1;9604:20;:::i;:::-;9599:25;;9638:20;9656:1;9638:20;:::i;:::-;9633:25;;9826:1;9758:66;9754:74;9751:1;9748:81;9743:1;9736:9;9729:17;9725:105;9722:131;;;9833:18;;:::i;:::-;9722:131;9881:1;9878;9874:9;9863:20;;9541:348;;;;:::o;9895:180::-;9943:77;9940:1;9933:88;10040:4;10037:1;10030:15;10064:4;10061:1;10054:15;10081:185;10121:1;10138:20;10156:1;10138:20;:::i;:::-;10133:25;;10172:20;10190:1;10172:20;:::i;:::-;10167:25;;10211:1;10201:35;;10216:18;;:::i;:::-;10201:35;10258:1;10255;10251:9;10246:14;;10081:185;;;;:::o;10272:156::-;10412:8;10408:1;10400:6;10396:14;10389:32;10272:156;:::o;10434:365::-;10576:3;10597:66;10661:1;10656:3;10597:66;:::i;:::-;10590:73;;10672:93;10761:3;10672:93;:::i;:::-;10790:2;10785:3;10781:12;10774:19;;10434:365;;;:::o;10805:419::-;10971:4;11009:2;10998:9;10994:18;10986:26;;11058:9;11052:4;11048:20;11044:1;11033:9;11029:17;11022:47;11086:131;11212:4;11086:131;:::i;:::-;11078:139;;10805:419;;;:::o;11230:233::-;11370:34;11366:1;11358:6;11354:14;11347:58;11439:16;11434:2;11426:6;11422:15;11415:41;11230:233;:::o;11469:366::-;11611:3;11632:67;11696:2;11691:3;11632:67;:::i;:::-;11625:74;;11708:93;11797:3;11708:93;:::i;:::-;11826:2;11821:3;11817:12;11810:19;;11469:366;;;:::o;11841:419::-;12007:4;12045:2;12034:9;12030:18;12022:26;;12094:9;12088:4;12084:20;12080:1;12069:9;12065:17;12058:47;12122:131;12248:4;12122:131;:::i;:::-;12114:139;;11841:419;;;:::o;12266:231::-;12406:34;12402:1;12394:6;12390:14;12383:58;12475:14;12470:2;12462:6;12458:15;12451:39;12266:231;:::o;12503:366::-;12645:3;12666:67;12730:2;12725:3;12666:67;:::i;:::-;12659:74;;12742:93;12831:3;12742:93;:::i;:::-;12860:2;12855:3;12851:12;12844:19;;12503:366;;;:::o;12875:419::-;13041:4;13079:2;13068:9;13064:18;13056:26;;13128:9;13122:4;13118:20;13114:1;13103:9;13099:17;13092:47;13156:131;13282:4;13156:131;:::i;:::-;13148:139;;12875:419;;;:::o;13300:60::-;13328:3;13349:5;13342:12;;13300:60;;;:::o;13366:142::-;13416:9;13449:53;13467:34;13476:24;13494:5;13476:24;:::i;:::-;13467:34;:::i;:::-;13449:53;:::i;:::-;13436:66;;13366:142;;;:::o;13514:126::-;13564:9;13597:37;13628:5;13597:37;:::i;:::-;13584:50;;13514:126;;;:::o;13646:134::-;13704:9;13737:37;13768:5;13737:37;:::i;:::-;13724:50;;13646:134;;;:::o;13786:147::-;13881:45;13920:5;13881:45;:::i;:::-;13876:3;13869:58;13786:147;;:::o;13939:238::-;14040:4;14078:2;14067:9;14063:18;14055:26;;14091:79;14167:1;14156:9;14152:17;14143:6;14091:79;:::i;:::-;13939:238;;;;:::o;14183:223::-;14323:34;14319:1;14311:6;14307:14;14300:58;14392:6;14387:2;14379:6;14375:15;14368:31;14183:223;:::o;14412:366::-;14554:3;14575:67;14639:2;14634:3;14575:67;:::i;:::-;14568:74;;14651:93;14740:3;14651:93;:::i;:::-;14769:2;14764:3;14760:12;14753:19;;14412:366;;;:::o;14784:419::-;14950:4;14988:2;14977:9;14973:18;14965:26;;15037:9;15031:4;15027:20;15023:1;15012:9;15008:17;15001:47;15065:131;15191:4;15065:131;:::i;:::-;15057:139;;14784:419;;;:::o;15209:221::-;15349:34;15345:1;15337:6;15333:14;15326:58;15418:4;15413:2;15405:6;15401:15;15394:29;15209:221;:::o;15436:366::-;15578:3;15599:67;15663:2;15658:3;15599:67;:::i;:::-;15592:74;;15675:93;15764:3;15675:93;:::i;:::-;15793:2;15788:3;15784:12;15777:19;;15436:366;;;:::o;15808:419::-;15974:4;16012:2;16001:9;15997:18;15989:26;;16061:9;16055:4;16051:20;16047:1;16036:9;16032:17;16025:47;16089:131;16215:4;16089:131;:::i;:::-;16081:139;;15808:419;;;:::o;16233:194::-;16273:4;16293:20;16311:1;16293:20;:::i;:::-;16288:25;;16327:20;16345:1;16327:20;:::i;:::-;16322:25;;16371:1;16368;16364:9;16356:17;;16395:1;16389:4;16386:11;16383:37;;;16400:18;;:::i;:::-;16383:37;16233:194;;;;:::o;16433:224::-;16573:34;16569:1;16561:6;16557:14;16550:58;16642:7;16637:2;16629:6;16625:15;16618:32;16433:224;:::o;16663:366::-;16805:3;16826:67;16890:2;16885:3;16826:67;:::i;:::-;16819:74;;16902:93;16991:3;16902:93;:::i;:::-;17020:2;17015:3;17011:12;17004:19;;16663:366;;;:::o;17035:419::-;17201:4;17239:2;17228:9;17224:18;17216:26;;17288:9;17282:4;17278:20;17274:1;17263:9;17259:17;17252:47;17316:131;17442:4;17316:131;:::i;:::-;17308:139;;17035:419;;;:::o;17460:222::-;17600:34;17596:1;17588:6;17584:14;17577:58;17669:5;17664:2;17656:6;17652:15;17645:30;17460:222;:::o;17688:366::-;17830:3;17851:67;17915:2;17910:3;17851:67;:::i;:::-;17844:74;;17927:93;18016:3;17927:93;:::i;:::-;18045:2;18040:3;18036:12;18029:19;;17688:366;;;:::o;18060:419::-;18226:4;18264:2;18253:9;18249:18;18241:26;;18313:9;18307:4;18303:20;18299:1;18288:9;18284:17;18277:47;18341:131;18467:4;18341:131;:::i;:::-;18333:139;;18060:419;;;:::o;18485:228::-;18625:34;18621:1;18613:6;18609:14;18602:58;18694:11;18689:2;18681:6;18677:15;18670:36;18485:228;:::o;18719:366::-;18861:3;18882:67;18946:2;18941:3;18882:67;:::i;:::-;18875:74;;18958:93;19047:3;18958:93;:::i;:::-;19076:2;19071:3;19067:12;19060:19;;18719:366;;;:::o;19091:419::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:131;19498:4;19372:131;:::i;:::-;19364:139;;19091:419;;;:::o;19516:236::-;19656:34;19652:1;19644:6;19640:14;19633:58;19725:19;19720:2;19712:6;19708:15;19701:44;19516:236;:::o;19758:366::-;19900:3;19921:67;19985:2;19980:3;19921:67;:::i;:::-;19914:74;;19997:93;20086:3;19997:93;:::i;:::-;20115:2;20110:3;20106:12;20099:19;;19758:366;;;:::o;20130:419::-;20296:4;20334:2;20323:9;20319:18;20311:26;;20383:9;20377:4;20373:20;20369:1;20358:9;20354:17;20347:47;20411:131;20537:4;20411:131;:::i;:::-;20403:139;;20130:419;;;:::o;20555:164::-;20695:16;20691:1;20683:6;20679:14;20672:40;20555:164;:::o;20725:366::-;20867:3;20888:67;20952:2;20947:3;20888:67;:::i;:::-;20881:74;;20964:93;21053:3;20964:93;:::i;:::-;21082:2;21077:3;21073:12;21066:19;;20725:366;;;:::o;21097:419::-;21263:4;21301:2;21290:9;21286:18;21278:26;;21350:9;21344:4;21340:20;21336:1;21325:9;21321:17;21314:47;21378:131;21504:4;21378:131;:::i;:::-;21370:139;;21097:419;;;:::o;21522:180::-;21662:32;21658:1;21650:6;21646:14;21639:56;21522:180;:::o;21708:366::-;21850:3;21871:67;21935:2;21930:3;21871:67;:::i;:::-;21864:74;;21947:93;22036:3;21947:93;:::i;:::-;22065:2;22060:3;22056:12;22049:19;;21708:366;;;:::o;22080:419::-;22246:4;22284:2;22273:9;22269:18;22261:26;;22333:9;22327:4;22323:20;22319:1;22308:9;22304:17;22297:47;22361:131;22487:4;22361:131;:::i;:::-;22353:139;;22080:419;;;:::o;22505:191::-;22545:3;22564:20;22582:1;22564:20;:::i;:::-;22559:25;;22598:20;22616:1;22598:20;:::i;:::-;22593:25;;22641:1;22638;22634:9;22627:16;;22662:3;22659:1;22656:10;22653:36;;;22669:18;;:::i;:::-;22653:36;22505:191;;;;:::o;22702:167::-;22842:19;22838:1;22830:6;22826:14;22819:43;22702:167;:::o;22875:366::-;23017:3;23038:67;23102:2;23097:3;23038:67;:::i;:::-;23031:74;;23114:93;23203:3;23114:93;:::i;:::-;23232:2;23227:3;23223:12;23216:19;;22875:366;;;:::o;23247:419::-;23413:4;23451:2;23440:9;23436:18;23428:26;;23500:9;23494:4;23490:20;23486:1;23475:9;23471:17;23464:47;23528:131;23654:4;23528:131;:::i;:::-;23520:139;;23247:419;;;:::o;23672:180::-;23720:77;23717:1;23710:88;23817:4;23814:1;23807:15;23841:4;23838:1;23831:15;23858:180;23906:77;23903:1;23896:88;24003:4;24000:1;23993:15;24027:4;24024:1;24017:15;24044:143;24101:5;24132:6;24126:13;24117:22;;24148:33;24175:5;24148:33;:::i;:::-;24044:143;;;;:::o;24193:351::-;24263:6;24312:2;24300:9;24291:7;24287:23;24283:32;24280:119;;;24318:79;;:::i;:::-;24280:119;24438:1;24463:64;24519:7;24510:6;24499:9;24495:22;24463:64;:::i;:::-;24453:74;;24409:128;24193:351;;;;:::o;24550:85::-;24595:7;24624:5;24613:16;;24550:85;;;:::o;24641:158::-;24699:9;24732:61;24750:42;24759:32;24785:5;24759:32;:::i;:::-;24750:42;:::i;:::-;24732:61;:::i;:::-;24719:74;;24641:158;;;:::o;24805:147::-;24900:45;24939:5;24900:45;:::i;:::-;24895:3;24888:58;24805:147;;:::o;24958:114::-;25025:6;25059:5;25053:12;25043:22;;24958:114;;;:::o;25078:184::-;25177:11;25211:6;25206:3;25199:19;25251:4;25246:3;25242:14;25227:29;;25078:184;;;;:::o;25268:132::-;25335:4;25358:3;25350:11;;25388:4;25383:3;25379:14;25371:22;;25268:132;;;:::o;25406:108::-;25483:24;25501:5;25483:24;:::i;:::-;25478:3;25471:37;25406:108;;:::o;25520:179::-;25589:10;25610:46;25652:3;25644:6;25610:46;:::i;:::-;25688:4;25683:3;25679:14;25665:28;;25520:179;;;;:::o;25705:113::-;25775:4;25807;25802:3;25798:14;25790:22;;25705:113;;;:::o;25854:732::-;25973:3;26002:54;26050:5;26002:54;:::i;:::-;26072:86;26151:6;26146:3;26072:86;:::i;:::-;26065:93;;26182:56;26232:5;26182:56;:::i;:::-;26261:7;26292:1;26277:284;26302:6;26299:1;26296:13;26277:284;;;26378:6;26372:13;26405:63;26464:3;26449:13;26405:63;:::i;:::-;26398:70;;26491:60;26544:6;26491:60;:::i;:::-;26481:70;;26337:224;26324:1;26321;26317:9;26312:14;;26277:284;;;26281:14;26577:3;26570:10;;25978:608;;;25854:732;;;;:::o;26592:831::-;26855:4;26893:3;26882:9;26878:19;26870:27;;26907:71;26975:1;26964:9;26960:17;26951:6;26907:71;:::i;:::-;26988:80;27064:2;27053:9;27049:18;27040:6;26988:80;:::i;:::-;27115:9;27109:4;27105:20;27100:2;27089:9;27085:18;27078:48;27143:108;27246:4;27237:6;27143:108;:::i;:::-;27135:116;;27261:72;27329:2;27318:9;27314:18;27305:6;27261:72;:::i;:::-;27343:73;27411:3;27400:9;27396:19;27387:6;27343:73;:::i;:::-;26592:831;;;;;;;;:::o;27429:807::-;27678:4;27716:3;27705:9;27701:19;27693:27;;27730:71;27798:1;27787:9;27783:17;27774:6;27730:71;:::i;:::-;27811:72;27879:2;27868:9;27864:18;27855:6;27811:72;:::i;:::-;27893:80;27969:2;27958:9;27954:18;27945:6;27893:80;:::i;:::-;27983;28059:2;28048:9;28044:18;28035:6;27983:80;:::i;:::-;28073:73;28141:3;28130:9;28126:19;28117:6;28073:73;:::i;:::-;28156;28224:3;28213:9;28209:19;28200:6;28156:73;:::i;:::-;27429:807;;;;;;;;;:::o;28242:143::-;28299:5;28330:6;28324:13;28315:22;;28346:33;28373:5;28346:33;:::i;:::-;28242:143;;;;:::o;28391:663::-;28479:6;28487;28495;28544:2;28532:9;28523:7;28519:23;28515:32;28512:119;;;28550:79;;:::i;:::-;28512:119;28670:1;28695:64;28751:7;28742:6;28731:9;28727:22;28695:64;:::i;:::-;28685:74;;28641:128;28808:2;28834:64;28890:7;28881:6;28870:9;28866:22;28834:64;:::i;:::-;28824:74;;28779:129;28947:2;28973:64;29029:7;29020:6;29009:9;29005:22;28973:64;:::i;:::-;28963:74;;28918:129;28391:663;;;;;:::o

Swarm Source

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