ETH Price: $2,069.96 (+1.34%)

Contract

0xc9Bb02C8CD36a9ba0fB4E0398cCa19fDD0ec84Ae
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve192765482024-02-21 14:12:11749 days ago1708524731IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0015795663.40572082
Approve191985182024-02-10 15:14:35760 days ago1707578075IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0016105934.12574478
Approve191902852024-02-09 11:30:59761 days ago1707478259IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0028738760.89229074
Approve191884542024-02-09 5:20:35761 days ago1707456035IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0019791542.19231198
Approve191884362024-02-09 5:16:59761 days ago1707455819IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0023683650.18145984
Approve191884272024-02-09 5:14:59761 days ago1707455699IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0024796952.47358808
Approve191883712024-02-09 5:03:47761 days ago1707455027IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0019621541.81907411
Approve191883192024-02-09 4:53:11761 days ago1707454391IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0021756246.03914592
Disable Transfer...191883162024-02-09 4:52:35761 days ago1707454355IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0010878545.28031483
Update Sell Fees191883152024-02-09 4:52:23761 days ago1707454343IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0033947745.8636125
Approve191883122024-02-09 4:51:47761 days ago1707454307IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0019466341.28779257
Approve191883112024-02-09 4:51:35761 days ago1707454295IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0021162944.78352748
Enable Trading191883092024-02-09 4:51:11761 days ago1707454271IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0021453442.01279083
Exclude From Fee...191883042024-02-09 4:50:11761 days ago1707454211IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0021546544.54151774
Approve191882992024-02-09 4:49:11761 days ago1707454151IN
0xc9Bb02C8...DD0ec84Ae
0 ETH0.0021762446.05221895

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TOKEN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-02-09
*/

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



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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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


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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
  
    function name() external view returns (string memory);

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

    
    function decimals() external view returns (uint8);
}


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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

  
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }


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

        _beforeTokenTransfer(account, address(0), amount);

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

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


    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}


    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


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

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


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

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


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

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

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


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

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

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

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

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

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}


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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

/* pragma solidity >=0.8.10; */

/* import {IUniswapV2Router02} from "./IUniswapV2Router02.sol"; */
/* import {IUniswapV2Factory} from "./IUniswapV2Factory.sol"; */
/* import {IUniswapV2Pair} from "./IUniswapV2Pair.sol"; */
/* import {IERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; */
/* import {ERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; */
/* import {Ownable} from "lib/openzeppelin-contracts/contracts/access/Ownable.sol"; */
/* import {SafeMath} from "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol"; */

