ETH Price: $2,490.61 (+0.83%)

Contract

0xd919578FFDa1990c82cdC12bdFA7Ae9555261295
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve210611232024-10-28 2:22:479 mins ago1730082167IN
0xd919578F...555261295
0 ETH0.000337767.20552052
Approve210611172024-10-28 2:21:3511 mins ago1730082095IN
0xd919578F...555261295
0 ETH0.000300796.41681473
Approve210609772024-10-28 1:53:2339 mins ago1730080403IN
0xd919578F...555261295
0 ETH0.000257945.50270471
Approve210604582024-10-28 0:09:112 hrs ago1730074151IN
0xd919578F...555261295
0 ETH0.000296386.32266381
Approve210601302024-10-27 23:03:353 hrs ago1730070215IN
0xd919578F...555261295
0 ETH0.00042739.06688144
Approve210588842024-10-27 18:53:357 hrs ago1730055215IN
0xd919578F...555261295
0 ETH0.000385898.18832146
Approve210581822024-10-27 16:32:599 hrs ago1730046779IN
0xd919578F...555261295
0 ETH0.000435979.2508609
Approve210580232024-10-27 16:01:1110 hrs ago1730044871IN
0xd919578F...555261295
0 ETH0.000389588.25610295
Approve210573812024-10-27 13:52:2312 hrs ago1730037143IN
0xd919578F...555261295
0 ETH0.000329486.99122932
Approve210572952024-10-27 13:35:1112 hrs ago1730036111IN
0xd919578F...555261295
0 ETH0.000414118.83428644
Approve210569512024-10-27 12:25:3514 hrs ago1730031935IN
0xd919578F...555261295
0 ETH0.000248025.29112542
Approve210568222024-10-27 11:59:4714 hrs ago1730030387IN
0xd919578F...555261295
0 ETH0.000284816.04335481
Approve210568112024-10-27 11:57:3514 hrs ago1730030255IN
0xd919578F...555261295
0 ETH0.000286116.07101159
Approve210568042024-10-27 11:56:1114 hrs ago1730030171IN
0xd919578F...555261295
0 ETH0.000290516.16445266
Approve210567732024-10-27 11:49:5914 hrs ago1730029799IN
0xd919578F...555261295
0 ETH0.000268595.69203517
Transfer210567222024-10-27 11:39:4714 hrs ago1730029187IN
0xd919578F...555261295
0 ETH0.000377955.7381008
Approve210565342024-10-27 11:01:4715 hrs ago1730026907IN
0xd919578F...555261295
0 ETH0.000366617.76930044
Approve210561142024-10-27 9:37:1116 hrs ago1730021831IN
0xd919578F...555261295
0 ETH0.000336837.18557665
Approve210559642024-10-27 9:07:1117 hrs ago1730020031IN
0xd919578F...555261295
0 ETH0.000204716.88888958
Approve210559492024-10-27 9:04:1117 hrs ago1730019851IN
0xd919578F...555261295
0 ETH0.000154225.72993229
Approve210558662024-10-27 8:47:3517 hrs ago1730018855IN
0xd919578F...555261295
0 ETH0.000237025.02304195
Approve210558192024-10-27 8:38:1117 hrs ago1730018291IN
0xd919578F...555261295
0 ETH0.000249545.28822818
Approve210556102024-10-27 7:56:2318 hrs ago1730015783IN
0xd919578F...555261295
0 ETH0.000251685.37596598
Approve210554932024-10-27 7:32:5918 hrs ago1730014379IN
0xd919578F...555261295
0 ETH0.000274415.86154295
Approve210554442024-10-27 7:23:1119 hrs ago1730013791IN
0xd919578F...555261295
0 ETH0.000250585.31702302
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
210344912024-10-24 9:14:233 days ago1729761263
0xd919578F...555261295
0.20510528 ETH
210344912024-10-24 9:14:233 days ago1729761263
0xd919578F...555261295
0.20510528 ETH
210344632024-10-24 9:08:353 days ago1729760915
0xd919578F...555261295
0.22660913 ETH
210344632024-10-24 9:08:353 days ago1729760915
0xd919578F...555261295
0.22660913 ETH
210342082024-10-24 8:17:353 days ago1729757855
0xd919578F...555261295
0.0961767 ETH
210342082024-10-24 8:17:353 days ago1729757855
0xd919578F...555261295
0.0961767 ETH
210342072024-10-24 8:17:233 days ago1729757843
0xd919578F...555261295
0.10137374 ETH
210342072024-10-24 8:17:233 days ago1729757843
0xd919578F...555261295
0.10137374 ETH
210309472024-10-23 21:21:354 days ago1729718495
0xd919578F...555261295
0.08511091 ETH
210309472024-10-23 21:21:354 days ago1729718495
0xd919578F...555261295
0.08511091 ETH
210306092024-10-23 20:13:474 days ago1729714427
0xd919578F...555261295
0.09086602 ETH
210306092024-10-23 20:13:474 days ago1729714427
0xd919578F...555261295
0.09086602 ETH
210305922024-10-23 20:10:234 days ago1729714223
0xd919578F...555261295
0.09752195 ETH
210305922024-10-23 20:10:234 days ago1729714223
0xd919578F...555261295
0.09752195 ETH
210304952024-10-23 19:50:594 days ago1729713059
0xd919578F...555261295
0.10226817 ETH
210304952024-10-23 19:50:594 days ago1729713059
0xd919578F...555261295
0.10226817 ETH
210304902024-10-23 19:49:594 days ago1729712999
0xd919578F...555261295
0.11024388 ETH
210304902024-10-23 19:49:594 days ago1729712999
0xd919578F...555261295
0.11024388 ETH
210303532024-10-23 19:22:354 days ago1729711355
0xd919578F...555261295
0.10282948 ETH
210303532024-10-23 19:22:354 days ago1729711355
0xd919578F...555261295
0.10282948 ETH
210303272024-10-23 19:17:234 days ago1729711043
0xd919578F...555261295
0.09349623 ETH
210303272024-10-23 19:17:234 days ago1729711043
0xd919578F...555261295
0.09349623 ETH
210302942024-10-23 19:10:474 days ago1729710647
0xd919578F...555261295
0.09612689 ETH
210302942024-10-23 19:10:474 days ago1729710647
0xd919578F...555261295
0.09612689 ETH
210302052024-10-23 18:52:594 days ago1729709579
0xd919578F...555261295
0.1021089 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
COMMANDER

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-24
*/

/**
 * Commander (COMMANDER) Joe Biden Dog
 */

// SPDX-License-Identifier: MIT

pragma solidity 0.8.26;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

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

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

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

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

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

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

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

