ETH Price: $2,519.23 (+3.20%)
Gas: 0.74 Gwei

Token

I'm down so much, I smashed my TV in front... (FKCRYPTO)
 

Overview

Max Total Supply

1,000,000 FKCRYPTO

Holders

93

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.833672262420762173 FKCRYPTO

Value
$0.00
0x9b954886b1047041ed8f4b1a5bc3694fdec2949d
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:
FuckCrypto

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

    function renounceOwnership() public onlyOwner {owner = 0x000000000000000000000000000000000000dEaD; emit OwnershipTransferred(0x000000000000000000000000000000000000dEaD);}

    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 FuckCrypto is IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = unicode"I'm down so much, I smashed my TV in front of 22 guests at my sons birthday party because of ETH price. My wife just took our crying kids and said they’re all spending the week at her mom’s house.";
    string private constant _symbol = "FKCRYPTO";

    uint8 private constant _decimals = 18;

    uint256 private _totalSupply = 1000000 * (10 ** _decimals);

    uint256 private _maxTxAmountPercent = 2; 
    uint256 private _maxTransferPercent = 2;
    uint256 private _maxWalletPercent = 2;


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isExcludedFromFees;

    IRouter router;
    address public pair;

    bool private tradingOpen = true;

    uint256 private liqFee = 0;
    uint256 private devFee = 20;
    uint256 private totalFee = 25;
    uint256 private sellFee = 50;
    uint256 private transferFee = 100;
    uint256 private denominator = 100;


    bool private contractSwapEnabled = true;

    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 3;

    uint256 private swapThreshold = ( _totalSupply * 2000 ) / 100000; //2%
    uint256 private minSwapTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public devWallet = 0x945154bc6A075240534f54a34b03BB657e07C0Df; 

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[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 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 excludeFromFees(address _address, bool _enabled) external onlyOwner {
        isExcludedFromFees[_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);
        checkIfTradingIsAllowed(sender, recipient);
        checkMaxWalletLimit(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 updateFees(uint256 _liq, uint256 _dev, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liqFee = _liq;
        devFee = _dev;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
    
    }

    function updateLimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
       
       
    }
 
    function updateDevWallet(address newDevWallet) external onlyOwner{
        	devWallet = newDevWallet;

    }


   

    function removeLimits() external onlyOwner {
        _maxTxAmountPercent = totalSupply();
        _maxTransferPercent = totalSupply();
        _maxWalletPercent = totalSupply();
    }

    function commenceTrade() external onlyOwner {
        tradingOpen = true;
        
        }


    function checkIfTradingIsAllowed(address sender, address recipient) internal view {
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[recipient]){require(tradingOpen, "tradingAllowed");}
    }
    
    function checkMaxWalletLimit(address sender, address recipient, uint256 amount) internal view {
        if(!isExcludedFromFees[sender] && !isExcludedFromFees[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 && !isExcludedFromFees[sender]){swapTimes += uint256(1);}
    }

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

    function swapAndLiquify(uint256 tokens) private lockTheSwap {

        uint256 _denominator = (liqFee.add(1).add(devFee)).mul(2);

        uint256 tokensToAddLiquidityWith = tokens.mul(liqFee).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(liqFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liqFee);

        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 remainingBalance = address(this).balance;

        if(remainingBalance > uint256(0)){payable(devWallet).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            devWallet,
            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 >= minSwapTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && contractSwapEnabled && tradingOpen && aboveMin && !isExcludedFromFees[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function updateSwapTrheshold(uint256 _newSwapTreshold) external onlyOwner{
        swapThreshold = _totalSupply.mul(_newSwapTreshold).div(uint256(100000)); 
    }


    function updateMinSwapTokensAmount(uint256 _newMinSwapTokensAtAmount) external onlyOwner{
        minSwapTokenAmount = _totalSupply.mul(_newMinSwapTokensAtAmount).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 !isExcludedFromFees[sender] && !isExcludedFromFees[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        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);
        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":"commenceTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","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":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liq","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"updateFees","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":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinSwapTokensAtAmount","type":"uint256"}],"name":"updateMinSwapTokensAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapTreshold","type":"uint256"}],"name":"updateSwapTrheshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a62000014919062000682565b620f4240620000249190620006d3565b60015560028055600260035560026004556001600960146101000a81548160ff0219169083151502179055506000600a556014600b556019600c556032600d556064600e556064600f556001601060006101000a81548160ff0219169083151502179055506003601355620186a06107d0600154620000a49190620006d3565b620000b0919062000763565b601455620186a0600a600154620000c89190620006d3565b620000d4919062000763565b60155573945154bc6a075240534f54a34b03bb657e07c0df601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000209919062000805565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000271573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000297919062000805565b6040518363ffffffff1660e01b8152600401620002b692919062000848565b6020604051808303816000875af1158015620002d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fc919062000805565b905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620004d8919062000886565b60405180910390a35050620008a3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000576578086048111156200054e576200054d620004e8565b5b60018516156200055e5780820291505b80810290506200056e8562000517565b94506200052e565b94509492505050565b60008262000591576001905062000664565b81620005a1576000905062000664565b8160018114620005ba5760028114620005c557620005fb565b600191505062000664565b60ff841115620005da57620005d9620004e8565b5b8360020a915084821115620005f457620005f3620004e8565b5b5062000664565b5060208310610133831016604e8410600b8410161715620006355782820a9050838111156200062f576200062e620004e8565b5b62000664565b62000644848484600162000524565b925090508184048111156200065e576200065d620004e8565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200068f826200066b565b91506200069c8362000675565b9250620006cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200057f565b905092915050565b6000620006e0826200066b565b9150620006ed836200066b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007295762000728620004e8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000770826200066b565b91506200077d836200066b565b92508262000790576200078f62000734565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007cd82620007a0565b9050919050565b620007df81620007c0565b8114620007eb57600080fd5b50565b600081519050620007ff81620007d4565b92915050565b6000602082840312156200081e576200081d6200079b565b5b60006200082e84828501620007ee565b91505092915050565b6200084281620007c0565b82525050565b60006040820190506200085f600083018562000837565b6200086e602083018462000837565b9392505050565b62000880816200066b565b82525050565b60006020820190506200089d600083018462000875565b92915050565b61344880620008b36000396000f3fe6080604052600436106101a05760003560e01c806370a08231116100ec5780638ea5220f1161008a578063a9059cbb11610064578063a9059cbb1461059d578063c0246668146105da578063dd62ed3e14610603578063f2fde38b14610640576101a7565b80638ea5220f1461051c57806395d89b4114610547578063a8aa1b3114610572576101a7565b806378109e54116100c657806378109e54146104725780637d1db4a51461049d57806384a63000146104c8578063893d20e8146104f1576101a7565b806370a0823114610407578063715018a614610444578063751039fc1461045b576101a7565b80632acc38071161015957806336a0f8a51161013357806336a0f8a51461034f5780633b30322114610378578063457ffca2146103a15780634fbee193146103ca576101a7565b80632acc3807146102d05780632f54bf6e146102e7578063313ce56714610324576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd146102145780631816467f1461023f5780631f976b7e1461026857806323b872dd14610293576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce9190612531565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906125ec565b61068a565b60405161020b9190612647565b60405180910390f35b34801561022057600080fd5b506102296106a1565b6040516102369190612671565b60405180910390f35b34801561024b57600080fd5b506102666004803603810190610261919061268c565b6106e2565b005b34801561027457600080fd5b5061027d61076e565b60405161028a9190612671565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906126b9565b610797565b6040516102c79190612647565b60405180910390f35b3480156102dc57600080fd5b506102e5610862565b005b3480156102f357600080fd5b5061030e6004803603810190610309919061268c565b6108c7565b60405161031b9190612647565b60405180910390f35b34801561033057600080fd5b50610339610920565b6040516103469190612728565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190612743565b610929565b005b34801561038457600080fd5b5061039f600480360381019061039a9190612796565b61098b565b005b3480156103ad57600080fd5b506103c860048036038101906103c391906127c3565b610a06565b005b3480156103d657600080fd5b506103f160048036038101906103ec919061268c565b610a78565b6040516103fe9190612647565b60405180910390f35b34801561041357600080fd5b5061042e6004803603810190610429919061268c565b610a98565b60405161043b9190612671565b60405180910390f35b34801561045057600080fd5b50610459610ae1565b005b34801561046757600080fd5b50610470610ba6565b005b34801561047e57600080fd5b50610487610c1a565b6040516104949190612671565b60405180910390f35b3480156104a957600080fd5b506104b2610c43565b6040516104bf9190612671565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612796565b610c6c565b005b3480156104fd57600080fd5b50610506610ce7565b604051610513919061284d565b60405180910390f35b34801561052857600080fd5b50610531610d10565b60405161053e919061284d565b60405180910390f35b34801561055357600080fd5b5061055c610d36565b6040516105699190612531565b60405180910390f35b34801561057e57600080fd5b50610587610d73565b604051610594919061284d565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf91906125ec565b610d99565b6040516105d19190612647565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612894565b610db0565b005b34801561060f57600080fd5b5061062a600480360381019061062591906128d4565b610e53565b6040516106379190612671565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190612952565b610eda565b005b606060405180610100016040528060c8815260200161334b60c89139905090565b6000610697338484610f9c565b6001905092915050565b60006106dd6106b06000610a98565b6106cf6106be61dead610a98565b60015461116590919063ffffffff16565b61116590919063ffffffff16565b905090565b6106eb336108c7565b61072a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610721906129cb565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600f5460035461077e6106a1565b6107889190612a1a565b6107929190612aa3565b905090565b60006107a484848461117b565b61085784336108528560405180606001604052806028815260200161332360289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113749092919063ffffffff16565b610f9c565b600190509392505050565b61086b336108c7565b6108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a1906129cb565b60405180910390fd5b6001600960146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b610932336108c7565b610971576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610968906129cb565b60405180910390fd5b826002819055508160038190555080600481905550505050565b610994336108c7565b6109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca906129cb565b60405180910390fd5b6109fd620186a06109ef836001546113c990919063ffffffff16565b6113df90919063ffffffff16565b60158190555050565b610a0f336108c7565b610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a45906129cb565b60405180910390fd5b84600a8190555083600b8190555082600c8190555081600d8190555080600e819055505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610aea336108c7565b610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b20906129cb565b60405180910390fd5b61dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616361dead604051610b9c919061284d565b60405180910390a1565b610baf336108c7565b610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906129cb565b60405180910390fd5b610bf66106a1565b600281905550610c046106a1565b600381905550610c126106a1565b600481905550565b6000600f54600454610c2a6106a1565b610c349190612a1a565b610c3e9190612aa3565b905090565b6000600f54600254610c536106a1565b610c5d9190612a1a565b610c679190612aa3565b905090565b610c75336108c7565b610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab906129cb565b60405180910390fd5b610cde620186a0610cd0836001546113c990919063ffffffff16565b6113df90919063ffffffff16565b60148190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600881526020017f464b43525950544f000000000000000000000000000000000000000000000000815250905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610da633848461117b565b6001905092915050565b610db9336108c7565b610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906129cb565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee3336108c7565b610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906129cb565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610f919190612b33565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612bc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190612c52565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111589190612671565b60405180910390a3505050565b600081836111739190612c72565b905092915050565b6111868383836113f5565b6111908383611566565b61119b838383611663565b6111a58383611841565b6111b083838361190c565b6111bb838383611b4b565b61120d81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461116590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061125c8484611b74565b6112665781611272565b611271848484611c22565b5b90506112c681600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113669190612671565b60405180910390a350505050565b60008383111582906113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b39190612531565b60405180910390fd5b5082840390509392505050565b600081836113d79190612a1a565b905092915050565b600081836113ed9190612aa3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90612daa565b60405180910390fd5b60008111611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d90612e3c565b60405180910390fd5b61151f83610a98565b811115611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612ece565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561160a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561165f57600960149054906101000a900460ff1661165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165590612f3a565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117075750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117615750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561179b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561183c576117a8610c1a565b6117fa82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8990919063ffffffff16565b111561183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290612fa6565b60405180910390fd5b5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118e85750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611908576001601160008282546119009190612fc6565b925050819055505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a545761196961076e565b811115806119c05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a145750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613046565b60405180910390fd5b5b611a5c610c43565b81111580611ab35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b075750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90613046565b60405180910390fd5b505050565b611b56838383611d9f565b15611b6f57611b66601454611ed9565b60006011819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c1a5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611c2f8585612092565b1115611d7e576000611c67611c448686612092565b611c59600f54866113df90919063ffffffff16565b6113c990919063ffffffff16565b9050611cbb81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d5b9190612671565b60405180910390a3611d76818461116590919063ffffffff16565b915050611d82565b8190505b9392505050565b60008183611d979190612fc6565b905092915050565b60008060155483101590506000601454611db830610a98565b10159050601260009054906101000a900460ff16158015611de55750601060009054906101000a900460ff165b8015611dfd5750600960149054906101000a900460ff165b8015611e065750815b8015611e5c5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eb55750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611ec5575060135460115410155b8015611ece5750805b925050509392505050565b6001601260006101000a81548160ff0219169083151502179055506000611f336002611f25600b54611f176001600a54611d8990919063ffffffff16565b611d8990919063ffffffff16565b6113c990919063ffffffff16565b90506000611f5e82611f50600a54866113c990919063ffffffff16565b6113df90919063ffffffff16565b90506000611f75828561116590919063ffffffff16565b90506000479050611f858261215e565b6000611f9a824761116590919063ffffffff16565b90506000611fc5611fb6600a548861116590919063ffffffff16565b836113df90919063ffffffff16565b90506000611fde600a54836113c990919063ffffffff16565b90506000811115611ff457611ff386826123a1565b5b6000479050600081111561206c57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561206a573d6000803e3d6000fd5b505b50505050505050506000601260006101000a81548160ff02191690831515021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f357600d549050612158565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215257600c549050612158565b600e5490505b92915050565b6000600267ffffffffffffffff81111561217b5761217a613066565b5b6040519080825280602002602001820160405280156121a95781602001602082028036833780820191505090505b50905030816000815181106121c1576121c0613095565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228c91906130d9565b816001815181106122a05761229f613095565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230730600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f9c565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236b9594939291906131ff565b600060405180830381600087803b15801561238557600080fd5b505af1158015612399573d6000803e3d6000fd5b505050505050565b6123ce30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f9c565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161245796959493929190613259565b60606040518083038185885af1158015612475573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249a91906132cf565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124db5780820151818401526020810190506124c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612503826124a1565b61250d81856124ac565b935061251d8185602086016124bd565b612526816124e7565b840191505092915050565b6000602082019050818103600083015261254b81846124f8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061258382612558565b9050919050565b61259381612578565b811461259e57600080fd5b50565b6000813590506125b08161258a565b92915050565b6000819050919050565b6125c9816125b6565b81146125d457600080fd5b50565b6000813590506125e6816125c0565b92915050565b6000806040838503121561260357612602612553565b5b6000612611858286016125a1565b9250506020612622858286016125d7565b9150509250929050565b60008115159050919050565b6126418161262c565b82525050565b600060208201905061265c6000830184612638565b92915050565b61266b816125b6565b82525050565b60006020820190506126866000830184612662565b92915050565b6000602082840312156126a2576126a1612553565b5b60006126b0848285016125a1565b91505092915050565b6000806000606084860312156126d2576126d1612553565b5b60006126e0868287016125a1565b93505060206126f1868287016125a1565b9250506040612702868287016125d7565b9150509250925092565b600060ff82169050919050565b6127228161270c565b82525050565b600060208201905061273d6000830184612719565b92915050565b60008060006060848603121561275c5761275b612553565b5b600061276a868287016125d7565b935050602061277b868287016125d7565b925050604061278c868287016125d7565b9150509250925092565b6000602082840312156127ac576127ab612553565b5b60006127ba848285016125d7565b91505092915050565b600080600080600060a086880312156127df576127de612553565b5b60006127ed888289016125d7565b95505060206127fe888289016125d7565b945050604061280f888289016125d7565b9350506060612820888289016125d7565b9250506080612831888289016125d7565b9150509295509295909350565b61284781612578565b82525050565b6000602082019050612862600083018461283e565b92915050565b6128718161262c565b811461287c57600080fd5b50565b60008135905061288e81612868565b92915050565b600080604083850312156128ab576128aa612553565b5b60006128b9858286016125a1565b92505060206128ca8582860161287f565b9150509250929050565b600080604083850312156128eb576128ea612553565b5b60006128f9858286016125a1565b925050602061290a858286016125a1565b9150509250929050565b600061291f82612558565b9050919050565b61292f81612914565b811461293a57600080fd5b50565b60008135905061294c81612926565b92915050565b60006020828403121561296857612967612553565b5b60006129768482850161293d565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129b56006836124ac565b91506129c08261297f565b602082019050919050565b600060208201905081810360008301526129e4816129a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a25826125b6565b9150612a30836125b6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a6957612a686129eb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aae826125b6565b9150612ab9836125b6565b925082612ac957612ac8612a74565b5b828204905092915050565b6000819050919050565b6000612af9612af4612aef84612558565b612ad4565b612558565b9050919050565b6000612b0b82612ade565b9050919050565b6000612b1d82612b00565b9050919050565b612b2d81612b12565b82525050565b6000602082019050612b486000830184612b24565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612baa6024836124ac565b9150612bb582612b4e565b604082019050919050565b60006020820190508181036000830152612bd981612b9d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c3c6022836124ac565b9150612c4782612be0565b604082019050919050565b60006020820190508181036000830152612c6b81612c2f565b9050919050565b6000612c7d826125b6565b9150612c88836125b6565b9250828203905081811115612ca057612c9f6129eb565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d026025836124ac565b9150612d0d82612ca6565b604082019050919050565b60006020820190508181036000830152612d3181612cf5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d946023836124ac565b9150612d9f82612d38565b604082019050919050565b60006020820190508181036000830152612dc381612d87565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e266029836124ac565b9150612e3182612dca565b604082019050919050565b60006020820190508181036000830152612e5581612e19565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612eb86031836124ac565b9150612ec382612e5c565b604082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f24600e836124ac565b9150612f2f82612eee565b602082019050919050565b60006020820190508181036000830152612f5381612f17565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612f90601e836124ac565b9150612f9b82612f5a565b602082019050919050565b60006020820190508181036000830152612fbf81612f83565b9050919050565b6000612fd1826125b6565b9150612fdc836125b6565b9250828201905080821115612ff457612ff36129eb565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006130306011836124ac565b915061303b82612ffa565b602082019050919050565b6000602082019050818103600083015261305f81613023565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130d38161258a565b92915050565b6000602082840312156130ef576130ee612553565b5b60006130fd848285016130c4565b91505092915050565b6000819050919050565b600061312b61312661312184613106565b612ad4565b6125b6565b9050919050565b61313b81613110565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61317681612578565b82525050565b6000613188838361316d565b60208301905092915050565b6000602082019050919050565b60006131ac82613141565b6131b6818561314c565b93506131c18361315d565b8060005b838110156131f25781516131d9888261317c565b97506131e483613194565b9250506001810190506131c5565b5085935050505092915050565b600060a0820190506132146000830188612662565b6132216020830187613132565b818103604083015261323381866131a1565b9050613242606083018561283e565b61324f6080830184612662565b9695505050505050565b600060c08201905061326e600083018961283e565b61327b6020830188612662565b6132886040830187613132565b6132956060830186613132565b6132a2608083018561283e565b6132af60a0830184612662565b979650505050505050565b6000815190506132c9816125c0565b92915050565b6000806000606084860312156132e8576132e7612553565b5b60006132f6868287016132ba565b9350506020613307868287016132ba565b9250506040613318868287016132ba565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636549276d20646f776e20736f206d7563682c204920736d6173686564206d7920545620696e2066726f6e74206f6620323220677565737473206174206d7920736f6e732062697274686461792070617274792062656361757365206f66204554482070726963652e204d792077696665206a75737420746f6f6b206f757220637279696e67206b69647320616e6420736169642074686579e28099726520616c6c207370656e64696e6720746865207765656b20617420686572206d6f6de280997320686f7573652ea2646970667358221220014abe3ff3a25ab1ffa664f1285721c871f73aae5b95ab34da8817f8c3ae79ac64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c806370a08231116100ec5780638ea5220f1161008a578063a9059cbb11610064578063a9059cbb1461059d578063c0246668146105da578063dd62ed3e14610603578063f2fde38b14610640576101a7565b80638ea5220f1461051c57806395d89b4114610547578063a8aa1b3114610572576101a7565b806378109e54116100c657806378109e54146104725780637d1db4a51461049d57806384a63000146104c8578063893d20e8146104f1576101a7565b806370a0823114610407578063715018a614610444578063751039fc1461045b576101a7565b80632acc38071161015957806336a0f8a51161013357806336a0f8a51461034f5780633b30322114610378578063457ffca2146103a15780634fbee193146103ca576101a7565b80632acc3807146102d05780632f54bf6e146102e7578063313ce56714610324576101a7565b806306fdde03146101ac578063095ea7b3146101d757806318160ddd146102145780631816467f1461023f5780631f976b7e1461026857806323b872dd14610293576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce9190612531565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f991906125ec565b61068a565b60405161020b9190612647565b60405180910390f35b34801561022057600080fd5b506102296106a1565b6040516102369190612671565b60405180910390f35b34801561024b57600080fd5b506102666004803603810190610261919061268c565b6106e2565b005b34801561027457600080fd5b5061027d61076e565b60405161028a9190612671565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906126b9565b610797565b6040516102c79190612647565b60405180910390f35b3480156102dc57600080fd5b506102e5610862565b005b3480156102f357600080fd5b5061030e6004803603810190610309919061268c565b6108c7565b60405161031b9190612647565b60405180910390f35b34801561033057600080fd5b50610339610920565b6040516103469190612728565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190612743565b610929565b005b34801561038457600080fd5b5061039f600480360381019061039a9190612796565b61098b565b005b3480156103ad57600080fd5b506103c860048036038101906103c391906127c3565b610a06565b005b3480156103d657600080fd5b506103f160048036038101906103ec919061268c565b610a78565b6040516103fe9190612647565b60405180910390f35b34801561041357600080fd5b5061042e6004803603810190610429919061268c565b610a98565b60405161043b9190612671565b60405180910390f35b34801561045057600080fd5b50610459610ae1565b005b34801561046757600080fd5b50610470610ba6565b005b34801561047e57600080fd5b50610487610c1a565b6040516104949190612671565b60405180910390f35b3480156104a957600080fd5b506104b2610c43565b6040516104bf9190612671565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612796565b610c6c565b005b3480156104fd57600080fd5b50610506610ce7565b604051610513919061284d565b60405180910390f35b34801561052857600080fd5b50610531610d10565b60405161053e919061284d565b60405180910390f35b34801561055357600080fd5b5061055c610d36565b6040516105699190612531565b60405180910390f35b34801561057e57600080fd5b50610587610d73565b604051610594919061284d565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf91906125ec565b610d99565b6040516105d19190612647565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612894565b610db0565b005b34801561060f57600080fd5b5061062a600480360381019061062591906128d4565b610e53565b6040516106379190612671565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190612952565b610eda565b005b606060405180610100016040528060c8815260200161334b60c89139905090565b6000610697338484610f9c565b6001905092915050565b60006106dd6106b06000610a98565b6106cf6106be61dead610a98565b60015461116590919063ffffffff16565b61116590919063ffffffff16565b905090565b6106eb336108c7565b61072a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610721906129cb565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600f5460035461077e6106a1565b6107889190612a1a565b6107929190612aa3565b905090565b60006107a484848461117b565b61085784336108528560405180606001604052806028815260200161332360289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113749092919063ffffffff16565b610f9c565b600190509392505050565b61086b336108c7565b6108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a1906129cb565b60405180910390fd5b6001600960146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b610932336108c7565b610971576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610968906129cb565b60405180910390fd5b826002819055508160038190555080600481905550505050565b610994336108c7565b6109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca906129cb565b60405180910390fd5b6109fd620186a06109ef836001546113c990919063ffffffff16565b6113df90919063ffffffff16565b60158190555050565b610a0f336108c7565b610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a45906129cb565b60405180910390fd5b84600a8190555083600b8190555082600c8190555081600d8190555080600e819055505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610aea336108c7565b610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b20906129cb565b60405180910390fd5b61dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616361dead604051610b9c919061284d565b60405180910390a1565b610baf336108c7565b610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906129cb565b60405180910390fd5b610bf66106a1565b600281905550610c046106a1565b600381905550610c126106a1565b600481905550565b6000600f54600454610c2a6106a1565b610c349190612a1a565b610c3e9190612aa3565b905090565b6000600f54600254610c536106a1565b610c5d9190612a1a565b610c679190612aa3565b905090565b610c75336108c7565b610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab906129cb565b60405180910390fd5b610cde620186a0610cd0836001546113c990919063ffffffff16565b6113df90919063ffffffff16565b60148190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600881526020017f464b43525950544f000000000000000000000000000000000000000000000000815250905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610da633848461117b565b6001905092915050565b610db9336108c7565b610df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610def906129cb565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ee3336108c7565b610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906129cb565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610f919190612b33565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612bc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190612c52565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111589190612671565b60405180910390a3505050565b600081836111739190612c72565b905092915050565b6111868383836113f5565b6111908383611566565b61119b838383611663565b6111a58383611841565b6111b083838361190c565b6111bb838383611b4b565b61120d81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461116590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061125c8484611b74565b6112665781611272565b611271848484611c22565b5b90506112c681600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113669190612671565b60405180910390a350505050565b60008383111582906113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b39190612531565b60405180910390fd5b5082840390509392505050565b600081836113d79190612a1a565b905092915050565b600081836113ed9190612aa3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90612daa565b60405180910390fd5b60008111611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d90612e3c565b60405180910390fd5b61151f83610a98565b811115611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890612ece565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561160a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561165f57600960149054906101000a900460ff1661165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165590612f3a565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117075750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117615750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561179b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561183c576117a8610c1a565b6117fa82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8990919063ffffffff16565b111561183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290612fa6565b60405180910390fd5b5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118e85750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611908576001601160008282546119009190612fc6565b925050819055505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a545761196961076e565b811115806119c05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a145750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a90613046565b60405180910390fd5b5b611a5c610c43565b81111580611ab35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b075750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90613046565b60405180910390fd5b505050565b611b56838383611d9f565b15611b6f57611b66601454611ed9565b60006011819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c1a5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611c2f8585612092565b1115611d7e576000611c67611c448686612092565b611c59600f54866113df90919063ffffffff16565b6113c990919063ffffffff16565b9050611cbb81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d5b9190612671565b60405180910390a3611d76818461116590919063ffffffff16565b915050611d82565b8190505b9392505050565b60008183611d979190612fc6565b905092915050565b60008060155483101590506000601454611db830610a98565b10159050601260009054906101000a900460ff16158015611de55750601060009054906101000a900460ff165b8015611dfd5750600960149054906101000a900460ff165b8015611e065750815b8015611e5c5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eb55750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611ec5575060135460115410155b8015611ece5750805b925050509392505050565b6001601260006101000a81548160ff0219169083151502179055506000611f336002611f25600b54611f176001600a54611d8990919063ffffffff16565b611d8990919063ffffffff16565b6113c990919063ffffffff16565b90506000611f5e82611f50600a54866113c990919063ffffffff16565b6113df90919063ffffffff16565b90506000611f75828561116590919063ffffffff16565b90506000479050611f858261215e565b6000611f9a824761116590919063ffffffff16565b90506000611fc5611fb6600a548861116590919063ffffffff16565b836113df90919063ffffffff16565b90506000611fde600a54836113c990919063ffffffff16565b90506000811115611ff457611ff386826123a1565b5b6000479050600081111561206c57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561206a573d6000803e3d6000fd5b505b50505050505050506000601260006101000a81548160ff02191690831515021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f357600d549050612158565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361215257600c549050612158565b600e5490505b92915050565b6000600267ffffffffffffffff81111561217b5761217a613066565b5b6040519080825280602002602001820160405280156121a95781602001602082028036833780820191505090505b50905030816000815181106121c1576121c0613095565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228c91906130d9565b816001815181106122a05761229f613095565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230730600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f9c565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161236b9594939291906131ff565b600060405180830381600087803b15801561238557600080fd5b505af1158015612399573d6000803e3d6000fd5b505050505050565b6123ce30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f9c565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161245796959493929190613259565b60606040518083038185885af1158015612475573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249a91906132cf565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124db5780820151818401526020810190506124c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612503826124a1565b61250d81856124ac565b935061251d8185602086016124bd565b612526816124e7565b840191505092915050565b6000602082019050818103600083015261254b81846124f8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061258382612558565b9050919050565b61259381612578565b811461259e57600080fd5b50565b6000813590506125b08161258a565b92915050565b6000819050919050565b6125c9816125b6565b81146125d457600080fd5b50565b6000813590506125e6816125c0565b92915050565b6000806040838503121561260357612602612553565b5b6000612611858286016125a1565b9250506020612622858286016125d7565b9150509250929050565b60008115159050919050565b6126418161262c565b82525050565b600060208201905061265c6000830184612638565b92915050565b61266b816125b6565b82525050565b60006020820190506126866000830184612662565b92915050565b6000602082840312156126a2576126a1612553565b5b60006126b0848285016125a1565b91505092915050565b6000806000606084860312156126d2576126d1612553565b5b60006126e0868287016125a1565b93505060206126f1868287016125a1565b9250506040612702868287016125d7565b9150509250925092565b600060ff82169050919050565b6127228161270c565b82525050565b600060208201905061273d6000830184612719565b92915050565b60008060006060848603121561275c5761275b612553565b5b600061276a868287016125d7565b935050602061277b868287016125d7565b925050604061278c868287016125d7565b9150509250925092565b6000602082840312156127ac576127ab612553565b5b60006127ba848285016125d7565b91505092915050565b600080600080600060a086880312156127df576127de612553565b5b60006127ed888289016125d7565b95505060206127fe888289016125d7565b945050604061280f888289016125d7565b9350506060612820888289016125d7565b9250506080612831888289016125d7565b9150509295509295909350565b61284781612578565b82525050565b6000602082019050612862600083018461283e565b92915050565b6128718161262c565b811461287c57600080fd5b50565b60008135905061288e81612868565b92915050565b600080604083850312156128ab576128aa612553565b5b60006128b9858286016125a1565b92505060206128ca8582860161287f565b9150509250929050565b600080604083850312156128eb576128ea612553565b5b60006128f9858286016125a1565b925050602061290a858286016125a1565b9150509250929050565b600061291f82612558565b9050919050565b61292f81612914565b811461293a57600080fd5b50565b60008135905061294c81612926565b92915050565b60006020828403121561296857612967612553565b5b60006129768482850161293d565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006129b56006836124ac565b91506129c08261297f565b602082019050919050565b600060208201905081810360008301526129e4816129a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a25826125b6565b9150612a30836125b6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a6957612a686129eb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612aae826125b6565b9150612ab9836125b6565b925082612ac957612ac8612a74565b5b828204905092915050565b6000819050919050565b6000612af9612af4612aef84612558565b612ad4565b612558565b9050919050565b6000612b0b82612ade565b9050919050565b6000612b1d82612b00565b9050919050565b612b2d81612b12565b82525050565b6000602082019050612b486000830184612b24565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612baa6024836124ac565b9150612bb582612b4e565b604082019050919050565b60006020820190508181036000830152612bd981612b9d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c3c6022836124ac565b9150612c4782612be0565b604082019050919050565b60006020820190508181036000830152612c6b81612c2f565b9050919050565b6000612c7d826125b6565b9150612c88836125b6565b9250828203905081811115612ca057612c9f6129eb565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d026025836124ac565b9150612d0d82612ca6565b604082019050919050565b60006020820190508181036000830152612d3181612cf5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d946023836124ac565b9150612d9f82612d38565b604082019050919050565b60006020820190508181036000830152612dc381612d87565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612e266029836124ac565b9150612e3182612dca565b604082019050919050565b60006020820190508181036000830152612e5581612e19565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612eb86031836124ac565b9150612ec382612e5c565b604082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612f24600e836124ac565b9150612f2f82612eee565b602082019050919050565b60006020820190508181036000830152612f5381612f17565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612f90601e836124ac565b9150612f9b82612f5a565b602082019050919050565b60006020820190508181036000830152612fbf81612f83565b9050919050565b6000612fd1826125b6565b9150612fdc836125b6565b9250828201905080821115612ff457612ff36129eb565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006130306011836124ac565b915061303b82612ffa565b602082019050919050565b6000602082019050818103600083015261305f81613023565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130d38161258a565b92915050565b6000602082840312156130ef576130ee612553565b5b60006130fd848285016130c4565b91505092915050565b6000819050919050565b600061312b61312661312184613106565b612ad4565b6125b6565b9050919050565b61313b81613110565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61317681612578565b82525050565b6000613188838361316d565b60208301905092915050565b6000602082019050919050565b60006131ac82613141565b6131b6818561314c565b93506131c18361315d565b8060005b838110156131f25781516131d9888261317c565b97506131e483613194565b9250506001810190506131c5565b5085935050505092915050565b600060a0820190506132146000830188612662565b6132216020830187613132565b818103604083015261323381866131a1565b9050613242606083018561283e565b61324f6080830184612662565b9695505050505050565b600060c08201905061326e600083018961283e565b61327b6020830188612662565b6132886040830187613132565b6132956060830186613132565b6132a2608083018561283e565b6132af60a0830184612662565b979650505050505050565b6000815190506132c9816125c0565b92915050565b6000806000606084860312156132e8576132e7612553565b5b60006132f6868287016132ba565b9350506020613307868287016132ba565b9250506040613318868287016132ba565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636549276d20646f776e20736f206d7563682c204920736d6173686564206d7920545620696e2066726f6e74206f6620323220677565737473206174206d7920736f6e732062697274686461792070617274792062656361757365206f66204554482070726963652e204d792077696665206a75737420746f6f6b206f757220637279696e67206b69647320616e6420736169642074686579e28099726520616c6c207370656e64696e6720746865207765656b20617420686572206d6f6de280997320686f7573652ea2646970667358221220014abe3ff3a25ab1ffa664f1285721c871f73aae5b95ab34da8817f8c3ae79ac64736f6c63430008100033

Deployed Bytecode Sourcemap

4801:11540:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6968:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8187:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8344:168;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10606:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8805:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15684:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10929:95;;;;;;;;;;;;;:::i;:::-;;2999:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7174:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10369:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14424:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10100:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5558:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7391:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3213:170;;;;;;;;;;;;;:::i;:::-;;10734:187;;;;;;;;;;;;;:::i;:::-;;8520:140;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8668:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14250:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7277:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6368:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7069:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5639:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7528:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8034:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7701:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3094:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6968:93;7005:13;7038:5;;;;;;;;;;;;;;;;;7031:12;;6968:93;:::o;8187:149::-;8262:4;8279:37;8288:10;8300:7;8309:6;8279:8;:37::i;:::-;8324:4;8317:11;;8187:149;;;;:::o;8344:168::-;8397:7;8434:60;8472:21;8490:1;8472:9;:21::i;:::-;8434:33;8451:15;6319:42;8451:9;:15::i;:::-;8434:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8427:67;;8344:168;:::o;10606:111::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10695:12:::1;10683:9;;:24;;;;;;;;;;;;;;;;;;10606:111:::0;:::o;8805:135::-;8856:7;8921:11;;8899:19;;8883:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8876:56;;8805:135;:::o;15684:309::-;15782:4;15799:36;15809:6;15817:9;15828:6;15799:9;:36::i;:::-;15846:117;15855:6;15863:10;15875:87;15911:6;15875:87;;;;;;;;;;;;;;;;;:11;:19;15887:6;15875:19;;;;;;;;;;;;;;;:31;15895:10;15875:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15846:8;:117::i;:::-;15981:4;15974:11;;15684:309;;;;;:::o;10929:95::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10998:4:::1;10984:11;;:18;;;;;;;;;;;;;;;;;;10929:95::o:0;2999:87::-;3054:4;3079:5;;;;;;;;;;;3068:16;;:7;:16;;;3061:23;;2999:87;;;:::o;7174:95::-;7215:5;5218:2;7239:16;;7174:95;:::o;10369:228::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10490:4:::1;10468:19;:26;;;;10527:6;10505:19;:28;;;;10564:7;10544:17;:27;;;;10369:228:::0;;;:::o;14424:192::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14544:64:::1;14600:6;14544:43;14561:25;14544:12;;:16;;:43;;;;:::i;:::-;:47;;:64;;;;:::i;:::-;14523:18;:85;;;;14424:192:::0;:::o;10100:261::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10234:4:::1;10225:6;:13;;;;10258:4;10249:6;:13;;;;10284:6;10273:8;:17;;;;10311:5;10301:7;:15;;;;10341:6;10327:11;:20;;;;10100:261:::0;;;;;:::o;5558:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;7391:129::-;7457:7;7484:9;:18;7494:7;7484:18;;;;;;;;;;;;;;;;7477:25;;7391:129;;;:::o;3213:170::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3268:42:::1;3260:5;::::0;:50:::1;;;;;;;;;;;;;;;;;;3317:64;3338:42;3317:64;;;;;;:::i;:::-;;;;;;;;3213:170::o:0;10734:187::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10810:13:::1;:11;:13::i;:::-;10788:19;:35;;;;10856:13;:11;:13::i;:::-;10834:19;:35;;;;10900:13;:11;:13::i;:::-;10880:17;:33;;;;10734:187::o:0;8520:140::-;8568:7;8631:11;;8611:17;;8595:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8588:54;;8520:140;:::o;8668:129::-;8713:7;8778:11;;8756:19;;8740:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8733:56;;8668:129;:::o;14250:164::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14350:55:::1;14397:6;14350:34;14367:16;14350:12;;:16;;:34;;;;:::i;:::-;:38;;:55;;;;:::i;:::-;14334:13;:71;;;;14250:164:::0;:::o;7277:106::-;7329:7;7363:5;;;;;;;;;;;7356:12;;7277:106;:::o;6368:69::-;;;;;;;;;;;;;:::o;7069:97::-;7108:13;7141:7;;;;;;;;;;;;;;;;;7134:14;;7069:97;:::o;5639:19::-;;;;;;;;;;;;;:::o;7528:165::-;7606:4;7623:40;7633:10;7645:9;7656:6;7623:9;:40::i;:::-;7681:4;7674:11;;7528:165;;;;:::o;8034:145::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8153:8:::1;8122:18;:28;8141:8;8122:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8034:145:::0;;:::o;7701:155::-;7782:7;7811:11;:18;7823:5;7811:18;;;;;;;;;;;;;;;:27;7830:7;7811:27;;;;;;;;;;;;;;;;7804:34;;7701:155;;;;:::o;3094:111::-;2956:19;2964:10;2956:7;:19::i;:::-;2948:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3168:3:::1;3160:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3178:25;3199:3;3178:25;;;;;;:::i;:::-;;;;;;;;3094:111:::0;:::o;16001:335::-;16111:1;16094:19;;:5;:19;;;16086:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16192:1;16173:21;;:7;:21;;;16165:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16274:6;16244:11;:18;16256:5;16244:18;;;;;;;;;;;;;;;:27;16263:7;16244:27;;;;;;;;;;;;;;;:36;;;;16312:7;16296:32;;16305:5;16296:32;;;16321:6;16296:32;;;;;;:::i;:::-;;;;;;;;16001:335;;;:::o;176:82::-;234:7;255:1;251;:5;;;;:::i;:::-;244:12;;176:82;;;;:::o;9397:695::-;9486:37;9497:6;9505:9;9516:6;9486:10;:37::i;:::-;9534:42;9558:6;9566:9;9534:23;:42::i;:::-;9587:46;9607:6;9615:9;9626:6;9587:19;:46::i;:::-;9645:35;9662:6;9670:9;9645:16;:35::i;:::-;9691:39;9704:6;9712:9;9723:6;9691:12;:39::i;:::-;9742:35;9751:6;9759:9;9770:6;9742:8;:35::i;:::-;9808:29;9830:6;9808:9;:17;9818:6;9808:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9788:9;:17;9798:6;9788:17;;;;;;;;;;;;;;;:49;;;;9848:22;9873:32;9887:6;9895:9;9873:13;:32::i;:::-;:78;;9945:6;9873:78;;;9908:34;9916:6;9924:9;9935:6;9908:7;:34::i;:::-;9873:78;9848:103;;9985:40;10010:14;9985:9;:20;9995:9;9985:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9962:9;:20;9972:9;9962:20;;;;;;;;;;;;;;;:63;;;;10058:9;10041:43;;10050:6;10041:43;;;10069:14;10041:43;;;;;;:::i;:::-;;;;;;;;9475:617;9397:695;;;:::o;1390:162::-;1476:7;1519:1;1514;:6;;1522:12;1506:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1548:1;1544;:5;1537:12;;1390:162;;;;;:::o;264:82::-;322:7;343:1;339;:5;;;;:::i;:::-;332:12;;264:82;;;;:::o;352:::-;410:7;431:1;427;:5;;;;:::i;:::-;420:12;;352:82;;;;:::o;8948:439::-;9070:1;9052:20;;:6;:20;;;9044:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9154:1;9133:23;;:9;:23;;;9125:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9232:1;9215:6;:19;9207:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9309:17;9319:6;9309:9;:17::i;:::-;9299:6;:27;;9291:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8948:439;;;:::o;11034:206::-;11131:18;:26;11150:6;11131:26;;;;;;;;;;;;;;;;;;;;;;;;;11130:27;:61;;;;;11162:18;:29;11181:9;11162:29;;;;;;;;;;;;;;;;;;;;;;;;;11161:30;11130:61;11127:106;;;11201:11;;;;;;;;;;;11193:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11127:106;11034:206;;:::o;11252:352::-;11361:18;:26;11380:6;11361:26;;;;;;;;;;;;;;;;;;;;;;;;;11360:27;:61;;;;;11392:18;:29;11411:9;11392:29;;;;;;;;;;;;;;;;;;;;;;;;;11391:30;11360:61;:91;;;;;11446:4;;;;;;;;;;;11425:26;;:9;:26;;;;11360:91;:121;;;;;6319:42;11455:26;;:9;:26;;;;11360:121;11357:240;;;11543:17;:15;:17::i;:::-;11506:32;11531:6;11506:9;:20;11516:9;11506:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11505:55;;11497:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11357:240;11252:352;;;:::o;11612:166::-;11709:4;;;;;;;;;;;11696:17;;:9;:17;;;:48;;;;;11718:18;:26;11737:6;11718:26;;;;;;;;;;;;;;;;;;;;;;;;;11717:27;11696:48;11693:78;;;11767:1;11746:9;;:23;;;;;;;:::i;:::-;;;;;;;;11693:78;11612:166;;:::o;11786:377::-;11897:4;;;;;;;;;;;11887:14;;:6;:14;;;11884:144;;11921:20;:18;:20::i;:::-;11911:6;:30;;:60;;;;11945:18;:26;11964:6;11945:26;;;;;;;;;;;;;;;;;;;;;;;;;11911:60;:93;;;;11975:18;:29;11994:9;11975:29;;;;;;;;;;;;;;;;;;;;;;;;;11911:93;11903:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;11884:144;12056:14;:12;:14::i;:::-;12046:6;:24;;:54;;;;12074:18;:26;12093:6;12074:26;;;;;;;;;;;;;;;;;;;;;;;;;12046:54;:87;;;;12104:18;:29;12123:9;12104:29;;;;;;;;;;;;;;;;;;;;;;;;;12046:87;12038:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;11786:377;;;:::o;14630:197::-;14722:41;14737:6;14745:9;14756:6;14722:14;:41::i;:::-;14719:101;;;14765:29;14780:13;;14765:14;:29::i;:::-;14816:1;14796:9;:22;;;;14719:101;14630:197;;;:::o;14835:174::-;14916:4;14941:18;:26;14960:6;14941:26;;;;;;;;;;;;;;;;;;;;;;;;;14940:27;:61;;;;;14972:18;:29;14991:9;14972:29;;;;;;;;;;;;;;;;;;;;;;;;;14971:30;14940:61;14933:68;;14835:174;;;;:::o;15244:432::-;15330:7;15386:1;15353:30;15365:6;15373:9;15353:11;:30::i;:::-;:34;15350:304;;;15399:17;15419:59;15447:30;15459:6;15467:9;15447:11;:30::i;:::-;15419:23;15430:11;;15419:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15399:79;;15516:39;15545:9;15516;:24;15534:4;15516:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15489:9;:24;15507:4;15489:24;;;;;;;;;;;;;;;:66;;;;15596:4;15571:42;;15580:6;15571:42;;;15603:9;15571:42;;;;;;:::i;:::-;;;;;;;;15631:21;15642:9;15631:6;:10;;:21;;;;:::i;:::-;15624:28;;;;;15350:304;15662:6;15655:13;;15244:432;;;;;;:::o;88:82::-;146:7;167:1;163;:5;;;;:::i;:::-;156:12;;88:82;;;;:::o;13827:415::-;13925:4;13942:13;13968:18;;13958:6;:28;;13942:44;;13997:19;14047:13;;14019:24;14037:4;14019:9;:24::i;:::-;:41;;13997:63;;14079:8;;;;;;;;;;;14078:9;:32;;;;;14091:19;;;;;;;;;;;14078:32;:47;;;;;14114:11;;;;;;;;;;;14078:47;:59;;;;;14129:8;14078:59;:90;;;;;14142:18;:26;14161:6;14142:26;;;;;;;;;;;;;;;;;;;;;;;;;14141:27;14078:90;:111;;;;;14185:4;;;;;;;;;;;14172:17;;:9;:17;;;14078:111;:138;;;;;14206:10;;14193:9;;:23;;14078:138;:156;;;;;14220:14;14078:156;14071:163;;;;13827:415;;;;;:::o;12171:864::-;6251:4;6240:8;;:15;;;;;;;;;;;;;;;;;;12244:20:::1;12267:34;12299:1;12268:25;12286:6;;12268:13;12279:1;12268:6;;:10;;:13;;;;:::i;:::-;:17;;:25;;;;:::i;:::-;12267:31;;:34;;;;:::i;:::-;12244:57;;12314:32;12349:36;12372:12;12349:18;12360:6;;12349;:10;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12314:71;;12398:14;12415:36;12426:24;12415:6;:10;;:36;;;;:::i;:::-;12398:53;;12462:22;12487:21;12462:46;;12521:24;12538:6;12521:16;:24::i;:::-;12556:20;12579:41;12605:14;12579:21;:25;;:41;;;;:::i;:::-;12556:64;;12631:19;12652:42;12669:24;12686:6;;12669:12;:16;;:24;;;;:::i;:::-;12652:12;:16;;:42;;;;:::i;:::-;12631:63;;12705:29;12737:23;12753:6;;12737:11;:15;;:23;;;;:::i;:::-;12705:55;;12808:1;12776:21;:34;12773:103;;;12812:61;12825:24;12851:21;12812:12;:61::i;:::-;12773:103;12886:24;12913:21;12886:48;;12977:1;12950:16;:29;12947:81;;;12989:9;;;;;;;;;;;12981:27;;:45;13009:16;12981:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12947:81;12231:804;;;;;;;;6271:5:::0;6260:8;;:16;;;;;;;;;;;;;;;;;;12171:864;:::o;15017:219::-;15096:7;15132:4;;;;;;;;;;;15119:17;;:9;:17;;;15116:38;;15145:7;;15138:14;;;;15116:38;15177:4;;;;;;;;;;;15167:14;;:6;:14;;;15164:36;;15190:8;;15183:15;;;;15164:36;15217:11;;15210:18;;15017:219;;;;;:::o;13385:434::-;13451:21;13489:1;13475:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13451:40;;13520:4;13502;13507:1;13502:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13546:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13536:4;13541:1;13536:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13570:53;13587:4;13602:6;;;;;;;;;;;13611:11;13570:8;:53::i;:::-;13634:6;;;;;;;;;;;:57;;;13706:11;13732:1;13748:4;13775;13795:15;13634:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13440:379;13385:434;:::o;13043:334::-;13124:53;13141:4;13156:6;;;;;;;;;;;13165:11;13124:8;:53::i;:::-;13188:6;;;;;;;;;;;:22;;;13218:9;13251:4;13271:11;13297:1;13313;13329:9;;;;;;;;;;;13353:15;13188:181;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13043:334;;:::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:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::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:619::-;5265:6;5273;5281;5330:2;5318:9;5309:7;5305:23;5301:32;5298:119;;;5336:79;;:::i;:::-;5298:119;5456:1;5481:53;5526:7;5517:6;5506:9;5502:22;5481:53;:::i;:::-;5471:63;;5427:117;5583:2;5609:53;5654:7;5645:6;5634:9;5630:22;5609:53;:::i;:::-;5599:63;;5554:118;5711:2;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5682:118;5188:619;;;;;:::o;5813:329::-;5872:6;5921:2;5909:9;5900:7;5896:23;5892:32;5889:119;;;5927:79;;:::i;:::-;5889:119;6047:1;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6018:117;5813:329;;;;:::o;6148:911::-;6243:6;6251;6259;6267;6275;6324:3;6312:9;6303:7;6299:23;6295:33;6292:120;;;6331:79;;:::i;:::-;6292:120;6451:1;6476:53;6521:7;6512:6;6501:9;6497:22;6476:53;:::i;:::-;6466:63;;6422:117;6578:2;6604:53;6649:7;6640:6;6629:9;6625:22;6604:53;:::i;:::-;6594:63;;6549:118;6706:2;6732:53;6777:7;6768:6;6757:9;6753:22;6732:53;:::i;:::-;6722:63;;6677:118;6834:2;6860:53;6905:7;6896:6;6885:9;6881:22;6860:53;:::i;:::-;6850:63;;6805:118;6962:3;6989:53;7034:7;7025:6;7014:9;7010:22;6989:53;:::i;:::-;6979:63;;6933:119;6148:911;;;;;;;;:::o;7065:118::-;7152:24;7170:5;7152:24;:::i;:::-;7147:3;7140:37;7065:118;;:::o;7189:222::-;7282:4;7320:2;7309:9;7305:18;7297:26;;7333:71;7401:1;7390:9;7386:17;7377:6;7333:71;:::i;:::-;7189:222;;;;:::o;7417:116::-;7487:21;7502:5;7487:21;:::i;:::-;7480:5;7477:32;7467:60;;7523:1;7520;7513:12;7467:60;7417:116;:::o;7539:133::-;7582:5;7620:6;7607:20;7598:29;;7636:30;7660:5;7636:30;:::i;:::-;7539:133;;;;:::o;7678:468::-;7743:6;7751;7800:2;7788:9;7779:7;7775:23;7771:32;7768:119;;;7806:79;;:::i;:::-;7768:119;7926:1;7951:53;7996:7;7987:6;7976:9;7972:22;7951:53;:::i;:::-;7941:63;;7897:117;8053:2;8079:50;8121:7;8112:6;8101:9;8097:22;8079:50;:::i;:::-;8069:60;;8024:115;7678:468;;;;;:::o;8152:474::-;8220:6;8228;8277:2;8265:9;8256:7;8252:23;8248:32;8245:119;;;8283:79;;:::i;:::-;8245:119;8403:1;8428:53;8473:7;8464:6;8453:9;8449:22;8428:53;:::i;:::-;8418:63;;8374:117;8530:2;8556:53;8601:7;8592:6;8581:9;8577:22;8556:53;:::i;:::-;8546:63;;8501:118;8152:474;;;;;:::o;8632:104::-;8677:7;8706:24;8724:5;8706:24;:::i;:::-;8695:35;;8632:104;;;:::o;8742:138::-;8823:32;8849:5;8823:32;:::i;:::-;8816:5;8813:43;8803:71;;8870:1;8867;8860:12;8803:71;8742:138;:::o;8886:155::-;8940:5;8978:6;8965:20;8956:29;;8994:41;9029:5;8994:41;:::i;:::-;8886:155;;;;:::o;9047:345::-;9114:6;9163:2;9151:9;9142:7;9138:23;9134:32;9131:119;;;9169:79;;:::i;:::-;9131:119;9289:1;9314:61;9367:7;9358:6;9347:9;9343:22;9314:61;:::i;:::-;9304:71;;9260:125;9047:345;;;;:::o;9398:156::-;9538:8;9534:1;9526:6;9522:14;9515:32;9398:156;:::o;9560:365::-;9702:3;9723:66;9787:1;9782:3;9723:66;:::i;:::-;9716:73;;9798:93;9887:3;9798:93;:::i;:::-;9916:2;9911:3;9907:12;9900:19;;9560:365;;;:::o;9931:419::-;10097:4;10135:2;10124:9;10120:18;10112:26;;10184:9;10178:4;10174:20;10170:1;10159:9;10155:17;10148:47;10212:131;10338:4;10212:131;:::i;:::-;10204:139;;9931:419;;;:::o;10356:180::-;10404:77;10401:1;10394:88;10501:4;10498:1;10491:15;10525:4;10522:1;10515:15;10542:348;10582:7;10605:20;10623:1;10605:20;:::i;:::-;10600:25;;10639:20;10657:1;10639:20;:::i;:::-;10634:25;;10827:1;10759:66;10755:74;10752:1;10749:81;10744:1;10737:9;10730:17;10726:105;10723:131;;;10834:18;;:::i;:::-;10723:131;10882:1;10879;10875:9;10864:20;;10542:348;;;;:::o;10896:180::-;10944:77;10941:1;10934:88;11041:4;11038:1;11031:15;11065:4;11062:1;11055:15;11082:185;11122:1;11139:20;11157:1;11139:20;:::i;:::-;11134:25;;11173:20;11191:1;11173:20;:::i;:::-;11168:25;;11212:1;11202:35;;11217:18;;:::i;:::-;11202:35;11259:1;11256;11252:9;11247:14;;11082:185;;;;:::o;11273:60::-;11301:3;11322:5;11315:12;;11273:60;;;:::o;11339:142::-;11389:9;11422:53;11440:34;11449:24;11467:5;11449:24;:::i;:::-;11440:34;:::i;:::-;11422:53;:::i;:::-;11409:66;;11339:142;;;:::o;11487:126::-;11537:9;11570:37;11601:5;11570:37;:::i;:::-;11557:50;;11487:126;;;:::o;11619:134::-;11677:9;11710:37;11741:5;11710:37;:::i;:::-;11697:50;;11619:134;;;:::o;11759:147::-;11854:45;11893:5;11854:45;:::i;:::-;11849:3;11842:58;11759:147;;:::o;11912:238::-;12013:4;12051:2;12040:9;12036:18;12028:26;;12064:79;12140:1;12129:9;12125:17;12116:6;12064:79;:::i;:::-;11912:238;;;;:::o;12156:223::-;12296:34;12292:1;12284:6;12280:14;12273:58;12365:6;12360:2;12352:6;12348:15;12341:31;12156:223;:::o;12385:366::-;12527:3;12548:67;12612:2;12607:3;12548:67;:::i;:::-;12541:74;;12624:93;12713:3;12624:93;:::i;:::-;12742:2;12737:3;12733:12;12726:19;;12385:366;;;:::o;12757:419::-;12923:4;12961:2;12950:9;12946:18;12938:26;;13010:9;13004:4;13000:20;12996:1;12985:9;12981:17;12974:47;13038:131;13164:4;13038:131;:::i;:::-;13030:139;;12757:419;;;:::o;13182:221::-;13322:34;13318:1;13310:6;13306:14;13299:58;13391:4;13386:2;13378:6;13374:15;13367:29;13182:221;:::o;13409:366::-;13551:3;13572:67;13636:2;13631:3;13572:67;:::i;:::-;13565:74;;13648:93;13737:3;13648:93;:::i;:::-;13766:2;13761:3;13757:12;13750:19;;13409:366;;;:::o;13781:419::-;13947:4;13985:2;13974:9;13970:18;13962:26;;14034:9;14028:4;14024:20;14020:1;14009:9;14005:17;13998:47;14062:131;14188:4;14062:131;:::i;:::-;14054:139;;13781:419;;;:::o;14206:194::-;14246:4;14266:20;14284:1;14266:20;:::i;:::-;14261:25;;14300:20;14318:1;14300:20;:::i;:::-;14295:25;;14344:1;14341;14337:9;14329:17;;14368:1;14362:4;14359:11;14356:37;;;14373:18;;:::i;:::-;14356:37;14206:194;;;;:::o;14406:224::-;14546:34;14542:1;14534:6;14530:14;14523:58;14615:7;14610:2;14602:6;14598:15;14591:32;14406:224;:::o;14636:366::-;14778:3;14799:67;14863:2;14858:3;14799:67;:::i;:::-;14792:74;;14875:93;14964:3;14875:93;:::i;:::-;14993:2;14988:3;14984:12;14977:19;;14636:366;;;:::o;15008:419::-;15174:4;15212:2;15201:9;15197:18;15189:26;;15261:9;15255:4;15251:20;15247:1;15236:9;15232:17;15225:47;15289:131;15415:4;15289:131;:::i;:::-;15281:139;;15008:419;;;:::o;15433:222::-;15573:34;15569:1;15561:6;15557:14;15550:58;15642:5;15637:2;15629:6;15625:15;15618:30;15433:222;:::o;15661:366::-;15803:3;15824:67;15888:2;15883:3;15824:67;:::i;:::-;15817:74;;15900:93;15989:3;15900:93;:::i;:::-;16018:2;16013:3;16009:12;16002:19;;15661:366;;;:::o;16033:419::-;16199:4;16237:2;16226:9;16222:18;16214:26;;16286:9;16280:4;16276:20;16272:1;16261:9;16257:17;16250:47;16314:131;16440:4;16314:131;:::i;:::-;16306:139;;16033:419;;;:::o;16458:228::-;16598:34;16594:1;16586:6;16582:14;16575:58;16667:11;16662:2;16654:6;16650:15;16643:36;16458:228;:::o;16692:366::-;16834:3;16855:67;16919:2;16914:3;16855:67;:::i;:::-;16848:74;;16931:93;17020:3;16931:93;:::i;:::-;17049:2;17044:3;17040:12;17033:19;;16692:366;;;:::o;17064:419::-;17230:4;17268:2;17257:9;17253:18;17245:26;;17317:9;17311:4;17307:20;17303:1;17292:9;17288:17;17281:47;17345:131;17471:4;17345:131;:::i;:::-;17337:139;;17064:419;;;:::o;17489:236::-;17629:34;17625:1;17617:6;17613:14;17606:58;17698:19;17693:2;17685:6;17681:15;17674:44;17489:236;:::o;17731:366::-;17873:3;17894:67;17958:2;17953:3;17894:67;:::i;:::-;17887:74;;17970:93;18059:3;17970:93;:::i;:::-;18088:2;18083:3;18079:12;18072:19;;17731:366;;;:::o;18103:419::-;18269:4;18307:2;18296:9;18292:18;18284:26;;18356:9;18350:4;18346:20;18342:1;18331:9;18327:17;18320:47;18384:131;18510:4;18384:131;:::i;:::-;18376:139;;18103:419;;;:::o;18528:164::-;18668:16;18664:1;18656:6;18652:14;18645:40;18528:164;:::o;18698:366::-;18840:3;18861:67;18925:2;18920:3;18861:67;:::i;:::-;18854:74;;18937:93;19026:3;18937:93;:::i;:::-;19055:2;19050:3;19046:12;19039:19;;18698:366;;;:::o;19070:419::-;19236:4;19274:2;19263:9;19259:18;19251:26;;19323:9;19317:4;19313:20;19309:1;19298:9;19294:17;19287:47;19351:131;19477:4;19351:131;:::i;:::-;19343:139;;19070:419;;;:::o;19495:180::-;19635:32;19631:1;19623:6;19619:14;19612:56;19495:180;:::o;19681:366::-;19823:3;19844:67;19908:2;19903:3;19844:67;:::i;:::-;19837:74;;19920:93;20009:3;19920:93;:::i;:::-;20038:2;20033:3;20029:12;20022:19;;19681:366;;;:::o;20053:419::-;20219:4;20257:2;20246:9;20242:18;20234:26;;20306:9;20300:4;20296:20;20292:1;20281:9;20277:17;20270:47;20334:131;20460:4;20334:131;:::i;:::-;20326:139;;20053:419;;;:::o;20478:191::-;20518:3;20537:20;20555:1;20537:20;:::i;:::-;20532:25;;20571:20;20589:1;20571:20;:::i;:::-;20566:25;;20614:1;20611;20607:9;20600:16;;20635:3;20632:1;20629:10;20626:36;;;20642:18;;:::i;:::-;20626:36;20478:191;;;;:::o;20675:167::-;20815:19;20811:1;20803:6;20799:14;20792:43;20675:167;:::o;20848:366::-;20990:3;21011:67;21075:2;21070:3;21011:67;:::i;:::-;21004:74;;21087:93;21176:3;21087:93;:::i;:::-;21205:2;21200:3;21196:12;21189:19;;20848:366;;;:::o;21220:419::-;21386:4;21424:2;21413:9;21409:18;21401:26;;21473:9;21467:4;21463:20;21459:1;21448:9;21444:17;21437:47;21501:131;21627:4;21501:131;:::i;:::-;21493:139;;21220:419;;;:::o;21645:180::-;21693:77;21690:1;21683:88;21790:4;21787:1;21780:15;21814:4;21811:1;21804:15;21831:180;21879:77;21876:1;21869:88;21976:4;21973:1;21966:15;22000:4;21997:1;21990:15;22017:143;22074:5;22105:6;22099:13;22090:22;;22121:33;22148:5;22121:33;:::i;:::-;22017:143;;;;:::o;22166:351::-;22236:6;22285:2;22273:9;22264:7;22260:23;22256:32;22253:119;;;22291:79;;:::i;:::-;22253:119;22411:1;22436:64;22492:7;22483:6;22472:9;22468:22;22436:64;:::i;:::-;22426:74;;22382:128;22166:351;;;;:::o;22523:85::-;22568:7;22597:5;22586:16;;22523:85;;;:::o;22614:158::-;22672:9;22705:61;22723:42;22732:32;22758:5;22732:32;:::i;:::-;22723:42;:::i;:::-;22705:61;:::i;:::-;22692:74;;22614:158;;;:::o;22778:147::-;22873:45;22912:5;22873:45;:::i;:::-;22868:3;22861:58;22778:147;;:::o;22931:114::-;22998:6;23032:5;23026:12;23016:22;;22931:114;;;:::o;23051:184::-;23150:11;23184:6;23179:3;23172:19;23224:4;23219:3;23215:14;23200:29;;23051:184;;;;:::o;23241:132::-;23308:4;23331:3;23323:11;;23361:4;23356:3;23352:14;23344:22;;23241:132;;;:::o;23379:108::-;23456:24;23474:5;23456:24;:::i;:::-;23451:3;23444:37;23379:108;;:::o;23493:179::-;23562:10;23583:46;23625:3;23617:6;23583:46;:::i;:::-;23661:4;23656:3;23652:14;23638:28;;23493:179;;;;:::o;23678:113::-;23748:4;23780;23775:3;23771:14;23763:22;;23678:113;;;:::o;23827:732::-;23946:3;23975:54;24023:5;23975:54;:::i;:::-;24045:86;24124:6;24119:3;24045:86;:::i;:::-;24038:93;;24155:56;24205:5;24155:56;:::i;:::-;24234:7;24265:1;24250:284;24275:6;24272:1;24269:13;24250:284;;;24351:6;24345:13;24378:63;24437:3;24422:13;24378:63;:::i;:::-;24371:70;;24464:60;24517:6;24464:60;:::i;:::-;24454:70;;24310:224;24297:1;24294;24290:9;24285:14;;24250:284;;;24254:14;24550:3;24543:10;;23951:608;;;23827:732;;;;:::o;24565:831::-;24828:4;24866:3;24855:9;24851:19;24843:27;;24880:71;24948:1;24937:9;24933:17;24924:6;24880:71;:::i;:::-;24961:80;25037:2;25026:9;25022:18;25013:6;24961:80;:::i;:::-;25088:9;25082:4;25078:20;25073:2;25062:9;25058:18;25051:48;25116:108;25219:4;25210:6;25116:108;:::i;:::-;25108:116;;25234:72;25302:2;25291:9;25287:18;25278:6;25234:72;:::i;:::-;25316:73;25384:3;25373:9;25369:19;25360:6;25316:73;:::i;:::-;24565:831;;;;;;;;:::o;25402:807::-;25651:4;25689:3;25678:9;25674:19;25666:27;;25703:71;25771:1;25760:9;25756:17;25747:6;25703:71;:::i;:::-;25784:72;25852:2;25841:9;25837:18;25828:6;25784:72;:::i;:::-;25866:80;25942:2;25931:9;25927:18;25918:6;25866:80;:::i;:::-;25956;26032:2;26021:9;26017:18;26008:6;25956:80;:::i;:::-;26046:73;26114:3;26103:9;26099:19;26090:6;26046:73;:::i;:::-;26129;26197:3;26186:9;26182:19;26173:6;26129:73;:::i;:::-;25402:807;;;;;;;;;:::o;26215:143::-;26272:5;26303:6;26297:13;26288:22;;26319:33;26346:5;26319:33;:::i;:::-;26215:143;;;;:::o;26364:663::-;26452:6;26460;26468;26517:2;26505:9;26496:7;26492:23;26488:32;26485:119;;;26523:79;;:::i;:::-;26485:119;26643:1;26668:64;26724:7;26715:6;26704:9;26700:22;26668:64;:::i;:::-;26658:74;;26614:128;26781:2;26807:64;26863:7;26854:6;26843:9;26839:22;26807:64;:::i;:::-;26797:74;;26752:129;26920:2;26946:64;27002:7;26993:6;26982:9;26978:22;26946:64;:::i;:::-;26936:74;;26891:129;26364:663;;;;;:::o

Swarm Source

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