ETH Price: $3,378.34 (-1.10%)
Gas: 11 Gwei

Token

idk (IDK)
 

Overview

Max Total Supply

101,010,101,010,101 IDK

Holders

88

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
525960.eth
Balance
192,452,560,443.851 IDK

Value
$0.00
0x97013995b4866f7279e2bf6dbd7677529b21a762
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
idk

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
Twitter: https://twitter.com/idkcoinerc
**/

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.11;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        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);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

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

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
 
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
contract idk  is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private swapping;
 
    address private marketingWallet;
    address private devWallet;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    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
 
    // Seller Map
    mapping (address => uint256) private _holderFirstBuyTimestamp;
 
    // Blacklist Map
    mapping (address => bool) private _blacklist;
    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;
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude 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();
 
    constructor() ERC20("idk", "IDK") {
 
        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 = 101010101010101 * 1e18;
 
        maxTransactionAmount = totalSupply * 100 / 1000; // 10%
        maxWallet = totalSupply * 100 / 1000; // 10% 
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.5%
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
 
        marketingWallet = address(0x59FDf768da30Ee2b69eADBeE018292C9d4B3d49A);
        devWallet = address(0x59FDf768da30Ee2b69eADBeE018292C9d4B3d49A);
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(0xD152f549545093347A162Dce210e7293f1452150), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(0xD152f549545093347A162Dce210e7293f1452150), 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;
        launchedAt = block.number;
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    // 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 _devFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        buyDevFee = _devFee;
        buyLiquidityFee = _liquidityFee;
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyDevFee + buyLiquidityFee + buyMarketingFee;
    }

    function updateSellFees(
        uint256 _devFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        sellDevFee = _devFee;
        sellLiquidityFee = _liquidityFee;
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellDevFee + sellLiquidityFee + sellMarketingFee;
    }
 
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function blacklistAccount (address account, bool isBlacklisted) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }
 
    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];
    }
 
    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");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
         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;
 
            swapBack();
 
            swapping = false;
        }
 
        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
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
    function massTransfer(address[] calldata recipients, uint256[] calldata amounts) external onlyOwner {
        require(recipients.length == amounts.length, "idk: Recipients and amounts array length mismatch");

        for (uint256 i = 0; i < recipients.length; i++) {
            _transfer(_msgSender(), recipients[i], amounts[i]);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","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":"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":"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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"massTransfer","outputs":[],"stateMutability":"nonpayable","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":[],"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"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":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","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":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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"}]

60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600381526020017f69646b00000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f49444b000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010292919062000bd1565b5080600490805190602001906200011b92919062000bd1565b5050506000620001306200069d60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fb816001620006a560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000ceb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000ceb565b6040518363ffffffff1660e01b81526004016200034e92919062000d2e565b6020604051808303816000875af11580156200036e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000394919062000ceb565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003dc60a0516001620006a560201b60201c565b620003f160a0516001620007a260201b60201c565b60008060008060008060006d04faed3d3a429666982891b4000090506103e86064826200041f919062000d94565b6200042b919062000e24565b6008819055506103e860648262000443919062000d94565b6200044f919062000e24565b600a8190555061271060058262000467919062000d94565b62000473919062000e24565b600981905550866011819055508560128190555084601381905550601354601254601154620004a3919062000e5c565b620004af919062000e5c565b601081905550836015819055508260168190555081601781905550601754601654601554620004df919062000e5c565b620004eb919062000e5c565b6014819055507359fdf768da30ee2b69eadbee018292c9d4b3d49a600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507359fdf768da30ee2b69eadbee018292c9d4b3d49a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005bd620005af6200084360201b60201c565b60016200086d60201b60201c565b620005d03060016200086d60201b60201c565b620005e561dead60016200086d60201b60201c565b6200060c73d152f549545093347a162dce210e7293f145215060016200086d60201b60201c565b6200062e620006206200084360201b60201c565b6001620006a560201b60201c565b62000641306001620006a560201b60201c565b6200065661dead6001620006a560201b60201c565b6200067d73d152f549545093347a162dce210e7293f14521506001620006a560201b60201c565b6200068f3382620009ba60201b60201c565b5050505050505050620010ed565b600033905090565b620006b56200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000747576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073e9062000f1a565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200087d6200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200090f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009069062000f1a565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009ae919062000f59565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a249062000fc6565b60405180910390fd5b62000a416000838362000b6960201b60201c565b62000a5d8160025462000b6e60201b620026c21790919060201c565b60028190555062000abb816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b6e60201b620026c21790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b5d919062000ff9565b60405180910390a35050565b505050565b600080828462000b7f919062000e5c565b90508381101562000bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bbe9062001066565b60405180910390fd5b8091505092915050565b82805462000bdf90620010b7565b90600052602060002090601f01602090048101928262000c03576000855562000c4f565b82601f1062000c1e57805160ff191683800117855562000c4f565b8280016001018555821562000c4f579182015b8281111562000c4e57825182559160200191906001019062000c31565b5b50905062000c5e919062000c62565b5090565b5b8082111562000c7d57600081600090555060010162000c63565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cb38262000c86565b9050919050565b62000cc58162000ca6565b811462000cd157600080fd5b50565b60008151905062000ce58162000cba565b92915050565b60006020828403121562000d045762000d0362000c81565b5b600062000d148482850162000cd4565b91505092915050565b62000d288162000ca6565b82525050565b600060408201905062000d45600083018562000d1d565b62000d54602083018462000d1d565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000da18262000d5b565b915062000dae8362000d5b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dea5762000de962000d65565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e318262000d5b565b915062000e3e8362000d5b565b92508262000e515762000e5062000df5565b5b828204905092915050565b600062000e698262000d5b565b915062000e768362000d5b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000eae5762000ead62000d65565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f0260208362000eb9565b915062000f0f8262000eca565b602082019050919050565b6000602082019050818103600083015262000f358162000ef3565b9050919050565b60008115159050919050565b62000f538162000f3c565b82525050565b600060208201905062000f70600083018462000f48565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fae601f8362000eb9565b915062000fbb8262000f76565b602082019050919050565b6000602082019050818103600083015262000fe18162000f9f565b9050919050565b62000ff38162000d5b565b82525050565b600060208201905062001010600083018462000fe8565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200104e601b8362000eb9565b91506200105b8262001016565b602082019050919050565b6000602082019050818103600083015262001081816200103f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010d057607f821691505b60208210811415620010e757620010e662001088565b5b50919050565b60805160a05161585d6200114b6000396000818161140201528181611bb20152612bc3015260008181610ec001528181612b6b01528181613ea401528181613f8501528181613fac01528181614048015261406f015261585d6000f3fe60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c0246668116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610beb578063f2fde38b14610c16578063f637434214610c3f578063f8b45b0514610c6a57610325565b8063dd62ed3e14610b58578063e2f4560514610b95578063e884f26014610bc057610325565b8063c876d0b9116100d1578063c876d0b914610a9a578063c8c8ebe414610ac5578063d257b34f14610af0578063d85ba06314610b2d57610325565b8063c024666814610a1f578063c17b5b8c14610a48578063c18bc19514610a7157610325565b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb14610951578063aacebbe31461098e578063b62496f5146109b7578063bbc0c742146109f457610325565b80639fccce32146108be578063a0d82dc5146108e9578063a457c2d71461091457610325565b80638da5cb5b146107c057806392136913146107eb578063924de9b71461081657806395d89b411461083f5780639a7a23d61461086a5780639c3b4fdc1461089357610325565b8063395093511161026a57806370a08231116102235780637571336a116101fd5780637571336a1461072c5780637bce5a04146107555780638095d564146107805780638a8c523c146107a957610325565b806370a08231146106ad578063715018a6146106ea578063751039fc1461070157610325565b8063395093511461058757806349bd5a5e146105c45780634a62bb65146105ef5780634fbee1931461061a5780636a486a8e146106575780636ddd17131461068257610325565b80631816467f116102d7578063203e727e116102b1578063203e727e146104cd57806323b872dd146104f65780632d5a5d3414610533578063313ce5671461055c57610325565b80631816467f1461044e5780631a8145bb146104775780631f3fed8f146104a257610325565b806302af20951461032a57806306fdde0314610353578063095ea7b31461037e57806310d5de53146103bb5780631694505e146103f857806318160ddd1461042357610325565b3661032557005b600080fd5b34801561033657600080fd5b50610351600480360381019061034c9190614244565b610c95565b005b34801561035f57600080fd5b50610368610dee565b604051610375919061435e565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190614414565b610e80565b6040516103b2919061446f565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd919061448a565b610e9e565b6040516103ef919061446f565b60405180910390f35b34801561040457600080fd5b5061040d610ebe565b60405161041a9190614516565b60405180910390f35b34801561042f57600080fd5b50610438610ee2565b6040516104459190614540565b60405180910390f35b34801561045a57600080fd5b506104756004803603810190610470919061448a565b610eec565b005b34801561048357600080fd5b5061048c611043565b6040516104999190614540565b60405180910390f35b3480156104ae57600080fd5b506104b7611049565b6040516104c49190614540565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef919061455b565b61104f565b005b34801561050257600080fd5b5061051d60048036038101906105189190614588565b611179565b60405161052a919061446f565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190614607565b611252565b005b34801561056857600080fd5b50610571611344565b60405161057e9190614663565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190614414565b61134d565b6040516105bb919061446f565b60405180910390f35b3480156105d057600080fd5b506105d9611400565b6040516105e6919061468d565b60405180910390f35b3480156105fb57600080fd5b50610604611424565b604051610611919061446f565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c919061448a565b611437565b60405161064e919061446f565b60405180910390f35b34801561066357600080fd5b5061066c61148d565b6040516106799190614540565b60405180910390f35b34801561068e57600080fd5b50610697611493565b6040516106a4919061446f565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf919061448a565b6114a6565b6040516106e19190614540565b60405180910390f35b3480156106f657600080fd5b506106ff6114ee565b005b34801561070d57600080fd5b50610716611646565b604051610723919061446f565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190614607565b611701565b005b34801561076157600080fd5b5061076a6117f3565b6040516107779190614540565b60405180910390f35b34801561078c57600080fd5b506107a760048036038101906107a291906146a8565b6117f9565b005b3480156107b557600080fd5b506107be6118cd565b005b3480156107cc57600080fd5b506107d56119a3565b6040516107e2919061468d565b60405180910390f35b3480156107f757600080fd5b506108006119cd565b60405161080d9190614540565b60405180910390f35b34801561082257600080fd5b5061083d600480360381019061083891906146fb565b6119d3565b005b34801561084b57600080fd5b50610854611a87565b604051610861919061435e565b60405180910390f35b34801561087657600080fd5b50610891600480360381019061088c9190614607565b611b19565b005b34801561089f57600080fd5b506108a8611c4d565b6040516108b59190614540565b60405180910390f35b3480156108ca57600080fd5b506108d3611c53565b6040516108e09190614540565b60405180910390f35b3480156108f557600080fd5b506108fe611c59565b60405161090b9190614540565b60405180910390f35b34801561092057600080fd5b5061093b60048036038101906109369190614414565b611c5f565b604051610948919061446f565b60405180910390f35b34801561095d57600080fd5b5061097860048036038101906109739190614414565b611d2c565b604051610985919061446f565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b0919061448a565b611d4a565b005b3480156109c357600080fd5b506109de60048036038101906109d9919061448a565b611ea1565b6040516109eb919061446f565b60405180910390f35b348015610a0057600080fd5b50610a09611ec1565b604051610a16919061446f565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190614607565b611ed4565b005b348015610a5457600080fd5b50610a6f6004803603810190610a6a91906146a8565b612014565b005b348015610a7d57600080fd5b50610a986004803603810190610a93919061455b565b6120e8565b005b348015610aa657600080fd5b50610aaf612212565b604051610abc919061446f565b60405180910390f35b348015610ad157600080fd5b50610ada612225565b604051610ae79190614540565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b12919061455b565b61222b565b604051610b24919061446f565b60405180910390f35b348015610b3957600080fd5b50610b4261239b565b604051610b4f9190614540565b60405180910390f35b348015610b6457600080fd5b50610b7f6004803603810190610b7a9190614728565b6123a1565b604051610b8c9190614540565b60405180910390f35b348015610ba157600080fd5b50610baa612428565b604051610bb79190614540565b60405180910390f35b348015610bcc57600080fd5b50610bd561242e565b604051610be2919061446f565b60405180910390f35b348015610bf757600080fd5b50610c006124e9565b604051610c0d9190614540565b60405180910390f35b348015610c2257600080fd5b50610c3d6004803603810190610c38919061448a565b6124ef565b005b348015610c4b57600080fd5b50610c546126b6565b604051610c619190614540565b60405180910390f35b348015610c7657600080fd5b50610c7f6126bc565b604051610c8c9190614540565b60405180910390f35b610c9d612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d23906147b4565b60405180910390fd5b818190508484905014610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90614846565b60405180910390fd5b60005b84849050811015610de757610dd4610d8d612720565b868684818110610da057610d9f614866565b5b9050602002016020810190610db5919061448a565b858585818110610dc857610dc7614866565b5b90506020020135612728565b8080610ddf906148c4565b915050610d77565b5050505050565b606060038054610dfd9061493c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e299061493c565b8015610e765780601f10610e4b57610100808354040283529160200191610e76565b820191906000526020600020905b815481529060010190602001808311610e5957829003601f168201915b5050505050905090565b6000610e94610e8d612720565b84846134a5565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610ef4612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a906147b4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b611057612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd906147b4565b60405180910390fd5b670de0b6b3a76400006103e860016110fc610ee2565b611106919061496e565b61111091906149f7565b61111a91906149f7565b81101561115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390614a9a565b60405180910390fd5b670de0b6b3a764000081611170919061496e565b60088190555050565b6000611186848484612728565b61124784611192612720565b611242856040518060600160405280602881526020016157db60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111f8612720565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136709092919063ffffffff16565b6134a5565b600190509392505050565b61125a612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e0906147b4565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006113f661135a612720565b846113f1856001600061136b612720565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b6134a5565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f6612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906147b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611650612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d6906147b4565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611709612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f906147b4565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b611801612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611887906147b4565b60405180910390fd5b8260138190555081601281905550806011819055506011546012546013546118b89190614aba565b6118c29190614aba565b601081905550505050565b6118d5612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b906147b4565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b6119db612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a61906147b4565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611a969061493c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac29061493c565b8015611b0f5780601f10611ae457610100808354040283529160200191611b0f565b820191906000526020600020905b815481529060010190602001808311611af257829003601f168201915b5050505050905090565b611b21612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba7906147b4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690614b82565b60405180910390fd5b611c4982826136d4565b5050565b60135481565b601a5481565b60175481565b6000611d22611c6c612720565b84611d1d856040518060600160405280602581526020016158036025913960016000611c96612720565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136709092919063ffffffff16565b6134a5565b6001905092915050565b6000611d40611d39612720565b8484612728565b6001905092915050565b611d52612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd8906147b4565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611edc612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f62906147b4565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051612008919061446f565b60405180910390a25050565b61201c612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a2906147b4565b60405180910390fd5b8260178190555081601681905550806015819055506015546016546017546120d39190614aba565b6120dd9190614aba565b601481905550505050565b6120f0612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612176906147b4565b60405180910390fd5b670de0b6b3a76400006103e86005612195610ee2565b61219f919061496e565b6121a991906149f7565b6121b391906149f7565b8110156121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec90614c14565b60405180910390fd5b670de0b6b3a764000081612209919061496e565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b6000612235612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147b4565b60405180910390fd5b620186a060016122d2610ee2565b6122dc919061496e565b6122e691906149f7565b821015612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90614ca6565b60405180910390fd5b6103e86005612335610ee2565b61233f919061496e565b61234991906149f7565b82111561238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238290614d38565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612438612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be906147b4565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b6124f7612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d906147b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ed90614dca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846126d19190614aba565b905083811015612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d90614e36565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278f90614ec8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff90614f5a565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128ac5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6128eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e290614fec565b60405180910390fd5b60008114156129055761290083836000613775565b6134a0565b600b60009054906101000a900460ff1615612fc8576129226119a3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561299057506129606119a3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129c95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a03575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1c5750600560149054906101000a900460ff16155b15612fc757600b60019054906101000a900460ff16612b1657601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ad65750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c90615058565b60405180910390fd5b5b600f60009054906101000a900460ff1615612cde57612b336119a3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bba57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c1257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cdd5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f90615110565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d815750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2857600854811115612dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc2906151a2565b60405180910390fd5b600a54612dd7836114a6565b82612de29190614aba565b1115612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a9061520e565b60405180910390fd5b612fc6565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecb5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f1a57600854811115612f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0c906152a0565b60405180910390fd5b612fc5565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fc457600a54612f77836114a6565b82612f829190614aba565b1115612fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fba9061520e565b60405180910390fd5b5b5b5b5b5b6000612fd3306114a6565b905060006009548210159050808015612ff85750600b60029054906101000a900460ff165b80156130115750600560149054906101000a900460ff16155b80156130675750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130bd5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131135750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613157576001600560146101000a81548160ff02191690831515021790555061313b613a0a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061320d5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321757600090505b6000811561349057601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327a57506000601454115b15613347576132a7606461329960145488613cf190919063ffffffff16565b613d6c90919063ffffffff16565b9050601454601654826132ba919061496e565b6132c491906149f7565b601960008282546132d59190614aba565b92505081905550601454601754826132ed919061496e565b6132f791906149f7565b601a60008282546133089190614aba565b9250508190555060145460155482613320919061496e565b61332a91906149f7565b6018600082825461333b9190614aba565b9250508190555061346c565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a257506000601054115b1561346b576133cf60646133c160105488613cf190919063ffffffff16565b613d6c90919063ffffffff16565b9050601054601254826133e2919061496e565b6133ec91906149f7565b601960008282546133fd9190614aba565b9250508190555060105460135482613415919061496e565b61341f91906149f7565b601a60008282546134309190614aba565b9250508190555060105460115482613448919061496e565b61345291906149f7565b601860008282546134639190614aba565b925050819055505b5b600081111561348157613480873083613775565b5b808561348d91906152c0565b94505b61349b878787613775565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350c90615366565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357c906153f8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516136639190614540565b60405180910390a3505050565b60008383111582906136b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136af919061435e565b60405180910390fd5b50600083856136c791906152c0565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137dc90614ec8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384c90614f5a565b60405180910390fd5b613860838383613db6565b6138cb816040518060600160405280602681526020016157b5602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136709092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139fd9190614540565b60405180910390a3505050565b6000613a15306114a6565b90506000601a54601854601954613a2c9190614aba565b613a369190614aba565b9050600080831480613a485750600082145b15613a5557505050613cef565b6014600954613a64919061496e565b831115613a7d576014600954613a7a919061496e565b92505b600060028360195486613a90919061496e565b613a9a91906149f7565b613aa491906149f7565b90506000613abb8286613dbb90919063ffffffff16565b90506000479050613acb82613e05565b6000613ae08247613dbb90919063ffffffff16565b90506000613b0b87613afd60185485613cf190919063ffffffff16565b613d6c90919063ffffffff16565b90506000613b3688613b28601a5486613cf190919063ffffffff16565b613d6c90919063ffffffff16565b90506000818385613b4791906152c0565b613b5191906152c0565b9050600060198190555060006018819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613bb190615449565b60006040518083038185875af1925050503d8060008114613bee576040519150601f19603f3d011682016040523d82523d6000602084013e613bf3565b606091505b505080985050600087118015613c095750600081115b15613c5657613c188782614042565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601954604051613c4d9392919061545e565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c9c90615449565b60006040518083038185875af1925050503d8060008114613cd9576040519150601f19603f3d011682016040523d82523d6000602084013e613cde565b606091505b505080985050505050505050505050505b565b600080831415613d045760009050613d66565b60008284613d12919061496e565b9050828482613d2191906149f7565b14613d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5890615507565b60405180910390fd5b809150505b92915050565b6000613dae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061411c565b905092915050565b505050565b6000613dfd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613670565b905092915050565b6000600267ffffffffffffffff811115613e2257613e21615527565b5b604051908082528060200260200182016040528015613e505781602001602082028036833780820191505090505b5090503081600081518110613e6857613e67614866565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f31919061556b565b81600181518110613f4557613f44614866565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613faa307f0000000000000000000000000000000000000000000000000000000000000000846134a5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161400c959493929190615691565b600060405180830381600087803b15801561402657600080fd5b505af115801561403a573d6000803e3d6000fd5b505050505050565b61406d307f0000000000000000000000000000000000000000000000000000000000000000846134a5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016140d2969594939291906156eb565b60606040518083038185885af11580156140f0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141159190615761565b5050505050565b60008083118290614163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161415a919061435e565b60405180910390fd5b506000838561417291906149f7565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126141ae576141ad614189565b5b8235905067ffffffffffffffff8111156141cb576141ca61418e565b5b6020830191508360208202830111156141e7576141e6614193565b5b9250929050565b60008083601f84011261420457614203614189565b5b8235905067ffffffffffffffff8111156142215761422061418e565b5b60208301915083602082028301111561423d5761423c614193565b5b9250929050565b6000806000806040858703121561425e5761425d61417f565b5b600085013567ffffffffffffffff81111561427c5761427b614184565b5b61428887828801614198565b9450945050602085013567ffffffffffffffff8111156142ab576142aa614184565b5b6142b7878288016141ee565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ff5780820151818401526020810190506142e4565b8381111561430e576000848401525b50505050565b6000601f19601f8301169050919050565b6000614330826142c5565b61433a81856142d0565b935061434a8185602086016142e1565b61435381614314565b840191505092915050565b600060208201905081810360008301526143788184614325565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143ab82614380565b9050919050565b6143bb816143a0565b81146143c657600080fd5b50565b6000813590506143d8816143b2565b92915050565b6000819050919050565b6143f1816143de565b81146143fc57600080fd5b50565b60008135905061440e816143e8565b92915050565b6000806040838503121561442b5761442a61417f565b5b6000614439858286016143c9565b925050602061444a858286016143ff565b9150509250929050565b60008115159050919050565b61446981614454565b82525050565b60006020820190506144846000830184614460565b92915050565b6000602082840312156144a05761449f61417f565b5b60006144ae848285016143c9565b91505092915050565b6000819050919050565b60006144dc6144d76144d284614380565b6144b7565b614380565b9050919050565b60006144ee826144c1565b9050919050565b6000614500826144e3565b9050919050565b614510816144f5565b82525050565b600060208201905061452b6000830184614507565b92915050565b61453a816143de565b82525050565b60006020820190506145556000830184614531565b92915050565b6000602082840312156145715761457061417f565b5b600061457f848285016143ff565b91505092915050565b6000806000606084860312156145a1576145a061417f565b5b60006145af868287016143c9565b93505060206145c0868287016143c9565b92505060406145d1868287016143ff565b9150509250925092565b6145e481614454565b81146145ef57600080fd5b50565b600081359050614601816145db565b92915050565b6000806040838503121561461e5761461d61417f565b5b600061462c858286016143c9565b925050602061463d858286016145f2565b9150509250929050565b600060ff82169050919050565b61465d81614647565b82525050565b60006020820190506146786000830184614654565b92915050565b614687816143a0565b82525050565b60006020820190506146a2600083018461467e565b92915050565b6000806000606084860312156146c1576146c061417f565b5b60006146cf868287016143ff565b93505060206146e0868287016143ff565b92505060406146f1868287016143ff565b9150509250925092565b6000602082840312156147115761471061417f565b5b600061471f848285016145f2565b91505092915050565b6000806040838503121561473f5761473e61417f565b5b600061474d858286016143c9565b925050602061475e858286016143c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061479e6020836142d0565b91506147a982614768565b602082019050919050565b600060208201905081810360008301526147cd81614791565b9050919050565b7f69646b3a20526563697069656e747320616e6420616d6f756e7473206172726160008201527f79206c656e677468206d69736d61746368000000000000000000000000000000602082015250565b60006148306031836142d0565b915061483b826147d4565b604082019050919050565b6000602082019050818103600083015261485f81614823565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148cf826143de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561490257614901614895565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061495457607f821691505b602082108114156149685761496761490d565b5b50919050565b6000614979826143de565b9150614984836143de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149bd576149bc614895565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a02826143de565b9150614a0d836143de565b925082614a1d57614a1c6149c8565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614a84602f836142d0565b9150614a8f82614a28565b604082019050919050565b60006020820190508181036000830152614ab381614a77565b9050919050565b6000614ac5826143de565b9150614ad0836143de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b0557614b04614895565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b6c6039836142d0565b9150614b7782614b10565b604082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614bfe6024836142d0565b9150614c0982614ba2565b604082019050919050565b60006020820190508181036000830152614c2d81614bf1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c906035836142d0565b9150614c9b82614c34565b604082019050919050565b60006020820190508181036000830152614cbf81614c83565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614d226034836142d0565b9150614d2d82614cc6565b604082019050919050565b60006020820190508181036000830152614d5181614d15565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614db46026836142d0565b9150614dbf82614d58565b604082019050919050565b60006020820190508181036000830152614de381614da7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e20601b836142d0565b9150614e2b82614dea565b602082019050919050565b60006020820190508181036000830152614e4f81614e13565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614eb26025836142d0565b9150614ebd82614e56565b604082019050919050565b60006020820190508181036000830152614ee181614ea5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f446023836142d0565b9150614f4f82614ee8565b604082019050919050565b60006020820190508181036000830152614f7381614f37565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614fd66031836142d0565b9150614fe182614f7a565b604082019050919050565b6000602082019050818103600083015261500581614fc9565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150426016836142d0565b915061504d8261500c565b602082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006150fa6049836142d0565b915061510582615078565b606082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061518c6035836142d0565b915061519782615130565b604082019050919050565b600060208201905081810360008301526151bb8161517f565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006151f86013836142d0565b9150615203826151c2565b602082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061528a6036836142d0565b91506152958261522e565b604082019050919050565b600060208201905081810360008301526152b98161527d565b9050919050565b60006152cb826143de565b91506152d6836143de565b9250828210156152e9576152e8614895565b5b828203905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006153506024836142d0565b915061535b826152f4565b604082019050919050565b6000602082019050818103600083015261537f81615343565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153e26022836142d0565b91506153ed82615386565b604082019050919050565b60006020820190508181036000830152615411816153d5565b9050919050565b600081905092915050565b50565b6000615433600083615418565b915061543e82615423565b600082019050919050565b600061545482615426565b9150819050919050565b60006060820190506154736000830186614531565b6154806020830185614531565b61548d6040830184614531565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006154f16021836142d0565b91506154fc82615495565b604082019050919050565b60006020820190508181036000830152615520816154e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615565816143b2565b92915050565b6000602082840312156155815761558061417f565b5b600061558f84828501615556565b91505092915050565b6000819050919050565b60006155bd6155b86155b384615598565b6144b7565b6143de565b9050919050565b6155cd816155a2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615608816143a0565b82525050565b600061561a83836155ff565b60208301905092915050565b6000602082019050919050565b600061563e826155d3565b61564881856155de565b9350615653836155ef565b8060005b8381101561568457815161566b888261560e565b975061567683615626565b925050600181019050615657565b5085935050505092915050565b600060a0820190506156a66000830188614531565b6156b360208301876155c4565b81810360408301526156c58186615633565b90506156d4606083018561467e565b6156e16080830184614531565b9695505050505050565b600060c082019050615700600083018961467e565b61570d6020830188614531565b61571a60408301876155c4565b61572760608301866155c4565b615734608083018561467e565b61574160a0830184614531565b979650505050505050565b60008151905061575b816143e8565b92915050565b60008060006060848603121561577a5761577961417f565b5b60006157888682870161574c565b93505060206157998682870161574c565b92505060406157aa8682870161574c565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122022c8ae73e8a73db1f94edf420b6c700d4095ffe571719cb60175722a1b4f780d64736f6c634300080b0033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638da5cb5b116101ab578063c0246668116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610beb578063f2fde38b14610c16578063f637434214610c3f578063f8b45b0514610c6a57610325565b8063dd62ed3e14610b58578063e2f4560514610b95578063e884f26014610bc057610325565b8063c876d0b9116100d1578063c876d0b914610a9a578063c8c8ebe414610ac5578063d257b34f14610af0578063d85ba06314610b2d57610325565b8063c024666814610a1f578063c17b5b8c14610a48578063c18bc19514610a7157610325565b80639fccce3211610164578063a9059cbb1161013e578063a9059cbb14610951578063aacebbe31461098e578063b62496f5146109b7578063bbc0c742146109f457610325565b80639fccce32146108be578063a0d82dc5146108e9578063a457c2d71461091457610325565b80638da5cb5b146107c057806392136913146107eb578063924de9b71461081657806395d89b411461083f5780639a7a23d61461086a5780639c3b4fdc1461089357610325565b8063395093511161026a57806370a08231116102235780637571336a116101fd5780637571336a1461072c5780637bce5a04146107555780638095d564146107805780638a8c523c146107a957610325565b806370a08231146106ad578063715018a6146106ea578063751039fc1461070157610325565b8063395093511461058757806349bd5a5e146105c45780634a62bb65146105ef5780634fbee1931461061a5780636a486a8e146106575780636ddd17131461068257610325565b80631816467f116102d7578063203e727e116102b1578063203e727e146104cd57806323b872dd146104f65780632d5a5d3414610533578063313ce5671461055c57610325565b80631816467f1461044e5780631a8145bb146104775780631f3fed8f146104a257610325565b806302af20951461032a57806306fdde0314610353578063095ea7b31461037e57806310d5de53146103bb5780631694505e146103f857806318160ddd1461042357610325565b3661032557005b600080fd5b34801561033657600080fd5b50610351600480360381019061034c9190614244565b610c95565b005b34801561035f57600080fd5b50610368610dee565b604051610375919061435e565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190614414565b610e80565b6040516103b2919061446f565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd919061448a565b610e9e565b6040516103ef919061446f565b60405180910390f35b34801561040457600080fd5b5061040d610ebe565b60405161041a9190614516565b60405180910390f35b34801561042f57600080fd5b50610438610ee2565b6040516104459190614540565b60405180910390f35b34801561045a57600080fd5b506104756004803603810190610470919061448a565b610eec565b005b34801561048357600080fd5b5061048c611043565b6040516104999190614540565b60405180910390f35b3480156104ae57600080fd5b506104b7611049565b6040516104c49190614540565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef919061455b565b61104f565b005b34801561050257600080fd5b5061051d60048036038101906105189190614588565b611179565b60405161052a919061446f565b60405180910390f35b34801561053f57600080fd5b5061055a60048036038101906105559190614607565b611252565b005b34801561056857600080fd5b50610571611344565b60405161057e9190614663565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190614414565b61134d565b6040516105bb919061446f565b60405180910390f35b3480156105d057600080fd5b506105d9611400565b6040516105e6919061468d565b60405180910390f35b3480156105fb57600080fd5b50610604611424565b604051610611919061446f565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c919061448a565b611437565b60405161064e919061446f565b60405180910390f35b34801561066357600080fd5b5061066c61148d565b6040516106799190614540565b60405180910390f35b34801561068e57600080fd5b50610697611493565b6040516106a4919061446f565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf919061448a565b6114a6565b6040516106e19190614540565b60405180910390f35b3480156106f657600080fd5b506106ff6114ee565b005b34801561070d57600080fd5b50610716611646565b604051610723919061446f565b60405180910390f35b34801561073857600080fd5b50610753600480360381019061074e9190614607565b611701565b005b34801561076157600080fd5b5061076a6117f3565b6040516107779190614540565b60405180910390f35b34801561078c57600080fd5b506107a760048036038101906107a291906146a8565b6117f9565b005b3480156107b557600080fd5b506107be6118cd565b005b3480156107cc57600080fd5b506107d56119a3565b6040516107e2919061468d565b60405180910390f35b3480156107f757600080fd5b506108006119cd565b60405161080d9190614540565b60405180910390f35b34801561082257600080fd5b5061083d600480360381019061083891906146fb565b6119d3565b005b34801561084b57600080fd5b50610854611a87565b604051610861919061435e565b60405180910390f35b34801561087657600080fd5b50610891600480360381019061088c9190614607565b611b19565b005b34801561089f57600080fd5b506108a8611c4d565b6040516108b59190614540565b60405180910390f35b3480156108ca57600080fd5b506108d3611c53565b6040516108e09190614540565b60405180910390f35b3480156108f557600080fd5b506108fe611c59565b60405161090b9190614540565b60405180910390f35b34801561092057600080fd5b5061093b60048036038101906109369190614414565b611c5f565b604051610948919061446f565b60405180910390f35b34801561095d57600080fd5b5061097860048036038101906109739190614414565b611d2c565b604051610985919061446f565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b0919061448a565b611d4a565b005b3480156109c357600080fd5b506109de60048036038101906109d9919061448a565b611ea1565b6040516109eb919061446f565b60405180910390f35b348015610a0057600080fd5b50610a09611ec1565b604051610a16919061446f565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190614607565b611ed4565b005b348015610a5457600080fd5b50610a6f6004803603810190610a6a91906146a8565b612014565b005b348015610a7d57600080fd5b50610a986004803603810190610a93919061455b565b6120e8565b005b348015610aa657600080fd5b50610aaf612212565b604051610abc919061446f565b60405180910390f35b348015610ad157600080fd5b50610ada612225565b604051610ae79190614540565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b12919061455b565b61222b565b604051610b24919061446f565b60405180910390f35b348015610b3957600080fd5b50610b4261239b565b604051610b4f9190614540565b60405180910390f35b348015610b6457600080fd5b50610b7f6004803603810190610b7a9190614728565b6123a1565b604051610b8c9190614540565b60405180910390f35b348015610ba157600080fd5b50610baa612428565b604051610bb79190614540565b60405180910390f35b348015610bcc57600080fd5b50610bd561242e565b604051610be2919061446f565b60405180910390f35b348015610bf757600080fd5b50610c006124e9565b604051610c0d9190614540565b60405180910390f35b348015610c2257600080fd5b50610c3d6004803603810190610c38919061448a565b6124ef565b005b348015610c4b57600080fd5b50610c546126b6565b604051610c619190614540565b60405180910390f35b348015610c7657600080fd5b50610c7f6126bc565b604051610c8c9190614540565b60405180910390f35b610c9d612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d23906147b4565b60405180910390fd5b818190508484905014610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90614846565b60405180910390fd5b60005b84849050811015610de757610dd4610d8d612720565b868684818110610da057610d9f614866565b5b9050602002016020810190610db5919061448a565b858585818110610dc857610dc7614866565b5b90506020020135612728565b8080610ddf906148c4565b915050610d77565b5050505050565b606060038054610dfd9061493c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e299061493c565b8015610e765780601f10610e4b57610100808354040283529160200191610e76565b820191906000526020600020905b815481529060010190602001808311610e5957829003601f168201915b5050505050905090565b6000610e94610e8d612720565b84846134a5565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610ef4612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a906147b4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b611057612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd906147b4565b60405180910390fd5b670de0b6b3a76400006103e860016110fc610ee2565b611106919061496e565b61111091906149f7565b61111a91906149f7565b81101561115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390614a9a565b60405180910390fd5b670de0b6b3a764000081611170919061496e565b60088190555050565b6000611186848484612728565b61124784611192612720565b611242856040518060600160405280602881526020016157db60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111f8612720565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136709092919063ffffffff16565b6134a5565b600190509392505050565b61125a612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e0906147b4565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60006113f661135a612720565b846113f1856001600061136b612720565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b6134a5565b6001905092915050565b7f000000000000000000000000cf698d319d50ddcc4ebf47c4333a391758d8325e81565b600b60009054906101000a900460ff1681565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f6612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906147b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611650612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d6906147b4565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611709612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f906147b4565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b611801612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611887906147b4565b60405180910390fd5b8260138190555081601281905550806011819055506011546012546013546118b89190614aba565b6118c29190614aba565b601081905550505050565b6118d5612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195b906147b4565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b6119db612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a61906147b4565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611a969061493c565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac29061493c565b8015611b0f5780601f10611ae457610100808354040283529160200191611b0f565b820191906000526020600020905b815481529060010190602001808311611af257829003601f168201915b5050505050905090565b611b21612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba7906147b4565b60405180910390fd5b7f000000000000000000000000cf698d319d50ddcc4ebf47c4333a391758d8325e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3690614b82565b60405180910390fd5b611c4982826136d4565b5050565b60135481565b601a5481565b60175481565b6000611d22611c6c612720565b84611d1d856040518060600160405280602581526020016158036025913960016000611c96612720565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136709092919063ffffffff16565b6134a5565b6001905092915050565b6000611d40611d39612720565b8484612728565b6001905092915050565b611d52612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd8906147b4565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611edc612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f62906147b4565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051612008919061446f565b60405180910390a25050565b61201c612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a2906147b4565b60405180910390fd5b8260178190555081601681905550806015819055506015546016546017546120d39190614aba565b6120dd9190614aba565b601481905550505050565b6120f0612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612176906147b4565b60405180910390fd5b670de0b6b3a76400006103e86005612195610ee2565b61219f919061496e565b6121a991906149f7565b6121b391906149f7565b8110156121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec90614c14565b60405180910390fd5b670de0b6b3a764000081612209919061496e565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b6000612235612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147b4565b60405180910390fd5b620186a060016122d2610ee2565b6122dc919061496e565b6122e691906149f7565b821015612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f90614ca6565b60405180910390fd5b6103e86005612335610ee2565b61233f919061496e565b61234991906149f7565b82111561238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238290614d38565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612438612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be906147b4565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b6124f7612720565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d906147b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156125f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ed90614dca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846126d19190614aba565b905083811015612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d90614e36565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278f90614ec8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff90614f5a565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128ac5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6128eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e290614fec565b60405180910390fd5b60008114156129055761290083836000613775565b6134a0565b600b60009054906101000a900460ff1615612fc8576129226119a3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561299057506129606119a3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129c95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a03575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1c5750600560149054906101000a900460ff16155b15612fc757600b60019054906101000a900460ff16612b1657601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ad65750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0c90615058565b60405180910390fd5b5b600f60009054906101000a900460ff1615612cde57612b336119a3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bba57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c1257507f000000000000000000000000cf698d319d50ddcc4ebf47c4333a391758d8325e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612cdd5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f90615110565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d815750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2857600854811115612dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc2906151a2565b60405180910390fd5b600a54612dd7836114a6565b82612de29190614aba565b1115612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a9061520e565b60405180910390fd5b612fc6565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ecb5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f1a57600854811115612f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0c906152a0565b60405180910390fd5b612fc5565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fc457600a54612f77836114a6565b82612f829190614aba565b1115612fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fba9061520e565b60405180910390fd5b5b5b5b5b5b6000612fd3306114a6565b905060006009548210159050808015612ff85750600b60029054906101000a900460ff165b80156130115750600560149054906101000a900460ff16155b80156130675750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130bd5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131135750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613157576001600560146101000a81548160ff02191690831515021790555061313b613a0a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061320d5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561321757600090505b6000811561349057601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327a57506000601454115b15613347576132a7606461329960145488613cf190919063ffffffff16565b613d6c90919063ffffffff16565b9050601454601654826132ba919061496e565b6132c491906149f7565b601960008282546132d59190614aba565b92505081905550601454601754826132ed919061496e565b6132f791906149f7565b601a60008282546133089190614aba565b9250508190555060145460155482613320919061496e565b61332a91906149f7565b6018600082825461333b9190614aba565b9250508190555061346c565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a257506000601054115b1561346b576133cf60646133c160105488613cf190919063ffffffff16565b613d6c90919063ffffffff16565b9050601054601254826133e2919061496e565b6133ec91906149f7565b601960008282546133fd9190614aba565b9250508190555060105460135482613415919061496e565b61341f91906149f7565b601a60008282546134309190614aba565b9250508190555060105460115482613448919061496e565b61345291906149f7565b601860008282546134639190614aba565b925050819055505b5b600081111561348157613480873083613775565b5b808561348d91906152c0565b94505b61349b878787613775565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350c90615366565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357c906153f8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516136639190614540565b60405180910390a3505050565b60008383111582906136b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136af919061435e565b60405180910390fd5b50600083856136c791906152c0565b9050809150509392505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137dc90614ec8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161384c90614f5a565b60405180910390fd5b613860838383613db6565b6138cb816040518060600160405280602681526020016157b5602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136709092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126c290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139fd9190614540565b60405180910390a3505050565b6000613a15306114a6565b90506000601a54601854601954613a2c9190614aba565b613a369190614aba565b9050600080831480613a485750600082145b15613a5557505050613cef565b6014600954613a64919061496e565b831115613a7d576014600954613a7a919061496e565b92505b600060028360195486613a90919061496e565b613a9a91906149f7565b613aa491906149f7565b90506000613abb8286613dbb90919063ffffffff16565b90506000479050613acb82613e05565b6000613ae08247613dbb90919063ffffffff16565b90506000613b0b87613afd60185485613cf190919063ffffffff16565b613d6c90919063ffffffff16565b90506000613b3688613b28601a5486613cf190919063ffffffff16565b613d6c90919063ffffffff16565b90506000818385613b4791906152c0565b613b5191906152c0565b9050600060198190555060006018819055506000601a81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613bb190615449565b60006040518083038185875af1925050503d8060008114613bee576040519150601f19603f3d011682016040523d82523d6000602084013e613bf3565b606091505b505080985050600087118015613c095750600081115b15613c5657613c188782614042565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601954604051613c4d9392919061545e565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c9c90615449565b60006040518083038185875af1925050503d8060008114613cd9576040519150601f19603f3d011682016040523d82523d6000602084013e613cde565b606091505b505080985050505050505050505050505b565b600080831415613d045760009050613d66565b60008284613d12919061496e565b9050828482613d2191906149f7565b14613d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5890615507565b60405180910390fd5b809150505b92915050565b6000613dae83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061411c565b905092915050565b505050565b6000613dfd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613670565b905092915050565b6000600267ffffffffffffffff811115613e2257613e21615527565b5b604051908082528060200260200182016040528015613e505781602001602082028036833780820191505090505b5090503081600081518110613e6857613e67614866565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f31919061556b565b81600181518110613f4557613f44614866565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613faa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846134a5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161400c959493929190615691565b600060405180830381600087803b15801561402657600080fd5b505af115801561403a573d6000803e3d6000fd5b505050505050565b61406d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846134a5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016140d2969594939291906156eb565b60606040518083038185885af11580156140f0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141159190615761565b5050505050565b60008083118290614163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161415a919061435e565b60405180910390fd5b506000838561417291906149f7565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126141ae576141ad614189565b5b8235905067ffffffffffffffff8111156141cb576141ca61418e565b5b6020830191508360208202830111156141e7576141e6614193565b5b9250929050565b60008083601f84011261420457614203614189565b5b8235905067ffffffffffffffff8111156142215761422061418e565b5b60208301915083602082028301111561423d5761423c614193565b5b9250929050565b6000806000806040858703121561425e5761425d61417f565b5b600085013567ffffffffffffffff81111561427c5761427b614184565b5b61428887828801614198565b9450945050602085013567ffffffffffffffff8111156142ab576142aa614184565b5b6142b7878288016141ee565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ff5780820151818401526020810190506142e4565b8381111561430e576000848401525b50505050565b6000601f19601f8301169050919050565b6000614330826142c5565b61433a81856142d0565b935061434a8185602086016142e1565b61435381614314565b840191505092915050565b600060208201905081810360008301526143788184614325565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143ab82614380565b9050919050565b6143bb816143a0565b81146143c657600080fd5b50565b6000813590506143d8816143b2565b92915050565b6000819050919050565b6143f1816143de565b81146143fc57600080fd5b50565b60008135905061440e816143e8565b92915050565b6000806040838503121561442b5761442a61417f565b5b6000614439858286016143c9565b925050602061444a858286016143ff565b9150509250929050565b60008115159050919050565b61446981614454565b82525050565b60006020820190506144846000830184614460565b92915050565b6000602082840312156144a05761449f61417f565b5b60006144ae848285016143c9565b91505092915050565b6000819050919050565b60006144dc6144d76144d284614380565b6144b7565b614380565b9050919050565b60006144ee826144c1565b9050919050565b6000614500826144e3565b9050919050565b614510816144f5565b82525050565b600060208201905061452b6000830184614507565b92915050565b61453a816143de565b82525050565b60006020820190506145556000830184614531565b92915050565b6000602082840312156145715761457061417f565b5b600061457f848285016143ff565b91505092915050565b6000806000606084860312156145a1576145a061417f565b5b60006145af868287016143c9565b93505060206145c0868287016143c9565b92505060406145d1868287016143ff565b9150509250925092565b6145e481614454565b81146145ef57600080fd5b50565b600081359050614601816145db565b92915050565b6000806040838503121561461e5761461d61417f565b5b600061462c858286016143c9565b925050602061463d858286016145f2565b9150509250929050565b600060ff82169050919050565b61465d81614647565b82525050565b60006020820190506146786000830184614654565b92915050565b614687816143a0565b82525050565b60006020820190506146a2600083018461467e565b92915050565b6000806000606084860312156146c1576146c061417f565b5b60006146cf868287016143ff565b93505060206146e0868287016143ff565b92505060406146f1868287016143ff565b9150509250925092565b6000602082840312156147115761471061417f565b5b600061471f848285016145f2565b91505092915050565b6000806040838503121561473f5761473e61417f565b5b600061474d858286016143c9565b925050602061475e858286016143c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061479e6020836142d0565b91506147a982614768565b602082019050919050565b600060208201905081810360008301526147cd81614791565b9050919050565b7f69646b3a20526563697069656e747320616e6420616d6f756e7473206172726160008201527f79206c656e677468206d69736d61746368000000000000000000000000000000602082015250565b60006148306031836142d0565b915061483b826147d4565b604082019050919050565b6000602082019050818103600083015261485f81614823565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148cf826143de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561490257614901614895565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061495457607f821691505b602082108114156149685761496761490d565b5b50919050565b6000614979826143de565b9150614984836143de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149bd576149bc614895565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a02826143de565b9150614a0d836143de565b925082614a1d57614a1c6149c8565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614a84602f836142d0565b9150614a8f82614a28565b604082019050919050565b60006020820190508181036000830152614ab381614a77565b9050919050565b6000614ac5826143de565b9150614ad0836143de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b0557614b04614895565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b6c6039836142d0565b9150614b7782614b10565b604082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614bfe6024836142d0565b9150614c0982614ba2565b604082019050919050565b60006020820190508181036000830152614c2d81614bf1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c906035836142d0565b9150614c9b82614c34565b604082019050919050565b60006020820190508181036000830152614cbf81614c83565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614d226034836142d0565b9150614d2d82614cc6565b604082019050919050565b60006020820190508181036000830152614d5181614d15565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614db46026836142d0565b9150614dbf82614d58565b604082019050919050565b60006020820190508181036000830152614de381614da7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e20601b836142d0565b9150614e2b82614dea565b602082019050919050565b60006020820190508181036000830152614e4f81614e13565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614eb26025836142d0565b9150614ebd82614e56565b604082019050919050565b60006020820190508181036000830152614ee181614ea5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614f446023836142d0565b9150614f4f82614ee8565b604082019050919050565b60006020820190508181036000830152614f7381614f37565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614fd66031836142d0565b9150614fe182614f7a565b604082019050919050565b6000602082019050818103600083015261500581614fc9565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150426016836142d0565b915061504d8261500c565b602082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006150fa6049836142d0565b915061510582615078565b606082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061518c6035836142d0565b915061519782615130565b604082019050919050565b600060208201905081810360008301526151bb8161517f565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006151f86013836142d0565b9150615203826151c2565b602082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061528a6036836142d0565b91506152958261522e565b604082019050919050565b600060208201905081810360008301526152b98161527d565b9050919050565b60006152cb826143de565b91506152d6836143de565b9250828210156152e9576152e8614895565b5b828203905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006153506024836142d0565b915061535b826152f4565b604082019050919050565b6000602082019050818103600083015261537f81615343565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006153e26022836142d0565b91506153ed82615386565b604082019050919050565b60006020820190508181036000830152615411816153d5565b9050919050565b600081905092915050565b50565b6000615433600083615418565b915061543e82615423565b600082019050919050565b600061545482615426565b9150819050919050565b60006060820190506154736000830186614531565b6154806020830185614531565b61548d6040830184614531565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006154f16021836142d0565b91506154fc82615495565b604082019050919050565b60006020820190508181036000830152615520816154e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615565816143b2565b92915050565b6000602082840312156155815761558061417f565b5b600061558f84828501615556565b91505092915050565b6000819050919050565b60006155bd6155b86155b384615598565b6144b7565b6143de565b9050919050565b6155cd816155a2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615608816143a0565b82525050565b600061561a83836155ff565b60208301905092915050565b6000602082019050919050565b600061563e826155d3565b61564881856155de565b9350615653836155ef565b8060005b8381101561568457815161566b888261560e565b975061567683615626565b925050600181019050615657565b5085935050505092915050565b600060a0820190506156a66000830188614531565b6156b360208301876155c4565b81810360408301526156c58186615633565b90506156d4606083018561467e565b6156e16080830184614531565b9695505050505050565b600060c082019050615700600083018961467e565b61570d6020830188614531565b61571a60408301876155c4565b61572760608301866155c4565b615734608083018561467e565b61574160a0830184614531565b979650505050505050565b60008151905061575b816143e8565b92915050565b60008060006060848603121561577a5761577961417f565b5b60006157888682870161574c565b93505060206157998682870161574c565b92505060406157aa8682870161574c565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122022c8ae73e8a73db1f94edf420b6c700d4095ffe571719cb60175722a1b4f780d64736f6c634300080b0033

Deployed Bytecode Sourcemap

17605:15885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33134:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4803:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5717:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19135:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17680:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5124:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25968:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18849:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18809;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23458:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5894:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25155:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5023:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6257:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17738:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18006:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26137:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18663:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18086:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5240:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10778:148;;;;;;;;;;;;;:::i;:::-;;22675:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23925:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18555:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24077:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22474:148;;;;;;;;;;;;;:::i;:::-;;10564:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18698:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24854:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4911:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25299:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18629:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18889:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18774:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6483:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5375:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25751:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19358:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18046:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24964:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24417:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23701:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18472:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17890:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23063:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18521:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5558:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17932:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22857:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18592:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10934:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18736:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17972:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33134:353;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33274:7:::1;;:14;;33253:10;;:17;;:35;33245:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;33360:9;33355:125;33379:10;;:17;;33375:1;:21;33355:125;;;33418:50;33428:12;:10;:12::i;:::-;33442:10;;33453:1;33442:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;33457:7;;33465:1;33457:10;;;;;;;:::i;:::-;;;;;;;;33418:9;:50::i;:::-;33398:3;;;;;:::i;:::-;;;;33355:125;;;;33134:353:::0;;;;:::o;4803:100::-;4857:13;4890:5;4883:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:100;:::o;5717:169::-;5800:4;5817:39;5826:12;:10;:12::i;:::-;5840:7;5849:6;5817:8;:39::i;:::-;5874:4;5867:11;;5717:169;;;;:::o;19135:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17680:51::-;;;:::o;5124:108::-;5185:7;5212:12;;5205:19;;5124:108;:::o;25968:157::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26075:9:::1;;;;;;;;;;;26047:38;;26064:9;26047:38;;;;;;;;;;;;26108:9;26096;;:21;;;;;;;;;;;;;;;;;;25968:157:::0;:::o;18849:33::-;;;;:::o;18809:::-;;;;:::o;23458:234::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23577:4:::1;23571;23567:1;23551:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23550:31;;;;:::i;:::-;23540:6;:41;;23532:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;23677:6;23667;:17;;;;:::i;:::-;23644:20;:40;;;;23458:234:::0;:::o;5894:355::-;6034:4;6051:36;6061:6;6069:9;6080:6;6051:9;:36::i;:::-;6098:121;6107:6;6115:12;:10;:12::i;:::-;6129:89;6167:6;6129:89;;;;;;;;;;;;;;;;;:11;:19;6141:6;6129:19;;;;;;;;;;;;;;;:33;6149:12;:10;:12::i;:::-;6129:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6098:8;:121::i;:::-;6237:4;6230:11;;5894:355;;;;;:::o;25155:135::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25269:13:::1;25247:10;:19;25258:7;25247:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;25155:135:::0;;:::o;5023:93::-;5081:5;5106:2;5099:9;;5023:93;:::o;6257:218::-;6345:4;6362:83;6371:12;:10;:12::i;:::-;6385:7;6394:50;6433:10;6394:11;:25;6406:12;:10;:12::i;:::-;6394:25;;;;;;;;;;;;;;;:34;6420:7;6394:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6362:8;:83::i;:::-;6463:4;6456:11;;6257:218;;;;:::o;17738:38::-;;;:::o;18006:33::-;;;;;;;;;;;;;:::o;26137:125::-;26202:4;26226:19;:28;26246:7;26226:28;;;;;;;;;;;;;;;;;;;;;;;;;26219:35;;26137:125;;;:::o;18663:28::-;;;;:::o;18086:31::-;;;;;;;;;;;;;:::o;5240:127::-;5314:7;5341:9;:18;5351:7;5341:18;;;;;;;;;;;;;;;;5334:25;;5240:127;;;:::o;10778:148::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10885:1:::1;10848:40;;10869:6;;;;;;;;;;;10848:40;;;;;;;;;;;;10916:1;10899:6;;:19;;;;;;;;;;;;;;;;;;10778:148::o:0;22675:120::-;22727:4;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22760:5:::1;22743:14;;:22;;;;;;;;;;;;;;;;;;22783:4;22776:11;;22675:120:::0;:::o;23925:144::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24057:4:::1;24015:31;:39;24047:6;24015:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23925:144:::0;;:::o;18555:30::-;;;;:::o;24077:332::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24239:7:::1;24227:9;:19;;;;24275:13;24257:15;:31;;;;24317:13;24299:15;:31;;;;24386:15;;24368;;24356:9;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;24341:12;:60;;;;24077:332:::0;;;:::o;22474:148::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22545:4:::1;22529:13;;:20;;;;;;;;;;;;;;;;;;22574:4;22560:11;;:18;;;;;;;;;;;;;;;;;;22602:12;22589:10;:25;;;;22474:148::o:0;10564:79::-;10602:7;10629:6;;;;;;;;;;;10622:13;;10564:79;:::o;18698:31::-;;;;:::o;24854:101::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24940:7:::1;24926:11;;:21;;;;;;;;;;;;;;;;;;24854:101:::0;:::o;4911:104::-;4967:13;5000:7;4993:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4911:104;:::o;25299:245::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25406:13:::1;25398:21;;:4;:21;;;;25390:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25495:41;25524:4;25530:5;25495:28;:41::i;:::-;25299:245:::0;;:::o;18629:24::-;;;;:::o;18889:27::-;;;;:::o;18774:25::-;;;;:::o;6483:269::-;6576:4;6593:129;6602:12;:10;:12::i;:::-;6616:7;6625:96;6664:15;6625:96;;;;;;;;;;;;;;;;;:11;:25;6637:12;:10;:12::i;:::-;6625:25;;;;;;;;;;;;;;;:34;6651:7;6625:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6593:8;:129::i;:::-;6740:4;6733:11;;6483:269;;;;:::o;5375:175::-;5461:4;5478:42;5488:12;:10;:12::i;:::-;5502:9;5513:6;5478:9;:42::i;:::-;5538:4;5531:11;;5375:175;;;;:::o;25751:208::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25888:15:::1;;;;;;;;;;;25845:59;;25868:18;25845:59;;;;;;;;;;;;25933:18;25915:15;;:36;;;;;;;;;;;;;;;;;;25751:208:::0;:::o;19358:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18046:33::-;;;;;;;;;;;;;:::o;24964:182::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25080:8:::1;25049:19;:28;25069:7;25049:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25120:7;25104:34;;;25129:8;25104:34;;;;;;:::i;:::-;;;;;;;;24964:182:::0;;:::o;24417:340::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24581:7:::1;24568:10;:20;;;;24618:13;24599:16;:32;;;;24661:13;24642:16;:32;;;;24733:16;;24714;;24701:10;;:29;;;;:::i;:::-;:48;;;;:::i;:::-;24685:13;:64;;;;24417:340:::0;;;:::o;23701:215::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23823:4:::1;23817;23813:1;23797:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23796:31;;;;:::i;:::-;23786:6;:41;;23778:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23901:6;23891;:17;;;;:::i;:::-;23879:9;:29;;;;23701:215:::0;:::o;18472:39::-;;;;;;;;;;;;;:::o;17890:35::-;;;;:::o;23063:386::-;23144:4;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23201:6:::1;23197:1;23181:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;23168:9;:39;;23160:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;23317:4;23313:1;23297:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23284:9;:37;;23276:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;23410:9;23389:18;:30;;;;23437:4;23430:11;;23063:386:::0;;;:::o;18521:27::-;;;;:::o;5558:151::-;5647:7;5674:11;:18;5686:5;5674:18;;;;;;;;;;;;;;;:27;5693:7;5674:27;;;;;;;;;;;;;;;;5667:34;;5558:151;;;;:::o;17932:33::-;;;;:::o;22857:134::-;22917:4;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22956:5:::1;22933:20;;:28;;;;;;;;;;;;;;;;;;22979:4;22972:11;;22857:134:::0;:::o;18592:30::-;;;;:::o;10934:244::-;10701:12;:10;:12::i;:::-;10691:22;;:6;;;;;;;;;;;:22;;;10683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11043:1:::1;11023:22;;:8;:22;;;;11015:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11133:8;11104:38;;11125:6;;;;;;;;;;;11104:38;;;;;;;;;;;;11162:8;11153:6;;:17;;;;;;;;;;;;;;;;;;10934:244:::0;:::o;18736:31::-;;;;:::o;17972:24::-;;;;:::o;8707:182::-;8765:7;8785:9;8801:1;8797;:5;;;;:::i;:::-;8785:17;;8826:1;8821;:6;;8813:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8880:1;8873:8;;;8707:182;;;;:::o;156:98::-;209:7;236:10;229:17;;156:98;:::o;26271:4145::-;26419:1;26403:18;;:4;:18;;;;26395:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26496:1;26482:16;;:2;:16;;;;26474:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26558:10;:14;26569:2;26558:14;;;;;;;;;;;;;;;;;;;;;;;;;26557:15;:36;;;;;26577:10;:16;26588:4;26577:16;;;;;;;;;;;;;;;;;;;;;;;;;26576:17;26557:36;26549:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;26672:1;26662:6;:11;26659:92;;;26690:28;26706:4;26712:2;26716:1;26690:15;:28::i;:::-;26733:7;;26659:92;26767:14;;;;;;;;;;;26764:1811;;;26827:7;:5;:7::i;:::-;26819:15;;:4;:15;;;;:49;;;;;26861:7;:5;:7::i;:::-;26855:13;;:2;:13;;;;26819:49;:86;;;;;26903:1;26889:16;;:2;:16;;;;26819:86;:128;;;;;26940:6;26926:21;;:2;:21;;;;26819:128;:158;;;;;26969:8;;;;;;;;;;;26968:9;26819:158;26797:1767;;;27015:13;;;;;;;;;;;27011:148;;27060:19;:25;27080:4;27060:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27089:19;:23;27109:2;27089:23;;;;;;;;;;;;;;;;;;;;;;;;;27060:52;27052:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27011:148;27318:20;;;;;;;;;;;27314:423;;;27372:7;:5;:7::i;:::-;27366:13;;:2;:13;;;;:47;;;;;27397:15;27383:30;;:2;:30;;;;27366:47;:79;;;;;27431:13;27417:28;;:2;:28;;;;27366:79;27362:356;;;27523:12;27481:28;:39;27510:9;27481:39;;;;;;;;;;;;;;;;:54;27473:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27682:12;27640:28;:39;27669:9;27640:39;;;;;;;;;;;;;;;:54;;;;27362:356;27314:423;27790:25;:31;27816:4;27790:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27826:31;:35;27858:2;27826:35;;;;;;;;;;;;;;;;;;;;;;;;;27825:36;27790:71;27786:763;;;27908:20;;27898:6;:30;;27890:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;28047:9;;28030:13;28040:2;28030:9;:13::i;:::-;28021:6;:22;;;;:::i;:::-;:35;;28013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27786:763;;;28159:25;:29;28185:2;28159:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28193:31;:37;28225:4;28193:37;;;;;;;;;;;;;;;;;;;;;;;;;28192:38;28159:71;28155:394;;;28277:20;;28267:6;:30;;28259:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;28155:394;;;28403:31;:35;28435:2;28403:35;;;;;;;;;;;;;;;;;;;;;;;;;28399:150;;28496:9;;28479:13;28489:2;28479:9;:13::i;:::-;28470:6;:22;;;;:::i;:::-;:35;;28462:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28399:150;28155:394;27786:763;26797:1767;26764:1811;28588:28;28619:24;28637:4;28619:9;:24::i;:::-;28588:55;;28657:12;28696:18;;28672:20;:42;;28657:57;;28746:7;:35;;;;;28770:11;;;;;;;;;;;28746:35;:61;;;;;28799:8;;;;;;;;;;;28798:9;28746:61;:110;;;;;28825:25;:31;28851:4;28825:31;;;;;;;;;;;;;;;;;;;;;;;;;28824:32;28746:110;:153;;;;;28874:19;:25;28894:4;28874:25;;;;;;;;;;;;;;;;;;;;;;;;;28873:26;28746:153;:194;;;;;28917:19;:23;28937:2;28917:23;;;;;;;;;;;;;;;;;;;;;;;;;28916:24;28746:194;28728:328;;;28978:4;28967:8;;:15;;;;;;;;;;;;;;;;;;29000:10;:8;:10::i;:::-;29039:5;29028:8;;:16;;;;;;;;;;;;;;;;;;28728:328;29069:12;29085:8;;;;;;;;;;;29084:9;29069:24;;29195:19;:25;29215:4;29195:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29224:19;:23;29244:2;29224:23;;;;;;;;;;;;;;;;;;;;;;;;;29195:52;29192:99;;;29274:5;29264:15;;29192:99;29304:12;29408:7;29405:957;;;29459:25;:29;29485:2;29459:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29508:1;29492:13;;:17;29459:50;29455:754;;;29536:34;29566:3;29536:25;29547:13;;29536:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29529:41;;29637:13;;29618:16;;29611:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;29589:18;;:61;;;;;;;:::i;:::-;;;;;;;;29705:13;;29692:10;;29685:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;29669:12;;:49;;;;;;;:::i;:::-;;;;;;;;29785:13;;29766:16;;29759:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;29737:18;;:61;;;;;;;:::i;:::-;;;;;;;;29455:754;;;29859:25;:31;29885:4;29859:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29909:1;29894:12;;:16;29859:51;29856:353;;;29938:33;29967:3;29938:24;29949:12;;29938:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29931:40;;30037:12;;30019:15;;30012:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;29990:18;;:59;;;;;;;:::i;:::-;;;;;;;;30103:12;;30091:9;;30084:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;30068:12;;:47;;;;;;;:::i;:::-;;;;;;;;30181:12;;30163:15;;30156:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30134:18;;:59;;;;;;;:::i;:::-;;;;;;;;29856:353;29455:754;30236:1;30229:4;:8;30226:93;;;30261:42;30277:4;30291;30298;30261:15;:42::i;:::-;30226:93;30346:4;30336:14;;;;;:::i;:::-;;;29405:957;30375:33;30391:4;30397:2;30401:6;30375:15;:33::i;:::-;26384:4032;;;;26271:4145;;;;:::o;8159:381::-;8312:1;8295:19;;:5;:19;;;;8287:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8393:1;8374:21;;:7;:21;;;;8366:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8478:6;8448:11;:18;8460:5;8448:18;;;;;;;;;;;;;;;:27;8467:7;8448:27;;;;;;;;;;;;;;;:36;;;;8516:7;8500:32;;8509:5;8500:32;;;8525:6;8500:32;;;;;;:::i;:::-;;;;;;;;8159:381;;;:::o;9041:193::-;9127:7;9160:1;9155;:6;;9163:12;9147:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9187:9;9203:1;9199;:5;;;;:::i;:::-;9187:17;;9225:1;9218:8;;;9041:193;;;;;:::o;25553:189::-;25670:5;25636:25;:31;25662:4;25636:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25728:5;25694:40;;25722:4;25694:40;;;;;;;;;;;;25553:189;;:::o;6760:575::-;6918:1;6900:20;;:6;:20;;;;6892:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7002:1;6981:23;;:9;:23;;;;6973:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7058:47;7079:6;7087:9;7098:6;7058:20;:47::i;:::-;7139:71;7161:6;7139:71;;;;;;;;;;;;;;;;;:9;:17;7149:6;7139:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7119:9;:17;7129:6;7119:17;;;;;;;;;;;;;;;:91;;;;7244:32;7269:6;7244:9;:20;7254:9;7244:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7221:9;:20;7231:9;7221:20;;;;;;;;;;;;;;;:55;;;;7309:9;7292:35;;7301:6;7292:35;;;7320:6;7292:35;;;;;;:::i;:::-;;;;;;;;6760:575;;;:::o;31560:1568::-;31599:23;31625:24;31643:4;31625:9;:24::i;:::-;31599:50;;31660:25;31730:12;;31709:18;;31688;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;31660:82;;31753:12;31801:1;31782:15;:20;:46;;;;31827:1;31806:17;:22;31782:46;31779:60;;;31831:7;;;;;31779:60;31894:2;31873:18;;:23;;;;:::i;:::-;31855:15;:41;31852:111;;;31949:2;31928:18;;:23;;;;:::i;:::-;31910:41;;31852:111;32025:23;32110:1;32090:17;32069:18;;32051:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32025:86;;32122:26;32151:36;32171:15;32151;:19;;:36;;;;:::i;:::-;32122:65;;32201:25;32229:21;32201:49;;32264:36;32281:18;32264:16;:36::i;:::-;32315:18;32336:44;32362:17;32336:21;:25;;:44;;;;:::i;:::-;32315:65;;32394:23;32420:57;32459:17;32420:34;32435:18;;32420:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;32394:83;;32488:17;32508:51;32541:17;32508:28;32523:12;;32508:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;32488:71;;32570:23;32627:9;32609:15;32596:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;32570:66;;32674:1;32653:18;:22;;;;32707:1;32686:18;:22;;;;32734:1;32719:12;:16;;;;32770:9;;;;;;;;;;;32762:23;;32793:9;32762:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32749:58;;;;;32842:1;32824:15;:19;:42;;;;;32865:1;32847:15;:19;32824:42;32821:210;;;32882:46;32895:15;32912;32882:12;:46::i;:::-;32948:71;32963:18;32983:15;33000:18;;32948:71;;;;;;;;:::i;:::-;;;;;;;;32821:210;33065:15;;;;;;;;;;;33057:29;;33094:21;33057:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33044:76;;;;;31588:1540;;;;;;;;;;31560:1568;:::o;9242:254::-;9300:7;9331:1;9326;:6;9322:47;;;9356:1;9349:8;;;;9322:47;9382:9;9398:1;9394;:5;;;;:::i;:::-;9382:17;;9427:1;9422;9418;:5;;;;:::i;:::-;:10;9410:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9487:1;9480:8;;;9242:254;;;;;:::o;9504:132::-;9562:7;9589:39;9593:1;9596;9589:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9582:46;;9504:132;;;;:::o;8548:125::-;;;;:::o;8897:136::-;8955:7;8982:43;8986:1;8989;8982:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8975:50;;8897:136;;;;:::o;30425:597::-;30554:21;30592:1;30578:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30554:40;;30623:4;30605;30610:1;30605:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30649:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30639:4;30644:1;30639:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30685:62;30702:4;30717:15;30735:11;30685:8;:62::i;:::-;30787:15;:66;;;30868:11;30894:1;30938:4;30965;30985:15;30787:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30480:542;30425:597;:::o;31031:520::-;31179:62;31196:4;31211:15;31229:11;31179:8;:62::i;:::-;31285:15;:31;;;31324:9;31357:4;31377:11;31403:1;31446;31497:4;31517:15;31285:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31031:520;;:::o;9644:279::-;9730:7;9762:1;9758;:5;9765:12;9750:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9789:9;9805:1;9801;:5;;;;:::i;:::-;9789:17;;9914:1;9907:8;;;9644:279;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1311:::-;1384:8;1394:6;1444:3;1437:4;1429:6;1425:17;1421:27;1411:122;;1452:79;;:::i;:::-;1411:122;1565:6;1552:20;1542:30;;1595:18;1587:6;1584:30;1581:117;;;1617:79;;:::i;:::-;1581:117;1731:4;1723:6;1719:17;1707:29;;1785:3;1777:4;1769:6;1765:17;1755:8;1751:32;1748:41;1745:128;;;1792:79;;:::i;:::-;1745:128;1311:568;;;;;:::o;1885:934::-;2007:6;2015;2023;2031;2080:2;2068:9;2059:7;2055:23;2051:32;2048:119;;;2086:79;;:::i;:::-;2048:119;2234:1;2223:9;2219:17;2206:31;2264:18;2256:6;2253:30;2250:117;;;2286:79;;:::i;:::-;2250:117;2399:80;2471:7;2462:6;2451:9;2447:22;2399:80;:::i;:::-;2381:98;;;;2177:312;2556:2;2545:9;2541:18;2528:32;2587:18;2579:6;2576:30;2573:117;;;2609:79;;:::i;:::-;2573:117;2722:80;2794:7;2785:6;2774:9;2770:22;2722:80;:::i;:::-;2704:98;;;;2499:313;1885:934;;;;;;;:::o;2825:99::-;2877:6;2911:5;2905:12;2895:22;;2825:99;;;:::o;2930:169::-;3014:11;3048:6;3043:3;3036:19;3088:4;3083:3;3079:14;3064:29;;2930:169;;;;:::o;3105:307::-;3173:1;3183:113;3197:6;3194:1;3191:13;3183:113;;;3282:1;3277:3;3273:11;3267:18;3263:1;3258:3;3254:11;3247:39;3219:2;3216:1;3212:10;3207:15;;3183:113;;;3314:6;3311:1;3308:13;3305:101;;;3394:1;3385:6;3380:3;3376:16;3369:27;3305:101;3154:258;3105:307;;;:::o;3418:102::-;3459:6;3510:2;3506:7;3501:2;3494:5;3490:14;3486:28;3476:38;;3418:102;;;:::o;3526:364::-;3614:3;3642:39;3675:5;3642:39;:::i;:::-;3697:71;3761:6;3756:3;3697:71;:::i;:::-;3690:78;;3777:52;3822:6;3817:3;3810:4;3803:5;3799:16;3777:52;:::i;:::-;3854:29;3876:6;3854:29;:::i;:::-;3849:3;3845:39;3838:46;;3618:272;3526:364;;;;:::o;3896:313::-;4009:4;4047:2;4036:9;4032:18;4024:26;;4096:9;4090:4;4086:20;4082:1;4071:9;4067:17;4060:47;4124:78;4197:4;4188:6;4124:78;:::i;:::-;4116:86;;3896:313;;;;:::o;4215:126::-;4252:7;4292:42;4285:5;4281:54;4270:65;;4215:126;;;:::o;4347:96::-;4384:7;4413:24;4431:5;4413:24;:::i;:::-;4402:35;;4347:96;;;:::o;4449:122::-;4522:24;4540:5;4522:24;:::i;:::-;4515:5;4512:35;4502:63;;4561:1;4558;4551:12;4502:63;4449:122;:::o;4577:139::-;4623:5;4661:6;4648:20;4639:29;;4677:33;4704:5;4677:33;:::i;:::-;4577:139;;;;:::o;4722:77::-;4759:7;4788:5;4777:16;;4722:77;;;:::o;4805:122::-;4878:24;4896:5;4878:24;:::i;:::-;4871:5;4868:35;4858:63;;4917:1;4914;4907:12;4858:63;4805:122;:::o;4933:139::-;4979:5;5017:6;5004:20;4995:29;;5033:33;5060:5;5033:33;:::i;:::-;4933:139;;;;:::o;5078:474::-;5146:6;5154;5203:2;5191:9;5182:7;5178:23;5174:32;5171:119;;;5209:79;;:::i;:::-;5171:119;5329:1;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5300:117;5456:2;5482:53;5527:7;5518:6;5507:9;5503:22;5482:53;:::i;:::-;5472:63;;5427:118;5078:474;;;;;:::o;5558:90::-;5592:7;5635:5;5628:13;5621:21;5610:32;;5558:90;;;:::o;5654:109::-;5735:21;5750:5;5735:21;:::i;:::-;5730:3;5723:34;5654:109;;:::o;5769:210::-;5856:4;5894:2;5883:9;5879:18;5871:26;;5907:65;5969:1;5958:9;5954:17;5945:6;5907:65;:::i;:::-;5769:210;;;;:::o;5985:329::-;6044:6;6093:2;6081:9;6072:7;6068:23;6064:32;6061:119;;;6099:79;;:::i;:::-;6061:119;6219:1;6244:53;6289:7;6280:6;6269:9;6265:22;6244:53;:::i;:::-;6234:63;;6190:117;5985:329;;;;:::o;6320:60::-;6348:3;6369:5;6362:12;;6320:60;;;:::o;6386:142::-;6436:9;6469:53;6487:34;6496:24;6514:5;6496:24;:::i;:::-;6487:34;:::i;:::-;6469:53;:::i;:::-;6456:66;;6386:142;;;:::o;6534:126::-;6584:9;6617:37;6648:5;6617:37;:::i;:::-;6604:50;;6534:126;;;:::o;6666:153::-;6743:9;6776:37;6807:5;6776:37;:::i;:::-;6763:50;;6666:153;;;:::o;6825:185::-;6939:64;6997:5;6939:64;:::i;:::-;6934:3;6927:77;6825:185;;:::o;7016:276::-;7136:4;7174:2;7163:9;7159:18;7151:26;;7187:98;7282:1;7271:9;7267:17;7258:6;7187:98;:::i;:::-;7016:276;;;;:::o;7298:118::-;7385:24;7403:5;7385:24;:::i;:::-;7380:3;7373:37;7298:118;;:::o;7422:222::-;7515:4;7553:2;7542:9;7538:18;7530:26;;7566:71;7634:1;7623:9;7619:17;7610:6;7566:71;:::i;:::-;7422:222;;;;:::o;7650:329::-;7709:6;7758:2;7746:9;7737:7;7733:23;7729:32;7726:119;;;7764:79;;:::i;:::-;7726:119;7884:1;7909:53;7954:7;7945:6;7934:9;7930:22;7909:53;:::i;:::-;7899:63;;7855:117;7650:329;;;;:::o;7985:619::-;8062:6;8070;8078;8127:2;8115:9;8106:7;8102:23;8098:32;8095:119;;;8133:79;;:::i;:::-;8095:119;8253:1;8278:53;8323:7;8314:6;8303:9;8299:22;8278:53;:::i;:::-;8268:63;;8224:117;8380:2;8406:53;8451:7;8442:6;8431:9;8427:22;8406:53;:::i;:::-;8396:63;;8351:118;8508:2;8534:53;8579:7;8570:6;8559:9;8555:22;8534:53;:::i;:::-;8524:63;;8479:118;7985:619;;;;;:::o;8610:116::-;8680:21;8695:5;8680:21;:::i;:::-;8673:5;8670:32;8660:60;;8716:1;8713;8706:12;8660:60;8610:116;:::o;8732:133::-;8775:5;8813:6;8800:20;8791:29;;8829:30;8853:5;8829:30;:::i;:::-;8732:133;;;;:::o;8871:468::-;8936:6;8944;8993:2;8981:9;8972:7;8968:23;8964:32;8961:119;;;8999:79;;:::i;:::-;8961:119;9119:1;9144:53;9189:7;9180:6;9169:9;9165:22;9144:53;:::i;:::-;9134:63;;9090:117;9246:2;9272:50;9314:7;9305:6;9294:9;9290:22;9272:50;:::i;:::-;9262:60;;9217:115;8871:468;;;;;:::o;9345:86::-;9380:7;9420:4;9413:5;9409:16;9398:27;;9345:86;;;:::o;9437:112::-;9520:22;9536:5;9520:22;:::i;:::-;9515:3;9508:35;9437:112;;:::o;9555:214::-;9644:4;9682:2;9671:9;9667:18;9659:26;;9695:67;9759:1;9748:9;9744:17;9735:6;9695:67;:::i;:::-;9555:214;;;;:::o;9775:118::-;9862:24;9880:5;9862:24;:::i;:::-;9857:3;9850:37;9775:118;;:::o;9899:222::-;9992:4;10030:2;10019:9;10015:18;10007:26;;10043:71;10111:1;10100:9;10096:17;10087:6;10043:71;:::i;:::-;9899:222;;;;:::o;10127:619::-;10204:6;10212;10220;10269:2;10257:9;10248:7;10244:23;10240:32;10237:119;;;10275:79;;:::i;:::-;10237:119;10395:1;10420:53;10465:7;10456:6;10445:9;10441:22;10420:53;:::i;:::-;10410:63;;10366:117;10522:2;10548:53;10593:7;10584:6;10573:9;10569:22;10548:53;:::i;:::-;10538:63;;10493:118;10650:2;10676:53;10721:7;10712:6;10701:9;10697:22;10676:53;:::i;:::-;10666:63;;10621:118;10127:619;;;;;:::o;10752:323::-;10808:6;10857:2;10845:9;10836:7;10832:23;10828:32;10825:119;;;10863:79;;:::i;:::-;10825:119;10983:1;11008:50;11050:7;11041:6;11030:9;11026:22;11008:50;:::i;:::-;10998:60;;10954:114;10752:323;;;;:::o;11081:474::-;11149:6;11157;11206:2;11194:9;11185:7;11181:23;11177:32;11174:119;;;11212:79;;:::i;:::-;11174:119;11332:1;11357:53;11402:7;11393:6;11382:9;11378:22;11357:53;:::i;:::-;11347:63;;11303:117;11459:2;11485:53;11530:7;11521:6;11510:9;11506:22;11485:53;:::i;:::-;11475:63;;11430:118;11081:474;;;;;:::o;11561:182::-;11701:34;11697:1;11689:6;11685:14;11678:58;11561:182;:::o;11749:366::-;11891:3;11912:67;11976:2;11971:3;11912:67;:::i;:::-;11905:74;;11988:93;12077:3;11988:93;:::i;:::-;12106:2;12101:3;12097:12;12090:19;;11749:366;;;:::o;12121:419::-;12287:4;12325:2;12314:9;12310:18;12302:26;;12374:9;12368:4;12364:20;12360:1;12349:9;12345:17;12338:47;12402:131;12528:4;12402:131;:::i;:::-;12394:139;;12121:419;;;:::o;12546:236::-;12686:34;12682:1;12674:6;12670:14;12663:58;12755:19;12750:2;12742:6;12738:15;12731:44;12546:236;:::o;12788:366::-;12930:3;12951:67;13015:2;13010:3;12951:67;:::i;:::-;12944:74;;13027:93;13116:3;13027:93;:::i;:::-;13145:2;13140:3;13136:12;13129:19;;12788:366;;;:::o;13160:419::-;13326:4;13364:2;13353:9;13349:18;13341:26;;13413:9;13407:4;13403:20;13399:1;13388:9;13384:17;13377:47;13441:131;13567:4;13441:131;:::i;:::-;13433:139;;13160:419;;;:::o;13585:180::-;13633:77;13630:1;13623:88;13730:4;13727:1;13720:15;13754:4;13751:1;13744:15;13771:180;13819:77;13816:1;13809:88;13916:4;13913:1;13906:15;13940:4;13937:1;13930:15;13957:233;13996:3;14019:24;14037:5;14019:24;:::i;:::-;14010:33;;14065:66;14058:5;14055:77;14052:103;;;14135:18;;:::i;:::-;14052:103;14182:1;14175:5;14171:13;14164:20;;13957:233;;;:::o;14196:180::-;14244:77;14241:1;14234:88;14341:4;14338:1;14331:15;14365:4;14362:1;14355:15;14382:320;14426:6;14463:1;14457:4;14453:12;14443:22;;14510:1;14504:4;14500:12;14531:18;14521:81;;14587:4;14579:6;14575:17;14565:27;;14521:81;14649:2;14641:6;14638:14;14618:18;14615:38;14612:84;;;14668:18;;:::i;:::-;14612:84;14433:269;14382:320;;;:::o;14708:348::-;14748:7;14771:20;14789:1;14771:20;:::i;:::-;14766:25;;14805:20;14823:1;14805:20;:::i;:::-;14800:25;;14993:1;14925:66;14921:74;14918:1;14915:81;14910:1;14903:9;14896:17;14892:105;14889:131;;;15000:18;;:::i;:::-;14889:131;15048:1;15045;15041:9;15030:20;;14708:348;;;;:::o;15062:180::-;15110:77;15107:1;15100:88;15207:4;15204:1;15197:15;15231:4;15228:1;15221:15;15248:185;15288:1;15305:20;15323:1;15305:20;:::i;:::-;15300:25;;15339:20;15357:1;15339:20;:::i;:::-;15334:25;;15378:1;15368:35;;15383:18;;:::i;:::-;15368:35;15425:1;15422;15418:9;15413:14;;15248:185;;;;:::o;15439:234::-;15579:34;15575:1;15567:6;15563:14;15556:58;15648:17;15643:2;15635:6;15631:15;15624:42;15439:234;:::o;15679:366::-;15821:3;15842:67;15906:2;15901:3;15842:67;:::i;:::-;15835:74;;15918:93;16007:3;15918:93;:::i;:::-;16036:2;16031:3;16027:12;16020:19;;15679:366;;;:::o;16051:419::-;16217:4;16255:2;16244:9;16240:18;16232:26;;16304:9;16298:4;16294:20;16290:1;16279:9;16275:17;16268:47;16332:131;16458:4;16332:131;:::i;:::-;16324:139;;16051:419;;;:::o;16476:305::-;16516:3;16535:20;16553:1;16535:20;:::i;:::-;16530:25;;16569:20;16587:1;16569:20;:::i;:::-;16564:25;;16723:1;16655:66;16651:74;16648:1;16645:81;16642:107;;;16729:18;;:::i;:::-;16642:107;16773:1;16770;16766:9;16759:16;;16476:305;;;;:::o;16787:244::-;16927:34;16923:1;16915:6;16911:14;16904:58;16996:27;16991:2;16983:6;16979:15;16972:52;16787:244;:::o;17037:366::-;17179:3;17200:67;17264:2;17259:3;17200:67;:::i;:::-;17193:74;;17276:93;17365:3;17276:93;:::i;:::-;17394:2;17389:3;17385:12;17378:19;;17037:366;;;:::o;17409:419::-;17575:4;17613:2;17602:9;17598:18;17590:26;;17662:9;17656:4;17652:20;17648:1;17637:9;17633:17;17626:47;17690:131;17816:4;17690:131;:::i;:::-;17682:139;;17409:419;;;:::o;17834:223::-;17974:34;17970:1;17962:6;17958:14;17951:58;18043:6;18038:2;18030:6;18026:15;18019:31;17834:223;:::o;18063:366::-;18205:3;18226:67;18290:2;18285:3;18226:67;:::i;:::-;18219:74;;18302:93;18391:3;18302:93;:::i;:::-;18420:2;18415:3;18411:12;18404:19;;18063:366;;;:::o;18435:419::-;18601:4;18639:2;18628:9;18624:18;18616:26;;18688:9;18682:4;18678:20;18674:1;18663:9;18659:17;18652:47;18716:131;18842:4;18716:131;:::i;:::-;18708:139;;18435:419;;;:::o;18860:240::-;19000:34;18996:1;18988:6;18984:14;18977:58;19069:23;19064:2;19056:6;19052:15;19045:48;18860:240;:::o;19106:366::-;19248:3;19269:67;19333:2;19328:3;19269:67;:::i;:::-;19262:74;;19345:93;19434:3;19345:93;:::i;:::-;19463:2;19458:3;19454:12;19447:19;;19106:366;;;:::o;19478:419::-;19644:4;19682:2;19671:9;19667:18;19659:26;;19731:9;19725:4;19721:20;19717:1;19706:9;19702:17;19695:47;19759:131;19885:4;19759:131;:::i;:::-;19751:139;;19478:419;;;:::o;19903:239::-;20043:34;20039:1;20031:6;20027:14;20020:58;20112:22;20107:2;20099:6;20095:15;20088:47;19903:239;:::o;20148:366::-;20290:3;20311:67;20375:2;20370:3;20311:67;:::i;:::-;20304:74;;20387:93;20476:3;20387:93;:::i;:::-;20505:2;20500:3;20496:12;20489:19;;20148:366;;;:::o;20520:419::-;20686:4;20724:2;20713:9;20709:18;20701:26;;20773:9;20767:4;20763:20;20759:1;20748:9;20744:17;20737:47;20801:131;20927:4;20801:131;:::i;:::-;20793:139;;20520:419;;;:::o;20945:225::-;21085:34;21081:1;21073:6;21069:14;21062:58;21154:8;21149:2;21141:6;21137:15;21130:33;20945:225;:::o;21176:366::-;21318:3;21339:67;21403:2;21398:3;21339:67;:::i;:::-;21332:74;;21415:93;21504:3;21415:93;:::i;:::-;21533:2;21528:3;21524:12;21517:19;;21176:366;;;:::o;21548:419::-;21714:4;21752:2;21741:9;21737:18;21729:26;;21801:9;21795:4;21791:20;21787:1;21776:9;21772:17;21765:47;21829:131;21955:4;21829:131;:::i;:::-;21821:139;;21548:419;;;:::o;21973:177::-;22113:29;22109:1;22101:6;22097:14;22090:53;21973:177;:::o;22156:366::-;22298:3;22319:67;22383:2;22378:3;22319:67;:::i;:::-;22312:74;;22395:93;22484:3;22395:93;:::i;:::-;22513:2;22508:3;22504:12;22497:19;;22156:366;;;:::o;22528:419::-;22694:4;22732:2;22721:9;22717:18;22709:26;;22781:9;22775:4;22771:20;22767:1;22756:9;22752:17;22745:47;22809:131;22935:4;22809:131;:::i;:::-;22801:139;;22528:419;;;:::o;22953:224::-;23093:34;23089:1;23081:6;23077:14;23070:58;23162:7;23157:2;23149:6;23145:15;23138:32;22953:224;:::o;23183:366::-;23325:3;23346:67;23410:2;23405:3;23346:67;:::i;:::-;23339:74;;23422:93;23511:3;23422:93;:::i;:::-;23540:2;23535:3;23531:12;23524:19;;23183:366;;;:::o;23555:419::-;23721:4;23759:2;23748:9;23744:18;23736:26;;23808:9;23802:4;23798:20;23794:1;23783:9;23779:17;23772:47;23836:131;23962:4;23836:131;:::i;:::-;23828:139;;23555:419;;;:::o;23980:222::-;24120:34;24116:1;24108:6;24104:14;24097:58;24189:5;24184:2;24176:6;24172:15;24165:30;23980:222;:::o;24208:366::-;24350:3;24371:67;24435:2;24430:3;24371:67;:::i;:::-;24364:74;;24447:93;24536:3;24447:93;:::i;:::-;24565:2;24560:3;24556:12;24549:19;;24208:366;;;:::o;24580:419::-;24746:4;24784:2;24773:9;24769:18;24761:26;;24833:9;24827:4;24823:20;24819:1;24808:9;24804:17;24797:47;24861:131;24987:4;24861:131;:::i;:::-;24853:139;;24580:419;;;:::o;25005:236::-;25145:34;25141:1;25133:6;25129:14;25122:58;25214:19;25209:2;25201:6;25197:15;25190:44;25005:236;:::o;25247:366::-;25389:3;25410:67;25474:2;25469:3;25410:67;:::i;:::-;25403:74;;25486:93;25575:3;25486:93;:::i;:::-;25604:2;25599:3;25595:12;25588:19;;25247:366;;;:::o;25619:419::-;25785:4;25823:2;25812:9;25808:18;25800:26;;25872:9;25866:4;25862:20;25858:1;25847:9;25843:17;25836:47;25900:131;26026:4;25900:131;:::i;:::-;25892:139;;25619:419;;;:::o;26044:172::-;26184:24;26180:1;26172:6;26168:14;26161:48;26044:172;:::o;26222:366::-;26364:3;26385:67;26449:2;26444:3;26385:67;:::i;:::-;26378:74;;26461:93;26550:3;26461:93;:::i;:::-;26579:2;26574:3;26570:12;26563:19;;26222:366;;;:::o;26594:419::-;26760:4;26798:2;26787:9;26783:18;26775:26;;26847:9;26841:4;26837:20;26833:1;26822:9;26818:17;26811:47;26875:131;27001:4;26875:131;:::i;:::-;26867:139;;26594:419;;;:::o;27019:297::-;27159:34;27155:1;27147:6;27143:14;27136:58;27228:34;27223:2;27215:6;27211:15;27204:59;27297:11;27292:2;27284:6;27280:15;27273:36;27019:297;:::o;27322:366::-;27464:3;27485:67;27549:2;27544:3;27485:67;:::i;:::-;27478:74;;27561:93;27650:3;27561:93;:::i;:::-;27679:2;27674:3;27670:12;27663:19;;27322:366;;;:::o;27694:419::-;27860:4;27898:2;27887:9;27883:18;27875:26;;27947:9;27941:4;27937:20;27933:1;27922:9;27918:17;27911:47;27975:131;28101:4;27975:131;:::i;:::-;27967:139;;27694:419;;;:::o;28119:240::-;28259:34;28255:1;28247:6;28243:14;28236:58;28328:23;28323:2;28315:6;28311:15;28304:48;28119:240;:::o;28365:366::-;28507:3;28528:67;28592:2;28587:3;28528:67;:::i;:::-;28521:74;;28604:93;28693:3;28604:93;:::i;:::-;28722:2;28717:3;28713:12;28706:19;;28365:366;;;:::o;28737:419::-;28903:4;28941:2;28930:9;28926:18;28918:26;;28990:9;28984:4;28980:20;28976:1;28965:9;28961:17;28954:47;29018:131;29144:4;29018:131;:::i;:::-;29010:139;;28737:419;;;:::o;29162:169::-;29302:21;29298:1;29290:6;29286:14;29279:45;29162:169;:::o;29337:366::-;29479:3;29500:67;29564:2;29559:3;29500:67;:::i;:::-;29493:74;;29576:93;29665:3;29576:93;:::i;:::-;29694:2;29689:3;29685:12;29678:19;;29337:366;;;:::o;29709:419::-;29875:4;29913:2;29902:9;29898:18;29890:26;;29962:9;29956:4;29952:20;29948:1;29937:9;29933:17;29926:47;29990:131;30116:4;29990:131;:::i;:::-;29982:139;;29709:419;;;:::o;30134:241::-;30274:34;30270:1;30262:6;30258:14;30251:58;30343:24;30338:2;30330:6;30326:15;30319:49;30134:241;:::o;30381:366::-;30523:3;30544:67;30608:2;30603:3;30544:67;:::i;:::-;30537:74;;30620:93;30709:3;30620:93;:::i;:::-;30738:2;30733:3;30729:12;30722:19;;30381:366;;;:::o;30753:419::-;30919:4;30957:2;30946:9;30942:18;30934:26;;31006:9;31000:4;30996:20;30992:1;30981:9;30977:17;30970:47;31034:131;31160:4;31034:131;:::i;:::-;31026:139;;30753:419;;;:::o;31178:191::-;31218:4;31238:20;31256:1;31238:20;:::i;:::-;31233:25;;31272:20;31290:1;31272:20;:::i;:::-;31267:25;;31311:1;31308;31305:8;31302:34;;;31316:18;;:::i;:::-;31302:34;31361:1;31358;31354:9;31346:17;;31178:191;;;;:::o;31375:223::-;31515:34;31511:1;31503:6;31499:14;31492:58;31584:6;31579:2;31571:6;31567:15;31560:31;31375:223;:::o;31604:366::-;31746:3;31767:67;31831:2;31826:3;31767:67;:::i;:::-;31760:74;;31843:93;31932:3;31843:93;:::i;:::-;31961:2;31956:3;31952:12;31945:19;;31604:366;;;:::o;31976:419::-;32142:4;32180:2;32169:9;32165:18;32157:26;;32229:9;32223:4;32219:20;32215:1;32204:9;32200:17;32193:47;32257:131;32383:4;32257:131;:::i;:::-;32249:139;;31976:419;;;:::o;32401:221::-;32541:34;32537:1;32529:6;32525:14;32518:58;32610:4;32605:2;32597:6;32593:15;32586:29;32401:221;:::o;32628:366::-;32770:3;32791:67;32855:2;32850:3;32791:67;:::i;:::-;32784:74;;32867:93;32956:3;32867:93;:::i;:::-;32985:2;32980:3;32976:12;32969:19;;32628:366;;;:::o;33000:419::-;33166:4;33204:2;33193:9;33189:18;33181:26;;33253:9;33247:4;33243:20;33239:1;33228:9;33224:17;33217:47;33281:131;33407:4;33281:131;:::i;:::-;33273:139;;33000:419;;;:::o;33425:147::-;33526:11;33563:3;33548:18;;33425:147;;;;:::o;33578:114::-;;:::o;33698:398::-;33857:3;33878:83;33959:1;33954:3;33878:83;:::i;:::-;33871:90;;33970:93;34059:3;33970:93;:::i;:::-;34088:1;34083:3;34079:11;34072:18;;33698:398;;;:::o;34102:379::-;34286:3;34308:147;34451:3;34308:147;:::i;:::-;34301:154;;34472:3;34465:10;;34102:379;;;:::o;34487:442::-;34636:4;34674:2;34663:9;34659:18;34651:26;;34687:71;34755:1;34744:9;34740:17;34731:6;34687:71;:::i;:::-;34768:72;34836:2;34825:9;34821:18;34812:6;34768:72;:::i;:::-;34850;34918:2;34907:9;34903:18;34894:6;34850:72;:::i;:::-;34487:442;;;;;;:::o;34935:220::-;35075:34;35071:1;35063:6;35059:14;35052:58;35144:3;35139:2;35131:6;35127:15;35120:28;34935:220;:::o;35161:366::-;35303:3;35324:67;35388:2;35383:3;35324:67;:::i;:::-;35317:74;;35400:93;35489:3;35400:93;:::i;:::-;35518:2;35513:3;35509:12;35502:19;;35161:366;;;:::o;35533:419::-;35699:4;35737:2;35726:9;35722:18;35714:26;;35786:9;35780:4;35776:20;35772:1;35761:9;35757:17;35750:47;35814:131;35940:4;35814:131;:::i;:::-;35806:139;;35533:419;;;:::o;35958:180::-;36006:77;36003:1;35996:88;36103:4;36100:1;36093:15;36127:4;36124:1;36117:15;36144:143;36201:5;36232:6;36226:13;36217:22;;36248:33;36275:5;36248:33;:::i;:::-;36144:143;;;;:::o;36293:351::-;36363:6;36412:2;36400:9;36391:7;36387:23;36383:32;36380:119;;;36418:79;;:::i;:::-;36380:119;36538:1;36563:64;36619:7;36610:6;36599:9;36595:22;36563:64;:::i;:::-;36553:74;;36509:128;36293:351;;;;:::o;36650:85::-;36695:7;36724:5;36713:16;;36650:85;;;:::o;36741:158::-;36799:9;36832:61;36850:42;36859:32;36885:5;36859:32;:::i;:::-;36850:42;:::i;:::-;36832:61;:::i;:::-;36819:74;;36741:158;;;:::o;36905:147::-;37000:45;37039:5;37000:45;:::i;:::-;36995:3;36988:58;36905:147;;:::o;37058:114::-;37125:6;37159:5;37153:12;37143:22;;37058:114;;;:::o;37178:184::-;37277:11;37311:6;37306:3;37299:19;37351:4;37346:3;37342:14;37327:29;;37178:184;;;;:::o;37368:132::-;37435:4;37458:3;37450:11;;37488:4;37483:3;37479:14;37471:22;;37368:132;;;:::o;37506:108::-;37583:24;37601:5;37583:24;:::i;:::-;37578:3;37571:37;37506:108;;:::o;37620:179::-;37689:10;37710:46;37752:3;37744:6;37710:46;:::i;:::-;37788:4;37783:3;37779:14;37765:28;;37620:179;;;;:::o;37805:113::-;37875:4;37907;37902:3;37898:14;37890:22;;37805:113;;;:::o;37954:732::-;38073:3;38102:54;38150:5;38102:54;:::i;:::-;38172:86;38251:6;38246:3;38172:86;:::i;:::-;38165:93;;38282:56;38332:5;38282:56;:::i;:::-;38361:7;38392:1;38377:284;38402:6;38399:1;38396:13;38377:284;;;38478:6;38472:13;38505:63;38564:3;38549:13;38505:63;:::i;:::-;38498:70;;38591:60;38644:6;38591:60;:::i;:::-;38581:70;;38437:224;38424:1;38421;38417:9;38412:14;;38377:284;;;38381:14;38677:3;38670:10;;38078:608;;;37954:732;;;;:::o;38692:831::-;38955:4;38993:3;38982:9;38978:19;38970:27;;39007:71;39075:1;39064:9;39060:17;39051:6;39007:71;:::i;:::-;39088:80;39164:2;39153:9;39149:18;39140:6;39088:80;:::i;:::-;39215:9;39209:4;39205:20;39200:2;39189:9;39185:18;39178:48;39243:108;39346:4;39337:6;39243:108;:::i;:::-;39235:116;;39361:72;39429:2;39418:9;39414:18;39405:6;39361:72;:::i;:::-;39443:73;39511:3;39500:9;39496:19;39487:6;39443:73;:::i;:::-;38692:831;;;;;;;;:::o;39529:807::-;39778:4;39816:3;39805:9;39801:19;39793:27;;39830:71;39898:1;39887:9;39883:17;39874:6;39830:71;:::i;:::-;39911:72;39979:2;39968:9;39964:18;39955:6;39911:72;:::i;:::-;39993:80;40069:2;40058:9;40054:18;40045:6;39993:80;:::i;:::-;40083;40159:2;40148:9;40144:18;40135:6;40083:80;:::i;:::-;40173:73;40241:3;40230:9;40226:19;40217:6;40173:73;:::i;:::-;40256;40324:3;40313:9;40309:19;40300:6;40256:73;:::i;:::-;39529:807;;;;;;;;;:::o;40342:143::-;40399:5;40430:6;40424:13;40415:22;;40446:33;40473:5;40446:33;:::i;:::-;40342:143;;;;:::o;40491:663::-;40579:6;40587;40595;40644:2;40632:9;40623:7;40619:23;40615:32;40612:119;;;40650:79;;:::i;:::-;40612:119;40770:1;40795:64;40851:7;40842:6;40831:9;40827:22;40795:64;:::i;:::-;40785:74;;40741:128;40908:2;40934:64;40990:7;40981:6;40970:9;40966:22;40934:64;:::i;:::-;40924:74;;40879:129;41047:2;41073:64;41129:7;41120:6;41109:9;41105:22;41073:64;:::i;:::-;41063:74;;41018:129;40491:663;;;;;:::o

Swarm Source

ipfs://22c8ae73e8a73db1f94edf420b6c700d4095ffe571719cb60175722a1b4f780d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.