ETH Price: $3,372.39 (+2.98%)
Gas: 3 Gwei

Contract

0xd1d1D8b4eA60c28bB0A82B0f2fB832Ac68778e8f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve167168912023-02-27 3:35:11518 days ago1677468911IN
0xd1d1D8b4...c68778e8f
0 ETH0.0008449717.90131877
Approve163461052023-01-06 6:58:59570 days ago1672988339IN
0xd1d1D8b4...c68778e8f
0 ETH0.0007550515.97596294
Approve158558262022-10-29 19:33:59638 days ago1667072039IN
0xd1d1D8b4...c68778e8f
0 ETH0.0007089315
Approve157934922022-10-21 2:27:47647 days ago1666319267IN
0xd1d1D8b4...c68778e8f
0 ETH0.0024039950.86537722
Approve157012902022-10-08 5:30:35660 days ago1665207035IN
0xd1d1D8b4...c68778e8f
0 ETH0.000232464.91861442
Approve156792492022-10-05 3:33:35663 days ago1664940815IN
0xd1d1D8b4...c68778e8f
0 ETH0.000388648.22316397
Approve156735702022-10-04 8:25:47664 days ago1664871947IN
0xd1d1D8b4...c68778e8f
0 ETH0.000454689.62052478
Approve156735602022-10-04 8:23:47664 days ago1664871827IN
0xd1d1D8b4...c68778e8f
0 ETH0.000376787.97232201
Approve156735542022-10-04 8:22:35664 days ago1664871755IN
0xd1d1D8b4...c68778e8f
0 ETH0.000406148.59355569
Approve156698672022-10-03 19:59:59664 days ago1664827199IN
0xd1d1D8b4...c68778e8f
0 ETH0.0008342317.65132992
Approve156698412022-10-03 19:54:47664 days ago1664826887IN
0xd1d1D8b4...c68778e8f
0 ETH0.0006621214.00964588
Approve156545202022-10-01 16:32:59666 days ago1664641979IN
0xd1d1D8b4...c68778e8f
0 ETH0.0008336417.6387242
Approve156532462022-10-01 12:14:59667 days ago1664626499IN
0xd1d1D8b4...c68778e8f
0 ETH0.000401048.48547754
Approve156490642022-09-30 22:13:23667 days ago1664576003IN
0xd1d1D8b4...c68778e8f
0 ETH0.0006262213.25015845
Approve156478492022-09-30 18:09:23667 days ago1664561363IN
0xd1d1D8b4...c68778e8f
0 ETH0.0009590820.29301066
Approve156467802022-09-30 14:34:23667 days ago1664548463IN
0xd1d1D8b4...c68778e8f
0 ETH0.0009607620.32847013
Approve156466082022-09-30 13:59:59667 days ago1664546399IN
0xd1d1D8b4...c68778e8f
0 ETH0.000725215.34436121
Approve156460012022-09-30 11:57:47668 days ago1664539067IN
0xd1d1D8b4...c68778e8f
0 ETH0.0005974212.64061107
Approve156455342022-09-30 10:24:23668 days ago1664533463IN
0xd1d1D8b4...c68778e8f
0 ETH0.000386368.17494367
Approve156455342022-09-30 10:24:23668 days ago1664533463IN
0xd1d1D8b4...c68778e8f
0 ETH0.000419888.8841278
Approve156441272022-09-30 5:40:47668 days ago1664516447IN
0xd1d1D8b4...c68778e8f
0 ETH0.000450199.52541324
Approve156432012022-09-30 2:34:23668 days ago1664505263IN
0xd1d1D8b4...c68778e8f
0 ETH0.0004996510.57203347
Approve156420572022-09-29 22:44:59668 days ago1664491499IN
0xd1d1D8b4...c68778e8f
0 ETH0.0005356411.33362828
Approve156413072022-09-29 20:13:23668 days ago1664482403IN
0xd1d1D8b4...c68778e8f
0 ETH0.0016941935.84682691
Approve156412962022-09-29 20:11:11668 days ago1664482271IN
0xd1d1D8b4...c68778e8f
0 ETH0.0017819237.70315461
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
157012922022-10-08 5:30:59660 days ago1665207059
0xd1d1D8b4...c68778e8f
0.00327429 ETH
157012922022-10-08 5:30:59660 days ago1665207059
0xd1d1D8b4...c68778e8f
0.00327429 ETH
156735602022-10-04 8:23:47664 days ago1664871827
0xd1d1D8b4...c68778e8f
0.00384158 ETH
156735602022-10-04 8:23:47664 days ago1664871827
0xd1d1D8b4...c68778e8f
0.00384158 ETH
156567322022-10-02 0:00:11666 days ago1664668811
0xd1d1D8b4...c68778e8f
0.00456024 ETH
156567322022-10-02 0:00:11666 days ago1664668811
0xd1d1D8b4...c68778e8f
0.00456024 ETH
156463302022-09-30 13:04:23668 days ago1664543063
0xd1d1D8b4...c68778e8f
0.00056772 ETH
156463302022-09-30 13:04:23668 days ago1664543063
0xd1d1D8b4...c68778e8f
0.00035671 ETH
156463302022-09-30 13:04:23668 days ago1664543063
0xd1d1D8b4...c68778e8f
0.00563654 ETH
156463302022-09-30 13:04:23668 days ago1664543063
0xd1d1D8b4...c68778e8f
0.00021101 ETH
156463302022-09-30 13:04:23668 days ago1664543063
0xd1d1D8b4...c68778e8f
0.00605857 ETH
156408172022-09-29 18:34:35668 days ago1664476475
0xd1d1D8b4...c68778e8f
0.0424161 ETH
156408172022-09-29 18:34:35668 days ago1664476475
0xd1d1D8b4...c68778e8f
0.01266984 ETH
156408172022-09-29 18:34:35668 days ago1664476475
0xd1d1D8b4...c68778e8f
0.03164761 ETH
156408172022-09-29 18:34:35668 days ago1664476475
0xd1d1D8b4...c68778e8f
0.02974626 ETH
156408172022-09-29 18:34:35668 days ago1664476475
0xd1d1D8b4...c68778e8f
0.09114013 ETH
156401632022-09-29 16:22:47668 days ago1664468567
0xd1d1D8b4...c68778e8f
0.03674858 ETH
156401632022-09-29 16:22:47668 days ago1664468567
0xd1d1D8b4...c68778e8f
0.01108345 ETH
156401632022-09-29 16:22:47668 days ago1664468567
0xd1d1D8b4...c68778e8f
0.02797881 ETH
156401632022-09-29 16:22:47668 days ago1664468567
0xd1d1D8b4...c68778e8f
0.02566512 ETH
156401632022-09-29 16:22:47668 days ago1664468567
0xd1d1D8b4...c68778e8f
0.07930906 ETH
156400842022-09-29 16:06:59668 days ago1664467619
0xd1d1D8b4...c68778e8f
0.10189511 ETH
156400842022-09-29 16:06:59668 days ago1664467619
0xd1d1D8b4...c68778e8f
0.03021759 ETH
156400842022-09-29 16:06:59668 days ago1664467619
0xd1d1D8b4...c68778e8f
0.07347467 ETH
156400842022-09-29 16:06:59668 days ago1664467619
0xd1d1D8b4...c68778e8f
0.07167752 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SARU

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 2022-09-29
*/

// SPDX-License-Identifier: Unlicensed

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;
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
 
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IERC20 {
   
    function totalSupply() external view returns (uint256);
    
    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);

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

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

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

    function name() external view returns (string memory);
 
    function symbol() external view returns (string memory);
 
    function decimals() external view returns (uint8);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;
 
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
 
    function name() public view virtual override returns (string memory) {
        return _name;
    }
 
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
 
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
 
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
 
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
 
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        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) {
        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;
}
 