contract COMMANDER is Context, IERC20, Ownable {
    using SafeMath for uint256;

    // Mappings for balances, allowances, and fee exclusions
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    // Blacklist mapping
    mapping(address => bool) private _isBlacklisted;

    // Address designated for collecting taxes
    address payable private _devWallet;

    // Tax rates for buy and sell transactions (expressed in percentages)
    uint256 private _buyTax = 50; // 50%
    uint256 private _sellTax = 50; // 50%

    bool private tradingOpen = false;

    // Token details
    string private constant _name = "Commander";
    string private constant _symbol = "COMMANDER";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100_000_000 * 10 ** _decimals; // Total supply: 100,000,000 tokens

    // Transaction limits
    uint256 public _maxBuyLimit = (_tTotal * 1) / 100; // 1% of total supply
    uint256 public _taxSwapThreshold = _tTotal / 100; // 1% of total supply
    uint256 public _maxTaxSwap = _tTotal / 10; // 10% of total supply

    // Uniswap router and pair addresses
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    // Flags for swap mechanics
    bool private inSwap = false;
    bool private swapEnabled = false;

    // Events
    event MaxBuyLimitUpdated(uint256 _maxBuyLimit);
    event Blacklisted(address indexed account);
    event RemovedFromBlacklist(address indexed account);
    event TaxUpdated(uint256 newBuyTax, uint256 newSellTax);

    /**
     * @dev Modifier to prevent re-entrancy during token swaps.
     */
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    /**
     * @dev Initializes the contract by setting the deployer as the dev wallet,
     * assigning the total supply to the deployer, excluding certain addresses from fees,
     * and creating a Uniswap pair for the token.
     */
    constructor() {
        _devWallet = payable(msg.sender); // Set the deployer as the dev wallet
        _balances[_msgSender()] = _tTotal; // Assign total supply to the deployer

        // Exclude owner, contract, and dev wallet from fees
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_devWallet] = true;

        // Initialize Uniswap Router (Uniswap V2 Router address)
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        // Create a Uniswap pair for this token and WETH
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        emit Transfer(address(0), _msgSender(), _tTotal); // Emit transfer event from zero address to deployer
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public pure returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals the token uses.
     */
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     * Returns the total supply of tokens.
     */
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     * Returns the balance of the specified `account`.
     */
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     * Transfers `amount` tokens from the caller's account to `recipient`.
     * Applies dynamic taxes and transaction limits based on trading status.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     * Returns the remaining number of tokens that `spender` can spend on behalf of `owner_`.
     */
    function allowance(
        address owner_,
        address spender
    ) public view override returns (uint256) {
        return _allowances[owner_][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     * Allows `spender` to spend up to `amount` tokens on behalf of the caller.
     */
    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     * Transfers `amount` tokens from `sender` to `recipient` using the allowance mechanism.
     * Updates the allowance accordingly.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner_`'s tokens.
     * Emits an {Approval} event.
     */
    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);
    }

    /**
     * @dev Handles token transfers, applying dynamic taxes, enforcing transaction limits,
     * and managing blacklist restrictions.
     * Also manages swapping tokens for ETH and sending ETH to the dev wallet when thresholds are met.
     */
    function _transfer(address from, address to, uint256 amount) private {
        // Basic transfer validations
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        // Blacklist checks
        require(!_isBlacklisted[from], "Sender is blacklisted");
        require(!_isBlacklisted[to], "Recipient is blacklisted");

        uint256 taxAmount = 0; // Initialize tax amount

        // Check if fees should be applied
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            // Ensure trading is open
            require(tradingOpen, "Trading is not active.");

            // Apply max buy limit for buy transactions
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxBuyLimit, "Exceeds the _maxBuyLimit.");
                // Buy transaction tax
                taxAmount = amount.mul(_buyTax).div(100);
            }

            // Apply tax for sell transactions
            if (to == uniswapV2Pair) {
                taxAmount = amount.mul(_sellTax).div(100);
            }

            // Handle swapping tokens for ETH if conditions are met
            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance >= _taxSwapThreshold
            ) {
                uint256 tokensToSwap = _taxSwapThreshold > _maxTaxSwap
                    ? _maxTaxSwap
                    : _taxSwapThreshold;
                swapTokensForEth(tokensToSwap);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendEthToDevWallet(contractETHBalance);
                }
            }
        }

        // Override tax if sender or recipient is excluded from fees or if not a buy/sell transaction
        if (
            _isExcludedFromFee[from] ||
            _isExcludedFromFee[to] ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            taxAmount = 0;
        }

        // Transfer tax to the contract
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }

        // Perform the actual token transfer
        _balances[from] = _balances[from].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    /**
     * @dev Swaps a specified amount of tokens for ETH using Uniswap.
     * The swapped ETH is sent to the contract's address.
     * @param tokenAmount The amount of tokens to swap for ETH.
     */
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        // Generate the Uniswap pair path of token -> WETH
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        // Approve the router to spend the tokens
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // Execute the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // Accept any amount of ETH
            path,
            address(this), // Tokens swapped for ETH are sent to this contract
            block.timestamp
        );
    }

    /**
     * @dev Adds liquidity to Uniswap by pairing the token with ETH.
     * Can only be called by the contract owner.
     * Requires that trading is not already open and that the contract holds enough tokens.
     */
    function addLiquidity() external onlyOwner {
        require(!tradingOpen, "Trading is already open");

        uint256 tokenAmount = 100_000_000 * 10 ** _decimals; // 100,000,000 COMMANDER

        // Ensure the contract has enough tokens to add as liquidity
        require(
            balanceOf(address(this)) >= tokenAmount,
            "Insufficient token balance for liquidity"
        );

        // Approve the router to spend the tokens
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // Add the liquidity to Uniswap
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),      // Token address
            tokenAmount,        // Amount of tokens to add
            0,                  // Minimum amount of tokens to add (0 for no minimum)
            0,                  // Minimum amount of ETH to add (0 for no minimum)
            _devWallet,         // Recipient of the liquidity tokens
            block.timestamp     // Deadline timestamp
        );

        // Approve the Uniswap pair to spend an unlimited amount of its tokens
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

    /**
     * @dev Opens trading by setting the `tradingOpen` flag to true.
     * Enables token swaps and applies trading restrictions based on the number of blocks since trading opened.
     * Can only be called by the contract owner.
     */
    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        tradingOpen = true;
        swapEnabled = true;
    }

    /**
     * @dev Sends a specified amount of ETH to the designated dev wallet.
     * @param amountToSend The amount of ETH to send.
     */
    function sendEthToDevWallet(uint256 amountToSend) private {
        _devWallet.transfer(amountToSend);
    }

    /**
     * @dev Allows the contract owner to update the maximum buy limit at any time.
     * Emits a {MaxBuyLimitUpdated} event upon successful update.
     * @param maxBuyLimit The new maximum buy limit.
     */
    function updateMaxBuyLimit(uint256 maxBuyLimit) external onlyOwner {
        _maxBuyLimit = maxBuyLimit;
        emit MaxBuyLimitUpdated(_maxBuyLimit);
    }

    /**
     * @dev Allows the contract owner to set the buy tax.
     * Emits a {BuyTaxUpdated} event upon successful update.
     * @param newBuyTax The new buy tax percentage.
     */
    function setTax(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        _buyTax = newBuyTax;
        _sellTax = newSellTax;
        emit TaxUpdated(newBuyTax, newSellTax);
    }

    /**
     * @dev Allows the contract owner to exclude or include an account from transaction fees.
     * @param account The address to be excluded or included.
     * @param excluded A boolean indicating whether to exclude (`true`) or include (`false`) the account.
     */
    function setExcludedFromFee(
        address account,
        bool excluded
    ) external onlyOwner {
        _isExcludedFromFee[account] = excluded;
    }

    /**
     * @dev Allows the contract owner to add an address to the blacklist.
     * Prevents the address from sending or receiving tokens.
     * Emits a {Blacklisted} event.
     * @param account The address to blacklist.
     */
    function blacklistAddress(address account) external onlyOwner {
        require(!_isBlacklisted[account], "Address is already blacklisted");
        _isBlacklisted[account] = true;
        emit Blacklisted(account);
    }

    /**
     * @dev Allows the contract owner to remove an address from the blacklist.
     * Permits the address to send and receive tokens again.
     * Emits a {RemovedFromBlacklist} event.
     * @param account The address to remove from the blacklist.
     */
    function removeFromBlacklist(address account) external onlyOwner {
        require(_isBlacklisted[account], "Address is not blacklisted");
        _isBlacklisted[account] = false;
        emit RemovedFromBlacklist(account);
    }

    /**
     * @dev Checks if an address is blacklisted.
     * @param account The address to check.
     * @return A boolean indicating whether the address is blacklisted.
     */
    function isBlacklisted(address account) public view returns (bool) {
        return _isBlacklisted[account];
    }

    /**
     * @dev Allows the designated dev wallet to withdraw all tokens held by the contract.
     * Ensures that only the dev wallet can perform this action.
     */
    function tokensWithdraw() external {
        require(
            _msgSender() == _devWallet,
            "Only dev wallet can withdraw tokens"
        );
        uint256 amount = balanceOf(address(this));
        _transfer(address(this), _devWallet, amount);
    }

    /**
     * @dev Allows the contract to receive ETH directly.
     * This is necessary for receiving ETH from Uniswap swaps.
     */
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner_","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyLimit","type":"uint256"}],"name":"MaxBuyLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"RemovedFromBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokensWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyLimit","type":"uint256"}],"name":"updateMaxBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052603260065560326007555f60085f6101000a81548160ff021916908315150217905550606460016009600a61003991906107d4565b6305f5e100610048919061081e565b610052919061081e565b61005c919061088c565b60095560646009600a61006f91906107d4565b6305f5e10061007e919061081e565b610088919061088c565b600a55600a6009600a61009b91906107d4565b6305f5e1006100aa919061081e565b6100b4919061088c565b600b555f600d60146101000a81548160ff0219169083151502179055505f600d60156101000a81548160ff0219169083151502179055503480156100f6575f80fd5b505f61010661063560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3503360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101f091906107d4565b6305f5e1006101ff919061081e565b60015f61021061063560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61026061063c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610438573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045c919061091a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610506919061091a565b6040518363ffffffff1660e01b8152600401610523929190610954565b6020604051808303815f875af115801561053f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610563919061091a565b600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506105b061063560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61060c91906107d4565b6305f5e10061061b919061081e565b604051610628919061098a565b60405180910390a36109a3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156106e5578086048111156106c1576106c0610663565b5b60018516156106d05780820291505b80810290506106de85610690565b94506106a5565b94509492505050565b5f826106fd57600190506107b8565b8161070a575f90506107b8565b8160018114610720576002811461072a57610759565b60019150506107b8565b60ff84111561073c5761073b610663565b5b8360020a91508482111561075357610752610663565b5b506107b8565b5060208310610133831016604e8410600b841016171561078e5782820a90508381111561078957610788610663565b5b6107b8565b61079b848484600161069c565b925090508184048111156107b2576107b1610663565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6107de826107bf565b91506107e9836107c8565b92506108167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846106ee565b905092915050565b5f610828826107bf565b9150610833836107bf565b9250828202610841816107bf565b9150828204841483151761085857610857610663565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610896826107bf565b91506108a1836107bf565b9250826108b1576108b061085f565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108e9826108c0565b9050919050565b6108f9816108df565b8114610903575f80fd5b50565b5f81519050610914816108f0565b92915050565b5f6020828403121561092f5761092e6108bc565b5b5f61093c84828501610906565b91505092915050565b61094e816108df565b82525050565b5f6040820190506109675f830185610945565b6109746020830184610945565b9392505050565b610984816107bf565b82525050565b5f60208201905061099d5f83018461097b565b92915050565b613a63806109b05f395ff3fe60806040526004361061014e575f3560e01c8063715018a6116100b5578063c9567bf91161006e578063c9567bf914610465578063dd62ed3e1461047b578063e8078d94146104b7578063f2fde38b146104cd578063f3290d75146104f5578063fe575a871461051d57610155565b8063715018a61461036d5780637dee3290146103835780638da5cb5b146103ab57806395d89b41146103d5578063a9059cbb146103ff578063bf474bed1461043b57610155565b80632cb743f7116101075780632cb743f714610279578063313ce5671461028f578063537df3b6146102b95780636612e66f146102e1578063667f65261461030957806370a082311461033157610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e9578063207a3c471461021357806323b872dd1461023d57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610559565b60405161017a91906127d3565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612884565b610596565b6040516101b691906128dc565b60405180910390f35b3480156101ca575f80fd5b506101d36105b3565b6040516101e09190612904565b60405180910390f35b3480156101f4575f80fd5b506101fd6105b9565b60405161020a9190612904565b60405180910390f35b34801561021e575f80fd5b506102276105dc565b6040516102349190612904565b60405180910390f35b348015610248575f80fd5b50610263600480360381019061025e919061291d565b6105e2565b60405161027091906128dc565b60405180910390f35b348015610284575f80fd5b5061028d6106b6565b005b34801561029a575f80fd5b506102a3610787565b6040516102b09190612988565b60405180910390f35b3480156102c4575f80fd5b506102df60048036038101906102da91906129a1565b61078f565b005b3480156102ec575f80fd5b50610307600480360381019061030291906129f6565b610946565b005b348015610314575f80fd5b5061032f600480360381019061032a9190612a34565b610a32565b005b34801561033c575f80fd5b50610357600480360381019061035291906129a1565b610b11565b6040516103649190612904565b60405180910390f35b348015610378575f80fd5b50610381610b57565b005b34801561038e575f80fd5b506103a960048036038101906103a49190612a72565b610ca5565b005b3480156103b6575f80fd5b506103bf610d7c565b6040516103cc9190612aac565b60405180910390f35b3480156103e0575f80fd5b506103e9610da3565b6040516103f691906127d3565b60405180910390f35b34801561040a575f80fd5b5061042560048036038101906104209190612884565b610de0565b60405161043291906128dc565b60405180910390f35b348015610446575f80fd5b5061044f610dfd565b60405161045c9190612904565b60405180910390f35b348015610470575f80fd5b50610479610e03565b005b348015610486575f80fd5b506104a1600480360381019061049c9190612ac5565b610f1d565b6040516104ae9190612904565b60405180910390f35b3480156104c2575f80fd5b506104cb610f9f565b005b3480156104d8575f80fd5b506104f360048036038101906104ee91906129a1565b6112c4565b005b348015610500575f80fd5b5061051b600480360381019061051691906129a1565b611481565b005b348015610528575f80fd5b50610543600480360381019061053e91906129a1565b61163a565b60405161055091906128dc565b60405180910390f35b60606040518060400160405280600981526020017f436f6d6d616e6465720000000000000000000000000000000000000000000000815250905090565b5f6105a96105a261168c565b8484611693565b6001905092915050565b600b5481565b5f6009600a6105c89190612c5f565b6305f5e1006105d79190612ca9565b905090565b60095481565b5f6105ee848484611856565b6106ab846105fa61168c565b6106a685604051806060016040528060288152602001613a066028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065d61168c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122679092919063ffffffff16565b611693565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f661168c565b73ffffffffffffffffffffffffffffffffffffffff161461074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074390612d5a565b60405180910390fd5b5f61075630610b11565b90506107843060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611856565b50565b5f6009905090565b61079761168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612dc2565b60405180910390fd5b60045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a390612e2a565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d460405160405180910390a250565b61094e61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d190612dc2565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a3a61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd90612dc2565b60405180910390fd5b81600681905550806007819055507fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad856058282604051610b05929190612e48565b60405180910390a15050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b5f61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612dc2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cad61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090612dc2565b60405180910390fd5b806009819055507f85668e92bc538f5c140067d68e3375c65b9e4545d2822ec8d807c6782f747d62600954604051610d719190612904565b60405180910390a150565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f434f4d4d414e4445520000000000000000000000000000000000000000000000815250905090565b5f610df3610dec61168c565b8484611856565b6001905092915050565b600a5481565b610e0b61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90612dc2565b60405180910390fd5b60085f9054906101000a900460ff1615610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90612eb9565b60405180910390fd5b600160085f6101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fa761168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a90612dc2565b60405180910390fd5b60085f9054906101000a900460ff1615611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107990612eb9565b60405180910390fd5b5f6009600a6110919190612c5f565b6305f5e1006110a09190612ca9565b9050806110ac30610b11565b10156110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490612f47565b60405180910390fd5b61111930600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611693565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f8060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161119f96959493929190612ff9565b60606040518083038185885af11580156111bb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111e0919061306c565b505050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112809291906130bc565b6020604051808303815f875af115801561129c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c091906130f7565b5050565b6112cc61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134f90612dc2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90613192565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61148961168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c90612dc2565b60405180910390fd5b60045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561159f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611596906131fa565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a250565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613288565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613316565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118499190612904565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb906133a4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192990613432565b60405180910390fd5b5f8111611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906134c0565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590613528565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90613590565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b27575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e485760085f9054906101000a900460ff16611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b71906135f8565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c235750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c76575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ceb57600954821115611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613660565b60405180910390fd5b611ce86064611cda600654856122c990919063ffffffff16565b61234090919063ffffffff16565b90505b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d6a57611d676064611d59600754856122c990919063ffffffff16565b61234090919063ffffffff16565b90505b5f611d7430610b11565b9050600d60149054906101000a900460ff16158015611ddf5750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611df75750600d60159054906101000a900460ff165b8015611e055750600a548110155b15611e46575f600b54600a5411611e1e57600a54611e22565b600b545b9050611e2d81612389565b5f4790505f811115611e4357611e42816125f4565b5b50505b505b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ee3575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f945750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f935750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f9d575f90505b5f81111561209c57611ff58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120939190612904565b60405180910390a35b612106826040518060600160405280602681526020016139e06026913960015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122679092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121a961215d82846126b990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61224c84866126b990919063ffffffff16565b6040516122599190612904565b60405180910390a350505050565b5f8383111582906122ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a591906127d3565b60405180910390fd5b505f83856122bc919061367e565b9050809150509392505050565b5f8083036122d9575f905061233a565b5f82846122e69190612ca9565b90508284826122f591906136de565b14612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c9061377e565b60405180910390fd5b809150505b92915050565b5f61238183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612702565b905092915050565b6001600d60146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123c0576123bf61379c565b5b6040519080825280602002602001820160405280156123ee5781602001602082028036833780820191505090505b50905030815f81518110612405576124046137c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cd919061380a565b816001815181106124e1576124e06137c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061254730600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611693565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125a99594939291906138ec565b5f604051808303815f87803b1580156125c0575f80fd5b505af11580156125d2573d5f803e3d5ffd5b50505050505f600d60146101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612658573d5f803e3d5ffd5b5050565b5f80828461266a9190613944565b9050838110156126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a6906139c1565b60405180910390fd5b8091505092915050565b5f6126fa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612267565b905092915050565b5f8083118290612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f91906127d3565b60405180910390fd5b505f838561275691906136de565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6127a582612763565b6127af818561276d565b93506127bf81856020860161277d565b6127c88161278b565b840191505092915050565b5f6020820190508181035f8301526127eb818461279b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612820826127f7565b9050919050565b61283081612816565b811461283a575f80fd5b50565b5f8135905061284b81612827565b92915050565b5f819050919050565b61286381612851565b811461286d575f80fd5b50565b5f8135905061287e8161285a565b92915050565b5f806040838503121561289a576128996127f3565b5b5f6128a78582860161283d565b92505060206128b885828601612870565b9150509250929050565b5f8115159050919050565b6128d6816128c2565b82525050565b5f6020820190506128ef5f8301846128cd565b92915050565b6128fe81612851565b82525050565b5f6020820190506129175f8301846128f5565b92915050565b5f805f60608486031215612934576129336127f3565b5b5f6129418682870161283d565b93505060206129528682870161283d565b925050604061296386828701612870565b9150509250925092565b5f60ff82169050919050565b6129828161296d565b82525050565b5f60208201905061299b5f830184612979565b92915050565b5f602082840312156129b6576129b56127f3565b5b5f6129c38482850161283d565b91505092915050565b6129d5816128c2565b81146129df575f80fd5b50565b5f813590506129f0816129cc565b92915050565b5f8060408385031215612a0c57612a0b6127f3565b5b5f612a198582860161283d565b9250506020612a2a858286016129e2565b9150509250929050565b5f8060408385031215612a4a57612a496127f3565b5b5f612a5785828601612870565b9250506020612a6885828601612870565b9150509250929050565b5f60208284031215612a8757612a866127f3565b5b5f612a9484828501612870565b91505092915050565b612aa681612816565b82525050565b5f602082019050612abf5f830184612a9d565b92915050565b5f8060408385031215612adb57612ada6127f3565b5b5f612ae88582860161283d565b9250506020612af98582860161283d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b8557808604811115612b6157612b60612b03565b5b6001851615612b705780820291505b8081029050612b7e85612b30565b9450612b45565b94509492505050565b5f82612b9d5760019050612c58565b81612baa575f9050612c58565b8160018114612bc05760028114612bca57612bf9565b6001915050612c58565b60ff841115612bdc57612bdb612b03565b5b8360020a915084821115612bf357612bf2612b03565b5b50612c58565b5060208310610133831016604e8410600b8410161715612c2e5782820a905083811115612c2957612c28612b03565b5b612c58565b612c3b8484846001612b3c565b92509050818404811115612c5257612c51612b03565b5b81810290505b9392505050565b5f612c6982612851565b9150612c748361296d565b9250612ca17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b8e565b905092915050565b5f612cb382612851565b9150612cbe83612851565b9250828202612ccc81612851565b91508282048414831517612ce357612ce2612b03565b5b5092915050565b7f4f6e6c79206465762077616c6c65742063616e20776974686472617720746f6b5f8201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d4460238361276d565b9150612d4f82612cea565b604082019050919050565b5f6020820190508181035f830152612d7181612d38565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612dac60208361276d565b9150612db782612d78565b602082019050919050565b5f6020820190508181035f830152612dd981612da0565b9050919050565b7f41646472657373206973206e6f7420626c61636b6c69737465640000000000005f82015250565b5f612e14601a8361276d565b9150612e1f82612de0565b602082019050919050565b5f6020820190508181035f830152612e4181612e08565b9050919050565b5f604082019050612e5b5f8301856128f5565b612e6860208301846128f5565b9392505050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ea360178361276d565b9150612eae82612e6f565b602082019050919050565b5f6020820190508181035f830152612ed081612e97565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f72206c5f8201527f6971756964697479000000000000000000000000000000000000000000000000602082015250565b5f612f3160288361276d565b9150612f3c82612ed7565b604082019050919050565b5f6020820190508181035f830152612f5e81612f25565b9050919050565b5f819050919050565b5f819050919050565b5f612f91612f8c612f8784612f65565b612f6e565b612851565b9050919050565b612fa181612f77565b82525050565b5f612fc1612fbc612fb7846127f7565b612f6e565b6127f7565b9050919050565b5f612fd282612fa7565b9050919050565b5f612fe382612fc8565b9050919050565b612ff381612fd9565b82525050565b5f60c08201905061300c5f830189612a9d565b61301960208301886128f5565b6130266040830187612f98565b6130336060830186612f98565b6130406080830185612fea565b61304d60a08301846128f5565b979650505050505050565b5f815190506130668161285a565b92915050565b5f805f60608486031215613083576130826127f3565b5b5f61309086828701613058565b93505060206130a186828701613058565b92505060406130b286828701613058565b9150509250925092565b5f6040820190506130cf5f830185612a9d565b6130dc60208301846128f5565b9392505050565b5f815190506130f1816129cc565b92915050565b5f6020828403121561310c5761310b6127f3565b5b5f613119848285016130e3565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61317c60268361276d565b915061318782613122565b604082019050919050565b5f6020820190508181035f8301526131a981613170565b9050919050565b7f4164647265737320697320616c726561647920626c61636b6c697374656400005f82015250565b5f6131e4601e8361276d565b91506131ef826131b0565b602082019050919050565b5f6020820190508181035f830152613211816131d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61327260248361276d565b915061327d82613218565b604082019050919050565b5f6020820190508181035f83015261329f81613266565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61330060228361276d565b915061330b826132a6565b604082019050919050565b5f6020820190508181035f83015261332d816132f4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61338e60258361276d565b915061339982613334565b604082019050919050565b5f6020820190508181035f8301526133bb81613382565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61341c60238361276d565b9150613427826133c2565b604082019050919050565b5f6020820190508181035f83015261344981613410565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134aa60298361276d565b91506134b582613450565b604082019050919050565b5f6020820190508181035f8301526134d78161349e565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f61351260158361276d565b915061351d826134de565b602082019050919050565b5f6020820190508181035f83015261353f81613506565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f61357a60188361276d565b915061358582613546565b602082019050919050565b5f6020820190508181035f8301526135a78161356e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6135e260168361276d565b91506135ed826135ae565b602082019050919050565b5f6020820190508181035f83015261360f816135d6565b9050919050565b7f4578636565647320746865205f6d61784275794c696d69742e000000000000005f82015250565b5f61364a60198361276d565b915061365582613616565b602082019050919050565b5f6020820190508181035f8301526136778161363e565b9050919050565b5f61368882612851565b915061369383612851565b92508282039050818111156136ab576136aa612b03565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136e882612851565b91506136f383612851565b925082613703576137026136b1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61376860218361276d565b91506137738261370e565b604082019050919050565b5f6020820190508181035f8301526137958161375c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061380481612827565b92915050565b5f6020828403121561381f5761381e6127f3565b5b5f61382c848285016137f6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61386781612816565b82525050565b5f613878838361385e565b60208301905092915050565b5f602082019050919050565b5f61389a82613835565b6138a4818561383f565b93506138af8361384f565b805f5b838110156138df5781516138c6888261386d565b97506138d183613884565b9250506001810190506138b2565b5085935050505092915050565b5f60a0820190506138ff5f8301886128f5565b61390c6020830187612f98565b818103604083015261391e8186613890565b905061392d6060830185612a9d565b61393a60808301846128f5565b9695505050505050565b5f61394e82612851565b915061395983612851565b925082820190508082111561397157613970612b03565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6139ab601b8361276d565b91506139b682613977565b602082019050919050565b5f6020820190508181035f8301526139d88161399f565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209bbc0357d8ed7e0a5e6b360e2d3555d7e96c9d8e1e4b0d9996035285449a968164736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c8063715018a6116100b5578063c9567bf91161006e578063c9567bf914610465578063dd62ed3e1461047b578063e8078d94146104b7578063f2fde38b146104cd578063f3290d75146104f5578063fe575a871461051d57610155565b8063715018a61461036d5780637dee3290146103835780638da5cb5b146103ab57806395d89b41146103d5578063a9059cbb146103ff578063bf474bed1461043b57610155565b80632cb743f7116101075780632cb743f714610279578063313ce5671461028f578063537df3b6146102b95780636612e66f146102e1578063667f65261461030957806370a082311461033157610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e9578063207a3c471461021357806323b872dd1461023d57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610559565b60405161017a91906127d3565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612884565b610596565b6040516101b691906128dc565b60405180910390f35b3480156101ca575f80fd5b506101d36105b3565b6040516101e09190612904565b60405180910390f35b3480156101f4575f80fd5b506101fd6105b9565b60405161020a9190612904565b60405180910390f35b34801561021e575f80fd5b506102276105dc565b6040516102349190612904565b60405180910390f35b348015610248575f80fd5b50610263600480360381019061025e919061291d565b6105e2565b60405161027091906128dc565b60405180910390f35b348015610284575f80fd5b5061028d6106b6565b005b34801561029a575f80fd5b506102a3610787565b6040516102b09190612988565b60405180910390f35b3480156102c4575f80fd5b506102df60048036038101906102da91906129a1565b61078f565b005b3480156102ec575f80fd5b50610307600480360381019061030291906129f6565b610946565b005b348015610314575f80fd5b5061032f600480360381019061032a9190612a34565b610a32565b005b34801561033c575f80fd5b50610357600480360381019061035291906129a1565b610b11565b6040516103649190612904565b60405180910390f35b348015610378575f80fd5b50610381610b57565b005b34801561038e575f80fd5b506103a960048036038101906103a49190612a72565b610ca5565b005b3480156103b6575f80fd5b506103bf610d7c565b6040516103cc9190612aac565b60405180910390f35b3480156103e0575f80fd5b506103e9610da3565b6040516103f691906127d3565b60405180910390f35b34801561040a575f80fd5b5061042560048036038101906104209190612884565b610de0565b60405161043291906128dc565b60405180910390f35b348015610446575f80fd5b5061044f610dfd565b60405161045c9190612904565b60405180910390f35b348015610470575f80fd5b50610479610e03565b005b348015610486575f80fd5b506104a1600480360381019061049c9190612ac5565b610f1d565b6040516104ae9190612904565b60405180910390f35b3480156104c2575f80fd5b506104cb610f9f565b005b3480156104d8575f80fd5b506104f360048036038101906104ee91906129a1565b6112c4565b005b348015610500575f80fd5b5061051b600480360381019061051691906129a1565b611481565b005b348015610528575f80fd5b50610543600480360381019061053e91906129a1565b61163a565b60405161055091906128dc565b60405180910390f35b60606040518060400160405280600981526020017f436f6d6d616e6465720000000000000000000000000000000000000000000000815250905090565b5f6105a96105a261168c565b8484611693565b6001905092915050565b600b5481565b5f6009600a6105c89190612c5f565b6305f5e1006105d79190612ca9565b905090565b60095481565b5f6105ee848484611856565b6106ab846105fa61168c565b6106a685604051806060016040528060288152602001613a066028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065d61168c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122679092919063ffffffff16565b611693565b600190509392505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f661168c565b73ffffffffffffffffffffffffffffffffffffffff161461074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074390612d5a565b60405180910390fd5b5f61075630610b11565b90506107843060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611856565b50565b5f6009905090565b61079761168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612dc2565b60405180910390fd5b60045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a390612e2a565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f2b6bf71b58b3583add364b3d9060ebf8019650f65f5be35f5464b9cb3e4ba2d460405160405180910390a250565b61094e61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d190612dc2565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a3a61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd90612dc2565b60405180910390fd5b81600681905550806007819055507fb841faf0d1b32571f4ef966a2f35e3ae51f3cdda45318c3da5570a5b2ad856058282604051610b05929190612e48565b60405180910390a15050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b5f61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612dc2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cad61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090612dc2565b60405180910390fd5b806009819055507f85668e92bc538f5c140067d68e3375c65b9e4545d2822ec8d807c6782f747d62600954604051610d719190612904565b60405180910390a150565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f434f4d4d414e4445520000000000000000000000000000000000000000000000815250905090565b5f610df3610dec61168c565b8484611856565b6001905092915050565b600a5481565b610e0b61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90612dc2565b60405180910390fd5b60085f9054906101000a900460ff1615610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90612eb9565b60405180910390fd5b600160085f6101000a81548160ff0219169083151502179055506001600d60156101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fa761168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a90612dc2565b60405180910390fd5b60085f9054906101000a900460ff1615611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107990612eb9565b60405180910390fd5b5f6009600a6110919190612c5f565b6305f5e1006110a09190612ca9565b9050806110ac30610b11565b10156110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490612f47565b60405180910390fd5b61111930600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611693565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f8060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161119f96959493929190612ff9565b60606040518083038185885af11580156111bb573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111e0919061306c565b505050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112809291906130bc565b6020604051808303815f875af115801561129c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c091906130f7565b5050565b6112cc61168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134f90612dc2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90613192565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61148961168c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c90612dc2565b60405180910390fd5b60045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561159f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611596906131fa565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b85560405160405180910390a250565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613288565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613316565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118499190612904565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb906133a4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192990613432565b60405180910390fd5b5f8111611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906134c0565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590613528565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90613590565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b27575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e485760085f9054906101000a900460ff16611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b71906135f8565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c235750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c76575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ceb57600954821115611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613660565b60405180910390fd5b611ce86064611cda600654856122c990919063ffffffff16565b61234090919063ffffffff16565b90505b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d6a57611d676064611d59600754856122c990919063ffffffff16565b61234090919063ffffffff16565b90505b5f611d7430610b11565b9050600d60149054906101000a900460ff16158015611ddf5750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611df75750600d60159054906101000a900460ff165b8015611e055750600a548110155b15611e46575f600b54600a5411611e1e57600a54611e22565b600b545b9050611e2d81612389565b5f4790505f811115611e4357611e42816125f4565b5b50505b505b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ee3575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f945750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f935750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f9d575f90505b5f81111561209c57611ff58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120939190612904565b60405180910390a35b612106826040518060600160405280602681526020016139e06026913960015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122679092919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121a961215d82846126b990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61224c84866126b990919063ffffffff16565b6040516122599190612904565b60405180910390a350505050565b5f8383111582906122ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a591906127d3565b60405180910390fd5b505f83856122bc919061367e565b9050809150509392505050565b5f8083036122d9575f905061233a565b5f82846122e69190612ca9565b90508284826122f591906136de565b14612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c9061377e565b60405180910390fd5b809150505b92915050565b5f61238183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612702565b905092915050565b6001600d60146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123c0576123bf61379c565b5b6040519080825280602002602001820160405280156123ee5781602001602082028036833780820191505090505b50905030815f81518110612405576124046137c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cd919061380a565b816001815181106124e1576124e06137c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061254730600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611693565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125a99594939291906138ec565b5f604051808303815f87803b1580156125c0575f80fd5b505af11580156125d2573d5f803e3d5ffd5b50505050505f600d60146101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612658573d5f803e3d5ffd5b5050565b5f80828461266a9190613944565b9050838110156126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a6906139c1565b60405180910390fd5b8091505092915050565b5f6126fa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612267565b905092915050565b5f8083118290612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f91906127d3565b60405180910390fd5b505f838561275691906136de565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6127a582612763565b6127af818561276d565b93506127bf81856020860161277d565b6127c88161278b565b840191505092915050565b5f6020820190508181035f8301526127eb818461279b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612820826127f7565b9050919050565b61283081612816565b811461283a575f80fd5b50565b5f8135905061284b81612827565b92915050565b5f819050919050565b61286381612851565b811461286d575f80fd5b50565b5f8135905061287e8161285a565b92915050565b5f806040838503121561289a576128996127f3565b5b5f6128a78582860161283d565b92505060206128b885828601612870565b9150509250929050565b5f8115159050919050565b6128d6816128c2565b82525050565b5f6020820190506128ef5f8301846128cd565b92915050565b6128fe81612851565b82525050565b5f6020820190506129175f8301846128f5565b92915050565b5f805f60608486031215612934576129336127f3565b5b5f6129418682870161283d565b93505060206129528682870161283d565b925050604061296386828701612870565b9150509250925092565b5f60ff82169050919050565b6129828161296d565b82525050565b5f60208201905061299b5f830184612979565b92915050565b5f602082840312156129b6576129b56127f3565b5b5f6129c38482850161283d565b91505092915050565b6129d5816128c2565b81146129df575f80fd5b50565b5f813590506129f0816129cc565b92915050565b5f8060408385031215612a0c57612a0b6127f3565b5b5f612a198582860161283d565b9250506020612a2a858286016129e2565b9150509250929050565b5f8060408385031215612a4a57612a496127f3565b5b5f612a5785828601612870565b9250506020612a6885828601612870565b9150509250929050565b5f60208284031215612a8757612a866127f3565b5b5f612a9484828501612870565b91505092915050565b612aa681612816565b82525050565b5f602082019050612abf5f830184612a9d565b92915050565b5f8060408385031215612adb57612ada6127f3565b5b5f612ae88582860161283d565b9250506020612af98582860161283d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b8557808604811115612b6157612b60612b03565b5b6001851615612b705780820291505b8081029050612b7e85612b30565b9450612b45565b94509492505050565b5f82612b9d5760019050612c58565b81612baa575f9050612c58565b8160018114612bc05760028114612bca57612bf9565b6001915050612c58565b60ff841115612bdc57612bdb612b03565b5b8360020a915084821115612bf357612bf2612b03565b5b50612c58565b5060208310610133831016604e8410600b8410161715612c2e5782820a905083811115612c2957612c28612b03565b5b612c58565b612c3b8484846001612b3c565b92509050818404811115612c5257612c51612b03565b5b81810290505b9392505050565b5f612c6982612851565b9150612c748361296d565b9250612ca17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b8e565b905092915050565b5f612cb382612851565b9150612cbe83612851565b9250828202612ccc81612851565b91508282048414831517612ce357612ce2612b03565b5b5092915050565b7f4f6e6c79206465762077616c6c65742063616e20776974686472617720746f6b5f8201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d4460238361276d565b9150612d4f82612cea565b604082019050919050565b5f6020820190508181035f830152612d7181612d38565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612dac60208361276d565b9150612db782612d78565b602082019050919050565b5f6020820190508181035f830152612dd981612da0565b9050919050565b7f41646472657373206973206e6f7420626c61636b6c69737465640000000000005f82015250565b5f612e14601a8361276d565b9150612e1f82612de0565b602082019050919050565b5f6020820190508181035f830152612e4181612e08565b9050919050565b5f604082019050612e5b5f8301856128f5565b612e6860208301846128f5565b9392505050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ea360178361276d565b9150612eae82612e6f565b602082019050919050565b5f6020820190508181035f830152612ed081612e97565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f72206c5f8201527f6971756964697479000000000000000000000000000000000000000000000000602082015250565b5f612f3160288361276d565b9150612f3c82612ed7565b604082019050919050565b5f6020820190508181035f830152612f5e81612f25565b9050919050565b5f819050919050565b5f819050919050565b5f612f91612f8c612f8784612f65565b612f6e565b612851565b9050919050565b612fa181612f77565b82525050565b5f612fc1612fbc612fb7846127f7565b612f6e565b6127f7565b9050919050565b5f612fd282612fa7565b9050919050565b5f612fe382612fc8565b9050919050565b612ff381612fd9565b82525050565b5f60c08201905061300c5f830189612a9d565b61301960208301886128f5565b6130266040830187612f98565b6130336060830186612f98565b6130406080830185612fea565b61304d60a08301846128f5565b979650505050505050565b5f815190506130668161285a565b92915050565b5f805f60608486031215613083576130826127f3565b5b5f61309086828701613058565b93505060206130a186828701613058565b92505060406130b286828701613058565b9150509250925092565b5f6040820190506130cf5f830185612a9d565b6130dc60208301846128f5565b9392505050565b5f815190506130f1816129cc565b92915050565b5f6020828403121561310c5761310b6127f3565b5b5f613119848285016130e3565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61317c60268361276d565b915061318782613122565b604082019050919050565b5f6020820190508181035f8301526131a981613170565b9050919050565b7f4164647265737320697320616c726561647920626c61636b6c697374656400005f82015250565b5f6131e4601e8361276d565b91506131ef826131b0565b602082019050919050565b5f6020820190508181035f830152613211816131d8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61327260248361276d565b915061327d82613218565b604082019050919050565b5f6020820190508181035f83015261329f81613266565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61330060228361276d565b915061330b826132a6565b604082019050919050565b5f6020820190508181035f83015261332d816132f4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61338e60258361276d565b915061339982613334565b604082019050919050565b5f6020820190508181035f8301526133bb81613382565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61341c60238361276d565b9150613427826133c2565b604082019050919050565b5f6020820190508181035f83015261344981613410565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134aa60298361276d565b91506134b582613450565b604082019050919050565b5f6020820190508181035f8301526134d78161349e565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f61351260158361276d565b915061351d826134de565b602082019050919050565b5f6020820190508181035f83015261353f81613506565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f61357a60188361276d565b915061358582613546565b602082019050919050565b5f6020820190508181035f8301526135a78161356e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6135e260168361276d565b91506135ed826135ae565b602082019050919050565b5f6020820190508181035f83015261360f816135d6565b9050919050565b7f4578636565647320746865205f6d61784275794c696d69742e000000000000005f82015250565b5f61364a60198361276d565b915061365582613616565b602082019050919050565b5f6020820190508181035f8301526136778161363e565b9050919050565b5f61368882612851565b915061369383612851565b92508282039050818111156136ab576136aa612b03565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136e882612851565b91506136f383612851565b925082613703576137026136b1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61376860218361276d565b91506137738261370e565b604082019050919050565b5f6020820190508181035f8301526137958161375c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061380481612827565b92915050565b5f6020828403121561381f5761381e6127f3565b5b5f61382c848285016137f6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61386781612816565b82525050565b5f613878838361385e565b60208301905092915050565b5f602082019050919050565b5f61389a82613835565b6138a4818561383f565b93506138af8361384f565b805f5b838110156138df5781516138c6888261386d565b97506138d183613884565b9250506001810190506138b2565b5085935050505092915050565b5f60a0820190506138ff5f8301886128f5565b61390c6020830187612f98565b818103604083015261391e8186613890565b905061392d6060830185612a9d565b61393a60808301846128f5565b9695505050505050565b5f61394e82612851565b915061395983612851565b925082820190508082111561397157613970612b03565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6139ab601b8361276d565b91506139b682613977565b602082019050919050565b5f6020820190508181035f8301526139d88161399f565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209bbc0357d8ed7e0a5e6b360e2d3555d7e96c9d8e1e4b0d9996035285449a968164736f6c634300081a0033

Deployed Bytecode Sourcemap

4268:15709:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7391:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9122:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5439:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7911:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5284:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9511:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19525:272;;;;;;;;;;;;;:::i;:::-;;7719:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18799:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17884:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17400:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8125:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2970:148;;;;;;;;;;;;;:::i;:::-;;17040:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2756:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7546:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8460:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5362:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16376:167;;;;;;;;;;;;;:::i;:::-;;8810:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14843:1274;;;;;;;;;;;;;:::i;:::-;;3126:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18295:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19226:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7391:83;7428:13;7461:5;;;;;;;;;;;;;;;;;7454:12;;7391:83;:::o;9122:186::-;9222:4;9239:39;9248:12;:10;:12::i;:::-;9262:7;9271:6;9239:8;:39::i;:::-;9296:4;9289:11;;9122:186;;;;:::o;5439:41::-;;;;:::o;7911:95::-;7964:7;5140:1;5197:2;:15;;;;:::i;:::-;5183:11;:29;;;;:::i;:::-;7984:14;;7911:95;:::o;5284:49::-;;;;:::o;9511:446::-;9643:4;9660:36;9670:6;9678:9;9689:6;9660:9;:36::i;:::-;9707:220;9730:6;9751:12;:10;:12::i;:::-;9778:138;9834:6;9778:138;;;;;;;;;;;;;;;;;:11;:19;9790:6;9778:19;;;;;;;;;;;;;;;:33;9798:12;:10;:12::i;:::-;9778:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;9707:8;:220::i;:::-;9945:4;9938:11;;9511:446;;;;;:::o;19525:272::-;19609:10;;;;;;;;;;;19593:26;;:12;:10;:12::i;:::-;:26;;;19571:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;19693:14;19710:24;19728:4;19710:9;:24::i;:::-;19693:41;;19745:44;19763:4;19770:10;;;;;;;;;;;19782:6;19745:9;:44::i;:::-;19560:237;19525:272::o;7719:83::-;7760:5;5140:1;7778:16;;7719:83;:::o;18799:233::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18883:14:::1;:23;18898:7;18883:23;;;;;;;;;;;;;;;;;;;;;;;;;18875:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18974:5;18948:14;:23;18963:7;18948:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19016:7;18995:29;;;;;;;;;;;;18799:233:::0;:::o;17884:161::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18029:8:::1;17999:18;:27;18018:7;17999:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;17884:161:::0;;:::o;17400:193::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17495:9:::1;17485:7;:19;;;;17526:10;17515:8;:21;;;;17552:33;17563:9;17574:10;17552:33;;;;;;;:::i;:::-;;;;;;;;17400:193:::0;;:::o;8125:119::-;8191:7;8218:9;:18;8228:7;8218:18;;;;;;;;;;;;;;;;8211:25;;8125:119;;;:::o;2970:148::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3077:1:::1;3040:40;;3061:6;::::0;::::1;;;;;;;;3040:40;;;;;;;;;;;;3108:1;3091:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2970:148::o:0;17040:160::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17133:11:::1;17118:12;:26;;;;17160:32;17179:12;;17160:32;;;;;;:::i;:::-;;;;;;;;17040:160:::0;:::o;2756:79::-;2794:7;2821:6;;;;;;;;;;;2814:13;;2756:79;:::o;7546:87::-;7585:13;7618:7;;;;;;;;;;;;;;;;;7611:14;;7546:87;:::o;8460:192::-;8563:4;8580:42;8590:12;:10;:12::i;:::-;8604:9;8615:6;8580:9;:42::i;:::-;8640:4;8633:11;;8460:192;;;;:::o;5362:48::-;;;;:::o;16376:167::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16438:11:::1;;;;;;;;;;;16437:12;16429:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16502:4;16488:11;;:18;;;;;;;;;;;;;;;;;;16531:4;16517:11;;:18;;;;;;;;;;;;;;;;;;16376:167::o:0;8810:170::-;8917:7;8944:11;:19;8956:6;8944:19;;;;;;;;;;;;;;;:28;8964:7;8944:28;;;;;;;;;;;;;;;;8937:35;;8810:170;;;;:::o;14843:1274::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14906:11:::1;;;;;;;;;;;14905:12;14897:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14958:19;5140:1;14994:2;:15;;;;:::i;:::-;14980:11;:29;;;;:::i;:::-;14958:51;;15167:11;15139:24;15157:4;15139:9;:24::i;:::-;:39;;15117:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;15310:62;15327:4;15342:15;;;;;;;;;;;15360:11;15310:8;:62::i;:::-;15426:15;;;;;;;;;;;:31;;;15465:21;15510:4;15552:11;15612:1;15699::::0;15783:10:::1;;;;;;;;;;;15853:15;15426:479;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16005:13;;;;;;;;;;;15998:29;;;16050:15;;;;;;;;;;;16081:17;15998:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14886:1231;14843:1274::o:0;3126:285::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3251:1:::1;3230:23;;:9;:23;;::::0;3208:111:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3364:9;3335:39;;3356:6;::::0;::::1;;;;;;;;3335:39;;;;;;;;;;;;3394:9;3385:6;::::0;:18:::1;;;;;;;;;;;;;;;;;;3126:285:::0;:::o;18295:225::-;2893:12;:10;:12::i;:::-;2883:22;;:6;;;;;;;;;;:22;;;2875:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18377:14:::1;:23;18392:7;18377:23;;;;;;;;;;;;;;;;;;;;;;;;;18376:24;18368:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18472:4;18446:14;:23;18461:7;18446:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;18504:7;18492:20;;;;;;;;;;;;18295:225:::0;:::o;19226:116::-;19287:4;19311:14;:23;19326:7;19311:23;;;;;;;;;;;;;;;;;;;;;;;;;19304:30;;19226:116;;;:::o;147:98::-;200:7;227:10;220:17;;147:98;:::o;10103:339::-;10215:1;10197:20;;:6;:20;;;10189:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10296:1;10277:21;;:7;:21;;;10269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10379:6;10348:11;:19;10360:6;10348:19;;;;;;;;;;;;;;;:28;10368:7;10348:28;;;;;;;;;;;;;;;:37;;;;10418:7;10401:33;;10410:6;10401:33;;;10427:6;10401:33;;;;;;:::i;:::-;;;;;;;;10103:339;;;:::o;10709:2967::-;10852:1;10836:18;;:4;:18;;;10828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10929:1;10915:16;;:2;:16;;;10907:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10999:1;10990:6;:10;10982:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11097:14;:20;11112:4;11097:20;;;;;;;;;;;;;;;;;;;;;;;;;11096:21;11088:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11163:14;:18;11178:2;11163:18;;;;;;;;;;;;;;;;;;;;;;;;;11162:19;11154:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11223:17;11331:18;:24;11350:4;11331:24;;;;;;;;;;;;;;;;;;;;;;;;;11330:25;:52;;;;;11360:18;:22;11379:2;11360:22;;;;;;;;;;;;;;;;;;;;;;;;;11359:23;11330:52;11326:1500;;;11446:11;;;;;;;;;;;11438:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11588:13;;;;;;;;;;;11580:21;;:4;:21;;;:72;;;;;11636:15;;;;;;;;;;;11622:30;;:2;:30;;;;11580:72;:116;;;;;11674:18;:22;11693:2;11674:22;;;;;;;;;;;;;;;;;;;;;;;;;11673:23;11580:116;11558:348;;;11749:12;;11739:6;:22;;11731:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11862:28;11886:3;11862:19;11873:7;;11862:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;11850:40;;11558:348;11980:13;;;;;;;;;;;11974:19;;:2;:19;;;11970:101;;12026:29;12051:3;12026:20;12037:8;;12026:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;12014:41;;11970:101;12156:28;12187:24;12205:4;12187:9;:24::i;:::-;12156:55;;12249:6;;;;;;;;;;;12248:7;:47;;;;;12282:13;;;;;;;;;;;12276:19;;:2;:19;;;12248:47;:79;;;;;12316:11;;;;;;;;;;;12248:79;:141;;;;;12372:17;;12348:20;:41;;12248:141;12226:589;;;12424:20;12467:11;;12447:17;;:31;:107;;12537:17;;12447:107;;;12502:11;;12447:107;12424:130;;12573:30;12590:12;12573:16;:30::i;:::-;12622:26;12651:21;12622:50;;12716:1;12695:18;:22;12691:109;;;12742:38;12761:18;12742;:38::i;:::-;12691:109;12405:410;;12226:589;11384:1442;11326:1500;12959:18;:24;12978:4;12959:24;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;13000:18;:22;13019:2;13000:22;;;;;;;;;;;;;;;;;;;;;;;;;12959:63;:126;;;;13048:13;;;;;;;;;;;13040:21;;:4;:21;;;;:44;;;;;13071:13;;;;;;;;;;;13065:19;;:2;:19;;;;13040:44;12959:126;12941:196;;;13124:1;13112:13;;12941:196;13206:1;13194:9;:13;13190:172;;;13251:39;13280:9;13251;:24;13269:4;13251:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13224:9;:24;13242:4;13224:24;;;;;;;;;;;;;;;:66;;;;13333:4;13310:40;;13319:4;13310:40;;;13340:9;13310:40;;;;;;:::i;:::-;;;;;;;;13190:172;13438:106;13472:6;13438:106;;;;;;;;;;;;;;;;;:9;:15;13448:4;13438:15;;;;;;;;;;;;;;;;:19;;:106;;;;;:::i;:::-;13420:9;:15;13430:4;13420:15;;;;;;;;;;;;;;;:124;;;;13571:40;13589:21;13600:9;13589:6;:10;;:21;;;;:::i;:::-;13571:9;:13;13581:2;13571:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;13555:9;:13;13565:2;13555:13;;;;;;;;;;;;;;;:56;;;;13642:2;13627:41;;13636:4;13627:41;;;13646:21;13657:9;13646:6;:10;;:21;;;;:::i;:::-;13627:41;;;;;;:::i;:::-;;;;;;;;10778:2898;10709:2967;;;:::o;1416:224::-;1536:7;1569:1;1564;:6;;1572:12;1556:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1596:9;1612:1;1608;:5;;;;:::i;:::-;1596:17;;1631:1;1624:8;;;1416:224;;;;;:::o;1648:388::-;1706:7;1875:1;1870;:6;1866:47;;1900:1;1893:8;;;;1866:47;1925:9;1941:1;1937;:5;;;;:::i;:::-;1925:17;;1970:1;1965;1961;:5;;;;:::i;:::-;:10;1953:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2027:1;2020:8;;;1648:388;;;;;:::o;2044:132::-;2102:7;2129:39;2133:1;2136;2129:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2122:46;;2044:132;;;;:::o;13897:707::-;6114:4;6105:6;;:13;;;;;;;;;;;;;;;;;;14035:21:::1;14073:1;14059:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14035:40;;14104:4;14086;14091:1;14086:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14130:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14120:4;14125:1;14120:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14216:62;14233:4;14248:15;;;;;;;;;;;14266:11;14216:8;:62::i;:::-;14320:15;;;;;;;;;;;:66;;;14401:11;14427:1;14471:4;14498;14570:15;14320:276;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13964:640;6150:5:::0;6141:6;;:14;;;;;;;;;;;;;;;;;;13897:707;:::o;16699:110::-;16768:10;;;;;;;;;;;:19;;:33;16788:12;16768:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16699:110;:::o;1085:179::-;1143:7;1163:9;1179:1;1175;:5;;;;:::i;:::-;1163:17;;1204:1;1199;:6;;1191:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1255:1;1248:8;;;1085:179;;;;:::o;1272:136::-;1330:7;1357:43;1361:1;1364;1357:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1350:50;;1272:136;;;;:::o;2184:223::-;2304:7;2336:1;2332;:5;2339:12;2324:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2363:9;2379:1;2375;:5;;;;:::i;:::-;2363:17;;2398:1;2391:8;;;2184:223;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:116::-;5151:21;5166:5;5151:21;:::i;:::-;5144:5;5141:32;5131:60;;5187:1;5184;5177:12;5131:60;5081:116;:::o;5203:133::-;5246:5;5284:6;5271:20;5262:29;;5300:30;5324:5;5300:30;:::i;:::-;5203:133;;;;:::o;5342:468::-;5407:6;5415;5464:2;5452:9;5443:7;5439:23;5435:32;5432:119;;;5470:79;;:::i;:::-;5432:119;5590:1;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5561:117;5717:2;5743:50;5785:7;5776:6;5765:9;5761:22;5743:50;:::i;:::-;5733:60;;5688:115;5342:468;;;;;:::o;5816:474::-;5884:6;5892;5941:2;5929:9;5920:7;5916:23;5912:32;5909:119;;;5947:79;;:::i;:::-;5909:119;6067:1;6092:53;6137:7;6128:6;6117:9;6113:22;6092:53;:::i;:::-;6082:63;;6038:117;6194:2;6220:53;6265:7;6256:6;6245:9;6241:22;6220:53;:::i;:::-;6210:63;;6165:118;5816:474;;;;;:::o;6296:329::-;6355:6;6404:2;6392:9;6383:7;6379:23;6375:32;6372:119;;;6410:79;;:::i;:::-;6372:119;6530:1;6555:53;6600:7;6591:6;6580:9;6576:22;6555:53;:::i;:::-;6545:63;;6501:117;6296:329;;;;:::o;6631:118::-;6718:24;6736:5;6718:24;:::i;:::-;6713:3;6706:37;6631:118;;:::o;6755:222::-;6848:4;6886:2;6875:9;6871:18;6863:26;;6899:71;6967:1;6956:9;6952:17;6943:6;6899:71;:::i;:::-;6755:222;;;;:::o;6983:474::-;7051:6;7059;7108:2;7096:9;7087:7;7083:23;7079:32;7076:119;;;7114:79;;:::i;:::-;7076:119;7234:1;7259:53;7304:7;7295:6;7284:9;7280:22;7259:53;:::i;:::-;7249:63;;7205:117;7361:2;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7332:118;6983:474;;;;;:::o;7463:180::-;7511:77;7508:1;7501:88;7608:4;7605:1;7598:15;7632:4;7629:1;7622:15;7649:102;7691:8;7738:5;7735:1;7731:13;7710:34;;7649:102;;;:::o;7757:848::-;7818:5;7825:4;7849:6;7840:15;;7873:5;7864:14;;7887:712;7908:1;7898:8;7895:15;7887:712;;;8003:4;7998:3;7994:14;7988:4;7985:24;7982:50;;;8012:18;;:::i;:::-;7982:50;8062:1;8052:8;8048:16;8045:451;;;8477:4;8470:5;8466:16;8457:25;;8045:451;8527:4;8521;8517:15;8509:23;;8557:32;8580:8;8557:32;:::i;:::-;8545:44;;7887:712;;;7757:848;;;;;;;:::o;8611:1073::-;8665:5;8856:8;8846:40;;8877:1;8868:10;;8879:5;;8846:40;8905:4;8895:36;;8922:1;8913:10;;8924:5;;8895:36;8991:4;9039:1;9034:27;;;;9075:1;9070:191;;;;8984:277;;9034:27;9052:1;9043:10;;9054:5;;;9070:191;9115:3;9105:8;9102:17;9099:43;;;9122:18;;:::i;:::-;9099:43;9171:8;9168:1;9164:16;9155:25;;9206:3;9199:5;9196:14;9193:40;;;9213:18;;:::i;:::-;9193:40;9246:5;;;8984:277;;9370:2;9360:8;9357:16;9351:3;9345:4;9342:13;9338:36;9320:2;9310:8;9307:16;9302:2;9296:4;9293:12;9289:35;9273:111;9270:246;;;9426:8;9420:4;9416:19;9407:28;;9461:3;9454:5;9451:14;9448:40;;;9468:18;;:::i;:::-;9448:40;9501:5;;9270:246;9541:42;9579:3;9569:8;9563:4;9560:1;9541:42;:::i;:::-;9526:57;;;;9615:4;9610:3;9606:14;9599:5;9596:25;9593:51;;;9624:18;;:::i;:::-;9593:51;9673:4;9666:5;9662:16;9653:25;;8611:1073;;;;;;:::o;9690:281::-;9748:5;9772:23;9790:4;9772:23;:::i;:::-;9764:31;;9816:25;9832:8;9816:25;:::i;:::-;9804:37;;9860:104;9897:66;9887:8;9881:4;9860:104;:::i;:::-;9851:113;;9690:281;;;;:::o;9977:410::-;10017:7;10040:20;10058:1;10040:20;:::i;:::-;10035:25;;10074:20;10092:1;10074:20;:::i;:::-;10069:25;;10129:1;10126;10122:9;10151:30;10169:11;10151:30;:::i;:::-;10140:41;;10330:1;10321:7;10317:15;10314:1;10311:22;10291:1;10284:9;10264:83;10241:139;;10360:18;;:::i;:::-;10241:139;10025:362;9977:410;;;;:::o;10393:222::-;10533:34;10529:1;10521:6;10517:14;10510:58;10602:5;10597:2;10589:6;10585:15;10578:30;10393:222;:::o;10621:366::-;10763:3;10784:67;10848:2;10843:3;10784:67;:::i;:::-;10777:74;;10860:93;10949:3;10860:93;:::i;:::-;10978:2;10973:3;10969:12;10962:19;;10621:366;;;:::o;10993:419::-;11159:4;11197:2;11186:9;11182:18;11174:26;;11246:9;11240:4;11236:20;11232:1;11221:9;11217:17;11210:47;11274:131;11400:4;11274:131;:::i;:::-;11266:139;;10993:419;;;:::o;11418:182::-;11558:34;11554:1;11546:6;11542:14;11535:58;11418:182;:::o;11606:366::-;11748:3;11769:67;11833:2;11828:3;11769:67;:::i;:::-;11762:74;;11845:93;11934:3;11845:93;:::i;:::-;11963:2;11958:3;11954:12;11947:19;;11606:366;;;:::o;11978:419::-;12144:4;12182:2;12171:9;12167:18;12159:26;;12231:9;12225:4;12221:20;12217:1;12206:9;12202:17;12195:47;12259:131;12385:4;12259:131;:::i;:::-;12251:139;;11978:419;;;:::o;12403:176::-;12543:28;12539:1;12531:6;12527:14;12520:52;12403:176;:::o;12585:366::-;12727:3;12748:67;12812:2;12807:3;12748:67;:::i;:::-;12741:74;;12824:93;12913:3;12824:93;:::i;:::-;12942:2;12937:3;12933:12;12926:19;;12585:366;;;:::o;12957:419::-;13123:4;13161:2;13150:9;13146:18;13138:26;;13210:9;13204:4;13200:20;13196:1;13185:9;13181:17;13174:47;13238:131;13364:4;13238:131;:::i;:::-;13230:139;;12957:419;;;:::o;13382:332::-;13503:4;13541:2;13530:9;13526:18;13518:26;;13554:71;13622:1;13611:9;13607:17;13598:6;13554:71;:::i;:::-;13635:72;13703:2;13692:9;13688:18;13679:6;13635:72;:::i;:::-;13382:332;;;;;:::o;13720:173::-;13860:25;13856:1;13848:6;13844:14;13837:49;13720:173;:::o;13899:366::-;14041:3;14062:67;14126:2;14121:3;14062:67;:::i;:::-;14055:74;;14138:93;14227:3;14138:93;:::i;:::-;14256:2;14251:3;14247:12;14240:19;;13899:366;;;:::o;14271:419::-;14437:4;14475:2;14464:9;14460:18;14452:26;;14524:9;14518:4;14514:20;14510:1;14499:9;14495:17;14488:47;14552:131;14678:4;14552:131;:::i;:::-;14544:139;;14271:419;;;:::o;14696:227::-;14836:34;14832:1;14824:6;14820:14;14813:58;14905:10;14900:2;14892:6;14888:15;14881:35;14696:227;:::o;14929:366::-;15071:3;15092:67;15156:2;15151:3;15092:67;:::i;:::-;15085:74;;15168:93;15257:3;15168:93;:::i;:::-;15286:2;15281:3;15277:12;15270:19;;14929:366;;;:::o;15301:419::-;15467:4;15505:2;15494:9;15490:18;15482:26;;15554:9;15548:4;15544:20;15540:1;15529:9;15525:17;15518:47;15582:131;15708:4;15582:131;:::i;:::-;15574:139;;15301:419;;;:::o;15726:85::-;15771:7;15800:5;15789:16;;15726:85;;;:::o;15817:60::-;15845:3;15866:5;15859:12;;15817:60;;;:::o;15883:158::-;15941:9;15974:61;15992:42;16001:32;16027:5;16001:32;:::i;:::-;15992:42;:::i;:::-;15974:61;:::i;:::-;15961:74;;15883:158;;;:::o;16047:147::-;16142:45;16181:5;16142:45;:::i;:::-;16137:3;16130:58;16047:147;;:::o;16200:142::-;16250:9;16283:53;16301:34;16310:24;16328:5;16310:24;:::i;:::-;16301:34;:::i;:::-;16283:53;:::i;:::-;16270:66;;16200:142;;;:::o;16348:126::-;16398:9;16431:37;16462:5;16431:37;:::i;:::-;16418:50;;16348:126;;;:::o;16480:134::-;16538:9;16571:37;16602:5;16571:37;:::i;:::-;16558:50;;16480:134;;;:::o;16620:147::-;16715:45;16754:5;16715:45;:::i;:::-;16710:3;16703:58;16620:147;;:::o;16773:823::-;17030:4;17068:3;17057:9;17053:19;17045:27;;17082:71;17150:1;17139:9;17135:17;17126:6;17082:71;:::i;:::-;17163:72;17231:2;17220:9;17216:18;17207:6;17163:72;:::i;:::-;17245:80;17321:2;17310:9;17306:18;17297:6;17245:80;:::i;:::-;17335;17411:2;17400:9;17396:18;17387:6;17335:80;:::i;:::-;17425:81;17501:3;17490:9;17486:19;17477:6;17425:81;:::i;:::-;17516:73;17584:3;17573:9;17569:19;17560:6;17516:73;:::i;:::-;16773:823;;;;;;;;;:::o;17602:143::-;17659:5;17690:6;17684:13;17675:22;;17706:33;17733:5;17706:33;:::i;:::-;17602:143;;;;:::o;17751:663::-;17839:6;17847;17855;17904:2;17892:9;17883:7;17879:23;17875:32;17872:119;;;17910:79;;:::i;:::-;17872:119;18030:1;18055:64;18111:7;18102:6;18091:9;18087:22;18055:64;:::i;:::-;18045:74;;18001:128;18168:2;18194:64;18250:7;18241:6;18230:9;18226:22;18194:64;:::i;:::-;18184:74;;18139:129;18307:2;18333:64;18389:7;18380:6;18369:9;18365:22;18333:64;:::i;:::-;18323:74;;18278:129;17751:663;;;;;:::o;18420:332::-;18541:4;18579:2;18568:9;18564:18;18556:26;;18592:71;18660:1;18649:9;18645:17;18636:6;18592:71;:::i;:::-;18673:72;18741:2;18730:9;18726:18;18717:6;18673:72;:::i;:::-;18420:332;;;;;:::o;18758:137::-;18812:5;18843:6;18837:13;18828:22;;18859:30;18883:5;18859:30;:::i;:::-;18758:137;;;;:::o;18901:345::-;18968:6;19017:2;19005:9;18996:7;18992:23;18988:32;18985:119;;;19023:79;;:::i;:::-;18985:119;19143:1;19168:61;19221:7;19212:6;19201:9;19197:22;19168:61;:::i;:::-;19158:71;;19114:125;18901:345;;;;:::o;19252:225::-;19392:34;19388:1;19380:6;19376:14;19369:58;19461:8;19456:2;19448:6;19444:15;19437:33;19252:225;:::o;19483:366::-;19625:3;19646:67;19710:2;19705:3;19646:67;:::i;:::-;19639:74;;19722:93;19811:3;19722:93;:::i;:::-;19840:2;19835:3;19831:12;19824:19;;19483:366;;;:::o;19855:419::-;20021:4;20059:2;20048:9;20044:18;20036:26;;20108:9;20102:4;20098:20;20094:1;20083:9;20079:17;20072:47;20136:131;20262:4;20136:131;:::i;:::-;20128:139;;19855:419;;;:::o;20280:180::-;20420:32;20416:1;20408:6;20404:14;20397:56;20280:180;:::o;20466:366::-;20608:3;20629:67;20693:2;20688:3;20629:67;:::i;:::-;20622:74;;20705:93;20794:3;20705:93;:::i;:::-;20823:2;20818:3;20814:12;20807:19;;20466:366;;;:::o;20838:419::-;21004:4;21042:2;21031:9;21027:18;21019:26;;21091:9;21085:4;21081:20;21077:1;21066:9;21062:17;21055:47;21119:131;21245:4;21119:131;:::i;:::-;21111:139;;20838:419;;;:::o;21263:223::-;21403:34;21399:1;21391:6;21387:14;21380:58;21472:6;21467:2;21459:6;21455:15;21448:31;21263:223;:::o;21492:366::-;21634:3;21655:67;21719:2;21714:3;21655:67;:::i;:::-;21648:74;;21731:93;21820:3;21731:93;:::i;:::-;21849:2;21844:3;21840:12;21833:19;;21492:366;;;:::o;21864:419::-;22030:4;22068:2;22057:9;22053:18;22045:26;;22117:9;22111:4;22107:20;22103:1;22092:9;22088:17;22081:47;22145:131;22271:4;22145:131;:::i;:::-;22137:139;;21864:419;;;:::o;22289:221::-;22429:34;22425:1;22417:6;22413:14;22406:58;22498:4;22493:2;22485:6;22481:15;22474:29;22289:221;:::o;22516:366::-;22658:3;22679:67;22743:2;22738:3;22679:67;:::i;:::-;22672:74;;22755:93;22844:3;22755:93;:::i;:::-;22873:2;22868:3;22864:12;22857:19;;22516:366;;;:::o;22888:419::-;23054:4;23092:2;23081:9;23077:18;23069:26;;23141:9;23135:4;23131:20;23127:1;23116:9;23112:17;23105:47;23169:131;23295:4;23169:131;:::i;:::-;23161:139;;22888:419;;;:::o;23313:224::-;23453:34;23449:1;23441:6;23437:14;23430:58;23522:7;23517:2;23509:6;23505:15;23498:32;23313:224;:::o;23543:366::-;23685:3;23706:67;23770:2;23765:3;23706:67;:::i;:::-;23699:74;;23782:93;23871:3;23782:93;:::i;:::-;23900:2;23895:3;23891:12;23884:19;;23543:366;;;:::o;23915:419::-;24081:4;24119:2;24108:9;24104:18;24096:26;;24168:9;24162:4;24158:20;24154:1;24143:9;24139:17;24132:47;24196:131;24322:4;24196:131;:::i;:::-;24188:139;;23915:419;;;:::o;24340:222::-;24480:34;24476:1;24468:6;24464:14;24457:58;24549:5;24544:2;24536:6;24532:15;24525:30;24340:222;:::o;24568:366::-;24710:3;24731:67;24795:2;24790:3;24731:67;:::i;:::-;24724:74;;24807:93;24896:3;24807:93;:::i;:::-;24925:2;24920:3;24916:12;24909:19;;24568:366;;;:::o;24940:419::-;25106:4;25144:2;25133:9;25129:18;25121:26;;25193:9;25187:4;25183:20;25179:1;25168:9;25164:17;25157:47;25221:131;25347:4;25221:131;:::i;:::-;25213:139;;24940:419;;;:::o;25365:228::-;25505:34;25501:1;25493:6;25489:14;25482:58;25574:11;25569:2;25561:6;25557:15;25550:36;25365:228;:::o;25599:366::-;25741:3;25762:67;25826:2;25821:3;25762:67;:::i;:::-;25755:74;;25838:93;25927:3;25838:93;:::i;:::-;25956:2;25951:3;25947:12;25940:19;;25599:366;;;:::o;25971:419::-;26137:4;26175:2;26164:9;26160:18;26152:26;;26224:9;26218:4;26214:20;26210:1;26199:9;26195:17;26188:47;26252:131;26378:4;26252:131;:::i;:::-;26244:139;;25971:419;;;:::o;26396:171::-;26536:23;26532:1;26524:6;26520:14;26513:47;26396:171;:::o;26573:366::-;26715:3;26736:67;26800:2;26795:3;26736:67;:::i;:::-;26729:74;;26812:93;26901:3;26812:93;:::i;:::-;26930:2;26925:3;26921:12;26914:19;;26573:366;;;:::o;26945:419::-;27111:4;27149:2;27138:9;27134:18;27126:26;;27198:9;27192:4;27188:20;27184:1;27173:9;27169:17;27162:47;27226:131;27352:4;27226:131;:::i;:::-;27218:139;;26945:419;;;:::o;27370:174::-;27510:26;27506:1;27498:6;27494:14;27487:50;27370:174;:::o;27550:366::-;27692:3;27713:67;27777:2;27772:3;27713:67;:::i;:::-;27706:74;;27789:93;27878:3;27789:93;:::i;:::-;27907:2;27902:3;27898:12;27891:19;;27550:366;;;:::o;27922:419::-;28088:4;28126:2;28115:9;28111:18;28103:26;;28175:9;28169:4;28165:20;28161:1;28150:9;28146:17;28139:47;28203:131;28329:4;28203:131;:::i;:::-;28195:139;;27922:419;;;:::o;28347:172::-;28487:24;28483:1;28475:6;28471:14;28464:48;28347:172;:::o;28525:366::-;28667:3;28688:67;28752:2;28747:3;28688:67;:::i;:::-;28681:74;;28764:93;28853:3;28764:93;:::i;:::-;28882:2;28877:3;28873:12;28866:19;;28525:366;;;:::o;28897:419::-;29063:4;29101:2;29090:9;29086:18;29078:26;;29150:9;29144:4;29140:20;29136:1;29125:9;29121:17;29114:47;29178:131;29304:4;29178:131;:::i;:::-;29170:139;;28897:419;;;:::o;29322:175::-;29462:27;29458:1;29450:6;29446:14;29439:51;29322:175;:::o;29503:366::-;29645:3;29666:67;29730:2;29725:3;29666:67;:::i;:::-;29659:74;;29742:93;29831:3;29742:93;:::i;:::-;29860:2;29855:3;29851:12;29844:19;;29503:366;;;:::o;29875:419::-;30041:4;30079:2;30068:9;30064:18;30056:26;;30128:9;30122:4;30118:20;30114:1;30103:9;30099:17;30092:47;30156:131;30282:4;30156:131;:::i;:::-;30148:139;;29875:419;;;:::o;30300:194::-;30340:4;30360:20;30378:1;30360:20;:::i;:::-;30355:25;;30394:20;30412:1;30394:20;:::i;:::-;30389:25;;30438:1;30435;30431:9;30423:17;;30462:1;30456:4;30453:11;30450:37;;;30467:18;;:::i;:::-;30450:37;30300:194;;;;:::o;30500:180::-;30548:77;30545:1;30538:88;30645:4;30642:1;30635:15;30669:4;30666:1;30659:15;30686:185;30726:1;30743:20;30761:1;30743:20;:::i;:::-;30738:25;;30777:20;30795:1;30777:20;:::i;:::-;30772:25;;30816:1;30806:35;;30821:18;;:::i;:::-;30806:35;30863:1;30860;30856:9;30851:14;;30686:185;;;;:::o;30877:220::-;31017:34;31013:1;31005:6;31001:14;30994:58;31086:3;31081:2;31073:6;31069:15;31062:28;30877:220;:::o;31103:366::-;31245:3;31266:67;31330:2;31325:3;31266:67;:::i;:::-;31259:74;;31342:93;31431:3;31342:93;:::i;:::-;31460:2;31455:3;31451:12;31444:19;;31103:366;;;:::o;31475:419::-;31641:4;31679:2;31668:9;31664:18;31656:26;;31728:9;31722:4;31718:20;31714:1;31703:9;31699:17;31692:47;31756:131;31882:4;31756:131;:::i;:::-;31748:139;;31475:419;;;:::o;31900:180::-;31948:77;31945:1;31938:88;32045:4;32042:1;32035:15;32069:4;32066:1;32059:15;32086:180;32134:77;32131:1;32124:88;32231:4;32228:1;32221:15;32255:4;32252:1;32245:15;32272:143;32329:5;32360:6;32354:13;32345:22;;32376:33;32403:5;32376:33;:::i;:::-;32272:143;;;;:::o;32421:351::-;32491:6;32540:2;32528:9;32519:7;32515:23;32511:32;32508:119;;;32546:79;;:::i;:::-;32508:119;32666:1;32691:64;32747:7;32738:6;32727:9;32723:22;32691:64;:::i;:::-;32681:74;;32637:128;32421:351;;;;:::o;32778:114::-;32845:6;32879:5;32873:12;32863:22;;32778:114;;;:::o;32898:184::-;32997:11;33031:6;33026:3;33019:19;33071:4;33066:3;33062:14;33047:29;;32898:184;;;;:::o;33088:132::-;33155:4;33178:3;33170:11;;33208:4;33203:3;33199:14;33191:22;;33088:132;;;:::o;33226:108::-;33303:24;33321:5;33303:24;:::i;:::-;33298:3;33291:37;33226:108;;:::o;33340:179::-;33409:10;33430:46;33472:3;33464:6;33430:46;:::i;:::-;33508:4;33503:3;33499:14;33485:28;;33340:179;;;;:::o;33525:113::-;33595:4;33627;33622:3;33618:14;33610:22;;33525:113;;;:::o;33674:732::-;33793:3;33822:54;33870:5;33822:54;:::i;:::-;33892:86;33971:6;33966:3;33892:86;:::i;:::-;33885:93;;34002:56;34052:5;34002:56;:::i;:::-;34081:7;34112:1;34097:284;34122:6;34119:1;34116:13;34097:284;;;34198:6;34192:13;34225:63;34284:3;34269:13;34225:63;:::i;:::-;34218:70;;34311:60;34364:6;34311:60;:::i;:::-;34301:70;;34157:224;34144:1;34141;34137:9;34132:14;;34097:284;;;34101:14;34397:3;34390:10;;33798:608;;;33674:732;;;;:::o;34412:831::-;34675:4;34713:3;34702:9;34698:19;34690:27;;34727:71;34795:1;34784:9;34780:17;34771:6;34727:71;:::i;:::-;34808:80;34884:2;34873:9;34869:18;34860:6;34808:80;:::i;:::-;34935:9;34929:4;34925:20;34920:2;34909:9;34905:18;34898:48;34963:108;35066:4;35057:6;34963:108;:::i;:::-;34955:116;;35081:72;35149:2;35138:9;35134:18;35125:6;35081:72;:::i;:::-;35163:73;35231:3;35220:9;35216:19;35207:6;35163:73;:::i;:::-;34412:831;;;;;;;;:::o;35249:191::-;35289:3;35308:20;35326:1;35308:20;:::i;:::-;35303:25;;35342:20;35360:1;35342:20;:::i;:::-;35337:25;;35385:1;35382;35378:9;35371:16;;35406:3;35403:1;35400:10;35397:36;;;35413:18;;:::i;:::-;35397:36;35249:191;;;;:::o;35446:177::-;35586:29;35582:1;35574:6;35570:14;35563:53;35446:177;:::o;35629:366::-;35771:3;35792:67;35856:2;35851:3;35792:67;:::i;:::-;35785:74;;35868:93;35957:3;35868:93;:::i;:::-;35986:2;35981:3;35977:12;35970:19;;35629:366;;;:::o;36001:419::-;36167:4;36205:2;36194:9;36190:18;36182:26;;36254:9;36248:4;36244:20;36240:1;36229:9;36225:17;36218:47;36282:131;36408:4;36282:131;:::i;:::-;36274:139;;36001:419;;;:::o

Swarm Source

ipfs://9bbc0357d8ed7e0a5e6b360e2d3555d7e96c9d8e1e4b0d9996035285449a9681

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.