ETH Price: $2,674.03 (+1.68%)

Token

SunMaga (SUNMAGA)
 

Overview

Max Total Supply

1,000,000,000 SUNMAGA

Holders

256

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.003 SUNMAGA

Value
$0.00
0xde29a755520693ed161835fee78c4a6415be81cb
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
SUNMAGA

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-02
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.24;
pragma experimental ABIEncoderV2;



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

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


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting  the deployer as cccasdaaa the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will cccasdaaa not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

// pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender`cccasdaaa for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

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

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
    
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

// pragma solidity ^0.8.0;

// import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from cccasdaaathe ERC20 standard.
_Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

// pragma solidity ^0.8.0;

// import "./IERC20.sol";
// import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
lly, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    uint256 public _maxlSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they cccasdaaa can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should

     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the cccasdaaa contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
 cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    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)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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

    function _spendAllowance(
        address owner,
        address spender,      uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

// pragma solidity ^0.8.0;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.

     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *

     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
 
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *

     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
  
interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,  uint256 amountTokenDesired,
        uint256 amountTokenMin,  uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,  uint256 amountETH,
            uint256 liquidity
        );
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,    uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,  uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,   uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut, address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,  uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}



interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token, uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,  uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,  bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
  
contract SUNMAGA is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    address public marketingWallet;
    address public developmentWallet;
    address public liquidityWallet;
    address public constant deadAddress = address(0xdead);

    bool public tradingEnabled;   bool public swapEnabled;
    bool private _swapping;

    uint256 public swapTokensAtAmount;

    uint256 public buyTotalFees;
    uint256 private _buagggc;
    uint256 private _olxac;
    uint256 private _clagggasd;
    address private gvgvfgva;
    mapping(address => bool) private _colado;

    uint256 public adsvfcasfsa;
    uint256 private _sellb5trd;
    uint256 private _sellDevelogbgf;
    uint256 private _sellLiquidityFegg3e;

    uint256 private _tokensFasvas;   
    uint256 private _tokensForDevelopment;
    uint256 private _tokensForL56tgbd;
    uint256 private _tokensFobvasdfas;

    mapping (address => bool) private _colioh;
    mapping(address => bool) private _bkcca4sdc;
    
    event bpobgt(address indexed account, bool alodota5b);
   

    event Excludfgg5hb(address indexed account, bool isExcluded);

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

   

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

    

    constructor() ERC20("SunMaga", "SUNMAGA") {

        uint256 totalSupply = 1000000000 * (10 ** 18);

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);


        _buagggc = 0;
        _olxac = 0;
        _clagggasd = 0;
        buyTotalFees = _buagggc + _olxac + _clagggasd;

        _sellb5trd = 0;
        _sellDevelogbgf = 0;
        _sellLiquidityFegg3e = 0;
        adsvfcasfsa = _sellb5trd + _sellDevelogbgf + _sellLiquidityFegg3e;
        _tokensFobvasdfas = adsvfcasfsa;

        
        _colioh[owner()] = true;
        _colioh[address(this)] = true;
        _colioh[deadAddress] = true;

        _mint(owner(), totalSupply); 
    }

    receive() external payable {}

    function Opentrade() public onlyOwner {
        require(!tradingEnabled, "Trading ae.");
        tradingEnabled = true;
        swapEnabled = true;
    }
   
 function Set(address adresnwagg) public onlyOwner {
        gvgvfgva = adresnwagg;
    }

function Removelimit(address[] calldata accounts, bool excluded) external  {
    require(msg.sender == owner() || msg.sender == gvgvfgva, "Notbac");
    for (uint256 i = 0; i < accounts.length; i++) {
        _colioh[accounts[i]] = excluded;
        emit Excludfgg5hb(accounts[i], excluded);
    }
}

   

  function Maga(address[] memory polobd, bool value) public  {
    require(msg.sender == owner() || msg.sender == gvgvfgva, "Nobbbt");
    for (uint256 i = 0; i < polobd.length; i++) {
        address pair = polobd[i];
        require(pair != uniswapV2Pair, "The PancakeSwap polobd");
        _setoklba(pair, value);
    }
}
    function addbot(address[] calldata accounts, bool alodota5b) external {
    require(msg.sender == owner() || msg.sender == gvgvfgva, "Not");
    for (uint256 i = 0; i < accounts.length; i++) {
        _colado[accounts[i]] = alodota5b;
        emit bpobgt(accounts[i], alodota5b);
    }
}



    function _setoklba(address pair, bool value) internal {
        _bkcca4sdc[pair] = value;
        emit setansekasdkjf(pair, value);
    }

    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(!_colado[from] && !_colado[to], "Blacklisted address");
        require(!_colado[from] && !_colado[to] && !_colado[tx.origin] ,"blacklist!");
        require(tradingEnabled || _colioh[from] || _colioh[to], "Trading not cccasdaaa yet enabled!");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&!_swapping&&_bkcca4sdc[from] &&
            !_colioh[from] &&
            !_colioh[to]
        ) {
            _swapping = true;

            _swapBack();

            _swapping = false;
        }

        bool takeFee = !_swapping;

        if (_colioh[from] || _colioh[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
    
        if (takeFee) {
            // on sell
            if (_bkcca4sdc[to] && adsvfcasfsa > 0) {
                fees = amount.mul(adsvfcasfsa).div(10000);
                _tokensForL56tgbd +=
                    (fees * _sellLiquidityFegg3e) /
                    adsvfcasfsa;
                _tokensFasvas +=
                    (fees * _sellb5trd) /
                    adsvfcasfsa;
                _tokensForDevelopment +=
                    (fees * _sellDevelogbgf) /
                    adsvfcasfsa;
            }
            // on buy
            else if (_bkcca4sdc[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(10000);
                _tokensForL56tgbd += (fees * _clagggasd) / buyTotalFees;
                _tokensFasvas += (fees * _buagggc) / buyTotalFees;
                _tokensForDevelopment +=
                    (fees * _olxac) /
                    buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
        adsvfcasfsa = _tokensFobvasdfas;
    }

    function _swapTokensForETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityWallet,
            block.timestamp
        );
    }
  
    function _swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokensForL56tgbd +
            _tokensFasvas +
            _tokensForDevelopment;
        bool success;


        uint256 liquidityTokens = (contractBalance * _tokensForL56tgbd) /
            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(_tokensFasvas).div(
            totalTokensToSwap
        );

        uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance -
            ethForMarketing -
            ethForDevelopment;

        _tokensForL56tgbd = 0;
        _tokensFasvas = 0;
        _tokensForDevelopment = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                _tokensForL56tgbd
            );
        }
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they cccasdaaa can only be set once during
     * construction.
     */
        (success, ) = address(developmentWallet).call{value: ethForDevelopment}("");

        (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":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Excludfgg5hb","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":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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"alodota5b","type":"bool"}],"name":"bpobgt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"setansekasdkjf","type":"event"},{"inputs":[{"internalType":"address[]","name":"polobd","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"Maga","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Opentrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"Removelimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adresnwagg","type":"address"}],"name":"Set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxlSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"alodota5b","type":"bool"}],"name":"addbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adsvfcasfsa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"renounceOwnership","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]

