Token Rags2Riches

 

Overview ERC20

Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000 R2R

Holders:
118 addresses

Transfers:
-

Contract:
0xa2289eB13d71F5E6c817E2615c2B500B4847AA130xa2289eB13d71F5E6c817E2615c2B500B4847AA13

Decimals:
18

Social Profiles:
Not Available, Update ?

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Rags2Riches

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*	
    Rags 2 Riches!!!
    
    Total Supply: 1,000,000,000,000

    Tax 5% Buy/5% Sell for buying back and adding to liquidity.

    t.me/Rags2RichesToken
*/


pragma solidity 0.8.9;

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

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

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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    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;

        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;

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

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

    error Reentrancy();

    abstract contract ReentrancyGuard {
  uint256 private locked = 1;

  modifier nonReentrant() {
    if (locked != 1) {
      revert Reentrancy();
    }

    locked = 2;

    _;

    locked = 1;
  }
}

    contract Rags2Riches is ERC20, Ownable, ReentrancyGuard{
    using SafeMath for uint256;

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;
    address public liquidityWallet;
    address public teamWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;


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

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

   
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellTeamFee;
   
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForTeam;
   
    /******************/

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    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 teamWalletUpdated(address indexed newWallet, address indexed oldWallet);

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

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

   
    event AutoNukeLP();
   
    event ManualNukeLP();

    constructor() ERC20("Rags2Riches", "R2R") {
       
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
       
        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 = 5;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;
        uint256 _buyTeamFee = 0;

        uint256 _sellMarketingFee = 5;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        uint256 _sellTeamFee = 0;

        uint256 totalSupply = 1000000000000 * 1e18;
       
        maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn
        maxWallet = totalSupply * 1 / 100; // 1% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTeamFee = _buyTeamFee;

        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyTeamFee;
       
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTeamFee = _sellTeamFee;

        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellTeamFee;
       
        marketingWallet = address(msg.sender);                                                                                                                                  
        devWallet = address(this);  
        teamWallet = address(this);
        liquidityWallet = address(msg.sender);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
       
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
     
        _mint(msg.sender, totalSupply);
    }

     	receive() external payable {}

    function setRouter(address router) public onlyOwner{
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
       
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
       
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }
   
    // 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;
    }
   
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
   
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _teamFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTeamFee = _teamFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyTeamFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }
   
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _teamFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTeamFee = _teamFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellTeamFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function updateTeamWallet(address newTeamWallet) external onlyOwner {
        emit teamWalletUpdated(newTeamWallet, teamWallet);
        teamWallet = newTeamWallet;
    }
   
  
   
    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");
       
         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;
                tokensForTeam += fees * sellTeamFee / 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;
                tokensForTeam += fees * buyTeamFee / 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 + tokensForTeam;
        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 ethForTeam = ethBalance.mul(tokensForTeam).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev - ethForTeam;
       
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        tokensForTeam = 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: ethForMarketing}("");
        (success,) = address(teamWallet).call{value: ethForTeam}("");
    }
}

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":"liquidityWalletUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"teamWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"sellTeamFee","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":[{"internalType":"address","name":"router","type":"address"}],"name":"setRouter","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":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","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"},{"inputs":[{"internalType":"address","name":"newTeamWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260016006556001601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff0219169083151502179055506001601260006101000a81548160ff0219169083151502179055503480156200008257600080fd5b506040518060400160405280600b81526020017f52616773325269636865730000000000000000000000000000000000000000008152506040518060400160405280600381526020017f523252000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010792919062000ca2565b5080600490805190602001906200012092919062000ca2565b5050506000620001356200076e60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000731b02da8cb0d097eb8d57a175b88c7d8b479975069050620002008160016200077660201b60201c565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028857600080fd5b505afa1580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c3919062000dbc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032657600080fd5b505afa1580156200033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000361919062000dbc565b6040518363ffffffff1660e01b81526004016200038092919062000dff565b602060405180830381600087803b1580156200039b57600080fd5b505af1158015620003b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d6919062000dbc565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200077660201b60201c565b62000480600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200087360201b60201c565b600060059050600080600080600590506000806000806c0c9f2c9cd04674edea4000000090506064600182620004b7919062000e65565b620004c3919062000ef5565b600d819055506064600182620004da919062000e65565b620004e6919062000ef5565b600f81905550612710600582620004fe919062000e65565b6200050a919062000ef5565b600e819055508860148190555087601581905550866016819055508560178190555060175460165460155460145462000544919062000f2d565b62000550919062000f2d565b6200055c919062000f2d565b6013819055508460198190555083601a8190555082601b8190555081601c81905550601c54601b54601a5460195462000596919062000f2d565b620005a2919062000f2d565b620005ae919062000f2d565b60188190555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006da620006cc6200091460201b60201c565b60016200093e60201b60201c565b620006ed3060016200093e60201b60201c565b6200070261dead60016200093e60201b60201c565b62000724620007166200091460201b60201c565b60016200077660201b60201c565b620007373060016200077660201b60201c565b6200074c61dead60016200077660201b60201c565b6200075e338262000a8b60201b60201c565b50505050505050505050620011be565b600033905090565b620007866200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000818576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200080f9062000feb565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200094e6200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d79062000feb565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a7f91906200102a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af59062001097565b60405180910390fd5b62000b126000838362000c3a60201b60201c565b62000b2e8160025462000c3f60201b62002a951790919060201c565b60028190555062000b8c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000c3f60201b62002a951790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c2e9190620010ca565b60405180910390a35050565b505050565b600080828462000c50919062000f2d565b90508381101562000c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c8f9062001137565b60405180910390fd5b8091505092915050565b82805462000cb09062001188565b90600052602060002090601f01602090048101928262000cd4576000855562000d20565b82601f1062000cef57805160ff191683800117855562000d20565b8280016001018555821562000d20579182015b8281111562000d1f57825182559160200191906001019062000d02565b5b50905062000d2f919062000d33565b5090565b5b8082111562000d4e57600081600090555060010162000d34565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d848262000d57565b9050919050565b62000d968162000d77565b811462000da257600080fd5b50565b60008151905062000db68162000d8b565b92915050565b60006020828403121562000dd55762000dd462000d52565b5b600062000de58482850162000da5565b91505092915050565b62000df98162000d77565b82525050565b600060408201905062000e16600083018562000dee565b62000e25602083018462000dee565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e728262000e2c565b915062000e7f8362000e2c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ebb5762000eba62000e36565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f028262000e2c565b915062000f0f8362000e2c565b92508262000f225762000f2162000ec6565b5b828204905092915050565b600062000f3a8262000e2c565b915062000f478362000e2c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f7f5762000f7e62000e36565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fd360208362000f8a565b915062000fe08262000f9b565b602082019050919050565b60006020820190508181036000830152620010068162000fc4565b9050919050565b60008115159050919050565b62001024816200100d565b82525050565b600060208201905062001041600083018462001019565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200107f601f8362000f8a565b91506200108c8262001047565b602082019050919050565b60006020820190508181036000830152620010b28162001070565b9050919050565b620010c48162000e2c565b82525050565b6000602082019050620010e16000830184620010b9565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200111f601b8362000f8a565b91506200112c82620010e7565b602082019050919050565b60006020820190508181036000830152620011528162001110565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011a157607f821691505b60208210811415620011b857620011b762001159565b5b50919050565b615b2080620011ce6000396000f3fe60806040526004361061039b5760003560e01c8063924de9b7116101dc578063c876d0b911610102578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610d97578063f637434214610dc0578063f8b45b0514610deb578063fde83a3414610e16576103a2565b8063e2f4560514610ced578063e7ad9fcd14610d18578063e884f26014610d41578063f11a24d314610d6c576103a2565b8063d4698016116100dc578063d469801614610c2f578063d729715f14610c5a578063d85ba06314610c85578063dd62ed3e14610cb0576103a2565b8063c876d0b914610b9c578063c8c8ebe414610bc7578063d257b34f14610bf2576103a2565b8063a457c2d71161017a578063bbc0c74211610149578063bbc0c74214610af6578063c024666814610b21578063c0d7865514610b4a578063c18bc19514610b73576103a2565b8063a457c2d714610a16578063a9059cbb14610a53578063aacebbe314610a90578063b62496f514610ab9576103a2565b80639c2e4ac6116101b65780639c2e4ac61461096a5780639c3b4fdc146109955780639fccce32146109c0578063a0d82dc5146109eb576103a2565b8063924de9b7146108ed57806395d89b41146109165780639a7a23d614610941576103a2565b80634fbee193116102c15780637571336a1161025f5780638a8c523c1161022e5780638a8c523c146108555780638da5cb5b1461086c5780638ea5220f1461089757806392136913146108c2576103a2565b80637571336a146107ad57806375f0a874146107d65780637bce5a04146108015780637cb332bb1461082c576103a2565b80636ddd17131161029b5780636ddd17131461070357806370a082311461072e578063715018a61461076b578063751039fc14610782576103a2565b80634fbee1931461067057806359927044146106ad5780636a486a8e146106d8576103a2565b8063203e727e11610339578063313ce56711610308578063313ce567146105b257806339509351146105dd57806349bd5a5e1461061a5780634a62bb6514610645576103a2565b8063203e727e146104f857806323b872dd1461052157806327c8f8351461055e5780632e6ed7ef14610589576103a2565b80631694505e116103755780631694505e1461044c57806318160ddd146104775780631a8145bb146104a25780631f3fed8f146104cd576103a2565b806306fdde03146103a7578063095ea7b3146103d257806310d5de531461040f576103a2565b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610e41565b6040516103c99190614674565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061472f565b610ed3565b604051610406919061478a565b60405180910390f35b34801561041b57600080fd5b50610436600480360381019061043191906147a5565b610ef1565b604051610443919061478a565b60405180910390f35b34801561045857600080fd5b50610461610f11565b60405161046e9190614831565b60405180910390f35b34801561048357600080fd5b5061048c610f37565b604051610499919061485b565b60405180910390f35b3480156104ae57600080fd5b506104b7610f41565b6040516104c4919061485b565b60405180910390f35b3480156104d957600080fd5b506104e2610f47565b6040516104ef919061485b565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a9190614876565b610f4d565b005b34801561052d57600080fd5b50610548600480360381019061054391906148a3565b611077565b604051610555919061478a565b60405180910390f35b34801561056a57600080fd5b50610573611150565b6040516105809190614905565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190614920565b611156565b005b3480156105be57600080fd5b506105c7611285565b6040516105d491906149a3565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff919061472f565b61128e565b604051610611919061478a565b60405180910390f35b34801561062657600080fd5b5061062f611341565b60405161063c9190614905565b60405180910390f35b34801561065157600080fd5b5061065a611367565b604051610667919061478a565b60405180910390f35b34801561067c57600080fd5b50610697600480360381019061069291906147a5565b61137a565b6040516106a4919061478a565b60405180910390f35b3480156106b957600080fd5b506106c26113d0565b6040516106cf9190614905565b60405180910390f35b3480156106e457600080fd5b506106ed6113f6565b6040516106fa919061485b565b60405180910390f35b34801561070f57600080fd5b506107186113fc565b604051610725919061478a565b60405180910390f35b34801561073a57600080fd5b50610755600480360381019061075091906147a5565b61140f565b604051610762919061485b565b60405180910390f35b34801561077757600080fd5b50610780611457565b005b34801561078e57600080fd5b506107976115af565b6040516107a4919061478a565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf91906149ea565b61166a565b005b3480156107e257600080fd5b506107eb61175c565b6040516107f89190614905565b60405180910390f35b34801561080d57600080fd5b50610816611782565b604051610823919061485b565b60405180910390f35b34801561083857600080fd5b50610853600480360381019061084e91906147a5565b611788565b005b34801561086157600080fd5b5061086a6118df565b005b34801561087857600080fd5b506108816119ae565b60405161088e9190614905565b60405180910390f35b3480156108a357600080fd5b506108ac6119d8565b6040516108b99190614905565b60405180910390f35b3480156108ce57600080fd5b506108d76119fe565b6040516108e4919061485b565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190614a2a565b611a04565b005b34801561092257600080fd5b5061092b611ab8565b6040516109389190614674565b60405180910390f35b34801561094d57600080fd5b50610968600480360381019061096391906149ea565b611b4a565b005b34801561097657600080fd5b5061097f611c80565b60405161098c919061485b565b60405180910390f35b3480156109a157600080fd5b506109aa611c86565b6040516109b7919061485b565b60405180910390f35b3480156109cc57600080fd5b506109d5611c8c565b6040516109e2919061485b565b60405180910390f35b3480156109f757600080fd5b50610a00611c92565b604051610a0d919061485b565b60405180910390f35b348015610a2257600080fd5b50610a3d6004803603810190610a38919061472f565b611c98565b604051610a4a919061478a565b60405180910390f35b348015610a5f57600080fd5b50610a7a6004803603810190610a75919061472f565b611d65565b604051610a87919061478a565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab291906147a5565b611d83565b005b348015610ac557600080fd5b50610ae06004803603810190610adb91906147a5565b611eda565b604051610aed919061478a565b60405180910390f35b348015610b0257600080fd5b50610b0b611efa565b604051610b18919061478a565b60405180910390f35b348015610b2d57600080fd5b50610b486004803603810190610b4391906149ea565b611f0d565b005b348015610b5657600080fd5b50610b716004803603810190610b6c91906147a5565b61204d565b005b348015610b7f57600080fd5b50610b9a6004803603810190610b959190614876565b61235a565b005b348015610ba857600080fd5b50610bb1612484565b604051610bbe919061478a565b60405180910390f35b348015610bd357600080fd5b50610bdc612497565b604051610be9919061485b565b60405180910390f35b348015610bfe57600080fd5b50610c196004803603810190610c149190614876565b61249d565b604051610c26919061478a565b60405180910390f35b348015610c3b57600080fd5b50610c4461260d565b604051610c519190614905565b60405180910390f35b348015610c6657600080fd5b50610c6f612633565b604051610c7c919061485b565b60405180910390f35b348015610c9157600080fd5b50610c9a612639565b604051610ca7919061485b565b60405180910390f35b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a57565b61263f565b604051610ce4919061485b565b60405180910390f35b348015610cf957600080fd5b50610d026126c6565b604051610d0f919061485b565b60405180910390f35b348015610d2457600080fd5b50610d3f6004803603810190610d3a9190614920565b6126cc565b005b348015610d4d57600080fd5b50610d566127fb565b604051610d63919061478a565b60405180910390f35b348015610d7857600080fd5b50610d816128b6565b604051610d8e919061485b565b60405180910390f35b348015610da357600080fd5b50610dbe6004803603810190610db991906147a5565b6128bc565b005b348015610dcc57600080fd5b50610dd5612a83565b604051610de2919061485b565b60405180910390f35b348015610df757600080fd5b50610e00612a89565b604051610e0d919061485b565b60405180910390f35b348015610e2257600080fd5b50610e2b612a8f565b604051610e38919061485b565b60405180910390f35b606060038054610e5090614ac6565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7c90614ac6565b8015610ec95780601f10610e9e57610100808354040283529160200191610ec9565b820191906000526020600020905b815481529060010190602001808311610eac57829003601f168201915b5050505050905090565b6000610ee7610ee0612af3565b8484612afb565b6001905092915050565b60226020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b601e5481565b601d5481565b610f55612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb90614b44565b60405180910390fd5b670de0b6b3a76400006103e86001610ffa610f37565b6110049190614b93565b61100e9190614c1c565b6110189190614c1c565b81101561105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190614cbf565b60405180910390fd5b670de0b6b3a76400008161106e9190614b93565b600d8190555050565b6000611084848484612cc6565b61114584611090612af3565b61114085604051806060016040528060288152602001615a9e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110f6612af3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ca9092919063ffffffff16565b612afb565b600190509392505050565b61dead81565b61115e612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e490614b44565b60405180910390fd5b8360148190555082601581905550816016819055508060178190555060175460165460155460145461121f9190614cdf565b6112299190614cdf565b6112339190614cdf565b6013819055506014601354111561127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690614d81565b60405180910390fd5b50505050565b60006012905090565b600061133761129b612af3565b8461133285600160006112ac612af3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9590919063ffffffff16565b612afb565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601060009054906101000a900460ff1681565b6000602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b601060029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61145f612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590614b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006115b9612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f90614b44565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b611672612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890614b44565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611790612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181690614b44565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f96166860405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118e7612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196d90614b44565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055506001601060026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611a0c612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290614b44565b60405180910390fd5b80601060026101000a81548160ff02191690831515021790555050565b606060048054611ac790614ac6565b80601f0160208091040260200160405190810160405280929190818152602001828054611af390614ac6565b8015611b405780601f10611b1557610100808354040283529160200191611b40565b820191906000526020600020905b815481529060010190602001808311611b2357829003601f168201915b5050505050905090565b611b52612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd890614b44565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6990614e13565b60405180910390fd5b611c7c8282613a2e565b5050565b60175481565b60165481565b601f5481565b601b5481565b6000611d5b611ca5612af3565b84611d5685604051806060016040528060258152602001615ac66025913960016000611ccf612af3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ca9092919063ffffffff16565b612afb565b6001905092915050565b6000611d79611d72612af3565b8484612cc6565b6001905092915050565b611d8b612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190614b44565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60236020528060005260406000206000915054906101000a900460ff1681565b601060019054906101000a900460ff1681565b611f15612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9b90614b44565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051612041919061478a565b60405180910390a25050565b612055612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120db90614b44565b60405180910390fd5b60008190506120f481600161166a565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561217b57600080fd5b505afa15801561218f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b39190614e48565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561221557600080fd5b505afa158015612229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224d9190614e48565b6040518363ffffffff1660e01b815260040161226a929190614e75565b602060405180830381600087803b15801561228457600080fd5b505af1158015612298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bc9190614e48565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612329600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161166a565b612356600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001613a2e565b5050565b612362612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e890614b44565b60405180910390fd5b670de0b6b3a76400006103e86005612407610f37565b6124119190614b93565b61241b9190614c1c565b6124259190614c1c565b811015612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90614f10565b60405180910390fd5b670de0b6b3a76400008161247b9190614b93565b600f8190555050565b601260009054906101000a900460ff1681565b600d5481565b60006124a7612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d90614b44565b60405180910390fd5b620186a06001612544610f37565b61254e9190614b93565b6125589190614c1c565b82101561259a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259190614fa2565b60405180910390fd5b6103e860056125a7610f37565b6125b19190614b93565b6125bb9190614c1c565b8211156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490615034565b60405180910390fd5b81600e8190555060019050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b6126d4612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90614b44565b60405180910390fd5b8360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a546019546127959190614cdf565b61279f9190614cdf565b6127a99190614cdf565b601881905550601960185411156127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ec906150a0565b60405180910390fd5b50505050565b6000612805612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288b90614b44565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055506001905090565b60155481565b6128c4612af3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a90614b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ba90615132565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b600f5481565b60205481565b6000808284612aa49190614cdf565b905083811015612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae09061519e565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6290615230565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd2906152c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612cb9919061485b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2d90615354565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9d906153e6565b60405180910390fd5b6000811415612dc057612dbb83836000613acf565b6139c5565b601060009054906101000a900460ff161561348757612ddd6119ae565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e4b5750612e1b6119ae565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e845750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ebe575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ed75750600860149054906101000a900460ff16155b1561348657601060019054906101000a900460ff16612fd157602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f915750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc790615452565b60405180910390fd5b5b601260009054906101000a900460ff161561319d57612fee6119ae565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156130775750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130d15750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561319c5743601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314e9061550a565b60405180910390fd5b43601160003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132405750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132e757600d5481111561328a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132819061559c565b60405180910390fd5b600f546132968361140f565b826132a19190614cdf565b11156132e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d990615608565b60405180910390fd5b613485565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561338a5750602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133d957600d548111156133d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133cb9061569a565b60405180910390fd5b613484565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661348357600f546134368361140f565b826134419190614cdf565b1115613482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347990615608565b60405180910390fd5b5b5b5b5b5b60006134923061140f565b90506000600e5482101590508080156134b75750601060029054906101000a900460ff165b80156134d05750600860149054906101000a900460ff16155b80156135265750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561357c5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135d25750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613616576001600860146101000a81548160ff0219169083151502179055506135fa613d64565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136cc5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136d657600090505b600081156139b557602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561373957506000601854115b156138395761376660646137586018548861412590919063ffffffff16565b6141a090919063ffffffff16565b9050601854601a54826137799190614b93565b6137839190614c1c565b601e60008282546137949190614cdf565b92505081905550601854601b54826137ac9190614b93565b6137b69190614c1c565b601f60008282546137c79190614cdf565b92505081905550601854601954826137df9190614b93565b6137e99190614c1c565b601d60008282546137fa9190614cdf565b92505081905550601854601c54826138129190614b93565b61381c9190614c1c565b6020600082825461382d9190614cdf565b92505081905550613991565b602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561389457506000601354115b15613990576138c160646138b36013548861412590919063ffffffff16565b6141a090919063ffffffff16565b9050601354601554826138d49190614b93565b6138de9190614c1c565b601e60008282546138ef9190614cdf565b92505081905550601354601654826139079190614b93565b6139119190614c1c565b601f60008282546139229190614cdf565b925050819055506013546014548261393a9190614b93565b6139449190614c1c565b601d60008282546139559190614cdf565b925050819055506013546017548261396d9190614b93565b6139779190614c1c565b602060008282546139889190614cdf565b925050819055505b5b60008111156139a6576139a5873083613acf565b5b80856139b291906156ba565b94505b6139c0878787613acf565b505050505b505050565b6000838311158290613a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a099190614674565b60405180910390fd5b5060008385613a2191906156ba565b9050809150509392505050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b3690615354565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba6906153e6565b60405180910390fd5b613bba8383836141ea565b613c2581604051806060016040528060268152602001615a78602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139ca9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cb8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d57919061485b565b60405180910390a3505050565b6000613d6f3061140f565b90506000602054601f54601d54601e54613d899190614cdf565b613d939190614cdf565b613d9d9190614cdf565b9050600080831480613daf5750600082145b15613dbc57505050614123565b6014600e54613dcb9190614b93565b831115613de4576014600e54613de19190614b93565b92505b6000600283601e5486613df79190614b93565b613e019190614c1c565b613e0b9190614c1c565b90506000613e2282866141ef90919063ffffffff16565b90506000479050613e3282614239565b6000613e4782476141ef90919063ffffffff16565b90506000613e7287613e64601d548561412590919063ffffffff16565b6141a090919063ffffffff16565b90506000613e9d88613e8f601f548661412590919063ffffffff16565b6141a090919063ffffffff16565b90506000613ec889613eba6020548761412590919063ffffffff16565b6141a090919063ffffffff16565b9050600081838587613eda91906156ba565b613ee491906156ba565b613eee91906156ba565b90506000601e819055506000601d819055506000601f819055506000602081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051613f569061571f565b60006040518083038185875af1925050503d8060008114613f93576040519150601f19603f3d011682016040523d82523d6000602084013e613f98565b606091505b505080995050600088118015613fae5750600081115b15613ffb57613fbd888261448b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601e54604051613ff293929190615734565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516140419061571f565b60006040518083038185875af1925050503d806000811461407e576040519150601f19603f3d011682016040523d82523d6000602084013e614083565b606091505b505080995050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516140cf9061571f565b60006040518083038185875af1925050503d806000811461410c576040519150601f19603f3d011682016040523d82523d6000602084013e614111565b606091505b50508099505050505050505050505050505b565b600080831415614138576000905061419a565b600082846141469190614b93565b90508284826141559190614c1c565b14614195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161418c906157dd565b60405180910390fd5b809150505b92915050565b60006141e283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614578565b905092915050565b505050565b600061423183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139ca565b905092915050565b6000600267ffffffffffffffff811115614256576142556157fd565b5b6040519080825280602002602001820160405280156142845781602001602082028036833780820191505090505b509050308160008151811061429c5761429b61582c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561433e57600080fd5b505afa158015614352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143769190614e48565b8160018151811061438a5761438961582c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143f130600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612afb565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614455959493929190615954565b600060405180830381600087803b15801561446f57600080fd5b505af1158015614483573d6000803e3d6000fd5b505050505050565b6144b830600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612afb565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161451f969594939291906159ae565b6060604051808303818588803b15801561453857600080fd5b505af115801561454c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145719190615a24565b5050505050565b600080831182906145bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145b69190614674565b60405180910390fd5b50600083856145ce9190614c1c565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156146155780820151818401526020810190506145fa565b83811115614624576000848401525b50505050565b6000601f19601f8301169050919050565b6000614646826145db565b61465081856145e6565b93506146608185602086016145f7565b6146698161462a565b840191505092915050565b6000602082019050818103600083015261468e818461463b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146c68261469b565b9050919050565b6146d6816146bb565b81146146e157600080fd5b50565b6000813590506146f3816146cd565b92915050565b6000819050919050565b61470c816146f9565b811461471757600080fd5b50565b60008135905061472981614703565b92915050565b6000806040838503121561474657614745614696565b5b6000614754858286016146e4565b92505060206147658582860161471a565b9150509250929050565b60008115159050919050565b6147848161476f565b82525050565b600060208201905061479f600083018461477b565b92915050565b6000602082840312156147bb576147ba614696565b5b60006147c9848285016146e4565b91505092915050565b6000819050919050565b60006147f76147f26147ed8461469b565b6147d2565b61469b565b9050919050565b6000614809826147dc565b9050919050565b600061481b826147fe565b9050919050565b61482b81614810565b82525050565b60006020820190506148466000830184614822565b92915050565b614855816146f9565b82525050565b6000602082019050614870600083018461484c565b92915050565b60006020828403121561488c5761488b614696565b5b600061489a8482850161471a565b91505092915050565b6000806000606084860312156148bc576148bb614696565b5b60006148ca868287016146e4565b93505060206148db868287016146e4565b92505060406148ec8682870161471a565b9150509250925092565b6148ff816146bb565b82525050565b600060208201905061491a60008301846148f6565b92915050565b6000806000806080858703121561493a57614939614696565b5b60006149488782880161471a565b94505060206149598782880161471a565b935050604061496a8782880161471a565b925050606061497b8782880161471a565b91505092959194509250565b600060ff82169050919050565b61499d81614987565b82525050565b60006020820190506149b86000830184614994565b92915050565b6149c78161476f565b81146149d257600080fd5b50565b6000813590506149e4816149be565b92915050565b60008060408385031215614a0157614a00614696565b5b6000614a0f858286016146e4565b9250506020614a20858286016149d5565b9150509250929050565b600060208284031215614a4057614a3f614696565b5b6000614a4e848285016149d5565b91505092915050565b60008060408385031215614a6e57614a6d614696565b5b6000614a7c858286016146e4565b9250506020614a8d858286016146e4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ade57607f821691505b60208210811415614af257614af1614a97565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b2e6020836145e6565b9150614b3982614af8565b602082019050919050565b60006020820190508181036000830152614b5d81614b21565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b9e826146f9565b9150614ba9836146f9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614be257614be1614b64565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c27826146f9565b9150614c32836146f9565b925082614c4257614c41614bed565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ca9602f836145e6565b9150614cb482614c4d565b604082019050919050565b60006020820190508181036000830152614cd881614c9c565b9050919050565b6000614cea826146f9565b9150614cf5836146f9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d2a57614d29614b64565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614d6b601d836145e6565b9150614d7682614d35565b602082019050919050565b60006020820190508181036000830152614d9a81614d5e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614dfd6039836145e6565b9150614e0882614da1565b604082019050919050565b60006020820190508181036000830152614e2c81614df0565b9050919050565b600081519050614e42816146cd565b92915050565b600060208284031215614e5e57614e5d614696565b5b6000614e6c84828501614e33565b91505092915050565b6000604082019050614e8a60008301856148f6565b614e9760208301846148f6565b9392505050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614efa6024836145e6565b9150614f0582614e9e565b604082019050919050565b60006020820190508181036000830152614f2981614eed565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614f8c6035836145e6565b9150614f9782614f30565b604082019050919050565b60006020820190508181036000830152614fbb81614f7f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061501e6034836145e6565b915061502982614fc2565b604082019050919050565b6000602082019050818103600083015261504d81615011565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b600061508a601d836145e6565b915061509582615054565b602082019050919050565b600060208201905081810360008301526150b98161507d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061511c6026836145e6565b9150615127826150c0565b604082019050919050565b6000602082019050818103600083015261514b8161510f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615188601b836145e6565b915061519382615152565b602082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061521a6024836145e6565b9150615225826151be565b604082019050919050565b600060208201905081810360008301526152498161520d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152ac6022836145e6565b91506152b782615250565b604082019050919050565b600060208201905081810360008301526152db8161529f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061533e6025836145e6565b9150615349826152e2565b604082019050919050565b6000602082019050818103600083015261536d81615331565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153d06023836145e6565b91506153db82615374565b604082019050919050565b600060208201905081810360008301526153ff816153c3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061543c6016836145e6565b915061544782615406565b602082019050919050565b6000602082019050818103600083015261546b8161542f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154f46049836145e6565b91506154ff82615472565b606082019050919050565b60006020820190508181036000830152615523816154e7565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006155866035836145e6565b91506155918261552a565b604082019050919050565b600060208201905081810360008301526155b581615579565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155f26013836145e6565b91506155fd826155bc565b602082019050919050565b60006020820190508181036000830152615621816155e5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156846036836145e6565b915061568f82615628565b604082019050919050565b600060208201905081810360008301526156b381615677565b9050919050565b60006156c5826146f9565b91506156d0836146f9565b9250828210156156e3576156e2614b64565b5b828203905092915050565b600081905092915050565b50565b60006157096000836156ee565b9150615714826156f9565b600082019050919050565b600061572a826156fc565b9150819050919050565b6000606082019050615749600083018661484c565b615756602083018561484c565b615763604083018461484c565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006157c76021836145e6565b91506157d28261576b565b604082019050919050565b600060208201905081810360008301526157f6816157ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061588061587b6158768461585b565b6147d2565b6146f9565b9050919050565b61589081615865565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6158cb816146bb565b82525050565b60006158dd83836158c2565b60208301905092915050565b6000602082019050919050565b600061590182615896565b61590b81856158a1565b9350615916836158b2565b8060005b8381101561594757815161592e88826158d1565b9750615939836158e9565b92505060018101905061591a565b5085935050505092915050565b600060a082019050615969600083018861484c565b6159766020830187615887565b818103604083015261598881866158f6565b905061599760608301856148f6565b6159a4608083018461484c565b9695505050505050565b600060c0820190506159c360008301896148f6565b6159d0602083018861484c565b6159dd6040830187615887565b6159ea6060830186615887565b6159f760808301856148f6565b615a0460a083018461484c565b979650505050505050565b600081519050615a1e81614703565b92915050565b600080600060608486031215615a3d57615a3c614696565b5b6000615a4b86828701615a0f565b9350506020615a5c86828701615a0f565b9250506040615a6d86828701615a0f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122027fc0e72f98aa6eb3649a81aeee1a595cb01e1701bfc7225774fb27007c7363d64736f6c63430008090033

Deployed ByteCode Sourcemap

17890:16443:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5082:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5996:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19371:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17987:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5403:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19169:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24199:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6173:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18070:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25022:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5302:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6536:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18035:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18422:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26963:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18267:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18948:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18501:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5519:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10953:148;;;;;;;;;;;;;:::i;:::-;;23424:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24667:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18162:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18804;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26770:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23257:112;;;;;;;;;;;;;:::i;:::-;;10739:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18199:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18983:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24910:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5190:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26106:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18909:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18878:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19209:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19059:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6762:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5654:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26554:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19444:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18462:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25916:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22679:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24441:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18722:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18305:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23816:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18230:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19091:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18770:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5837:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18347:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25465:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23608:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18841:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11109:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19021:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18387:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19243:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5082:100;5136:13;5169:5;5162:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5082:100;:::o;5996:169::-;6079:4;6096:39;6105:12;:10;:12::i;:::-;6119:7;6128:6;6096:8;:39::i;:::-;6153:4;6146:11;;5996:169;;;;:::o;19371:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17987:41::-;;;;;;;;;;;;;:::o;5403:108::-;5464:7;5491:12;;5484:19;;5403:108;:::o;19169:33::-;;;;:::o;19129:::-;;;;:::o;24199:234::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24318:4:::1;24312;24308:1;24292:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;24291:31;;;;:::i;:::-;24281:6;:41;;24273:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;24418:6;24408;:17;;;;:::i;:::-;24385:20;:40;;;;24199:234:::0;:::o;6173:355::-;6313:4;6330:36;6340:6;6348:9;6359:6;6330:9;:36::i;:::-;6377:121;6386:6;6394:12;:10;:12::i;:::-;6408:89;6446:6;6408:89;;;;;;;;;;;;;;;;;:11;:19;6420:6;6408:19;;;;;;;;;;;;;;;:33;6428:12;:10;:12::i;:::-;6408:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6377:8;:121::i;:::-;6516:4;6509:11;;6173:355;;;;;:::o;18070:53::-;18116:6;18070:53;:::o;25022:432::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25174:13:::1;25156:15;:31;;;;25216:13;25198:15;:31;;;;25252:7;25240:9;:19;;;;25283:8;25270:10;:21;;;;25365:10;;25353:9;;25335:15;;25317;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;:58;;;;:::i;:::-;25302:12;:73;;;;25410:2;25394:12;;:18;;25386:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;25022:432:::0;;;;:::o;5302:93::-;5360:5;5385:2;5378:9;;5302:93;:::o;6536:218::-;6624:4;6641:83;6650:12;:10;:12::i;:::-;6664:7;6673:50;6712:10;6673:11;:25;6685:12;:10;:12::i;:::-;6673:25;;;;;;;;;;;;;;;:34;6699:7;6673:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6641:8;:83::i;:::-;6742:4;6735:11;;6536:218;;;;:::o;18035:28::-;;;;;;;;;;;;;:::o;18422:33::-;;;;;;;;;;;;;:::o;26963:125::-;27028:4;27052:19;:28;27072:7;27052:28;;;;;;;;;;;;;;;;;;;;;;;;;27045:35;;26963:125;;;:::o;18267:25::-;;;;;;;;;;;;;:::o;18948:28::-;;;;:::o;18501:30::-;;;;;;;;;;;;;:::o;5519:127::-;5593:7;5620:9;:18;5630:7;5620:18;;;;;;;;;;;;;;;;5613:25;;5519:127;;;:::o;10953:148::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11060:1:::1;11023:40;;11044:6;;;;;;;;;;;11023:40;;;;;;;;;;;;11091:1;11074:6;;:19;;;;;;;;;;;;;;;;;;10953:148::o:0;23424:120::-;23476:4;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23509:5:::1;23492:14;;:22;;;;;;;;;;;;;;;;;;23532:4;23525:11;;23424:120:::0;:::o;24667:144::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24799:4:::1;24757:31;:39;24789:6;24757:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24667:144:::0;;:::o;18162:30::-;;;;;;;;;;;;;:::o;18804:::-;;;;:::o;26770:173::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26887:10:::1;;;;;;;;;;;26854:44;;26872:13;26854:44;;;;;;;;;;;;26922:13;26909:10;;:26;;;;;;;;;;;;;;;;;;26770:173:::0;:::o;23257:112::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23328:4:::1;23312:13;;:20;;;;;;;;;;;;;;;;;;23357:4;23343:11;;:18;;;;;;;;;;;;;;;;;;23257:112::o:0;10739:79::-;10777:7;10804:6;;;;;;;;;;;10797:13;;10739:79;:::o;18199:24::-;;;;;;;;;;;;;:::o;18983:31::-;;;;:::o;24910:101::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24996:7:::1;24982:11;;:21;;;;;;;;;;;;;;;;;;24910:101:::0;:::o;5190:104::-;5246:13;5279:7;5272:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5190:104;:::o;26106:244::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26213:13:::1;;;;;;;;;;;26205:21;;:4;:21;;;;26197:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;26301:41;26330:4;26336:5;26301:28;:41::i;:::-;26106:244:::0;;:::o;18909:25::-;;;;:::o;18878:24::-;;;;:::o;19209:27::-;;;;:::o;19059:25::-;;;;:::o;6762:269::-;6855:4;6872:129;6881:12;:10;:12::i;:::-;6895:7;6904:96;6943:15;6904:96;;;;;;;;;;;;;;;;;:11;:25;6916:12;:10;:12::i;:::-;6904:25;;;;;;;;;;;;;;;:34;6930:7;6904:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6872:8;:129::i;:::-;7019:4;7012:11;;6762:269;;;;:::o;5654:175::-;5740:4;5757:42;5767:12;:10;:12::i;:::-;5781:9;5792:6;5757:9;:42::i;:::-;5817:4;5810:11;;5654:175;;;;:::o;26554:208::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26691:15:::1;;;;;;;;;;;26648:59;;26671:18;26648:59;;;;;;;;;;;;26736:18;26718:15;;:36;;;;;;;;;;;;;;;;;;26554:208:::0;:::o;19444:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18462:32::-;;;;;;;;;;;;;:::o;25916:182::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26032:8:::1;26001:19;:28;26021:7;26001:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26072:7;26056:34;;;26081:8;26056:34;;;;;;:::i;:::-;;;;;;;;25916:182:::0;;:::o;22679:524::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22741:35:::1;22798:6;22741:64;;22825:58;22859:16;22878:4;22825:25;:58::i;:::-;22912:16;22894:15;;:34;;;;;;;;;;;;;;;;;;22982:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22964:56;;;23029:4;23036:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22964:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22948:13;;:112;;;;;;;;;;;;;;;;;;23071:55;23105:13;;;;;;;;;;;23121:4;23071:25;:55::i;:::-;23137:58;23174:13;;;;;;;;;;;23190:4;23137:28;:58::i;:::-;22730:473;22679:524:::0;:::o;24441:215::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24563:4:::1;24557;24553:1;24537:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;24536:31;;;;:::i;:::-;24526:6;:41;;24518:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;24641:6;24631;:17;;;;:::i;:::-;24619:9;:29;;;;24441:215:::0;:::o;18722:39::-;;;;;;;;;;;;;:::o;18305:35::-;;;;:::o;23816:372::-;23897:4;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23951:6:::1;23947:1;23931:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;23918:9;:39;;23910:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;24064:4;24060:1;24044:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;24031:9;:37;;24023:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24154:9;24133:18;:30;;;;24178:4;24171:11;;23816:372:::0;;;:::o;18230:30::-;;;;;;;;;;;;;:::o;19091:26::-;;;;:::o;18770:27::-;;;;:::o;5837:151::-;5926:7;5953:11;:18;5965:5;5953:18;;;;;;;;;;;;;;;:27;5972:7;5953:27;;;;;;;;;;;;;;;;5946:34;;5837:151;;;;:::o;18347:33::-;;;;:::o;25465:443::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25619:13:::1;25600:16;:32;;;;25662:13;25643:16;:32;;;;25699:7;25686:10;:20;;;;25731:8;25717:11;:22;;;;25817:11;;25804:10;;25785:16;;25766;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;:62;;;;:::i;:::-;25750:13;:78;;;;25864:2;25847:13;;:19;;25839:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;25465:443:::0;;;;:::o;23608:134::-;23668:4;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23707:5:::1;23684:20;;:28;;;;;;;;;;;;;;;;;;23730:4;23723:11;;23608:134:::0;:::o;18841:30::-;;;;:::o;11109:244::-;10876:12;:10;:12::i;:::-;10866:22;;:6;;;;;;;;;;;:22;;;10858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11218:1:::1;11198:22;;:8;:22;;;;11190:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11308:8;11279:38;;11300:6;;;;;;;;;;;11279:38;;;;;;;;;;;;11337:8;11328:6;;:17;;;;;;;;;;;;;;;;;;11109:244:::0;:::o;19021:31::-;;;;:::o;18387:24::-;;;;:::o;19243:28::-;;;;:::o;8978:181::-;9036:7;9056:9;9072:1;9068;:5;;;;:::i;:::-;9056:17;;9097:1;9092;:6;;9084:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9150:1;9143:8;;;8978:181;;;;:::o;233:98::-;286:7;313:10;306:17;;233:98;:::o;8432:380::-;8585:1;8568:19;;:5;:19;;;;8560:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8666:1;8647:21;;:7;:21;;;;8639:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8750:6;8720:11;:18;8732:5;8720:18;;;;;;;;;;;;;;;:27;8739:7;8720:27;;;;;;;;;;;;;;;:36;;;;8788:7;8772:32;;8781:5;8772:32;;;8797:6;8772:32;;;;;;:::i;:::-;;;;;;;;8432:380;;;:::o;27099:4233::-;27247:1;27231:18;;:4;:18;;;;27223:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27324:1;27310:16;;:2;:16;;;;27302:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27400:1;27390:6;:11;27387:92;;;27418:28;27434:4;27440:2;27444:1;27418:15;:28::i;:::-;27461:7;;27387:92;27501:14;;;;;;;;;;;27498:1840;;;27561:7;:5;:7::i;:::-;27553:15;;:4;:15;;;;:49;;;;;27595:7;:5;:7::i;:::-;27589:13;;:2;:13;;;;27553:49;:86;;;;;27637:1;27623:16;;:2;:16;;;;27553:86;:128;;;;;27674:6;27660:21;;:2;:21;;;;27553:128;:158;;;;;27703:8;;;;;;;;;;;27702:9;27553:158;27531:1796;;;27749:13;;;;;;;;;;;27745:148;;27794:19;:25;27814:4;27794:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27823:19;:23;27843:2;27823:23;;;;;;;;;;;;;;;;;;;;;;;;;27794:52;27786:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27745:148;28051:20;;;;;;;;;;;28047:423;;;28105:7;:5;:7::i;:::-;28099:13;;:2;:13;;;;:47;;;;;28130:15;;;;;;;;;;;28116:30;;:2;:30;;;;28099:47;:79;;;;;28164:13;;;;;;;;;;;28150:28;;:2;:28;;;;28099:79;28095:356;;;28256:12;28214:28;:39;28243:9;28214:39;;;;;;;;;;;;;;;;:54;28206:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28415:12;28373:28;:39;28402:9;28373:39;;;;;;;;;;;;;;;:54;;;;28095:356;28047:423;28539:25;:31;28565:4;28539:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28575:31;:35;28607:2;28575:35;;;;;;;;;;;;;;;;;;;;;;;;;28574:36;28539:71;28535:777;;;28657:20;;28647:6;:30;;28639:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;28796:9;;28779:13;28789:2;28779:9;:13::i;:::-;28770:6;:22;;;;:::i;:::-;:35;;28762:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28535:777;;;28922:25;:29;28948:2;28922:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;28956:31;:37;28988:4;28956:37;;;;;;;;;;;;;;;;;;;;;;;;;28955:38;28922:71;28918:394;;;29040:20;;29030:6;:30;;29022:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;28918:394;;;29166:31;:35;29198:2;29166:35;;;;;;;;;;;;;;;;;;;;;;;;;29162:150;;29259:9;;29242:13;29252:2;29242:9;:13::i;:::-;29233:6;:22;;;;:::i;:::-;:35;;29225:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29162:150;28918:394;28535:777;27531:1796;27498:1840;29349:28;29380:24;29398:4;29380:9;:24::i;:::-;29349:55;;29426:12;29465:18;;29441:20;:42;;29426:57;;29513:7;:35;;;;;29537:11;;;;;;;;;;;29513:35;:61;;;;;29566:8;;;;;;;;;;;29565:9;29513:61;:110;;;;;29592:25;:31;29618:4;29592:31;;;;;;;;;;;;;;;;;;;;;;;;;29591:32;29513:110;:153;;;;;29641:19;:25;29661:4;29641:25;;;;;;;;;;;;;;;;;;;;;;;;;29640:26;29513:153;:194;;;;;29684:19;:23;29704:2;29684:23;;;;;;;;;;;;;;;;;;;;;;;;;29683:24;29513:194;29496:333;;;29745:4;29734:8;;:15;;;;;;;;;;;;;;;;;;29764:10;:8;:10::i;:::-;29812:5;29801:8;;:16;;;;;;;;;;;;;;;;;;29496:333;29841:12;29857:8;;;;;;;;;;;29856:9;29841:24;;29966:19;:25;29986:4;29966:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29995:19;:23;30015:2;29995:23;;;;;;;;;;;;;;;;;;;;;;;;;29966:52;29963:99;;;30045:5;30035:15;;29963:99;30081:12;30185:7;30182:1097;;;30236:25;:29;30262:2;30236:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30285:1;30269:13;;:17;30236:50;30232:882;;;30313:34;30343:3;30313:25;30324:13;;30313:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;30306:41;;30414:13;;30395:16;;30388:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30366:18;;:61;;;;;;;:::i;:::-;;;;;;;;30482:13;;30469:10;;30462:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;30446:12;;:49;;;;;;;:::i;:::-;;;;;;;;30562:13;;30543:16;;30536:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30514:18;;:61;;;;;;;:::i;:::-;;;;;;;;30632:13;;30618:11;;30611:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;30594:13;;:51;;;;;;;:::i;:::-;;;;;;;;30232:882;;;30706:25;:31;30732:4;30706:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;30756:1;30741:12;;:16;30706:51;30703:411;;;30780:33;30809:3;30780:24;30791:12;;30780:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30773:40;;30874:12;;30856:15;;30849:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30827:18;;:59;;;;;;;:::i;:::-;;;;;;;;30940:12;;30928:9;;30921:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;30905:12;;:47;;;;;;;:::i;:::-;;;;;;;;31018:12;;31000:15;;30993:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30971:18;;:59;;;;;;;:::i;:::-;;;;;;;;31086:12;;31073:10;;31066:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;31049:13;;:49;;;;;;;:::i;:::-;;;;;;;;30703:411;30232:882;31151:1;31144:4;:8;31141:93;;;31176:42;31192:4;31206;31213;31176:15;:42::i;:::-;31141:93;31263:4;31253:14;;;;;:::i;:::-;;;30182:1097;31291:33;31307:4;31313:2;31317:6;31291:15;:33::i;:::-;27212:4120;;;;27099:4233;;;;:::o;9311:192::-;9397:7;9430:1;9425;:6;;9433:12;9417:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9457:9;9473:1;9469;:5;;;;:::i;:::-;9457:17;;9494:1;9487:8;;;9311:192;;;;;:::o;26358:188::-;26475:5;26441:25;:31;26467:4;26441:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26532:5;26498:40;;26526:4;26498:40;;;;;;;;;;;;26358:188;;:::o;7039:573::-;7197:1;7179:20;;:6;:20;;;;7171:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7281:1;7260:23;;:9;:23;;;;7252:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7336:47;7357:6;7365:9;7376:6;7336:20;:47::i;:::-;7416:71;7438:6;7416:71;;;;;;;;;;;;;;;;;:9;:17;7426:6;7416:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7396:9;:17;7406:6;7396:17;;;;;;;;;;;;;;;:91;;;;7521:32;7546:6;7521:9;:20;7531:9;7521:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7498:9;:20;7508:9;7498:20;;;;;;;;;;;;;;;:55;;;;7586:9;7569:35;;7578:6;7569:35;;;7597:6;7569:35;;;;;;:::i;:::-;;;;;;;;7039:573;;;:::o;32490:1840::-;32529:23;32555:24;32573:4;32555:9;:24::i;:::-;32529:50;;32590:25;32675:13;;32660:12;;32639:18;;32618;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;:70;;;;:::i;:::-;32590:98;;32699:12;32754:1;32735:15;:20;:46;;;;32780:1;32759:17;:22;32735:46;32732:60;;;32784:7;;;;;32732:60;32846:2;32825:18;;:23;;;;:::i;:::-;32807:15;:41;32804:111;;;32901:2;32880:18;;:23;;;;:::i;:::-;32862:41;;32804:111;32984:23;33069:1;33049:17;33028:18;;33010:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32984:86;;33081:26;33110:36;33130:15;33110;:19;;:36;;;;:::i;:::-;33081:65;;33167:25;33195:21;33167:49;;33229:36;33246:18;33229:16;:36::i;:::-;33287:18;33308:44;33334:17;33308:21;:25;;:44;;;;:::i;:::-;33287:65;;33373:23;33399:57;33438:17;33399:34;33414:18;;33399:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;33373:83;;33467:17;33487:51;33520:17;33487:28;33502:12;;33487:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;33467:71;;33549:18;33570:52;33604:17;33570:29;33585:13;;33570:10;:14;;:29;;;;:::i;:::-;:33;;:52;;;;:::i;:::-;33549:73;;33633:23;33702:10;33690:9;33672:15;33659:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;:53;;;;:::i;:::-;33633:79;;33763:1;33742:18;:22;;;;33796:1;33775:18;:22;;;;33823:1;33808:12;:16;;;;33851:1;33835:13;:17;;;;33894:9;;;;;;;;;;;33886:23;;33917:9;33886:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33873:58;;;;;33973:1;33955:15;:19;:42;;;;;33996:1;33978:15;:19;33955:42;33952:210;;;34013:46;34026:15;34043;34013:12;:46::i;:::-;34079:71;34094:18;34114:15;34131:18;;34079:71;;;;;;;;:::i;:::-;;;;;;;;33952:210;34202:15;;;;;;;;;;;34194:29;;34231:15;34194:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34181:70;;;;;34283:10;;;;;;;;;;;34275:24;;34307:10;34275:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34262:60;;;;;32518:1812;;;;;;;;;;;32490:1840;:::o;9511:250::-;9569:7;9598:1;9593;:6;9589:47;;;9623:1;9616:8;;;;9589:47;9648:9;9664:1;9660;:5;;;;:::i;:::-;9648:17;;9693:1;9688;9684;:5;;;;:::i;:::-;:10;9676:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9752:1;9745:8;;;9511:250;;;;;:::o;9769:132::-;9827:7;9854:39;9858:1;9861;9854:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9847:46;;9769:132;;;;:::o;8820:125::-;;;;:::o;9167:136::-;9225:7;9252:43;9256:1;9259;9252:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9245:50;;9167:136;;;;:::o;31345:600::-;31473:21;31511:1;31497:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31473:40;;31542:4;31524;31529:1;31524:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31568:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31558:4;31563:1;31558:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31603:62;31620:4;31635:15;;;;;;;;;;;31653:11;31603:8;:62::i;:::-;31704:15;;;;;;;;;;;:66;;;31785:11;31811:1;31855:4;31882;31902:15;31704:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31400:545;31345:600;:::o;31967:519::-;32115:62;32132:4;32147:15;;;;;;;;;;;32165:11;32115:8;:62::i;:::-;32220:15;;;;;;;;;;;:31;;;32259:9;32292:4;32312:11;32338:1;32381;32432:4;32452:15;32220:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31967:519;;:::o;9909:191::-;9995:7;10027:1;10023;:5;10030:12;10015:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10054:9;10070:1;10066;:5;;;;:::i;:::-;10054:17;;10091:1;10084:8;;;9909:191;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:765::-;6557:6;6565;6573;6581;6630:3;6618:9;6609:7;6605:23;6601:33;6598:120;;;6637:79;;:::i;:::-;6598:120;6757:1;6782:53;6827:7;6818:6;6807:9;6803:22;6782:53;:::i;:::-;6772:63;;6728:117;6884:2;6910:53;6955:7;6946:6;6935:9;6931:22;6910:53;:::i;:::-;6900:63;;6855:118;7012:2;7038:53;7083:7;7074:6;7063:9;7059:22;7038:53;:::i;:::-;7028:63;;6983:118;7140:2;7166:53;7211:7;7202:6;7191:9;7187:22;7166:53;:::i;:::-;7156:63;;7111:118;6471:765;;;;;;;:::o;7242:86::-;7277:7;7317:4;7310:5;7306:16;7295:27;;7242:86;;;:::o;7334:112::-;7417:22;7433:5;7417:22;:::i;:::-;7412:3;7405:35;7334:112;;:::o;7452:214::-;7541:4;7579:2;7568:9;7564:18;7556:26;;7592:67;7656:1;7645:9;7641:17;7632:6;7592:67;:::i;:::-;7452:214;;;;:::o;7672:116::-;7742:21;7757:5;7742:21;:::i;:::-;7735:5;7732:32;7722:60;;7778:1;7775;7768:12;7722:60;7672:116;:::o;7794:133::-;7837:5;7875:6;7862:20;7853:29;;7891:30;7915:5;7891:30;:::i;:::-;7794:133;;;;:::o;7933:468::-;7998:6;8006;8055:2;8043:9;8034:7;8030:23;8026:32;8023:119;;;8061:79;;:::i;:::-;8023:119;8181:1;8206:53;8251:7;8242:6;8231:9;8227:22;8206:53;:::i;:::-;8196:63;;8152:117;8308:2;8334:50;8376:7;8367:6;8356:9;8352:22;8334:50;:::i;:::-;8324:60;;8279:115;7933:468;;;;;:::o;8407:323::-;8463:6;8512:2;8500:9;8491:7;8487:23;8483:32;8480:119;;;8518:79;;:::i;:::-;8480:119;8638:1;8663:50;8705:7;8696:6;8685:9;8681:22;8663:50;:::i;:::-;8653:60;;8609:114;8407:323;;;;:::o;8736:474::-;8804:6;8812;8861:2;8849:9;8840:7;8836:23;8832:32;8829:119;;;8867:79;;:::i;:::-;8829:119;8987:1;9012:53;9057:7;9048:6;9037:9;9033:22;9012:53;:::i;:::-;9002:63;;8958:117;9114:2;9140:53;9185:7;9176:6;9165:9;9161:22;9140:53;:::i;:::-;9130:63;;9085:118;8736:474;;;;;:::o;9216:180::-;9264:77;9261:1;9254:88;9361:4;9358:1;9351:15;9385:4;9382:1;9375:15;9402:320;9446:6;9483:1;9477:4;9473:12;9463:22;;9530:1;9524:4;9520:12;9551:18;9541:81;;9607:4;9599:6;9595:17;9585:27;;9541:81;9669:2;9661:6;9658:14;9638:18;9635:38;9632:84;;;9688:18;;:::i;:::-;9632:84;9453:269;9402:320;;;:::o;9728:182::-;9868:34;9864:1;9856:6;9852:14;9845:58;9728:182;:::o;9916:366::-;10058:3;10079:67;10143:2;10138:3;10079:67;:::i;:::-;10072:74;;10155:93;10244:3;10155:93;:::i;:::-;10273:2;10268:3;10264:12;10257:19;;9916:366;;;:::o;10288:419::-;10454:4;10492:2;10481:9;10477:18;10469:26;;10541:9;10535:4;10531:20;10527:1;10516:9;10512:17;10505:47;10569:131;10695:4;10569:131;:::i;:::-;10561:139;;10288:419;;;:::o;10713:180::-;10761:77;10758:1;10751:88;10858:4;10855:1;10848:15;10882:4;10879:1;10872:15;10899:348;10939:7;10962:20;10980:1;10962:20;:::i;:::-;10957:25;;10996:20;11014:1;10996:20;:::i;:::-;10991:25;;11184:1;11116:66;11112:74;11109:1;11106:81;11101:1;11094:9;11087:17;11083:105;11080:131;;;11191:18;;:::i;:::-;11080:131;11239:1;11236;11232:9;11221:20;;10899:348;;;;:::o;11253:180::-;11301:77;11298:1;11291:88;11398:4;11395:1;11388:15;11422:4;11419:1;11412:15;11439:185;11479:1;11496:20;11514:1;11496:20;:::i;:::-;11491:25;;11530:20;11548:1;11530:20;:::i;:::-;11525:25;;11569:1;11559:35;;11574:18;;:::i;:::-;11559:35;11616:1;11613;11609:9;11604:14;;11439:185;;;;:::o;11630:234::-;11770:34;11766:1;11758:6;11754:14;11747:58;11839:17;11834:2;11826:6;11822:15;11815:42;11630:234;:::o;11870:366::-;12012:3;12033:67;12097:2;12092:3;12033:67;:::i;:::-;12026:74;;12109:93;12198:3;12109:93;:::i;:::-;12227:2;12222:3;12218:12;12211:19;;11870:366;;;:::o;12242:419::-;12408:4;12446:2;12435:9;12431:18;12423:26;;12495:9;12489:4;12485:20;12481:1;12470:9;12466:17;12459:47;12523:131;12649:4;12523:131;:::i;:::-;12515:139;;12242:419;;;:::o;12667:305::-;12707:3;12726:20;12744:1;12726:20;:::i;:::-;12721:25;;12760:20;12778:1;12760:20;:::i;:::-;12755:25;;12914:1;12846:66;12842:74;12839:1;12836:81;12833:107;;;12920:18;;:::i;:::-;12833:107;12964:1;12961;12957:9;12950:16;;12667:305;;;;:::o;12978:179::-;13118:31;13114:1;13106:6;13102:14;13095:55;12978:179;:::o;13163:366::-;13305:3;13326:67;13390:2;13385:3;13326:67;:::i;:::-;13319:74;;13402:93;13491:3;13402:93;:::i;:::-;13520:2;13515:3;13511:12;13504:19;;13163:366;;;:::o;13535:419::-;13701:4;13739:2;13728:9;13724:18;13716:26;;13788:9;13782:4;13778:20;13774:1;13763:9;13759:17;13752:47;13816:131;13942:4;13816:131;:::i;:::-;13808:139;;13535:419;;;:::o;13960:244::-;14100:34;14096:1;14088:6;14084:14;14077:58;14169:27;14164:2;14156:6;14152:15;14145:52;13960:244;:::o;14210:366::-;14352:3;14373:67;14437:2;14432:3;14373:67;:::i;:::-;14366:74;;14449:93;14538:3;14449:93;:::i;:::-;14567:2;14562:3;14558:12;14551:19;;14210:366;;;:::o;14582:419::-;14748:4;14786:2;14775:9;14771:18;14763:26;;14835:9;14829:4;14825:20;14821:1;14810:9;14806:17;14799:47;14863:131;14989:4;14863:131;:::i;:::-;14855:139;;14582:419;;;:::o;15007:143::-;15064:5;15095:6;15089:13;15080:22;;15111:33;15138:5;15111:33;:::i;:::-;15007:143;;;;:::o;15156:351::-;15226:6;15275:2;15263:9;15254:7;15250:23;15246:32;15243:119;;;15281:79;;:::i;:::-;15243:119;15401:1;15426:64;15482:7;15473:6;15462:9;15458:22;15426:64;:::i;:::-;15416:74;;15372:128;15156:351;;;;:::o;15513:332::-;15634:4;15672:2;15661:9;15657:18;15649:26;;15685:71;15753:1;15742:9;15738:17;15729:6;15685:71;:::i;:::-;15766:72;15834:2;15823:9;15819:18;15810:6;15766:72;:::i;:::-;15513:332;;;;;:::o;15851:223::-;15991:34;15987:1;15979:6;15975:14;15968:58;16060:6;16055:2;16047:6;16043:15;16036:31;15851:223;:::o;16080:366::-;16222:3;16243:67;16307:2;16302:3;16243:67;:::i;:::-;16236:74;;16319:93;16408:3;16319:93;:::i;:::-;16437:2;16432:3;16428:12;16421:19;;16080:366;;;:::o;16452:419::-;16618:4;16656:2;16645:9;16641:18;16633:26;;16705:9;16699:4;16695:20;16691:1;16680:9;16676:17;16669:47;16733:131;16859:4;16733:131;:::i;:::-;16725:139;;16452:419;;;:::o;16877:240::-;17017:34;17013:1;17005:6;17001:14;16994:58;17086:23;17081:2;17073:6;17069:15;17062:48;16877:240;:::o;17123:366::-;17265:3;17286:67;17350:2;17345:3;17286:67;:::i;:::-;17279:74;;17362:93;17451:3;17362:93;:::i;:::-;17480:2;17475:3;17471:12;17464:19;;17123:366;;;:::o;17495:419::-;17661:4;17699:2;17688:9;17684:18;17676:26;;17748:9;17742:4;17738:20;17734:1;17723:9;17719:17;17712:47;17776:131;17902:4;17776:131;:::i;:::-;17768:139;;17495:419;;;:::o;17920:239::-;18060:34;18056:1;18048:6;18044:14;18037:58;18129:22;18124:2;18116:6;18112:15;18105:47;17920:239;:::o;18165:366::-;18307:3;18328:67;18392:2;18387:3;18328:67;:::i;:::-;18321:74;;18404:93;18493:3;18404:93;:::i;:::-;18522:2;18517:3;18513:12;18506:19;;18165:366;;;:::o;18537:419::-;18703:4;18741:2;18730:9;18726:18;18718:26;;18790:9;18784:4;18780:20;18776:1;18765:9;18761:17;18754:47;18818:131;18944:4;18818:131;:::i;:::-;18810:139;;18537:419;;;:::o;18962:179::-;19102:31;19098:1;19090:6;19086:14;19079:55;18962:179;:::o;19147:366::-;19289:3;19310:67;19374:2;19369:3;19310:67;:::i;:::-;19303:74;;19386:93;19475:3;19386:93;:::i;:::-;19504:2;19499:3;19495:12;19488:19;;19147:366;;;:::o;19519:419::-;19685:4;19723:2;19712:9;19708:18;19700:26;;19772:9;19766:4;19762:20;19758:1;19747:9;19743:17;19736:47;19800:131;19926:4;19800:131;:::i;:::-;19792:139;;19519:419;;;:::o;19944:225::-;20084:34;20080:1;20072:6;20068:14;20061:58;20153:8;20148:2;20140:6;20136:15;20129:33;19944:225;:::o;20175:366::-;20317:3;20338:67;20402:2;20397:3;20338:67;:::i;:::-;20331:74;;20414:93;20503:3;20414:93;:::i;:::-;20532:2;20527:3;20523:12;20516:19;;20175:366;;;:::o;20547:419::-;20713:4;20751:2;20740:9;20736:18;20728:26;;20800:9;20794:4;20790:20;20786:1;20775:9;20771:17;20764:47;20828:131;20954:4;20828:131;:::i;:::-;20820:139;;20547:419;;;:::o;20972:177::-;21112:29;21108:1;21100:6;21096:14;21089:53;20972:177;:::o;21155:366::-;21297:3;21318:67;21382:2;21377:3;21318:67;:::i;:::-;21311:74;;21394:93;21483:3;21394:93;:::i;:::-;21512:2;21507:3;21503:12;21496:19;;21155:366;;;:::o;21527:419::-;21693:4;21731:2;21720:9;21716:18;21708:26;;21780:9;21774:4;21770:20;21766:1;21755:9;21751:17;21744:47;21808:131;21934:4;21808:131;:::i;:::-;21800:139;;21527:419;;;:::o;21952:223::-;22092:34;22088:1;22080:6;22076:14;22069:58;22161:6;22156:2;22148:6;22144:15;22137:31;21952:223;:::o;22181:366::-;22323:3;22344:67;22408:2;22403:3;22344:67;:::i;:::-;22337:74;;22420:93;22509:3;22420:93;:::i;:::-;22538:2;22533:3;22529:12;22522:19;;22181:366;;;:::o;22553:419::-;22719:4;22757:2;22746:9;22742:18;22734:26;;22806:9;22800:4;22796:20;22792:1;22781:9;22777:17;22770:47;22834:131;22960:4;22834:131;:::i;:::-;22826:139;;22553:419;;;:::o;22978:221::-;23118:34;23114:1;23106:6;23102:14;23095:58;23187:4;23182:2;23174:6;23170:15;23163:29;22978:221;:::o;23205:366::-;23347:3;23368:67;23432:2;23427:3;23368:67;:::i;:::-;23361:74;;23444:93;23533:3;23444:93;:::i;:::-;23562:2;23557:3;23553:12;23546:19;;23205:366;;;:::o;23577:419::-;23743:4;23781:2;23770:9;23766:18;23758:26;;23830:9;23824:4;23820:20;23816:1;23805:9;23801:17;23794:47;23858:131;23984:4;23858:131;:::i;:::-;23850:139;;23577:419;;;:::o;24002:224::-;24142:34;24138:1;24130:6;24126:14;24119:58;24211:7;24206:2;24198:6;24194:15;24187:32;24002:224;:::o;24232:366::-;24374:3;24395:67;24459:2;24454:3;24395:67;:::i;:::-;24388:74;;24471:93;24560:3;24471:93;:::i;:::-;24589:2;24584:3;24580:12;24573:19;;24232:366;;;:::o;24604:419::-;24770:4;24808:2;24797:9;24793:18;24785:26;;24857:9;24851:4;24847:20;24843:1;24832:9;24828:17;24821:47;24885:131;25011:4;24885:131;:::i;:::-;24877:139;;24604:419;;;:::o;25029:222::-;25169:34;25165:1;25157:6;25153:14;25146:58;25238:5;25233:2;25225:6;25221:15;25214:30;25029:222;:::o;25257:366::-;25399:3;25420:67;25484:2;25479:3;25420:67;:::i;:::-;25413:74;;25496:93;25585:3;25496:93;:::i;:::-;25614:2;25609:3;25605:12;25598:19;;25257:366;;;:::o;25629:419::-;25795:4;25833:2;25822:9;25818:18;25810:26;;25882:9;25876:4;25872:20;25868:1;25857:9;25853:17;25846:47;25910:131;26036:4;25910:131;:::i;:::-;25902:139;;25629:419;;;:::o;26054:172::-;26194:24;26190:1;26182:6;26178:14;26171:48;26054:172;:::o;26232:366::-;26374:3;26395:67;26459:2;26454:3;26395:67;:::i;:::-;26388:74;;26471:93;26560:3;26471:93;:::i;:::-;26589:2;26584:3;26580:12;26573:19;;26232:366;;;:::o;26604:419::-;26770:4;26808:2;26797:9;26793:18;26785:26;;26857:9;26851:4;26847:20;26843:1;26832:9;26828:17;26821:47;26885:131;27011:4;26885:131;:::i;:::-;26877:139;;26604:419;;;:::o;27029:297::-;27169:34;27165:1;27157:6;27153:14;27146:58;27238:34;27233:2;27225:6;27221:15;27214:59;27307:11;27302:2;27294:6;27290:15;27283:36;27029:297;:::o;27332:366::-;27474:3;27495:67;27559:2;27554:3;27495:67;:::i;:::-;27488:74;;27571:93;27660:3;27571:93;:::i;:::-;27689:2;27684:3;27680:12;27673:19;;27332:366;;;:::o;27704:419::-;27870:4;27908:2;27897:9;27893:18;27885:26;;27957:9;27951:4;27947:20;27943:1;27932:9;27928:17;27921:47;27985:131;28111:4;27985:131;:::i;:::-;27977:139;;27704:419;;;:::o;28129:240::-;28269:34;28265:1;28257:6;28253:14;28246:58;28338:23;28333:2;28325:6;28321:15;28314:48;28129:240;:::o;28375:366::-;28517:3;28538:67;28602:2;28597:3;28538:67;:::i;:::-;28531:74;;28614:93;28703:3;28614:93;:::i;:::-;28732:2;28727:3;28723:12;28716:19;;28375:366;;;:::o;28747:419::-;28913:4;28951:2;28940:9;28936:18;28928:26;;29000:9;28994:4;28990:20;28986:1;28975:9;28971:17;28964:47;29028:131;29154:4;29028:131;:::i;:::-;29020:139;;28747:419;;;:::o;29172:169::-;29312:21;29308:1;29300:6;29296:14;29289:45;29172:169;:::o;29347:366::-;29489:3;29510:67;29574:2;29569:3;29510:67;:::i;:::-;29503:74;;29586:93;29675:3;29586:93;:::i;:::-;29704:2;29699:3;29695:12;29688:19;;29347:366;;;:::o;29719:419::-;29885:4;29923:2;29912:9;29908:18;29900:26;;29972:9;29966:4;29962:20;29958:1;29947:9;29943:17;29936:47;30000:131;30126:4;30000:131;:::i;:::-;29992:139;;29719:419;;;:::o;30144:241::-;30284:34;30280:1;30272:6;30268:14;30261:58;30353:24;30348:2;30340:6;30336:15;30329:49;30144:241;:::o;30391:366::-;30533:3;30554:67;30618:2;30613:3;30554:67;:::i;:::-;30547:74;;30630:93;30719:3;30630:93;:::i;:::-;30748:2;30743:3;30739:12;30732:19;;30391:366;;;:::o;30763:419::-;30929:4;30967:2;30956:9;30952:18;30944:26;;31016:9;31010:4;31006:20;31002:1;30991:9;30987:17;30980:47;31044:131;31170:4;31044:131;:::i;:::-;31036:139;;30763:419;;;:::o;31188:191::-;31228:4;31248:20;31266:1;31248:20;:::i;:::-;31243:25;;31282:20;31300:1;31282:20;:::i;:::-;31277:25;;31321:1;31318;31315:8;31312:34;;;31326:18;;:::i;:::-;31312:34;31371:1;31368;31364:9;31356:17;;31188:191;;;;:::o;31385:147::-;31486:11;31523:3;31508:18;;31385:147;;;;:::o;31538:114::-;;:::o;31658:398::-;31817:3;31838:83;31919:1;31914:3;31838:83;:::i;:::-;31831:90;;31930:93;32019:3;31930:93;:::i;:::-;32048:1;32043:3;32039:11;32032:18;;31658:398;;;:::o;32062:379::-;32246:3;32268:147;32411:3;32268:147;:::i;:::-;32261:154;;32432:3;32425:10;;32062:379;;;:::o;32447:442::-;32596:4;32634:2;32623:9;32619:18;32611:26;;32647:71;32715:1;32704:9;32700:17;32691:6;32647:71;:::i;:::-;32728:72;32796:2;32785:9;32781:18;32772:6;32728:72;:::i;:::-;32810;32878:2;32867:9;32863:18;32854:6;32810:72;:::i;:::-;32447:442;;;;;;:::o;32895:220::-;33035:34;33031:1;33023:6;33019:14;33012:58;33104:3;33099:2;33091:6;33087:15;33080:28;32895:220;:::o;33121:366::-;33263:3;33284:67;33348:2;33343:3;33284:67;:::i;:::-;33277:74;;33360:93;33449:3;33360:93;:::i;:::-;33478:2;33473:3;33469:12;33462:19;;33121:366;;;:::o;33493:419::-;33659:4;33697:2;33686:9;33682:18;33674:26;;33746:9;33740:4;33736:20;33732:1;33721:9;33717:17;33710:47;33774:131;33900:4;33774:131;:::i;:::-;33766:139;;33493:419;;;:::o;33918:180::-;33966:77;33963:1;33956:88;34063:4;34060:1;34053:15;34087:4;34084:1;34077:15;34104:180;34152:77;34149:1;34142:88;34249:4;34246:1;34239:15;34273:4;34270:1;34263:15;34290:85;34335:7;34364:5;34353:16;;34290:85;;;:::o;34381:158::-;34439:9;34472:61;34490:42;34499:32;34525:5;34499:32;:::i;:::-;34490:42;:::i;:::-;34472:61;:::i;:::-;34459:74;;34381:158;;;:::o;34545:147::-;34640:45;34679:5;34640:45;:::i;:::-;34635:3;34628:58;34545:147;;:::o;34698:114::-;34765:6;34799:5;34793:12;34783:22;;34698:114;;;:::o;34818:184::-;34917:11;34951:6;34946:3;34939:19;34991:4;34986:3;34982:14;34967:29;;34818:184;;;;:::o;35008:132::-;35075:4;35098:3;35090:11;;35128:4;35123:3;35119:14;35111:22;;35008:132;;;:::o;35146:108::-;35223:24;35241:5;35223:24;:::i;:::-;35218:3;35211:37;35146:108;;:::o;35260:179::-;35329:10;35350:46;35392:3;35384:6;35350:46;:::i;:::-;35428:4;35423:3;35419:14;35405:28;;35260:179;;;;:::o;35445:113::-;35515:4;35547;35542:3;35538:14;35530:22;;35445:113;;;:::o;35594:732::-;35713:3;35742:54;35790:5;35742:54;:::i;:::-;35812:86;35891:6;35886:3;35812:86;:::i;:::-;35805:93;;35922:56;35972:5;35922:56;:::i;:::-;36001:7;36032:1;36017:284;36042:6;36039:1;36036:13;36017:284;;;36118:6;36112:13;36145:63;36204:3;36189:13;36145:63;:::i;:::-;36138:70;;36231:60;36284:6;36231:60;:::i;:::-;36221:70;;36077:224;36064:1;36061;36057:9;36052:14;;36017:284;;;36021:14;36317:3;36310:10;;35718:608;;;35594:732;;;;:::o;36332:831::-;36595:4;36633:3;36622:9;36618:19;36610:27;;36647:71;36715:1;36704:9;36700:17;36691:6;36647:71;:::i;:::-;36728:80;36804:2;36793:9;36789:18;36780:6;36728:80;:::i;:::-;36855:9;36849:4;36845:20;36840:2;36829:9;36825:18;36818:48;36883:108;36986:4;36977:6;36883:108;:::i;:::-;36875:116;;37001:72;37069:2;37058:9;37054:18;37045:6;37001:72;:::i;:::-;37083:73;37151:3;37140:9;37136:19;37127:6;37083:73;:::i;:::-;36332:831;;;;;;;;:::o;37169:807::-;37418:4;37456:3;37445:9;37441:19;37433:27;;37470:71;37538:1;37527:9;37523:17;37514:6;37470:71;:::i;:::-;37551:72;37619:2;37608:9;37604:18;37595:6;37551:72;:::i;:::-;37633:80;37709:2;37698:9;37694:18;37685:6;37633:80;:::i;:::-;37723;37799:2;37788:9;37784:18;37775:6;37723:80;:::i;:::-;37813:73;37881:3;37870:9;37866:19;37857:6;37813:73;:::i;:::-;37896;37964:3;37953:9;37949:19;37940:6;37896:73;:::i;:::-;37169:807;;;;;;;;;:::o;37982:143::-;38039:5;38070:6;38064:13;38055:22;;38086:33;38113:5;38086:33;:::i;:::-;37982:143;;;;:::o;38131:663::-;38219:6;38227;38235;38284:2;38272:9;38263:7;38259:23;38255:32;38252:119;;;38290:79;;:::i;:::-;38252:119;38410:1;38435:64;38491:7;38482:6;38471:9;38467:22;38435:64;:::i;:::-;38425:74;;38381:128;38548:2;38574:64;38630:7;38621:6;38610:9;38606:22;38574:64;:::i;:::-;38564:74;;38519:129;38687:2;38713:64;38769:7;38760:6;38749:9;38745:22;38713:64;:::i;:::-;38703:74;;38658:129;38131:663;;;;;:::o

Metadata Hash

ipfs://27fc0e72f98aa6eb3649a81aeee1a595cb01e1701bfc7225774fb27007c7363d
Loading