contract TOKEN is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    uint256 public percentForLPBurn = 25; // 25 = .25%
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    event ManualNukeLP();
    //nametoken

    constructor() ERC20("MetaStreet404", "MSTR") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 10000 * 1e18;

        maxTransactionAmount = 1_000_000_000 * 1e18; // 100% from total supply maxTransactionAmountTxn
        maxWallet = 1_000_000_000 * 1e18; // 100% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 10000) / 10000; // 100% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(0x4955A17040FE9a9d7fF5789596f3ae9606C6b410);
        devWallet = address(0x4955A17040FE9a9d7fF5789596f3ae9606C6b410);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }


    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }


    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 100, "Must keep fees at 11% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 100, "Must keep fees at 11% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

          

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

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

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

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    
    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }
    function mint(address to, uint256 amount) external onlyOwner {
    _mint(to, amount);
}


    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526019600b556001600c60006101000a81548160ff021916908315150217905550610e10600d55610708600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550348015620000a957600080fd5b506040518060400160405280600d81526020017f4d657461537472656574343034000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d53545200000000000000000000000000000000000000000000000000000000815250816003908162000127919062000d6e565b50806004908162000139919062000d6e565b5050506200015c62000150620005b560201b60201c565b620005bd60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001888160016200068360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e919062000ebf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc919062000ebf565b6040518363ffffffff1660e01b8152600401620002db92919062000f02565b6020604051808303816000875af1158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000ebf565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200036960a05160016200068360201b60201c565b6200037e60a05160016200076d60201b60201c565b600080600080600080600069021e19e0c9bab240000090506b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600a819055506127108082620003cd919062000f5e565b620003d9919062000fd8565b60098190555086601581905550856016819055508460178190555060175460165460155462000409919062001010565b62000415919062001010565b6014819055508360198190555082601a8190555081601b81905550601b54601a5460195462000445919062001010565b62000451919062001010565b601881905550734955a17040fe9a9d7ff5789596f3ae9606c6b410600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734955a17040fe9a9d7ff5789596f3ae9606c6b410600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000523620005156200080e60201b60201c565b60016200083860201b60201c565b620005363060016200083860201b60201c565b6200054b61dead60016200083860201b60201c565b6200056d6200055f6200080e60201b60201c565b60016200068360201b60201c565b620005803060016200068360201b60201c565b6200059561dead60016200068360201b60201c565b620005a733826200097260201b60201c565b5050505050505050620011a8565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000693620005b560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006b96200080e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070990620010ac565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000848620005b560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200086e6200080e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008be90620010ac565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009669190620010eb565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009db9062001158565b60405180910390fd5b620009f86000838362000aea60201b60201c565b806002600082825462000a0c919062001010565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a63919062001010565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aca91906200118b565b60405180910390a362000ae66000838362000aef60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b7657607f821691505b60208210810362000b8c5762000b8b62000b2e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bf67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bb7565b62000c02868362000bb7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c4f62000c4962000c438462000c1a565b62000c24565b62000c1a565b9050919050565b6000819050919050565b62000c6b8362000c2e565b62000c8362000c7a8262000c56565b84845462000bc4565b825550505050565b600090565b62000c9a62000c8b565b62000ca781848462000c60565b505050565b5b8181101562000ccf5762000cc360008262000c90565b60018101905062000cad565b5050565b601f82111562000d1e5762000ce88162000b92565b62000cf38462000ba7565b8101602085101562000d03578190505b62000d1b62000d128562000ba7565b83018262000cac565b50505b505050565b600082821c905092915050565b600062000d436000198460080262000d23565b1980831691505092915050565b600062000d5e838362000d30565b9150826002028217905092915050565b62000d798262000af4565b67ffffffffffffffff81111562000d955762000d9462000aff565b5b62000da1825462000b5d565b62000dae82828562000cd3565b600060209050601f83116001811462000de6576000841562000dd1578287015190505b62000ddd858262000d50565b86555062000e4d565b601f19841662000df68662000b92565b60005b8281101562000e205784890151825560018201915060208501945060208101905062000df9565b8683101562000e40578489015162000e3c601f89168262000d30565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e878262000e5a565b9050919050565b62000e998162000e7a565b811462000ea557600080fd5b50565b60008151905062000eb98162000e8e565b92915050565b60006020828403121562000ed85762000ed762000e55565b5b600062000ee88482850162000ea8565b91505092915050565b62000efc8162000e7a565b82525050565b600060408201905062000f19600083018562000ef1565b62000f28602083018462000ef1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f6b8262000c1a565b915062000f788362000c1a565b925082820262000f888162000c1a565b9150828204841483151762000fa25762000fa162000f2f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fe58262000c1a565b915062000ff28362000c1a565b92508262001005576200100462000fa9565b5b828204905092915050565b60006200101d8262000c1a565b91506200102a8362000c1a565b925082820190508082111562001045576200104462000f2f565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010946020836200104b565b9150620010a1826200105c565b602082019050919050565b60006020820190508181036000830152620010c78162001085565b9050919050565b60008115159050919050565b620010e581620010ce565b82525050565b6000602082019050620011026000830184620010da565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001140601f836200104b565b91506200114d8262001108565b602082019050919050565b60006020820190508181036000830152620011738162001131565b9050919050565b620011858162000c1a565b82525050565b6000602082019050620011a260008301846200117a565b92915050565b60805160a0516152f66200120d6000396000818161144101528181611b1801528181612660015281816127170152818161274401528181612d8301528181613cf501528181613dae0152613ddb015260008181610f5a0152612d2b01526152f66000f3fe6080604052600436106103a65760003560e01c80638a8c523c116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610dcd578063f637434214610df6578063f8b45b0514610e21578063fe72b27a14610e4c576103ad565b8063dd62ed3e14610d0f578063e2f4560514610d4c578063e884f26014610d77578063f11a24d314610da2576103ad565b8063c876d0b9116100dc578063c876d0b914610c51578063c8c8ebe414610c7c578063d257b34f14610ca7578063d85ba06314610ce4576103ad565b8063bbc0c74214610bab578063c024666814610bd6578063c17b5b8c14610bff578063c18bc19514610c28576103ad565b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610add578063a9059cbb14610b08578063aacebbe314610b45578063b62496f514610b6e576103ad565b80639ec22c0e14610a1f5780639fccce3214610a4a578063a0d82dc514610a75578063a457c2d714610aa0576103ad565b806392136913116101c1578063921369131461097557806395d89b41146109a05780639a7a23d6146109cb5780639c3b4fdc146109f4576103ad565b80638a8c523c146109085780638da5cb5b1461091f5780638ea5220f1461094a576103ad565b8063313ce567116102cc5780636ddd17131161026a5780637571336a116102395780637571336a1461086057806375f0a874146108895780637bce5a04146108b45780638095d564146108df576103ad565b80636ddd1713146107b857806370a08231146107e3578063715018a614610820578063730c188814610837576103ad565b806349bd5a5e116102a657806349bd5a5e146106fa5780634a62bb65146107255780634fbee193146107505780636a486a8e1461078d576103ad565b8063313ce56714610669578063395093511461069457806340c10f19146106d1576103ad565b8063199ffc721161034457806323b872dd1161031357806323b872dd146105ab57806327c8f835146105e85780632c3e486c146106135780632e82f1a01461063e576103ad565b8063199ffc72146105015780631a8145bb1461052c5780631f3fed8f14610557578063203e727e14610582576103ad565b80631694505e116103805780631694505e1461045757806318160ddd146104825780631816467f146104ad578063184c16c5146104d6576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e89565b6040516103d49190613f2c565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613fe7565b610f1b565b6040516104119190614042565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061405d565b610f39565b60405161044e9190614042565b60405180910390f35b34801561046357600080fd5b5061046c610f58565b60405161047991906140e9565b60405180910390f35b34801561048e57600080fd5b50610497610f7c565b6040516104a49190614113565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf919061405d565b610f86565b005b3480156104e257600080fd5b506104eb6110c2565b6040516104f89190614113565b60405180910390f35b34801561050d57600080fd5b506105166110c8565b6040516105239190614113565b60405180910390f35b34801561053857600080fd5b506105416110ce565b60405161054e9190614113565b60405180910390f35b34801561056357600080fd5b5061056c6110d4565b6040516105799190614113565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a4919061412e565b6110da565b005b3480156105b757600080fd5b506105d260048036038101906105cd919061415b565b6111e9565b6040516105df9190614042565b60405180910390f35b3480156105f457600080fd5b506105fd6112e1565b60405161060a91906141bd565b60405180910390f35b34801561061f57600080fd5b506106286112e7565b6040516106359190614113565b60405180910390f35b34801561064a57600080fd5b506106536112ed565b6040516106609190614042565b60405180910390f35b34801561067557600080fd5b5061067e611300565b60405161068b91906141f4565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190613fe7565b611309565b6040516106c89190614042565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190613fe7565b6113b5565b005b34801561070657600080fd5b5061070f61143f565b60405161071c91906141bd565b60405180910390f35b34801561073157600080fd5b5061073a611463565b6040516107479190614042565b60405180910390f35b34801561075c57600080fd5b506107776004803603810190610772919061405d565b611476565b6040516107849190614042565b60405180910390f35b34801561079957600080fd5b506107a26114cc565b6040516107af9190614113565b60405180910390f35b3480156107c457600080fd5b506107cd6114d2565b6040516107da9190614042565b60405180910390f35b3480156107ef57600080fd5b5061080a6004803603810190610805919061405d565b6114e5565b6040516108179190614113565b60405180910390f35b34801561082c57600080fd5b5061083561152d565b005b34801561084357600080fd5b5061085e6004803603810190610859919061423b565b6115b5565b005b34801561086c57600080fd5b506108876004803603810190610882919061428e565b6116f5565b005b34801561089557600080fd5b5061089e6117cc565b6040516108ab91906141bd565b60405180910390f35b3480156108c057600080fd5b506108c96117f2565b6040516108d69190614113565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906142ce565b6117f8565b005b34801561091457600080fd5b5061091d6118f7565b005b34801561092b57600080fd5b506109346119b2565b60405161094191906141bd565b60405180910390f35b34801561095657600080fd5b5061095f6119dc565b60405161096c91906141bd565b60405180910390f35b34801561098157600080fd5b5061098a611a02565b6040516109979190614113565b60405180910390f35b3480156109ac57600080fd5b506109b5611a08565b6040516109c29190613f2c565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed919061428e565b611a9a565b005b348015610a0057600080fd5b50610a09611bb2565b604051610a169190614113565b60405180910390f35b348015610a2b57600080fd5b50610a34611bb8565b604051610a419190614113565b60405180910390f35b348015610a5657600080fd5b50610a5f611bbe565b604051610a6c9190614113565b60405180910390f35b348015610a8157600080fd5b50610a8a611bc4565b604051610a979190614113565b60405180910390f35b348015610aac57600080fd5b50610ac76004803603810190610ac29190613fe7565b611bca565b604051610ad49190614042565b60405180910390f35b348015610ae957600080fd5b50610af2611cb5565b604051610aff9190614113565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190613fe7565b611cbb565b604051610b3c9190614042565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061405d565b611cd9565b005b348015610b7a57600080fd5b50610b956004803603810190610b90919061405d565b611e15565b604051610ba29190614042565b60405180910390f35b348015610bb757600080fd5b50610bc0611e35565b604051610bcd9190614042565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf8919061428e565b611e48565b005b348015610c0b57600080fd5b50610c266004803603810190610c2191906142ce565b611f6d565b005b348015610c3457600080fd5b50610c4f6004803603810190610c4a919061412e565b61206c565b005b348015610c5d57600080fd5b50610c6661217b565b604051610c739190614042565b60405180910390f35b348015610c8857600080fd5b50610c9161218e565b604051610c9e9190614113565b60405180910390f35b348015610cb357600080fd5b50610cce6004803603810190610cc9919061412e565b612194565b604051610cdb9190614042565b60405180910390f35b348015610cf057600080fd5b50610cf96122e9565b604051610d069190614113565b60405180910390f35b348015610d1b57600080fd5b50610d366004803603810190610d319190614321565b6122ef565b604051610d439190614113565b60405180910390f35b348015610d5857600080fd5b50610d61612376565b604051610d6e9190614113565b60405180910390f35b348015610d8357600080fd5b50610d8c61237c565b604051610d999190614042565b60405180910390f35b348015610dae57600080fd5b50610db761241c565b604051610dc49190614113565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def919061405d565b612422565b005b348015610e0257600080fd5b50610e0b612519565b604051610e189190614113565b60405180910390f35b348015610e2d57600080fd5b50610e3661251f565b604051610e439190614113565b60405180910390f35b348015610e5857600080fd5b50610e736004803603810190610e6e919061412e565b612525565b604051610e809190614042565b60405180910390f35b606060038054610e9890614390565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec490614390565b8015610f115780601f10610ee657610100808354040283529160200191610f11565b820191906000526020600020905b815481529060010190602001808311610ef457829003601f168201915b5050505050905090565b6000610f2f610f286127fd565b8484612805565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f8e6127fd565b73ffffffffffffffffffffffffffffffffffffffff16610fac6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff99061440d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110e26127fd565b73ffffffffffffffffffffffffffffffffffffffff166111006119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d9061440d565b60405180910390fd5b670de0b6b3a76400006103e8600161116c610f7c565b611176919061445c565b61118091906144cd565b61118a91906144cd565b8110156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390614570565b60405180910390fd5b670de0b6b3a7640000816111e0919061445c565b60088190555050565b60006111f68484846129ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112416127fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890614602565b60405180910390fd5b6112d5856112cd6127fd565b858403612805565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006113ab6113166127fd565b8484600160006113246127fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a69190614622565b612805565b6001905092915050565b6113bd6127fd565b73ffffffffffffffffffffffffffffffffffffffff166113db6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114289061440d565b60405180910390fd5b61143b828261375b565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115356127fd565b73ffffffffffffffffffffffffffffffffffffffff166115536119b2565b73ffffffffffffffffffffffffffffffffffffffff16146115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a09061440d565b60405180910390fd5b6115b360006138ba565b565b6115bd6127fd565b73ffffffffffffffffffffffffffffffffffffffff166115db6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061440d565b60405180910390fd5b610258831015611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d906146c8565b60405180910390fd5b6103e88211158015611689575060008210155b6116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf9061475a565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b6116fd6127fd565b73ffffffffffffffffffffffffffffffffffffffff1661171b6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117689061440d565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6118006127fd565b73ffffffffffffffffffffffffffffffffffffffff1661181e6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b9061440d565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461189c9190614622565b6118a69190614622565b601481905550606460145411156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e9906147c6565b60405180910390fd5b505050565b6118ff6127fd565b73ffffffffffffffffffffffffffffffffffffffff1661191d6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a9061440d565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b606060048054611a1790614390565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4390614390565b8015611a905780601f10611a6557610100808354040283529160200191611a90565b820191906000526020600020905b815481529060010190602001808311611a7357829003601f168201915b5050505050905090565b611aa26127fd565b73ffffffffffffffffffffffffffffffffffffffff16611ac06119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d9061440d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90614858565b60405180910390fd5b611bae8282613980565b5050565b60175481565b60105481565b601e5481565b601b5481565b60008060016000611bd96127fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d906148ea565b60405180910390fd5b611caa611ca16127fd565b85858403612805565b600191505092915050565b600e5481565b6000611ccf611cc86127fd565b84846129ce565b6001905092915050565b611ce16127fd565b73ffffffffffffffffffffffffffffffffffffffff16611cff6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c9061440d565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611e506127fd565b73ffffffffffffffffffffffffffffffffffffffff16611e6e6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb9061440d565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f619190614042565b60405180910390a25050565b611f756127fd565b73ffffffffffffffffffffffffffffffffffffffff16611f936119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe09061440d565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a546019546120119190614622565b61201b9190614622565b60188190555060646018541115612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e906147c6565b60405180910390fd5b505050565b6120746127fd565b73ffffffffffffffffffffffffffffffffffffffff166120926119b2565b73ffffffffffffffffffffffffffffffffffffffff16146120e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120df9061440d565b60405180910390fd5b670de0b6b3a76400006103e860056120fe610f7c565b612108919061445c565b61211291906144cd565b61211c91906144cd565b81101561215e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121559061497c565b60405180910390fd5b670de0b6b3a764000081612172919061445c565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b600061219e6127fd565b73ffffffffffffffffffffffffffffffffffffffff166121bc6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614612212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122099061440d565b60405180910390fd5b620186a06001612220610f7c565b61222a919061445c565b61223491906144cd565b821015612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614a0e565b60405180910390fd5b6103e86005612283610f7c565b61228d919061445c565b61229791906144cd565b8211156122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d090614aa0565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123866127fd565b73ffffffffffffffffffffffffffffffffffffffff166123a46119b2565b73ffffffffffffffffffffffffffffffffffffffff16146123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f19061440d565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b61242a6127fd565b73ffffffffffffffffffffffffffffffffffffffff166124486119b2565b73ffffffffffffffffffffffffffffffffffffffff161461249e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124959061440d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614b32565b60405180910390fd5b612516816138ba565b50565b601a5481565b600a5481565b600061252f6127fd565b73ffffffffffffffffffffffffffffffffffffffff1661254d6119b2565b73ffffffffffffffffffffffffffffffffffffffff16146125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a9061440d565b60405180910390fd5b600f546010546125b39190614622565b42116125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614b9e565b60405180910390fd5b6103e8821115612639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263090614c30565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161269b91906141bd565b602060405180830381865afa1580156126b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126dc9190614c65565b905060006127076127106126f98685613a2190919063ffffffff16565b613a3790919063ffffffff16565b905060008111156127405761273f7f000000000000000000000000000000000000000000000000000000000000000061dead83613a4d565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ad57600080fd5b505af11580156127c1573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286b90614d04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90614d96565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129c19190614113565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3490614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa390614eba565b60405180910390fd5b60008103612ac557612ac083836000613a4d565b613756565b601160009054906101000a900460ff161561318857612ae26119b2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b505750612b206119b2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b895750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bc3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bdc5750600560149054906101000a900460ff16155b1561318757601160019054906101000a900460ff16612cd657601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c965750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccc90614f26565b60405180910390fd5b5b601360009054906101000a900460ff1615612e9e57612cf36119b2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d7a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dd257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e9d5743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4f90614fde565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f415750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fe857600854811115612f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8290615070565b60405180910390fd5b600a54612f97836114e5565b82612fa29190614622565b1115612fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fda906150dc565b60405180910390fd5b613186565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561308b5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130da576008548111156130d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cc9061516e565b60405180910390fd5b613185565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661318457600a54613137836114e5565b826131429190614622565b1115613183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317a906150dc565b60405180910390fd5b5b5b5b5b5b6000613193306114e5565b9050600060095482101590508080156131b85750601160029054906101000a900460ff165b80156131d15750600560149054906101000a900460ff16155b80156132275750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561327d5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d35750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561330f576001600560146101000a81548160ff0219169083151502179055506000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156133755750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561338d5750600c60009054906101000a900460ff165b80156133a85750600d54600e546133a49190614622565b4210155b80156133fe5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561340d5761340b613ccc565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134c35750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134cd57600090505b6000811561374657602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561353057506000601854115b156135fd5761355d606461354f60185488613a2190919063ffffffff16565b613a3790919063ffffffff16565b9050601854601a5482613570919061445c565b61357a91906144cd565b601d600082825461358b9190614622565b92505081905550601854601b54826135a3919061445c565b6135ad91906144cd565b601e60008282546135be9190614622565b92505081905550601854601954826135d6919061445c565b6135e091906144cd565b601c60008282546135f19190614622565b92505081905550613722565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561365857506000601454115b1561372157613685606461367760145488613a2190919063ffffffff16565b613a3790919063ffffffff16565b905060145460165482613698919061445c565b6136a291906144cd565b601d60008282546136b39190614622565b92505081905550601454601754826136cb919061445c565b6136d591906144cd565b601e60008282546136e69190614622565b92505081905550601454601554826136fe919061445c565b61370891906144cd565b601c60008282546137199190614622565b925050819055505b5b600081111561373757613736873083613a4d565b5b8085613743919061518e565b94505b613751878787613a4d565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c19061520e565b60405180910390fd5b6137d660008383613e92565b80600260008282546137e89190614622565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461383d9190614622565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138a29190614113565b60405180910390a36138b660008383613e97565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008183613a2f919061445c565b905092915050565b60008183613a4591906144cd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ab390614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2290614eba565b60405180910390fd5b613b36838383613e92565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bb3906152a0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c4f9190614622565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613cb39190614113565b60405180910390a3613cc6848484613e97565b50505050565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401613d3091906141bd565b602060405180830381865afa158015613d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d719190614c65565b90506000613d9e612710613d90600b5485613a2190919063ffffffff16565b613a3790919063ffffffff16565b90506000811115613dd757613dd67f000000000000000000000000000000000000000000000000000000000000000061dead83613a4d565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e4457600080fd5b505af1158015613e58573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ed6578082015181840152602081019050613ebb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613efe82613e9c565b613f088185613ea7565b9350613f18818560208601613eb8565b613f2181613ee2565b840191505092915050565b60006020820190508181036000830152613f468184613ef3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f7e82613f53565b9050919050565b613f8e81613f73565b8114613f9957600080fd5b50565b600081359050613fab81613f85565b92915050565b6000819050919050565b613fc481613fb1565b8114613fcf57600080fd5b50565b600081359050613fe181613fbb565b92915050565b60008060408385031215613ffe57613ffd613f4e565b5b600061400c85828601613f9c565b925050602061401d85828601613fd2565b9150509250929050565b60008115159050919050565b61403c81614027565b82525050565b60006020820190506140576000830184614033565b92915050565b60006020828403121561407357614072613f4e565b5b600061408184828501613f9c565b91505092915050565b6000819050919050565b60006140af6140aa6140a584613f53565b61408a565b613f53565b9050919050565b60006140c182614094565b9050919050565b60006140d3826140b6565b9050919050565b6140e3816140c8565b82525050565b60006020820190506140fe60008301846140da565b92915050565b61410d81613fb1565b82525050565b60006020820190506141286000830184614104565b92915050565b60006020828403121561414457614143613f4e565b5b600061415284828501613fd2565b91505092915050565b60008060006060848603121561417457614173613f4e565b5b600061418286828701613f9c565b935050602061419386828701613f9c565b92505060406141a486828701613fd2565b9150509250925092565b6141b781613f73565b82525050565b60006020820190506141d260008301846141ae565b92915050565b600060ff82169050919050565b6141ee816141d8565b82525050565b600060208201905061420960008301846141e5565b92915050565b61421881614027565b811461422357600080fd5b50565b6000813590506142358161420f565b92915050565b60008060006060848603121561425457614253613f4e565b5b600061426286828701613fd2565b935050602061427386828701613fd2565b925050604061428486828701614226565b9150509250925092565b600080604083850312156142a5576142a4613f4e565b5b60006142b385828601613f9c565b92505060206142c485828601614226565b9150509250929050565b6000806000606084860312156142e7576142e6613f4e565b5b60006142f586828701613fd2565b935050602061430686828701613fd2565b925050604061431786828701613fd2565b9150509250925092565b6000806040838503121561433857614337613f4e565b5b600061434685828601613f9c565b925050602061435785828601613f9c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143a857607f821691505b6020821081036143bb576143ba614361565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143f7602083613ea7565b9150614402826143c1565b602082019050919050565b60006020820190508181036000830152614426816143ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061446782613fb1565b915061447283613fb1565b925082820261448081613fb1565b915082820484148315176144975761449661442d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144d882613fb1565b91506144e383613fb1565b9250826144f3576144f261449e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061455a602f83613ea7565b9150614565826144fe565b604082019050919050565b600060208201905081810360008301526145898161454d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145ec602883613ea7565b91506145f782614590565b604082019050919050565b6000602082019050818103600083015261461b816145df565b9050919050565b600061462d82613fb1565b915061463883613fb1565b92508282019050808211156146505761464f61442d565b5b92915050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006146b2603383613ea7565b91506146bd82614656565b604082019050919050565b600060208201905081810360008301526146e1816146a5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614744603083613ea7565b915061474f826146e8565b604082019050919050565b6000602082019050818103600083015261477381614737565b9050919050565b7f4d757374206b656570206665657320617420313125206f72206c657373000000600082015250565b60006147b0601d83613ea7565b91506147bb8261477a565b602082019050919050565b600060208201905081810360008301526147df816147a3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614842603983613ea7565b915061484d826147e6565b604082019050919050565b6000602082019050818103600083015261487181614835565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006148d4602583613ea7565b91506148df82614878565b604082019050919050565b60006020820190508181036000830152614903816148c7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614966602483613ea7565b91506149718261490a565b604082019050919050565b6000602082019050818103600083015261499581614959565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149f8603583613ea7565b9150614a038261499c565b604082019050919050565b60006020820190508181036000830152614a27816149eb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614a8a603483613ea7565b9150614a9582614a2e565b604082019050919050565b60006020820190508181036000830152614ab981614a7d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b1c602683613ea7565b9150614b2782614ac0565b604082019050919050565b60006020820190508181036000830152614b4b81614b0f565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614b88602083613ea7565b9150614b9382614b52565b602082019050919050565b60006020820190508181036000830152614bb781614b7b565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614c1a602a83613ea7565b9150614c2582614bbe565b604082019050919050565b60006020820190508181036000830152614c4981614c0d565b9050919050565b600081519050614c5f81613fbb565b92915050565b600060208284031215614c7b57614c7a613f4e565b5b6000614c8984828501614c50565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cee602483613ea7565b9150614cf982614c92565b604082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d80602283613ea7565b9150614d8b82614d24565b604082019050919050565b60006020820190508181036000830152614daf81614d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e12602583613ea7565b9150614e1d82614db6565b604082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea4602383613ea7565b9150614eaf82614e48565b604082019050919050565b60006020820190508181036000830152614ed381614e97565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f10601683613ea7565b9150614f1b82614eda565b602082019050919050565b60006020820190508181036000830152614f3f81614f03565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614fc8604983613ea7565b9150614fd382614f46565b606082019050919050565b60006020820190508181036000830152614ff781614fbb565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061505a603583613ea7565b915061506582614ffe565b604082019050919050565b600060208201905081810360008301526150898161504d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150c6601383613ea7565b91506150d182615090565b602082019050919050565b600060208201905081810360008301526150f5816150b9565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615158603683613ea7565b9150615163826150fc565b604082019050919050565b600060208201905081810360008301526151878161514b565b9050919050565b600061519982613fb1565b91506151a483613fb1565b92508282039050818111156151bc576151bb61442d565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006151f8601f83613ea7565b9150615203826151c2565b602082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061528a602683613ea7565b91506152958261522e565b604082019050919050565b600060208201905081810360008301526152b98161527d565b905091905056fea2646970667358221220f0183521d76f44d49f0794e9bb4fc1d8ec3c4bcec4c3c4024a19d73d7baf239064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c80638a8c523c116101e7578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610dcd578063f637434214610df6578063f8b45b0514610e21578063fe72b27a14610e4c576103ad565b8063dd62ed3e14610d0f578063e2f4560514610d4c578063e884f26014610d77578063f11a24d314610da2576103ad565b8063c876d0b9116100dc578063c876d0b914610c51578063c8c8ebe414610c7c578063d257b34f14610ca7578063d85ba06314610ce4576103ad565b8063bbc0c74214610bab578063c024666814610bd6578063c17b5b8c14610bff578063c18bc19514610c28576103ad565b80639ec22c0e11610185578063a4c82a0011610154578063a4c82a0014610add578063a9059cbb14610b08578063aacebbe314610b45578063b62496f514610b6e576103ad565b80639ec22c0e14610a1f5780639fccce3214610a4a578063a0d82dc514610a75578063a457c2d714610aa0576103ad565b806392136913116101c1578063921369131461097557806395d89b41146109a05780639a7a23d6146109cb5780639c3b4fdc146109f4576103ad565b80638a8c523c146109085780638da5cb5b1461091f5780638ea5220f1461094a576103ad565b8063313ce567116102cc5780636ddd17131161026a5780637571336a116102395780637571336a1461086057806375f0a874146108895780637bce5a04146108b45780638095d564146108df576103ad565b80636ddd1713146107b857806370a08231146107e3578063715018a614610820578063730c188814610837576103ad565b806349bd5a5e116102a657806349bd5a5e146106fa5780634a62bb65146107255780634fbee193146107505780636a486a8e1461078d576103ad565b8063313ce56714610669578063395093511461069457806340c10f19146106d1576103ad565b8063199ffc721161034457806323b872dd1161031357806323b872dd146105ab57806327c8f835146105e85780632c3e486c146106135780632e82f1a01461063e576103ad565b8063199ffc72146105015780631a8145bb1461052c5780631f3fed8f14610557578063203e727e14610582576103ad565b80631694505e116103805780631694505e1461045757806318160ddd146104825780631816467f146104ad578063184c16c5146104d6576103ad565b806306fdde03146103b2578063095ea7b3146103dd57806310d5de531461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e89565b6040516103d49190613f2c565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190613fe7565b610f1b565b6040516104119190614042565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c919061405d565b610f39565b60405161044e9190614042565b60405180910390f35b34801561046357600080fd5b5061046c610f58565b60405161047991906140e9565b60405180910390f35b34801561048e57600080fd5b50610497610f7c565b6040516104a49190614113565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf919061405d565b610f86565b005b3480156104e257600080fd5b506104eb6110c2565b6040516104f89190614113565b60405180910390f35b34801561050d57600080fd5b506105166110c8565b6040516105239190614113565b60405180910390f35b34801561053857600080fd5b506105416110ce565b60405161054e9190614113565b60405180910390f35b34801561056357600080fd5b5061056c6110d4565b6040516105799190614113565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a4919061412e565b6110da565b005b3480156105b757600080fd5b506105d260048036038101906105cd919061415b565b6111e9565b6040516105df9190614042565b60405180910390f35b3480156105f457600080fd5b506105fd6112e1565b60405161060a91906141bd565b60405180910390f35b34801561061f57600080fd5b506106286112e7565b6040516106359190614113565b60405180910390f35b34801561064a57600080fd5b506106536112ed565b6040516106609190614042565b60405180910390f35b34801561067557600080fd5b5061067e611300565b60405161068b91906141f4565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190613fe7565b611309565b6040516106c89190614042565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190613fe7565b6113b5565b005b34801561070657600080fd5b5061070f61143f565b60405161071c91906141bd565b60405180910390f35b34801561073157600080fd5b5061073a611463565b6040516107479190614042565b60405180910390f35b34801561075c57600080fd5b506107776004803603810190610772919061405d565b611476565b6040516107849190614042565b60405180910390f35b34801561079957600080fd5b506107a26114cc565b6040516107af9190614113565b60405180910390f35b3480156107c457600080fd5b506107cd6114d2565b6040516107da9190614042565b60405180910390f35b3480156107ef57600080fd5b5061080a6004803603810190610805919061405d565b6114e5565b6040516108179190614113565b60405180910390f35b34801561082c57600080fd5b5061083561152d565b005b34801561084357600080fd5b5061085e6004803603810190610859919061423b565b6115b5565b005b34801561086c57600080fd5b506108876004803603810190610882919061428e565b6116f5565b005b34801561089557600080fd5b5061089e6117cc565b6040516108ab91906141bd565b60405180910390f35b3480156108c057600080fd5b506108c96117f2565b6040516108d69190614113565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906142ce565b6117f8565b005b34801561091457600080fd5b5061091d6118f7565b005b34801561092b57600080fd5b506109346119b2565b60405161094191906141bd565b60405180910390f35b34801561095657600080fd5b5061095f6119dc565b60405161096c91906141bd565b60405180910390f35b34801561098157600080fd5b5061098a611a02565b6040516109979190614113565b60405180910390f35b3480156109ac57600080fd5b506109b5611a08565b6040516109c29190613f2c565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed919061428e565b611a9a565b005b348015610a0057600080fd5b50610a09611bb2565b604051610a169190614113565b60405180910390f35b348015610a2b57600080fd5b50610a34611bb8565b604051610a419190614113565b60405180910390f35b348015610a5657600080fd5b50610a5f611bbe565b604051610a6c9190614113565b60405180910390f35b348015610a8157600080fd5b50610a8a611bc4565b604051610a979190614113565b60405180910390f35b348015610aac57600080fd5b50610ac76004803603810190610ac29190613fe7565b611bca565b604051610ad49190614042565b60405180910390f35b348015610ae957600080fd5b50610af2611cb5565b604051610aff9190614113565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190613fe7565b611cbb565b604051610b3c9190614042565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061405d565b611cd9565b005b348015610b7a57600080fd5b50610b956004803603810190610b90919061405d565b611e15565b604051610ba29190614042565b60405180910390f35b348015610bb757600080fd5b50610bc0611e35565b604051610bcd9190614042565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf8919061428e565b611e48565b005b348015610c0b57600080fd5b50610c266004803603810190610c2191906142ce565b611f6d565b005b348015610c3457600080fd5b50610c4f6004803603810190610c4a919061412e565b61206c565b005b348015610c5d57600080fd5b50610c6661217b565b604051610c739190614042565b60405180910390f35b348015610c8857600080fd5b50610c9161218e565b604051610c9e9190614113565b60405180910390f35b348015610cb357600080fd5b50610cce6004803603810190610cc9919061412e565b612194565b604051610cdb9190614042565b60405180910390f35b348015610cf057600080fd5b50610cf96122e9565b604051610d069190614113565b60405180910390f35b348015610d1b57600080fd5b50610d366004803603810190610d319190614321565b6122ef565b604051610d439190614113565b60405180910390f35b348015610d5857600080fd5b50610d61612376565b604051610d6e9190614113565b60405180910390f35b348015610d8357600080fd5b50610d8c61237c565b604051610d999190614042565b60405180910390f35b348015610dae57600080fd5b50610db761241c565b604051610dc49190614113565b60405180910390f35b348015610dd957600080fd5b50610df46004803603810190610def919061405d565b612422565b005b348015610e0257600080fd5b50610e0b612519565b604051610e189190614113565b60405180910390f35b348015610e2d57600080fd5b50610e3661251f565b604051610e439190614113565b60405180910390f35b348015610e5857600080fd5b50610e736004803603810190610e6e919061412e565b612525565b604051610e809190614042565b60405180910390f35b606060038054610e9890614390565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec490614390565b8015610f115780601f10610ee657610100808354040283529160200191610f11565b820191906000526020600020905b815481529060010190602001808311610ef457829003601f168201915b5050505050905090565b6000610f2f610f286127fd565b8484612805565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f8e6127fd565b73ffffffffffffffffffffffffffffffffffffffff16610fac6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff99061440d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b6110e26127fd565b73ffffffffffffffffffffffffffffffffffffffff166111006119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d9061440d565b60405180910390fd5b670de0b6b3a76400006103e8600161116c610f7c565b611176919061445c565b61118091906144cd565b61118a91906144cd565b8110156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390614570565b60405180910390fd5b670de0b6b3a7640000816111e0919061445c565b60088190555050565b60006111f68484846129ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112416127fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b890614602565b60405180910390fd5b6112d5856112cd6127fd565b858403612805565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006113ab6113166127fd565b8484600160006113246127fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a69190614622565b612805565b6001905092915050565b6113bd6127fd565b73ffffffffffffffffffffffffffffffffffffffff166113db6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114289061440d565b60405180910390fd5b61143b828261375b565b5050565b7f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa81565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115356127fd565b73ffffffffffffffffffffffffffffffffffffffff166115536119b2565b73ffffffffffffffffffffffffffffffffffffffff16146115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a09061440d565b60405180910390fd5b6115b360006138ba565b565b6115bd6127fd565b73ffffffffffffffffffffffffffffffffffffffff166115db6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061440d565b60405180910390fd5b610258831015611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d906146c8565b60405180910390fd5b6103e88211158015611689575060008210155b6116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf9061475a565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b6116fd6127fd565b73ffffffffffffffffffffffffffffffffffffffff1661171b6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117689061440d565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6118006127fd565b73ffffffffffffffffffffffffffffffffffffffff1661181e6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b9061440d565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461189c9190614622565b6118a69190614622565b601481905550606460145411156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e9906147c6565b60405180910390fd5b505050565b6118ff6127fd565b73ffffffffffffffffffffffffffffffffffffffff1661191d6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a9061440d565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b606060048054611a1790614390565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4390614390565b8015611a905780601f10611a6557610100808354040283529160200191611a90565b820191906000526020600020905b815481529060010190602001808311611a7357829003601f168201915b5050505050905090565b611aa26127fd565b73ffffffffffffffffffffffffffffffffffffffff16611ac06119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d9061440d565b60405180910390fd5b7f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90614858565b60405180910390fd5b611bae8282613980565b5050565b60175481565b60105481565b601e5481565b601b5481565b60008060016000611bd96127fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d906148ea565b60405180910390fd5b611caa611ca16127fd565b85858403612805565b600191505092915050565b600e5481565b6000611ccf611cc86127fd565b84846129ce565b6001905092915050565b611ce16127fd565b73ffffffffffffffffffffffffffffffffffffffff16611cff6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c9061440d565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611e506127fd565b73ffffffffffffffffffffffffffffffffffffffff16611e6e6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb9061440d565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f619190614042565b60405180910390a25050565b611f756127fd565b73ffffffffffffffffffffffffffffffffffffffff16611f936119b2565b73ffffffffffffffffffffffffffffffffffffffff1614611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe09061440d565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a546019546120119190614622565b61201b9190614622565b60188190555060646018541115612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e906147c6565b60405180910390fd5b505050565b6120746127fd565b73ffffffffffffffffffffffffffffffffffffffff166120926119b2565b73ffffffffffffffffffffffffffffffffffffffff16146120e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120df9061440d565b60405180910390fd5b670de0b6b3a76400006103e860056120fe610f7c565b612108919061445c565b61211291906144cd565b61211c91906144cd565b81101561215e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121559061497c565b60405180910390fd5b670de0b6b3a764000081612172919061445c565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b600061219e6127fd565b73ffffffffffffffffffffffffffffffffffffffff166121bc6119b2565b73ffffffffffffffffffffffffffffffffffffffff1614612212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122099061440d565b60405180910390fd5b620186a06001612220610f7c565b61222a919061445c565b61223491906144cd565b821015612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90614a0e565b60405180910390fd5b6103e86005612283610f7c565b61228d919061445c565b61229791906144cd565b8211156122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d090614aa0565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123866127fd565b73ffffffffffffffffffffffffffffffffffffffff166123a46119b2565b73ffffffffffffffffffffffffffffffffffffffff16146123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f19061440d565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b61242a6127fd565b73ffffffffffffffffffffffffffffffffffffffff166124486119b2565b73ffffffffffffffffffffffffffffffffffffffff161461249e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124959061440d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361250d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250490614b32565b60405180910390fd5b612516816138ba565b50565b601a5481565b600a5481565b600061252f6127fd565b73ffffffffffffffffffffffffffffffffffffffff1661254d6119b2565b73ffffffffffffffffffffffffffffffffffffffff16146125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a9061440d565b60405180910390fd5b600f546010546125b39190614622565b42116125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb90614b9e565b60405180910390fd5b6103e8821115612639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263090614c30565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa6040518263ffffffff1660e01b815260040161269b91906141bd565b602060405180830381865afa1580156126b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126dc9190614c65565b905060006127076127106126f98685613a2190919063ffffffff16565b613a3790919063ffffffff16565b905060008111156127405761273f7f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa61dead83613a4d565b5b60007f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ad57600080fd5b505af11580156127c1573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286b90614d04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128da90614d96565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129c19190614113565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3490614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa390614eba565b60405180910390fd5b60008103612ac557612ac083836000613a4d565b613756565b601160009054906101000a900460ff161561318857612ae26119b2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b505750612b206119b2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b895750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bc3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612bdc5750600560149054906101000a900460ff16155b1561318757601160019054906101000a900460ff16612cd657601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c965750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccc90614f26565b60405180910390fd5b5b601360009054906101000a900460ff1615612e9e57612cf36119b2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d7a57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dd257507f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e9d5743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4f90614fde565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f415750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fe857600854811115612f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8290615070565b60405180910390fd5b600a54612f97836114e5565b82612fa29190614622565b1115612fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fda906150dc565b60405180910390fd5b613186565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561308b5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130da576008548111156130d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130cc9061516e565b60405180910390fd5b613185565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661318457600a54613137836114e5565b826131429190614622565b1115613183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317a906150dc565b60405180910390fd5b5b5b5b5b5b6000613193306114e5565b9050600060095482101590508080156131b85750601160029054906101000a900460ff165b80156131d15750600560149054906101000a900460ff16155b80156132275750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561327d5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d35750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561330f576001600560146101000a81548160ff0219169083151502179055506000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156133755750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561338d5750600c60009054906101000a900460ff165b80156133a85750600d54600e546133a49190614622565b4210155b80156133fe5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561340d5761340b613ccc565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134c35750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134cd57600090505b6000811561374657602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561353057506000601854115b156135fd5761355d606461354f60185488613a2190919063ffffffff16565b613a3790919063ffffffff16565b9050601854601a5482613570919061445c565b61357a91906144cd565b601d600082825461358b9190614622565b92505081905550601854601b54826135a3919061445c565b6135ad91906144cd565b601e60008282546135be9190614622565b92505081905550601854601954826135d6919061445c565b6135e091906144cd565b601c60008282546135f19190614622565b92505081905550613722565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561365857506000601454115b1561372157613685606461367760145488613a2190919063ffffffff16565b613a3790919063ffffffff16565b905060145460165482613698919061445c565b6136a291906144cd565b601d60008282546136b39190614622565b92505081905550601454601754826136cb919061445c565b6136d591906144cd565b601e60008282546136e69190614622565b92505081905550601454601554826136fe919061445c565b61370891906144cd565b601c60008282546137199190614622565b925050819055505b5b600081111561373757613736873083613a4d565b5b8085613743919061518e565b94505b613751878787613a4d565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c19061520e565b60405180910390fd5b6137d660008383613e92565b80600260008282546137e89190614622565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461383d9190614622565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138a29190614113565b60405180910390a36138b660008383613e97565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008183613a2f919061445c565b905092915050565b60008183613a4591906144cd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ab390614e28565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2290614eba565b60405180910390fd5b613b36838383613e92565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bb3906152a0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c4f9190614622565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613cb39190614113565b60405180910390a3613cc6848484613e97565b50505050565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa6040518263ffffffff1660e01b8152600401613d3091906141bd565b602060405180830381865afa158015613d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d719190614c65565b90506000613d9e612710613d90600b5485613a2190919063ffffffff16565b613a3790919063ffffffff16565b90506000811115613dd757613dd67f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa61dead83613a4d565b5b60007f00000000000000000000000021ca3a9d52fb148f9e6a9746252ab522f4c7ccaa90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613e4457600080fd5b505af1158015613e58573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ed6578082015181840152602081019050613ebb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613efe82613e9c565b613f088185613ea7565b9350613f18818560208601613eb8565b613f2181613ee2565b840191505092915050565b60006020820190508181036000830152613f468184613ef3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f7e82613f53565b9050919050565b613f8e81613f73565b8114613f9957600080fd5b50565b600081359050613fab81613f85565b92915050565b6000819050919050565b613fc481613fb1565b8114613fcf57600080fd5b50565b600081359050613fe181613fbb565b92915050565b60008060408385031215613ffe57613ffd613f4e565b5b600061400c85828601613f9c565b925050602061401d85828601613fd2565b9150509250929050565b60008115159050919050565b61403c81614027565b82525050565b60006020820190506140576000830184614033565b92915050565b60006020828403121561407357614072613f4e565b5b600061408184828501613f9c565b91505092915050565b6000819050919050565b60006140af6140aa6140a584613f53565b61408a565b613f53565b9050919050565b60006140c182614094565b9050919050565b60006140d3826140b6565b9050919050565b6140e3816140c8565b82525050565b60006020820190506140fe60008301846140da565b92915050565b61410d81613fb1565b82525050565b60006020820190506141286000830184614104565b92915050565b60006020828403121561414457614143613f4e565b5b600061415284828501613fd2565b91505092915050565b60008060006060848603121561417457614173613f4e565b5b600061418286828701613f9c565b935050602061419386828701613f9c565b92505060406141a486828701613fd2565b9150509250925092565b6141b781613f73565b82525050565b60006020820190506141d260008301846141ae565b92915050565b600060ff82169050919050565b6141ee816141d8565b82525050565b600060208201905061420960008301846141e5565b92915050565b61421881614027565b811461422357600080fd5b50565b6000813590506142358161420f565b92915050565b60008060006060848603121561425457614253613f4e565b5b600061426286828701613fd2565b935050602061427386828701613fd2565b925050604061428486828701614226565b9150509250925092565b600080604083850312156142a5576142a4613f4e565b5b60006142b385828601613f9c565b92505060206142c485828601614226565b9150509250929050565b6000806000606084860312156142e7576142e6613f4e565b5b60006142f586828701613fd2565b935050602061430686828701613fd2565b925050604061431786828701613fd2565b9150509250925092565b6000806040838503121561433857614337613f4e565b5b600061434685828601613f9c565b925050602061435785828601613f9c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806143a857607f821691505b6020821081036143bb576143ba614361565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143f7602083613ea7565b9150614402826143c1565b602082019050919050565b60006020820190508181036000830152614426816143ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061446782613fb1565b915061447283613fb1565b925082820261448081613fb1565b915082820484148315176144975761449661442d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144d882613fb1565b91506144e383613fb1565b9250826144f3576144f261449e565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061455a602f83613ea7565b9150614565826144fe565b604082019050919050565b600060208201905081810360008301526145898161454d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145ec602883613ea7565b91506145f782614590565b604082019050919050565b6000602082019050818103600083015261461b816145df565b9050919050565b600061462d82613fb1565b915061463883613fb1565b92508282019050808211156146505761464f61442d565b5b92915050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b60006146b2603383613ea7565b91506146bd82614656565b604082019050919050565b600060208201905081810360008301526146e1816146a5565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614744603083613ea7565b915061474f826146e8565b604082019050919050565b6000602082019050818103600083015261477381614737565b9050919050565b7f4d757374206b656570206665657320617420313125206f72206c657373000000600082015250565b60006147b0601d83613ea7565b91506147bb8261477a565b602082019050919050565b600060208201905081810360008301526147df816147a3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614842603983613ea7565b915061484d826147e6565b604082019050919050565b6000602082019050818103600083015261487181614835565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006148d4602583613ea7565b91506148df82614878565b604082019050919050565b60006020820190508181036000830152614903816148c7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614966602483613ea7565b91506149718261490a565b604082019050919050565b6000602082019050818103600083015261499581614959565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149f8603583613ea7565b9150614a038261499c565b604082019050919050565b60006020820190508181036000830152614a27816149eb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614a8a603483613ea7565b9150614a9582614a2e565b604082019050919050565b60006020820190508181036000830152614ab981614a7d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b1c602683613ea7565b9150614b2782614ac0565b604082019050919050565b60006020820190508181036000830152614b4b81614b0f565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614b88602083613ea7565b9150614b9382614b52565b602082019050919050565b60006020820190508181036000830152614bb781614b7b565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614c1a602a83613ea7565b9150614c2582614bbe565b604082019050919050565b60006020820190508181036000830152614c4981614c0d565b9050919050565b600081519050614c5f81613fbb565b92915050565b600060208284031215614c7b57614c7a613f4e565b5b6000614c8984828501614c50565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614cee602483613ea7565b9150614cf982614c92565b604082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d80602283613ea7565b9150614d8b82614d24565b604082019050919050565b60006020820190508181036000830152614daf81614d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614e12602583613ea7565b9150614e1d82614db6565b604082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea4602383613ea7565b9150614eaf82614e48565b604082019050919050565b60006020820190508181036000830152614ed381614e97565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f10601683613ea7565b9150614f1b82614eda565b602082019050919050565b60006020820190508181036000830152614f3f81614f03565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614fc8604983613ea7565b9150614fd382614f46565b606082019050919050565b60006020820190508181036000830152614ff781614fbb565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061505a603583613ea7565b915061506582614ffe565b604082019050919050565b600060208201905081810360008301526150898161504d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006150c6601383613ea7565b91506150d182615090565b602082019050919050565b600060208201905081810360008301526150f5816150b9565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615158603683613ea7565b9150615163826150fc565b604082019050919050565b600060208201905081810360008301526151878161514b565b9050919050565b600061519982613fb1565b91506151a483613fb1565b92508282039050818111156151bc576151bb61442d565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006151f8601f83613ea7565b9150615203826151c2565b602082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061528a602683613ea7565b91506152958261522e565b604082019050919050565b600060208201905081810360008301526152b98161527d565b905091905056fea2646970667358221220f0183521d76f44d49f0794e9bb4fc1d8ec3c4bcec4c3c4024a19d73d7baf239064736f6c63430008130033