contract SARU is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private swapping;
 
    address private marketingWallet;
    address private devWallet;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public enableEarlySellTax = true;
 
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
 
    mapping (address => uint256) private _holderFirstBuyTimestamp;
 
    mapping (address => bool) private _blacklist;
    bool public transferDelayEnabled = true;
 
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
 
    uint256 public earlySellLiquidityFee;
    uint256 public earlySellMarketingFee;
    uint256 public earlySellDevFee;
 
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    uint256 launchedAt;
 
    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 devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20("GUARDIAN OF THE MERGE", "SARU") { //ticker need same as constructor name
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 _buyMarketingFee = 2;
        uint256 _buyLiquidityFee = 2;
        uint256 _buyDevFee = 2;
 
        uint256 _sellMarketingFee = 2;
        uint256 _sellLiquidityFee = 2;
        uint256 _sellDevFee = 2;
 
        uint256 _earlySellLiquidityFee = 0;
        uint256 _earlySellMarketingFee = 0;
	    uint256 _earlySellDevFee = 0; 
        
        uint256 totalSupply = 1 * 1e6 * 1e18;
 
        maxTransactionAmount = totalSupply * 15 / 1000; // 1.5% maxTransactionAmountTxn
        maxWallet = totalSupply * 45 / 1000; // 4.5% maxWallet
        swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
 
        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellMarketingFee = _earlySellMarketingFee;
	    earlySellDevFee = _earlySellDevFee;
 
        marketingWallet = address(owner()); 
        devWallet = address(owner()); 
 
        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 enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
    function setEarlySellTax(bool onoff) external onlyOwner  {
        enableEarlySellTax = onoff;
    }
 
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
 
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }
 
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _earlySellLiquidityFee, uint256 _earlySellMarketingFee, uint256 _earlySellDevFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        earlySellLiquidityFee = _earlySellLiquidityFee;
        earlySellMarketingFee = _earlySellMarketingFee;
	    earlySellDevFee = _earlySellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        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 blacklistthebots (address account, bool isBlacklisted) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    event BoughtEarly(address indexed sniper);
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                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;
                    }
                }
 
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                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");
                }
            }
        }
 
        if (block.number <= (launchedAt + 0) && 
                to != uniswapV2Pair && 
                to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
            ) { 
            _blacklist[to] = true;
        }
 
        bool isBuy = from == uniswapV2Pair;
        if (!isBuy && enableEarlySellTax) {
            if (_holderFirstBuyTimestamp[from] != 0 &&
                (_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp))  {
                sellLiquidityFee = earlySellLiquidityFee;
                sellMarketingFee = earlySellMarketingFee;
		        sellDevFee = earlySellDevFee;
                sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
            } else {
                sellLiquidityFee = 2;
                sellMarketingFee = 0;
                sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
            }
        } else {
            if (_holderFirstBuyTimestamp[to] == 0) {
                _holderFirstBuyTimestamp[to] = block.timestamp;
            }
 
            if (!enableEarlySellTax) {
                sellLiquidityFee = 2;
                sellMarketingFee = 0;
		        sellDevFee = 0;
                sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
            }
        }
 
        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(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        if(takeFee){
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
 
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
}

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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistthebots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280601581526020017f475541524449414e204f4620544845204d4552474500000000000000000000008152506040518060400160405280600481526020017f534152550000000000000000000000000000000000000000000000000000000081525081600390805190602001906200011d92919062000bf7565b5080600490805190602001906200013692919062000bf7565b50505060006200014b620006c360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000216816001620006cb60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029157600080fd5b505afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc919062000d11565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000d11565b6040518363ffffffff1660e01b81526004016200038992919062000d54565b602060405180830381600087803b158015620003a457600080fd5b505af1158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d11565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200042760a0516001620006cb60201b60201c565b6200043c60a0516001620007c860201b60201c565b60006002905060006002905060006002905060006002905060006002905060006002905060008060008069d3c21bcecceda100000090506103e8600f8262000485919062000dba565b62000491919062000e4a565b6008819055506103e8602d82620004a9919062000dba565b620004b5919062000e4a565b600a81905550612710600a82620004cd919062000dba565b620004d9919062000e4a565b60098190555089601181905550886012819055508760138190555060135460125460115462000509919062000e82565b62000515919062000e82565b60108190555086601581905550856016819055508460178190555060175460165460155462000545919062000e82565b62000551919062000e82565b601481905550836018819055508260198190555081601a819055506200057c6200086960201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005cc6200086960201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200062e620006206200086960201b60201c565b60016200089360201b60201c565b620006413060016200089360201b60201c565b6200065661dead60016200089360201b60201c565b620006786200066a6200086960201b60201c565b6001620006cb60201b60201c565b6200068b306001620006cb60201b60201c565b620006a061dead6001620006cb60201b60201c565b620006b23382620009e060201b60201c565b505050505050505050505062001113565b600033905090565b620006db620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200076d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007649062000f40565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a3620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092c9062000f40565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d4919062000f7f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4a9062000fec565b60405180910390fd5b62000a676000838362000b8f60201b60201c565b62000a838160025462000b9460201b620027ed1790919060201c565b60028190555062000ae1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b9460201b620027ed1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b8391906200101f565b60405180910390a35050565b505050565b600080828462000ba5919062000e82565b90508381101562000bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be4906200108c565b60405180910390fd5b8091505092915050565b82805462000c0590620010dd565b90600052602060002090601f01602090048101928262000c29576000855562000c75565b82601f1062000c4457805160ff191683800117855562000c75565b8280016001018555821562000c75579182015b8281111562000c7457825182559160200191906001019062000c57565b5b50905062000c84919062000c88565b5090565b5b8082111562000ca357600081600090555060010162000c89565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cd98262000cac565b9050919050565b62000ceb8162000ccc565b811462000cf757600080fd5b50565b60008151905062000d0b8162000ce0565b92915050565b60006020828403121562000d2a5762000d2962000ca7565b5b600062000d3a8482850162000cfa565b91505092915050565b62000d4e8162000ccc565b82525050565b600060408201905062000d6b600083018562000d43565b62000d7a602083018462000d43565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dc78262000d81565b915062000dd48362000d81565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e105762000e0f62000d8b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e578262000d81565b915062000e648362000d81565b92508262000e775762000e7662000e1b565b5b828204905092915050565b600062000e8f8262000d81565b915062000e9c8362000d81565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ed45762000ed362000d8b565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f2860208362000edf565b915062000f358262000ef0565b602082019050919050565b6000602082019050818103600083015262000f5b8162000f19565b9050919050565b60008115159050919050565b62000f798162000f62565b82525050565b600060208201905062000f96600083018462000f6e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fd4601f8362000edf565b915062000fe18262000f9c565b602082019050919050565b60006020820190508181036000830152620010078162000fc5565b9050919050565b620010198162000d81565b82525050565b60006020820190506200103660008301846200100e565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001074601b8362000edf565b915062001081826200103c565b602082019050919050565b60006020820190508181036000830152620010a78162001065565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010f657607f821691505b602082108114156200110d576200110c620010ae565b5b50919050565b60805160a051615c726200117f600039600081816113f601528181611bf201528181612eb9015281816132d901526133d6015260008181610e6e01528181612e6101528181614352015281816144420152818161446901528181614505015261452c0152615c726000f3fe60806040526004361061037a5760003560e01c806392136913116101d1578063bbc0c74211610102578063d85ba063116100a0578063f11a24d31161006f578063f11a24d314610cf3578063f2fde38b14610d1e578063f637434214610d47578063f8b45b0514610d7257610381565b8063d85ba06314610c35578063dd62ed3e14610c60578063e2f4560514610c9d578063e884f26014610cc857610381565b8063c18bc195116100dc578063c18bc19514610b79578063c876d0b914610ba2578063c8c8ebe414610bcd578063d257b34f14610bf857610381565b8063bbc0c74214610afc578063bd6b704314610b27578063c024666814610b5057610381565b8063a26577781161016f578063a7fc9e2111610149578063a7fc9e2114610a2e578063a9059cbb14610a59578063aacebbe314610a96578063b62496f514610abf57610381565b8063a26577781461099d578063a457c2d7146109c6578063a4d15b6414610a0357610381565b80639a7a23d6116101ab5780639a7a23d6146108f35780639c3b4fdc1461091c5780639fccce3214610947578063a0d82dc51461097257610381565b80639213691314610874578063924de9b71461089f57806395d89b41146108c857610381565b806349bd5a5e116102ab578063715018a6116102495780637bce5a04116102235780637bce5a04146107de5780638095d564146108095780638a8c523c146108325780638da5cb5b1461084957610381565b8063715018a614610773578063751039fc1461078a5780637571336a146107b557610381565b8063541a43cf11610285578063541a43cf146106b55780636a486a8e146106e05780636ddd17131461070b57806370a082311461073657610381565b806349bd5a5e146106225780634a62bb651461064d5780634fbee1931461067857610381565b80631f3fed8f1161031857806323b872dd116102f257806323b872dd146105525780632bf3d42d1461058f578063313ce567146105ba57806339509351146105e557610381565b80631f3fed8f146104d5578063203e727e1461050057806322d3e2aa1461052957610381565b80631694505e116103545780631694505e1461042b57806318160ddd146104565780631816467f146104815780631a8145bb146104aa57610381565b806306fdde0314610386578063095ea7b3146103b157806310d5de53146103ee57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d9d565b6040516103a891906146e4565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d3919061479f565b610e2f565b6040516103e591906147fa565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614815565b610e4d565b60405161042291906147fa565b60405180910390f35b34801561043757600080fd5b50610440610e6c565b60405161044d91906148a1565b60405180910390f35b34801561046257600080fd5b5061046b610e90565b60405161047891906148cb565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190614815565b610e9a565b005b3480156104b657600080fd5b506104bf610ff1565b6040516104cc91906148cb565b60405180910390f35b3480156104e157600080fd5b506104ea610ff7565b6040516104f791906148cb565b60405180910390f35b34801561050c57600080fd5b50610527600480360381019061052291906148e6565b610ffd565b005b34801561053557600080fd5b50610550600480360381019061054b9190614913565b611127565b005b34801561055e57600080fd5b50610579600480360381019061057491906149a0565b611259565b60405161058691906147fa565b60405180910390f35b34801561059b57600080fd5b506105a4611332565b6040516105b191906148cb565b60405180910390f35b3480156105c657600080fd5b506105cf611338565b6040516105dc9190614a0f565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061479f565b611341565b60405161061991906147fa565b60405180910390f35b34801561062e57600080fd5b506106376113f4565b6040516106449190614a39565b60405180910390f35b34801561065957600080fd5b50610662611418565b60405161066f91906147fa565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190614815565b61142b565b6040516106ac91906147fa565b60405180910390f35b3480156106c157600080fd5b506106ca611481565b6040516106d791906148cb565b60405180910390f35b3480156106ec57600080fd5b506106f5611487565b60405161070291906148cb565b60405180910390f35b34801561071757600080fd5b5061072061148d565b60405161072d91906147fa565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190614815565b6114a0565b60405161076a91906148cb565b60405180910390f35b34801561077f57600080fd5b506107886114e8565b005b34801561079657600080fd5b5061079f611640565b6040516107ac91906147fa565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190614a80565b6116fb565b005b3480156107ea57600080fd5b506107f36117ed565b60405161080091906148cb565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190614ac0565b6117f3565b005b34801561083e57600080fd5b5061084761190d565b005b34801561085557600080fd5b5061085e6119e3565b60405161086b9190614a39565b60405180910390f35b34801561088057600080fd5b50610889611a0d565b60405161089691906148cb565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c19190614b13565b611a13565b005b3480156108d457600080fd5b506108dd611ac7565b6040516108ea91906146e4565b60405180910390f35b3480156108ff57600080fd5b5061091a60048036038101906109159190614a80565b611b59565b005b34801561092857600080fd5b50610931611c8d565b60405161093e91906148cb565b60405180910390f35b34801561095357600080fd5b5061095c611c93565b60405161096991906148cb565b60405180910390f35b34801561097e57600080fd5b50610987611c99565b60405161099491906148cb565b60405180910390f35b3480156109a957600080fd5b506109c460048036038101906109bf9190614b13565b611c9f565b005b3480156109d257600080fd5b506109ed60048036038101906109e8919061479f565b611d53565b6040516109fa91906147fa565b60405180910390f35b348015610a0f57600080fd5b50610a18611e20565b604051610a2591906147fa565b60405180910390f35b348015610a3a57600080fd5b50610a43611e33565b604051610a5091906148cb565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b919061479f565b611e39565b604051610a8d91906147fa565b60405180910390f35b348015610aa257600080fd5b50610abd6004803603810190610ab89190614815565b611e57565b005b348015610acb57600080fd5b50610ae66004803603810190610ae19190614815565b611fae565b604051610af391906147fa565b60405180910390f35b348015610b0857600080fd5b50610b11611fce565b604051610b1e91906147fa565b60405180910390f35b348015610b3357600080fd5b50610b4e6004803603810190610b499190614a80565b611fe1565b005b348015610b5c57600080fd5b50610b776004803603810190610b729190614a80565b6120d3565b005b348015610b8557600080fd5b50610ba06004803603810190610b9b91906148e6565b612213565b005b348015610bae57600080fd5b50610bb761233d565b604051610bc491906147fa565b60405180910390f35b348015610bd957600080fd5b50610be2612350565b604051610bef91906148cb565b60405180910390f35b348015610c0457600080fd5b50610c1f6004803603810190610c1a91906148e6565b612356565b604051610c2c91906147fa565b60405180910390f35b348015610c4157600080fd5b50610c4a6124c6565b604051610c5791906148cb565b60405180910390f35b348015610c6c57600080fd5b50610c876004803603810190610c829190614b40565b6124cc565b604051610c9491906148cb565b60405180910390f35b348015610ca957600080fd5b50610cb2612553565b604051610cbf91906148cb565b60405180910390f35b348015610cd457600080fd5b50610cdd612559565b604051610cea91906147fa565b60405180910390f35b348015610cff57600080fd5b50610d08612614565b604051610d1591906148cb565b60405180910390f35b348015610d2a57600080fd5b50610d456004803603810190610d409190614815565b61261a565b005b348015610d5357600080fd5b50610d5c6127e1565b604051610d6991906148cb565b60405180910390f35b348015610d7e57600080fd5b50610d876127e7565b604051610d9491906148cb565b60405180910390f35b606060038054610dac90614baf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd890614baf565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b5050505050905090565b6000610e43610e3c61284b565b8484612853565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610ea261284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890614c2d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c5481565b601b5481565b61100561284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90614c2d565b60405180910390fd5b670de0b6b3a76400006103e860016110aa610e90565b6110b49190614c7c565b6110be9190614d05565b6110c89190614d05565b81101561110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190614da8565b60405180910390fd5b670de0b6b3a76400008161111e9190614c7c565b60088190555050565b61112f61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590614c2d565b60405180910390fd5b856015819055508460168190555083601781905550826018819055508160198190555080601a819055506017546016546015546111fb9190614dc8565b6112059190614dc8565b60148190555060196014541115611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890614e6a565b60405180910390fd5b505050505050565b6000611266848484612a1e565b6113278461127261284b565b61132285604051806060016040528060288152602001615bf060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112d861284b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1e9092919063ffffffff16565b612853565b600190509392505050565b60195481565b60006012905090565b60006113ea61134e61284b565b846113e5856001600061135f61284b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ed90919063ffffffff16565b612853565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f061284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690614c2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061164a61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090614c2d565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61170361284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178990614c2d565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b6117fb61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190614c2d565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546118b29190614dc8565b6118bc9190614dc8565b60108190555060146010541115611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90614ed6565b60405180910390fd5b505050565b61191561284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90614c2d565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b611a1b61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa190614c2d565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611ad690614baf565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0290614baf565b8015611b4f5780601f10611b2457610100808354040283529160200191611b4f565b820191906000526020600020905b815481529060010190602001808311611b3257829003601f168201915b5050505050905090565b611b6161284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790614c2d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7690614f68565b60405180910390fd5b611c898282613b82565b5050565b60135481565b601d5481565b60175481565b611ca761284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90614c2d565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e16611d6061284b565b84611e1185604051806060016040528060258152602001615c186025913960016000611d8a61284b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1e9092919063ffffffff16565b612853565b6001905092915050565b600b60039054906101000a900460ff1681565b601a5481565b6000611e4d611e4661284b565b8484612a1e565b6001905092915050565b611e5f61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590614c2d565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611fe961284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90614c2d565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6120db61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190614c2d565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161220791906147fa565b60405180910390a25050565b61221b61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190614c2d565b60405180910390fd5b670de0b6b3a76400006103e860056122c0610e90565b6122ca9190614c7c565b6122d49190614d05565b6122de9190614d05565b811015612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231790614ffa565b60405180910390fd5b670de0b6b3a7640000816123349190614c7c565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b600061236061284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e690614c2d565b60405180910390fd5b620186a060016123fd610e90565b6124079190614c7c565b6124119190614d05565b821015612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a9061508c565b60405180910390fd5b6103e86005612460610e90565b61246a9190614c7c565b6124749190614d05565b8211156124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad9061511e565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061256361284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e990614c2d565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b61262261284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614c2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612718906151b0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846127fc9190614dc8565b905083811015612841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128389061521c565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ba906152ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292a90615340565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a1191906148cb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a85906153d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af590615464565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ba25750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd8906154f6565b60405180910390fd5b6000811415612bfb57612bf683836000613c23565b613b19565b600b60009054906101000a900460ff16156132be57612c186119e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c865750612c566119e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cf9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d125750600560149054906101000a900460ff16155b156132bd57600b60019054906101000a900460ff16612e0c57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dcc5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0290615562565b60405180910390fd5b5b600f60009054906101000a900460ff1615612fd457612e296119e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612eb057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f0857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fd35743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f859061561a565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130775750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561311e576008548111156130c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b8906156ac565b60405180910390fd5b600a546130cd836114a0565b826130d89190614dc8565b1115613119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311090615718565b60405180910390fd5b6132bc565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131c15750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132105760085481111561320b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613202906157aa565b60405180910390fd5b6132bb565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132ba57600a5461326d836114a0565b826132789190614dc8565b11156132b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b090615718565b60405180910390fd5b5b5b5b5b5b6000601e546132cd9190614dc8565b431115801561332857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133745750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133d2576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561343f5750600b60039054906101000a900460ff165b15613562576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156134e157504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134de9190614dc8565b10155b1561352957601854601681905550601954601581905550601a546017819055506017546016546015546135149190614dc8565b61351e9190614dc8565b60148190555061355d565b6002601681905550600060158190555060175460165460155461354c9190614dc8565b6135569190614dc8565b6014819055505b613640565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156135ef5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff1661363f5760026016819055506000601581905550600060178190555060175460165460155461362e9190614dc8565b6136389190614dc8565b6014819055505b5b600061364b306114a0565b9050600060095482101590508080156136705750600b60029054906101000a900460ff165b80156136895750600560149054906101000a900460ff16155b80156136df5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137355750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561378b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137cf576001600560146101000a81548160ff0219169083151502179055506137b3613eb8565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138855750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388f57600090505b60008115613b0857602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138f257506000601454115b156139bf5761391f60646139116014548961419f90919063ffffffff16565b61421a90919063ffffffff16565b9050601454601654826139329190614c7c565b61393c9190614d05565b601c600082825461394d9190614dc8565b92505081905550601454601754826139659190614c7c565b61396f9190614d05565b601d60008282546139809190614dc8565b92505081905550601454601554826139989190614c7c565b6139a29190614d05565b601b60008282546139b39190614dc8565b92505081905550613ae4565b602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1a57506000601054115b15613ae357613a476064613a396010548961419f90919063ffffffff16565b61421a90919063ffffffff16565b905060105460125482613a5a9190614c7c565b613a649190614d05565b601c6000828254613a759190614dc8565b9250508190555060105460135482613a8d9190614c7c565b613a979190614d05565b601d6000828254613aa89190614dc8565b9250508190555060105460115482613ac09190614c7c565b613aca9190614d05565b601b6000828254613adb9190614dc8565b925050819055505b5b6000811115613af957613af8883083613c23565b5b8086613b0591906157ca565b95505b613b13888888613c23565b50505050505b505050565b6000838311158290613b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5d91906146e4565b60405180910390fd5b5060008385613b7591906157ca565b9050809150509392505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8a906153d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cfa90615464565b60405180910390fd5b613d0e838383614264565b613d7981604051806060016040528060268152602001615bca602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1e9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613eab91906148cb565b60405180910390a3505050565b6000613ec3306114a0565b90506000601d54601b54601c54613eda9190614dc8565b613ee49190614dc8565b9050600080831480613ef65750600082145b15613f035750505061419d565b6014600954613f129190614c7c565b831115613f2b576014600954613f289190614c7c565b92505b6000600283601c5486613f3e9190614c7c565b613f489190614d05565b613f529190614d05565b90506000613f69828661426990919063ffffffff16565b90506000479050613f79826142b3565b6000613f8e824761426990919063ffffffff16565b90506000613fb987613fab601b548561419f90919063ffffffff16565b61421a90919063ffffffff16565b90506000613fe488613fd6601d548661419f90919063ffffffff16565b61421a90919063ffffffff16565b90506000818385613ff591906157ca565b613fff91906157ca565b90506000601c819055506000601b819055506000601d81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161405f9061582f565b60006040518083038185875af1925050503d806000811461409c576040519150601f19603f3d011682016040523d82523d6000602084013e6140a1565b606091505b5050809850506000871180156140b75750600081115b15614104576140c687826144ff565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601c546040516140fb93929190615844565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161414a9061582f565b60006040518083038185875af1925050503d8060008114614187576040519150601f19603f3d011682016040523d82523d6000602084013e61418c565b606091505b505080985050505050505050505050505b565b6000808314156141b25760009050614214565b600082846141c09190614c7c565b90508284826141cf9190614d05565b1461420f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614206906158ed565b60405180910390fd5b809150505b92915050565b600061425c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145e8565b905092915050565b505050565b60006142ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b1e565b905092915050565b6000600267ffffffffffffffff8111156142d0576142cf61590d565b5b6040519080825280602002602001820160405280156142fe5781602001602082028036833780820191505090505b50905030816000815181106143165761431561593c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143b657600080fd5b505afa1580156143ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ee9190615980565b816001815181106144025761440161593c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614467307f000000000000000000000000000000000000000000000000000000000000000084612853565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144c9959493929190615aa6565b600060405180830381600087803b1580156144e357600080fd5b505af11580156144f7573d6000803e3d6000fd5b505050505050565b61452a307f000000000000000000000000000000000000000000000000000000000000000084612853565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161458f96959493929190615b00565b6060604051808303818588803b1580156145a857600080fd5b505af11580156145bc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145e19190615b76565b5050505050565b6000808311829061462f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161462691906146e4565b60405180910390fd5b506000838561463e9190614d05565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561468557808201518184015260208101905061466a565b83811115614694576000848401525b50505050565b6000601f19601f8301169050919050565b60006146b68261464b565b6146c08185614656565b93506146d0818560208601614667565b6146d98161469a565b840191505092915050565b600060208201905081810360008301526146fe81846146ab565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006147368261470b565b9050919050565b6147468161472b565b811461475157600080fd5b50565b6000813590506147638161473d565b92915050565b6000819050919050565b61477c81614769565b811461478757600080fd5b50565b60008135905061479981614773565b92915050565b600080604083850312156147b6576147b5614706565b5b60006147c485828601614754565b92505060206147d58582860161478a565b9150509250929050565b60008115159050919050565b6147f4816147df565b82525050565b600060208201905061480f60008301846147eb565b92915050565b60006020828403121561482b5761482a614706565b5b600061483984828501614754565b91505092915050565b6000819050919050565b600061486761486261485d8461470b565b614842565b61470b565b9050919050565b60006148798261484c565b9050919050565b600061488b8261486e565b9050919050565b61489b81614880565b82525050565b60006020820190506148b66000830184614892565b92915050565b6148c581614769565b82525050565b60006020820190506148e060008301846148bc565b92915050565b6000602082840312156148fc576148fb614706565b5b600061490a8482850161478a565b91505092915050565b60008060008060008060c087890312156149305761492f614706565b5b600061493e89828a0161478a565b965050602061494f89828a0161478a565b955050604061496089828a0161478a565b945050606061497189828a0161478a565b935050608061498289828a0161478a565b92505060a061499389828a0161478a565b9150509295509295509295565b6000806000606084860312156149b9576149b8614706565b5b60006149c786828701614754565b93505060206149d886828701614754565b92505060406149e98682870161478a565b9150509250925092565b600060ff82169050919050565b614a09816149f3565b82525050565b6000602082019050614a246000830184614a00565b92915050565b614a338161472b565b82525050565b6000602082019050614a4e6000830184614a2a565b92915050565b614a5d816147df565b8114614a6857600080fd5b50565b600081359050614a7a81614a54565b92915050565b60008060408385031215614a9757614a96614706565b5b6000614aa585828601614754565b9250506020614ab685828601614a6b565b9150509250929050565b600080600060608486031215614ad957614ad8614706565b5b6000614ae78682870161478a565b9350506020614af88682870161478a565b9250506040614b098682870161478a565b9150509250925092565b600060208284031215614b2957614b28614706565b5b6000614b3784828501614a6b565b91505092915050565b60008060408385031215614b5757614b56614706565b5b6000614b6585828601614754565b9250506020614b7685828601614754565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bc757607f821691505b60208210811415614bdb57614bda614b80565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c17602083614656565b9150614c2282614be1565b602082019050919050565b60006020820190508181036000830152614c4681614c0a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c8782614769565b9150614c9283614769565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ccb57614cca614c4d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d1082614769565b9150614d1b83614769565b925082614d2b57614d2a614cd6565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614d92602f83614656565b9150614d9d82614d36565b604082019050919050565b60006020820190508181036000830152614dc181614d85565b9050919050565b6000614dd382614769565b9150614dde83614769565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1357614e12614c4d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614e54601d83614656565b9150614e5f82614e1e565b602082019050919050565b60006020820190508181036000830152614e8381614e47565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614ec0601d83614656565b9150614ecb82614e8a565b602082019050919050565b60006020820190508181036000830152614eef81614eb3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614f52603983614656565b9150614f5d82614ef6565b604082019050919050565b60006020820190508181036000830152614f8181614f45565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614fe4602483614656565b9150614fef82614f88565b604082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000615076603583614656565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000615108603483614656565b9150615113826150ac565b604082019050919050565b60006020820190508181036000830152615137816150fb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061519a602683614656565b91506151a58261513e565b604082019050919050565b600060208201905081810360008301526151c98161518d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615206601b83614656565b9150615211826151d0565b602082019050919050565b60006020820190508181036000830152615235816151f9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615298602483614656565b91506152a38261523c565b604082019050919050565b600060208201905081810360008301526152c78161528b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061532a602283614656565b9150615335826152ce565b604082019050919050565b600060208201905081810360008301526153598161531d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153bc602583614656565b91506153c782615360565b604082019050919050565b600060208201905081810360008301526153eb816153af565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061544e602383614656565b9150615459826153f2565b604082019050919050565b6000602082019050818103600083015261547d81615441565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006154e0603183614656565b91506154eb82615484565b604082019050919050565b6000602082019050818103600083015261550f816154d3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061554c601683614656565b915061555782615516565b602082019050919050565b6000602082019050818103600083015261557b8161553f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615604604983614656565b915061560f82615582565b606082019050919050565b60006020820190508181036000830152615633816155f7565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615696603583614656565b91506156a18261563a565b604082019050919050565b600060208201905081810360008301526156c581615689565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615702601383614656565b915061570d826156cc565b602082019050919050565b60006020820190508181036000830152615731816156f5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615794603683614656565b915061579f82615738565b604082019050919050565b600060208201905081810360008301526157c381615787565b9050919050565b60006157d582614769565b91506157e083614769565b9250828210156157f3576157f2614c4d565b5b828203905092915050565b600081905092915050565b50565b60006158196000836157fe565b915061582482615809565b600082019050919050565b600061583a8261580c565b9150819050919050565b600060608201905061585960008301866148bc565b61586660208301856148bc565b61587360408301846148bc565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158d7602183614656565b91506158e28261587b565b604082019050919050565b60006020820190508181036000830152615906816158ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061597a8161473d565b92915050565b60006020828403121561599657615995614706565b5b60006159a48482850161596b565b91505092915050565b6000819050919050565b60006159d26159cd6159c8846159ad565b614842565b614769565b9050919050565b6159e2816159b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a1d8161472b565b82525050565b6000615a2f8383615a14565b60208301905092915050565b6000602082019050919050565b6000615a53826159e8565b615a5d81856159f3565b9350615a6883615a04565b8060005b83811015615a99578151615a808882615a23565b9750615a8b83615a3b565b925050600181019050615a6c565b5085935050505092915050565b600060a082019050615abb60008301886148bc565b615ac860208301876159d9565b8181036040830152615ada8186615a48565b9050615ae96060830185614a2a565b615af660808301846148bc565b9695505050505050565b600060c082019050615b156000830189614a2a565b615b2260208301886148bc565b615b2f60408301876159d9565b615b3c60608301866159d9565b615b496080830185614a2a565b615b5660a08301846148bc565b979650505050505050565b600081519050615b7081614773565b92915050565b600080600060608486031215615b8f57615b8e614706565b5b6000615b9d86828701615b61565b9350506020615bae86828701615b61565b9250506040615bbf86828701615b61565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200a37b0ff35e512a2bfd46ced940333df15c06925845acbd42148788df35ef4d864736f6c63430008090033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806392136913116101d1578063bbc0c74211610102578063d85ba063116100a0578063f11a24d31161006f578063f11a24d314610cf3578063f2fde38b14610d1e578063f637434214610d47578063f8b45b0514610d7257610381565b8063d85ba06314610c35578063dd62ed3e14610c60578063e2f4560514610c9d578063e884f26014610cc857610381565b8063c18bc195116100dc578063c18bc19514610b79578063c876d0b914610ba2578063c8c8ebe414610bcd578063d257b34f14610bf857610381565b8063bbc0c74214610afc578063bd6b704314610b27578063c024666814610b5057610381565b8063a26577781161016f578063a7fc9e2111610149578063a7fc9e2114610a2e578063a9059cbb14610a59578063aacebbe314610a96578063b62496f514610abf57610381565b8063a26577781461099d578063a457c2d7146109c6578063a4d15b6414610a0357610381565b80639a7a23d6116101ab5780639a7a23d6146108f35780639c3b4fdc1461091c5780639fccce3214610947578063a0d82dc51461097257610381565b80639213691314610874578063924de9b71461089f57806395d89b41146108c857610381565b806349bd5a5e116102ab578063715018a6116102495780637bce5a04116102235780637bce5a04146107de5780638095d564146108095780638a8c523c146108325780638da5cb5b1461084957610381565b8063715018a614610773578063751039fc1461078a5780637571336a146107b557610381565b8063541a43cf11610285578063541a43cf146106b55780636a486a8e146106e05780636ddd17131461070b57806370a082311461073657610381565b806349bd5a5e146106225780634a62bb651461064d5780634fbee1931461067857610381565b80631f3fed8f1161031857806323b872dd116102f257806323b872dd146105525780632bf3d42d1461058f578063313ce567146105ba57806339509351146105e557610381565b80631f3fed8f146104d5578063203e727e1461050057806322d3e2aa1461052957610381565b80631694505e116103545780631694505e1461042b57806318160ddd146104565780631816467f146104815780631a8145bb146104aa57610381565b806306fdde0314610386578063095ea7b3146103b157806310d5de53146103ee57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d9d565b6040516103a891906146e4565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d3919061479f565b610e2f565b6040516103e591906147fa565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614815565b610e4d565b60405161042291906147fa565b60405180910390f35b34801561043757600080fd5b50610440610e6c565b60405161044d91906148a1565b60405180910390f35b34801561046257600080fd5b5061046b610e90565b60405161047891906148cb565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190614815565b610e9a565b005b3480156104b657600080fd5b506104bf610ff1565b6040516104cc91906148cb565b60405180910390f35b3480156104e157600080fd5b506104ea610ff7565b6040516104f791906148cb565b60405180910390f35b34801561050c57600080fd5b50610527600480360381019061052291906148e6565b610ffd565b005b34801561053557600080fd5b50610550600480360381019061054b9190614913565b611127565b005b34801561055e57600080fd5b50610579600480360381019061057491906149a0565b611259565b60405161058691906147fa565b60405180910390f35b34801561059b57600080fd5b506105a4611332565b6040516105b191906148cb565b60405180910390f35b3480156105c657600080fd5b506105cf611338565b6040516105dc9190614a0f565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061479f565b611341565b60405161061991906147fa565b60405180910390f35b34801561062e57600080fd5b506106376113f4565b6040516106449190614a39565b60405180910390f35b34801561065957600080fd5b50610662611418565b60405161066f91906147fa565b60405180910390f35b34801561068457600080fd5b5061069f600480360381019061069a9190614815565b61142b565b6040516106ac91906147fa565b60405180910390f35b3480156106c157600080fd5b506106ca611481565b6040516106d791906148cb565b60405180910390f35b3480156106ec57600080fd5b506106f5611487565b60405161070291906148cb565b60405180910390f35b34801561071757600080fd5b5061072061148d565b60405161072d91906147fa565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190614815565b6114a0565b60405161076a91906148cb565b60405180910390f35b34801561077f57600080fd5b506107886114e8565b005b34801561079657600080fd5b5061079f611640565b6040516107ac91906147fa565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190614a80565b6116fb565b005b3480156107ea57600080fd5b506107f36117ed565b60405161080091906148cb565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190614ac0565b6117f3565b005b34801561083e57600080fd5b5061084761190d565b005b34801561085557600080fd5b5061085e6119e3565b60405161086b9190614a39565b60405180910390f35b34801561088057600080fd5b50610889611a0d565b60405161089691906148cb565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c19190614b13565b611a13565b005b3480156108d457600080fd5b506108dd611ac7565b6040516108ea91906146e4565b60405180910390f35b3480156108ff57600080fd5b5061091a60048036038101906109159190614a80565b611b59565b005b34801561092857600080fd5b50610931611c8d565b60405161093e91906148cb565b60405180910390f35b34801561095357600080fd5b5061095c611c93565b60405161096991906148cb565b60405180910390f35b34801561097e57600080fd5b50610987611c99565b60405161099491906148cb565b60405180910390f35b3480156109a957600080fd5b506109c460048036038101906109bf9190614b13565b611c9f565b005b3480156109d257600080fd5b506109ed60048036038101906109e8919061479f565b611d53565b6040516109fa91906147fa565b60405180910390f35b348015610a0f57600080fd5b50610a18611e20565b604051610a2591906147fa565b60405180910390f35b348015610a3a57600080fd5b50610a43611e33565b604051610a5091906148cb565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b919061479f565b611e39565b604051610a8d91906147fa565b60405180910390f35b348015610aa257600080fd5b50610abd6004803603810190610ab89190614815565b611e57565b005b348015610acb57600080fd5b50610ae66004803603810190610ae19190614815565b611fae565b604051610af391906147fa565b60405180910390f35b348015610b0857600080fd5b50610b11611fce565b604051610b1e91906147fa565b60405180910390f35b348015610b3357600080fd5b50610b4e6004803603810190610b499190614a80565b611fe1565b005b348015610b5c57600080fd5b50610b776004803603810190610b729190614a80565b6120d3565b005b348015610b8557600080fd5b50610ba06004803603810190610b9b91906148e6565b612213565b005b348015610bae57600080fd5b50610bb761233d565b604051610bc491906147fa565b60405180910390f35b348015610bd957600080fd5b50610be2612350565b604051610bef91906148cb565b60405180910390f35b348015610c0457600080fd5b50610c1f6004803603810190610c1a91906148e6565b612356565b604051610c2c91906147fa565b60405180910390f35b348015610c4157600080fd5b50610c4a6124c6565b604051610c5791906148cb565b60405180910390f35b348015610c6c57600080fd5b50610c876004803603810190610c829190614b40565b6124cc565b604051610c9491906148cb565b60405180910390f35b348015610ca957600080fd5b50610cb2612553565b604051610cbf91906148cb565b60405180910390f35b348015610cd457600080fd5b50610cdd612559565b604051610cea91906147fa565b60405180910390f35b348015610cff57600080fd5b50610d08612614565b604051610d1591906148cb565b60405180910390f35b348015610d2a57600080fd5b50610d456004803603810190610d409190614815565b61261a565b005b348015610d5357600080fd5b50610d5c6127e1565b604051610d6991906148cb565b60405180910390f35b348015610d7e57600080fd5b50610d876127e7565b604051610d9491906148cb565b60405180910390f35b606060038054610dac90614baf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd890614baf565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b5050505050905090565b6000610e43610e3c61284b565b8484612853565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610ea261284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890614c2d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c5481565b601b5481565b61100561284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90614c2d565b60405180910390fd5b670de0b6b3a76400006103e860016110aa610e90565b6110b49190614c7c565b6110be9190614d05565b6110c89190614d05565b81101561110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190614da8565b60405180910390fd5b670de0b6b3a76400008161111e9190614c7c565b60088190555050565b61112f61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590614c2d565b60405180910390fd5b856015819055508460168190555083601781905550826018819055508160198190555080601a819055506017546016546015546111fb9190614dc8565b6112059190614dc8565b60148190555060196014541115611251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124890614e6a565b60405180910390fd5b505050505050565b6000611266848484612a1e565b6113278461127261284b565b61132285604051806060016040528060288152602001615bf060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112d861284b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1e9092919063ffffffff16565b612853565b600190509392505050565b60195481565b60006012905090565b60006113ea61134e61284b565b846113e5856001600061135f61284b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ed90919063ffffffff16565b612853565b6001905092915050565b7f000000000000000000000000a0a11a9794755cf88d285dabbe9c006c7398de7c81565b600b60009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f061284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690614c2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061164a61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d090614c2d565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61170361284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178990614c2d565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b6117fb61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190614c2d565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546118b29190614dc8565b6118bc9190614dc8565b60108190555060146010541115611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90614ed6565b60405180910390fd5b505050565b61191561284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90614c2d565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b611a1b61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa190614c2d565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611ad690614baf565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0290614baf565b8015611b4f5780601f10611b2457610100808354040283529160200191611b4f565b820191906000526020600020905b815481529060010190602001808311611b3257829003601f168201915b5050505050905090565b611b6161284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790614c2d565b60405180910390fd5b7f000000000000000000000000a0a11a9794755cf88d285dabbe9c006c7398de7c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7690614f68565b60405180910390fd5b611c898282613b82565b5050565b60135481565b601d5481565b60175481565b611ca761284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90614c2d565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e16611d6061284b565b84611e1185604051806060016040528060258152602001615c186025913960016000611d8a61284b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1e9092919063ffffffff16565b612853565b6001905092915050565b600b60039054906101000a900460ff1681565b601a5481565b6000611e4d611e4661284b565b8484612a1e565b6001905092915050565b611e5f61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee590614c2d565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611fe961284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90614c2d565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6120db61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190614c2d565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161220791906147fa565b60405180910390a25050565b61221b61284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190614c2d565b60405180910390fd5b670de0b6b3a76400006103e860056122c0610e90565b6122ca9190614c7c565b6122d49190614d05565b6122de9190614d05565b811015612320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231790614ffa565b60405180910390fd5b670de0b6b3a7640000816123349190614c7c565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b600061236061284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e690614c2d565b60405180910390fd5b620186a060016123fd610e90565b6124079190614c7c565b6124119190614d05565b821015612453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244a9061508c565b60405180910390fd5b6103e86005612460610e90565b61246a9190614c7c565b6124749190614d05565b8211156124b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ad9061511e565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061256361284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e990614c2d565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b61262261284b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614c2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612718906151b0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846127fc9190614dc8565b905083811015612841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128389061521c565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ba906152ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292a90615340565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a1191906148cb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a85906153d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af590615464565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ba25750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd8906154f6565b60405180910390fd5b6000811415612bfb57612bf683836000613c23565b613b19565b600b60009054906101000a900460ff16156132be57612c186119e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c865750612c566119e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cf9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d125750600560149054906101000a900460ff16155b156132bd57600b60019054906101000a900460ff16612e0c57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dcc5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0290615562565b60405180910390fd5b5b600f60009054906101000a900460ff1615612fd457612e296119e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612eb057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f0857507f000000000000000000000000a0a11a9794755cf88d285dabbe9c006c7398de7c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fd35743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f859061561a565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130775750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561311e576008548111156130c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b8906156ac565b60405180910390fd5b600a546130cd836114a0565b826130d89190614dc8565b1115613119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311090615718565b60405180910390fd5b6132bc565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131c15750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132105760085481111561320b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613202906157aa565b60405180910390fd5b6132bb565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132ba57600a5461326d836114a0565b826132789190614dc8565b11156132b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b090615718565b60405180910390fd5b5b5b5b5b5b6000601e546132cd9190614dc8565b431115801561332857507f000000000000000000000000a0a11a9794755cf88d285dabbe9c006c7398de7c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133745750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133d2576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60007f000000000000000000000000a0a11a9794755cf88d285dabbe9c006c7398de7c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561343f5750600b60039054906101000a900460ff165b15613562576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156134e157504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134de9190614dc8565b10155b1561352957601854601681905550601954601581905550601a546017819055506017546016546015546135149190614dc8565b61351e9190614dc8565b60148190555061355d565b6002601681905550600060158190555060175460165460155461354c9190614dc8565b6135569190614dc8565b6014819055505b613640565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156135ef5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff1661363f5760026016819055506000601581905550600060178190555060175460165460155461362e9190614dc8565b6136389190614dc8565b6014819055505b5b600061364b306114a0565b9050600060095482101590508080156136705750600b60029054906101000a900460ff165b80156136895750600560149054906101000a900460ff16155b80156136df5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137355750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561378b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137cf576001600560146101000a81548160ff0219169083151502179055506137b3613eb8565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138855750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388f57600090505b60008115613b0857602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138f257506000601454115b156139bf5761391f60646139116014548961419f90919063ffffffff16565b61421a90919063ffffffff16565b9050601454601654826139329190614c7c565b61393c9190614d05565b601c600082825461394d9190614dc8565b92505081905550601454601754826139659190614c7c565b61396f9190614d05565b601d60008282546139809190614dc8565b92505081905550601454601554826139989190614c7c565b6139a29190614d05565b601b60008282546139b39190614dc8565b92505081905550613ae4565b602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1a57506000601054115b15613ae357613a476064613a396010548961419f90919063ffffffff16565b61421a90919063ffffffff16565b905060105460125482613a5a9190614c7c565b613a649190614d05565b601c6000828254613a759190614dc8565b9250508190555060105460135482613a8d9190614c7c565b613a979190614d05565b601d6000828254613aa89190614dc8565b9250508190555060105460115482613ac09190614c7c565b613aca9190614d05565b601b6000828254613adb9190614dc8565b925050819055505b5b6000811115613af957613af8883083613c23565b5b8086613b0591906157ca565b95505b613b13888888613c23565b50505050505b505050565b6000838311158290613b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5d91906146e4565b60405180910390fd5b5060008385613b7591906157ca565b9050809150509392505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8a906153d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cfa90615464565b60405180910390fd5b613d0e838383614264565b613d7981604051806060016040528060268152602001615bca602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1e9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e0c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ed90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613eab91906148cb565b60405180910390a3505050565b6000613ec3306114a0565b90506000601d54601b54601c54613eda9190614dc8565b613ee49190614dc8565b9050600080831480613ef65750600082145b15613f035750505061419d565b6014600954613f129190614c7c565b831115613f2b576014600954613f289190614c7c565b92505b6000600283601c5486613f3e9190614c7c565b613f489190614d05565b613f529190614d05565b90506000613f69828661426990919063ffffffff16565b90506000479050613f79826142b3565b6000613f8e824761426990919063ffffffff16565b90506000613fb987613fab601b548561419f90919063ffffffff16565b61421a90919063ffffffff16565b90506000613fe488613fd6601d548661419f90919063ffffffff16565b61421a90919063ffffffff16565b90506000818385613ff591906157ca565b613fff91906157ca565b90506000601c819055506000601b819055506000601d81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161405f9061582f565b60006040518083038185875af1925050503d806000811461409c576040519150601f19603f3d011682016040523d82523d6000602084013e6140a1565b606091505b5050809850506000871180156140b75750600081115b15614104576140c687826144ff565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601c546040516140fb93929190615844565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161414a9061582f565b60006040518083038185875af1925050503d8060008114614187576040519150601f19603f3d011682016040523d82523d6000602084013e61418c565b606091505b505080985050505050505050505050505b565b6000808314156141b25760009050614214565b600082846141c09190614c7c565b90508284826141cf9190614d05565b1461420f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614206906158ed565b60405180910390fd5b809150505b92915050565b600061425c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145e8565b905092915050565b505050565b60006142ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b1e565b905092915050565b6000600267ffffffffffffffff8111156142d0576142cf61590d565b5b6040519080825280602002602001820160405280156142fe5781602001602082028036833780820191505090505b50905030816000815181106143165761431561593c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143b657600080fd5b505afa1580156143ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ee9190615980565b816001815181106144025761440161593c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614467307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612853565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144c9959493929190615aa6565b600060405180830381600087803b1580156144e357600080fd5b505af11580156144f7573d6000803e3d6000fd5b505050505050565b61452a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612853565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161458f96959493929190615b00565b6060604051808303818588803b1580156145a857600080fd5b505af11580156145bc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145e19190615b76565b5050505050565b6000808311829061462f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161462691906146e4565b60405180910390fd5b506000838561463e9190614d05565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561468557808201518184015260208101905061466a565b83811115614694576000848401525b50505050565b6000601f19601f8301169050919050565b60006146b68261464b565b6146c08185614656565b93506146d0818560208601614667565b6146d98161469a565b840191505092915050565b600060208201905081810360008301526146fe81846146ab565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006147368261470b565b9050919050565b6147468161472b565b811461475157600080fd5b50565b6000813590506147638161473d565b92915050565b6000819050919050565b61477c81614769565b811461478757600080fd5b50565b60008135905061479981614773565b92915050565b600080604083850312156147b6576147b5614706565b5b60006147c485828601614754565b92505060206147d58582860161478a565b9150509250929050565b60008115159050919050565b6147f4816147df565b82525050565b600060208201905061480f60008301846147eb565b92915050565b60006020828403121561482b5761482a614706565b5b600061483984828501614754565b91505092915050565b6000819050919050565b600061486761486261485d8461470b565b614842565b61470b565b9050919050565b60006148798261484c565b9050919050565b600061488b8261486e565b9050919050565b61489b81614880565b82525050565b60006020820190506148b66000830184614892565b92915050565b6148c581614769565b82525050565b60006020820190506148e060008301846148bc565b92915050565b6000602082840312156148fc576148fb614706565b5b600061490a8482850161478a565b91505092915050565b60008060008060008060c087890312156149305761492f614706565b5b600061493e89828a0161478a565b965050602061494f89828a0161478a565b955050604061496089828a0161478a565b945050606061497189828a0161478a565b935050608061498289828a0161478a565b92505060a061499389828a0161478a565b9150509295509295509295565b6000806000606084860312156149b9576149b8614706565b5b60006149c786828701614754565b93505060206149d886828701614754565b92505060406149e98682870161478a565b9150509250925092565b600060ff82169050919050565b614a09816149f3565b82525050565b6000602082019050614a246000830184614a00565b92915050565b614a338161472b565b82525050565b6000602082019050614a4e6000830184614a2a565b92915050565b614a5d816147df565b8114614a6857600080fd5b50565b600081359050614a7a81614a54565b92915050565b60008060408385031215614a9757614a96614706565b5b6000614aa585828601614754565b9250506020614ab685828601614a6b565b9150509250929050565b600080600060608486031215614ad957614ad8614706565b5b6000614ae78682870161478a565b9350506020614af88682870161478a565b9250506040614b098682870161478a565b9150509250925092565b600060208284031215614b2957614b28614706565b5b6000614b3784828501614a6b565b91505092915050565b60008060408385031215614b5757614b56614706565b5b6000614b6585828601614754565b9250506020614b7685828601614754565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614bc757607f821691505b60208210811415614bdb57614bda614b80565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c17602083614656565b9150614c2282614be1565b602082019050919050565b60006020820190508181036000830152614c4681614c0a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c8782614769565b9150614c9283614769565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ccb57614cca614c4d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d1082614769565b9150614d1b83614769565b925082614d2b57614d2a614cd6565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614d92602f83614656565b9150614d9d82614d36565b604082019050919050565b60006020820190508181036000830152614dc181614d85565b9050919050565b6000614dd382614769565b9150614dde83614769565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e1357614e12614c4d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614e54601d83614656565b9150614e5f82614e1e565b602082019050919050565b60006020820190508181036000830152614e8381614e47565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614ec0601d83614656565b9150614ecb82614e8a565b602082019050919050565b60006020820190508181036000830152614eef81614eb3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614f52603983614656565b9150614f5d82614ef6565b604082019050919050565b60006020820190508181036000830152614f8181614f45565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614fe4602483614656565b9150614fef82614f88565b604082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000615076603583614656565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000615108603483614656565b9150615113826150ac565b604082019050919050565b60006020820190508181036000830152615137816150fb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061519a602683614656565b91506151a58261513e565b604082019050919050565b600060208201905081810360008301526151c98161518d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615206601b83614656565b9150615211826151d0565b602082019050919050565b60006020820190508181036000830152615235816151f9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615298602483614656565b91506152a38261523c565b604082019050919050565b600060208201905081810360008301526152c78161528b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061532a602283614656565b9150615335826152ce565b604082019050919050565b600060208201905081810360008301526153598161531d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006153bc602583614656565b91506153c782615360565b604082019050919050565b600060208201905081810360008301526153eb816153af565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061544e602383614656565b9150615459826153f2565b604082019050919050565b6000602082019050818103600083015261547d81615441565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b60006154e0603183614656565b91506154eb82615484565b604082019050919050565b6000602082019050818103600083015261550f816154d3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061554c601683614656565b915061555782615516565b602082019050919050565b6000602082019050818103600083015261557b8161553f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615604604983614656565b915061560f82615582565b606082019050919050565b60006020820190508181036000830152615633816155f7565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615696603583614656565b91506156a18261563a565b604082019050919050565b600060208201905081810360008301526156c581615689565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615702601383614656565b915061570d826156cc565b602082019050919050565b60006020820190508181036000830152615731816156f5565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615794603683614656565b915061579f82615738565b604082019050919050565b600060208201905081810360008301526157c381615787565b9050919050565b60006157d582614769565b91506157e083614769565b9250828210156157f3576157f2614c4d565b5b828203905092915050565b600081905092915050565b50565b60006158196000836157fe565b915061582482615809565b600082019050919050565b600061583a8261580c565b9150819050919050565b600060608201905061585960008301866148bc565b61586660208301856148bc565b61587360408301846148bc565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006158d7602183614656565b91506158e28261587b565b604082019050919050565b60006020820190508181036000830152615906816158ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061597a8161473d565b92915050565b60006020828403121561599657615995614706565b5b60006159a48482850161596b565b91505092915050565b6000819050919050565b60006159d26159cd6159c8846159ad565b614842565b614769565b9050919050565b6159e2816159b7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615a1d8161472b565b82525050565b6000615a2f8383615a14565b60208301905092915050565b6000602082019050919050565b6000615a53826159e8565b615a5d81856159f3565b9350615a6883615a04565b8060005b83811015615a99578151615a808882615a23565b9750615a8b83615a3b565b925050600181019050615a6c565b5085935050505092915050565b600060a082019050615abb60008301886148bc565b615ac860208301876159d9565b8181036040830152615ada8186615a48565b9050615ae96060830185614a2a565b615af660808301846148bc565b9695505050505050565b600060c082019050615b156000830189614a2a565b615b2260208301886148bc565b615b2f60408301876159d9565b615b3c60608301866159d9565b615b496080830185614a2a565b615b5660a08301846148bc565b979650505050505050565b600081519050615b7081614773565b92915050565b600080600060608486031215615b8f57615b8e614706565b5b6000615b9d86828701615b61565b9350506020615bae86828701615b61565b9250506040615bbf86828701615b61565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200a37b0ff35e512a2bfd46ced940333df15c06925845acbd42148788df35ef4d864736f6c63430008090033

Deployed Bytecode Sourcemap

17334:16052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4776:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5697:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17409:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5100:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25565:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18651:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18611;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22820:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23928:624;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5875:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18528:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4998:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6239:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17467:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17735:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25734:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18485:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18339:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17815:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5217:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10681:148;;;;;;;;;;;;;:::i;:::-;;22042:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23287:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18231:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23550:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21886:148;;;;;;;;;;;;;:::i;:::-;;10466:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18374:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23440:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4885:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24896:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18305:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18691:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18450:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22314:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6466:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17853:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18571:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5353:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25348:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18890:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17775:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24752:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24561:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23063:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18148:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17619:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22425:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18197:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5537:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17661:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22171:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18268:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10838:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18412:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17701:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4776:100;4830:13;4863:5;4856:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4776:100;:::o;5697:169::-;5780:4;5797:39;5806:12;:10;:12::i;:::-;5820:7;5829:6;5797:8;:39::i;:::-;5854:4;5847:11;;5697:169;;;;:::o;18816:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17409:51::-;;;:::o;5100:108::-;5161:7;5188:12;;5181:19;;5100:108;:::o;25565:157::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25672:9:::1;;;;;;;;;;;25644:38;;25661:9;25644:38;;;;;;;;;;;;25705:9;25693;;:21;;;;;;;;;;;;;;;;;;25565:157:::0;:::o;18651:33::-;;;;:::o;18611:::-;;;;:::o;22820:234::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22939:4:::1;22933;22929:1;22913:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;22912:31;;;;:::i;:::-;22902:6;:41;;22894:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;23039:6;23029;:17;;;;:::i;:::-;23006:20;:40;;;;22820:234:::0;:::o;23928:624::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24154:13:::1;24135:16;:32;;;;24197:13;24178:16;:32;;;;24234:7;24221:10;:20;;;;24276:22;24252:21;:46;;;;24333:22;24309:21;:46;;;;24381:16;24363:15;:34;;;;24462:10;;24443:16;;24424;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;24408:13;:64;;;;24508:2;24491:13;;:19;;24483:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23928:624:::0;;;;;;:::o;5875:355::-;6015:4;6032:36;6042:6;6050:9;6061:6;6032:9;:36::i;:::-;6079:121;6088:6;6096:12;:10;:12::i;:::-;6110:89;6148:6;6110:89;;;;;;;;;;;;;;;;;:11;:19;6122:6;6110:19;;;;;;;;;;;;;;;:33;6130:12;:10;:12::i;:::-;6110:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6079:8;:121::i;:::-;6218:4;6211:11;;5875:355;;;;;:::o;18528:36::-;;;;:::o;4998:93::-;5056:5;5081:2;5074:9;;4998:93;:::o;6239:218::-;6327:4;6344:83;6353:12;:10;:12::i;:::-;6367:7;6376:50;6415:10;6376:11;:25;6388:12;:10;:12::i;:::-;6376:25;;;;;;;;;;;;;;;:34;6402:7;6376:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6344:8;:83::i;:::-;6445:4;6438:11;;6239:218;;;;:::o;17467:38::-;;;:::o;17735:33::-;;;;;;;;;;;;;:::o;25734:125::-;25799:4;25823:19;:28;25843:7;25823:28;;;;;;;;;;;;;;;;;;;;;;;;;25816:35;;25734:125;;;:::o;18485:36::-;;;;:::o;18339:28::-;;;;:::o;17815:31::-;;;;;;;;;;;;;:::o;5217:127::-;5291:7;5318:9;:18;5328:7;5318:18;;;;;;;;;;;;;;;;5311:25;;5217:127;;;:::o;10681:148::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10788:1:::1;10751:40;;10772:6;;;;;;;;;;;10751:40;;;;;;;;;;;;10819:1;10802:6;;:19;;;;;;;;;;;;;;;;;;10681:148::o:0;22042:120::-;22094:4;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22127:5:::1;22110:14;;:22;;;;;;;;;;;;;;;;;;22150:4;22143:11;;22042:120:::0;:::o;23287:144::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23419:4:::1;23377:31;:39;23409:6;23377:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23287:144:::0;;:::o;18231:30::-;;;;:::o;23550:369::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23684:13:::1;23666:15;:31;;;;23726:13;23708:15;:31;;;;23762:7;23750:9;:19;;;;23831:9;;23813:15;;23795;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;23780:12;:60;;;;23875:2;23859:12;;:18;;23851:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23550:369:::0;;;:::o;21886:148::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21957:4:::1;21941:13;;:20;;;;;;;;;;;;;;;;;;21986:4;21972:11;;:18;;;;;;;;;;;;;;;;;;22014:12;22001:10;:25;;;;21886:148::o:0;10466:79::-;10504:7;10531:6;;;;;;;;;;;10524:13;;10466:79;:::o;18374:31::-;;;;:::o;23440:101::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23526:7:::1;23512:11;;:21;;;;;;;;;;;;;;;;;;23440:101:::0;:::o;4885:104::-;4941:13;4974:7;4967:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4885:104;:::o;24896:245::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25003:13:::1;24995:21;;:4;:21;;;;24987:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25092:41;25121:4;25127:5;25092:28;:41::i;:::-;24896:245:::0;;:::o;18305:24::-;;;;:::o;18691:27::-;;;;:::o;18450:25::-;;;;:::o;22314:102::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22403:5:::1;22382:18;;:26;;;;;;;;;;;;;;;;;;22314:102:::0;:::o;6466:269::-;6559:4;6576:129;6585:12;:10;:12::i;:::-;6599:7;6608:96;6647:15;6608:96;;;;;;;;;;;;;;;;;:11;:25;6620:12;:10;:12::i;:::-;6608:25;;;;;;;;;;;;;;;:34;6634:7;6608:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6576:8;:129::i;:::-;6723:4;6716:11;;6466:269;;;;:::o;17853:37::-;;;;;;;;;;;;;:::o;18571:30::-;;;;:::o;5353:175::-;5439:4;5456:42;5466:12;:10;:12::i;:::-;5480:9;5491:6;5456:9;:42::i;:::-;5516:4;5509:11;;5353:175;;;;:::o;25348:208::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25485:15:::1;;;;;;;;;;;25442:59;;25465:18;25442:59;;;;;;;;;;;;25530:18;25512:15;;:36;;;;;;;;;;;;;;;;;;25348:208:::0;:::o;18890:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17775:33::-;;;;;;;;;;;;;:::o;24752:135::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24866:13:::1;24844:10;:19;24855:7;24844:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24752:135:::0;;:::o;24561:182::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24677:8:::1;24646:19;:28;24666:7;24646:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24717:7;24701:34;;;24726:8;24701:34;;;;;;:::i;:::-;;;;;;;;24561:182:::0;;:::o;23063:215::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23185:4:::1;23179;23175:1;23159:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;23158:31;;;;:::i;:::-;23148:6;:41;;23140:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23263:6;23253;:17;;;;:::i;:::-;23241:9;:29;;;;23063:215:::0;:::o;18148:39::-;;;;;;;;;;;;;:::o;17619:35::-;;;;:::o;22425:386::-;22506:4;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22563:6:::1;22559:1;22543:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;22530:9;:39;;22522:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;22679:4;22675:1;22659:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;22646:9;:37;;22638:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;22772:9;22751:18;:30;;;;22799:4;22792:11;;22425:386:::0;;;:::o;18197:27::-;;;;:::o;5537:151::-;5626:7;5653:11;:18;5665:5;5653:18;;;;;;;;;;;;;;;:27;5672:7;5653:27;;;;;;;;;;;;;;;;5646:34;;5537:151;;;;:::o;17661:33::-;;;;:::o;22171:134::-;22231:4;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22270:5:::1;22247:20;;:28;;;;;;;;;;;;;;;;;;22293:4;22286:11;;22171:134:::0;:::o;18268:30::-;;;;:::o;10838:244::-;10603:12;:10;:12::i;:::-;10593:22;;:6;;;;;;;;;;;:22;;;10585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10947:1:::1;10927:22;;:8;:22;;;;10919:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11037:8;11008:38;;11029:6;;;;;;;;;;;11008:38;;;;;;;;;;;;11066:8;11057:6;;:17;;;;;;;;;;;;;;;;;;10838:244:::0;:::o;18412:31::-;;;;:::o;17701:24::-;;;;:::o;8695:182::-;8753:7;8773:9;8789:1;8785;:5;;;;:::i;:::-;8773:17;;8814:1;8809;:6;;8801:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8868:1;8861:8;;;8695:182;;;;:::o;101:98::-;154:7;181:10;174:17;;101:98;:::o;8146:381::-;8299:1;8282:19;;:5;:19;;;;8274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8380:1;8361:21;;:7;:21;;;;8353:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8465:6;8435:11;:18;8447:5;8435:18;;;;;;;;;;;;;;;:27;8454:7;8435:27;;;;;;;;;;;;;;;:36;;;;8503:7;8487:32;;8496:5;8487:32;;;8512:6;8487:32;;;;;;:::i;:::-;;;;;;;;8146:381;;;:::o;25919:5066::-;26067:1;26051:18;;:4;:18;;;;26043:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26144:1;26130:16;;:2;:16;;;;26122:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26206:10;:14;26217:2;26206:14;;;;;;;;;;;;;;;;;;;;;;;;;26205:15;:36;;;;;26225:10;:16;26236:4;26225:16;;;;;;;;;;;;;;;;;;;;;;;;;26224:17;26205:36;26197:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;26320:1;26310:6;:11;26307:92;;;26338:28;26354:4;26360:2;26364:1;26338:15;:28::i;:::-;26381:7;;26307:92;26415:14;;;;;;;;;;;26412:1620;;;26475:7;:5;:7::i;:::-;26467:15;;:4;:15;;;;:49;;;;;26509:7;:5;:7::i;:::-;26503:13;;:2;:13;;;;26467:49;:86;;;;;26551:1;26537:16;;:2;:16;;;;26467:86;:128;;;;;26588:6;26574:21;;:2;:21;;;;26467:128;:158;;;;;26617:8;;;;;;;;;;;26616:9;26467:158;26445:1576;;;26663:13;;;;;;;;;;;26659:148;;26708:19;:25;26728:4;26708:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26737:19;:23;26757:2;26737:23;;;;;;;;;;;;;;;;;;;;;;;;;26708:52;26700:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26659:148;26832:20;;;;;;;;;;;26828:423;;;26886:7;:5;:7::i;:::-;26880:13;;:2;:13;;;;:47;;;;;26911:15;26897:30;;:2;:30;;;;26880:47;:79;;;;;26945:13;26931:28;;:2;:28;;;;26880:79;26876:356;;;27037:12;26995:28;:39;27024:9;26995:39;;;;;;;;;;;;;;;;:54;26987:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27196:12;27154:28;:39;27183:9;27154:39;;;;;;;;;;;;;;;:54;;;;26876:356;26828:423;27276:25;:31;27302:4;27276:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27312:31;:35;27344:2;27312:35;;;;;;;;;;;;;;;;;;;;;;;;;27311:36;27276:71;27272:734;;;27394:20;;27384:6;:30;;27376:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;27533:9;;27516:13;27526:2;27516:9;:13::i;:::-;27507:6;:22;;;;:::i;:::-;:35;;27499:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27272:734;;;27616:25;:29;27642:2;27616:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27650:31;:37;27682:4;27650:37;;;;;;;;;;;;;;;;;;;;;;;;;27649:38;27616:71;27612:394;;;27734:20;;27724:6;:30;;27716:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;27612:394;;;27860:31;:35;27892:2;27860:35;;;;;;;;;;;;;;;;;;;;;;;;;27856:150;;27953:9;;27936:13;27946:2;27936:9;:13::i;:::-;27927:6;:22;;;;:::i;:::-;:35;;27919:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27856:150;27612:394;27272:734;26445:1576;26412:1620;28079:1;28066:10;;:14;;;;:::i;:::-;28049:12;:32;;:73;;;;;28109:13;28103:19;;:2;:19;;;;28049:73;:152;;;;;28158:42;28144:57;;:2;:57;;;;28049:152;28045:221;;;28250:4;28233:10;:14;28244:2;28233:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28045:221;28279:10;28300:13;28292:21;;:4;:21;;;28279:34;;28329:5;28328:6;:28;;;;;28338:18;;;;;;;;;;;28328:28;28324:1026;;;28411:1;28377:24;:30;28402:4;28377:30;;;;;;;;;;;;;;;;:35;;:120;;;;;28481:15;28468:8;28434:24;:30;28459:4;28434:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;28377:120;28373:568;;;28538:21;;28519:16;:40;;;;28597:21;;28578:16;:40;;;;28644:15;;28631:10;:28;;;;28732:10;;28713:16;;28694;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;28678:13;:64;;;;28373:568;;;28802:1;28783:16;:20;;;;28841:1;28822:16;:20;;;;28915:10;;28896:16;;28877;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;28861:13;:64;;;;28373:568;28324:1026;;;29009:1;28977:24;:28;29002:2;28977:28;;;;;;;;;;;;;;;;:33;28973:120;;;29062:15;29031:24;:28;29056:2;29031:28;;;;;;;;;;;;;;;:46;;;;28973:120;29115:18;;;;;;;;;;;29110:229;;29173:1;29154:16;:20;;;;29212:1;29193:16;:20;;;;29239:1;29226:10;:14;;;;29313:10;;29294:16;;29275;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;29259:13;:64;;;;29110:229;28324:1026;29363:28;29394:24;29412:4;29394:9;:24::i;:::-;29363:55;;29432:12;29471:18;;29447:20;:42;;29432:57;;29521:7;:35;;;;;29545:11;;;;;;;;;;;29521:35;:61;;;;;29574:8;;;;;;;;;;;29573:9;29521:61;:110;;;;;29600:25;:31;29626:4;29600:31;;;;;;;;;;;;;;;;;;;;;;;;;29599:32;29521:110;:153;;;;;29649:19;:25;29669:4;29649:25;;;;;;;;;;;;;;;;;;;;;;;;;29648:26;29521:153;:194;;;;;29692:19;:23;29712:2;29692:23;;;;;;;;;;;;;;;;;;;;;;;;;29691:24;29521:194;29503:328;;;29753:4;29742:8;;:15;;;;;;;;;;;;;;;;;;29775:10;:8;:10::i;:::-;29814:5;29803:8;;:16;;;;;;;;;;;;;;;;;;29503:328;29844:12;29860:8;;;;;;;;;;;29859:9;29844:24;;29885:19;:25;29905:4;29885:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29914:19;:23;29934:2;29914:23;;;;;;;;;;;;;;;;;;;;;;;;;29885:52;29882:99;;;29964:5;29954:15;;29882:99;29994:12;30024:7;30021:910;;;30051:25;:29;30077:2;30051:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30100:1;30084:13;;:17;30051:50;30047:731;;;30128:34;30158:3;30128:25;30139:13;;30128:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;30121:41;;30229:13;;30210:16;;30203:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30181:18;;:61;;;;;;;:::i;:::-;;;;;;;;30297:13;;30284:10;;30277:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;30261:12;;:49;;;;;;;:::i;:::-;;;;;;;;30377:13;;30358:16;;30351:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;30329:18;;:61;;;;;;;:::i;:::-;;;;;;;;30047:731;;;30428:25;:31;30454:4;30428:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;30478:1;30463:12;;:16;30428:51;30425:353;;;30507:33;30536:3;30507:24;30518:12;;30507:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;30500:40;;30606:12;;30588:15;;30581:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30559:18;;:59;;;;;;;:::i;:::-;;;;;;;;30672:12;;30660:9;;30653:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;30637:12;;:47;;;;;;;:::i;:::-;;;;;;;;30750:12;;30732:15;;30725:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;30703:18;;:59;;;;;;;:::i;:::-;;;;;;;;30425:353;30047:731;30805:1;30798:4;:8;30795:93;;;30830:42;30846:4;30860;30867;30830:15;:42::i;:::-;30795:93;30915:4;30905:14;;;;;:::i;:::-;;;30021:910;30944:33;30960:4;30966:2;30970:6;30944:15;:33::i;:::-;26032:4953;;;;;25919:5066;;;;:::o;9031:193::-;9117:7;9150:1;9145;:6;;9153:12;9137:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9177:9;9193:1;9189;:5;;;;:::i;:::-;9177:17;;9215:1;9208:8;;;9031:193;;;;;:::o;25150:189::-;25267:5;25233:25;:31;25259:4;25233:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25325:5;25291:40;;25319:4;25291:40;;;;;;;;;;;;25150:189;;:::o;6744:575::-;6902:1;6884:20;;:6;:20;;;;6876:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6986:1;6965:23;;:9;:23;;;;6957:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7042:47;7063:6;7071:9;7082:6;7042:20;:47::i;:::-;7123:71;7145:6;7123:71;;;;;;;;;;;;;;;;;:9;:17;7133:6;7123:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7103:9;:17;7113:6;7103:17;;;;;;;;;;;;;;;:91;;;;7228:32;7253:6;7228:9;:20;7238:9;7228:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7205:9;:20;7215:9;7205:20;;;;;;;;;;;;;;;:55;;;;7293:9;7276:35;;7285:6;7276:35;;;7304:6;7276:35;;;;;;:::i;:::-;;;;;;;;6744:575;;;:::o;31864:1519::-;31903:23;31929:24;31947:4;31929:9;:24::i;:::-;31903:50;;31964:25;32034:12;;32013:18;;31992;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;31964:82;;32057:12;32105:1;32086:15;:20;:46;;;;32131:1;32110:17;:22;32086:46;32083:60;;;32135:7;;;;;32083:60;32198:2;32177:18;;:23;;;;:::i;:::-;32159:15;:41;32156:111;;;32253:2;32232:18;;:23;;;;:::i;:::-;32214:41;;32156:111;32280:23;32365:1;32345:17;32324:18;;32306:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32280:86;;32377:26;32406:36;32426:15;32406;:19;;:36;;;;:::i;:::-;32377:65;;32456:25;32484:21;32456:49;;32519:36;32536:18;32519:16;:36::i;:::-;32570:18;32591:44;32617:17;32591:21;:25;;:44;;;;:::i;:::-;32570:65;;32649:23;32675:57;32714:17;32675:34;32690:18;;32675:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;32649:83;;32743:17;32763:51;32796:17;32763:28;32778:12;;32763:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;32743:71;;32825:23;32882:9;32864:15;32851:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;32825:66;;32929:1;32908:18;:22;;;;32962:1;32941:18;:22;;;;32989:1;32974:12;:16;;;;33025:9;;;;;;;;;;;33017:23;;33048:9;33017:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33004:58;;;;;33097:1;33079:15;:19;:42;;;;;33120:1;33102:15;:19;33079:42;33076:210;;;33137:46;33150:15;33167;33137:12;:46::i;:::-;33203:71;33218:18;33238:15;33255:18;;33203:71;;;;;;;;:::i;:::-;;;;;;;;33076:210;33320:15;;;;;;;;;;;33312:29;;33349:21;33312:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33299:76;;;;;31892:1491;;;;;;;;;;31864:1519;:::o;9233:252::-;9291:7;9320:1;9315;:6;9311:47;;;9345:1;9338:8;;;;9311:47;9371:9;9387:1;9383;:5;;;;:::i;:::-;9371:17;;9416:1;9411;9407;:5;;;;:::i;:::-;:10;9399:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9476:1;9469:8;;;9233:252;;;;;:::o;9494:132::-;9552:7;9579:39;9583:1;9586;9579:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9572:46;;9494:132;;;;:::o;8536:125::-;;;;:::o;8886:136::-;8944:7;8971:43;8975:1;8978;8971:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8964:50;;8886:136;;;;:::o;30994:484::-;31063:21;31101:1;31087:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31063:40;;31132:4;31114;31119:1;31114:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31158:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31148:4;31153:1;31148:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31194:62;31211:4;31226:15;31244:11;31194:8;:62::i;:::-;31270:15;:66;;;31351:11;31377:1;31394:4;31421;31441:15;31270:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31049:429;30994:484;:::o;31487:368::-;31568:62;31585:4;31600:15;31618:11;31568:8;:62::i;:::-;31641:15;:31;;;31680:9;31713:4;31733:11;31759:1;31776;31801:4;31821:15;31641:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31487:368;;:::o;9634:189::-;9720:7;9752:1;9748;:5;9755:12;9740:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9779:9;9795:1;9791;:5;;;;:::i;:::-;9779:17;;9814:1;9807:8;;;9634:189;;;;;:::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:1057::-;5598:6;5606;5614;5622;5630;5638;5687:3;5675:9;5666:7;5662:23;5658:33;5655:120;;;5694:79;;:::i;:::-;5655:120;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;6197:2;6223:53;6268:7;6259:6;6248:9;6244:22;6223:53;:::i;:::-;6213:63;;6168:118;6325:3;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6296:119;6454:3;6481:53;6526:7;6517:6;6506:9;6502:22;6481:53;:::i;:::-;6471:63;;6425:119;5494:1057;;;;;;;;:::o;6557:619::-;6634:6;6642;6650;6699:2;6687:9;6678:7;6674:23;6670:32;6667:119;;;6705:79;;:::i;:::-;6667:119;6825:1;6850:53;6895:7;6886:6;6875:9;6871:22;6850:53;:::i;:::-;6840:63;;6796:117;6952:2;6978:53;7023:7;7014:6;7003:9;6999:22;6978:53;:::i;:::-;6968:63;;6923:118;7080:2;7106:53;7151:7;7142:6;7131:9;7127:22;7106:53;:::i;:::-;7096:63;;7051:118;6557:619;;;;;:::o;7182:86::-;7217:7;7257:4;7250:5;7246:16;7235:27;;7182:86;;;:::o;7274:112::-;7357:22;7373:5;7357:22;:::i;:::-;7352:3;7345:35;7274:112;;:::o;7392:214::-;7481:4;7519:2;7508:9;7504:18;7496:26;;7532:67;7596:1;7585:9;7581:17;7572:6;7532:67;:::i;:::-;7392:214;;;;:::o;7612:118::-;7699:24;7717:5;7699:24;:::i;:::-;7694:3;7687:37;7612:118;;:::o;7736:222::-;7829:4;7867:2;7856:9;7852:18;7844:26;;7880:71;7948:1;7937:9;7933:17;7924:6;7880:71;:::i;:::-;7736:222;;;;:::o;7964:116::-;8034:21;8049:5;8034:21;:::i;:::-;8027:5;8024:32;8014:60;;8070:1;8067;8060:12;8014:60;7964:116;:::o;8086:133::-;8129:5;8167:6;8154:20;8145:29;;8183:30;8207:5;8183:30;:::i;:::-;8086:133;;;;:::o;8225:468::-;8290:6;8298;8347:2;8335:9;8326:7;8322:23;8318:32;8315:119;;;8353:79;;:::i;:::-;8315:119;8473:1;8498:53;8543:7;8534:6;8523:9;8519:22;8498:53;:::i;:::-;8488:63;;8444:117;8600:2;8626:50;8668:7;8659:6;8648:9;8644:22;8626:50;:::i;:::-;8616:60;;8571:115;8225:468;;;;;:::o;8699:619::-;8776:6;8784;8792;8841:2;8829:9;8820:7;8816:23;8812:32;8809:119;;;8847:79;;:::i;:::-;8809:119;8967:1;8992:53;9037:7;9028:6;9017:9;9013:22;8992:53;:::i;:::-;8982:63;;8938:117;9094:2;9120:53;9165:7;9156:6;9145:9;9141:22;9120:53;:::i;:::-;9110:63;;9065:118;9222:2;9248:53;9293:7;9284:6;9273:9;9269:22;9248:53;:::i;:::-;9238:63;;9193:118;8699:619;;;;;:::o;9324:323::-;9380:6;9429:2;9417:9;9408:7;9404:23;9400:32;9397:119;;;9435:79;;:::i;:::-;9397:119;9555:1;9580:50;9622:7;9613:6;9602:9;9598:22;9580:50;:::i;:::-;9570:60;;9526:114;9324:323;;;;:::o;9653:474::-;9721:6;9729;9778:2;9766:9;9757:7;9753:23;9749:32;9746:119;;;9784:79;;:::i;:::-;9746:119;9904:1;9929:53;9974:7;9965:6;9954:9;9950:22;9929:53;:::i;:::-;9919:63;;9875:117;10031:2;10057:53;10102:7;10093:6;10082:9;10078:22;10057:53;:::i;:::-;10047:63;;10002:118;9653:474;;;;;:::o;10133:180::-;10181:77;10178:1;10171:88;10278:4;10275:1;10268:15;10302:4;10299:1;10292:15;10319:320;10363:6;10400:1;10394:4;10390:12;10380:22;;10447:1;10441:4;10437:12;10468:18;10458:81;;10524:4;10516:6;10512:17;10502:27;;10458:81;10586:2;10578:6;10575:14;10555:18;10552:38;10549:84;;;10605:18;;:::i;:::-;10549:84;10370:269;10319:320;;;:::o;10645:182::-;10785:34;10781:1;10773:6;10769:14;10762:58;10645:182;:::o;10833:366::-;10975:3;10996:67;11060:2;11055:3;10996:67;:::i;:::-;10989:74;;11072:93;11161:3;11072:93;:::i;:::-;11190:2;11185:3;11181:12;11174:19;;10833:366;;;:::o;11205:419::-;11371:4;11409:2;11398:9;11394:18;11386:26;;11458:9;11452:4;11448:20;11444:1;11433:9;11429:17;11422:47;11486:131;11612:4;11486:131;:::i;:::-;11478:139;;11205:419;;;:::o;11630:180::-;11678:77;11675:1;11668:88;11775:4;11772:1;11765:15;11799:4;11796:1;11789:15;11816:348;11856:7;11879:20;11897:1;11879:20;:::i;:::-;11874:25;;11913:20;11931:1;11913:20;:::i;:::-;11908:25;;12101:1;12033:66;12029:74;12026:1;12023:81;12018:1;12011:9;12004:17;12000:105;11997:131;;;12108:18;;:::i;:::-;11997:131;12156:1;12153;12149:9;12138:20;;11816:348;;;;:::o;12170:180::-;12218:77;12215:1;12208:88;12315:4;12312:1;12305:15;12339:4;12336:1;12329:15;12356:185;12396:1;12413:20;12431:1;12413:20;:::i;:::-;12408:25;;12447:20;12465:1;12447:20;:::i;:::-;12442:25;;12486:1;12476:35;;12491:18;;:::i;:::-;12476:35;12533:1;12530;12526:9;12521:14;;12356:185;;;;:::o;12547:234::-;12687:34;12683:1;12675:6;12671:14;12664:58;12756:17;12751:2;12743:6;12739:15;12732:42;12547:234;:::o;12787:366::-;12929:3;12950:67;13014:2;13009:3;12950:67;:::i;:::-;12943:74;;13026:93;13115:3;13026:93;:::i;:::-;13144:2;13139:3;13135:12;13128:19;;12787:366;;;:::o;13159:419::-;13325:4;13363:2;13352:9;13348:18;13340:26;;13412:9;13406:4;13402:20;13398:1;13387:9;13383:17;13376:47;13440:131;13566:4;13440:131;:::i;:::-;13432:139;;13159:419;;;:::o;13584:305::-;13624:3;13643:20;13661:1;13643:20;:::i;:::-;13638:25;;13677:20;13695:1;13677:20;:::i;:::-;13672:25;;13831:1;13763:66;13759:74;13756:1;13753:81;13750:107;;;13837:18;;:::i;:::-;13750:107;13881:1;13878;13874:9;13867:16;;13584:305;;;;:::o;13895:179::-;14035:31;14031:1;14023:6;14019:14;14012:55;13895:179;:::o;14080:366::-;14222:3;14243:67;14307:2;14302:3;14243:67;:::i;:::-;14236:74;;14319:93;14408:3;14319:93;:::i;:::-;14437:2;14432:3;14428:12;14421:19;;14080:366;;;:::o;14452:419::-;14618:4;14656:2;14645:9;14641:18;14633:26;;14705:9;14699:4;14695:20;14691:1;14680:9;14676:17;14669:47;14733:131;14859:4;14733:131;:::i;:::-;14725:139;;14452:419;;;:::o;14877:179::-;15017:31;15013:1;15005:6;15001:14;14994:55;14877:179;:::o;15062:366::-;15204:3;15225:67;15289:2;15284:3;15225:67;:::i;:::-;15218:74;;15301:93;15390:3;15301:93;:::i;:::-;15419:2;15414:3;15410:12;15403:19;;15062:366;;;:::o;15434:419::-;15600:4;15638:2;15627:9;15623:18;15615:26;;15687:9;15681:4;15677:20;15673:1;15662:9;15658:17;15651:47;15715:131;15841:4;15715:131;:::i;:::-;15707:139;;15434:419;;;:::o;15859:244::-;15999:34;15995:1;15987:6;15983:14;15976:58;16068:27;16063:2;16055:6;16051:15;16044:52;15859:244;:::o;16109:366::-;16251:3;16272:67;16336:2;16331:3;16272:67;:::i;:::-;16265:74;;16348:93;16437:3;16348:93;:::i;:::-;16466:2;16461:3;16457:12;16450:19;;16109:366;;;:::o;16481:419::-;16647:4;16685:2;16674:9;16670:18;16662:26;;16734:9;16728:4;16724:20;16720:1;16709:9;16705:17;16698:47;16762:131;16888:4;16762:131;:::i;:::-;16754:139;;16481:419;;;:::o;16906:223::-;17046:34;17042:1;17034:6;17030:14;17023:58;17115:6;17110:2;17102:6;17098:15;17091:31;16906:223;:::o;17135:366::-;17277:3;17298:67;17362:2;17357:3;17298:67;:::i;:::-;17291:74;;17374:93;17463:3;17374:93;:::i;:::-;17492:2;17487:3;17483:12;17476:19;;17135:366;;;:::o;17507:419::-;17673:4;17711:2;17700:9;17696:18;17688:26;;17760:9;17754:4;17750:20;17746:1;17735:9;17731:17;17724:47;17788:131;17914:4;17788:131;:::i;:::-;17780:139;;17507:419;;;:::o;17932:240::-;18072:34;18068:1;18060:6;18056:14;18049:58;18141:23;18136:2;18128:6;18124:15;18117:48;17932:240;:::o;18178:366::-;18320:3;18341:67;18405:2;18400:3;18341:67;:::i;:::-;18334:74;;18417:93;18506:3;18417:93;:::i;:::-;18535:2;18530:3;18526:12;18519:19;;18178:366;;;:::o;18550:419::-;18716:4;18754:2;18743:9;18739:18;18731:26;;18803:9;18797:4;18793:20;18789:1;18778:9;18774:17;18767:47;18831:131;18957:4;18831:131;:::i;:::-;18823:139;;18550:419;;;:::o;18975:239::-;19115:34;19111:1;19103:6;19099:14;19092:58;19184:22;19179:2;19171:6;19167:15;19160:47;18975:239;:::o;19220:366::-;19362:3;19383:67;19447:2;19442:3;19383:67;:::i;:::-;19376:74;;19459:93;19548:3;19459:93;:::i;:::-;19577:2;19572:3;19568:12;19561:19;;19220:366;;;:::o;19592:419::-;19758:4;19796:2;19785:9;19781:18;19773:26;;19845:9;19839:4;19835:20;19831:1;19820:9;19816:17;19809:47;19873:131;19999:4;19873:131;:::i;:::-;19865:139;;19592:419;;;:::o;20017:225::-;20157:34;20153:1;20145:6;20141:14;20134:58;20226:8;20221:2;20213:6;20209:15;20202:33;20017:225;:::o;20248:366::-;20390:3;20411:67;20475:2;20470:3;20411:67;:::i;:::-;20404:74;;20487:93;20576:3;20487:93;:::i;:::-;20605:2;20600:3;20596:12;20589:19;;20248:366;;;:::o;20620:419::-;20786:4;20824:2;20813:9;20809:18;20801:26;;20873:9;20867:4;20863:20;20859:1;20848:9;20844:17;20837:47;20901:131;21027:4;20901:131;:::i;:::-;20893:139;;20620:419;;;:::o;21045:177::-;21185:29;21181:1;21173:6;21169:14;21162:53;21045:177;:::o;21228:366::-;21370:3;21391:67;21455:2;21450:3;21391:67;:::i;:::-;21384:74;;21467:93;21556:3;21467:93;:::i;:::-;21585:2;21580:3;21576:12;21569:19;;21228:366;;;:::o;21600:419::-;21766:4;21804:2;21793:9;21789:18;21781:26;;21853:9;21847:4;21843:20;21839:1;21828:9;21824:17;21817:47;21881:131;22007:4;21881:131;:::i;:::-;21873:139;;21600:419;;;:::o;22025:223::-;22165:34;22161:1;22153:6;22149:14;22142:58;22234:6;22229:2;22221:6;22217:15;22210:31;22025:223;:::o;22254:366::-;22396:3;22417:67;22481:2;22476:3;22417:67;:::i;:::-;22410:74;;22493:93;22582:3;22493:93;:::i;:::-;22611:2;22606:3;22602:12;22595:19;;22254:366;;;:::o;22626:419::-;22792:4;22830:2;22819:9;22815:18;22807:26;;22879:9;22873:4;22869:20;22865:1;22854:9;22850:17;22843:47;22907:131;23033:4;22907:131;:::i;:::-;22899:139;;22626:419;;;:::o;23051:221::-;23191:34;23187:1;23179:6;23175:14;23168:58;23260:4;23255:2;23247:6;23243:15;23236:29;23051:221;:::o;23278:366::-;23420:3;23441:67;23505:2;23500:3;23441:67;:::i;:::-;23434:74;;23517:93;23606:3;23517:93;:::i;:::-;23635:2;23630:3;23626:12;23619:19;;23278:366;;;:::o;23650:419::-;23816:4;23854:2;23843:9;23839:18;23831:26;;23903:9;23897:4;23893:20;23889:1;23878:9;23874:17;23867:47;23931:131;24057:4;23931:131;:::i;:::-;23923:139;;23650:419;;;:::o;24075:224::-;24215:34;24211:1;24203:6;24199:14;24192:58;24284:7;24279:2;24271:6;24267:15;24260:32;24075:224;:::o;24305:366::-;24447:3;24468:67;24532:2;24527:3;24468:67;:::i;:::-;24461:74;;24544:93;24633:3;24544:93;:::i;:::-;24662:2;24657:3;24653:12;24646:19;;24305:366;;;:::o;24677:419::-;24843:4;24881:2;24870:9;24866:18;24858:26;;24930:9;24924:4;24920:20;24916:1;24905:9;24901:17;24894:47;24958:131;25084:4;24958:131;:::i;:::-;24950:139;;24677:419;;;:::o;25102:222::-;25242:34;25238:1;25230:6;25226:14;25219:58;25311:5;25306:2;25298:6;25294:15;25287:30;25102:222;:::o;25330:366::-;25472:3;25493:67;25557:2;25552:3;25493:67;:::i;:::-;25486:74;;25569:93;25658:3;25569:93;:::i;:::-;25687:2;25682:3;25678:12;25671:19;;25330:366;;;:::o;25702:419::-;25868:4;25906:2;25895:9;25891:18;25883:26;;25955:9;25949:4;25945:20;25941:1;25930:9;25926:17;25919:47;25983:131;26109:4;25983:131;:::i;:::-;25975:139;;25702:419;;;:::o;26127:236::-;26267:34;26263:1;26255:6;26251:14;26244:58;26336:19;26331:2;26323:6;26319:15;26312:44;26127:236;:::o;26369:366::-;26511:3;26532:67;26596:2;26591:3;26532:67;:::i;:::-;26525:74;;26608:93;26697:3;26608:93;:::i;:::-;26726:2;26721:3;26717:12;26710:19;;26369:366;;;:::o;26741:419::-;26907:4;26945:2;26934:9;26930:18;26922:26;;26994:9;26988:4;26984:20;26980:1;26969:9;26965:17;26958:47;27022:131;27148:4;27022:131;:::i;:::-;27014:139;;26741:419;;;:::o;27166:172::-;27306:24;27302:1;27294:6;27290:14;27283:48;27166:172;:::o;27344:366::-;27486:3;27507:67;27571:2;27566:3;27507:67;:::i;:::-;27500:74;;27583:93;27672:3;27583:93;:::i;:::-;27701:2;27696:3;27692:12;27685:19;;27344:366;;;:::o;27716:419::-;27882:4;27920:2;27909:9;27905:18;27897:26;;27969:9;27963:4;27959:20;27955:1;27944:9;27940:17;27933:47;27997:131;28123:4;27997:131;:::i;:::-;27989:139;;27716:419;;;:::o;28141:297::-;28281:34;28277:1;28269:6;28265:14;28258:58;28350:34;28345:2;28337:6;28333:15;28326:59;28419:11;28414:2;28406:6;28402:15;28395:36;28141:297;:::o;28444:366::-;28586:3;28607:67;28671:2;28666:3;28607:67;:::i;:::-;28600:74;;28683:93;28772:3;28683:93;:::i;:::-;28801:2;28796:3;28792:12;28785:19;;28444:366;;;:::o;28816:419::-;28982:4;29020:2;29009:9;29005:18;28997:26;;29069:9;29063:4;29059:20;29055:1;29044:9;29040:17;29033:47;29097:131;29223:4;29097:131;:::i;:::-;29089:139;;28816:419;;;:::o;29241:240::-;29381:34;29377:1;29369:6;29365:14;29358:58;29450:23;29445:2;29437:6;29433:15;29426:48;29241:240;:::o;29487:366::-;29629:3;29650:67;29714:2;29709:3;29650:67;:::i;:::-;29643:74;;29726:93;29815:3;29726:93;:::i;:::-;29844:2;29839:3;29835:12;29828:19;;29487:366;;;:::o;29859:419::-;30025:4;30063:2;30052:9;30048:18;30040:26;;30112:9;30106:4;30102:20;30098:1;30087:9;30083:17;30076:47;30140:131;30266:4;30140:131;:::i;:::-;30132:139;;29859:419;;;:::o;30284:169::-;30424:21;30420:1;30412:6;30408:14;30401:45;30284:169;:::o;30459:366::-;30601:3;30622:67;30686:2;30681:3;30622:67;:::i;:::-;30615:74;;30698:93;30787:3;30698:93;:::i;:::-;30816:2;30811:3;30807:12;30800:19;;30459:366;;;:::o;30831:419::-;30997:4;31035:2;31024:9;31020:18;31012:26;;31084:9;31078:4;31074:20;31070:1;31059:9;31055:17;31048:47;31112:131;31238:4;31112:131;:::i;:::-;31104:139;;30831:419;;;:::o;31256:241::-;31396:34;31392:1;31384:6;31380:14;31373:58;31465:24;31460:2;31452:6;31448:15;31441:49;31256:241;:::o;31503:366::-;31645:3;31666:67;31730:2;31725:3;31666:67;:::i;:::-;31659:74;;31742:93;31831:3;31742:93;:::i;:::-;31860:2;31855:3;31851:12;31844:19;;31503:366;;;:::o;31875:419::-;32041:4;32079:2;32068:9;32064:18;32056:26;;32128:9;32122:4;32118:20;32114:1;32103:9;32099:17;32092:47;32156:131;32282:4;32156:131;:::i;:::-;32148:139;;31875:419;;;:::o;32300:191::-;32340:4;32360:20;32378:1;32360:20;:::i;:::-;32355:25;;32394:20;32412:1;32394:20;:::i;:::-;32389:25;;32433:1;32430;32427:8;32424:34;;;32438:18;;:::i;:::-;32424:34;32483:1;32480;32476:9;32468:17;;32300:191;;;;:::o;32497:147::-;32598:11;32635:3;32620:18;;32497:147;;;;:::o;32650:114::-;;:::o;32770:398::-;32929:3;32950:83;33031:1;33026:3;32950:83;:::i;:::-;32943:90;;33042:93;33131:3;33042:93;:::i;:::-;33160:1;33155:3;33151:11;33144:18;;32770:398;;;:::o;33174:379::-;33358:3;33380:147;33523:3;33380:147;:::i;:::-;33373:154;;33544:3;33537:10;;33174:379;;;:::o;33559:442::-;33708:4;33746:2;33735:9;33731:18;33723:26;;33759:71;33827:1;33816:9;33812:17;33803:6;33759:71;:::i;:::-;33840:72;33908:2;33897:9;33893:18;33884:6;33840:72;:::i;:::-;33922;33990:2;33979:9;33975:18;33966:6;33922:72;:::i;:::-;33559:442;;;;;;:::o;34007:220::-;34147:34;34143:1;34135:6;34131:14;34124:58;34216:3;34211:2;34203:6;34199:15;34192:28;34007:220;:::o;34233:366::-;34375:3;34396:67;34460:2;34455:3;34396:67;:::i;:::-;34389:74;;34472:93;34561:3;34472:93;:::i;:::-;34590:2;34585:3;34581:12;34574:19;;34233:366;;;:::o;34605:419::-;34771:4;34809:2;34798:9;34794:18;34786:26;;34858:9;34852:4;34848:20;34844:1;34833:9;34829:17;34822:47;34886:131;35012:4;34886:131;:::i;:::-;34878:139;;34605:419;;;:::o;35030:180::-;35078:77;35075:1;35068:88;35175:4;35172:1;35165:15;35199:4;35196:1;35189:15;35216:180;35264:77;35261:1;35254:88;35361:4;35358:1;35351:15;35385:4;35382:1;35375:15;35402:143;35459:5;35490:6;35484:13;35475:22;;35506:33;35533:5;35506:33;:::i;:::-;35402:143;;;;:::o;35551:351::-;35621:6;35670:2;35658:9;35649:7;35645:23;35641:32;35638:119;;;35676:79;;:::i;:::-;35638:119;35796:1;35821:64;35877:7;35868:6;35857:9;35853:22;35821:64;:::i;:::-;35811:74;;35767:128;35551:351;;;;:::o;35908:85::-;35953:7;35982:5;35971:16;;35908:85;;;:::o;35999:158::-;36057:9;36090:61;36108:42;36117:32;36143:5;36117:32;:::i;:::-;36108:42;:::i;:::-;36090:61;:::i;:::-;36077:74;;35999:158;;;:::o;36163:147::-;36258:45;36297:5;36258:45;:::i;:::-;36253:3;36246:58;36163:147;;:::o;36316:114::-;36383:6;36417:5;36411:12;36401:22;;36316:114;;;:::o;36436:184::-;36535:11;36569:6;36564:3;36557:19;36609:4;36604:3;36600:14;36585:29;;36436:184;;;;:::o;36626:132::-;36693:4;36716:3;36708:11;;36746:4;36741:3;36737:14;36729:22;;36626:132;;;:::o;36764:108::-;36841:24;36859:5;36841:24;:::i;:::-;36836:3;36829:37;36764:108;;:::o;36878:179::-;36947:10;36968:46;37010:3;37002:6;36968:46;:::i;:::-;37046:4;37041:3;37037:14;37023:28;;36878:179;;;;:::o;37063:113::-;37133:4;37165;37160:3;37156:14;37148:22;;37063:113;;;:::o;37212:732::-;37331:3;37360:54;37408:5;37360:54;:::i;:::-;37430:86;37509:6;37504:3;37430:86;:::i;:::-;37423:93;;37540:56;37590:5;37540:56;:::i;:::-;37619:7;37650:1;37635:284;37660:6;37657:1;37654:13;37635:284;;;37736:6;37730:13;37763:63;37822:3;37807:13;37763:63;:::i;:::-;37756:70;;37849:60;37902:6;37849:60;:::i;:::-;37839:70;;37695:224;37682:1;37679;37675:9;37670:14;;37635:284;;;37639:14;37935:3;37928:10;;37336:608;;;37212:732;;;;:::o;37950:831::-;38213:4;38251:3;38240:9;38236:19;38228:27;;38265:71;38333:1;38322:9;38318:17;38309:6;38265:71;:::i;:::-;38346:80;38422:2;38411:9;38407:18;38398:6;38346:80;:::i;:::-;38473:9;38467:4;38463:20;38458:2;38447:9;38443:18;38436:48;38501:108;38604:4;38595:6;38501:108;:::i;:::-;38493:116;;38619:72;38687:2;38676:9;38672:18;38663:6;38619:72;:::i;:::-;38701:73;38769:3;38758:9;38754:19;38745:6;38701:73;:::i;:::-;37950:831;;;;;;;;:::o;38787:807::-;39036:4;39074:3;39063:9;39059:19;39051:27;;39088:71;39156:1;39145:9;39141:17;39132:6;39088:71;:::i;:::-;39169:72;39237:2;39226:9;39222:18;39213:6;39169:72;:::i;:::-;39251:80;39327:2;39316:9;39312:18;39303:6;39251:80;:::i;:::-;39341;39417:2;39406:9;39402:18;39393:6;39341:80;:::i;:::-;39431:73;39499:3;39488:9;39484:19;39475:6;39431:73;:::i;:::-;39514;39582:3;39571:9;39567:19;39558:6;39514:73;:::i;:::-;38787:807;;;;;;;;;:::o;39600:143::-;39657:5;39688:6;39682:13;39673:22;;39704:33;39731:5;39704:33;:::i;:::-;39600:143;;;;:::o;39749:663::-;39837:6;39845;39853;39902:2;39890:9;39881:7;39877:23;39873:32;39870:119;;;39908:79;;:::i;:::-;39870:119;40028:1;40053:64;40109:7;40100:6;40089:9;40085:22;40053:64;:::i;:::-;40043:74;;39999:128;40166:2;40192:64;40248:7;40239:6;40228:9;40224:22;40192:64;:::i;:::-;40182:74;;40137:129;40305:2;40331:64;40387:7;40378:6;40367:9;40363:22;40331:64;:::i;:::-;40321:74;;40276:129;39749:663;;;;;:::o

Swarm Source

ipfs://0a37b0ff35e512a2bfd46ced940333df15c06925845acbd42148788df35ef4d8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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