ETH Price: $3,015.11 (+4.66%)
Gas: 2 Gwei

Token

Kwonzi Skem (KS)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 KS

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,959,716,923,121,479.224945683 KS

Value
$0.00
0x14650e9f3916866722a410f7dab5d6aaf4243dda
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:
kwonziSkem

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-20
*/

/* https://t.me/KwonziSkem
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

contract kwonziSkem is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Kwonzi Skem";
    string private constant _symbol = "KS";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 1000 * 1e15 * 1e9;

    uint256 public _maxWalletAmount = 30 * 1e15 * 1e9;

    // fees
    uint256 public _liquidityFeeOnBuy = 0; 
    uint256 public _marketingFeeOnBuy = 2; 

    uint256 public _liquidityFeeOnSell = 5; 
    uint256 public _marketingFeeOnSell = 5; 
    
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 private _liquidityFee;
    uint256 private _marketingFee;
    
    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tAmount;
    }

    mapping(address => bool) private bots;
    address payable private _marketingAddress = payable(0x62879c390Bf9b9ecbfB8C13486f930AFFEe18b1d);
    address payable private deploymentWallet = payable(0x7379e6d1334ceC13481d5f9a3a9c433999e904e4);

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 public swapAmount;

    bool private inSwap = false;

    event FeesUpdated(uint256 _marketingFee, uint256 _liquidityFee);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
        swapAmount = 10 * 1e15 * 1e9;
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[deploymentWallet] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;

        _marketingFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        
        _liquidityFee = _previousLiquidityFee;
        _marketingFee = _previousMarketingFee;
    }

    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);
    }
    
    function _transfer(address from, address to, uint256 amount) private {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
            require(!bots[to] && !bots[from]);

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _liquidityFee = _liquidityFeeOnBuy;
                _marketingFee = _marketingFeeOnBuy;
            }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _liquidityFee = _liquidityFeeOnSell;
                _marketingFee = _marketingFeeOnSell;
            }
            
            if (!inSwap && from != uniswapV2Pair) {

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > swapAmount) {
                    swapAndLiquify(contractTokenBalance);
                }

                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        restoreAllFee();
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              deploymentWallet,
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLPamount = _liquidityFee.mul(contractTokenBalance).div(_marketingFee.add(_liquidityFee));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function manualSwap() external {
        require(_msgSender() == deploymentWallet);
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external {
        require(_msgSender() == deploymentWallet);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        _transferStandard(sender, recipient, amount);
        restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        fees.tMarketing = amount.mul(_marketingFee).div(100);
        fees.tLiquidity = amount.mul(_liquidityFee).div(100);
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity));
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}

    function setMaxWalletAmount(uint256 maxWalletAmount) external {
        require(_msgSender() == deploymentWallet);
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setSwapAmount(uint256 _swapAmount) external {
        require(_msgSender() == deploymentWallet);
        swapAmount = _swapAmount;
    }

    function blacklistmany(address[] memory bots_) external {
        for (uint i = 0; i < bots_.length; i++) {
          bots[bots_[i]] = true;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"_liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blacklistmany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a18d0bf423c03d8de0000006005556000600655600260075560056008556005600955600c54600a55600d54600b557362879c390bf9b9ecbfb8c13486f930affee18b1d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737379e6d1334cec13481d5f9a3a9c433999e904e4601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460006101000a81548160ff0219169083151502179055503480156200010557600080fd5b50600062000118620007cc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200025130601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce8000000620007d460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029857600080fd5b505afa158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d39190620009fe565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033657600080fd5b505afa1580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003719190620009fe565b6040518363ffffffff1660e01b81526004016200039092919062000ad2565b602060405180830381600087803b158015620003ab57600080fd5b505af1158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e69190620009fe565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620004c792919062000aff565b602060405180830381600087803b158015620004e257600080fd5b505af1158015620004f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051d919062000a30565b506a084595161401484a0000006013819055506b033b2e3c9fd0803ce80000006002600062000551620007cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000620005a5620009a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000752620007cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620007bd919062000b70565b60405180910390a35062000cbf565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000847576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083e9062000b4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b19062000b2c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200099a919062000b70565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620009e18162000c8b565b92915050565b600081519050620009f88162000ca5565b92915050565b60006020828403121562000a175762000a1662000be8565b5b600062000a2784828501620009d0565b91505092915050565b60006020828403121562000a495762000a4862000be8565b5b600062000a5984828501620009e7565b91505092915050565b62000a6d8162000b9e565b82525050565b600062000a8260228362000b8d565b915062000a8f8262000bed565b604082019050919050565b600062000aa960248362000b8d565b915062000ab68262000c3c565b604082019050919050565b62000acc8162000bde565b82525050565b600060408201905062000ae9600083018562000a62565b62000af8602083018462000a62565b9392505050565b600060408201905062000b16600083018562000a62565b62000b25602083018462000ac1565b9392505050565b6000602082019050818103600083015262000b478162000a73565b9050919050565b6000602082019050818103600083015262000b698162000a9a565b9050919050565b600060208201905062000b87600083018462000ac1565b92915050565b600082825260208201905092915050565b600062000bab8262000bbe565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b62000c968162000b9e565b811462000ca257600080fd5b50565b62000cb08162000bb2565b811462000cbc57600080fd5b50565b6132648062000ccf6000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063d52dfc141161006f578063d52dfc141461047d578063dd62ed3e146104a8578063e581dc71146104e5578063e632313c14610510578063f2fde38b14610539578063f42938901461056257610156565b8063715018a61461037f5780638cf01f6e146103965780638da5cb5b146103bf57806395d89b41146103ea578063a9059cbb14610415578063c4066f2f1461045257610156565b8063313ce56711610108578063313ce5671461027f5780633c0a73ae146102aa57806349bd5a5e146102d557806351bc3c85146103005780636c0a24eb1461031757806370a082311461034257610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee57806327a14fc21461022b5780632e8fa8211461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610579565b60405161017d9190612832565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906123d6565b6105b6565b6040516101ba9190612817565b60405180910390f35b3480156101cf57600080fd5b506101d86105d4565b6040516101e591906129d4565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612383565b6105e8565b6040516102229190612817565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061245f565b6106c1565b005b34801561026057600080fd5b506102696107dc565b60405161027691906129d4565b60405180910390f35b34801561028b57600080fd5b506102946107e2565b6040516102a19190612a49565b60405180910390f35b3480156102b657600080fd5b506102bf6107eb565b6040516102cc91906129d4565b60405180910390f35b3480156102e157600080fd5b506102ea6107f1565b6040516102f7919061279b565b60405180910390f35b34801561030c57600080fd5b50610315610817565b005b34801561032357600080fd5b5061032c61089b565b60405161033991906129d4565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906122e9565b6108a1565b60405161037691906129d4565b60405180910390f35b34801561038b57600080fd5b506103946108ea565b005b3480156103a257600080fd5b506103bd60048036038101906103b89190612416565b610a3d565b005b3480156103cb57600080fd5b506103d4610ad2565b6040516103e1919061279b565b60405180910390f35b3480156103f657600080fd5b506103ff610afb565b60405161040c9190612832565b60405180910390f35b34801561042157600080fd5b5061043c600480360381019061043791906123d6565b610b38565b6040516104499190612817565b60405180910390f35b34801561045e57600080fd5b50610467610b56565b60405161047491906129d4565b60405180910390f35b34801561048957600080fd5b50610492610b5c565b60405161049f91906129d4565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190612343565b610b62565b6040516104dc91906129d4565b60405180910390f35b3480156104f157600080fd5b506104fa610be9565b60405161050791906129d4565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061245f565b610bef565b005b34801561054557600080fd5b50610560600480360381019061055b91906122e9565b610c5a565b005b34801561056e57600080fd5b50610577610e1c565b005b60606040518060400160405280600b81526020017f4b776f6e7a6920536b656d000000000000000000000000000000000000000000815250905090565b60006105ca6105c3610e98565b8484610ea0565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b60006105f584848461106b565b6106b684610601610e98565b6106b18560405180606001604052806028815260200161320760289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610667610e98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117349092919063ffffffff16565b610ea0565b600190509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610702610e98565b73ffffffffffffffffffffffffffffffffffffffff161461072257600080fd5b61074260c86b033b2e3c9fd0803ce800000061179890919063ffffffff16565b8111610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a906128f4565b60405180910390fd5b6b033b2e3c9fd0803ce80000008111156107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c990612974565b60405180910390fd5b8060058190555050565b60135481565b60006009905090565b60065481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610858610e98565b73ffffffffffffffffffffffffffffffffffffffff161461087857600080fd5b6000610883306108a1565b9050600081111561089857610897816117e2565b5b50565b60055481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108f2610e98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097690612934565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60005b8151811015610ace576001600e6000848481518110610a6257610a61612dc7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ac690612d20565b915050610a40565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600281526020017f4b53000000000000000000000000000000000000000000000000000000000000815250905090565b6000610b4c610b45610e98565b848461106b565b6001905092915050565b60095481565b60085481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c30610e98565b73ffffffffffffffffffffffffffffffffffffffff1614610c5057600080fd5b8060138190555050565b610c62610e98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690612934565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5690612874565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e5d610e98565b73ffffffffffffffffffffffffffffffffffffffff1614610e7d57600080fd5b60004790506000811115610e9557610e9481611a6a565b5b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906129b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7790612894565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161105e91906129d4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612994565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114290612854565b60405180910390fd5b6000811161118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590612954565b60405180910390fd5b60006001905061119c610ad2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561120a57506111da610ad2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561124257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561127a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561166f57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113235750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61132c57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156113d75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561143c576005546113fa836113ec866108a1565b611ad690919063ffffffff16565b111561143b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611432906128d4565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114e75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114ff57600654600c81905550600754600d819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115aa5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115c257600854600c81905550600954600d819055505b601460009054906101000a900460ff1615801561162d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561166e57600061163d306108a1565b90506013548111156116535761165281611b34565b5b6000479050600081111561166b5761166a47611a6a565b5b50505b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117105750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561171a57600090505b61172684848484611c35565b61172e611c5c565b50505050565b600083831115829061177c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117739190612832565b60405180910390fd5b506000838561178b9190612beb565b9050809150509392505050565b60006117da83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c70565b905092915050565b6001601460006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561181a57611819612df6565b5b6040519080825280602002602001820160405280156118485781602001602082028036833780820191505090505b50905030816000815181106118605761185f612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561190257600080fd5b505afa158015611916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193a9190612316565b8160018151811061194e5761194d612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119b530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ea0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a199594939291906129ef565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050506000601460006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ad2573d6000803e3d6000fd5b5050565b6000808284611ae59190612b0a565b905083811015611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b21906128b4565b60405180910390fd5b8091505092915050565b6001601460006101000a81548160ff0219169083151502179055506000611b8e611b6b600c54600d54611ad690919063ffffffff16565b611b8084600c54611cd390919063ffffffff16565b61179890919063ffffffff16565b90506000611ba660028361179890919063ffffffff16565b90506000611bbd8285611d4e90919063ffffffff16565b90506000479050611bcd826117e2565b6000611c0683611bf886611bea8647611d4e90919063ffffffff16565b611cd390919063ffffffff16565b61179890919063ffffffff16565b9050611c128482611d98565b50505050506000601460006101000a81548160ff02191690831515021790555050565b80611c4357611c42611ea7565b5b611c4e848484611eea565b611c56611c5c565b50505050565b600a54600c81905550600b54600d81905550565b60008083118290611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae9190612832565b60405180910390fd5b5060008385611cc69190612b60565b9050809150509392505050565b600080831415611ce65760009050611d48565b60008284611cf49190612b91565b9050828482611d039190612b60565b14611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90612914565b60405180910390fd5b809150505b92915050565b6000611d9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611734565b905092915050565b611dc530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ea0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611e4e969594939291906127b6565b6060604051808303818588803b158015611e6757600080fd5b505af1158015611e7b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ea0919061248c565b5050505050565b6000600d54148015611ebb57506000600c54145b15611ec557611ee8565b600d54600b81905550600c54600a819055506000600d819055506000600c819055505b565b611ef26121d6565b611f1a6064611f0c600d5485611cd390919063ffffffff16565b61179890919063ffffffff16565b816020018181525050611f4b6064611f3d600c5485611cd390919063ffffffff16565b61179890919063ffffffff16565b816000018181525050611f818160000151611f73836020015185611d4e90919063ffffffff16565b611d4e90919063ffffffff16565b816040018181525050611fdc82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4e90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120758160400151600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad690919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121246120d682600001518360200151611ad690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604001516040516121c891906129d4565b60405180910390a350505050565b60405180606001604052806000815260200160008152602001600081525090565b600061220a61220584612a89565b612a64565b9050808382526020820190508285602086028201111561222d5761222c612e2a565b5b60005b8581101561225d57816122438882612267565b845260208401935060208301925050600181019050612230565b5050509392505050565b600081359050612276816131d8565b92915050565b60008151905061228b816131d8565b92915050565b600082601f8301126122a6576122a5612e25565b5b81356122b68482602086016121f7565b91505092915050565b6000813590506122ce816131ef565b92915050565b6000815190506122e3816131ef565b92915050565b6000602082840312156122ff576122fe612e34565b5b600061230d84828501612267565b91505092915050565b60006020828403121561232c5761232b612e34565b5b600061233a8482850161227c565b91505092915050565b6000806040838503121561235a57612359612e34565b5b600061236885828601612267565b925050602061237985828601612267565b9150509250929050565b60008060006060848603121561239c5761239b612e34565b5b60006123aa86828701612267565b93505060206123bb86828701612267565b92505060406123cc868287016122bf565b9150509250925092565b600080604083850312156123ed576123ec612e34565b5b60006123fb85828601612267565b925050602061240c858286016122bf565b9150509250929050565b60006020828403121561242c5761242b612e34565b5b600082013567ffffffffffffffff81111561244a57612449612e2f565b5b61245684828501612291565b91505092915050565b60006020828403121561247557612474612e34565b5b6000612483848285016122bf565b91505092915050565b6000806000606084860312156124a5576124a4612e34565b5b60006124b3868287016122d4565b93505060206124c4868287016122d4565b92505060406124d5868287016122d4565b9150509250925092565b60006124eb8383612506565b60208301905092915050565b61250081612c74565b82525050565b61250f81612c1f565b82525050565b61251e81612c1f565b82525050565b600061252f82612ac5565b6125398185612ae8565b935061254483612ab5565b8060005b8381101561257557815161255c88826124df565b975061256783612adb565b925050600181019050612548565b5085935050505092915050565b61258b81612c31565b82525050565b61259a81612c86565b82525050565b60006125ab82612ad0565b6125b58185612af9565b93506125c5818560208601612cbc565b6125ce81612e39565b840191505092915050565b60006125e6602383612af9565b91506125f182612e4a565b604082019050919050565b6000612609602683612af9565b915061261482612e99565b604082019050919050565b600061262c602283612af9565b915061263782612ee8565b604082019050919050565b600061264f601b83612af9565b915061265a82612f37565b602082019050919050565b6000612672604183612af9565b915061267d82612f60565b606082019050919050565b6000612695602a83612af9565b91506126a082612fd5565b604082019050919050565b60006126b8602183612af9565b91506126c382613024565b604082019050919050565b60006126db602083612af9565b91506126e682613073565b602082019050919050565b60006126fe602983612af9565b91506127098261309c565b604082019050919050565b6000612721603083612af9565b915061272c826130eb565b604082019050919050565b6000612744602583612af9565b915061274f8261313a565b604082019050919050565b6000612767602483612af9565b915061277282613189565b604082019050919050565b61278681612c5d565b82525050565b61279581612c67565b82525050565b60006020820190506127b06000830184612515565b92915050565b600060c0820190506127cb6000830189612515565b6127d8602083018861277d565b6127e56040830187612591565b6127f26060830186612591565b6127ff60808301856124f7565b61280c60a083018461277d565b979650505050505050565b600060208201905061282c6000830184612582565b92915050565b6000602082019050818103600083015261284c81846125a0565b905092915050565b6000602082019050818103600083015261286d816125d9565b9050919050565b6000602082019050818103600083015261288d816125fc565b9050919050565b600060208201905081810360008301526128ad8161261f565b9050919050565b600060208201905081810360008301526128cd81612642565b9050919050565b600060208201905081810360008301526128ed81612665565b9050919050565b6000602082019050818103600083015261290d81612688565b9050919050565b6000602082019050818103600083015261292d816126ab565b9050919050565b6000602082019050818103600083015261294d816126ce565b9050919050565b6000602082019050818103600083015261296d816126f1565b9050919050565b6000602082019050818103600083015261298d81612714565b9050919050565b600060208201905081810360008301526129ad81612737565b9050919050565b600060208201905081810360008301526129cd8161275a565b9050919050565b60006020820190506129e9600083018461277d565b92915050565b600060a082019050612a04600083018861277d565b612a116020830187612591565b8181036040830152612a238186612524565b9050612a326060830185612515565b612a3f608083018461277d565b9695505050505050565b6000602082019050612a5e600083018461278c565b92915050565b6000612a6e612a7f565b9050612a7a8282612cef565b919050565b6000604051905090565b600067ffffffffffffffff821115612aa457612aa3612df6565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612b1582612c5d565b9150612b2083612c5d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b5557612b54612d69565b5b828201905092915050565b6000612b6b82612c5d565b9150612b7683612c5d565b925082612b8657612b85612d98565b5b828204905092915050565b6000612b9c82612c5d565b9150612ba783612c5d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612be057612bdf612d69565b5b828202905092915050565b6000612bf682612c5d565b9150612c0183612c5d565b925082821015612c1457612c13612d69565b5b828203905092915050565b6000612c2a82612c3d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612c7f82612c98565b9050919050565b6000612c9182612c5d565b9050919050565b6000612ca382612caa565b9050919050565b6000612cb582612c3d565b9050919050565b60005b83811015612cda578082015181840152602081019050612cbf565b83811115612ce9576000848401525b50505050565b612cf882612e39565b810181811067ffffffffffffffff82111715612d1757612d16612df6565b5b80604052505050565b6000612d2b82612c5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d5e57612d5d612d69565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560008201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e60208201527f7400000000000000000000000000000000000000000000000000000000000000604082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e352560008201527f206f6620737570706c7900000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e206f72206571756160008201527f6c20746f20746f74616c537570706c7900000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6131e181612c1f565b81146131ec57600080fd5b50565b6131f881612c5d565b811461320357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040d00442e35a12016e4fbc4d329177fd1fb7ddd79417eb7ddd4571737996f87564736f6c63430008070033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063d52dfc141161006f578063d52dfc141461047d578063dd62ed3e146104a8578063e581dc71146104e5578063e632313c14610510578063f2fde38b14610539578063f42938901461056257610156565b8063715018a61461037f5780638cf01f6e146103965780638da5cb5b146103bf57806395d89b41146103ea578063a9059cbb14610415578063c4066f2f1461045257610156565b8063313ce56711610108578063313ce5671461027f5780633c0a73ae146102aa57806349bd5a5e146102d557806351bc3c85146103005780636c0a24eb1461031757806370a082311461034257610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee57806327a14fc21461022b5780632e8fa8211461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610579565b60405161017d9190612832565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906123d6565b6105b6565b6040516101ba9190612817565b60405180910390f35b3480156101cf57600080fd5b506101d86105d4565b6040516101e591906129d4565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612383565b6105e8565b6040516102229190612817565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d919061245f565b6106c1565b005b34801561026057600080fd5b506102696107dc565b60405161027691906129d4565b60405180910390f35b34801561028b57600080fd5b506102946107e2565b6040516102a19190612a49565b60405180910390f35b3480156102b657600080fd5b506102bf6107eb565b6040516102cc91906129d4565b60405180910390f35b3480156102e157600080fd5b506102ea6107f1565b6040516102f7919061279b565b60405180910390f35b34801561030c57600080fd5b50610315610817565b005b34801561032357600080fd5b5061032c61089b565b60405161033991906129d4565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906122e9565b6108a1565b60405161037691906129d4565b60405180910390f35b34801561038b57600080fd5b506103946108ea565b005b3480156103a257600080fd5b506103bd60048036038101906103b89190612416565b610a3d565b005b3480156103cb57600080fd5b506103d4610ad2565b6040516103e1919061279b565b60405180910390f35b3480156103f657600080fd5b506103ff610afb565b60405161040c9190612832565b60405180910390f35b34801561042157600080fd5b5061043c600480360381019061043791906123d6565b610b38565b6040516104499190612817565b60405180910390f35b34801561045e57600080fd5b50610467610b56565b60405161047491906129d4565b60405180910390f35b34801561048957600080fd5b50610492610b5c565b60405161049f91906129d4565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190612343565b610b62565b6040516104dc91906129d4565b60405180910390f35b3480156104f157600080fd5b506104fa610be9565b60405161050791906129d4565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061245f565b610bef565b005b34801561054557600080fd5b50610560600480360381019061055b91906122e9565b610c5a565b005b34801561056e57600080fd5b50610577610e1c565b005b60606040518060400160405280600b81526020017f4b776f6e7a6920536b656d000000000000000000000000000000000000000000815250905090565b60006105ca6105c3610e98565b8484610ea0565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b60006105f584848461106b565b6106b684610601610e98565b6106b18560405180606001604052806028815260200161320760289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610667610e98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117349092919063ffffffff16565b610ea0565b600190509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610702610e98565b73ffffffffffffffffffffffffffffffffffffffff161461072257600080fd5b61074260c86b033b2e3c9fd0803ce800000061179890919063ffffffff16565b8111610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a906128f4565b60405180910390fd5b6b033b2e3c9fd0803ce80000008111156107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c990612974565b60405180910390fd5b8060058190555050565b60135481565b60006009905090565b60065481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610858610e98565b73ffffffffffffffffffffffffffffffffffffffff161461087857600080fd5b6000610883306108a1565b9050600081111561089857610897816117e2565b5b50565b60055481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108f2610e98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097690612934565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60005b8151811015610ace576001600e6000848481518110610a6257610a61612dc7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ac690612d20565b915050610a40565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600281526020017f4b53000000000000000000000000000000000000000000000000000000000000815250905090565b6000610b4c610b45610e98565b848461106b565b6001905092915050565b60095481565b60085481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c30610e98565b73ffffffffffffffffffffffffffffffffffffffff1614610c5057600080fd5b8060138190555050565b610c62610e98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690612934565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5690612874565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e5d610e98565b73ffffffffffffffffffffffffffffffffffffffff1614610e7d57600080fd5b60004790506000811115610e9557610e9481611a6a565b5b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906129b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7790612894565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161105e91906129d4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612994565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114290612854565b60405180910390fd5b6000811161118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590612954565b60405180910390fd5b60006001905061119c610ad2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561120a57506111da610ad2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561124257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561127a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561166f57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113235750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61132c57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156113d75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561143c576005546113fa836113ec866108a1565b611ad690919063ffffffff16565b111561143b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611432906128d4565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114e75750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114ff57600654600c81905550600754600d819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115aa5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115c257600854600c81905550600954600d819055505b601460009054906101000a900460ff1615801561162d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561166e57600061163d306108a1565b90506013548111156116535761165281611b34565b5b6000479050600081111561166b5761166a47611a6a565b5b50505b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117105750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561171a57600090505b61172684848484611c35565b61172e611c5c565b50505050565b600083831115829061177c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117739190612832565b60405180910390fd5b506000838561178b9190612beb565b9050809150509392505050565b60006117da83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c70565b905092915050565b6001601460006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561181a57611819612df6565b5b6040519080825280602002602001820160405280156118485781602001602082028036833780820191505090505b50905030816000815181106118605761185f612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561190257600080fd5b505afa158015611916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193a9190612316565b8160018151811061194e5761194d612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119b530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ea0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a199594939291906129ef565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050506000601460006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ad2573d6000803e3d6000fd5b5050565b6000808284611ae59190612b0a565b905083811015611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b21906128b4565b60405180910390fd5b8091505092915050565b6001601460006101000a81548160ff0219169083151502179055506000611b8e611b6b600c54600d54611ad690919063ffffffff16565b611b8084600c54611cd390919063ffffffff16565b61179890919063ffffffff16565b90506000611ba660028361179890919063ffffffff16565b90506000611bbd8285611d4e90919063ffffffff16565b90506000479050611bcd826117e2565b6000611c0683611bf886611bea8647611d4e90919063ffffffff16565b611cd390919063ffffffff16565b61179890919063ffffffff16565b9050611c128482611d98565b50505050506000601460006101000a81548160ff02191690831515021790555050565b80611c4357611c42611ea7565b5b611c4e848484611eea565b611c56611c5c565b50505050565b600a54600c81905550600b54600d81905550565b60008083118290611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae9190612832565b60405180910390fd5b5060008385611cc69190612b60565b9050809150509392505050565b600080831415611ce65760009050611d48565b60008284611cf49190612b91565b9050828482611d039190612b60565b14611d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3a90612914565b60405180910390fd5b809150505b92915050565b6000611d9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611734565b905092915050565b611dc530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ea0565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611e4e969594939291906127b6565b6060604051808303818588803b158015611e6757600080fd5b505af1158015611e7b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ea0919061248c565b5050505050565b6000600d54148015611ebb57506000600c54145b15611ec557611ee8565b600d54600b81905550600c54600a819055506000600d819055506000600c819055505b565b611ef26121d6565b611f1a6064611f0c600d5485611cd390919063ffffffff16565b61179890919063ffffffff16565b816020018181525050611f4b6064611f3d600c5485611cd390919063ffffffff16565b61179890919063ffffffff16565b816000018181525050611f818160000151611f73836020015185611d4e90919063ffffffff16565b611d4e90919063ffffffff16565b816040018181525050611fdc82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4e90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120758160400151600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad690919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121246120d682600001518360200151611ad690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ad690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604001516040516121c891906129d4565b60405180910390a350505050565b60405180606001604052806000815260200160008152602001600081525090565b600061220a61220584612a89565b612a64565b9050808382526020820190508285602086028201111561222d5761222c612e2a565b5b60005b8581101561225d57816122438882612267565b845260208401935060208301925050600181019050612230565b5050509392505050565b600081359050612276816131d8565b92915050565b60008151905061228b816131d8565b92915050565b600082601f8301126122a6576122a5612e25565b5b81356122b68482602086016121f7565b91505092915050565b6000813590506122ce816131ef565b92915050565b6000815190506122e3816131ef565b92915050565b6000602082840312156122ff576122fe612e34565b5b600061230d84828501612267565b91505092915050565b60006020828403121561232c5761232b612e34565b5b600061233a8482850161227c565b91505092915050565b6000806040838503121561235a57612359612e34565b5b600061236885828601612267565b925050602061237985828601612267565b9150509250929050565b60008060006060848603121561239c5761239b612e34565b5b60006123aa86828701612267565b93505060206123bb86828701612267565b92505060406123cc868287016122bf565b9150509250925092565b600080604083850312156123ed576123ec612e34565b5b60006123fb85828601612267565b925050602061240c858286016122bf565b9150509250929050565b60006020828403121561242c5761242b612e34565b5b600082013567ffffffffffffffff81111561244a57612449612e2f565b5b61245684828501612291565b91505092915050565b60006020828403121561247557612474612e34565b5b6000612483848285016122bf565b91505092915050565b6000806000606084860312156124a5576124a4612e34565b5b60006124b3868287016122d4565b93505060206124c4868287016122d4565b92505060406124d5868287016122d4565b9150509250925092565b60006124eb8383612506565b60208301905092915050565b61250081612c74565b82525050565b61250f81612c1f565b82525050565b61251e81612c1f565b82525050565b600061252f82612ac5565b6125398185612ae8565b935061254483612ab5565b8060005b8381101561257557815161255c88826124df565b975061256783612adb565b925050600181019050612548565b5085935050505092915050565b61258b81612c31565b82525050565b61259a81612c86565b82525050565b60006125ab82612ad0565b6125b58185612af9565b93506125c5818560208601612cbc565b6125ce81612e39565b840191505092915050565b60006125e6602383612af9565b91506125f182612e4a565b604082019050919050565b6000612609602683612af9565b915061261482612e99565b604082019050919050565b600061262c602283612af9565b915061263782612ee8565b604082019050919050565b600061264f601b83612af9565b915061265a82612f37565b602082019050919050565b6000612672604183612af9565b915061267d82612f60565b606082019050919050565b6000612695602a83612af9565b91506126a082612fd5565b604082019050919050565b60006126b8602183612af9565b91506126c382613024565b604082019050919050565b60006126db602083612af9565b91506126e682613073565b602082019050919050565b60006126fe602983612af9565b91506127098261309c565b604082019050919050565b6000612721603083612af9565b915061272c826130eb565b604082019050919050565b6000612744602583612af9565b915061274f8261313a565b604082019050919050565b6000612767602483612af9565b915061277282613189565b604082019050919050565b61278681612c5d565b82525050565b61279581612c67565b82525050565b60006020820190506127b06000830184612515565b92915050565b600060c0820190506127cb6000830189612515565b6127d8602083018861277d565b6127e56040830187612591565b6127f26060830186612591565b6127ff60808301856124f7565b61280c60a083018461277d565b979650505050505050565b600060208201905061282c6000830184612582565b92915050565b6000602082019050818103600083015261284c81846125a0565b905092915050565b6000602082019050818103600083015261286d816125d9565b9050919050565b6000602082019050818103600083015261288d816125fc565b9050919050565b600060208201905081810360008301526128ad8161261f565b9050919050565b600060208201905081810360008301526128cd81612642565b9050919050565b600060208201905081810360008301526128ed81612665565b9050919050565b6000602082019050818103600083015261290d81612688565b9050919050565b6000602082019050818103600083015261292d816126ab565b9050919050565b6000602082019050818103600083015261294d816126ce565b9050919050565b6000602082019050818103600083015261296d816126f1565b9050919050565b6000602082019050818103600083015261298d81612714565b9050919050565b600060208201905081810360008301526129ad81612737565b9050919050565b600060208201905081810360008301526129cd8161275a565b9050919050565b60006020820190506129e9600083018461277d565b92915050565b600060a082019050612a04600083018861277d565b612a116020830187612591565b8181036040830152612a238186612524565b9050612a326060830185612515565b612a3f608083018461277d565b9695505050505050565b6000602082019050612a5e600083018461278c565b92915050565b6000612a6e612a7f565b9050612a7a8282612cef565b919050565b6000604051905090565b600067ffffffffffffffff821115612aa457612aa3612df6565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612b1582612c5d565b9150612b2083612c5d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b5557612b54612d69565b5b828201905092915050565b6000612b6b82612c5d565b9150612b7683612c5d565b925082612b8657612b85612d98565b5b828204905092915050565b6000612b9c82612c5d565b9150612ba783612c5d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612be057612bdf612d69565b5b828202905092915050565b6000612bf682612c5d565b9150612c0183612c5d565b925082821015612c1457612c13612d69565b5b828203905092915050565b6000612c2a82612c3d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612c7f82612c98565b9050919050565b6000612c9182612c5d565b9050919050565b6000612ca382612caa565b9050919050565b6000612cb582612c3d565b9050919050565b60005b83811015612cda578082015181840152602081019050612cbf565b83811115612ce9576000848401525b50505050565b612cf882612e39565b810181811067ffffffffffffffff82111715612d1757612d16612df6565b5b80604052505050565b6000612d2b82612c5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d5e57612d5d612d69565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560008201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e60208201527f7400000000000000000000000000000000000000000000000000000000000000604082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e20302e352560008201527f206f6620737570706c7900000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e206f72206571756160008201527f6c20746f20746f74616c537570706c7900000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6131e181612c1f565b81146131ec57600080fd5b50565b6131f881612c5d565b811461320357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122040d00442e35a12016e4fbc4d329177fd1fb7ddd79417eb7ddd4571737996f87564736f6c63430008070033

Deployed Bytecode Sourcemap

7075:10617:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9521:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10364:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9798:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10535:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16998:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8462:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9707:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7621:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8427:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15521:247;;;;;;;;;;;;;:::i;:::-;;7550:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9903:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2647:148;;;;;;;;;;;;;:::i;:::-;;17527:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2433:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9612:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10034:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7759:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7713;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10211:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7666:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17371:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2803:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15776:249;;;;;;;;;;;;;:::i;:::-;;9521:83;9558:13;9591:5;;;;;;;;;;;;;;;;;9584:12;;9521:83;:::o;10364:163::-;10441:4;10458:39;10467:12;:10;:12::i;:::-;10481:7;10490:6;10458:8;:39::i;:::-;10515:4;10508:11;;10364:163;;;;:::o;9798:97::-;9853:7;7524:17;9873:14;;9798:97;:::o;10535:312::-;10635:4;10652:36;10662:6;10670:9;10681:6;10652:9;:36::i;:::-;10699:118;10708:6;10715:12;:10;:12::i;:::-;10728:88;10766:6;10728:88;;;;;;;;;;;;;;;;;:11;:19;10740:6;10728:19;;;;;;;;;;;;;;;:33;10748:12;:10;:12::i;:::-;10728:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;10699:8;:118::i;:::-;10835:4;10828:11;;10535:312;;;;;:::o;16998:365::-;17095:16;;;;;;;;;;;17079:32;;:12;:10;:12::i;:::-;:32;;;17071:41;;;;;;17149:16;17161:3;7524:17;17149:11;;:16;;;;:::i;:::-;17131:15;:34;17123:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;7524:17;17231:15;:26;;17223:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17340:15;17321:16;:34;;;;16998:365;:::o;8462:25::-;;;;:::o;9707:83::-;9748:5;7295:1;9766:16;;9707:83;:::o;7621:37::-;;;;:::o;8427:28::-;;;;;;;;;;;;;:::o;15521:247::-;15587:16;;;;;;;;;;;15571:32;;:12;:10;:12::i;:::-;:32;;;15563:41;;;;;;15615:23;15641:24;15659:4;15641:9;:24::i;:::-;15615:50;;15698:1;15680:15;:19;15676:85;;;15716:33;15733:15;15716:16;:33::i;:::-;15676:85;15552:216;15521:247::o;7550:49::-;;;;:::o;9903:119::-;9969:7;9996:9;:18;10006:7;9996:18;;;;;;;;;;;;;;;;9989:25;;9903:119;;;:::o;2647:148::-;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2754:1:::1;2717:40;;2738:6;::::0;::::1;;;;;;;;2717:40;;;;;;;;;;;;2785:1;2768:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2647:148::o:0;17527:160::-;17599:6;17594:86;17615:5;:12;17611:1;:16;17594:86;;;17664:4;17647;:14;17652:5;17658:1;17652:8;;;;;;;;:::i;:::-;;;;;;;;17647:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;17629:3;;;;;:::i;:::-;;;;17594:86;;;;17527:160;:::o;2433:79::-;2471:7;2498:6;;;;;;;;;;;2491:13;;2433:79;:::o;9612:87::-;9651:13;9684:7;;;;;;;;;;;;;;;;;9677:14;;9612:87;:::o;10034:169::-;10114:4;10131:42;10141:12;:10;:12::i;:::-;10155:9;10166:6;10131:9;:42::i;:::-;10191:4;10184:11;;10034:169;;;;:::o;7759:38::-;;;;:::o;7713:::-;;;;:::o;10211:145::-;10294:7;10321:11;:18;10333:5;10321:18;;;;;;;;;;;;;;;:27;10340:7;10321:27;;;;;;;;;;;;;;;;10314:34;;10211:145;;;;:::o;7666:37::-;;;;:::o;17371:148::-;17459:16;;;;;;;;;;;17443:32;;:12;:10;:12::i;:::-;:32;;;17435:41;;;;;;17500:11;17487:10;:24;;;;17371:148;:::o;2803:244::-;2570:12;:10;:12::i;:::-;2560:22;;:6;;;;;;;;;;:22;;;2552:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2912:1:::1;2892:22;;:8;:22;;;;2884:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3002:8;2973:38;;2994:6;::::0;::::1;;;;;;;;2973:38;;;;;;;;;;;;3031:8;3022:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2803:244:::0;:::o;15776:249::-;15842:16;;;;;;;;;;;15826:32;;:12;:10;:12::i;:::-;:32;;;15818:41;;;;;;15870:26;15899:21;15870:50;;15956:1;15935:18;:22;15931:87;;;15974:32;15987:18;15974:12;:32::i;:::-;15931:87;15807:218;15776:249::o;129:98::-;182:7;209:10;202:17;;129:98;:::o;11279:335::-;11389:1;11372:19;;:5;:19;;;;11364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11470:1;11451:21;;:7;:21;;;;11443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11552:6;11522:11;:18;11534:5;11522:18;;;;;;;;;;;;;;;:27;11541:7;11522:27;;;;;;;;;;;;;;;:36;;;;11590:7;11574:32;;11583:5;11574:32;;;11599:6;11574:32;;;;;;:::i;:::-;;;;;;;;11279:335;;;:::o;11626:1860::-;11732:1;11716:18;;:4;:18;;;;11708:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11809:1;11795:16;;:2;:16;;;;11787:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11879:1;11870:6;:10;11862:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11939:12;11954:4;11939:19;;11983:7;:5;:7::i;:::-;11975:15;;:4;:15;;;;:32;;;;;12000:7;:5;:7::i;:::-;11994:13;;:2;:13;;;;11975:32;:57;;;;;12027:4;12011:21;;:4;:21;;;;11975:57;:80;;;;;12050:4;12036:19;;:2;:19;;;;11975:80;11971:1310;;;12081:4;:8;12086:2;12081:8;;;;;;;;;;;;;;;;;;;;;;;;;12080:9;:24;;;;;12094:4;:10;12099:4;12094:10;;;;;;;;;;;;;;;;;;;;;;;;;12093:11;12080:24;12072:33;;;;;;12134:13;;;;;;;;;;;12126:21;;:4;:21;;;:55;;;;;12165:15;;;;;;;;;;;12151:30;;:2;:30;;;;12126:55;12122:219;;;12239:16;;12210:25;12228:6;12210:13;12220:2;12210:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:45;;12202:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;12122:219;12369:13;;;;;;;;;;;12361:21;;:4;:21;;;:55;;;;;12400:15;;;;;;;;;;;12386:30;;:2;:30;;;;12361:55;12357:183;;;12453:18;;12437:13;:34;;;;12506:18;;12490:13;:34;;;;12357:183;12582:13;;;;;;;;;;;12576:19;;:2;:19;;;:55;;;;;12615:15;;;;;;;;;;;12599:32;;:4;:32;;;;12576:55;12572:185;;;12668:19;;12652:13;:35;;;;12722:19;;12706:13;:35;;;;12572:185;12790:6;;;;;;;;;;;12789:7;:32;;;;;12808:13;;;;;;;;;;;12800:21;;:4;:21;;;;12789:32;12785:485;;;12844:28;12875:24;12893:4;12875:9;:24::i;:::-;12844:55;;12947:10;;12924:20;:33;12920:118;;;12982:36;12997:20;12982:14;:36::i;:::-;12920:118;13058:26;13087:21;13058:50;;13152:1;13131:18;:22;13127:106;;;13178:35;13191:21;13178:12;:35::i;:::-;13127:106;12823:447;;12785:485;11971:1310;13297:18;:24;13316:4;13297:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13325:18;:22;13344:2;13325:22;;;;;;;;;;;;;;;;;;;;;;;;;13297:50;13293:98;;;13374:5;13364:15;;13293:98;13411:41;13426:4;13432:2;13436:6;13444:7;13411:14;:41::i;:::-;13463:15;:13;:15::i;:::-;11695:1791;11626:1860;;;:::o;1266:190::-;1352:7;1385:1;1380;:6;;1388:12;1372:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1412:9;1428:1;1424;:5;;;;:::i;:::-;1412:17;;1447:1;1440:8;;;1266:190;;;;;:::o;1718:132::-;1776:7;1803:39;1807:1;1810;1803:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1796:46;;1718:132;;;;:::o;13494:407::-;8645:4;8636:6;;:13;;;;;;;;;;;;;;;;;;13572:21:::1;13610:1;13596:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13572:40;;13641:4;13623;13628:1;13623:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13667:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13657:4;13662:1;13657:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;13700:62;13717:4;13732:15;;;;;;;;;;;13750:11;13700:8;:62::i;:::-;13773:15;;;;;;;;;;;:66;;;13840:11;13853:1;13856:4;13870;13877:15;13773:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13561:340;8681:5:::0;8672:6;;:14;;;;;;;;;;;;;;;;;;13494:407;:::o;15414:99::-;15471:17;;;;;;;;;;;:26;;:34;15498:6;15471:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:99;:::o;935:179::-;993:7;1013:9;1029:1;1025;:5;;;;:::i;:::-;1013:17;;1054:1;1049;:6;;1041:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1105:1;1098:8;;;935:179;;;;:::o;14392:1014::-;8645:4;8636:6;;:13;;;;;;;;;;;;;;;;;;14477:20:::1;14500:77;14544:32;14562:13;;14544;;:17;;:32;;;;:::i;:::-;14500:39;14518:20;14500:13;;:17;;:39;;;;:::i;:::-;:43;;:77;;;;:::i;:::-;14477:100;;14641:12;14657:19;14674:1;14657:12;:16;;:19;;;;:::i;:::-;14641:35;;14687:17;14707:30;14732:4;14707:20;:24;;:30;;;;:::i;:::-;14687:50;;15015:22;15040:21;15015:46;;15106:27;15123:9;15106:16;:27::i;:::-;15264:18;15285:70;15345:9;15286:53;15334:4;15287:41;15313:14;15287:21;:25;;:41;;;;:::i;:::-;15286:47;;:53;;;;:::i;:::-;15285:59;;:70;;;;:::i;:::-;15264:91;;15368:30;15381:4;15387:10;15368:12;:30::i;:::-;14466:940;;;;;8681:5:::0;8672:6;;:14;;;;;;;;;;;;;;;;;;14392:1014;:::o;16033:256::-;16146:7;16141:60;;16175:14;:12;:14::i;:::-;16141:60;16211:44;16229:6;16237:9;16248:6;16211:17;:44::i;:::-;16266:15;:13;:15::i;:::-;16033:256;;;;:::o;11124:147::-;11194:21;;11178:13;:37;;;;11242:21;;11226:13;:37;;;;11124:147::o;1858:189::-;1944:7;1976:1;1972;:5;1979:12;1964:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2003:9;2019:1;2015;:5;;;;:::i;:::-;2003:17;;2038:1;2031:8;;;1858:189;;;;;:::o;1464:246::-;1522:7;1551:1;1546;:6;1542:47;;;1576:1;1569:8;;;;1542:47;1599:9;1615:1;1611;:5;;;;:::i;:::-;1599:17;;1644:1;1639;1635;:5;;;;:::i;:::-;:10;1627:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1701:1;1694:8;;;1464:246;;;;;:::o;1122:136::-;1180:7;1207:43;1211:1;1214;1207:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1200:50;;1122:136;;;;:::o;13913:469::-;13994:62;14011:4;14026:15;;;;;;;;;;;14044:11;13994:8;:62::i;:::-;14099:15;;;;;;;;;;;:31;;;14138:9;14173:4;14195:11;14223:1;14268;14313:16;;;;;;;;;;;14346:15;14099:275;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13913:469;;:::o;10855:257::-;10919:1;10902:13;;:18;:40;;;;;10941:1;10924:13;;:18;10902:40;10898:53;;;10944:7;;10898:53;10985:13;;10961:21;:37;;;;11033:13;;11009:21;:37;;;;11075:1;11059:13;:17;;;;11103:1;11087:13;:17;;;;10855:257;:::o;16297:652::-;16394:24;;:::i;:::-;16447:34;16477:3;16447:25;16458:13;;16447:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;16429:4;:15;;:52;;;;;16510:34;16540:3;16510:25;16521:13;;16510:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;16492:4;:15;;:52;;;;;16580:48;16612:4;:15;;;16580:27;16591:4;:15;;;16580:6;:10;;:27;;;;:::i;:::-;:31;;:48;;;;:::i;:::-;16565:4;:12;;:63;;;;;16669:29;16691:6;16669:9;:17;16679:6;16669:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;16649:9;:17;16659:6;16649:17;;;;;;;;;;;;;;;:49;;;;16732:38;16757:4;:12;;;16732:9;:20;16742:9;16732:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;16709:9;:20;16719:9;16709:20;;;;;;;;;;;;;;;:61;;;;16808:66;16837:36;16857:4;:15;;;16837:4;:15;;;:19;;:36;;;;:::i;:::-;16808:9;:24;16826:4;16808:24;;;;;;;;;;;;;;;;:28;;:66;;;;:::i;:::-;16781:9;:24;16799:4;16781:24;;;;;;;;;;;;;;;:93;;;;16917:9;16900:41;;16909:6;16900:41;;;16928:4;:12;;;16900:41;;;;;;:::i;:::-;;;;;;;;16383:566;16297:652;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:139::-;1485:5;1523:6;1510:20;1501:29;;1539:33;1566:5;1539:33;:::i;:::-;1439:139;;;;:::o;1584:143::-;1641:5;1672:6;1666:13;1657:22;;1688:33;1715:5;1688:33;:::i;:::-;1584:143;;;;:::o;1733:329::-;1792:6;1841:2;1829:9;1820:7;1816:23;1812:32;1809:119;;;1847:79;;:::i;:::-;1809:119;1967:1;1992:53;2037:7;2028:6;2017:9;2013:22;1992:53;:::i;:::-;1982:63;;1938:117;1733:329;;;;:::o;2068:351::-;2138:6;2187:2;2175:9;2166:7;2162:23;2158:32;2155:119;;;2193:79;;:::i;:::-;2155:119;2313:1;2338:64;2394:7;2385:6;2374:9;2370:22;2338:64;:::i;:::-;2328:74;;2284:128;2068:351;;;;:::o;2425:474::-;2493:6;2501;2550:2;2538:9;2529:7;2525:23;2521:32;2518:119;;;2556:79;;:::i;:::-;2518:119;2676:1;2701:53;2746:7;2737:6;2726:9;2722:22;2701:53;:::i;:::-;2691:63;;2647:117;2803:2;2829:53;2874:7;2865:6;2854:9;2850:22;2829:53;:::i;:::-;2819:63;;2774:118;2425:474;;;;;:::o;2905:619::-;2982:6;2990;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;3428:2;3454:53;3499:7;3490:6;3479:9;3475:22;3454:53;:::i;:::-;3444:63;;3399:118;2905:619;;;;;:::o;3530:474::-;3598:6;3606;3655:2;3643:9;3634:7;3630:23;3626:32;3623:119;;;3661:79;;:::i;:::-;3623:119;3781:1;3806:53;3851:7;3842:6;3831:9;3827:22;3806:53;:::i;:::-;3796:63;;3752:117;3908:2;3934:53;3979:7;3970:6;3959:9;3955:22;3934:53;:::i;:::-;3924:63;;3879:118;3530:474;;;;;:::o;4010:539::-;4094:6;4143:2;4131:9;4122:7;4118:23;4114:32;4111:119;;;4149:79;;:::i;:::-;4111:119;4297:1;4286:9;4282:17;4269:31;4327:18;4319:6;4316:30;4313:117;;;4349:79;;:::i;:::-;4313:117;4454:78;4524:7;4515:6;4504:9;4500:22;4454:78;:::i;:::-;4444:88;;4240:302;4010:539;;;;:::o;4555:329::-;4614:6;4663:2;4651:9;4642:7;4638:23;4634:32;4631:119;;;4669:79;;:::i;:::-;4631:119;4789:1;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4760:117;4555:329;;;;:::o;4890:663::-;4978:6;4986;4994;5043:2;5031:9;5022:7;5018:23;5014:32;5011:119;;;5049:79;;:::i;:::-;5011:119;5169:1;5194:64;5250:7;5241:6;5230:9;5226:22;5194:64;:::i;:::-;5184:74;;5140:128;5307:2;5333:64;5389:7;5380:6;5369:9;5365:22;5333:64;:::i;:::-;5323:74;;5278:129;5446:2;5472:64;5528:7;5519:6;5508:9;5504:22;5472:64;:::i;:::-;5462:74;;5417:129;4890:663;;;;;:::o;5559:179::-;5628:10;5649:46;5691:3;5683:6;5649:46;:::i;:::-;5727:4;5722:3;5718:14;5704:28;;5559:179;;;;:::o;5744:147::-;5839:45;5878:5;5839:45;:::i;:::-;5834:3;5827:58;5744:147;;:::o;5897:108::-;5974:24;5992:5;5974:24;:::i;:::-;5969:3;5962:37;5897:108;;:::o;6011:118::-;6098:24;6116:5;6098:24;:::i;:::-;6093:3;6086:37;6011:118;;:::o;6165:732::-;6284:3;6313:54;6361:5;6313:54;:::i;:::-;6383:86;6462:6;6457:3;6383:86;:::i;:::-;6376:93;;6493:56;6543:5;6493:56;:::i;:::-;6572:7;6603:1;6588:284;6613:6;6610:1;6607:13;6588:284;;;6689:6;6683:13;6716:63;6775:3;6760:13;6716:63;:::i;:::-;6709:70;;6802:60;6855:6;6802:60;:::i;:::-;6792:70;;6648:224;6635:1;6632;6628:9;6623:14;;6588:284;;;6592:14;6888:3;6881:10;;6289:608;;;6165:732;;;;:::o;6903:109::-;6984:21;6999:5;6984:21;:::i;:::-;6979:3;6972:34;6903:109;;:::o;7018:147::-;7113:45;7152:5;7113:45;:::i;:::-;7108:3;7101:58;7018:147;;:::o;7171:364::-;7259:3;7287:39;7320:5;7287:39;:::i;:::-;7342:71;7406:6;7401:3;7342:71;:::i;:::-;7335:78;;7422:52;7467:6;7462:3;7455:4;7448:5;7444:16;7422:52;:::i;:::-;7499:29;7521:6;7499:29;:::i;:::-;7494:3;7490:39;7483:46;;7263:272;7171:364;;;;:::o;7541:366::-;7683:3;7704:67;7768:2;7763:3;7704:67;:::i;:::-;7697:74;;7780:93;7869:3;7780:93;:::i;:::-;7898:2;7893:3;7889:12;7882:19;;7541:366;;;:::o;7913:::-;8055:3;8076:67;8140:2;8135:3;8076:67;:::i;:::-;8069:74;;8152:93;8241:3;8152:93;:::i;:::-;8270:2;8265:3;8261:12;8254:19;;7913:366;;;:::o;8285:::-;8427:3;8448:67;8512:2;8507:3;8448:67;:::i;:::-;8441:74;;8524:93;8613:3;8524:93;:::i;:::-;8642:2;8637:3;8633:12;8626:19;;8285:366;;;:::o;8657:::-;8799:3;8820:67;8884:2;8879:3;8820:67;:::i;:::-;8813:74;;8896:93;8985:3;8896:93;:::i;:::-;9014:2;9009:3;9005:12;8998:19;;8657:366;;;:::o;9029:::-;9171:3;9192:67;9256:2;9251:3;9192:67;:::i;:::-;9185:74;;9268:93;9357:3;9268:93;:::i;:::-;9386:2;9381:3;9377:12;9370:19;;9029:366;;;:::o;9401:::-;9543:3;9564:67;9628:2;9623:3;9564:67;:::i;:::-;9557:74;;9640:93;9729:3;9640:93;:::i;:::-;9758:2;9753:3;9749:12;9742:19;;9401:366;;;:::o;9773:::-;9915:3;9936:67;10000:2;9995:3;9936:67;:::i;:::-;9929:74;;10012:93;10101:3;10012:93;:::i;:::-;10130:2;10125:3;10121:12;10114:19;;9773:366;;;:::o;10145:::-;10287:3;10308:67;10372:2;10367:3;10308:67;:::i;:::-;10301:74;;10384:93;10473:3;10384:93;:::i;:::-;10502:2;10497:3;10493:12;10486:19;;10145:366;;;:::o;10517:::-;10659:3;10680:67;10744:2;10739:3;10680:67;:::i;:::-;10673:74;;10756:93;10845:3;10756:93;:::i;:::-;10874:2;10869:3;10865:12;10858:19;;10517:366;;;:::o;10889:::-;11031:3;11052:67;11116:2;11111:3;11052:67;:::i;:::-;11045:74;;11128:93;11217:3;11128:93;:::i;:::-;11246:2;11241:3;11237:12;11230:19;;10889:366;;;:::o;11261:::-;11403:3;11424:67;11488:2;11483:3;11424:67;:::i;:::-;11417:74;;11500:93;11589:3;11500:93;:::i;:::-;11618:2;11613:3;11609:12;11602:19;;11261:366;;;:::o;11633:::-;11775:3;11796:67;11860:2;11855:3;11796:67;:::i;:::-;11789:74;;11872:93;11961:3;11872:93;:::i;:::-;11990:2;11985:3;11981:12;11974:19;;11633:366;;;:::o;12005:118::-;12092:24;12110:5;12092:24;:::i;:::-;12087:3;12080:37;12005:118;;:::o;12129:112::-;12212:22;12228:5;12212:22;:::i;:::-;12207:3;12200:35;12129:112;;:::o;12247:222::-;12340:4;12378:2;12367:9;12363:18;12355:26;;12391:71;12459:1;12448:9;12444:17;12435:6;12391:71;:::i;:::-;12247:222;;;;:::o;12475:823::-;12732:4;12770:3;12759:9;12755:19;12747:27;;12784:71;12852:1;12841:9;12837:17;12828:6;12784:71;:::i;:::-;12865:72;12933:2;12922:9;12918:18;12909:6;12865:72;:::i;:::-;12947:80;13023:2;13012:9;13008:18;12999:6;12947:80;:::i;:::-;13037;13113:2;13102:9;13098:18;13089:6;13037:80;:::i;:::-;13127:81;13203:3;13192:9;13188:19;13179:6;13127:81;:::i;:::-;13218:73;13286:3;13275:9;13271:19;13262:6;13218:73;:::i;:::-;12475:823;;;;;;;;;:::o;13304:210::-;13391:4;13429:2;13418:9;13414:18;13406:26;;13442:65;13504:1;13493:9;13489:17;13480:6;13442:65;:::i;:::-;13304:210;;;;:::o;13520:313::-;13633:4;13671:2;13660:9;13656:18;13648:26;;13720:9;13714:4;13710:20;13706:1;13695:9;13691:17;13684:47;13748:78;13821:4;13812:6;13748:78;:::i;:::-;13740:86;;13520:313;;;;:::o;13839:419::-;14005:4;14043:2;14032:9;14028:18;14020:26;;14092:9;14086:4;14082:20;14078:1;14067:9;14063:17;14056:47;14120:131;14246:4;14120:131;:::i;:::-;14112:139;;13839:419;;;:::o;14264:::-;14430:4;14468:2;14457:9;14453:18;14445:26;;14517:9;14511:4;14507:20;14503:1;14492:9;14488:17;14481:47;14545:131;14671:4;14545:131;:::i;:::-;14537:139;;14264:419;;;:::o;14689:::-;14855:4;14893:2;14882:9;14878:18;14870:26;;14942:9;14936:4;14932:20;14928:1;14917:9;14913:17;14906:47;14970:131;15096:4;14970:131;:::i;:::-;14962:139;;14689:419;;;:::o;15114:::-;15280:4;15318:2;15307:9;15303:18;15295:26;;15367:9;15361:4;15357:20;15353:1;15342:9;15338:17;15331:47;15395:131;15521:4;15395:131;:::i;:::-;15387:139;;15114:419;;;:::o;15539:::-;15705:4;15743:2;15732:9;15728:18;15720:26;;15792:9;15786:4;15782:20;15778:1;15767:9;15763:17;15756:47;15820:131;15946:4;15820:131;:::i;:::-;15812:139;;15539:419;;;:::o;15964:::-;16130:4;16168:2;16157:9;16153:18;16145:26;;16217:9;16211:4;16207:20;16203:1;16192:9;16188:17;16181:47;16245:131;16371:4;16245:131;:::i;:::-;16237:139;;15964:419;;;:::o;16389:::-;16555:4;16593:2;16582:9;16578:18;16570:26;;16642:9;16636:4;16632:20;16628:1;16617:9;16613:17;16606:47;16670:131;16796:4;16670:131;:::i;:::-;16662:139;;16389:419;;;:::o;16814:::-;16980:4;17018:2;17007:9;17003:18;16995:26;;17067:9;17061:4;17057:20;17053:1;17042:9;17038:17;17031:47;17095:131;17221:4;17095:131;:::i;:::-;17087:139;;16814:419;;;:::o;17239:::-;17405:4;17443:2;17432:9;17428:18;17420:26;;17492:9;17486:4;17482:20;17478:1;17467:9;17463:17;17456:47;17520:131;17646:4;17520:131;:::i;:::-;17512:139;;17239:419;;;:::o;17664:::-;17830:4;17868:2;17857:9;17853:18;17845:26;;17917:9;17911:4;17907:20;17903:1;17892:9;17888:17;17881:47;17945:131;18071:4;17945:131;:::i;:::-;17937:139;;17664:419;;;:::o;18089:::-;18255:4;18293:2;18282:9;18278:18;18270:26;;18342:9;18336:4;18332:20;18328:1;18317:9;18313:17;18306:47;18370:131;18496:4;18370:131;:::i;:::-;18362:139;;18089:419;;;:::o;18514:::-;18680:4;18718:2;18707:9;18703:18;18695:26;;18767:9;18761:4;18757:20;18753:1;18742:9;18738:17;18731:47;18795:131;18921:4;18795:131;:::i;:::-;18787:139;;18514:419;;;:::o;18939:222::-;19032:4;19070:2;19059:9;19055:18;19047:26;;19083:71;19151:1;19140:9;19136:17;19127:6;19083:71;:::i;:::-;18939:222;;;;:::o;19167:831::-;19430:4;19468:3;19457:9;19453:19;19445:27;;19482:71;19550:1;19539:9;19535:17;19526:6;19482:71;:::i;:::-;19563:80;19639:2;19628:9;19624:18;19615:6;19563:80;:::i;:::-;19690:9;19684:4;19680:20;19675:2;19664:9;19660:18;19653:48;19718:108;19821:4;19812:6;19718:108;:::i;:::-;19710:116;;19836:72;19904:2;19893:9;19889:18;19880:6;19836:72;:::i;:::-;19918:73;19986:3;19975:9;19971:19;19962:6;19918:73;:::i;:::-;19167:831;;;;;;;;:::o;20004:214::-;20093:4;20131:2;20120:9;20116:18;20108:26;;20144:67;20208:1;20197:9;20193:17;20184:6;20144:67;:::i;:::-;20004:214;;;;:::o;20224:129::-;20258:6;20285:20;;:::i;:::-;20275:30;;20314:33;20342:4;20334:6;20314:33;:::i;:::-;20224:129;;;:::o;20359:75::-;20392:6;20425:2;20419:9;20409:19;;20359:75;:::o;20440:311::-;20517:4;20607:18;20599:6;20596:30;20593:56;;;20629:18;;:::i;:::-;20593:56;20679:4;20671:6;20667:17;20659:25;;20739:4;20733;20729:15;20721:23;;20440:311;;;:::o;20757:132::-;20824:4;20847:3;20839:11;;20877:4;20872:3;20868:14;20860:22;;20757:132;;;:::o;20895:114::-;20962:6;20996:5;20990:12;20980:22;;20895:114;;;:::o;21015:99::-;21067:6;21101:5;21095:12;21085:22;;21015:99;;;:::o;21120:113::-;21190:4;21222;21217:3;21213:14;21205:22;;21120:113;;;:::o;21239:184::-;21338:11;21372:6;21367:3;21360:19;21412:4;21407:3;21403:14;21388:29;;21239:184;;;;:::o;21429:169::-;21513:11;21547:6;21542:3;21535:19;21587:4;21582:3;21578:14;21563:29;;21429:169;;;;:::o;21604:305::-;21644:3;21663:20;21681:1;21663:20;:::i;:::-;21658:25;;21697:20;21715:1;21697:20;:::i;:::-;21692:25;;21851:1;21783:66;21779:74;21776:1;21773:81;21770:107;;;21857:18;;:::i;:::-;21770:107;21901:1;21898;21894:9;21887:16;;21604:305;;;;:::o;21915:185::-;21955:1;21972:20;21990:1;21972:20;:::i;:::-;21967:25;;22006:20;22024:1;22006:20;:::i;:::-;22001:25;;22045:1;22035:35;;22050:18;;:::i;:::-;22035:35;22092:1;22089;22085:9;22080:14;;21915:185;;;;:::o;22106:348::-;22146:7;22169:20;22187:1;22169:20;:::i;:::-;22164:25;;22203:20;22221:1;22203:20;:::i;:::-;22198:25;;22391:1;22323:66;22319:74;22316:1;22313:81;22308:1;22301:9;22294:17;22290:105;22287:131;;;22398:18;;:::i;:::-;22287:131;22446:1;22443;22439:9;22428:20;;22106:348;;;;:::o;22460:191::-;22500:4;22520:20;22538:1;22520:20;:::i;:::-;22515:25;;22554:20;22572:1;22554:20;:::i;:::-;22549:25;;22593:1;22590;22587:8;22584:34;;;22598:18;;:::i;:::-;22584:34;22643:1;22640;22636:9;22628:17;;22460:191;;;;:::o;22657:96::-;22694:7;22723:24;22741:5;22723:24;:::i;:::-;22712:35;;22657:96;;;:::o;22759:90::-;22793:7;22836:5;22829:13;22822:21;22811:32;;22759:90;;;:::o;22855:126::-;22892:7;22932:42;22925:5;22921:54;22910:65;;22855:126;;;:::o;22987:77::-;23024:7;23053:5;23042:16;;22987:77;;;:::o;23070:86::-;23105:7;23145:4;23138:5;23134:16;23123:27;;23070:86;;;:::o;23162:134::-;23220:9;23253:37;23284:5;23253:37;:::i;:::-;23240:50;;23162:134;;;:::o;23302:121::-;23360:9;23393:24;23411:5;23393:24;:::i;:::-;23380:37;;23302:121;;;:::o;23429:126::-;23479:9;23512:37;23543:5;23512:37;:::i;:::-;23499:50;;23429:126;;;:::o;23561:113::-;23611:9;23644:24;23662:5;23644:24;:::i;:::-;23631:37;;23561:113;;;:::o;23680:307::-;23748:1;23758:113;23772:6;23769:1;23766:13;23758:113;;;23857:1;23852:3;23848:11;23842:18;23838:1;23833:3;23829:11;23822:39;23794:2;23791:1;23787:10;23782:15;;23758:113;;;23889:6;23886:1;23883:13;23880:101;;;23969:1;23960:6;23955:3;23951:16;23944:27;23880:101;23729:258;23680:307;;;:::o;23993:281::-;24076:27;24098:4;24076:27;:::i;:::-;24068:6;24064:40;24206:6;24194:10;24191:22;24170:18;24158:10;24155:34;24152:62;24149:88;;;24217:18;;:::i;:::-;24149:88;24257:10;24253:2;24246:22;24036:238;23993:281;;:::o;24280:233::-;24319:3;24342:24;24360:5;24342:24;:::i;:::-;24333:33;;24388:66;24381:5;24378:77;24375:103;;;24458:18;;:::i;:::-;24375:103;24505:1;24498:5;24494:13;24487:20;;24280:233;;;:::o;24519:180::-;24567:77;24564:1;24557:88;24664:4;24661:1;24654:15;24688:4;24685:1;24678:15;24705:180;24753:77;24750:1;24743:88;24850:4;24847:1;24840:15;24874:4;24871:1;24864:15;24891:180;24939:77;24936:1;24929:88;25036:4;25033:1;25026:15;25060:4;25057:1;25050:15;25077:180;25125:77;25122:1;25115:88;25222:4;25219:1;25212:15;25246:4;25243:1;25236:15;25263:117;25372:1;25369;25362:12;25386:117;25495:1;25492;25485:12;25509:117;25618:1;25615;25608:12;25632:117;25741:1;25738;25731:12;25755:102;25796:6;25847:2;25843:7;25838:2;25831:5;25827:14;25823:28;25813:38;;25755:102;;;:::o;25863:222::-;26003:34;25999:1;25991:6;25987:14;25980:58;26072:5;26067:2;26059:6;26055:15;26048:30;25863:222;:::o;26091:225::-;26231:34;26227:1;26219:6;26215:14;26208:58;26300:8;26295:2;26287:6;26283:15;26276:33;26091:225;:::o;26322:221::-;26462:34;26458:1;26450:6;26446:14;26439:58;26531:4;26526:2;26518:6;26514:15;26507:29;26322:221;:::o;26549:177::-;26689:29;26685:1;26677:6;26673:14;26666:53;26549:177;:::o;26732:289::-;26872:34;26868:1;26860:6;26856:14;26849:58;26941:34;26936:2;26928:6;26924:15;26917:59;27010:3;27005:2;26997:6;26993:15;26986:28;26732:289;:::o;27027:229::-;27167:34;27163:1;27155:6;27151:14;27144:58;27236:12;27231:2;27223:6;27219:15;27212:37;27027:229;:::o;27262:220::-;27402:34;27398:1;27390:6;27386:14;27379:58;27471:3;27466:2;27458:6;27454:15;27447:28;27262:220;:::o;27488:182::-;27628:34;27624:1;27616:6;27612:14;27605:58;27488:182;:::o;27676:228::-;27816:34;27812:1;27804:6;27800:14;27793:58;27885:11;27880:2;27872:6;27868:15;27861:36;27676:228;:::o;27910:235::-;28050:34;28046:1;28038:6;28034:14;28027:58;28119:18;28114:2;28106:6;28102:15;28095:43;27910:235;:::o;28151:224::-;28291:34;28287:1;28279:6;28275:14;28268:58;28360:7;28355:2;28347:6;28343:15;28336:32;28151:224;:::o;28381:223::-;28521:34;28517:1;28509:6;28505:14;28498:58;28590:6;28585:2;28577:6;28573:15;28566:31;28381:223;:::o;28610:122::-;28683:24;28701:5;28683:24;:::i;:::-;28676:5;28673:35;28663:63;;28722:1;28719;28712:12;28663:63;28610:122;:::o;28738:::-;28811:24;28829:5;28811:24;:::i;:::-;28804:5;28801:35;28791:63;;28850:1;28847;28840:12;28791:63;28738:122;:::o

Swarm Source

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