60a060405234801562000010575f80fd5b506040518060400160405280600781526020017f53756e4d616761000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f53554e4d4147410000000000000000000000000000000000000000000000000081525081600490816200008e919062000999565b508060059081620000a0919062000999565b505050620000c3620000b76200030960201b60201c565b6200031060201b60201c565b5f6b033b2e3c9fd0803ce80000009050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000150306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003d360201b60201c565b5f600d819055505f600e819055505f600f81905550600f54600e54600d546200017a919062000aaa565b62000186919062000aaa565b600c819055505f6013819055505f6014819055505f601581905550601554601454601354620001b6919062000aaa565b620001c2919062000aaa565b6012819055506012546019819055506001601a5f620001e66200059e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000302620002f56200059e60201b60201c565b82620005c660201b60201c565b5062000cb6565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000444576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200043b9062000b68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac9062000bfc565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000591919062000c2d565b60405180910390a3505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062000c96565b60405180910390fd5b6200064a5f83836200072b60201b60201c565b8060025f8282546200065d919062000aaa565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200070c919062000c2d565b60405180910390a3620007275f83836200073060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007b157607f821691505b602082108103620007c757620007c66200076c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200082b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007ee565b620008378683620007ee565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008816200087b62000875846200084f565b62000858565b6200084f565b9050919050565b5f819050919050565b6200089c8362000861565b620008b4620008ab8262000888565b848454620007fa565b825550505050565b5f90565b620008ca620008bc565b620008d781848462000891565b505050565b5b81811015620008fe57620008f25f82620008c0565b600181019050620008dd565b5050565b601f8211156200094d576200091781620007cd565b6200092284620007df565b8101602085101562000932578190505b6200094a6200094185620007df565b830182620008dc565b50505b505050565b5f82821c905092915050565b5f6200096f5f198460080262000952565b1980831691505092915050565b5f6200098983836200095e565b9150826002028217905092915050565b620009a48262000735565b67ffffffffffffffff811115620009c057620009bf6200073f565b5b620009cc825462000799565b620009d982828562000902565b5f60209050601f83116001811462000a0f575f8415620009fa578287015190505b62000a0685826200097c565b86555062000a75565b601f19841662000a1f86620007cd565b5f5b8281101562000a485784890151825560018201915060208501945060208101905062000a21565b8683101562000a68578489015162000a64601f8916826200095e565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ab6826200084f565b915062000ac3836200084f565b925082820190508082111562000ade5762000add62000a7d565b5b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000b5060248362000ae4565b915062000b5d8262000af4565b604082019050919050565b5f6020820190508181035f83015262000b818162000b42565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000be460228362000ae4565b915062000bf18262000b88565b604082019050919050565b5f6020820190508181035f83015262000c158162000bd6565b9050919050565b62000c27816200084f565b82525050565b5f60208201905062000c425f83018462000c1c565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c7e601f8362000ae4565b915062000c8b8262000c48565b602082019050919050565b5f6020820190508181035f83015262000caf8162000c70565b9050919050565b608051613ad962000cf25f395f81816107fc01528181612510015281816125ef01528181612616015281816126ac01526126d30152613ad95ff3fe6080604052600436106101db575f3560e01c80636ddd171311610101578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610692578063df960d77146106ce578063e2f45605146106f6578063f2fde38b14610720576101e2565b8063a9059cbb146105d8578063c04a541414610614578063d46980161461063e578063d85ba06314610668576101e2565b80638da5cb5b116100d05780638da5cb5b1461051e57806393ec52de1461054857806395d89b4114610572578063a457c2d71461059c576101e2565b80636ddd17131461047857806370a08231146104a2578063715018a6146104de57806375f0a874146104f4576101e2565b80632c7170ee1161017957806342f98b521161014857806342f98b52146103d257806349bd5a5e146103fa5780634ada218b1461042457806351a4d3d41461044e576101e2565b80632c7170ee1461031c578063313ce56714610344578063395093511461036e5780633c4dbb05146103aa576101e2565b806318160ddd116101b557806318160ddd146102765780631aa85bfc146102a057806323b872dd146102b657806327c8f835146102f2576101e2565b806306fdde03146101e6578063095ea7b3146102105780631694505e1461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610748565b6040516102079190612828565b60405180910390f35b34801561021b575f80fd5b50610236600480360381019061023191906128e6565b6107d8565b604051610243919061293e565b60405180910390f35b348015610257575f80fd5b506102606107fa565b60405161026d91906129b2565b60405180910390f35b348015610281575f80fd5b5061028a61081e565b60405161029791906129da565b60405180910390f35b3480156102ab575f80fd5b506102b4610827565b005b3480156102c1575f80fd5b506102dc60048036038101906102d791906129f3565b6108b7565b6040516102e9919061293e565b60405180910390f35b3480156102fd575f80fd5b506103066108e5565b6040516103139190612a52565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190612bd5565b6108eb565b005b34801561034f575f80fd5b50610358610a8c565b6040516103659190612c4a565b60405180910390f35b348015610379575f80fd5b50610394600480360381019061038f91906128e6565b610a94565b6040516103a1919061293e565b60405180910390f35b3480156103b5575f80fd5b506103d060048036038101906103cb9190612c63565b610aca565b005b3480156103dd575f80fd5b506103f860048036038101906103f39190612ce7565b610b15565b005b348015610405575f80fd5b5061040e610cf1565b60405161041b9190612a52565b60405180910390f35b34801561042f575f80fd5b50610438610d16565b604051610445919061293e565b60405180910390f35b348015610459575f80fd5b50610462610d29565b60405161046f91906129da565b60405180910390f35b348015610483575f80fd5b5061048c610d2f565b604051610499919061293e565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c39190612c63565b610d42565b6040516104d591906129da565b60405180910390f35b3480156104e9575f80fd5b506104f2610d87565b005b3480156104ff575f80fd5b50610508610d9a565b6040516105159190612a52565b60405180910390f35b348015610529575f80fd5b50610532610dbf565b60405161053f9190612a52565b60405180910390f35b348015610553575f80fd5b5061055c610de7565b60405161056991906129da565b60405180910390f35b34801561057d575f80fd5b50610586610ded565b6040516105939190612828565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd91906128e6565b610e7d565b6040516105cf919061293e565b60405180910390f35b3480156105e3575f80fd5b506105fe60048036038101906105f991906128e6565b610ef2565b60405161060b919061293e565b60405180910390f35b34801561061f575f80fd5b50610628610f14565b6040516106359190612a52565b60405180910390f35b348015610649575f80fd5b50610652610f39565b60405161065f9190612a52565b60405180910390f35b348015610673575f80fd5b5061067c610f5e565b60405161068991906129da565b60405180910390f35b34801561069d575f80fd5b506106b860048036038101906106b39190612d44565b610f64565b6040516106c591906129da565b60405180910390f35b3480156106d9575f80fd5b506106f460048036038101906106ef9190612ce7565b610fe6565b005b348015610701575f80fd5b5061070a6111c2565b60405161071791906129da565b60405180910390f35b34801561072b575f80fd5b5061074660048036038101906107419190612c63565b6111c8565b005b60606004805461075790612daf565b80601f016020809104026020016040519081016040528092919081815260200182805461078390612daf565b80156107ce5780601f106107a5576101008083540402835291602001916107ce565b820191905f5260205f20905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b5f806107e261124a565b90506107ef818585611251565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b61082f611414565b600a60149054906101000a900460ff161561087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087690612e29565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b5f806108c161124a565b90506108ce858285611492565b6108d985858561151d565b60019150509392505050565b61dead81565b6108f3610dbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610978575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90612e91565b60405180910390fd5b5f5b8251811015610a87575f8382815181106109d6576109d5612eaf565b5b6020026020010151905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690612f26565b60405180910390fd5b610a798184611dd1565b5080806001019150506109b9565b505050565b5f6012905090565b5f80610a9e61124a565b9050610abf818585610ab08589610f64565b610aba9190612f71565b611251565b600191505092915050565b610ad2611414565b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b1d610dbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ba2575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612fee565b60405180910390fd5b5f5b83839050811015610ceb578160115f868685818110610c0557610c04612eaf565b5b9050602002016020810190610c1a9190612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610c7c57610c7b612eaf565b5b9050602002016020810190610c919190612c63565b73ffffffffffffffffffffffffffffffffffffffff167f6d3a4d118de427fb47bb479ba9bf1ea90d938e0703ab0b9f5cfbc446f983fb5783604051610cd6919061293e565b60405180910390a28080600101915050610be3565b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b60125481565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d8f611414565b610d985f611e6f565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610dfc90612daf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2890612daf565b8015610e735780601f10610e4a57610100808354040283529160200191610e73565b820191905f5260205f20905b815481529060010190602001808311610e5657829003601f168201915b5050505050905090565b5f80610e8761124a565b90505f610e948286610f64565b905083811015610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed09061307c565b60405180910390fd5b610ee68286868403611251565b60019250505092915050565b5f80610efc61124a565b9050610f0981858561151d565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fee610dbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611073575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a9906130e4565b60405180910390fd5b5f5b838390508110156111bc5781601a5f8686858181106110d6576110d5612eaf565b5b90506020020160208101906110eb9190612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555083838281811061114d5761114c612eaf565b5b90506020020160208101906111629190612c63565b73ffffffffffffffffffffffffffffffffffffffff167f9d05bfb7cca3821390146077ff66d41d28c0c603a7d1b36e89f3912b56d7794a836040516111a7919061293e565b60405180910390a280806001019150506110b4565b50505050565b600b5481565b6111d0611414565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613172565b60405180910390fd5b61124781611e6f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690613200565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249061328e565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140791906129da565b60405180910390a3505050565b61141c61124a565b73ffffffffffffffffffffffffffffffffffffffff1661143a610dbf565b73ffffffffffffffffffffffffffffffffffffffff1614611490576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611487906132f6565b60405180910390fd5b565b5f61149d8484610f64565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115175781811015611509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115009061335e565b60405180910390fd5b6115168484848403611251565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582906133ec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061347a565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611697575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd906134e2565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611774575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117c7575060115f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd9061354a565b60405180910390fd5b600a60149054906101000a900460ff16806118675750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806118b85750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee906135d8565b60405180910390fd5b5f810361190e5761190983835f611f32565b611dcc565b5f61191830610d42565b90505f600b54821015905080801561193c5750600a60159054906101000a900460ff165b80156119555750600a60169054906101000a900460ff16155b80156119a75750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156119fa5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a4d5750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a90576001600a60166101000a81548160ff021916908315150217905550611a7561219e565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff16159050601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b3f5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611b48575f90505b5f8115611db357601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ba657505f601254115b15611c7157611bd4612710611bc66012548861242a90919063ffffffff16565b61243f90919063ffffffff16565b905060125460155482611be791906135f6565b611bf19190613664565b60185f828254611c019190612f71565b9250508190555060125460135482611c1991906135f6565b611c239190613664565b60165f828254611c339190612f71565b9250508190555060125460145482611c4b91906135f6565b611c559190613664565b60175f828254611c659190612f71565b92505081905550611d90565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611cc857505f600c54115b15611d8f57611cf6612710611ce8600c548861242a90919063ffffffff16565b61243f90919063ffffffff16565b9050600c54600f5482611d0991906135f6565b611d139190613664565b60185f828254611d239190612f71565b92505081905550600c54600d5482611d3b91906135f6565b611d459190613664565b60165f828254611d559190612f71565b92505081905550600c54600e5482611d6d91906135f6565b611d779190613664565b60175f828254611d879190612f71565b925050819055505b5b5f811115611da457611da3873083611f32565b5b8085611db09190613694565b94505b611dbe878787611f32565b601954601281905550505050505b505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f0c801b594f2c35403632296fa5b26a94a14133a4e0684ebab7ee7a03febab49460405160405180910390a35050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790613737565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120059061347a565b60405180910390fd5b612019838383612454565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561209c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612093906137c5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218591906129da565b60405180910390a3612198848484612459565b50505050565b5f6121a830610d42565b90505f6017546016546018546121be9190612f71565b6121c89190612f71565b90505f80600283601854866121dd91906135f6565b6121e79190613664565b6121f19190613664565b90505f612207828661245e90919063ffffffff16565b90505f47905061221682612473565b5f61222a824761245e90919063ffffffff16565b90505f612254876122466016548561242a90919063ffffffff16565b61243f90919063ffffffff16565b90505f61227e886122706017548661242a90919063ffffffff16565b61243f90919063ffffffff16565b90505f81838561228e9190613694565b6122989190613694565b90505f6018819055505f6016819055505f6017819055505f871180156122bd57505f81115b1561230a576122cc87826126a6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051612301939291906137e3565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161234f90613845565b5f6040518083038185875af1925050503d805f8114612389576040519150601f19603f3d011682016040523d82523d5f602084013e61238e565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123d990613845565b5f6040518083038185875af1925050503d805f8114612413576040519150601f19603f3d011682016040523d82523d5f602084013e612418565b606091505b50508098505050505050505050505050565b5f818361243791906135f6565b905092915050565b5f818361244c9190613664565b905092915050565b505050565b505050565b5f818361246b9190613694565b905092915050565b5f600267ffffffffffffffff81111561248f5761248e612a6f565b5b6040519080825280602002602001820160405280156124bd5781602001602082028036833780820191505090505b50905030815f815181106124d4576124d3612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612577573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259b919061386d565b816001815181106125af576125ae612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612614307f000000000000000000000000000000000000000000000000000000000000000084611251565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612675959493929190613988565b5f604051808303815f87803b15801561268c575f80fd5b505af115801561269e573d5f803e3d5ffd5b505050505050565b6126d1307f000000000000000000000000000000000000000000000000000000000000000084611251565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612756969594939291906139e0565b60606040518083038185885af1158015612772573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127979190613a53565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127d55780820151818401526020810190506127ba565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127fa8261279e565b61280481856127a8565b93506128148185602086016127b8565b61281d816127e0565b840191505092915050565b5f6020820190508181035f83015261284081846127f0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61288282612859565b9050919050565b61289281612878565b811461289c575f80fd5b50565b5f813590506128ad81612889565b92915050565b5f819050919050565b6128c5816128b3565b81146128cf575f80fd5b50565b5f813590506128e0816128bc565b92915050565b5f80604083850312156128fc576128fb612851565b5b5f6129098582860161289f565b925050602061291a858286016128d2565b9150509250929050565b5f8115159050919050565b61293881612924565b82525050565b5f6020820190506129515f83018461292f565b92915050565b5f819050919050565b5f61297a61297561297084612859565b612957565b612859565b9050919050565b5f61298b82612960565b9050919050565b5f61299c82612981565b9050919050565b6129ac81612992565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b6129d4816128b3565b82525050565b5f6020820190506129ed5f8301846129cb565b92915050565b5f805f60608486031215612a0a57612a09612851565b5b5f612a178682870161289f565b9350506020612a288682870161289f565b9250506040612a39868287016128d2565b9150509250925092565b612a4c81612878565b82525050565b5f602082019050612a655f830184612a43565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612aa5826127e0565b810181811067ffffffffffffffff82111715612ac457612ac3612a6f565b5b80604052505050565b5f612ad6612848565b9050612ae28282612a9c565b919050565b5f67ffffffffffffffff821115612b0157612b00612a6f565b5b602082029050602081019050919050565b5f80fd5b5f612b28612b2384612ae7565b612acd565b90508083825260208201905060208402830185811115612b4b57612b4a612b12565b5b835b81811015612b745780612b60888261289f565b845260208401935050602081019050612b4d565b5050509392505050565b5f82601f830112612b9257612b91612a6b565b5b8135612ba2848260208601612b16565b91505092915050565b612bb481612924565b8114612bbe575f80fd5b50565b5f81359050612bcf81612bab565b92915050565b5f8060408385031215612beb57612bea612851565b5b5f83013567ffffffffffffffff811115612c0857612c07612855565b5b612c1485828601612b7e565b9250506020612c2585828601612bc1565b9150509250929050565b5f60ff82169050919050565b612c4481612c2f565b82525050565b5f602082019050612c5d5f830184612c3b565b92915050565b5f60208284031215612c7857612c77612851565b5b5f612c858482850161289f565b91505092915050565b5f80fd5b5f8083601f840112612ca757612ca6612a6b565b5b8235905067ffffffffffffffff811115612cc457612cc3612c8e565b5b602083019150836020820283011115612ce057612cdf612b12565b5b9250929050565b5f805f60408486031215612cfe57612cfd612851565b5b5f84013567ffffffffffffffff811115612d1b57612d1a612855565b5b612d2786828701612c92565b93509350506020612d3a86828701612bc1565b9150509250925092565b5f8060408385031215612d5a57612d59612851565b5b5f612d678582860161289f565b9250506020612d788582860161289f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612dc657607f821691505b602082108103612dd957612dd8612d82565b5b50919050565b7f54726164696e672061652e0000000000000000000000000000000000000000005f82015250565b5f612e13600b836127a8565b9150612e1e82612ddf565b602082019050919050565b5f6020820190508181035f830152612e4081612e07565b9050919050565b7f4e6f6262627400000000000000000000000000000000000000000000000000005f82015250565b5f612e7b6006836127a8565b9150612e8682612e47565b602082019050919050565b5f6020820190508181035f830152612ea881612e6f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5468652050616e63616b655377617020706f6c6f6264000000000000000000005f82015250565b5f612f106016836127a8565b9150612f1b82612edc565b602082019050919050565b5f6020820190508181035f830152612f3d81612f04565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f7b826128b3565b9150612f86836128b3565b9250828201905080821115612f9e57612f9d612f44565b5b92915050565b7f4e6f7400000000000000000000000000000000000000000000000000000000005f82015250565b5f612fd86003836127a8565b9150612fe382612fa4565b602082019050919050565b5f6020820190508181035f83015261300581612fcc565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6130666025836127a8565b91506130718261300c565b604082019050919050565b5f6020820190508181035f8301526130938161305a565b9050919050565b7f4e6f7462616300000000000000000000000000000000000000000000000000005f82015250565b5f6130ce6006836127a8565b91506130d98261309a565b602082019050919050565b5f6020820190508181035f8301526130fb816130c2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61315c6026836127a8565b915061316782613102565b604082019050919050565b5f6020820190508181035f83015261318981613150565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131ea6024836127a8565b91506131f582613190565b604082019050919050565b5f6020820190508181035f830152613217816131de565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132786022836127a8565b91506132838261321e565b604082019050919050565b5f6020820190508181035f8301526132a58161326c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132e06020836127a8565b91506132eb826132ac565b602082019050919050565b5f6020820190508181035f83015261330d816132d4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613348601d836127a8565b915061335382613314565b602082019050919050565b5f6020820190508181035f8301526133758161333c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133d66025836127a8565b91506133e18261337c565b604082019050919050565b5f6020820190508181035f830152613403816133ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134646023836127a8565b915061346f8261340a565b604082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f6134cc6013836127a8565b91506134d782613498565b602082019050919050565b5f6020820190508181035f8301526134f9816134c0565b9050919050565b7f626c61636b6c69737421000000000000000000000000000000000000000000005f82015250565b5f613534600a836127a8565b915061353f82613500565b602082019050919050565b5f6020820190508181035f83015261356181613528565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c655f8201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c26022836127a8565b91506135cd82613568565b604082019050919050565b5f6020820190508181035f8301526135ef816135b6565b9050919050565b5f613600826128b3565b915061360b836128b3565b9250828202613619816128b3565b915082820484148315176136305761362f612f44565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61366e826128b3565b9150613679836128b3565b92508261368957613688613637565b5b828204905092915050565b5f61369e826128b3565b91506136a9836128b3565b92508282039050818111156136c1576136c0612f44565b5b92915050565b7f45524332303a207472616e73666572206363636173646161612066726f6d20745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f613721602f836127a8565b915061372c826136c7565b604082019050919050565b5f6020820190508181035f83015261374e81613715565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137af6026836127a8565b91506137ba82613755565b604082019050919050565b5f6020820190508181035f8301526137dc816137a3565b9050919050565b5f6060820190506137f65f8301866129cb565b61380360208301856129cb565b61381060408301846129cb565b949350505050565b5f81905092915050565b50565b5f6138305f83613818565b915061383b82613822565b5f82019050919050565b5f61384f82613825565b9150819050919050565b5f8151905061386781612889565b92915050565b5f6020828403121561388257613881612851565b5b5f61388f84828501613859565b91505092915050565b5f819050919050565b5f6138bb6138b66138b184613898565b612957565b6128b3565b9050919050565b6138cb816138a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61390381612878565b82525050565b5f61391483836138fa565b60208301905092915050565b5f602082019050919050565b5f613936826138d1565b61394081856138db565b935061394b836138eb565b805f5b8381101561397b5781516139628882613909565b975061396d83613920565b92505060018101905061394e565b5085935050505092915050565b5f60a08201905061399b5f8301886129cb565b6139a860208301876138c2565b81810360408301526139ba818661392c565b90506139c96060830185612a43565b6139d660808301846129cb565b9695505050505050565b5f60c0820190506139f35f830189612a43565b613a0060208301886129cb565b613a0d60408301876138c2565b613a1a60608301866138c2565b613a276080830185612a43565b613a3460a08301846129cb565b979650505050505050565b5f81519050613a4d816128bc565b92915050565b5f805f60608486031215613a6a57613a69612851565b5b5f613a7786828701613a3f565b9350506020613a8886828701613a3f565b9250506040613a9986828701613a3f565b915050925092509256fea26469706673582212201b6494fffacfc8a185cba3524a17c276ab068f1d00e734d575818c09c785af9564736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c80636ddd171311610101578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610692578063df960d77146106ce578063e2f45605146106f6578063f2fde38b14610720576101e2565b8063a9059cbb146105d8578063c04a541414610614578063d46980161461063e578063d85ba06314610668576101e2565b80638da5cb5b116100d05780638da5cb5b1461051e57806393ec52de1461054857806395d89b4114610572578063a457c2d71461059c576101e2565b80636ddd17131461047857806370a08231146104a2578063715018a6146104de57806375f0a874146104f4576101e2565b80632c7170ee1161017957806342f98b521161014857806342f98b52146103d257806349bd5a5e146103fa5780634ada218b1461042457806351a4d3d41461044e576101e2565b80632c7170ee1461031c578063313ce56714610344578063395093511461036e5780633c4dbb05146103aa576101e2565b806318160ddd116101b557806318160ddd146102765780631aa85bfc146102a057806323b872dd146102b657806327c8f835146102f2576101e2565b806306fdde03146101e6578063095ea7b3146102105780631694505e1461024c576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610748565b6040516102079190612828565b60405180910390f35b34801561021b575f80fd5b50610236600480360381019061023191906128e6565b6107d8565b604051610243919061293e565b60405180910390f35b348015610257575f80fd5b506102606107fa565b60405161026d91906129b2565b60405180910390f35b348015610281575f80fd5b5061028a61081e565b60405161029791906129da565b60405180910390f35b3480156102ab575f80fd5b506102b4610827565b005b3480156102c1575f80fd5b506102dc60048036038101906102d791906129f3565b6108b7565b6040516102e9919061293e565b60405180910390f35b3480156102fd575f80fd5b506103066108e5565b6040516103139190612a52565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190612bd5565b6108eb565b005b34801561034f575f80fd5b50610358610a8c565b6040516103659190612c4a565b60405180910390f35b348015610379575f80fd5b50610394600480360381019061038f91906128e6565b610a94565b6040516103a1919061293e565b60405180910390f35b3480156103b5575f80fd5b506103d060048036038101906103cb9190612c63565b610aca565b005b3480156103dd575f80fd5b506103f860048036038101906103f39190612ce7565b610b15565b005b348015610405575f80fd5b5061040e610cf1565b60405161041b9190612a52565b60405180910390f35b34801561042f575f80fd5b50610438610d16565b604051610445919061293e565b60405180910390f35b348015610459575f80fd5b50610462610d29565b60405161046f91906129da565b60405180910390f35b348015610483575f80fd5b5061048c610d2f565b604051610499919061293e565b60405180910390f35b3480156104ad575f80fd5b506104c860048036038101906104c39190612c63565b610d42565b6040516104d591906129da565b60405180910390f35b3480156104e9575f80fd5b506104f2610d87565b005b3480156104ff575f80fd5b50610508610d9a565b6040516105159190612a52565b60405180910390f35b348015610529575f80fd5b50610532610dbf565b60405161053f9190612a52565b60405180910390f35b348015610553575f80fd5b5061055c610de7565b60405161056991906129da565b60405180910390f35b34801561057d575f80fd5b50610586610ded565b6040516105939190612828565b60405180910390f35b3480156105a7575f80fd5b506105c260048036038101906105bd91906128e6565b610e7d565b6040516105cf919061293e565b60405180910390f35b3480156105e3575f80fd5b506105fe60048036038101906105f991906128e6565b610ef2565b60405161060b919061293e565b60405180910390f35b34801561061f575f80fd5b50610628610f14565b6040516106359190612a52565b60405180910390f35b348015610649575f80fd5b50610652610f39565b60405161065f9190612a52565b60405180910390f35b348015610673575f80fd5b5061067c610f5e565b60405161068991906129da565b60405180910390f35b34801561069d575f80fd5b506106b860048036038101906106b39190612d44565b610f64565b6040516106c591906129da565b60405180910390f35b3480156106d9575f80fd5b506106f460048036038101906106ef9190612ce7565b610fe6565b005b348015610701575f80fd5b5061070a6111c2565b60405161071791906129da565b60405180910390f35b34801561072b575f80fd5b5061074660048036038101906107419190612c63565b6111c8565b005b60606004805461075790612daf565b80601f016020809104026020016040519081016040528092919081815260200182805461078390612daf565b80156107ce5780601f106107a5576101008083540402835291602001916107ce565b820191905f5260205f20905b8154815290600101906020018083116107b157829003601f168201915b5050505050905090565b5f806107e261124a565b90506107ef818585611251565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b61082f611414565b600a60149054906101000a900460ff161561087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087690612e29565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b5f806108c161124a565b90506108ce858285611492565b6108d985858561151d565b60019150509392505050565b61dead81565b6108f3610dbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610978575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90612e91565b60405180910390fd5b5f5b8251811015610a87575f8382815181106109d6576109d5612eaf565b5b6020026020010151905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690612f26565b60405180910390fd5b610a798184611dd1565b5080806001019150506109b9565b505050565b5f6012905090565b5f80610a9e61124a565b9050610abf818585610ab08589610f64565b610aba9190612f71565b611251565b600191505092915050565b610ad2611414565b8060105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b1d610dbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ba2575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612fee565b60405180910390fd5b5f5b83839050811015610ceb578160115f868685818110610c0557610c04612eaf565b5b9050602002016020810190610c1a9190612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110610c7c57610c7b612eaf565b5b9050602002016020810190610c919190612c63565b73ffffffffffffffffffffffffffffffffffffffff167f6d3a4d118de427fb47bb479ba9bf1ea90d938e0703ab0b9f5cfbc446f983fb5783604051610cd6919061293e565b60405180910390a28080600101915050610be3565b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b60125481565b600a60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d8f611414565b610d985f611e6f565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610dfc90612daf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2890612daf565b8015610e735780601f10610e4a57610100808354040283529160200191610e73565b820191905f5260205f20905b815481529060010190602001808311610e5657829003601f168201915b5050505050905090565b5f80610e8761124a565b90505f610e948286610f64565b905083811015610ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed09061307c565b60405180910390fd5b610ee68286868403611251565b60019250505092915050565b5f80610efc61124a565b9050610f0981858561151d565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fee610dbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611073575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a9906130e4565b60405180910390fd5b5f5b838390508110156111bc5781601a5f8686858181106110d6576110d5612eaf565b5b90506020020160208101906110eb9190612c63565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555083838281811061114d5761114c612eaf565b5b90506020020160208101906111629190612c63565b73ffffffffffffffffffffffffffffffffffffffff167f9d05bfb7cca3821390146077ff66d41d28c0c603a7d1b36e89f3912b56d7794a836040516111a7919061293e565b60405180910390a280806001019150506110b4565b50505050565b600b5481565b6111d0611414565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613172565b60405180910390fd5b61124781611e6f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b690613200565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249061328e565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161140791906129da565b60405180910390a3505050565b61141c61124a565b73ffffffffffffffffffffffffffffffffffffffff1661143a610dbf565b73ffffffffffffffffffffffffffffffffffffffff1614611490576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611487906132f6565b60405180910390fd5b565b5f61149d8484610f64565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115175781811015611509576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115009061335e565b60405180910390fd5b6115168484848403611251565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582906133ec565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061347a565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611697575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd906134e2565b60405180910390fd5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611774575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117c7575060115f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd9061354a565b60405180910390fd5b600a60149054906101000a900460ff16806118675750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806118b85750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee906135d8565b60405180910390fd5b5f810361190e5761190983835f611f32565b611dcc565b5f61191830610d42565b90505f600b54821015905080801561193c5750600a60159054906101000a900460ff165b80156119555750600a60169054906101000a900460ff16155b80156119a75750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156119fa5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a4d5750601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a90576001600a60166101000a81548160ff021916908315150217905550611a7561219e565b5f600a60166101000a81548160ff0219169083151502179055505b5f600a60169054906101000a900460ff16159050601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b3f5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611b48575f90505b5f8115611db357601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ba657505f601254115b15611c7157611bd4612710611bc66012548861242a90919063ffffffff16565b61243f90919063ffffffff16565b905060125460155482611be791906135f6565b611bf19190613664565b60185f828254611c019190612f71565b9250508190555060125460135482611c1991906135f6565b611c239190613664565b60165f828254611c339190612f71565b9250508190555060125460145482611c4b91906135f6565b611c559190613664565b60175f828254611c659190612f71565b92505081905550611d90565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611cc857505f600c54115b15611d8f57611cf6612710611ce8600c548861242a90919063ffffffff16565b61243f90919063ffffffff16565b9050600c54600f5482611d0991906135f6565b611d139190613664565b60185f828254611d239190612f71565b92505081905550600c54600d5482611d3b91906135f6565b611d459190613664565b60165f828254611d559190612f71565b92505081905550600c54600e5482611d6d91906135f6565b611d779190613664565b60175f828254611d879190612f71565b925050819055505b5b5f811115611da457611da3873083611f32565b5b8085611db09190613694565b94505b611dbe878787611f32565b601954601281905550505050505b505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f0c801b594f2c35403632296fa5b26a94a14133a4e0684ebab7ee7a03febab49460405160405180910390a35050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790613737565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120059061347a565b60405180910390fd5b612019838383612454565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561209c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612093906137c5565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218591906129da565b60405180910390a3612198848484612459565b50505050565b5f6121a830610d42565b90505f6017546016546018546121be9190612f71565b6121c89190612f71565b90505f80600283601854866121dd91906135f6565b6121e79190613664565b6121f19190613664565b90505f612207828661245e90919063ffffffff16565b90505f47905061221682612473565b5f61222a824761245e90919063ffffffff16565b90505f612254876122466016548561242a90919063ffffffff16565b61243f90919063ffffffff16565b90505f61227e886122706017548661242a90919063ffffffff16565b61243f90919063ffffffff16565b90505f81838561228e9190613694565b6122989190613694565b90505f6018819055505f6016819055505f6017819055505f871180156122bd57505f81115b1561230a576122cc87826126a6565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601854604051612301939291906137e3565b60405180910390a15b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161234f90613845565b5f6040518083038185875af1925050503d805f8114612389576040519150601f19603f3d011682016040523d82523d5f602084013e61238e565b606091505b50508098505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123d990613845565b5f6040518083038185875af1925050503d805f8114612413576040519150601f19603f3d011682016040523d82523d5f602084013e612418565b606091505b50508098505050505050505050505050565b5f818361243791906135f6565b905092915050565b5f818361244c9190613664565b905092915050565b505050565b505050565b5f818361246b9190613694565b905092915050565b5f600267ffffffffffffffff81111561248f5761248e612a6f565b5b6040519080825280602002602001820160405280156124bd5781602001602082028036833780820191505090505b50905030815f815181106124d4576124d3612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612577573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259b919061386d565b816001815181106125af576125ae612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612614307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611251565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612675959493929190613988565b5f604051808303815f87803b15801561268c575f80fd5b505af115801561269e573d5f803e3d5ffd5b505050505050565b6126d1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611251565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612756969594939291906139e0565b60606040518083038185885af1158015612772573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127979190613a53565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127d55780820151818401526020810190506127ba565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127fa8261279e565b61280481856127a8565b93506128148185602086016127b8565b61281d816127e0565b840191505092915050565b5f6020820190508181035f83015261284081846127f0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61288282612859565b9050919050565b61289281612878565b811461289c575f80fd5b50565b5f813590506128ad81612889565b92915050565b5f819050919050565b6128c5816128b3565b81146128cf575f80fd5b50565b5f813590506128e0816128bc565b92915050565b5f80604083850312156128fc576128fb612851565b5b5f6129098582860161289f565b925050602061291a858286016128d2565b9150509250929050565b5f8115159050919050565b61293881612924565b82525050565b5f6020820190506129515f83018461292f565b92915050565b5f819050919050565b5f61297a61297561297084612859565b612957565b612859565b9050919050565b5f61298b82612960565b9050919050565b5f61299c82612981565b9050919050565b6129ac81612992565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b6129d4816128b3565b82525050565b5f6020820190506129ed5f8301846129cb565b92915050565b5f805f60608486031215612a0a57612a09612851565b5b5f612a178682870161289f565b9350506020612a288682870161289f565b9250506040612a39868287016128d2565b9150509250925092565b612a4c81612878565b82525050565b5f602082019050612a655f830184612a43565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612aa5826127e0565b810181811067ffffffffffffffff82111715612ac457612ac3612a6f565b5b80604052505050565b5f612ad6612848565b9050612ae28282612a9c565b919050565b5f67ffffffffffffffff821115612b0157612b00612a6f565b5b602082029050602081019050919050565b5f80fd5b5f612b28612b2384612ae7565b612acd565b90508083825260208201905060208402830185811115612b4b57612b4a612b12565b5b835b81811015612b745780612b60888261289f565b845260208401935050602081019050612b4d565b5050509392505050565b5f82601f830112612b9257612b91612a6b565b5b8135612ba2848260208601612b16565b91505092915050565b612bb481612924565b8114612bbe575f80fd5b50565b5f81359050612bcf81612bab565b92915050565b5f8060408385031215612beb57612bea612851565b5b5f83013567ffffffffffffffff811115612c0857612c07612855565b5b612c1485828601612b7e565b9250506020612c2585828601612bc1565b9150509250929050565b5f60ff82169050919050565b612c4481612c2f565b82525050565b5f602082019050612c5d5f830184612c3b565b92915050565b5f60208284031215612c7857612c77612851565b5b5f612c858482850161289f565b91505092915050565b5f80fd5b5f8083601f840112612ca757612ca6612a6b565b5b8235905067ffffffffffffffff811115612cc457612cc3612c8e565b5b602083019150836020820283011115612ce057612cdf612b12565b5b9250929050565b5f805f60408486031215612cfe57612cfd612851565b5b5f84013567ffffffffffffffff811115612d1b57612d1a612855565b5b612d2786828701612c92565b93509350506020612d3a86828701612bc1565b9150509250925092565b5f8060408385031215612d5a57612d59612851565b5b5f612d678582860161289f565b9250506020612d788582860161289f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612dc657607f821691505b602082108103612dd957612dd8612d82565b5b50919050565b7f54726164696e672061652e0000000000000000000000000000000000000000005f82015250565b5f612e13600b836127a8565b9150612e1e82612ddf565b602082019050919050565b5f6020820190508181035f830152612e4081612e07565b9050919050565b7f4e6f6262627400000000000000000000000000000000000000000000000000005f82015250565b5f612e7b6006836127a8565b9150612e8682612e47565b602082019050919050565b5f6020820190508181035f830152612ea881612e6f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5468652050616e63616b655377617020706f6c6f6264000000000000000000005f82015250565b5f612f106016836127a8565b9150612f1b82612edc565b602082019050919050565b5f6020820190508181035f830152612f3d81612f04565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f7b826128b3565b9150612f86836128b3565b9250828201905080821115612f9e57612f9d612f44565b5b92915050565b7f4e6f7400000000000000000000000000000000000000000000000000000000005f82015250565b5f612fd86003836127a8565b9150612fe382612fa4565b602082019050919050565b5f6020820190508181035f83015261300581612fcc565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6130666025836127a8565b91506130718261300c565b604082019050919050565b5f6020820190508181035f8301526130938161305a565b9050919050565b7f4e6f7462616300000000000000000000000000000000000000000000000000005f82015250565b5f6130ce6006836127a8565b91506130d98261309a565b602082019050919050565b5f6020820190508181035f8301526130fb816130c2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61315c6026836127a8565b915061316782613102565b604082019050919050565b5f6020820190508181035f83015261318981613150565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131ea6024836127a8565b91506131f582613190565b604082019050919050565b5f6020820190508181035f830152613217816131de565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132786022836127a8565b91506132838261321e565b604082019050919050565b5f6020820190508181035f8301526132a58161326c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132e06020836127a8565b91506132eb826132ac565b602082019050919050565b5f6020820190508181035f83015261330d816132d4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613348601d836127a8565b915061335382613314565b602082019050919050565b5f6020820190508181035f8301526133758161333c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133d66025836127a8565b91506133e18261337c565b604082019050919050565b5f6020820190508181035f830152613403816133ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134646023836127a8565b915061346f8261340a565b604082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b7f426c61636b6c69737465642061646472657373000000000000000000000000005f82015250565b5f6134cc6013836127a8565b91506134d782613498565b602082019050919050565b5f6020820190508181035f8301526134f9816134c0565b9050919050565b7f626c61636b6c69737421000000000000000000000000000000000000000000005f82015250565b5f613534600a836127a8565b915061353f82613500565b602082019050919050565b5f6020820190508181035f83015261356181613528565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c655f8201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135c26022836127a8565b91506135cd82613568565b604082019050919050565b5f6020820190508181035f8301526135ef816135b6565b9050919050565b5f613600826128b3565b915061360b836128b3565b9250828202613619816128b3565b915082820484148315176136305761362f612f44565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61366e826128b3565b9150613679836128b3565b92508261368957613688613637565b5b828204905092915050565b5f61369e826128b3565b91506136a9836128b3565b92508282039050818111156136c1576136c0612f44565b5b92915050565b7f45524332303a207472616e73666572206363636173646161612066726f6d20745f8201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b5f613721602f836127a8565b915061372c826136c7565b604082019050919050565b5f6020820190508181035f83015261374e81613715565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137af6026836127a8565b91506137ba82613755565b604082019050919050565b5f6020820190508181035f8301526137dc816137a3565b9050919050565b5f6060820190506137f65f8301866129cb565b61380360208301856129cb565b61381060408301846129cb565b949350505050565b5f81905092915050565b50565b5f6138305f83613818565b915061383b82613822565b5f82019050919050565b5f61384f82613825565b9150819050919050565b5f8151905061386781612889565b92915050565b5f6020828403121561388257613881612851565b5b5f61388f84828501613859565b91505092915050565b5f819050919050565b5f6138bb6138b66138b184613898565b612957565b6128b3565b9050919050565b6138cb816138a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61390381612878565b82525050565b5f61391483836138fa565b60208301905092915050565b5f602082019050919050565b5f613936826138d1565b61394081856138db565b935061394b836138eb565b805f5b8381101561397b5781516139628882613909565b975061396d83613920565b92505060018101905061394e565b5085935050505092915050565b5f60a08201905061399b5f8301886129cb565b6139a860208301876138c2565b81810360408301526139ba818661392c565b90506139c96060830185612a43565b6139d660808301846129cb565b9695505050505050565b5f60c0820190506139f35f830189612a43565b613a0060208301886129cb565b613a0d60408301876138c2565b613a1a60608301866138c2565b613a276080830185612a43565b613a3460a08301846129cb565b979650505050505050565b5f81519050613a4d816128bc565b92915050565b5f805f60608486031215613a6a57613a69612851565b5b5f613a7786828701613a3f565b9350506020613a8886828701613a3f565b9250506040613a9986828701613a3f565b915050925092509256fea26469706673582212201b6494fffacfc8a185cba3524a17c276ab068f1d00e734d575818c09c785af9564736f6c63430008180033

