ETH Price: $2,976.85 (+3.90%)
Gas: 1 Gwei

Token

Book of Bets (BOB)
 

Overview

Max Total Supply

100,000,000 BOB

Holders

640 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 BOB

Value
$0.00
0x75A18eEc183795AF3c82A4DEe8639606C0E31E58
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Book Of Bets is a betting platform on Ethereum where users can place bets on the value movements of popular crypto tokens.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BOB

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 2024-06-28
*/

// Book Of Bets is the first of its kind betting platform on Ethereum where you can place bets on the value movements of popular crypto tokens. 
// TG: https://t.me/BookOfBetsTG
// Web: https://bookofbets.app
// dApp: https://bet.bookofbets.app

/* SPDX-License-Identifier: MIT */

pragma solidity 0.8.21;

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mintOnce(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract BOB is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  feeOnBuy;
    uint256 public  feeOnSell;

    address public  BOBBuyback;
    address public  BOBTreasury;
    address public  BOBDevelopment;

    uint256 public  swapTokensAtAmount;
    uint256 public  maxSwap;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("Book of Bets", "BOB") 
    {   
        address router;
        address pinkLock;
        
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
            pinkLock = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE; // BSC PinkLock
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
            pinkLock = 0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5; // BSC Testnet PinkLock
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
            pinkLock = 0x71B5759d73262FBb223956913ecF4ecC51057641; // ETH PinkLock
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        feeOnBuy  = 4;
        feeOnSell = 4;

        BOBDevelopment = 0xefa0b7Da3e6d1681CF41ec3AfA71f9d376034651;
        BOBTreasury = 0x80356d39414d4F45E8Ea90C3CC1814b06B112EB4;
        BOBBuyback = 0xd0B54dc7252690E2a470aA36434372a79E394f37;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[pinkLock] = true;

        _mintOnce(owner(), 100e6 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 5_000;
        maxSwap = totalSupply() / 50;

        swapEnabled = false;
    }

    receive() external payable {}

    function creator() public pure returns (string memory) {
        return "t.me/coinsult_tg";
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "CSLT: Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        
        IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    event BOBDevelopmentChanged(address BOBDevelopment);

    function changeBOBDevelopment(address _BOBDevelopment) external onlyOwner{
        require(_BOBDevelopment != address(0), "CSLT: Fee receiver cannot be the zero address");
        BOBDevelopment = _BOBDevelopment;

        emit BOBDevelopmentChanged(BOBDevelopment);
    }

    event BOBTreasuryChanged(address BOBTreasury);

    function changeBOBTreasury(address _BOBTreasury) external onlyOwner{
        require(_BOBTreasury != address(0), "CSLT: Fee receiver cannot be the zero address");
        BOBTreasury = _BOBTreasury;

        emit BOBTreasuryChanged(BOBTreasury);
    }

    event BOBBuybackChanged(address BOBBuyback);

    function changeBOBBuyback(address _BOBBuyback) external onlyOwner{
        require(_BOBBuyback != address(0), "CSLT: Fee receiver cannot be the zero address");
        BOBBuyback = _BOBBuyback;

        emit BOBBuybackChanged(BOBBuyback);
    }
    
    event TradingEnabled(bool tradingEnabled);

    bool public tradingEnabled;
    uint256 public tradingBlock;
    uint256 public tradingTime;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "CSLT: Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;
        tradingBlock = block.number;
        tradingTime = block.timestamp;

        emit TradingEnabled(tradingEnabled);
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "CSLT: transfer from the zero address");
        require(to != address(0), "CSLT: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "CSLT: Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            feeOnBuy + feeOnSell > 0 &&
            !_isExcludedFromFees[from] &&
            swapEnabled
        ) {
            swapping = true;

            if (contractTokenBalance > maxSwap) {
                swapAndSendFee(maxSwap);     
            } else {
                swapAndSendFee(contractTokenBalance);
            }

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            if(block.timestamp < tradingTime + 45 minutes) {
                _totalFees = 25;
            } else {
                _totalFees = feeOnBuy;
            }
        } else if (to == uniswapV2Pair) {
            if(block.timestamp < tradingTime + 45 minutes) {
                _totalFees = 25;
            } else {
                _totalFees = feeOnSell;
            }       
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            if(block.number <= tradingBlock + 3) {
                _totalFees = 99;
            }
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }

    function setSwapTokensAtAmount(uint256 newAmount, bool _swapEnabled) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "CSLT: SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;
        swapEnabled = _swapEnabled;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndSendFee(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 newBalance = address(this).balance - initialBalance;
        uint256 part = newBalance / 4;

        payable(BOBTreasury).sendValue(part);
        payable(BOBBuyback).sendValue(part);
        payable(BOBDevelopment).sendValue(address(this).balance - initialBalance);

        emit SwapAndSendFee(tokenAmount, newBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"BOBBuyback","type":"address"}],"name":"BOBBuybackChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"BOBDevelopment","type":"address"}],"name":"BOBDevelopmentChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"BOBTreasury","type":"address"}],"name":"BOBTreasuryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BOBBuyback","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BOBDevelopment","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BOBTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_BOBBuyback","type":"address"}],"name":"changeBOBBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_BOBDevelopment","type":"address"}],"name":"changeBOBDevelopment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_BOBTreasury","type":"address"}],"name":"changeBOBTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"maxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801562000010575f80fd5b506040518060400160405280600c81526020017f426f6f6b206f66204265747300000000000000000000000000000000000000008152506040518060400160405280600381526020017f424f42000000000000000000000000000000000000000000000000000000000081525081600390816200008e919062000d3c565b508060049081620000a0919062000d3c565b5050505f620000b46200078360201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f806038460362000190577310ed43c718714eb63d5aa57b78b54704e256024e915073407993575c91ce7643a4d4ccacc9a98c36ee1bbe90506200021d565b60614603620001cd5773d99d1c33f9fc3444f8101754abc46c52416550d19150735e5b9be5fd939c578abe5800a90c566eeeba44a590506200021c565b6001461480620001dd5750600546145b156200021757737a250d5630b4cf539739df2c5dacb4c659f2488d91507371b5759d73262fbb223956913ecf4ecc5105764190506200021b565b5f80fd5b5b5b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000292919062000e85565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200031e919062000e85565b6040518363ffffffff1660e01b81526004016200033d92919062000ec6565b6020604051808303815f875af11580156200035a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000380919062000e85565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004563060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200078a60201b60201c565b60046009819055506004600a8190555073efa0b7da3e6d1681cf41ec3afa71f9d376034651600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507380356d39414d4f45e8ea90c3cc1814b06b112eb4600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d0b54dc7252690e2a470aa36434372a79e394f37600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f620005776200095560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000716620006db6200095560201b60201c565b620006eb6200097d60201b60201c565b600a620006f991906200107a565b6305f5e1006200070a9190620010ca565b6200098560201b60201c565b6113886200072962000acf60201b60201c565b62000735919062001141565b600e8190555060326200074d62000acf60201b60201c565b62000759919062001141565b600f819055505f601060016101000a81548160ff0219169083151502179055505050505062001384565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620007fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f290620011fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200086c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008639062001290565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009489190620012c1565b60405180910390a3505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ed906200132a565b60405180910390fd5b8060025f82825462000a0991906200134a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a5d91906200134a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac39190620012c1565b60405180910390a35050565b5f600254905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b5457607f821691505b60208210810362000b6a5762000b6962000b0f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b91565b62000bda868362000b91565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c2462000c1e62000c188462000bf2565b62000bfb565b62000bf2565b9050919050565b5f819050919050565b62000c3f8362000c04565b62000c5762000c4e8262000c2b565b84845462000b9d565b825550505050565b5f90565b62000c6d62000c5f565b62000c7a81848462000c34565b505050565b5b8181101562000ca15762000c955f8262000c63565b60018101905062000c80565b5050565b601f82111562000cf05762000cba8162000b70565b62000cc58462000b82565b8101602085101562000cd5578190505b62000ced62000ce48562000b82565b83018262000c7f565b50505b505050565b5f82821c905092915050565b5f62000d125f198460080262000cf5565b1980831691505092915050565b5f62000d2c838362000d01565b9150826002028217905092915050565b62000d478262000ad8565b67ffffffffffffffff81111562000d635762000d6262000ae2565b5b62000d6f825462000b3c565b62000d7c82828562000ca5565b5f60209050601f83116001811462000db2575f841562000d9d578287015190505b62000da9858262000d1f565b86555062000e18565b601f19841662000dc28662000b70565b5f5b8281101562000deb5784890151825560018201915060208501945060208101905062000dc4565b8683101562000e0b578489015162000e07601f89168262000d01565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e4f8262000e24565b9050919050565b62000e618162000e43565b811462000e6c575f80fd5b50565b5f8151905062000e7f8162000e56565b92915050565b5f6020828403121562000e9d5762000e9c62000e20565b5b5f62000eac8482850162000e6f565b91505092915050565b62000ec08162000e43565b82525050565b5f60408201905062000edb5f83018562000eb5565b62000eea602083018462000eb5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f7b5780860481111562000f535762000f5262000ef1565b5b600185161562000f635780820291505b808102905062000f738562000f1e565b945062000f33565b94509492505050565b5f8262000f95576001905062001067565b8162000fa4575f905062001067565b816001811462000fbd576002811462000fc85762000ffe565b600191505062001067565b60ff84111562000fdd5762000fdc62000ef1565b5b8360020a91508482111562000ff75762000ff662000ef1565b5b5062001067565b5060208310610133831016604e8410600b8410161715620010385782820a90508381111562001032576200103162000ef1565b5b62001067565b62001047848484600162000f2a565b9250905081840481111562001061576200106062000ef1565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010868262000bf2565b915062001093836200106e565b9250620010c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f84565b905092915050565b5f620010d68262000bf2565b9150620010e38362000bf2565b9250828202620010f38162000bf2565b915082820484148315176200110d576200110c62000ef1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200114d8262000bf2565b91506200115a8362000bf2565b9250826200116d576200116c62001114565b5b828204905092915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f620011e460248362001178565b9150620011f18262001188565b604082019050919050565b5f6020820190508181035f8301526200121581620011d6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200127860228362001178565b915062001285826200121c565b604082019050919050565b5f6020820190508181035f830152620012a9816200126a565b9050919050565b620012bb8162000bf2565b82525050565b5f602082019050620012d65f830184620012b0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001312601f8362001178565b91506200131f82620012dc565b602082019050919050565b5f6020820190508181035f830152620013438162001304565b9050919050565b5f620013568262000bf2565b9150620013638362000bf2565b92508282019050808211156200137e576200137d62000ef1565b5b92915050565b613ca180620013925f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063c02466681161009f578063e1247a341161006e578063e1247a3414610791578063e2f45605146107bb578063e5f7b94e146107e5578063f2fde38b1461080f578063f9d0831a1461083757610219565b8063c0246668146106d9578063c4918b4e14610701578063cd51e6d41461072b578063dd62ed3e1461075557610219565b8063a457c2d7116100e6578063a457c2d7146105e5578063a9059cbb14610621578063b1fde9f81461065d578063b8158d6014610685578063bb8c3ee0146106af57610219565b8063715018a6146105655780638a8c523c1461057b5780638da5cb5b1461059157806395d89b41146105bb57610219565b8063395093511161019a5780634fbee193116101695780634fbee193146104715780636238c589146104ad57806365048d08146104d55780636ddd1713146104ff57806370a082311461052957610219565b806339509351146103b9578063469329aa146103f557806349bd5a5e1461041d5780634ada218b1461044757610219565b80631694505e116101e15780631694505e146102d757806318160ddd1461030157806323b872dd1461032b578063313ce5671461036757806333bdd44a1461039157610219565b806302d05d3f1461021d57806306fdde0314610247578063095ea7b3146102715780630e8fa8c3146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b5061023161085f565b60405161023e9190612b7a565b60405180910390f35b348015610252575f80fd5b5061025b61089c565b6040516102689190612b7a565b60405180910390f35b34801561027c575f80fd5b5061029760048036038101906102929190612c2b565b61092c565b6040516102a49190612c83565b60405180910390f35b3480156102b8575f80fd5b506102c1610949565b6040516102ce9190612cab565b60405180910390f35b3480156102e2575f80fd5b506102eb61096e565b6040516102f89190612d1f565b60405180910390f35b34801561030c575f80fd5b50610315610993565b6040516103229190612d47565b60405180910390f35b348015610336575f80fd5b50610351600480360381019061034c9190612d60565b61099c565b60405161035e9190612c83565b60405180910390f35b348015610372575f80fd5b5061037b610ab6565b6040516103889190612dcb565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b29190612de4565b610abe565b005b3480156103c4575f80fd5b506103df60048036038101906103da9190612c2b565b610c5d565b6040516103ec9190612c83565b60405180910390f35b348015610400575f80fd5b5061041b60048036038101906104169190612de4565b610d04565b005b348015610428575f80fd5b50610431610ea3565b60405161043e9190612cab565b60405180910390f35b348015610452575f80fd5b5061045b610ec8565b6040516104689190612c83565b60405180910390f35b34801561047c575f80fd5b5061049760048036038101906104929190612de4565b610edb565b6040516104a49190612c83565b60405180910390f35b3480156104b8575f80fd5b506104d360048036038101906104ce9190612de4565b610f2d565b005b3480156104e0575f80fd5b506104e96110cc565b6040516104f69190612d47565b60405180910390f35b34801561050a575f80fd5b506105136110d2565b6040516105209190612c83565b60405180910390f35b348015610534575f80fd5b5061054f600480360381019061054a9190612de4565b6110e5565b60405161055c9190612d47565b60405180910390f35b348015610570575f80fd5b5061057961112a565b005b348015610586575f80fd5b5061058f61127d565b005b34801561059c575f80fd5b506105a56113ef565b6040516105b29190612cab565b60405180910390f35b3480156105c6575f80fd5b506105cf611417565b6040516105dc9190612b7a565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612c2b565b6114a7565b6040516106189190612c83565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190612c2b565b61158d565b6040516106549190612c83565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e9190612e39565b6115aa565b005b348015610690575f80fd5b506106996116f5565b6040516106a69190612d47565b60405180910390f35b3480156106ba575f80fd5b506106c36116fb565b6040516106d09190612d47565b60405180910390f35b3480156106e4575f80fd5b506106ff60048036038101906106fa9190612e77565b611701565b005b34801561070c575f80fd5b5061071561183d565b6040516107229190612d47565b60405180910390f35b348015610736575f80fd5b5061073f611843565b60405161074c9190612d47565b60405180910390f35b348015610760575f80fd5b5061077b60048036038101906107769190612eb5565b611849565b6040516107889190612d47565b60405180910390f35b34801561079c575f80fd5b506107a56118cb565b6040516107b29190612cab565b60405180910390f35b3480156107c6575f80fd5b506107cf6118f0565b6040516107dc9190612d47565b60405180910390f35b3480156107f0575f80fd5b506107f96118f6565b6040516108069190612cab565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190612de4565b61191b565b005b348015610842575f80fd5b5061085d60048036038101906108589190612de4565b611add565b005b60606040518060400160405280601081526020017f742e6d652f636f696e73756c745f746700000000000000000000000000000000815250905090565b6060600380546108ab90612f20565b80601f01602080910402602001604051908101604052809291908181526020018280546108d790612f20565b80156109225780601f106108f957610100808354040283529160200191610922565b820191905f5260205f20905b81548152906001019060200180831161090557829003601f168201915b5050505050905090565b5f61093f610938611d3a565b8484611d41565b6001905092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109e4611d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a9f5782811015610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8190612fc0565b60405180910390fd5b610a9e85610a96611d3a565b858403611d41565b5b610aaa858585611f04565b60019150509392505050565b5f6012905090565b610ac6611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb9906130b6565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f875729e534354aad41274eb650da7a936b839bd0300e091b20a39d52b0b7b519600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c529190612cab565b60405180910390a150565b5f610cfa610c69611d3a565b848460015f610c76611d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610cf59190613101565b611d41565b6001905092915050565b610d0c611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff906130b6565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f38e9c2afa8d3a9db0a7e15d7a681d8db3dd086963c44f0872177b4fe38ff1a91600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e989190612cab565b60405180910390a150565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060029054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610f35611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906130b6565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff14b3f155bfb66951097da4130484b4049e7ac88c63dd87dc605d622df178e39600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516110c19190612cab565b60405180910390a150565b600a5481565b601060019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611132611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611285611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a90613028565b60405180910390fd5b601060029054906101000a900460ff1615611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a9061317e565b60405180910390fd5b6001601060026101000a81548160ff0219169083151502179055506001601060016101000a81548160ff02191690831515021790555043601181905550426012819055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a601060029054906101000a900460ff166040516113e59190612c83565b60405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461142690612f20565b80601f016020809104026020016040519081016040528092919081815260200182805461145290612f20565b801561149d5780601f106114745761010080835404028352916020019161149d565b820191905f5260205f20905b81548152906001019060200180831161148057829003601f168201915b5050505050905090565b5f8060015f6114b4611d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561156e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115659061320c565b60405180910390fd5b611582611579611d3a565b85858403611d41565b600191505092915050565b5f6115a0611599611d3a565b8484611f04565b6001905092915050565b6115b2611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613028565b60405180910390fd5b620f424061164c610993565b6116569190613257565b8211611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061331d565b60405180910390fd5b81600e8190555080601060016101000a81548160ff0219169083151502179055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600e546040516116e99190612d47565b60405180910390a15050565b60125481565b60095481565b611709611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613028565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118319190612c83565b60405180910390a25050565b600f5481565b60115481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611923611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906133ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ae5611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613028565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd890613439565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4357611c3d473373ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b50611d37565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c999190612cab565b602060405180830381865afa158015611cb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd8919061346b565b6040518363ffffffff1660e01b8152600401611cf5929190613496565b6020604051808303815f875af1158015611d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3591906134d1565b505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da69061356c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e14906135fa565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ef79190612d47565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6990613688565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd790613716565b60405180910390fd5b601060029054906101000a900460ff1680612041575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612092575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c89061377e565b60405180910390fd5b5f81036120e8576120e383835f612535565b61247a565b5f6120f2306110e5565b90505f600e548210159050808015612116575060105f9054906101000a900460ff16155b801561216e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561218857505f600a546009546121869190613101565b115b80156121db575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121f35750601060019054906101000a900460ff165b1561225057600160105f6101000a81548160ff021916908315150217905550600f5482111561222c57612227600f54612794565b612236565b61223582612794565b5b5f60105f6101000a81548160ff0219169083151502179055505b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806122ec575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612302575060105f9054906101000a900460ff165b1561230f575f9050612413565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361238e57610a8c6012546123739190613101565b4210156123835760199050612389565b60095490505b612412565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361240d57610a8c6012546123f29190613101565b4210156124025760199050612408565b600a5490505b612411565b5f90505b5b5b5f81111561246b57600360115461242a9190613101565b431161243557606390505b5f60648286612444919061379c565b61244e9190613257565b9050808561245c91906137dd565b9450612469873083612535565b505b612476868686612535565b5050505b505050565b5f814710156124c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ba9061385a565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16836040516124e8906138a5565b5f6040518083038185875af1925050503d805f8114612522576040519150601f19603f3d011682016040523d82523d5f602084013e612527565b606091505b505090508091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a90613929565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612608906139b7565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268b90613a45565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127229190613101565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127869190612d47565b60405180910390a350505050565b5f4790505f600267ffffffffffffffff8111156127b4576127b3613a63565b5b6040519080825280602002602001820160405280156127e25781602001602082028036833780820191505090505b50905030815f815181106127f9576127f8613a90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561289d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c19190613ad1565b816001815181106128d5576128d4613a90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401612971959493929190613bec565b5f604051808303815f87803b158015612988575f80fd5b505af1925050508015612999575060015b6129a4575050612aed565b5f82476129b191906137dd565b90505f6004826129c19190613257565b9050612a0d81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b50612a5881600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b50612aae8447612a6891906137dd565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8583604051612ae0929190613c44565b60405180910390a1505050505b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b27578082015181840152602081019050612b0c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b4c82612af0565b612b568185612afa565b9350612b66818560208601612b0a565b612b6f81612b32565b840191505092915050565b5f6020820190508181035f830152612b928184612b42565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bc782612b9e565b9050919050565b612bd781612bbd565b8114612be1575f80fd5b50565b5f81359050612bf281612bce565b92915050565b5f819050919050565b612c0a81612bf8565b8114612c14575f80fd5b50565b5f81359050612c2581612c01565b92915050565b5f8060408385031215612c4157612c40612b9a565b5b5f612c4e85828601612be4565b9250506020612c5f85828601612c17565b9150509250929050565b5f8115159050919050565b612c7d81612c69565b82525050565b5f602082019050612c965f830184612c74565b92915050565b612ca581612bbd565b82525050565b5f602082019050612cbe5f830184612c9c565b92915050565b5f819050919050565b5f612ce7612ce2612cdd84612b9e565b612cc4565b612b9e565b9050919050565b5f612cf882612ccd565b9050919050565b5f612d0982612cee565b9050919050565b612d1981612cff565b82525050565b5f602082019050612d325f830184612d10565b92915050565b612d4181612bf8565b82525050565b5f602082019050612d5a5f830184612d38565b92915050565b5f805f60608486031215612d7757612d76612b9a565b5b5f612d8486828701612be4565b9350506020612d9586828701612be4565b9250506040612da686828701612c17565b9150509250925092565b5f60ff82169050919050565b612dc581612db0565b82525050565b5f602082019050612dde5f830184612dbc565b92915050565b5f60208284031215612df957612df8612b9a565b5b5f612e0684828501612be4565b91505092915050565b612e1881612c69565b8114612e22575f80fd5b50565b5f81359050612e3381612e0f565b92915050565b5f8060408385031215612e4f57612e4e612b9a565b5b5f612e5c85828601612c17565b9250506020612e6d85828601612e25565b9150509250929050565b5f8060408385031215612e8d57612e8c612b9a565b5b5f612e9a85828601612be4565b9250506020612eab85828601612e25565b9150509250929050565b5f8060408385031215612ecb57612eca612b9a565b5b5f612ed885828601612be4565b9250506020612ee985828601612be4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f3757607f821691505b602082108103612f4a57612f49612ef3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612faa602883612afa565b9150612fb582612f50565b604082019050919050565b5f6020820190508181035f830152612fd781612f9e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613012602083612afa565b915061301d82612fde565b602082019050919050565b5f6020820190508181035f83015261303f81613006565b9050919050565b7f43534c543a204665652072656365697665722063616e6e6f74206265207468655f8201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b5f6130a0602d83612afa565b91506130ab82613046565b604082019050919050565b5f6020820190508181035f8301526130cd81613094565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61310b82612bf8565b915061311683612bf8565b925082820190508082111561312e5761312d6130d4565b5b92915050565b7f43534c543a2054726164696e6720616c726561647920656e61626c65642e00005f82015250565b5f613168601e83612afa565b915061317382613134565b602082019050919050565b5f6020820190508181035f8301526131958161315c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6131f6602583612afa565b91506132018261319c565b604082019050919050565b5f6020820190508181035f830152613223816131ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61326182612bf8565b915061326c83612bf8565b92508261327c5761327b61322a565b5b828204905092915050565b7f43534c543a2053776170546f6b656e734174416d6f756e74206d7573742062655f8201527f2067726561746572207468616e20302e3030303125206f6620746f74616c207360208201527f7570706c79000000000000000000000000000000000000000000000000000000604082015250565b5f613307604583612afa565b915061331282613287565b606082019050919050565b5f6020820190508181035f830152613334816132fb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613395602683612afa565b91506133a08261333b565b604082019050919050565b5f6020820190508181035f8301526133c281613389565b9050919050565b7f43534c543a204f776e65722063616e6e6f7420636c61696d20636f6e747261635f8201527f7427732062616c616e6365206f6620697473206f776e20746f6b656e73000000602082015250565b5f613423603d83612afa565b915061342e826133c9565b604082019050919050565b5f6020820190508181035f83015261345081613417565b9050919050565b5f8151905061346581612c01565b92915050565b5f602082840312156134805761347f612b9a565b5b5f61348d84828501613457565b91505092915050565b5f6040820190506134a95f830185612c9c565b6134b66020830184612d38565b9392505050565b5f815190506134cb81612e0f565b92915050565b5f602082840312156134e6576134e5612b9a565b5b5f6134f3848285016134bd565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613556602483612afa565b9150613561826134fc565b604082019050919050565b5f6020820190508181035f8301526135838161354a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135e4602283612afa565b91506135ef8261358a565b604082019050919050565b5f6020820190508181035f830152613611816135d8565b9050919050565b7f43534c543a207472616e736665722066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613672602483612afa565b915061367d82613618565b604082019050919050565b5f6020820190508181035f83015261369f81613666565b9050919050565b7f43534c543a207472616e7366657220746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613700602283612afa565b915061370b826136a6565b604082019050919050565b5f6020820190508181035f83015261372d816136f4565b9050919050565b7f43534c543a2054726164696e67206e6f742079657420656e61626c65642100005f82015250565b5f613768601e83612afa565b915061377382613734565b602082019050919050565b5f6020820190508181035f8301526137958161375c565b9050919050565b5f6137a682612bf8565b91506137b183612bf8565b92508282026137bf81612bf8565b915082820484148315176137d6576137d56130d4565b5b5092915050565b5f6137e782612bf8565b91506137f283612bf8565b925082820390508181111561380a576138096130d4565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613844601d83612afa565b915061384f82613810565b602082019050919050565b5f6020820190508181035f83015261387181613838565b9050919050565b5f81905092915050565b50565b5f6138905f83613878565b915061389b82613882565b5f82019050919050565b5f6138af82613885565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613913602583612afa565b915061391e826138b9565b604082019050919050565b5f6020820190508181035f83015261394081613907565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139a1602383612afa565b91506139ac82613947565b604082019050919050565b5f6020820190508181035f8301526139ce81613995565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613a2f602683612afa565b9150613a3a826139d5565b604082019050919050565b5f6020820190508181035f830152613a5c81613a23565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613acb81612bce565b92915050565b5f60208284031215613ae657613ae5612b9a565b5b5f613af384828501613abd565b91505092915050565b5f819050919050565b5f613b1f613b1a613b1584613afc565b612cc4565b612bf8565b9050919050565b613b2f81613b05565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b6781612bbd565b82525050565b5f613b788383613b5e565b60208301905092915050565b5f602082019050919050565b5f613b9a82613b35565b613ba48185613b3f565b9350613baf83613b4f565b805f5b83811015613bdf578151613bc68882613b6d565b9750613bd183613b84565b925050600181019050613bb2565b5085935050505092915050565b5f60a082019050613bff5f830188612d38565b613c0c6020830187613b26565b8181036040830152613c1e8186613b90565b9050613c2d6060830185612c9c565b613c3a6080830184612d38565b9695505050505050565b5f604082019050613c575f830185612d38565b613c646020830184612d38565b939250505056fea26469706673582212206c9a73bb3e169dc51a7e80706d27666b4c7fba61b68cfb73b72974e27c7647ac64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610212575f3560e01c8063715018a611610117578063c02466681161009f578063e1247a341161006e578063e1247a3414610791578063e2f45605146107bb578063e5f7b94e146107e5578063f2fde38b1461080f578063f9d0831a1461083757610219565b8063c0246668146106d9578063c4918b4e14610701578063cd51e6d41461072b578063dd62ed3e1461075557610219565b8063a457c2d7116100e6578063a457c2d7146105e5578063a9059cbb14610621578063b1fde9f81461065d578063b8158d6014610685578063bb8c3ee0146106af57610219565b8063715018a6146105655780638a8c523c1461057b5780638da5cb5b1461059157806395d89b41146105bb57610219565b8063395093511161019a5780634fbee193116101695780634fbee193146104715780636238c589146104ad57806365048d08146104d55780636ddd1713146104ff57806370a082311461052957610219565b806339509351146103b9578063469329aa146103f557806349bd5a5e1461041d5780634ada218b1461044757610219565b80631694505e116101e15780631694505e146102d757806318160ddd1461030157806323b872dd1461032b578063313ce5671461036757806333bdd44a1461039157610219565b806302d05d3f1461021d57806306fdde0314610247578063095ea7b3146102715780630e8fa8c3146102ad57610219565b3661021957005b5f80fd5b348015610228575f80fd5b5061023161085f565b60405161023e9190612b7a565b60405180910390f35b348015610252575f80fd5b5061025b61089c565b6040516102689190612b7a565b60405180910390f35b34801561027c575f80fd5b5061029760048036038101906102929190612c2b565b61092c565b6040516102a49190612c83565b60405180910390f35b3480156102b8575f80fd5b506102c1610949565b6040516102ce9190612cab565b60405180910390f35b3480156102e2575f80fd5b506102eb61096e565b6040516102f89190612d1f565b60405180910390f35b34801561030c575f80fd5b50610315610993565b6040516103229190612d47565b60405180910390f35b348015610336575f80fd5b50610351600480360381019061034c9190612d60565b61099c565b60405161035e9190612c83565b60405180910390f35b348015610372575f80fd5b5061037b610ab6565b6040516103889190612dcb565b60405180910390f35b34801561039c575f80fd5b506103b760048036038101906103b29190612de4565b610abe565b005b3480156103c4575f80fd5b506103df60048036038101906103da9190612c2b565b610c5d565b6040516103ec9190612c83565b60405180910390f35b348015610400575f80fd5b5061041b60048036038101906104169190612de4565b610d04565b005b348015610428575f80fd5b50610431610ea3565b60405161043e9190612cab565b60405180910390f35b348015610452575f80fd5b5061045b610ec8565b6040516104689190612c83565b60405180910390f35b34801561047c575f80fd5b5061049760048036038101906104929190612de4565b610edb565b6040516104a49190612c83565b60405180910390f35b3480156104b8575f80fd5b506104d360048036038101906104ce9190612de4565b610f2d565b005b3480156104e0575f80fd5b506104e96110cc565b6040516104f69190612d47565b60405180910390f35b34801561050a575f80fd5b506105136110d2565b6040516105209190612c83565b60405180910390f35b348015610534575f80fd5b5061054f600480360381019061054a9190612de4565b6110e5565b60405161055c9190612d47565b60405180910390f35b348015610570575f80fd5b5061057961112a565b005b348015610586575f80fd5b5061058f61127d565b005b34801561059c575f80fd5b506105a56113ef565b6040516105b29190612cab565b60405180910390f35b3480156105c6575f80fd5b506105cf611417565b6040516105dc9190612b7a565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612c2b565b6114a7565b6040516106189190612c83565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190612c2b565b61158d565b6040516106549190612c83565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e9190612e39565b6115aa565b005b348015610690575f80fd5b506106996116f5565b6040516106a69190612d47565b60405180910390f35b3480156106ba575f80fd5b506106c36116fb565b6040516106d09190612d47565b60405180910390f35b3480156106e4575f80fd5b506106ff60048036038101906106fa9190612e77565b611701565b005b34801561070c575f80fd5b5061071561183d565b6040516107229190612d47565b60405180910390f35b348015610736575f80fd5b5061073f611843565b60405161074c9190612d47565b60405180910390f35b348015610760575f80fd5b5061077b60048036038101906107769190612eb5565b611849565b6040516107889190612d47565b60405180910390f35b34801561079c575f80fd5b506107a56118cb565b6040516107b29190612cab565b60405180910390f35b3480156107c6575f80fd5b506107cf6118f0565b6040516107dc9190612d47565b60405180910390f35b3480156107f0575f80fd5b506107f96118f6565b6040516108069190612cab565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190612de4565b61191b565b005b348015610842575f80fd5b5061085d60048036038101906108589190612de4565b611add565b005b60606040518060400160405280601081526020017f742e6d652f636f696e73756c745f746700000000000000000000000000000000815250905090565b6060600380546108ab90612f20565b80601f01602080910402602001604051908101604052809291908181526020018280546108d790612f20565b80156109225780601f106108f957610100808354040283529160200191610922565b820191905f5260205f20905b81548152906001019060200180831161090557829003601f168201915b5050505050905090565b5f61093f610938611d3a565b8484611d41565b6001905092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109e4611d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a9f5782811015610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8190612fc0565b60405180910390fd5b610a9e85610a96611d3a565b858403611d41565b5b610aaa858585611f04565b60019150509392505050565b5f6012905090565b610ac6611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb9906130b6565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f875729e534354aad41274eb650da7a936b839bd0300e091b20a39d52b0b7b519600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c529190612cab565b60405180910390a150565b5f610cfa610c69611d3a565b848460015f610c76611d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610cf59190613101565b611d41565b6001905092915050565b610d0c611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9190613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff906130b6565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f38e9c2afa8d3a9db0a7e15d7a681d8db3dd086963c44f0872177b4fe38ff1a91600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e989190612cab565b60405180910390a150565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060029054906101000a900460ff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610f35611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906130b6565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff14b3f155bfb66951097da4130484b4049e7ac88c63dd87dc605d622df178e39600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516110c19190612cab565b60405180910390a150565b600a5481565b601060019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611132611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611285611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a90613028565b60405180910390fd5b601060029054906101000a900460ff1615611363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135a9061317e565b60405180910390fd5b6001601060026101000a81548160ff0219169083151502179055506001601060016101000a81548160ff02191690831515021790555043601181905550426012819055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a601060029054906101000a900460ff166040516113e59190612c83565b60405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461142690612f20565b80601f016020809104026020016040519081016040528092919081815260200182805461145290612f20565b801561149d5780601f106114745761010080835404028352916020019161149d565b820191905f5260205f20905b81548152906001019060200180831161148057829003601f168201915b5050505050905090565b5f8060015f6114b4611d3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561156e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115659061320c565b60405180910390fd5b611582611579611d3a565b85858403611d41565b600191505092915050565b5f6115a0611599611d3a565b8484611f04565b6001905092915050565b6115b2611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613028565b60405180910390fd5b620f424061164c610993565b6116569190613257565b8211611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061331d565b60405180910390fd5b81600e8190555080601060016101000a81548160ff0219169083151502179055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600e546040516116e99190612d47565b60405180910390a15050565b60125481565b60095481565b611709611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613028565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516118319190612c83565b60405180910390a25050565b600f5481565b60115481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611923611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a890613028565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906133ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ae5611d3a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a90613028565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd890613439565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4357611c3d473373ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b50611d37565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c999190612cab565b602060405180830381865afa158015611cb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd8919061346b565b6040518363ffffffff1660e01b8152600401611cf5929190613496565b6020604051808303815f875af1158015611d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3591906134d1565b505b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da69061356c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e14906135fa565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ef79190612d47565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6990613688565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd790613716565b60405180910390fd5b601060029054906101000a900460ff1680612041575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612092575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c89061377e565b60405180910390fd5b5f81036120e8576120e383835f612535565b61247a565b5f6120f2306110e5565b90505f600e548210159050808015612116575060105f9054906101000a900460ff16155b801561216e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561218857505f600a546009546121869190613101565b115b80156121db575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121f35750601060019054906101000a900460ff165b1561225057600160105f6101000a81548160ff021916908315150217905550600f5482111561222c57612227600f54612794565b612236565b61223582612794565b5b5f60105f6101000a81548160ff0219169083151502179055505b5f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806122ec575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612302575060105f9054906101000a900460ff165b1561230f575f9050612413565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361238e57610a8c6012546123739190613101565b4210156123835760199050612389565b60095490505b612412565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361240d57610a8c6012546123f29190613101565b4210156124025760199050612408565b600a5490505b612411565b5f90505b5b5b5f81111561246b57600360115461242a9190613101565b431161243557606390505b5f60648286612444919061379c565b61244e9190613257565b9050808561245c91906137dd565b9450612469873083612535565b505b612476868686612535565b5050505b505050565b5f814710156124c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ba9061385a565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16836040516124e8906138a5565b5f6040518083038185875af1925050503d805f8114612522576040519150601f19603f3d011682016040523d82523d5f602084013e612527565b606091505b505090508091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a90613929565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612608906139b7565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268b90613a45565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127229190613101565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127869190612d47565b60405180910390a350505050565b5f4790505f600267ffffffffffffffff8111156127b4576127b3613a63565b5b6040519080825280602002602001820160405280156127e25781602001602082028036833780820191505090505b50905030815f815181106127f9576127f8613a90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561289d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c19190613ad1565b816001815181106128d5576128d4613a90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b8152600401612971959493929190613bec565b5f604051808303815f87803b158015612988575f80fd5b505af1925050508015612999575060015b6129a4575050612aed565b5f82476129b191906137dd565b90505f6004826129c19190613257565b9050612a0d81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b50612a5881600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b50612aae8447612a6891906137dd565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661247f90919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8583604051612ae0929190613c44565b60405180910390a1505050505b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b27578082015181840152602081019050612b0c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b4c82612af0565b612b568185612afa565b9350612b66818560208601612b0a565b612b6f81612b32565b840191505092915050565b5f6020820190508181035f830152612b928184612b42565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bc782612b9e565b9050919050565b612bd781612bbd565b8114612be1575f80fd5b50565b5f81359050612bf281612bce565b92915050565b5f819050919050565b612c0a81612bf8565b8114612c14575f80fd5b50565b5f81359050612c2581612c01565b92915050565b5f8060408385031215612c4157612c40612b9a565b5b5f612c4e85828601612be4565b9250506020612c5f85828601612c17565b9150509250929050565b5f8115159050919050565b612c7d81612c69565b82525050565b5f602082019050612c965f830184612c74565b92915050565b612ca581612bbd565b82525050565b5f602082019050612cbe5f830184612c9c565b92915050565b5f819050919050565b5f612ce7612ce2612cdd84612b9e565b612cc4565b612b9e565b9050919050565b5f612cf882612ccd565b9050919050565b5f612d0982612cee565b9050919050565b612d1981612cff565b82525050565b5f602082019050612d325f830184612d10565b92915050565b612d4181612bf8565b82525050565b5f602082019050612d5a5f830184612d38565b92915050565b5f805f60608486031215612d7757612d76612b9a565b5b5f612d8486828701612be4565b9350506020612d9586828701612be4565b9250506040612da686828701612c17565b9150509250925092565b5f60ff82169050919050565b612dc581612db0565b82525050565b5f602082019050612dde5f830184612dbc565b92915050565b5f60208284031215612df957612df8612b9a565b5b5f612e0684828501612be4565b91505092915050565b612e1881612c69565b8114612e22575f80fd5b50565b5f81359050612e3381612e0f565b92915050565b5f8060408385031215612e4f57612e4e612b9a565b5b5f612e5c85828601612c17565b9250506020612e6d85828601612e25565b9150509250929050565b5f8060408385031215612e8d57612e8c612b9a565b5b5f612e9a85828601612be4565b9250506020612eab85828601612e25565b9150509250929050565b5f8060408385031215612ecb57612eca612b9a565b5b5f612ed885828601612be4565b9250506020612ee985828601612be4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f3757607f821691505b602082108103612f4a57612f49612ef3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612faa602883612afa565b9150612fb582612f50565b604082019050919050565b5f6020820190508181035f830152612fd781612f9e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613012602083612afa565b915061301d82612fde565b602082019050919050565b5f6020820190508181035f83015261303f81613006565b9050919050565b7f43534c543a204665652072656365697665722063616e6e6f74206265207468655f8201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b5f6130a0602d83612afa565b91506130ab82613046565b604082019050919050565b5f6020820190508181035f8301526130cd81613094565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61310b82612bf8565b915061311683612bf8565b925082820190508082111561312e5761312d6130d4565b5b92915050565b7f43534c543a2054726164696e6720616c726561647920656e61626c65642e00005f82015250565b5f613168601e83612afa565b915061317382613134565b602082019050919050565b5f6020820190508181035f8301526131958161315c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6131f6602583612afa565b91506132018261319c565b604082019050919050565b5f6020820190508181035f830152613223816131ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61326182612bf8565b915061326c83612bf8565b92508261327c5761327b61322a565b5b828204905092915050565b7f43534c543a2053776170546f6b656e734174416d6f756e74206d7573742062655f8201527f2067726561746572207468616e20302e3030303125206f6620746f74616c207360208201527f7570706c79000000000000000000000000000000000000000000000000000000604082015250565b5f613307604583612afa565b915061331282613287565b606082019050919050565b5f6020820190508181035f830152613334816132fb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613395602683612afa565b91506133a08261333b565b604082019050919050565b5f6020820190508181035f8301526133c281613389565b9050919050565b7f43534c543a204f776e65722063616e6e6f7420636c61696d20636f6e747261635f8201527f7427732062616c616e6365206f6620697473206f776e20746f6b656e73000000602082015250565b5f613423603d83612afa565b915061342e826133c9565b604082019050919050565b5f6020820190508181035f83015261345081613417565b9050919050565b5f8151905061346581612c01565b92915050565b5f602082840312156134805761347f612b9a565b5b5f61348d84828501613457565b91505092915050565b5f6040820190506134a95f830185612c9c565b6134b66020830184612d38565b9392505050565b5f815190506134cb81612e0f565b92915050565b5f602082840312156134e6576134e5612b9a565b5b5f6134f3848285016134bd565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613556602483612afa565b9150613561826134fc565b604082019050919050565b5f6020820190508181035f8301526135838161354a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135e4602283612afa565b91506135ef8261358a565b604082019050919050565b5f6020820190508181035f830152613611816135d8565b9050919050565b7f43534c543a207472616e736665722066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613672602483612afa565b915061367d82613618565b604082019050919050565b5f6020820190508181035f83015261369f81613666565b9050919050565b7f43534c543a207472616e7366657220746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613700602283612afa565b915061370b826136a6565b604082019050919050565b5f6020820190508181035f83015261372d816136f4565b9050919050565b7f43534c543a2054726164696e67206e6f742079657420656e61626c65642100005f82015250565b5f613768601e83612afa565b915061377382613734565b602082019050919050565b5f6020820190508181035f8301526137958161375c565b9050919050565b5f6137a682612bf8565b91506137b183612bf8565b92508282026137bf81612bf8565b915082820484148315176137d6576137d56130d4565b5b5092915050565b5f6137e782612bf8565b91506137f283612bf8565b925082820390508181111561380a576138096130d4565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613844601d83612afa565b915061384f82613810565b602082019050919050565b5f6020820190508181035f83015261387181613838565b9050919050565b5f81905092915050565b50565b5f6138905f83613878565b915061389b82613882565b5f82019050919050565b5f6138af82613885565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613913602583612afa565b915061391e826138b9565b604082019050919050565b5f6020820190508181035f83015261394081613907565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139a1602383612afa565b91506139ac82613947565b604082019050919050565b5f6020820190508181035f8301526139ce81613995565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613a2f602683612afa565b9150613a3a826139d5565b604082019050919050565b5f6020820190508181035f830152613a5c81613a23565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613acb81612bce565b92915050565b5f60208284031215613ae657613ae5612b9a565b5b5f613af384828501613abd565b91505092915050565b5f819050919050565b5f613b1f613b1a613b1584613afc565b612cc4565b612bf8565b9050919050565b613b2f81613b05565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b6781612bbd565b82525050565b5f613b788383613b5e565b60208301905092915050565b5f602082019050919050565b5f613b9a82613b35565b613ba48185613b3f565b9350613baf83613b4f565b805f5b83811015613bdf578151613bc68882613b6d565b9750613bd183613b84565b925050600181019050613bb2565b5085935050505092915050565b5f60a082019050613bff5f830188612d38565b613c0c6020830187613b26565b8181036040830152613c1e8186613b90565b9050613c2d6060830185612c9c565b613c3a6080830184612d38565b9695505050505050565b5f604082019050613c575f830185612d38565b613c646020830184612d38565b939250505056fea26469706673582212206c9a73bb3e169dc51a7e80706d27666b4c7fba61b68cfb73b72974e27c7647ac64736f6c63430008150033