Deployed Bytecode Sourcemap

15908:17382:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3861:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17534:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15983:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3265:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24292:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16548:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16363:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17318:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17278;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21798:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4042:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16086:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16458:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16419:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3164:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4547:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32132:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16041:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16646:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24457:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17133:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16726:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3381:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;814:103;;;;;;;;;;;;;:::i;:::-;;30775:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22345:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16178:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17026;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22522:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20870:155;;;;;;;;;;;;;:::i;:::-;;589:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16215:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17168:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3052:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23545:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17100:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16602:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17358:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17244:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4770:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16510:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3516:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24053:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17755:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16686:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23355:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22934:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22081:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16944:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16248:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21293:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16992:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3702:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16290:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21088:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17063:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;925:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17206:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16330:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32231:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2940:100;2994:13;3027:5;3020:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:100;:::o;3861:169::-;3944:4;3961:39;3970:12;:10;:12::i;:::-;3984:7;3993:6;3961:8;:39::i;:::-;4018:4;4011:11;;3861:169;;;;:::o;17534:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15983:51::-;;;:::o;3265:108::-;3326:7;3353:12;;3346:19;;3265:108;:::o;24292:157::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24399:9:::1;;;;;;;;;;;24371:38;;24388:9;24371:38;;;;;;;;;;;;24432:9;24420;;:21;;;;;;;;;;;;;;;;;;24292:157:::0;:::o;16548:47::-;;;;:::o;16363:36::-;;;;:::o;17318:33::-;;;;:::o;17278:::-;;;;:::o;21798:275::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21935:4:::1;21927;21922:1;21906:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21905:26;;;;:::i;:::-;21904:35;;;;:::i;:::-;21894:6;:45;;21872:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;22058:6;22048;:17;;;;:::i;:::-;22025:20;:40;;;;21798:275:::0;:::o;4042:492::-;4182:4;4199:36;4209:6;4217:9;4228:6;4199:9;:36::i;:::-;4248:24;4275:11;:19;4287:6;4275:19;;;;;;;;;;;;;;;:33;4295:12;:10;:12::i;:::-;4275:33;;;;;;;;;;;;;;;;4248:60;;4347:6;4327:16;:26;;4319:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4434:57;4443:6;4451:12;:10;:12::i;:::-;4484:6;4465:16;:25;4434:8;:57::i;:::-;4522:4;4515:11;;;4042:492;;;;;:::o;16086:53::-;16132:6;16086:53;:::o;16458:45::-;;;;:::o;16419:32::-;;;;;;;;;;;;;:::o;3164:93::-;3222:5;3247:2;3240:9;;3164:93;:::o;4547:215::-;4635:4;4652:80;4661:12;:10;:12::i;:::-;4675:7;4721:10;4684:11;:25;4696:12;:10;:12::i;:::-;4684:25;;;;;;;;;;;;;;;:34;4710:7;4684:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4652:8;:80::i;:::-;4750:4;4743:11;;4547:215;;;;:::o;32132:89::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32200:17:::1;32206:2;32210:6;32200:5;:17::i;:::-;32132:89:::0;;:::o;16041:38::-;;;:::o;16646:33::-;;;;;;;;;;;;;:::o;24457:126::-;24523:4;24547:19;:28;24567:7;24547:28;;;;;;;;;;;;;;;;;;;;;;;;;24540:35;;24457:126;;;:::o;17133:28::-;;;;:::o;16726:31::-;;;;;;;;;;;;;:::o;3381:127::-;3455:7;3482:9;:18;3492:7;3482:18;;;;;;;;;;;;;;;;3475:25;;3381:127;;;:::o;814:103::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;879:30:::1;906:1;879:18;:30::i;:::-;814:103::o:0;30775:555::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30977:3:::1;30954:19;:26;;30932:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;31104:4;31092:8;:16;;:33;;;;;31124:1;31112:8;:13;;31092:33;31070:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;31230:19;31212:15;:37;;;;31279:8;31260:16;:27;;;;31314:8;31298:13;;:24;;;;;;;;;;;;;;;;;;30775:555:::0;;;:::o;22345:167::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22500:4:::1;22458:31;:39;22490:6;22458:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22345:167:::0;;:::o;16178:30::-;;;;;;;;;;;;;:::o;17026:::-;;;;:::o;22522:404::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22690:13:::1;22672:15;:31;;;;22732:13;22714:15;:31;;;;22768:7;22756:9;:19;;;;22837:9;;22819:15;;22801;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;22786:12;:60;;;;22881:3;22865:12;;:19;;22857:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22522:404:::0;;;:::o;20870:155::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20941:4:::1;20925:13;;:20;;;;;;;;;;;;;;;;;;20970:4;20956:11;;:18;;;;;;;;;;;;;;;;;;21002:15;20985:14;:32;;;;20870:155::o:0;589:87::-;635:7;662:6;;;;;;;;;;;655:13;;589:87;:::o;16215:24::-;;;;;;;;;;;;;:::o;17168:31::-;;;;:::o;3052:104::-;3108:13;3141:7;3134:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3052:104;:::o;23545:304::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23689:13:::1;23681:21;;:4;:21;;::::0;23659:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23800:41;23829:4;23835:5;23800:28;:41::i;:::-;23545:304:::0;;:::o;17100:24::-;;;;:::o;16602:35::-;;;;:::o;17358:27::-;;;;:::o;17244:25::-;;;;:::o;4770:413::-;4863:4;4880:24;4907:11;:25;4919:12;:10;:12::i;:::-;4907:25;;;;;;;;;;;;;;;:34;4933:7;4907:34;;;;;;;;;;;;;;;;4880:61;;4980:15;4960:16;:35;;4952:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5073:67;5082:12;:10;:12::i;:::-;5096:7;5124:15;5105:16;:34;5073:8;:67::i;:::-;5171:4;5164:11;;;4770:413;;;;:::o;16510:29::-;;;;:::o;3516:175::-;3602:4;3619:42;3629:12;:10;:12::i;:::-;3643:9;3654:6;3619:9;:42::i;:::-;3679:4;3672:11;;3516:175;;;;:::o;24053:231::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24213:15:::1;;;;;;;;;;;24170:59;;24193:18;24170:59;;;;;;;;;;;;24258:18;24240:15;;:36;;;;;;;;;;;;;;;;;;24053:231:::0;:::o;17755:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16686:33::-;;;;;;;;;;;;;:::o;23355:182::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23471:8:::1;23440:19;:28;23460:7;23440:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23511:7;23495:34;;;23520:8;23495:34;;;;;;:::i;:::-;;;;;;;;23355:182:::0;;:::o;22934:413::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23104:13:::1;23085:16;:32;;;;23147:13;23128:16;:32;;;;23184:7;23171:10;:20;;;;23256:10;;23237:16;;23218;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;23202:13;:64;;;;23302:3;23285:13;;:20;;23277:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22934:413:::0;;;:::o;22081:256::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22221:4:::1;22213;22208:1;22192:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22191:26;;;;:::i;:::-;22190:35;;;;:::i;:::-;22180:6;:45;;22158:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;22322:6;22312;:17;;;;:::i;:::-;22300:9;:29;;;;22081:256:::0;:::o;16944:39::-;;;;;;;;;;;;;:::o;16248:35::-;;;;:::o;21293:497::-;21401:4;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21480:6:::1;21475:1;21459:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21458:28;;;;:::i;:::-;21445:9;:41;;21423:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21635:4;21630:1;21614:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21613:26;;;;:::i;:::-;21600:9;:39;;21578:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21751:9;21730:18;:30;;;;21778:4;21771:11;;21293:497:::0;;;:::o;16992:27::-;;;;:::o;3702:151::-;3791:7;3818:11;:18;3830:5;3818:18;;;;;;;;;;;;;;;:27;3837:7;3818:27;;;;;;;;;;;;;;;;3811:34;;3702:151;;;;:::o;16290:33::-;;;;:::o;21088:135::-;21148:4;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21188:5:::1;21165:20;;:28;;;;;;;;;;;;;;;;;;21211:4;21204:11;;21088:135:::0;:::o;17063:30::-;;;;:::o;925:201::-;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1034:1:::1;1014:22;;:8;:22;;::::0;1006:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1090:28;1109:8;1090:18;:28::i;:::-;925:201:::0;:::o;17206:31::-;;;;:::o;16330:24::-;;;;:::o;32231:1056::-;32342:4;737:12;:10;:12::i;:::-;726:23;;:7;:5;:7::i;:::-;:23;;;718:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32427:19:::1;;32404:20;;:42;;;;:::i;:::-;32386:15;:60;32364:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;32536:4;32525:7;:15;;32517:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;32621:15;32598:20;:38;;;;32691:28;32722:4;:14;;;32737:13;32722:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32691:60;;32801:20;32824:44;32862:5;32824:33;32849:7;32824:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;32801:67;;32988:1;32973:12;:16;32969:110;;;33006:61;33022:13;33045:6;33054:12;33006:15;:61::i;:::-;32969:110;33154:19;33191:13;33154:51;;33216:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33243:14;;;;;;;;;;33275:4;33268:11;;;;;32231:1056:::0;;;:::o;133:98::-;186:7;213:10;206:17;;133:98;:::o;6943:380::-;7096:1;7079:19;;:5;:19;;;7071:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7177:1;7158:21;;:7;:21;;;7150:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7261:6;7231:11;:18;7243:5;7231:18;;;;;;;;;;;;;;;:27;7250:7;7231:27;;;;;;;;;;;;;;;:36;;;;7299:7;7283:32;;7292:5;7283:32;;;7308:6;7283:32;;;;;;:::i;:::-;;;;;;;;6943:380;;;:::o;24641:4998::-;24789:1;24773:18;;:4;:18;;;24765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24866:1;24852:16;;:2;:16;;;24844:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24935:1;24925:6;:11;24921:93;;24953:28;24969:4;24975:2;24979:1;24953:15;:28::i;:::-;24996:7;;24921:93;25030:14;;;;;;;;;;;25026:2487;;;25091:7;:5;:7::i;:::-;25083:15;;:4;:15;;;;:49;;;;;25125:7;:5;:7::i;:::-;25119:13;;:2;:13;;;;25083:49;:86;;;;;25167:1;25153:16;;:2;:16;;;;25083:86;:128;;;;;25204:6;25190:21;;:2;:21;;;;25083:128;:158;;;;;25233:8;;;;;;;;;;;25232:9;25083:158;25061:2441;;;25281:13;;;;;;;;;;;25276:223;;25353:19;:25;25373:4;25353:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25382:19;:23;25402:2;25382:23;;;;;;;;;;;;;;;;;;;;;;;;;25353:52;25319:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25276:223;25655:20;;;;;;;;;;;25651:641;;;25736:7;:5;:7::i;:::-;25730:13;;:2;:13;;;;:72;;;;;25786:15;25772:30;;:2;:30;;;;25730:72;:129;;;;;25845:13;25831:28;;:2;:28;;;;25730:129;25700:573;;;26023:12;25948:28;:39;25977:9;25948:39;;;;;;;;;;;;;;;;:87;25910:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;26237:12;26195:28;:39;26224:9;26195:39;;;;;;;;;;;;;;;:54;;;;25700:573;25651:641;26366:25;:31;26392:4;26366:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;26423:31;:35;26455:2;26423:35;;;;;;;;;;;;;;;;;;;;;;;;;26422:36;26366:92;26340:1147;;;26545:20;;26535:6;:30;;26501:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;26753:9;;26736:13;26746:2;26736:9;:13::i;:::-;26727:6;:22;;;;:::i;:::-;:35;;26693:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26340:1147;;;26931:25;:29;26957:2;26931:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;26986:31;:37;27018:4;26986:37;;;;;;;;;;;;;;;;;;;;;;;;;26985:38;26931:92;26905:582;;;27110:20;;27100:6;:30;;27066:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;26905:582;;;27267:31;:35;27299:2;27267:35;;;;;;;;;;;;;;;;;;;;;;;;;27262:225;;27387:9;;27370:13;27380:2;27370:9;:13::i;:::-;27361:6;:22;;;;:::i;:::-;:35;;27327:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27262:225;26905:582;26340:1147;25061:2441;25026:2487;27525:28;27556:24;27574:4;27556:9;:24::i;:::-;27525:55;;27593:12;27632:18;;27608:20;:42;;27593:57;;27681:7;:35;;;;;27705:11;;;;;;;;;;;27681:35;:61;;;;;27734:8;;;;;;;;;;;27733:9;27681:61;:110;;;;;27760:25;:31;27786:4;27760:31;;;;;;;;;;;;;;;;;;;;;;;;;27759:32;27681:110;:153;;;;;27809:19;:25;27829:4;27809:25;;;;;;;;;;;;;;;;;;;;;;;;;27808:26;27681:153;:194;;;;;27852:19;:23;27872:2;27852:23;;;;;;;;;;;;;;;;;;;;;;;;;27851:24;27681:194;27663:313;;;27913:4;27902:8;;:15;;;;;;;;;;;;;;;;;;27959:5;27948:8;;:16;;;;;;;;;;;;;;;;;;27663:313;28007:8;;;;;;;;;;;28006:9;:55;;;;;28032:25;:29;28058:2;28032:29;;;;;;;;;;;;;;;;;;;;;;;;;28006:55;:85;;;;;28078:13;;;;;;;;;;;28006:85;:153;;;;;28144:15;;28127:14;;:32;;;;:::i;:::-;28108:15;:51;;28006:153;:196;;;;;28177:19;:25;28197:4;28177:25;;;;;;;;;;;;;;;;;;;;;;;;;28176:26;28006:196;27988:282;;;28229:29;:27;:29::i;:::-;;27988:282;28282:12;28298:8;;;;;;;;;;;28297:9;28282:24;;28408:19;:25;28428:4;28408:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28437:19;:23;28457:2;28437:23;;;;;;;;;;;;;;;;;;;;;;;;;28408:52;28404:100;;;28487:5;28477:15;;28404:100;28516:12;28621:7;28617:969;;;28673:25;:29;28699:2;28673:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28722:1;28706:13;;:17;28673:50;28669:768;;;28751:34;28781:3;28751:25;28762:13;;28751:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28744:41;;28854:13;;28834:16;;28827:4;:23;;;;:::i;:::-;28826:41;;;;:::i;:::-;28804:18;;:63;;;;;;;:::i;:::-;;;;;;;;28924:13;;28910:10;;28903:4;:17;;;;:::i;:::-;28902:35;;;;:::i;:::-;28886:12;;:51;;;;;;;:::i;:::-;;;;;;;;29006:13;;28986:16;;28979:4;:23;;;;:::i;:::-;28978:41;;;;:::i;:::-;28956:18;;:63;;;;;;;:::i;:::-;;;;;;;;28669:768;;;29081:25;:31;29107:4;29081:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29131:1;29116:12;;:16;29081:51;29077:360;;;29160:33;29189:3;29160:24;29171:12;;29160:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29153:40;;29261:12;;29242:15;;29235:4;:22;;;;:::i;:::-;29234:39;;;;:::i;:::-;29212:18;;:61;;;;;;;:::i;:::-;;;;;;;;29329:12;;29316:9;;29309:4;:16;;;;:::i;:::-;29308:33;;;;:::i;:::-;29292:12;;:49;;;;;;;:::i;:::-;;;;;;;;29409:12;;29390:15;;29383:4;:22;;;;:::i;:::-;29382:39;;;;:::i;:::-;29360:18;;:61;;;;;;;:::i;:::-;;;;;;;;29077:360;28669:768;29464:1;29457:4;:8;29453:91;;;29486:42;29502:4;29516;29523;29486:15;:42::i;:::-;29453:91;29570:4;29560:14;;;;;:::i;:::-;;;28617:969;29598:33;29614:4;29620:2;29624:6;29598:15;:33::i;:::-;24754:4885;;;;24641:4998;;;;:::o;5935:399::-;6038:1;6019:21;;:7;:21;;;6011:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6089:49;6118:1;6122:7;6131:6;6089:20;:49::i;:::-;6167:6;6151:12;;:22;;;;;;;:::i;:::-;;;;;;;;6206:6;6184:9;:18;6194:7;6184:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;6249:7;6228:37;;6245:1;6228:37;;;6258:6;6228:37;;;;;;:::i;:::-;;;;;;;;6278:48;6306:1;6310:7;6319:6;6278:19;:48::i;:::-;5935:399;;:::o;1134:191::-;1208:16;1227:6;;;;;;;;;;;1208:25;;1253:8;1244:6;;:17;;;;;;;;;;;;;;;;;;1308:8;1277:40;;1298:8;1277:40;;;;;;;;;;;;1197:128;1134:191;:::o;23857:188::-;23974:5;23940:25;:31;23966:4;23940:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24031:5;23997:40;;24025:4;23997:40;;;;;;;;;;;;23857:188;;:::o;8986:98::-;9044:7;9075:1;9071;:5;;;;:::i;:::-;9064:12;;8986:98;;;;:::o;9092:::-;9150:7;9181:1;9177;:5;;;;:::i;:::-;9170:12;;9092:98;;;;:::o;5194:733::-;5352:1;5334:20;;:6;:20;;;5326:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5436:1;5415:23;;:9;:23;;;5407:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5491:47;5512:6;5520:9;5531:6;5491:20;:47::i;:::-;5551:21;5575:9;:17;5585:6;5575:17;;;;;;;;;;;;;;;;5551:41;;5628:6;5611:13;:23;;5603:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5749:6;5733:13;:22;5713:9;:17;5723:6;5713:17;;;;;;;;;;;;;;;:42;;;;5801:6;5777:9;:20;5787:9;5777:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5842:9;5825:35;;5834:6;5825:35;;;5853:6;5825:35;;;;;;:::i;:::-;;;;;;;;5873:46;5893:6;5901:9;5912:6;5873:19;:46::i;:::-;5315:612;5194:733;;;:::o;31338:788::-;31395:4;31429:15;31412:14;:32;;;;31499:28;31530:4;:14;;;31545:13;31530:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31499:60;;31609:20;31632:77;31693:5;31632:42;31657:16;;31632:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;31609:100;;31829:1;31814:12;:16;31810:110;;;31847:61;31863:13;31886:6;31895:12;31847:15;:61::i;:::-;31810:110;31995:19;32032:13;31995:51;;32057:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32084:12;;;;;;;;;;32114:4;32107:11;;;;;31338:788;:::o;7333:125::-;;;;:::o;7468:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:613::-;7188:6;7196;7204;7253:2;7241:9;7232:7;7228:23;7224:32;7221:119;;;7259:79;;:::i;:::-;7221:119;7379:1;7404:53;7449:7;7440:6;7429:9;7425:22;7404:53;:::i;:::-;7394:63;;7350:117;7506:2;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7477:118;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7114:613;;;;;:::o;7733:468::-;7798:6;7806;7855:2;7843:9;7834:7;7830:23;7826:32;7823:119;;;7861:79;;:::i;:::-;7823:119;7981:1;8006:53;8051:7;8042:6;8031:9;8027:22;8006:53;:::i;:::-;7996:63;;7952:117;8108:2;8134:50;8176:7;8167:6;8156:9;8152:22;8134:50;:::i;:::-;8124:60;;8079:115;7733:468;;;;;:::o;8207:619::-;8284:6;8292;8300;8349:2;8337:9;8328:7;8324:23;8320:32;8317:119;;;8355:79;;:::i;:::-;8317:119;8475:1;8500:53;8545:7;8536:6;8525:9;8521:22;8500:53;:::i;:::-;8490:63;;8446:117;8602:2;8628:53;8673:7;8664:6;8653:9;8649:22;8628:53;:::i;:::-;8618:63;;8573:118;8730:2;8756:53;8801:7;8792:6;8781:9;8777:22;8756:53;:::i;:::-;8746:63;;8701:118;8207:619;;;;;:::o;8832:474::-;8900:6;8908;8957:2;8945:9;8936:7;8932:23;8928:32;8925:119;;;8963:79;;:::i;:::-;8925:119;9083:1;9108:53;9153:7;9144:6;9133:9;9129:22;9108:53;:::i;:::-;9098:63;;9054:117;9210:2;9236:53;9281:7;9272:6;9261:9;9257:22;9236:53;:::i;:::-;9226:63;;9181:118;8832:474;;;;;:::o;9312:180::-;9360:77;9357:1;9350:88;9457:4;9454:1;9447:15;9481:4;9478:1;9471:15;9498:320;9542:6;9579:1;9573:4;9569:12;9559:22;;9626:1;9620:4;9616:12;9647:18;9637:81;;9703:4;9695:6;9691:17;9681:27;;9637:81;9765:2;9757:6;9754:14;9734:18;9731:38;9728:84;;9784:18;;:::i;:::-;9728:84;9549:269;9498:320;;;:::o;9824:182::-;9964:34;9960:1;9952:6;9948:14;9941:58;9824:182;:::o;10012:366::-;10154:3;10175:67;10239:2;10234:3;10175:67;:::i;:::-;10168:74;;10251:93;10340:3;10251:93;:::i;:::-;10369:2;10364:3;10360:12;10353:19;;10012:366;;;:::o;10384:419::-;10550:4;10588:2;10577:9;10573:18;10565:26;;10637:9;10631:4;10627:20;10623:1;10612:9;10608:17;10601:47;10665:131;10791:4;10665:131;:::i;:::-;10657:139;;10384:419;;;:::o;10809:180::-;10857:77;10854:1;10847:88;10954:4;10951:1;10944:15;10978:4;10975:1;10968:15;10995:410;11035:7;11058:20;11076:1;11058:20;:::i;:::-;11053:25;;11092:20;11110:1;11092:20;:::i;:::-;11087:25;;11147:1;11144;11140:9;11169:30;11187:11;11169:30;:::i;:::-;11158:41;;11348:1;11339:7;11335:15;11332:1;11329:22;11309:1;11302:9;11282:83;11259:139;;11378:18;;:::i;:::-;11259:139;11043:362;10995:410;;;;:::o;11411:180::-;11459:77;11456:1;11449:88;11556:4;11553:1;11546:15;11580:4;11577:1;11570:15;11597:185;11637:1;11654:20;11672:1;11654:20;:::i;:::-;11649:25;;11688:20;11706:1;11688:20;:::i;:::-;11683:25;;11727:1;11717:35;;11732:18;;:::i;:::-;11717:35;11774:1;11771;11767:9;11762:14;;11597:185;;;;:::o;11788:234::-;11928:34;11924:1;11916:6;11912:14;11905:58;11997:17;11992:2;11984:6;11980:15;11973:42;11788:234;:::o;12028:366::-;12170:3;12191:67;12255:2;12250:3;12191:67;:::i;:::-;12184:74;;12267:93;12356:3;12267:93;:::i;:::-;12385:2;12380:3;12376:12;12369:19;;12028:366;;;:::o;12400:419::-;12566:4;12604:2;12593:9;12589:18;12581:26;;12653:9;12647:4;12643:20;12639:1;12628:9;12624:17;12617:47;12681:131;12807:4;12681:131;:::i;:::-;12673:139;;12400:419;;;:::o;12825:227::-;12965:34;12961:1;12953:6;12949:14;12942:58;13034:10;13029:2;13021:6;13017:15;13010:35;12825:227;:::o;13058:366::-;13200:3;13221:67;13285:2;13280:3;13221:67;:::i;:::-;13214:74;;13297:93;13386:3;13297:93;:::i;:::-;13415:2;13410:3;13406:12;13399:19;;13058:366;;;:::o;13430:419::-;13596:4;13634:2;13623:9;13619:18;13611:26;;13683:9;13677:4;13673:20;13669:1;13658:9;13654:17;13647:47;13711:131;13837:4;13711:131;:::i;:::-;13703:139;;13430:419;;;:::o;13855:191::-;13895:3;13914:20;13932:1;13914:20;:::i;:::-;13909:25;;13948:20;13966:1;13948:20;:::i;:::-;13943:25;;13991:1;13988;13984:9;13977:16;;14012:3;14009:1;14006:10;14003:36;;;14019:18;;:::i;:::-;14003:36;13855:191;;;;:::o;14052:238::-;14192:34;14188:1;14180:6;14176:14;14169:58;14261:21;14256:2;14248:6;14244:15;14237:46;14052:238;:::o;14296:366::-;14438:3;14459:67;14523:2;14518:3;14459:67;:::i;:::-;14452:74;;14535:93;14624:3;14535:93;:::i;:::-;14653:2;14648:3;14644:12;14637:19;;14296:366;;;:::o;14668:419::-;14834:4;14872:2;14861:9;14857:18;14849:26;;14921:9;14915:4;14911:20;14907:1;14896:9;14892:17;14885:47;14949:131;15075:4;14949:131;:::i;:::-;14941:139;;14668:419;;;:::o;15093:235::-;15233:34;15229:1;15221:6;15217:14;15210:58;15302:18;15297:2;15289:6;15285:15;15278:43;15093:235;:::o;15334:366::-;15476:3;15497:67;15561:2;15556:3;15497:67;:::i;:::-;15490:74;;15573:93;15662:3;15573:93;:::i;:::-;15691:2;15686:3;15682:12;15675:19;;15334:366;;;:::o;15706:419::-;15872:4;15910:2;15899:9;15895:18;15887:26;;15959:9;15953:4;15949:20;15945:1;15934:9;15930:17;15923:47;15987:131;16113:4;15987:131;:::i;:::-;15979:139;;15706:419;;;:::o;16131:179::-;16271:31;16267:1;16259:6;16255:14;16248:55;16131:179;:::o;16316:366::-;16458:3;16479:67;16543:2;16538:3;16479:67;:::i;:::-;16472:74;;16555:93;16644:3;16555:93;:::i;:::-;16673:2;16668:3;16664:12;16657:19;;16316:366;;;:::o;16688:419::-;16854:4;16892:2;16881:9;16877:18;16869:26;;16941:9;16935:4;16931:20;16927:1;16916:9;16912:17;16905:47;16969:131;17095:4;16969:131;:::i;:::-;16961:139;;16688:419;;;:::o;17113:244::-;17253:34;17249:1;17241:6;17237:14;17230:58;17322:27;17317:2;17309:6;17305:15;17298:52;17113:244;:::o;17363:366::-;17505:3;17526:67;17590:2;17585:3;17526:67;:::i;:::-;17519:74;;17602:93;17691:3;17602:93;:::i;:::-;17720:2;17715:3;17711:12;17704:19;;17363:366;;;:::o;17735:419::-;17901:4;17939:2;17928:9;17924:18;17916:26;;17988:9;17982:4;17978:20;17974:1;17963:9;17959:17;17952:47;18016:131;18142:4;18016:131;:::i;:::-;18008:139;;17735:419;;;:::o;18160:224::-;18300:34;18296:1;18288:6;18284:14;18277:58;18369:7;18364:2;18356:6;18352:15;18345:32;18160:224;:::o;18390:366::-;18532:3;18553:67;18617:2;18612:3;18553:67;:::i;:::-;18546:74;;18629:93;18718:3;18629:93;:::i;:::-;18747:2;18742:3;18738:12;18731:19;;18390:366;;;:::o;18762:419::-;18928:4;18966:2;18955:9;18951:18;18943:26;;19015:9;19009:4;19005:20;19001:1;18990:9;18986:17;18979:47;19043:131;19169:4;19043:131;:::i;:::-;19035:139;;18762:419;;;:::o;19187:223::-;19327:34;19323:1;19315:6;19311:14;19304:58;19396:6;19391:2;19383:6;19379:15;19372:31;19187:223;:::o;19416:366::-;19558:3;19579:67;19643:2;19638:3;19579:67;:::i;:::-;19572:74;;19655:93;19744:3;19655:93;:::i;:::-;19773:2;19768:3;19764:12;19757:19;;19416:366;;;:::o;19788:419::-;19954:4;19992:2;19981:9;19977:18;19969:26;;20041:9;20035:4;20031:20;20027:1;20016:9;20012:17;20005:47;20069:131;20195:4;20069:131;:::i;:::-;20061:139;;19788:419;;;:::o;20213:240::-;20353:34;20349:1;20341:6;20337:14;20330:58;20422:23;20417:2;20409:6;20405:15;20398:48;20213:240;:::o;20459:366::-;20601:3;20622:67;20686:2;20681:3;20622:67;:::i;:::-;20615:74;;20698:93;20787:3;20698:93;:::i;:::-;20816:2;20811:3;20807:12;20800:19;;20459:366;;;:::o;20831:419::-;20997:4;21035:2;21024:9;21020:18;21012:26;;21084:9;21078:4;21074:20;21070:1;21059:9;21055:17;21048:47;21112:131;21238:4;21112:131;:::i;:::-;21104:139;;20831:419;;;:::o;21256:239::-;21396:34;21392:1;21384:6;21380:14;21373:58;21465:22;21460:2;21452:6;21448:15;21441:47;21256:239;:::o;21501:366::-;21643:3;21664:67;21728:2;21723:3;21664:67;:::i;:::-;21657:74;;21740:93;21829:3;21740:93;:::i;:::-;21858:2;21853:3;21849:12;21842:19;;21501:366;;;:::o;21873:419::-;22039:4;22077:2;22066:9;22062:18;22054:26;;22126:9;22120:4;22116:20;22112:1;22101:9;22097:17;22090:47;22154:131;22280:4;22154:131;:::i;:::-;22146:139;;21873:419;;;:::o;22298:225::-;22438:34;22434:1;22426:6;22422:14;22415:58;22507:8;22502:2;22494:6;22490:15;22483:33;22298:225;:::o;22529:366::-;22671:3;22692:67;22756:2;22751:3;22692:67;:::i;:::-;22685:74;;22768:93;22857:3;22768:93;:::i;:::-;22886:2;22881:3;22877:12;22870:19;;22529:366;;;:::o;22901:419::-;23067:4;23105:2;23094:9;23090:18;23082:26;;23154:9;23148:4;23144:20;23140:1;23129:9;23125:17;23118:47;23182:131;23308:4;23182:131;:::i;:::-;23174:139;;22901:419;;;:::o;23326:182::-;23466:34;23462:1;23454:6;23450:14;23443:58;23326:182;:::o;23514:366::-;23656:3;23677:67;23741:2;23736:3;23677:67;:::i;:::-;23670:74;;23753:93;23842:3;23753:93;:::i;:::-;23871:2;23866:3;23862:12;23855:19;;23514:366;;;:::o;23886:419::-;24052:4;24090:2;24079:9;24075:18;24067:26;;24139:9;24133:4;24129:20;24125:1;24114:9;24110:17;24103:47;24167:131;24293:4;24167:131;:::i;:::-;24159:139;;23886:419;;;:::o;24311:229::-;24451:34;24447:1;24439:6;24435:14;24428:58;24520:12;24515:2;24507:6;24503:15;24496:37;24311:229;:::o;24546:366::-;24688:3;24709:67;24773:2;24768:3;24709:67;:::i;:::-;24702:74;;24785:93;24874:3;24785:93;:::i;:::-;24903:2;24898:3;24894:12;24887:19;;24546:366;;;:::o;24918:419::-;25084:4;25122:2;25111:9;25107:18;25099:26;;25171:9;25165:4;25161:20;25157:1;25146:9;25142:17;25135:47;25199:131;25325:4;25199:131;:::i;:::-;25191:139;;24918:419;;;:::o;25343:143::-;25400:5;25431:6;25425:13;25416:22;;25447:33;25474:5;25447:33;:::i;:::-;25343:143;;;;:::o;25492:351::-;25562:6;25611:2;25599:9;25590:7;25586:23;25582:32;25579:119;;;25617:79;;:::i;:::-;25579:119;25737:1;25762:64;25818:7;25809:6;25798:9;25794:22;25762:64;:::i;:::-;25752:74;;25708:128;25492:351;;;;:::o;25849:223::-;25989:34;25985:1;25977:6;25973:14;25966:58;26058:6;26053:2;26045:6;26041:15;26034:31;25849:223;:::o;26078:366::-;26220:3;26241:67;26305:2;26300:3;26241:67;:::i;:::-;26234:74;;26317:93;26406:3;26317:93;:::i;:::-;26435:2;26430:3;26426:12;26419:19;;26078:366;;;:::o;26450:419::-;26616:4;26654:2;26643:9;26639:18;26631:26;;26703:9;26697:4;26693:20;26689:1;26678:9;26674:17;26667:47;26731:131;26857:4;26731:131;:::i;:::-;26723:139;;26450:419;;;:::o;26875:221::-;27015:34;27011:1;27003:6;26999:14;26992:58;27084:4;27079:2;27071:6;27067:15;27060:29;26875:221;:::o;27102:366::-;27244:3;27265:67;27329:2;27324:3;27265:67;:::i;:::-;27258:74;;27341:93;27430:3;27341:93;:::i;:::-;27459:2;27454:3;27450:12;27443:19;;27102:366;;;:::o;27474:419::-;27640:4;27678:2;27667:9;27663:18;27655:26;;27727:9;27721:4;27717:20;27713:1;27702:9;27698:17;27691:47;27755:131;27881:4;27755:131;:::i;:::-;27747:139;;27474:419;;;:::o;27899:224::-;28039:34;28035:1;28027:6;28023:14;28016:58;28108:7;28103:2;28095:6;28091:15;28084:32;27899:224;:::o;28129:366::-;28271:3;28292:67;28356:2;28351:3;28292:67;:::i;:::-;28285:74;;28368:93;28457:3;28368:93;:::i;:::-;28486:2;28481:3;28477:12;28470:19;;28129:366;;;:::o;28501:419::-;28667:4;28705:2;28694:9;28690:18;28682:26;;28754:9;28748:4;28744:20;28740:1;28729:9;28725:17;28718:47;28782:131;28908:4;28782:131;:::i;:::-;28774:139;;28501:419;;;:::o;28926:222::-;29066:34;29062:1;29054:6;29050:14;29043:58;29135:5;29130:2;29122:6;29118:15;29111:30;28926:222;:::o;29154:366::-;29296:3;29317:67;29381:2;29376:3;29317:67;:::i;:::-;29310:74;;29393:93;29482:3;29393:93;:::i;:::-;29511:2;29506:3;29502:12;29495:19;;29154:366;;;:::o;29526:419::-;29692:4;29730:2;29719:9;29715:18;29707:26;;29779:9;29773:4;29769:20;29765:1;29754:9;29750:17;29743:47;29807:131;29933:4;29807:131;:::i;:::-;29799:139;;29526:419;;;:::o;29951:172::-;30091:24;30087:1;30079:6;30075:14;30068:48;29951:172;:::o;30129:366::-;30271:3;30292:67;30356:2;30351:3;30292:67;:::i;:::-;30285:74;;30368:93;30457:3;30368:93;:::i;:::-;30486:2;30481:3;30477:12;30470:19;;30129:366;;;:::o;30501:419::-;30667:4;30705:2;30694:9;30690:18;30682:26;;30754:9;30748:4;30744:20;30740:1;30729:9;30725:17;30718:47;30782:131;30908:4;30782:131;:::i;:::-;30774:139;;30501:419;;;:::o;30926:297::-;31066:34;31062:1;31054:6;31050:14;31043:58;31135:34;31130:2;31122:6;31118:15;31111:59;31204:11;31199:2;31191:6;31187:15;31180:36;30926:297;:::o;31229:366::-;31371:3;31392:67;31456:2;31451:3;31392:67;:::i;:::-;31385:74;;31468:93;31557:3;31468:93;:::i;:::-;31586:2;31581:3;31577:12;31570:19;;31229:366;;;:::o;31601:419::-;31767:4;31805:2;31794:9;31790:18;31782:26;;31854:9;31848:4;31844:20;31840:1;31829:9;31825:17;31818:47;31882:131;32008:4;31882:131;:::i;:::-;31874:139;;31601:419;;;:::o;32026:240::-;32166:34;32162:1;32154:6;32150:14;32143:58;32235:23;32230:2;32222:6;32218:15;32211:48;32026:240;:::o;32272:366::-;32414:3;32435:67;32499:2;32494:3;32435:67;:::i;:::-;32428:74;;32511:93;32600:3;32511:93;:::i;:::-;32629:2;32624:3;32620:12;32613:19;;32272:366;;;:::o;32644:419::-;32810:4;32848:2;32837:9;32833:18;32825:26;;32897:9;32891:4;32887:20;32883:1;32872:9;32868:17;32861:47;32925:131;33051:4;32925:131;:::i;:::-;32917:139;;32644:419;;;:::o;33069:169::-;33209:21;33205:1;33197:6;33193:14;33186:45;33069:169;:::o;33244:366::-;33386:3;33407:67;33471:2;33466:3;33407:67;:::i;:::-;33400:74;;33483:93;33572:3;33483:93;:::i;:::-;33601:2;33596:3;33592:12;33585:19;;33244:366;;;:::o;33616:419::-;33782:4;33820:2;33809:9;33805:18;33797:26;;33869:9;33863:4;33859:20;33855:1;33844:9;33840:17;33833:47;33897:131;34023:4;33897:131;:::i;:::-;33889:139;;33616:419;;;:::o;34041:241::-;34181:34;34177:1;34169:6;34165:14;34158:58;34250:24;34245:2;34237:6;34233:15;34226:49;34041:241;:::o;34288:366::-;34430:3;34451:67;34515:2;34510:3;34451:67;:::i;:::-;34444:74;;34527:93;34616:3;34527:93;:::i;:::-;34645:2;34640:3;34636:12;34629:19;;34288:366;;;:::o;34660:419::-;34826:4;34864:2;34853:9;34849:18;34841:26;;34913:9;34907:4;34903:20;34899:1;34888:9;34884:17;34877:47;34941:131;35067:4;34941:131;:::i;:::-;34933:139;;34660:419;;;:::o;35085:194::-;35125:4;35145:20;35163:1;35145:20;:::i;:::-;35140:25;;35179:20;35197:1;35179:20;:::i;:::-;35174:25;;35223:1;35220;35216:9;35208:17;;35247:1;35241:4;35238:11;35235:37;;;35252:18;;:::i;:::-;35235:37;35085:194;;;;:::o;35285:181::-;35425:33;35421:1;35413:6;35409:14;35402:57;35285:181;:::o;35472:366::-;35614:3;35635:67;35699:2;35694:3;35635:67;:::i;:::-;35628:74;;35711:93;35800:3;35711:93;:::i;:::-;35829:2;35824:3;35820:12;35813:19;;35472:366;;;:::o;35844:419::-;36010:4;36048:2;36037:9;36033:18;36025:26;;36097:9;36091:4;36087:20;36083:1;36072:9;36068:17;36061:47;36125:131;36251:4;36125:131;:::i;:::-;36117:139;;35844:419;;;:::o;36269:225::-;36409:34;36405:1;36397:6;36393:14;36386:58;36478:8;36473:2;36465:6;36461:15;36454:33;36269:225;:::o;36500:366::-;36642:3;36663:67;36727:2;36722:3;36663:67;:::i;:::-;36656:74;;36739:93;36828:3;36739:93;:::i;:::-;36857:2;36852:3;36848:12;36841:19;;36500:366;;;:::o;36872:419::-;37038:4;37076:2;37065:9;37061:18;37053:26;;37125:9;37119:4;37115:20;37111:1;37100:9;37096:17;37089:47;37153:131;37279:4;37153:131;:::i;:::-;37145:139;;36872:419;;;:::o

Swarm Source

ipfs://f0183521d76f44d49f0794e9bb4fc1d8ec3c4bcec4c3c4024a19d73d7baf2390

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.