Deployed Bytecode Sourcemap

25853:8743:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7524:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9439:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25930:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8400:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28145:157;;;;;;;;;;;;;:::i;:::-;;9689:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26138:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28722:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8242:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9992:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28310:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29057:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25988:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26200:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26540;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26230:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8571:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1607:103;;;;;;;;;;;;;:::i;:::-;;26025:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;956:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7053:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7743:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10270:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8933:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26062:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26101:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26333:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9230:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28404:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26291:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1865:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7524:100;7578:13;7611:5;7604:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7524:100;:::o;9439:242::-;9558:4;9580:13;9596:12;:10;:12::i;:::-;9580:28;;9619:32;9628:5;9635:7;9644:6;9619:8;:32::i;:::-;9669:4;9662:11;;;9439:242;;;;:::o;25930:51::-;;;:::o;8400:108::-;8461:7;8488:12;;8481:19;;8400:108;:::o;28145:157::-;842:13;:11;:13::i;:::-;28203:14:::1;;;;;;;;;;;28202:15;28194:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;28261:4;28244:14;;:21;;;;;;;;;;;;;;;;;;28290:4;28276:11;;:18;;;;;;;;;;;;;;;;;;28145:157::o:0;9689:295::-;9820:4;9837:15;9855:12;:10;:12::i;:::-;9837:30;;9878:38;9894:4;9900:7;9909:6;9878:15;:38::i;:::-;9927:27;9937:4;9943:2;9947:6;9927:9;:27::i;:::-;9972:4;9965:11;;;9689:295;;;;;:::o;26138:53::-;26184:6;26138:53;:::o;28722:329::-;28810:7;:5;:7::i;:::-;28796:21;;:10;:21;;;:47;;;;28835:8;;;;;;;;;;;28821:22;;:10;:22;;;28796:47;28788:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;28866:9;28861:187;28885:6;:13;28881:1;:17;28861:187;;;28916:12;28931:6;28938:1;28931:9;;;;;;;;:::i;:::-;;;;;;;;28916:24;;28967:13;;;;;;;;;;;28959:21;;:4;:21;;;28951:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;29018:22;29028:4;29034:5;29018:9;:22::i;:::-;28905:143;28900:3;;;;;;;28861:187;;;;28722:329;;:::o;8242:93::-;8300:5;8325:2;8318:9;;8242:93;:::o;9992:270::-;10107:4;10129:13;10145:12;:10;:12::i;:::-;10129:28;;10168:64;10177:5;10184:7;10221:10;10193:25;10203:5;10210:7;10193:9;:25::i;:::-;:38;;;;:::i;:::-;10168:8;:64::i;:::-;10250:4;10243:11;;;9992:270;;;;:::o;28310:90::-;842:13;:11;:13::i;:::-;28382:10:::1;28371:8;;:21;;;;;;;;;;;;;;;;;;28310:90:::0;:::o;29057:293::-;29156:7;:5;:7::i;:::-;29142:21;;:10;:21;;;:47;;;;29181:8;;;;;;;;;;;29167:22;;:10;:22;;;29142:47;29134:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;29209:9;29204:143;29228:8;;:15;;29224:1;:19;29204:143;;;29284:9;29261:7;:20;29269:8;;29278:1;29269:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29261:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;29316:8;;29325:1;29316:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29309:30;;;29329:9;29309:30;;;;;;:::i;:::-;;;;;;;;29245:3;;;;;;;29204:143;;;;29057:293;;;:::o;25988:28::-;;;;;;;;;;;;;:::o;26200:26::-;;;;;;;;;;;;;:::o;26540:::-;;;;:::o;26230:23::-;;;;;;;;;;;;;:::o;8571:177::-;8690:7;8722:9;:18;8732:7;8722:18;;;;;;;;;;;;;;;;8715:25;;8571:177;;;:::o;1607:103::-;842:13;:11;:13::i;:::-;1672:30:::1;1699:1;1672:18;:30::i;:::-;1607:103::o:0;26025:30::-;;;;;;;;;;;;;:::o;956:87::-;1002:7;1029:6;;;;;;;;;;;1022:13;;956:87;:::o;7053:26::-;;;;:::o;7743:104::-;7799:13;7832:7;7825:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7743:104;:::o;10270:505::-;10390:4;10412:13;10428:12;:10;:12::i;:::-;10412:28;;10451:24;10478:25;10488:5;10495:7;10478:9;:25::i;:::-;10451:52;;10556:15;10536:16;:35;;10514:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;10672:60;10681:5;10688:7;10716:15;10697:16;:34;10672:8;:60::i;:::-;10763:4;10756:11;;;;10270:505;;;;:::o;8933:234::-;9048:4;9070:13;9086:12;:10;:12::i;:::-;9070:28;;9109;9119:5;9126:2;9130:6;9109:9;:28::i;:::-;9155:4;9148:11;;;8933:234;;;;:::o;26062:32::-;;;;;;;;;;;;;:::o;26101:30::-;;;;;;;;;;;;;:::o;26333:27::-;;;;:::o;9230:201::-;9364:7;9396:11;:18;9408:5;9396:18;;;;;;;;;;;;;;;:27;9415:7;9396:27;;;;;;;;;;;;;;;;9389:34;;9230:201;;;;:::o;28404:305::-;28508:7;:5;:7::i;:::-;28494:21;;:10;:21;;;:47;;;;28533:8;;;;;;;;;;;28519:22;;:10;:22;;;28494:47;28486:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;28564:9;28559:147;28583:8;;:15;;28579:1;:19;28559:147;;;28639:8;28616:7;:20;28624:8;;28633:1;28624:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28616:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;28676:8;;28685:1;28676:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28663:35;;;28689:8;28663:35;;;;;;:::i;:::-;;;;;;;;28600:3;;;;;;;28559:147;;;;28404:305;;;:::o;26291:33::-;;;;:::o;1865:238::-;842:13;:11;:13::i;:::-;1988:1:::1;1968:22;;:8;:22;;::::0;1946:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2067:28;2086:8;2067:18;:28::i;:::-;1865:238:::0;:::o;134:98::-;187:7;214:10;207:17;;134:98;:::o;12919:380::-;13072:1;13055:19;;:5;:19;;;13047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13153:1;13134:21;;:7;:21;;;13126:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13237:6;13207:11;:18;13219:5;13207:18;;;;;;;;;;;;;;;:27;13226:7;13207:27;;;;;;;;;;;;;;;:36;;;;13275:7;13259:32;;13268:5;13259:32;;;13284:6;13259:32;;;;;;:::i;:::-;;;;;;;;12919:380;;;:::o;1121:132::-;1196:12;:10;:12::i;:::-;1185:23;;:7;:5;:7::i;:::-;:23;;;1177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1121:132::o;13307:498::-;13438:24;13465:25;13475:5;13482:7;13465:9;:25::i;:::-;13438:52;;13525:17;13505:16;:37;13501:297;;13605:6;13585:16;:26;;13559:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;13720:51;13729:5;13736:7;13764:6;13745:16;:25;13720:8;:51::i;:::-;13501:297;13427:378;13307:498;;;:::o;29510:2409::-;29658:1;29642:18;;:4;:18;;;29634:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29735:1;29721:16;;:2;:16;;;29713:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29797:7;:13;29805:4;29797:13;;;;;;;;;;;;;;;;;;;;;;;;;29796:14;:30;;;;;29815:7;:11;29823:2;29815:11;;;;;;;;;;;;;;;;;;;;;;;;;29814:12;29796:30;29788:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;29870:7;:13;29878:4;29870:13;;;;;;;;;;;;;;;;;;;;;;;;;29869:14;:30;;;;;29888:7;:11;29896:2;29888:11;;;;;;;;;;;;;;;;;;;;;;;;;29887:12;29869:30;:53;;;;;29904:7;:18;29912:9;29904:18;;;;;;;;;;;;;;;;;;;;;;;;;29903:19;29869:53;29861:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;29956:14;;;;;;;;;;;:31;;;;29974:7;:13;29982:4;29974:13;;;;;;;;;;;;;;;;;;;;;;;;;29956:31;:46;;;;29991:7;:11;29999:2;29991:11;;;;;;;;;;;;;;;;;;;;;;;;;29956:46;29948:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;30066:1;30056:6;:11;30052:93;;30084:28;30100:4;30106:2;30110:1;30084:15;:28::i;:::-;30127:7;;30052:93;30159:28;30190:24;30208:4;30190:9;:24::i;:::-;30159:55;;30227:12;30266:18;;30242:20;:42;;30227:57;;30315:7;:35;;;;;30339:11;;;;;;;;;;;30315:35;:48;;;;;30354:9;;;;;;;;;;;30353:10;30315:48;:66;;;;;30365:10;:16;30376:4;30365:16;;;;;;;;;;;;;;;;;;;;;;;;;30315:66;:97;;;;;30399:7;:13;30407:4;30399:13;;;;;;;;;;;;;;;;;;;;;;;;;30398:14;30315:97;:126;;;;;30430:7;:11;30438:2;30430:11;;;;;;;;;;;;;;;;;;;;;;;;;30429:12;30315:126;30297:261;;;30480:4;30468:9;;:16;;;;;;;;;;;;;;;;;;30501:11;:9;:11::i;:::-;30541:5;30529:9;;:17;;;;;;;;;;;;;;;;;;30297:261;30570:12;30586:9;;;;;;;;;;;30585:10;30570:25;;30612:7;:13;30620:4;30612:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;30629:7;:11;30637:2;30629:11;;;;;;;;;;;;;;;;;;;;;;;;;30612:28;30608:76;;;30667:5;30657:15;;30608:76;30696:12;30733:7;30729:1095;;;30785:10;:14;30796:2;30785:14;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;30817:1;30803:11;;:15;30785:33;30781:894;;;30846:34;30874:5;30846:23;30857:11;;30846:6;:10;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;30839:41;;30994:11;;30949:20;;30942:4;:27;;;;:::i;:::-;30941:64;;;;:::i;:::-;30899:17;;:106;;;;;;;:::i;:::-;;;;;;;;31105:11;;31070:10;;31063:4;:17;;;;:::i;:::-;31062:54;;;;:::i;:::-;31024:13;;:92;;;;;;;:::i;:::-;;;;;;;;31229:11;;31189:15;;31182:4;:22;;;;:::i;:::-;31181:59;;;;:::i;:::-;31135:21;;:105;;;;;;;:::i;:::-;;;;;;;;30781:894;;;31302:10;:16;31313:4;31302:16;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;31337:1;31322:12;;:16;31302:36;31298:377;;;31366:35;31395:5;31366:24;31377:12;;31366:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;31359:42;;31463:12;;31449:10;;31442:4;:17;;;;:::i;:::-;31441:34;;;;:::i;:::-;31420:17;;:55;;;;;;;:::i;:::-;;;;;;;;31531:12;;31519:8;;31512:4;:15;;;;:::i;:::-;31511:32;;;;:::i;:::-;31494:13;;:49;;;;;;;:::i;:::-;;;;;;;;31647:12;;31616:6;;31609:4;:13;;;;:::i;:::-;31608:51;;;;:::i;:::-;31562:21;;:97;;;;;;;:::i;:::-;;;;;;;;31298:377;30781:894;31702:1;31695:4;:8;31691:91;;;31724:42;31740:4;31754;31761;31724:15;:42::i;:::-;31691:91;31808:4;31798:14;;;;;:::i;:::-;;;30729:1095;31836:33;31852:4;31858:2;31862:6;31836:15;:33::i;:::-;31894:17;;31880:11;:31;;;;29623:2296;;;;29510:2409;;;;:::o;29362:140::-;29446:5;29427:10;:16;29438:4;29427:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;29488:5;29467:27;;29482:4;29467:27;;;;;;;;;;;;29362:140;;:::o;2263:191::-;2337:16;2356:6;;;;;;;;;;;2337:25;;2382:8;2373:6;;:17;;;;;;;;;;;;;;;;;;2437:8;2406:40;;2427:8;2406:40;;;;;;;;;;;;2326:128;2263:191;:::o;10783:879::-;10922:1;10906:18;;:4;:18;;;10898:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11009:1;10995:16;;:2;:16;;;10987:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11064:38;11085:4;11091:2;11095:6;11064:20;:38::i;:::-;11115:19;11137:9;:15;11147:4;11137:15;;;;;;;;;;;;;;;;11115:37;;11200:6;11185:11;:21;;11163:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11340:6;11326:11;:20;11308:9;:15;11318:4;11308:15;;;;;;;;;;;;;;;:38;;;;11543:6;11526:9;:13;11536:2;11526:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;11593:2;11578:26;;11587:4;11578:26;;;11597:6;11578:26;;;;;;:::i;:::-;;;;;;;;11617:37;11637:4;11643:2;11647:6;11617:19;:37::i;:::-;10887:775;10783:879;;;:::o;32820:1771::-;32861:23;32887:24;32905:4;32887:9;:24::i;:::-;32861:50;;32922:25;33012:21;;32983:13;;32950:17;;:46;;;;:::i;:::-;:83;;;;:::i;:::-;32922:111;;33044:12;33071:23;33183:1;33150:17;33116;;33098:15;:35;;;;:::i;:::-;33097:70;;;;:::i;:::-;:87;;;;:::i;:::-;33071:113;;33195:26;33224:36;33244:15;33224;:19;;:36;;;;:::i;:::-;33195:65;;33273:25;33301:21;33273:49;;33335:37;33353:18;33335:17;:37::i;:::-;33385:18;33406:44;33432:17;33406:21;:25;;:44;;;;:::i;:::-;33385:65;;33463:23;33489:76;33537:17;33489:29;33504:13;;33489:10;:14;;:29;;;;:::i;:::-;:33;;:76;;;;:::i;:::-;33463:102;;33578:25;33606:84;33662:17;33606:37;33621:21;;33606:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;33578:112;;33703:23;33786:17;33755:15;33729:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;33703:100;;33836:1;33816:17;:21;;;;33864:1;33848:13;:17;;;;33900:1;33876:21;:25;;;;33936:1;33918:15;:19;:42;;;;;33959:1;33941:15;:19;33918:42;33914:278;;;33977:47;33991:15;34008;33977:13;:47::i;:::-;34044:136;34077:18;34114:15;34148:17;;34044:136;;;;;;;;:::i;:::-;;;;;;;;33914:278;34416:17;;;;;;;;;;;34408:31;;34447:17;34408:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34394:75;;;;;34504:15;;;;;;;;;;;34496:29;;34547:21;34496:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34482:101;;;;;32850:1741;;;;;;;;;;32820:1771::o;17396:98::-;17454:7;17485:1;17481;:5;;;;:::i;:::-;17474:12;;17396:98;;;;:::o;17719:::-;17777:7;17808:1;17804;:5;;;;:::i;:::-;17797:12;;17719:98;;;;:::o;13813:125::-;;;;:::o;13946:124::-;;;;:::o;17039:98::-;17097:7;17128:1;17124;:5;;;;:::i;:::-;17117:12;;17039:98;;;;:::o;31927:503::-;31995:21;32033:1;32019:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31995:40;;32064:4;32046;32051:1;32046:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32090:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32080:4;32085:1;32080:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32125:62;32142:4;32157:15;32175:11;32125:8;:62::i;:::-;32226:15;:66;;;32307:11;32333:1;32349:4;32376;32396:15;32226:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31984:446;31927:503;:::o;32438:372::-;32521:62;32538:4;32553:15;32571:11;32521:8;:62::i;:::-;32596:15;:31;;;32635:9;32668:4;32688:11;32714:1;32730;32746:15;;;;;;;;;;;32776;32596:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32438:372;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:117::-;5862:1;5859;5852:12;5876:180;5924:77;5921:1;5914:88;6021:4;6018:1;6011:15;6045:4;6042:1;6035:15;6062:281;6145:27;6167:4;6145:27;:::i;:::-;6137:6;6133:40;6275:6;6263:10;6260:22;6239:18;6227:10;6224:34;6221:62;6218:88;;;6286:18;;:::i;:::-;6218:88;6326:10;6322:2;6315:22;6105:238;6062:281;;:::o;6349:129::-;6383:6;6410:20;;:::i;:::-;6400:30;;6439:33;6467:4;6459:6;6439:33;:::i;:::-;6349:129;;;:::o;6484:311::-;6561:4;6651:18;6643:6;6640:30;6637:56;;;6673:18;;:::i;:::-;6637:56;6723:4;6715:6;6711:17;6703:25;;6783:4;6777;6773:15;6765:23;;6484:311;;;:::o;6801:117::-;6910:1;6907;6900:12;6941:710;7037:5;7062:81;7078:64;7135:6;7078:64;:::i;:::-;7062:81;:::i;:::-;7053:90;;7163:5;7192:6;7185:5;7178:21;7226:4;7219:5;7215:16;7208:23;;7279:4;7271:6;7267:17;7259:6;7255:30;7308:3;7300:6;7297:15;7294:122;;;7327:79;;:::i;:::-;7294:122;7442:6;7425:220;7459:6;7454:3;7451:15;7425:220;;;7534:3;7563:37;7596:3;7584:10;7563:37;:::i;:::-;7558:3;7551:50;7630:4;7625:3;7621:14;7614:21;;7501:144;7485:4;7480:3;7476:14;7469:21;;7425:220;;;7429:21;7043:608;;6941:710;;;;;:::o;7674:370::-;7745:5;7794:3;7787:4;7779:6;7775:17;7771:27;7761:122;;7802:79;;:::i;:::-;7761:122;7919:6;7906:20;7944:94;8034:3;8026:6;8019:4;8011:6;8007:17;7944:94;:::i;:::-;7935:103;;7751:293;7674:370;;;;:::o;8050:116::-;8120:21;8135:5;8120:21;:::i;:::-;8113:5;8110:32;8100:60;;8156:1;8153;8146:12;8100:60;8050:116;:::o;8172:133::-;8215:5;8253:6;8240:20;8231:29;;8269:30;8293:5;8269:30;:::i;:::-;8172:133;;;;:::o;8311:678::-;8401:6;8409;8458:2;8446:9;8437:7;8433:23;8429:32;8426:119;;;8464:79;;:::i;:::-;8426:119;8612:1;8601:9;8597:17;8584:31;8642:18;8634:6;8631:30;8628:117;;;8664:79;;:::i;:::-;8628:117;8769:78;8839:7;8830:6;8819:9;8815:22;8769:78;:::i;:::-;8759:88;;8555:302;8896:2;8922:50;8964:7;8955:6;8944:9;8940:22;8922:50;:::i;:::-;8912:60;;8867:115;8311:678;;;;;:::o;8995:86::-;9030:7;9070:4;9063:5;9059:16;9048:27;;8995:86;;;:::o;9087:112::-;9170:22;9186:5;9170:22;:::i;:::-;9165:3;9158:35;9087:112;;:::o;9205:214::-;9294:4;9332:2;9321:9;9317:18;9309:26;;9345:67;9409:1;9398:9;9394:17;9385:6;9345:67;:::i;:::-;9205:214;;;;:::o;9425:329::-;9484:6;9533:2;9521:9;9512:7;9508:23;9504:32;9501:119;;;9539:79;;:::i;:::-;9501:119;9659:1;9684:53;9729:7;9720:6;9709:9;9705:22;9684:53;:::i;:::-;9674:63;;9630:117;9425:329;;;;:::o;9760:117::-;9869:1;9866;9859:12;9900:568;9973:8;9983:6;10033:3;10026:4;10018:6;10014:17;10010:27;10000:122;;10041:79;;:::i;:::-;10000:122;10154:6;10141:20;10131:30;;10184:18;10176:6;10173:30;10170:117;;;10206:79;;:::i;:::-;10170:117;10320:4;10312:6;10308:17;10296:29;;10374:3;10366:4;10358:6;10354:17;10344:8;10340:32;10337:41;10334:128;;;10381:79;;:::i;:::-;10334:128;9900:568;;;;;:::o;10474:698::-;10566:6;10574;10582;10631:2;10619:9;10610:7;10606:23;10602:32;10599:119;;;10637:79;;:::i;:::-;10599:119;10785:1;10774:9;10770:17;10757:31;10815:18;10807:6;10804:30;10801:117;;;10837:79;;:::i;:::-;10801:117;10950:80;11022:7;11013:6;11002:9;10998:22;10950:80;:::i;:::-;10932:98;;;;10728:312;11079:2;11105:50;11147:7;11138:6;11127:9;11123:22;11105:50;:::i;:::-;11095:60;;11050:115;10474:698;;;;;:::o;11178:474::-;11246:6;11254;11303:2;11291:9;11282:7;11278:23;11274:32;11271:119;;;11309:79;;:::i;:::-;11271:119;11429:1;11454:53;11499:7;11490:6;11479:9;11475:22;11454:53;:::i;:::-;11444:63;;11400:117;11556:2;11582:53;11627:7;11618:6;11607:9;11603:22;11582:53;:::i;:::-;11572:63;;11527:118;11178:474;;;;;:::o;11658:180::-;11706:77;11703:1;11696:88;11803:4;11800:1;11793:15;11827:4;11824:1;11817:15;11844:320;11888:6;11925:1;11919:4;11915:12;11905:22;;11972:1;11966:4;11962:12;11993:18;11983:81;;12049:4;12041:6;12037:17;12027:27;;11983:81;12111:2;12103:6;12100:14;12080:18;12077:38;12074:84;;12130:18;;:::i;:::-;12074:84;11895:269;11844:320;;;:::o;12170:161::-;12310:13;12306:1;12298:6;12294:14;12287:37;12170:161;:::o;12337:366::-;12479:3;12500:67;12564:2;12559:3;12500:67;:::i;:::-;12493:74;;12576:93;12665:3;12576:93;:::i;:::-;12694:2;12689:3;12685:12;12678:19;;12337:366;;;:::o;12709:419::-;12875:4;12913:2;12902:9;12898:18;12890:26;;12962:9;12956:4;12952:20;12948:1;12937:9;12933:17;12926:47;12990:131;13116:4;12990:131;:::i;:::-;12982:139;;12709:419;;;:::o;13134:156::-;13274:8;13270:1;13262:6;13258:14;13251:32;13134:156;:::o;13296:365::-;13438:3;13459:66;13523:1;13518:3;13459:66;:::i;:::-;13452:73;;13534:93;13623:3;13534:93;:::i;:::-;13652:2;13647:3;13643:12;13636:19;;13296:365;;;:::o;13667:419::-;13833:4;13871:2;13860:9;13856:18;13848:26;;13920:9;13914:4;13910:20;13906:1;13895:9;13891:17;13884:47;13948:131;14074:4;13948:131;:::i;:::-;13940:139;;13667:419;;;:::o;14092:180::-;14140:77;14137:1;14130:88;14237:4;14234:1;14227:15;14261:4;14258:1;14251:15;14278:172;14418:24;14414:1;14406:6;14402:14;14395:48;14278:172;:::o;14456:366::-;14598:3;14619:67;14683:2;14678:3;14619:67;:::i;:::-;14612:74;;14695:93;14784:3;14695:93;:::i;:::-;14813:2;14808:3;14804:12;14797:19;;14456:366;;;:::o;14828:419::-;14994:4;15032:2;15021:9;15017:18;15009:26;;15081:9;15075:4;15071:20;15067:1;15056:9;15052:17;15045:47;15109:131;15235:4;15109:131;:::i;:::-;15101:139;;14828:419;;;:::o;15253:180::-;15301:77;15298:1;15291:88;15398:4;15395:1;15388:15;15422:4;15419:1;15412:15;15439:191;15479:3;15498:20;15516:1;15498:20;:::i;:::-;15493:25;;15532:20;15550:1;15532:20;:::i;:::-;15527:25;;15575:1;15572;15568:9;15561:16;;15596:3;15593:1;15590:10;15587:36;;;15603:18;;:::i;:::-;15587:36;15439:191;;;;:::o;15636:153::-;15776:5;15772:1;15764:6;15760:14;15753:29;15636:153;:::o;15795:365::-;15937:3;15958:66;16022:1;16017:3;15958:66;:::i;:::-;15951:73;;16033:93;16122:3;16033:93;:::i;:::-;16151:2;16146:3;16142:12;16135:19;;15795:365;;;:::o;16166:419::-;16332:4;16370:2;16359:9;16355:18;16347:26;;16419:9;16413:4;16409:20;16405:1;16394:9;16390:17;16383:47;16447:131;16573:4;16447:131;:::i;:::-;16439:139;;16166:419;;;:::o;16591:224::-;16731:34;16727:1;16719:6;16715:14;16708:58;16800:7;16795:2;16787:6;16783:15;16776:32;16591:224;:::o;16821:366::-;16963:3;16984:67;17048:2;17043:3;16984:67;:::i;:::-;16977:74;;17060:93;17149:3;17060:93;:::i;:::-;17178:2;17173:3;17169:12;17162:19;;16821:366;;;:::o;17193:419::-;17359:4;17397:2;17386:9;17382:18;17374:26;;17446:9;17440:4;17436:20;17432:1;17421:9;17417:17;17410:47;17474:131;17600:4;17474:131;:::i;:::-;17466:139;;17193:419;;;:::o;17618:156::-;17758:8;17754:1;17746:6;17742:14;17735:32;17618:156;:::o;17780:365::-;17922:3;17943:66;18007:1;18002:3;17943:66;:::i;:::-;17936:73;;18018:93;18107:3;18018:93;:::i;:::-;18136:2;18131:3;18127:12;18120:19;;17780:365;;;:::o;18151:419::-;18317:4;18355:2;18344:9;18340:18;18332:26;;18404:9;18398:4;18394:20;18390:1;18379:9;18375:17;18368:47;18432:131;18558:4;18432:131;:::i;:::-;18424:139;;18151:419;;;:::o;18576:225::-;18716:34;18712:1;18704:6;18700:14;18693:58;18785:8;18780:2;18772:6;18768:15;18761:33;18576:225;:::o;18807:366::-;18949:3;18970:67;19034:2;19029:3;18970:67;:::i;:::-;18963:74;;19046:93;19135:3;19046:93;:::i;:::-;19164:2;19159:3;19155:12;19148:19;;18807:366;;;:::o;19179:419::-;19345:4;19383:2;19372:9;19368:18;19360:26;;19432:9;19426:4;19422:20;19418:1;19407:9;19403:17;19396:47;19460:131;19586:4;19460:131;:::i;:::-;19452:139;;19179:419;;;:::o;19604:223::-;19744:34;19740:1;19732:6;19728:14;19721:58;19813:6;19808:2;19800:6;19796:15;19789:31;19604:223;:::o;19833:366::-;19975:3;19996:67;20060:2;20055:3;19996:67;:::i;:::-;19989:74;;20072:93;20161:3;20072:93;:::i;:::-;20190:2;20185:3;20181:12;20174:19;;19833:366;;;:::o;20205:419::-;20371:4;20409:2;20398:9;20394:18;20386:26;;20458:9;20452:4;20448:20;20444:1;20433:9;20429:17;20422:47;20486:131;20612:4;20486:131;:::i;:::-;20478:139;;20205:419;;;:::o;20630:221::-;20770:34;20766:1;20758:6;20754:14;20747:58;20839:4;20834:2;20826:6;20822:15;20815:29;20630:221;:::o;20857:366::-;20999:3;21020:67;21084:2;21079:3;21020:67;:::i;:::-;21013:74;;21096:93;21185:3;21096:93;:::i;:::-;21214:2;21209:3;21205:12;21198:19;;20857:366;;;:::o;21229:419::-;21395:4;21433:2;21422:9;21418:18;21410:26;;21482:9;21476:4;21472:20;21468:1;21457:9;21453:17;21446:47;21510:131;21636:4;21510:131;:::i;:::-;21502:139;;21229:419;;;:::o;21654:182::-;21794:34;21790:1;21782:6;21778:14;21771:58;21654:182;:::o;21842:366::-;21984:3;22005:67;22069:2;22064:3;22005:67;:::i;:::-;21998:74;;22081:93;22170:3;22081:93;:::i;:::-;22199:2;22194:3;22190:12;22183:19;;21842:366;;;:::o;22214:419::-;22380:4;22418:2;22407:9;22403:18;22395:26;;22467:9;22461:4;22457:20;22453:1;22442:9;22438:17;22431:47;22495:131;22621:4;22495:131;:::i;:::-;22487:139;;22214:419;;;:::o;22639:179::-;22779:31;22775:1;22767:6;22763:14;22756:55;22639:179;:::o;22824:366::-;22966:3;22987:67;23051:2;23046:3;22987:67;:::i;:::-;22980:74;;23063:93;23152:3;23063:93;:::i;:::-;23181:2;23176:3;23172:12;23165:19;;22824:366;;;:::o;23196:419::-;23362:4;23400:2;23389:9;23385:18;23377:26;;23449:9;23443:4;23439:20;23435:1;23424:9;23420:17;23413:47;23477:131;23603:4;23477:131;:::i;:::-;23469:139;;23196:419;;;:::o;23621:224::-;23761:34;23757:1;23749:6;23745:14;23738:58;23830:7;23825:2;23817:6;23813:15;23806:32;23621:224;:::o;23851:366::-;23993:3;24014:67;24078:2;24073:3;24014:67;:::i;:::-;24007:74;;24090:93;24179:3;24090:93;:::i;:::-;24208:2;24203:3;24199:12;24192:19;;23851:366;;;:::o;24223:419::-;24389:4;24427:2;24416:9;24412:18;24404:26;;24476:9;24470:4;24466:20;24462:1;24451:9;24447:17;24440:47;24504:131;24630:4;24504:131;:::i;:::-;24496:139;;24223:419;;;:::o;24648:222::-;24788:34;24784:1;24776:6;24772:14;24765:58;24857:5;24852:2;24844:6;24840:15;24833:30;24648:222;:::o;24876:366::-;25018:3;25039:67;25103:2;25098:3;25039:67;:::i;:::-;25032:74;;25115:93;25204:3;25115:93;:::i;:::-;25233:2;25228:3;25224:12;25217:19;;24876:366;;;:::o;25248:419::-;25414:4;25452:2;25441:9;25437:18;25429:26;;25501:9;25495:4;25491:20;25487:1;25476:9;25472:17;25465:47;25529:131;25655:4;25529:131;:::i;:::-;25521:139;;25248:419;;;:::o;25673:169::-;25813:21;25809:1;25801:6;25797:14;25790:45;25673:169;:::o;25848:366::-;25990:3;26011:67;26075:2;26070:3;26011:67;:::i;:::-;26004:74;;26087:93;26176:3;26087:93;:::i;:::-;26205:2;26200:3;26196:12;26189:19;;25848:366;;;:::o;26220:419::-;26386:4;26424:2;26413:9;26409:18;26401:26;;26473:9;26467:4;26463:20;26459:1;26448:9;26444:17;26437:47;26501:131;26627:4;26501:131;:::i;:::-;26493:139;;26220:419;;;:::o;26645:160::-;26785:12;26781:1;26773:6;26769:14;26762:36;26645:160;:::o;26811:366::-;26953:3;26974:67;27038:2;27033:3;26974:67;:::i;:::-;26967:74;;27050:93;27139:3;27050:93;:::i;:::-;27168:2;27163:3;27159:12;27152:19;;26811:366;;;:::o;27183:419::-;27349:4;27387:2;27376:9;27372:18;27364:26;;27436:9;27430:4;27426:20;27422:1;27411:9;27407:17;27400:47;27464:131;27590:4;27464:131;:::i;:::-;27456:139;;27183:419;;;:::o;27608:221::-;27748:34;27744:1;27736:6;27732:14;27725:58;27817:4;27812:2;27804:6;27800:15;27793:29;27608:221;:::o;27835:366::-;27977:3;27998:67;28062:2;28057:3;27998:67;:::i;:::-;27991:74;;28074:93;28163:3;28074:93;:::i;:::-;28192:2;28187:3;28183:12;28176:19;;27835:366;;;:::o;28207:419::-;28373:4;28411:2;28400:9;28396:18;28388:26;;28460:9;28454:4;28450:20;28446:1;28435:9;28431:17;28424:47;28488:131;28614:4;28488:131;:::i;:::-;28480:139;;28207:419;;;:::o;28632:410::-;28672:7;28695:20;28713:1;28695:20;:::i;:::-;28690:25;;28729:20;28747:1;28729:20;:::i;:::-;28724:25;;28784:1;28781;28777:9;28806:30;28824:11;28806:30;:::i;:::-;28795:41;;28985:1;28976:7;28972:15;28969:1;28966:22;28946:1;28939:9;28919:83;28896:139;;29015:18;;:::i;:::-;28896:139;28680:362;28632:410;;;;:::o;29048:180::-;29096:77;29093:1;29086:88;29193:4;29190:1;29183:15;29217:4;29214:1;29207:15;29234:185;29274:1;29291:20;29309:1;29291:20;:::i;:::-;29286:25;;29325:20;29343:1;29325:20;:::i;:::-;29320:25;;29364:1;29354:35;;29369:18;;:::i;:::-;29354:35;29411:1;29408;29404:9;29399:14;;29234:185;;;;:::o;29425:194::-;29465:4;29485:20;29503:1;29485:20;:::i;:::-;29480:25;;29519:20;29537:1;29519:20;:::i;:::-;29514:25;;29563:1;29560;29556:9;29548:17;;29587:1;29581:4;29578:11;29575:37;;;29592:18;;:::i;:::-;29575:37;29425:194;;;;:::o;29625:234::-;29765:34;29761:1;29753:6;29749:14;29742:58;29834:17;29829:2;29821:6;29817:15;29810:42;29625:234;:::o;29865:366::-;30007:3;30028:67;30092:2;30087:3;30028:67;:::i;:::-;30021:74;;30104:93;30193:3;30104:93;:::i;:::-;30222:2;30217:3;30213:12;30206:19;;29865:366;;;:::o;30237:419::-;30403:4;30441:2;30430:9;30426:18;30418:26;;30490:9;30484:4;30480:20;30476:1;30465:9;30461:17;30454:47;30518:131;30644:4;30518:131;:::i;:::-;30510:139;;30237:419;;;:::o;30662:225::-;30802:34;30798:1;30790:6;30786:14;30779:58;30871:8;30866:2;30858:6;30854:15;30847:33;30662:225;:::o;30893:366::-;31035:3;31056:67;31120:2;31115:3;31056:67;:::i;:::-;31049:74;;31132:93;31221:3;31132:93;:::i;:::-;31250:2;31245:3;31241:12;31234:19;;30893:366;;;:::o;31265:419::-;31431:4;31469:2;31458:9;31454:18;31446:26;;31518:9;31512:4;31508:20;31504:1;31493:9;31489:17;31482:47;31546:131;31672:4;31546:131;:::i;:::-;31538:139;;31265:419;;;:::o;31690:442::-;31839:4;31877:2;31866:9;31862:18;31854:26;;31890:71;31958:1;31947:9;31943:17;31934:6;31890:71;:::i;:::-;31971:72;32039:2;32028:9;32024:18;32015:6;31971:72;:::i;:::-;32053;32121:2;32110:9;32106:18;32097:6;32053:72;:::i;:::-;31690:442;;;;;;:::o;32138:147::-;32239:11;32276:3;32261:18;;32138:147;;;;:::o;32291:114::-;;:::o;32411:398::-;32570:3;32591:83;32672:1;32667:3;32591:83;:::i;:::-;32584:90;;32683:93;32772:3;32683:93;:::i;:::-;32801:1;32796:3;32792:11;32785:18;;32411:398;;;:::o;32815:379::-;32999:3;33021:147;33164:3;33021:147;:::i;:::-;33014:154;;33185:3;33178:10;;32815:379;;;:::o;33200:143::-;33257:5;33288:6;33282:13;33273:22;;33304:33;33331:5;33304:33;:::i;:::-;33200:143;;;;:::o;33349:351::-;33419:6;33468:2;33456:9;33447:7;33443:23;33439:32;33436:119;;;33474:79;;:::i;:::-;33436:119;33594:1;33619:64;33675:7;33666:6;33655:9;33651:22;33619:64;:::i;:::-;33609:74;;33565:128;33349:351;;;;:::o;33706:85::-;33751:7;33780:5;33769:16;;33706:85;;;:::o;33797:158::-;33855:9;33888:61;33906:42;33915:32;33941:5;33915:32;:::i;:::-;33906:42;:::i;:::-;33888:61;:::i;:::-;33875:74;;33797:158;;;:::o;33961:147::-;34056:45;34095:5;34056:45;:::i;:::-;34051:3;34044:58;33961:147;;:::o;34114:114::-;34181:6;34215:5;34209:12;34199:22;;34114:114;;;:::o;34234:184::-;34333:11;34367:6;34362:3;34355:19;34407:4;34402:3;34398:14;34383:29;;34234:184;;;;:::o;34424:132::-;34491:4;34514:3;34506:11;;34544:4;34539:3;34535:14;34527:22;;34424:132;;;:::o;34562:108::-;34639:24;34657:5;34639:24;:::i;:::-;34634:3;34627:37;34562:108;;:::o;34676:179::-;34745:10;34766:46;34808:3;34800:6;34766:46;:::i;:::-;34844:4;34839:3;34835:14;34821:28;;34676:179;;;;:::o;34861:113::-;34931:4;34963;34958:3;34954:14;34946:22;;34861:113;;;:::o;35010:732::-;35129:3;35158:54;35206:5;35158:54;:::i;:::-;35228:86;35307:6;35302:3;35228:86;:::i;:::-;35221:93;;35338:56;35388:5;35338:56;:::i;:::-;35417:7;35448:1;35433:284;35458:6;35455:1;35452:13;35433:284;;;35534:6;35528:13;35561:63;35620:3;35605:13;35561:63;:::i;:::-;35554:70;;35647:60;35700:6;35647:60;:::i;:::-;35637:70;;35493:224;35480:1;35477;35473:9;35468:14;;35433:284;;;35437:14;35733:3;35726:10;;35134:608;;;35010:732;;;;:::o;35748:831::-;36011:4;36049:3;36038:9;36034:19;36026:27;;36063:71;36131:1;36120:9;36116:17;36107:6;36063:71;:::i;:::-;36144:80;36220:2;36209:9;36205:18;36196:6;36144:80;:::i;:::-;36271:9;36265:4;36261:20;36256:2;36245:9;36241:18;36234:48;36299:108;36402:4;36393:6;36299:108;:::i;:::-;36291:116;;36417:72;36485:2;36474:9;36470:18;36461:6;36417:72;:::i;:::-;36499:73;36567:3;36556:9;36552:19;36543:6;36499:73;:::i;:::-;35748:831;;;;;;;;:::o;36585:807::-;36834:4;36872:3;36861:9;36857:19;36849:27;;36886:71;36954:1;36943:9;36939:17;36930:6;36886:71;:::i;:::-;36967:72;37035:2;37024:9;37020:18;37011:6;36967:72;:::i;:::-;37049:80;37125:2;37114:9;37110:18;37101:6;37049:80;:::i;:::-;37139;37215:2;37204:9;37200:18;37191:6;37139:80;:::i;:::-;37229:73;37297:3;37286:9;37282:19;37273:6;37229:73;:::i;:::-;37312;37380:3;37369:9;37365:19;37356:6;37312:73;:::i;:::-;36585:807;;;;;;;;;:::o;37398:143::-;37455:5;37486:6;37480:13;37471:22;;37502:33;37529:5;37502:33;:::i;:::-;37398:143;;;;:::o;37547:663::-;37635:6;37643;37651;37700:2;37688:9;37679:7;37675:23;37671:32;37668:119;;;37706:79;;:::i;:::-;37668:119;37826:1;37851:64;37907:7;37898:6;37887:9;37883:22;37851:64;:::i;:::-;37841:74;;37797:128;37964:2;37990:64;38046:7;38037:6;38026:9;38022:22;37990:64;:::i;:::-;37980:74;;37935:129;38103:2;38129:64;38185:7;38176:6;38165:9;38161:22;38129:64;:::i;:::-;38119:74;;38074:129;37547:663;;;;;:::o

Swarm Source

ipfs://1b6494fffacfc8a185cba3524a17c276ab068f1d00e734d575818c09c785af95
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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