Deployed Bytecode Sourcemap

8210:8282:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10900:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4121:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5035:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8503:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8290:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4442:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5212:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4341:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12463:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5793:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11808:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8338:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12774:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11615:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12147:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8469:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8713:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4558:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3310:148;;;;;;;;;;;;;:::i;:::-;;12876:307;;;;;;;;;;;;;:::i;:::-;;3096:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4229:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6016:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4693:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15264:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12841:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8438:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11422:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8650:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12807:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4876:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8570:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8609:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8536:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3466:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11007:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10900:99;10940:13;10966:25;;;;;;;;;;;;;;;;;;;10900:99;:::o;4121:100::-;4175:13;4208:5;4201:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4121:100;:::o;5035:169::-;5118:4;5135:39;5144:12;:10;:12::i;:::-;5158:7;5167:6;5135:8;:39::i;:::-;5192:4;5185:11;;5035:169;;;;:::o;8503:26::-;;;;;;;;;;;;;:::o;8290:41::-;;;;;;;;;;;;;:::o;4442:108::-;4503:7;4530:12;;4523:19;;4442:108;:::o;5212:573::-;5352:4;5369:24;5396:11;:19;5408:6;5396:19;;;;;;;;;;;;;;;:33;5416:12;:10;:12::i;:::-;5396:33;;;;;;;;;;;;;;;;5369:60;;5464:17;5444:16;:37;5440:265;;5526:6;5506:16;:26;;5498:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5621:57;5630:6;5638:12;:10;:12::i;:::-;5671:6;5652:16;:25;5621:8;:57::i;:::-;5440:265;5717:36;5727:6;5735:9;5746:6;5717:9;:36::i;:::-;5773:4;5766:11;;;5212:573;;;;;:::o;4341:93::-;4399:5;4424:2;4417:9;;4341:93;:::o;12463:249::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12570:1:::1;12547:25;;:11;:25;;::::0;12539:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12646:11;12633:10;;:24;;;;;;;;;;;;;;;;;;12675:29;12693:10;;;;;;;;;;;12675:29;;;;;;:::i;:::-;;;;;;;;12463:249:::0;:::o;5793:215::-;5881:4;5898:80;5907:12;:10;:12::i;:::-;5921:7;5967:10;5930:11;:25;5942:12;:10;:12::i;:::-;5930:25;;;;;;;;;;;;;;;:34;5956:7;5930:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5898:8;:80::i;:::-;5996:4;5989:11;;5793:215;;;;:::o;11808:277::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11927:1:::1;11900:29;;:15;:29;;::::0;11892:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12007:15;11990:14;;:32;;;;;;;;;;;;;;;;;;12040:37;12062:14;;;;;;;;;;;12040:37;;;;;;:::i;:::-;;;;;;;;11808:277:::0;:::o;8338:29::-;;;;;;;;;;;;;:::o;12774:26::-;;;;;;;;;;;;;:::o;11615:125::-;11680:4;11704:19;:28;11724:7;11704:28;;;;;;;;;;;;;;;;;;;;;;;;;11697:35;;11615:125;;;:::o;12147:256::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12257:1:::1;12233:26;;:12;:26;;::::0;12225:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12334:12;12320:11;;:26;;;;;;;;;;;;;;;;;;12364:31;12383:11;;;;;;;;;;;12364:31;;;;;;:::i;:::-;;;;;;;;12147:256:::0;:::o;8469:25::-;;;;:::o;8713:26::-;;;;;;;;;;;;;:::o;4558:127::-;4632:7;4659:9;:18;4669:7;4659:18;;;;;;;;;;;;;;;;4652:25;;4558:127;;;:::o;3310:148::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3417:1:::1;3380:40;;3401:6;;;;;;;;;;;3380:40;;;;;;;;;;;;3448:1;3431:6;;:19;;;;;;;;;;;;;;;;;;3310:148::o:0;12876:307::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12939:14:::1;;;;;;;;;;;12938:15;12930:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13016:4;12999:14;;:21;;;;;;;;;;;;;;;;;;13045:4;13031:11;;:18;;;;;;;;;;;;;;;;;;13075:12;13060;:27;;;;13112:15;13098:11;:29;;;;13145:30;13160:14;;;;;;;;;;;13145:30;;;;;;:::i;:::-;;;;;;;;12876:307::o:0;3096:79::-;3134:7;3161:6;;;;;;;;;;;3154:13;;3096:79;:::o;4229:104::-;4285:13;4318:7;4311:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4229:104;:::o;6016:413::-;6109:4;6126:24;6153:11;:25;6165:12;:10;:12::i;:::-;6153:25;;;;;;;;;;;;;;;:34;6179:7;6153:34;;;;;;;;;;;;;;;;6126:61;;6226:15;6206:16;:35;;6198:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6319:67;6328:12;:10;:12::i;:::-;6342:7;6370:15;6351:16;:34;6319:8;:67::i;:::-;6417:4;6410:11;;;6016:413;;;;:::o;4693:175::-;4779:4;4796:42;4806:12;:10;:12::i;:::-;4820:9;4831:6;4796:9;:42::i;:::-;4856:4;4849:11;;4693:175;;;;:::o;15264:366::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15398:9:::1;15382:13;:11;:13::i;:::-;:25;;;;:::i;:::-;15370:9;:37;15362:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;15513:9;15492:18;:30;;;;15547:12;15533:11;;:26;;;;;;;;;;;;;;;;;;15577:45;15603:18;;15577:45;;;;;;:::i;:::-;;;;;;;;15264:366:::0;;:::o;12841:26::-;;;;:::o;8438:24::-;;;;:::o;11422:185::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11539:8:::1;11508:19;:28;11528:7;11508:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11581:7;11565:34;;;11590:8;11565:34;;;;;;:::i;:::-;;;;;;;;11422:185:::0;;:::o;8650:23::-;;;;:::o;12807:27::-;;;;:::o;4876:151::-;4965:7;4992:11;:18;5004:5;4992:18;;;;;;;;;;;;;;;:27;5011:7;4992:27;;;;;;;;;;;;;;;;4985:34;;4876:151;;;;:::o;8570:30::-;;;;;;;;;;;;;:::o;8609:34::-;;;;:::o;8536:27::-;;;;;;;;;;;;;:::o;3466:244::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3575:1:::1;3555:22;;:8;:22;;::::0;3547:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3665:8;3636:38;;3657:6;;;;;;;;;;;3636:38;;;;;;;;;;;;3694:8;3685:6;;:17;;;;;;;;;;;;;;;;;;3466:244:::0;:::o;11007:407::-;3233:12;:10;:12::i;:::-;3223:22;;:6;;;;;;;;;;;:22;;;3215:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11103:4:::1;11086:22;;:5;:22;;::::0;11078:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11206:3;11189:21;;:5;:21;;::::0;11185:127:::1;;11227:52;11257:21;11235:10;11227:29;;;;:52;;;;:::i;:::-;;11294:7;;11185:127;11339:5;11332:22;;;11355:10;11374:5;11367:23;;;11399:4;11367:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11332:74;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3293:1;11007:407:::0;:::o;2419:98::-;2472:7;2499:10;2492:17;;2419:98;:::o;7823:380::-;7976:1;7959:19;;:5;:19;;;7951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8057:1;8038:21;;:7;:21;;;8030:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8141:6;8111:11;:18;8123:5;8111:18;;;;;;;;;;;;;;;:27;8130:7;8111:27;;;;;;;;;;;;;;;:36;;;;8179:7;8163:32;;8172:5;8163:32;;;8188:6;8163:32;;;;;;:::i;:::-;;;;;;;;7823:380;;;:::o;13191:2065::-;13304:1;13288:18;;:4;:18;;;13280:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13380:1;13366:16;;:2;:16;;;13358:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;13440:14;;;;;;;;;;;:43;;;;13458:19;:25;13478:4;13458:25;;;;;;;;;;;;;;;;;;;;;;;;;13440:43;:70;;;;13487:19;:23;13507:2;13487:23;;;;;;;;;;;;;;;;;;;;;;;;;13440:70;13432:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;13579:1;13569:6;:11;13565:93;;13597:28;13613:4;13619:2;13623:1;13597:15;:28::i;:::-;13640:7;;13565:93;13664:28;13695:24;13713:4;13695:9;:24::i;:::-;13664:55;;13732:12;13771:18;;13747:20;:42;;13732:57;;13806:7;:33;;;;;13831:8;;;;;;;;;;;13830:9;13806:33;:69;;;;;13862:13;;;;;;;;;;;13856:19;;:2;:19;;;13806:69;:110;;;;;13915:1;13903:9;;13892:8;;:20;;;;:::i;:::-;:24;13806:110;:153;;;;;13934:19;:25;13954:4;13934:25;;;;;;;;;;;;;;;;;;;;;;;;;13933:26;13806:153;:181;;;;;13976:11;;;;;;;;;;;13806:181;13802:464;;;14025:4;14014:8;;:15;;;;;;;;;;;;;;;;;;14073:7;;14050:20;:30;14046:176;;;14101:23;14116:7;;14101:14;:23::i;:::-;14046:176;;;14170:36;14185:20;14170:14;:36::i;:::-;14046:176;14249:5;14238:8;;:16;;;;;;;;;;;;;;;;;;13802:464;14278:18;14311:19;:25;14331:4;14311:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;14340:19;:23;14360:2;14340:23;;;;;;;;;;;;;;;;;;;;;;;;;14311:52;:64;;;;14367:8;;;;;;;;;;;14311:64;14307:600;;;14405:1;14392:14;;14307:600;;;14436:13;;;;;;;;;;;14428:21;;:4;:21;;;14424:483;;14501:10;14487:11;;:24;;;;:::i;:::-;14469:15;:42;14466:159;;;14545:2;14532:15;;14466:159;;;14601:8;;14588:21;;14466:159;14424:483;;;14652:13;;;;;;;;;;;14646:19;;:2;:19;;;14642:265;;14717:10;14703:11;;:24;;;;:::i;:::-;14685:15;:42;14682:160;;;14761:2;14748:15;;14682:160;;;14817:9;;14804:22;;14682:160;14642:265;;;14894:1;14881:14;;14642:265;14424:483;14307:600;14936:1;14923:10;:14;14919:284;;;14988:1;14973:12;;:16;;;;:::i;:::-;14957:12;:32;14954:87;;15023:2;15010:15;;14954:87;15055:12;15094:3;15080:10;15071:6;:19;;;;:::i;:::-;15070:27;;;;:::i;:::-;15055:42;;15130:4;15121:6;:13;;;;:::i;:::-;15112:22;;15149:42;15165:4;15179;15186;15149:15;:42::i;:::-;14939:264;14919:284;15215:33;15231:4;15237:2;15241:6;15215:15;:33::i;:::-;13269:1987;;;13191:2065;;;;:::o;2094:285::-;2173:4;2222:6;2197:21;:31;;2189:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2276:12;2294:9;:14;;2316:6;2294:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2275:52;;;2345:7;2338:14;;;2094:285;;;;:::o;6437:614::-;6595:1;6577:20;;:6;:20;;;6569:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6679:1;6658:23;;:9;:23;;;6650:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6734:21;6758:9;:17;6768:6;6758:17;;;;;;;;;;;;;;;;6734:41;;6811:6;6794:13;:23;;6786:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6932:6;6916:13;:22;6896:9;:17;6906:6;6896:17;;;;;;;;;;;;;;;:42;;;;6984:6;6960:9;:20;6970:9;6960:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7025:9;7008:35;;7017:6;7008:35;;;7036:6;7008:35;;;;;;:::i;:::-;;;;;;;;6558:493;6437:614;;;:::o;15638:851::-;15702:22;15727:21;15702:46;;15761:21;15799:1;15785:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15761:40;;15830:4;15812;15817:1;15812:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15856:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15846:4;15851:1;15846:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15895:15;;;;;;;;;;;:66;;;15976:11;16002:1;16018:4;16045;16065:15;15895:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15891:243;;16116:7;;;;15891:243;16146:18;16191:14;16167:21;:38;;;;:::i;:::-;16146:59;;16216:12;16244:1;16231:10;:14;;;;:::i;:::-;16216:29;;16258:36;16289:4;16266:11;;;;;;;;;;;16258:30;;;;:36;;;;:::i;:::-;;16305:35;16335:4;16313:10;;;;;;;;;;;16305:29;;;;:35;;;;:::i;:::-;;16351:73;16409:14;16385:21;:38;;;;:::i;:::-;16359:14;;;;;;;;;;;16351:33;;;;:73;;;;:::i;:::-;;16442:39;16457:11;16470:10;16442:39;;;;;;;:::i;:::-;;;;;;;;15691:798;;;;15638:851;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798: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:151::-;4219:9;4252:37;4283:5;4252:37;:::i;:::-;4239:50;;4144:151;;;:::o;4301:181::-;4413:62;4469:5;4413:62;:::i;:::-;4408:3;4401:75;4301:181;;:::o;4488:272::-;4606:4;4644:2;4633:9;4629:18;4621:26;;4657:96;4750:1;4739:9;4735:17;4726:6;4657:96;:::i;:::-;4488:272;;;;:::o;4766:118::-;4853:24;4871:5;4853:24;:::i;:::-;4848:3;4841:37;4766:118;;:::o;4890:222::-;4983:4;5021:2;5010:9;5006:18;4998:26;;5034:71;5102:1;5091:9;5087:17;5078:6;5034:71;:::i;:::-;4890:222;;;;:::o;5118:619::-;5195:6;5203;5211;5260:2;5248:9;5239:7;5235:23;5231:32;5228:119;;;5266:79;;:::i;:::-;5228:119;5386:1;5411:53;5456:7;5447:6;5436:9;5432:22;5411:53;:::i;:::-;5401:63;;5357:117;5513:2;5539:53;5584:7;5575:6;5564:9;5560:22;5539:53;:::i;:::-;5529:63;;5484:118;5641:2;5667:53;5712:7;5703:6;5692:9;5688:22;5667:53;:::i;:::-;5657:63;;5612:118;5118:619;;;;;:::o;5743:86::-;5778:7;5818:4;5811:5;5807:16;5796:27;;5743:86;;;:::o;5835:112::-;5918:22;5934:5;5918:22;:::i;:::-;5913:3;5906:35;5835:112;;:::o;5953:214::-;6042:4;6080:2;6069:9;6065:18;6057:26;;6093:67;6157:1;6146:9;6142:17;6133:6;6093:67;:::i;:::-;5953:214;;;;:::o;6173:329::-;6232:6;6281:2;6269:9;6260:7;6256:23;6252:32;6249:119;;;6287:79;;:::i;:::-;6249:119;6407:1;6432:53;6477:7;6468:6;6457:9;6453:22;6432:53;:::i;:::-;6422:63;;6378:117;6173:329;;;;:::o;6508:116::-;6578:21;6593:5;6578:21;:::i;:::-;6571:5;6568:32;6558:60;;6614:1;6611;6604:12;6558:60;6508:116;:::o;6630:133::-;6673:5;6711:6;6698:20;6689:29;;6727:30;6751:5;6727:30;:::i;:::-;6630:133;;;;:::o;6769:468::-;6834:6;6842;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7017:1;7042:53;7087:7;7078:6;7067:9;7063:22;7042:53;:::i;:::-;7032:63;;6988:117;7144:2;7170:50;7212:7;7203:6;7192:9;7188:22;7170:50;:::i;:::-;7160:60;;7115:115;6769:468;;;;;:::o;7243:::-;7308:6;7316;7365:2;7353:9;7344:7;7340:23;7336:32;7333:119;;;7371:79;;:::i;:::-;7333:119;7491:1;7516:53;7561:7;7552:6;7541:9;7537:22;7516:53;:::i;:::-;7506:63;;7462:117;7618:2;7644:50;7686:7;7677:6;7666:9;7662:22;7644:50;:::i;:::-;7634:60;;7589:115;7243:468;;;;;:::o;7717:474::-;7785:6;7793;7842:2;7830:9;7821:7;7817:23;7813:32;7810:119;;;7848:79;;:::i;:::-;7810:119;7968:1;7993:53;8038:7;8029:6;8018:9;8014:22;7993:53;:::i;:::-;7983:63;;7939:117;8095:2;8121:53;8166:7;8157:6;8146:9;8142:22;8121:53;:::i;:::-;8111:63;;8066:118;7717:474;;;;;:::o;8197:180::-;8245:77;8242:1;8235:88;8342:4;8339:1;8332:15;8366:4;8363:1;8356:15;8383:320;8427:6;8464:1;8458:4;8454:12;8444:22;;8511:1;8505:4;8501:12;8532:18;8522:81;;8588:4;8580:6;8576:17;8566:27;;8522:81;8650:2;8642:6;8639:14;8619:18;8616:38;8613:84;;8669:18;;:::i;:::-;8613:84;8434:269;8383:320;;;:::o;8709:227::-;8849:34;8845:1;8837:6;8833:14;8826:58;8918:10;8913:2;8905:6;8901:15;8894:35;8709:227;:::o;8942:366::-;9084:3;9105:67;9169:2;9164:3;9105:67;:::i;:::-;9098:74;;9181:93;9270:3;9181:93;:::i;:::-;9299:2;9294:3;9290:12;9283:19;;8942:366;;;:::o;9314:419::-;9480:4;9518:2;9507:9;9503:18;9495:26;;9567:9;9561:4;9557:20;9553:1;9542:9;9538:17;9531:47;9595:131;9721:4;9595:131;:::i;:::-;9587:139;;9314:419;;;:::o;9739:182::-;9879:34;9875:1;9867:6;9863:14;9856:58;9739:182;:::o;9927:366::-;10069:3;10090:67;10154:2;10149:3;10090:67;:::i;:::-;10083:74;;10166:93;10255:3;10166:93;:::i;:::-;10284:2;10279:3;10275:12;10268:19;;9927:366;;;:::o;10299:419::-;10465:4;10503:2;10492:9;10488:18;10480:26;;10552:9;10546:4;10542:20;10538:1;10527:9;10523:17;10516:47;10580:131;10706:4;10580:131;:::i;:::-;10572:139;;10299:419;;;:::o;10724:232::-;10864:34;10860:1;10852:6;10848:14;10841:58;10933:15;10928:2;10920:6;10916:15;10909:40;10724:232;:::o;10962:366::-;11104:3;11125:67;11189:2;11184:3;11125:67;:::i;:::-;11118:74;;11201:93;11290:3;11201:93;:::i;:::-;11319:2;11314:3;11310:12;11303:19;;10962:366;;;:::o;11334:419::-;11500:4;11538:2;11527:9;11523:18;11515:26;;11587:9;11581:4;11577:20;11573:1;11562:9;11558:17;11551:47;11615:131;11741:4;11615:131;:::i;:::-;11607:139;;11334:419;;;:::o;11759:180::-;11807:77;11804:1;11797:88;11904:4;11901:1;11894:15;11928:4;11925:1;11918:15;11945:191;11985:3;12004:20;12022:1;12004:20;:::i;:::-;11999:25;;12038:20;12056:1;12038:20;:::i;:::-;12033:25;;12081:1;12078;12074:9;12067:16;;12102:3;12099:1;12096:10;12093:36;;;12109:18;;:::i;:::-;12093:36;11945:191;;;;:::o;12142:180::-;12282:32;12278:1;12270:6;12266:14;12259:56;12142:180;:::o;12328:366::-;12470:3;12491:67;12555:2;12550:3;12491:67;:::i;:::-;12484:74;;12567:93;12656:3;12567:93;:::i;:::-;12685:2;12680:3;12676:12;12669:19;;12328:366;;;:::o;12700:419::-;12866:4;12904:2;12893:9;12889:18;12881:26;;12953:9;12947:4;12943:20;12939:1;12928:9;12924:17;12917:47;12981:131;13107:4;12981:131;:::i;:::-;12973:139;;12700:419;;;:::o;13125:224::-;13265:34;13261:1;13253:6;13249:14;13242:58;13334:7;13329:2;13321:6;13317:15;13310:32;13125:224;:::o;13355:366::-;13497:3;13518:67;13582:2;13577:3;13518:67;:::i;:::-;13511:74;;13594:93;13683:3;13594:93;:::i;:::-;13712:2;13707:3;13703:12;13696:19;;13355:366;;;:::o;13727:419::-;13893:4;13931:2;13920:9;13916:18;13908:26;;13980:9;13974:4;13970:20;13966:1;13955:9;13951:17;13944:47;14008:131;14134:4;14008:131;:::i;:::-;14000:139;;13727:419;;;:::o;14152:180::-;14200:77;14197:1;14190:88;14297:4;14294:1;14287:15;14321:4;14318:1;14311:15;14338:185;14378:1;14395:20;14413:1;14395:20;:::i;:::-;14390:25;;14429:20;14447:1;14429:20;:::i;:::-;14424:25;;14468:1;14458:35;;14473:18;;:::i;:::-;14458:35;14515:1;14512;14508:9;14503:14;;14338:185;;;;:::o;14529:293::-;14669:34;14665:1;14657:6;14653:14;14646:58;14738:34;14733:2;14725:6;14721:15;14714:59;14807:7;14802:2;14794:6;14790:15;14783:32;14529:293;:::o;14828:366::-;14970:3;14991:67;15055:2;15050:3;14991:67;:::i;:::-;14984:74;;15067:93;15156:3;15067:93;:::i;:::-;15185:2;15180:3;15176:12;15169:19;;14828:366;;;:::o;15200:419::-;15366:4;15404:2;15393:9;15389:18;15381:26;;15453:9;15447:4;15443:20;15439:1;15428:9;15424:17;15417:47;15481:131;15607:4;15481:131;:::i;:::-;15473:139;;15200:419;;;:::o;15625:225::-;15765:34;15761:1;15753:6;15749:14;15742:58;15834:8;15829:2;15821:6;15817:15;15810:33;15625:225;:::o;15856:366::-;15998:3;16019:67;16083:2;16078:3;16019:67;:::i;:::-;16012:74;;16095:93;16184:3;16095:93;:::i;:::-;16213:2;16208:3;16204:12;16197:19;;15856:366;;;:::o;16228:419::-;16394:4;16432:2;16421:9;16417:18;16409:26;;16481:9;16475:4;16471:20;16467:1;16456:9;16452:17;16445:47;16509:131;16635:4;16509:131;:::i;:::-;16501:139;;16228:419;;;:::o;16653:248::-;16793:34;16789:1;16781:6;16777:14;16770:58;16862:31;16857:2;16849:6;16845:15;16838:56;16653:248;:::o;16907:366::-;17049:3;17070:67;17134:2;17129:3;17070:67;:::i;:::-;17063:74;;17146:93;17235:3;17146:93;:::i;:::-;17264:2;17259:3;17255:12;17248:19;;16907:366;;;:::o;17279:419::-;17445:4;17483:2;17472:9;17468:18;17460:26;;17532:9;17526:4;17522:20;17518:1;17507:9;17503:17;17496:47;17560:131;17686:4;17560:131;:::i;:::-;17552:139;;17279:419;;;:::o;17704:143::-;17761:5;17792:6;17786:13;17777:22;;17808:33;17835:5;17808:33;:::i;:::-;17704:143;;;;:::o;17853:351::-;17923:6;17972:2;17960:9;17951:7;17947:23;17943:32;17940:119;;;17978:79;;:::i;:::-;17940:119;18098:1;18123:64;18179:7;18170:6;18159:9;18155:22;18123:64;:::i;:::-;18113:74;;18069:128;17853:351;;;;:::o;18210:332::-;18331:4;18369:2;18358:9;18354:18;18346:26;;18382:71;18450:1;18439:9;18435:17;18426:6;18382:71;:::i;:::-;18463:72;18531:2;18520:9;18516:18;18507:6;18463:72;:::i;:::-;18210:332;;;;;:::o;18548:137::-;18602:5;18633:6;18627:13;18618:22;;18649:30;18673:5;18649:30;:::i;:::-;18548:137;;;;:::o;18691:345::-;18758:6;18807:2;18795:9;18786:7;18782:23;18778:32;18775:119;;;18813:79;;:::i;:::-;18775:119;18933:1;18958:61;19011:7;19002:6;18991:9;18987:22;18958:61;:::i;:::-;18948:71;;18904:125;18691:345;;;;:::o;19042:223::-;19182:34;19178:1;19170:6;19166:14;19159:58;19251:6;19246:2;19238:6;19234:15;19227:31;19042:223;:::o;19271:366::-;19413:3;19434:67;19498:2;19493:3;19434:67;:::i;:::-;19427:74;;19510:93;19599:3;19510:93;:::i;:::-;19628:2;19623:3;19619:12;19612:19;;19271:366;;;:::o;19643:419::-;19809:4;19847:2;19836:9;19832:18;19824:26;;19896:9;19890:4;19886:20;19882:1;19871:9;19867:17;19860:47;19924:131;20050:4;19924:131;:::i;:::-;19916:139;;19643:419;;;:::o;20068:221::-;20208:34;20204:1;20196:6;20192:14;20185:58;20277:4;20272:2;20264:6;20260:15;20253:29;20068:221;:::o;20295:366::-;20437:3;20458:67;20522:2;20517:3;20458:67;:::i;:::-;20451:74;;20534:93;20623:3;20534:93;:::i;:::-;20652:2;20647:3;20643:12;20636:19;;20295:366;;;:::o;20667:419::-;20833:4;20871:2;20860:9;20856:18;20848:26;;20920:9;20914:4;20910:20;20906:1;20895:9;20891:17;20884:47;20948:131;21074:4;20948:131;:::i;:::-;20940:139;;20667:419;;;:::o;21092:223::-;21232:34;21228:1;21220:6;21216:14;21209:58;21301:6;21296:2;21288:6;21284:15;21277:31;21092:223;:::o;21321:366::-;21463:3;21484:67;21548:2;21543:3;21484:67;:::i;:::-;21477:74;;21560:93;21649:3;21560:93;:::i;:::-;21678:2;21673:3;21669:12;21662:19;;21321:366;;;:::o;21693:419::-;21859:4;21897:2;21886:9;21882:18;21874:26;;21946:9;21940:4;21936:20;21932:1;21921:9;21917:17;21910:47;21974:131;22100:4;21974:131;:::i;:::-;21966:139;;21693:419;;;:::o;22118:221::-;22258:34;22254:1;22246:6;22242:14;22235:58;22327:4;22322:2;22314:6;22310:15;22303:29;22118:221;:::o;22345:366::-;22487:3;22508:67;22572:2;22567:3;22508:67;:::i;:::-;22501:74;;22584:93;22673:3;22584:93;:::i;:::-;22702:2;22697:3;22693:12;22686:19;;22345:366;;;:::o;22717:419::-;22883:4;22921:2;22910:9;22906:18;22898:26;;22970:9;22964:4;22960:20;22956:1;22945:9;22941:17;22934:47;22998:131;23124:4;22998:131;:::i;:::-;22990:139;;22717:419;;;:::o;23142:180::-;23282:32;23278:1;23270:6;23266:14;23259:56;23142:180;:::o;23328:366::-;23470:3;23491:67;23555:2;23550:3;23491:67;:::i;:::-;23484:74;;23567:93;23656:3;23567:93;:::i;:::-;23685:2;23680:3;23676:12;23669:19;;23328:366;;;:::o;23700:419::-;23866:4;23904:2;23893:9;23889:18;23881:26;;23953:9;23947:4;23943:20;23939:1;23928:9;23924:17;23917:47;23981:131;24107:4;23981:131;:::i;:::-;23973:139;;23700:419;;;:::o;24125:410::-;24165:7;24188:20;24206:1;24188:20;:::i;:::-;24183:25;;24222:20;24240:1;24222:20;:::i;:::-;24217:25;;24277:1;24274;24270:9;24299:30;24317:11;24299:30;:::i;:::-;24288:41;;24478:1;24469:7;24465:15;24462:1;24459:22;24439:1;24432:9;24412:83;24389:139;;24508:18;;:::i;:::-;24389:139;24173:362;24125:410;;;;:::o;24541:194::-;24581:4;24601:20;24619:1;24601:20;:::i;:::-;24596:25;;24635:20;24653:1;24635:20;:::i;:::-;24630:25;;24679:1;24676;24672:9;24664:17;;24703:1;24697:4;24694:11;24691:37;;;24708:18;;:::i;:::-;24691:37;24541:194;;;;:::o;24741:179::-;24881:31;24877:1;24869:6;24865:14;24858:55;24741:179;:::o;24926:366::-;25068:3;25089:67;25153:2;25148:3;25089:67;:::i;:::-;25082:74;;25165:93;25254:3;25165:93;:::i;:::-;25283:2;25278:3;25274:12;25267:19;;24926:366;;;:::o;25298:419::-;25464:4;25502:2;25491:9;25487:18;25479:26;;25551:9;25545:4;25541:20;25537:1;25526:9;25522:17;25515:47;25579:131;25705:4;25579:131;:::i;:::-;25571:139;;25298:419;;;:::o;25723:147::-;25824:11;25861:3;25846:18;;25723:147;;;;:::o;25876:114::-;;:::o;25996:398::-;26155:3;26176:83;26257:1;26252:3;26176:83;:::i;:::-;26169:90;;26268:93;26357:3;26268:93;:::i;:::-;26386:1;26381:3;26377:11;26370:18;;25996:398;;;:::o;26400:379::-;26584:3;26606:147;26749:3;26606:147;:::i;:::-;26599:154;;26770:3;26763:10;;26400:379;;;:::o;26785:224::-;26925:34;26921:1;26913:6;26909:14;26902:58;26994:7;26989:2;26981:6;26977:15;26970:32;26785:224;:::o;27015:366::-;27157:3;27178:67;27242:2;27237:3;27178:67;:::i;:::-;27171:74;;27254:93;27343:3;27254:93;:::i;:::-;27372:2;27367:3;27363:12;27356:19;;27015:366;;;:::o;27387:419::-;27553:4;27591:2;27580:9;27576:18;27568:26;;27640:9;27634:4;27630:20;27626:1;27615:9;27611:17;27604:47;27668:131;27794:4;27668:131;:::i;:::-;27660:139;;27387:419;;;:::o;27812:222::-;27952:34;27948:1;27940:6;27936:14;27929:58;28021:5;28016:2;28008:6;28004:15;27997:30;27812:222;:::o;28040:366::-;28182:3;28203:67;28267:2;28262:3;28203:67;:::i;:::-;28196:74;;28279:93;28368:3;28279:93;:::i;:::-;28397:2;28392:3;28388:12;28381:19;;28040:366;;;:::o;28412:419::-;28578:4;28616:2;28605:9;28601:18;28593:26;;28665:9;28659:4;28655:20;28651:1;28640:9;28636:17;28629:47;28693:131;28819:4;28693:131;:::i;:::-;28685:139;;28412:419;;;:::o;28837:225::-;28977:34;28973:1;28965:6;28961:14;28954:58;29046:8;29041:2;29033:6;29029:15;29022:33;28837:225;:::o;29068:366::-;29210:3;29231:67;29295:2;29290:3;29231:67;:::i;:::-;29224:74;;29307:93;29396:3;29307:93;:::i;:::-;29425:2;29420:3;29416:12;29409:19;;29068:366;;;:::o;29440:419::-;29606:4;29644:2;29633:9;29629:18;29621:26;;29693:9;29687:4;29683:20;29679:1;29668:9;29664:17;29657:47;29721:131;29847:4;29721:131;:::i;:::-;29713:139;;29440:419;;;:::o;29865:180::-;29913:77;29910:1;29903:88;30010:4;30007:1;30000:15;30034:4;30031:1;30024:15;30051:180;30099:77;30096:1;30089:88;30196:4;30193:1;30186:15;30220:4;30217:1;30210:15;30237:143;30294:5;30325:6;30319:13;30310:22;;30341:33;30368:5;30341:33;:::i;:::-;30237:143;;;;:::o;30386:351::-;30456:6;30505:2;30493:9;30484:7;30480:23;30476:32;30473:119;;;30511:79;;:::i;:::-;30473:119;30631:1;30656:64;30712:7;30703:6;30692:9;30688:22;30656:64;:::i;:::-;30646:74;;30602:128;30386:351;;;;:::o;30743:85::-;30788:7;30817:5;30806:16;;30743:85;;;:::o;30834:158::-;30892:9;30925:61;30943:42;30952:32;30978:5;30952:32;:::i;:::-;30943:42;:::i;:::-;30925:61;:::i;:::-;30912:74;;30834:158;;;:::o;30998:147::-;31093:45;31132:5;31093:45;:::i;:::-;31088:3;31081:58;30998:147;;:::o;31151:114::-;31218:6;31252:5;31246:12;31236:22;;31151:114;;;:::o;31271:184::-;31370:11;31404:6;31399:3;31392:19;31444:4;31439:3;31435:14;31420:29;;31271:184;;;;:::o;31461:132::-;31528:4;31551:3;31543:11;;31581:4;31576:3;31572:14;31564:22;;31461:132;;;:::o;31599:108::-;31676:24;31694:5;31676:24;:::i;:::-;31671:3;31664:37;31599:108;;:::o;31713:179::-;31782:10;31803:46;31845:3;31837:6;31803:46;:::i;:::-;31881:4;31876:3;31872:14;31858:28;;31713:179;;;;:::o;31898:113::-;31968:4;32000;31995:3;31991:14;31983:22;;31898:113;;;:::o;32047:732::-;32166:3;32195:54;32243:5;32195:54;:::i;:::-;32265:86;32344:6;32339:3;32265:86;:::i;:::-;32258:93;;32375:56;32425:5;32375:56;:::i;:::-;32454:7;32485:1;32470:284;32495:6;32492:1;32489:13;32470:284;;;32571:6;32565:13;32598:63;32657:3;32642:13;32598:63;:::i;:::-;32591:70;;32684:60;32737:6;32684:60;:::i;:::-;32674:70;;32530:224;32517:1;32514;32510:9;32505:14;;32470:284;;;32474:14;32770:3;32763:10;;32171:608;;;32047:732;;;;:::o;32785:831::-;33048:4;33086:3;33075:9;33071:19;33063:27;;33100:71;33168:1;33157:9;33153:17;33144:6;33100:71;:::i;:::-;33181:80;33257:2;33246:9;33242:18;33233:6;33181:80;:::i;:::-;33308:9;33302:4;33298:20;33293:2;33282:9;33278:18;33271:48;33336:108;33439:4;33430:6;33336:108;:::i;:::-;33328:116;;33454:72;33522:2;33511:9;33507:18;33498:6;33454:72;:::i;:::-;33536:73;33604:3;33593:9;33589:19;33580:6;33536:73;:::i;:::-;32785:831;;;;;;;;:::o;33622:332::-;33743:4;33781:2;33770:9;33766:18;33758:26;;33794:71;33862:1;33851:9;33847:17;33838:6;33794:71;:::i;:::-;33875:72;33943:2;33932:9;33928:18;33919:6;33875:72;:::i;:::-;33622:332;;;;;:::o

Swarm Source

ipfs://6c9a73bb3e169dc51a7e80706d27666b4c7fba61b68cfb73b72974e27c7647ac
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.