ETH Price: $3,488.91 (+2.17%)

Token

SHARITY TOKEN (SHARE)
 

Overview

Max Total Supply

1,000,000,000 SHARE

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 SHARE

Value
$0.00
0xfbbef43f7fd3e3201dee0a57c382dbea6772b7a1
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:
SHARITY

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// BUILT BY SAFU DEV IAN CAWREY 


//                                                                                                                                                      
//   SSSSSSSSSSSSSSS HHHHHHHHH     HHHHHHHHH               AAA               RRRRRRRRRRRRRRRRR   IIIIIIIIIITTTTTTTTTTTTTTTTTTTTTTTYYYYYYY       YYYYYYY
// SS:::::::::::::::SH:::::::H     H:::::::H              A:::A              R::::::::::::::::R  I::::::::IT:::::::::::::::::::::TY:::::Y       Y:::::Y
//S:::::SSSSSS::::::SH:::::::H     H:::::::H             A:::::A             R::::::RRRRRR:::::R I::::::::IT:::::::::::::::::::::TY:::::Y       Y:::::Y
//S:::::S     SSSSSSSHH::::::H     H::::::HH            A:::::::A            RR:::::R     R:::::RII::::::IIT:::::TT:::::::TT:::::TY::::::Y     Y::::::Y
//S:::::S              H:::::H     H:::::H             A:::::::::A             R::::R     R:::::R  I::::I  TTTTTT  T:::::T  TTTTTTYYY:::::Y   Y:::::YYY
//S:::::S              H:::::H     H:::::H            A:::::A:::::A            R::::R     R:::::R  I::::I          T:::::T           Y:::::Y Y:::::Y   
// S::::SSSS           H::::::HHHHH::::::H           A:::::A A:::::A           R::::RRRRRR:::::R   I::::I          T:::::T            Y:::::Y:::::Y    
//  SS::::::SSSSS      H:::::::::::::::::H          A:::::A   A:::::A          R:::::::::::::RR    I::::I          T:::::T             Y:::::::::Y     
//    SSS::::::::SS    H:::::::::::::::::H         A:::::A     A:::::A         R::::RRRRRR:::::R   I::::I          T:::::T              Y:::::::Y      
//       SSSSSS::::S   H::::::HHHHH::::::H        A:::::AAAAAAAAA:::::A        R::::R     R:::::R  I::::I          T:::::T               Y:::::Y       
//            S:::::S  H:::::H     H:::::H       A:::::::::::::::::::::A       R::::R     R:::::R  I::::I          T:::::T               Y:::::Y       
//            S:::::S  H:::::H     H:::::H      A:::::AAAAAAAAAAAAA:::::A      R::::R     R:::::R  I::::I          T:::::T               Y:::::Y       
//SSSSSSS     S:::::SHH::::::H     H::::::HH   A:::::A             A:::::A   RR:::::R     R:::::RII::::::II      TT:::::::TT             Y:::::Y       
//S::::::SSSSSS:::::SH:::::::H     H:::::::H  A:::::A               A:::::A  R::::::R     R:::::RI::::::::I      T:::::::::T          YYYY:::::YYYY    
//S:::::::::::::::SS H:::::::H     H:::::::H A:::::A                 A:::::A R::::::R     R:::::RI::::::::I      T:::::::::T          Y:::::::::::Y    
// SSSSSSSSSSSSSSS   HHHHHHHHH     HHHHHHHHHAAAAAAA                   AAAAAAARRRRRRRR     RRRRRRRIIIIIIIIII      TTTTTTTTTTT          YYYYYYYYYYYYY    
                                                                                                                                                      
                                                                                                                     
                                                                                                                    



// SPDX-License-Identifier: UNLICENSED
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// 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` 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.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * 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);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


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

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the 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);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


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

pragma solidity ^0.8.0;




/**
 * @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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, 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;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they 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
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the 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:
     *
     * - `to` 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];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    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;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    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;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer 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;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    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);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as 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 not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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);
    }
}

interface BURNTOKEN {
  function burn(uint256 amount) external;
}


pragma solidity ^0.8.0;

interface IRouter {
    function WETH() external pure returns (address);
    function factory() external pure returns (address);    

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

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

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

    contract SHARITY  is Ownable, ERC20('SHARITY TOKEN', 'SHARE') {
       
    IRouter public Router;
    
    uint256 public donationsFee;
    uint256 public burnFee;
    uint256 public marketingFee;
    address public burnToken;
    uint256 public swapAtAmount;
    address payable public  marketingWallet;
    address payable public donationsWallet;
    address public swapPair;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isExcludedFromFees;
    
    constructor(address _router, address _MarketingWallet, address _donationsWallet, uint256 initialSupply, address _burnToken)  {
       donationsFee = 300;  // 300 = 3%
       burnFee = 100; // 100 = 1%
       marketingFee = 300;  // 300 = 3%
       burnToken = _burnToken;
       marketingWallet = payable(_MarketingWallet);
       donationsWallet = payable(_donationsWallet);
       excludeFromFees(owner(), true);
       excludeFromFees(address(this), true);
       _mint(owner(), initialSupply * (10**18));
       swapAtAmount = totalSupply() * 10 / 1000000;  // .01% 
       updateSwapRouter(_router);   
    }
   
     event ExcludeFromFees(address indexed account, bool isExcluded);
     event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    function setdonationsFee(uint256 _newdonationsFee) public onlyOwner {
      require(_newdonationsFee <= 1000, "Cannot exceed 1000");
      donationsFee = _newdonationsFee;
    }
    
    function setBurnFee(uint256 _newBurnFee) public onlyOwner {
      require(_newBurnFee <= 1000, "Cannot exceed 1000");
      burnFee = _newBurnFee;
    }

    function setmarketingFee(uint256 _newmarketingFee) public onlyOwner {
      require(_newmarketingFee <= 1000, "Cannot exceed 1000");
      marketingFee = _newmarketingFee;
    }
    
    function setMarketingWallet(address payable newMarketingWallet) public onlyOwner {
         if (_isExcludedFromFees[marketingWallet] = true) excludeFromFees(marketingWallet, false);
        marketingWallet = newMarketingWallet;
         if (_isExcludedFromFees[marketingWallet] = false) excludeFromFees(marketingWallet, true);
    }

    function setBurnToken(address _newBurnToken) external onlyOwner {
        burnToken = _newBurnToken;
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }
    
    function _setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
   
    function updateSwapRouter(address newAddress) public onlyOwner {
        require(newAddress != address(Router), "The router already has that address");
        Router = IRouter(newAddress);
        address bnbPair = IFactory(Router.factory())
            .getPair(address(this), Router.WETH());
        if(bnbPair == address(0)) bnbPair = IFactory(Router.factory()).createPair(address(this), Router.WETH());
        if (automatedMarketMakerPairs[bnbPair] != true && bnbPair != address(0) ){
            _setAutomatedMarketMakerPair(bnbPair, true);
        }
          _approve(address(this), address(Router), ~uint256(0));
        
        swapPair = bnbPair;
    }
    
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setSwapAtAmount(uint256 _newSwapAtAmount) external onlyOwner {
        swapAtAmount = _newSwapAtAmount;
    }

    bool private inSwapAndLiquify;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
           
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {

            if(automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from]) {
                uint256 extraFee;
                if(donationsFee >0 || burnFee >0 || marketingFee >0) extraFee =(amount * donationsFee)/10000 + (amount * burnFee)/10000 + (amount * marketingFee)/10000;
                

                if (balanceOf(address(this)) > swapAtAmount && !inSwapAndLiquify && automatedMarketMakerPairs[to]) SwapFees();
                
                if (extraFee > 0) {
                  super._transfer(from, address(this), extraFee);
                  amount = amount - extraFee;
                }
                
            }     
        }
      super._transfer(from, to, amount);
        
   }

    function SwapFees() private lockTheSwap {
       
          address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = Router.WETH();

                Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                    balanceOf(address(this)),
                    0,
                    path,
                    address(this),
                    block.timestamp
                );

            uint256 burnAmount = address(this).balance * burnFee / (burnFee + donationsFee + marketingFee);
            
            address[] memory path1 = new address[](2);
            path1[0] = Router.WETH();
            path1[1] = burnToken;

                Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: burnAmount} (
                    0,
                    path1,
                    address(this),
                    block.timestamp
                );
                        
            BURNTOKEN(burnToken).burn(ERC20(burnToken).balanceOf(address(this)));

            uint256 marketingAmount = address(this).balance * marketingFee / ( donationsFee + marketingFee );

            payable(marketingWallet).transfer(marketingAmount);
            payable(marketingWallet).transfer(address(this).balance);
                    
    }

        function manualSwapAndBurn() external onlyOwner {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = Router.WETH();

                Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                    balanceOf(address(this)),
                    0,
                    path,
                    address(this),
                    block.timestamp
                );

            uint256 burnAmount = address(this).balance * burnFee / (burnFee + donationsFee + marketingFee);
            
            address[] memory path1 = new address[](2);
            path1[0] = Router.WETH();
            path1[1] = burnToken;

                Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: burnAmount} (
                    0,
                    path1,
                    address(this),
                    block.timestamp
                );
                        
            BURNTOKEN(burnToken).burn(ERC20(burnToken).balanceOf(address(this)));

            uint256 marketingAmount = address(this).balance * marketingFee / ( donationsFee + marketingFee );

            payable(marketingWallet).transfer(marketingAmount);
            payable(marketingWallet).transfer(address(this).balance);
        }

        function withdawlBNB() external onlyOwner {
            payable(msg.sender).transfer(address(this).balance);
        }

        function withdrawlToken(address _tokenAddress) external onlyOwner {
            ERC20(_tokenAddress).transfer(msg.sender, ERC20(_tokenAddress).balanceOf(address(this)));
        }   
 

    // to receive Eth From Router when Swapping
    receive() external payable {}
    
    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_MarketingWallet","type":"address"},{"internalType":"address","name":"_donationsWallet","type":"address"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"_burnToken","type":"address"}],"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":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"inputs":[],"name":"Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnToken","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":"donationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"donationsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapAndBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","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":[{"internalType":"uint256","name":"_newBurnFee","type":"uint256"}],"name":"setBurnFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBurnToken","type":"address"}],"name":"setBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapAtAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newdonationsFee","type":"uint256"}],"name":"setdonationsFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmarketingFee","type":"uint256"}],"name":"setmarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"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":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdawlBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"withdrawlToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162005977380380620059778339818101604052810190620000379190620010fa565b6040518060400160405280600d81526020017f5348415249545920544f4b454e000000000000000000000000000000000000008152506040518060400160405280600581526020017f5348415245000000000000000000000000000000000000000000000000000000815250620000c3620000b76200028f60201b60201c565b6200029760201b60201c565b8160049080519060200190620000db92919062000fa5565b508060059080519060200190620000f492919062000fa5565b50505061012c600781905550606460088190555061012c60098190555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001f6620001e86200035b60201b60201c565b60016200038460201b60201c565b620002093060016200038460201b60201c565b6200023f6200021d6200035b60201b60201c565b670de0b6b3a764000084620002339190620011b1565b620004d560201b60201c565b620f4240600a620002556200064f60201b60201c565b620002619190620011b1565b6200026d919062001241565b600b8190555062000284856200065960201b60201c565b505050505062001800565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200039462000bf060201b60201c565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156200042a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004219062001300565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620004c991906200133f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000548576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200053f90620013ac565b60405180910390fd5b6200055c6000838362000c8160201b60201c565b8060036000828254620005709190620013ce565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005c89190620013ce565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200062f91906200143c565b60405180910390a36200064b6000838362000c8660201b60201c565b5050565b6000600354905090565b6200066962000bf060201b60201c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620006fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f490620014cf565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d49190620014f1565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008849190620014f1565b6040518363ffffffff1660e01b8152600401620008a392919062001534565b602060405180830381865afa158015620008c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008e79190620014f1565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000acb57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200098d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009b39190620014f1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a639190620014f1565b6040518363ffffffff1660e01b815260040162000a8292919062001534565b6020604051808303816000875af115801562000aa2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ac89190620014f1565b90505b60011515600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415801562000b5a5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1562000b745762000b7381600162000c8b60201b60201c565b5b62000bab30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001962000dd260201b60201c565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b62000c006200028f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000c266200035b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c7690620015b1565b60405180910390fd5b565b505050565b505050565b62000c9b62000bf060201b60201c565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000d31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d289062001649565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000e45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e3c90620016e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000eb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000eaf9062001779565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000f9891906200143c565b60405180910390a3505050565b82805462000fb390620017ca565b90600052602060002090601f01602090048101928262000fd7576000855562001023565b82601f1062000ff257805160ff191683800117855562001023565b8280016001018555821562001023579182015b828111156200102257825182559160200191906001019062001005565b5b50905062001032919062001036565b5090565b5b808211156200105157600081600090555060010162001037565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001087826200105a565b9050919050565b62001099816200107a565b8114620010a557600080fd5b50565b600081519050620010b9816200108e565b92915050565b6000819050919050565b620010d481620010bf565b8114620010e057600080fd5b50565b600081519050620010f481620010c9565b92915050565b600080600080600060a0868803121562001119576200111862001055565b5b60006200112988828901620010a8565b95505060206200113c88828901620010a8565b94505060406200114f88828901620010a8565b93505060606200116288828901620010e3565b92505060806200117588828901620010a8565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011be82620010bf565b9150620011cb83620010bf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001207576200120662001182565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200124e82620010bf565b91506200125b83620010bf565b9250826200126e576200126d62001212565b5b828204905092915050565b600082825260208201905092915050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000620012e8602a8362001279565b9150620012f5826200128a565b604082019050919050565b600060208201905081810360008301526200131b81620012d9565b9050919050565b60008115159050919050565b620013398162001322565b82525050565b60006020820190506200135660008301846200132e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001394601f8362001279565b9150620013a1826200135c565b602082019050919050565b60006020820190508181036000830152620013c78162001385565b9050919050565b6000620013db82620010bf565b9150620013e883620010bf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001420576200141f62001182565b5b828201905092915050565b6200143681620010bf565b82525050565b60006020820190506200145360008301846200142b565b92915050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000620014b760238362001279565b9150620014c48262001459565b604082019050919050565b60006020820190508181036000830152620014ea81620014a8565b9050919050565b6000602082840312156200150a576200150962001055565b5b60006200151a84828501620010a8565b91505092915050565b6200152e816200107a565b82525050565b60006040820190506200154b600083018562001523565b6200155a602083018462001523565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200159960208362001279565b9150620015a68262001561565b602082019050919050565b60006020820190508181036000830152620015cc816200158a565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200163160388362001279565b91506200163e82620015d3565b604082019050919050565b60006020820190508181036000830152620016648162001622565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620016c960248362001279565b9150620016d6826200166b565b604082019050919050565b60006020820190508181036000830152620016fc81620016ba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200176160228362001279565b91506200176e8262001703565b604082019050919050565b60006020820190508181036000830152620017948162001752565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620017e357607f821691505b60208210811415620017fa57620017f96200179b565b5b50919050565b61416780620018106000396000f3fe60806040526004361061021e5760003560e01c806394a4ebd511610123578063c0246668116100ab578063f287eada1161006f578063f287eada146107dc578063f2fde38b14610807578063f6d7eade14610830578063faa0a2641461085b578063fce589d81461088657610225565b8063c02466681461070b578063c358798014610734578063c824d8071461075d578063dd62ed3e14610788578063e799ffb1146107c557610225565b8063a9059cbb116100f2578063a9059cbb14610628578063ac5cad5614610665578063b62496f51461068e578063b9413b51146106cb578063b98b677f146106e257610225565b806394a4ebd51461056e57806395d89b4114610597578063a457c2d7146105c2578063a7f7b36f146105ff57610225565b80635d098b38116101a6578063715018a611610175578063715018a6146104ad57806375f0a874146104c457806386917524146104ef5780638c9a5a311461051a5780638da5cb5b1461054357610225565b80635d098b38146103f35780636402511e1461041c5780636b67c4df1461044557806370a082311461047057610225565b806326991cc8116101ed57806326991cc8146102fa578063313ce5671461032557806339509351146103505780634bf2c7c91461038d5780634fbee193146103b657610225565b806306fdde031461022a578063095ea7b31461025557806318160ddd1461029257806323b872dd146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108b1565b60405161024c919061312c565b60405180910390f35b34801561026157600080fd5b5061027c600480360381019061027791906131e7565b610943565b6040516102899190613242565b60405180910390f35b34801561029e57600080fd5b506102a7610966565b6040516102b4919061326c565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613287565b610970565b6040516102f19190613242565b60405180910390f35b34801561030657600080fd5b5061030f61099f565b60405161031c91906132e9565b60405180910390f35b34801561033157600080fd5b5061033a6109c5565b6040516103479190613320565b60405180910390f35b34801561035c57600080fd5b50610377600480360381019061037291906131e7565b6109ce565b6040516103849190613242565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af919061333b565b610a05565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190613368565b610a5c565b6040516103ea9190613242565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906133d3565b610ab2565b005b34801561042857600080fd5b50610443600480360381019061043e919061333b565b610c56565b005b34801561045157600080fd5b5061045a610c68565b604051610467919061326c565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613368565b610c6e565b6040516104a4919061326c565b60405180910390f35b3480156104b957600080fd5b506104c2610cb7565b005b3480156104d057600080fd5b506104d9610ccb565b6040516104e6919061340f565b60405180910390f35b3480156104fb57600080fd5b50610504610cf1565b604051610511919061326c565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c919061333b565b610cf7565b005b34801561054f57600080fd5b50610558610d4e565b60405161056591906132e9565b60405180910390f35b34801561057a57600080fd5b506105956004803603810190610590919061333b565b610d77565b005b3480156105a357600080fd5b506105ac610dce565b6040516105b9919061312c565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e491906131e7565b610e60565b6040516105f69190613242565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613456565b610ed7565b005b34801561063457600080fd5b5061064f600480360381019061064a91906131e7565b611013565b60405161065c9190613242565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190613368565b611036565b005b34801561069a57600080fd5b506106b560048036038101906106b09190613368565b611139565b6040516106c29190613242565b60405180910390f35b3480156106d757600080fd5b506106e0611159565b005b3480156106ee57600080fd5b5061070960048036038101906107049190613368565b611813565b005b34801561071757600080fd5b50610732600480360381019061072d9190613456565b611d76565b005b34801561074057600080fd5b5061075b60048036038101906107569190613368565b611eba565b005b34801561076957600080fd5b50610772611f06565b60405161077f919061326c565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190613496565b611f0c565b6040516107bc919061326c565b60405180910390f35b3480156107d157600080fd5b506107da611f93565b005b3480156107e857600080fd5b506107f1611fe4565b6040516107fe919061340f565b60405180910390f35b34801561081357600080fd5b5061082e60048036038101906108299190613368565b61200a565b005b34801561083c57600080fd5b5061084561208e565b6040516108529190613535565b60405180910390f35b34801561086757600080fd5b506108706120b4565b60405161087d91906132e9565b60405180910390f35b34801561089257600080fd5b5061089b6120da565b6040516108a8919061326c565b60405180910390f35b6060600480546108c09061357f565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec9061357f565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b60008061094e6120e0565b905061095b8185856120e8565b600191505092915050565b6000600354905090565b60008061097b6120e0565b90506109888582856122b3565b61099385858561233f565b60019150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b6000806109d96120e0565b90506109fa8185856109eb8589611f0c565b6109f591906135e0565b6120e8565b600191505092915050565b610a0d6125db565b6103e8811115610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990613682565b60405180910390fd5b8060088190555050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610aba6125db565b600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610b6657610b65600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d76565b5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610c5357610c52600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611d76565b5b50565b610c5e6125db565b80600b8190555050565b60095481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cbf6125db565b610cc96000612659565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b610cff6125db565b6103e8811115610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90613682565b60405180910390fd5b8060098190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d7f6125db565b6103e8811115610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613682565b60405180910390fd5b8060078190555050565b606060058054610ddd9061357f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e099061357f565b8015610e565780601f10610e2b57610100808354040283529160200191610e56565b820191906000526020600020905b815481529060010190602001808311610e3957829003601f168201915b5050505050905090565b600080610e6b6120e0565b90506000610e798286611f0c565b905083811015610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590613714565b60405180910390fd5b610ecb82868684036120e8565b60019250505092915050565b610edf6125db565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f69906137a6565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008061101e6120e0565b905061102b81858561233f565b600191505092915050565b61103e6125db565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161109491906132e9565b602060405180830381865afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d591906137db565b6040518363ffffffff1660e01b81526004016110f2929190613808565b6020604051808303816000875af1158015611111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111359190613846565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6111616125db565b6000600267ffffffffffffffff81111561117e5761117d613873565b5b6040519080825280602002602001820160405280156111ac5781602001602082028036833780820191505090505b50905030816000815181106111c4576111c36138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f91906138e6565b816001815181106112a3576112a26138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94761132430610c6e565b60008430426040518663ffffffff1660e01b8152600401611349959493929190613a0c565b600060405180830381600087803b15801561136357600080fd5b505af1158015611377573d6000803e3d6000fd5b50505050600060095460075460085461139091906135e0565b61139a91906135e0565b600854476113a89190613a66565b6113b29190613aef565b90506000600267ffffffffffffffff8111156113d1576113d0613873565b5b6040519080825280602002602001820160405280156113ff5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149391906138e6565b816000815181106114a7576114a66138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611518576115176138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016115b59493929190613b20565b6000604051808303818588803b1580156115ce57600080fd5b505af11580156115e2573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161168091906132e9565b602060405180830381865afa15801561169d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c191906137db565b6040518263ffffffff1660e01b81526004016116dd919061326c565b600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b50505050600060095460075461172191906135e0565b6009544761172f9190613a66565b6117399190613aef565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117a3573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561180c573d6000803e3d6000fd5b5050505050565b61181b6125db565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613bde565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198091906138e6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d91906138e6565b6040518363ffffffff1660e01b8152600401611a4a929190613bfe565b602060405180830381865afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b91906138e6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c6357600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5391906138e6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0091906138e6565b6040518363ffffffff1660e01b8152600401611c1d929190613bfe565b6020604051808303816000875af1158015611c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6091906138e6565b90505b60011515600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015611cf15750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611d0257611d01816001610ed7565b5b611d3130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196120e8565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611d7e6125db565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0890613c99565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611eae9190613242565b60405180910390a25050565b611ec26125db565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f9b6125db565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611fe1573d6000803e3d6000fd5b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120126125db565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990613d2b565b60405180910390fd5b61208b81612659565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90613e4f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122a6919061326c565b60405180910390a3505050565b60006122bf8484611f0c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612339578181101561232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290613ebb565b60405180910390fd5b61233884848484036120e8565b5b50505050565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123e35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125cb57600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124895750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125ca5760008060075411806124a257506000600854115b806124af57506000600954115b1561251c57612710600954836124c59190613a66565b6124cf9190613aef565b612710600854846124e09190613a66565b6124ea9190613aef565b612710600754856124fb9190613a66565b6125059190613aef565b61250f91906135e0565b61251991906135e0565b90505b600b5461252830610c6e565b1180156125425750601160009054906101000a900460ff16155b80156125975750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125a5576125a461271d565b5b60008111156125c8576125b9843083612e05565b80826125c59190613edb565b91505b505b5b6125d6838383612e05565b505050565b6125e36120e0565b73ffffffffffffffffffffffffffffffffffffffff16612601610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e90613f5b565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601160006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561275557612754613873565b5b6040519080825280602002602001820160405280156127835781602001602082028036833780820191505090505b509050308160008151811061279b5761279a6138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612842573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286691906138e6565b8160018151811061287a576128796138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476128fb30610c6e565b60008430426040518663ffffffff1660e01b8152600401612920959493929190613a0c565b600060405180830381600087803b15801561293a57600080fd5b505af115801561294e573d6000803e3d6000fd5b50505050600060095460075460085461296791906135e0565b61297191906135e0565b6008544761297f9190613a66565b6129899190613aef565b90506000600267ffffffffffffffff8111156129a8576129a7613873565b5b6040519080825280602002602001820160405280156129d65781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a91906138e6565b81600081518110612a7e57612a7d6138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612aef57612aee6138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401612b8c9493929190613b20565b6000604051808303818588803b158015612ba557600080fd5b505af1158015612bb9573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c5791906132e9565b602060405180830381865afa158015612c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9891906137db565b6040518263ffffffff1660e01b8152600401612cb4919061326c565b600060405180830381600087803b158015612cce57600080fd5b505af1158015612ce2573d6000803e3d6000fd5b505050506000600954600754612cf891906135e0565b60095447612d069190613a66565b612d109190613aef565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d7a573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612de3573d6000803e3d6000fd5b50505050506000601160006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6c90613fed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edc9061407f565b60405180910390fd5b612ef0838383613089565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6e90614111565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461300c91906135e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613070919061326c565b60405180910390a361308384848461308e565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130cd5780820151818401526020810190506130b2565b838111156130dc576000848401525b50505050565b6000601f19601f8301169050919050565b60006130fe82613093565b613108818561309e565b93506131188185602086016130af565b613121816130e2565b840191505092915050565b6000602082019050818103600083015261314681846130f3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317e82613153565b9050919050565b61318e81613173565b811461319957600080fd5b50565b6000813590506131ab81613185565b92915050565b6000819050919050565b6131c4816131b1565b81146131cf57600080fd5b50565b6000813590506131e1816131bb565b92915050565b600080604083850312156131fe576131fd61314e565b5b600061320c8582860161319c565b925050602061321d858286016131d2565b9150509250929050565b60008115159050919050565b61323c81613227565b82525050565b60006020820190506132576000830184613233565b92915050565b613266816131b1565b82525050565b6000602082019050613281600083018461325d565b92915050565b6000806000606084860312156132a05761329f61314e565b5b60006132ae8682870161319c565b93505060206132bf8682870161319c565b92505060406132d0868287016131d2565b9150509250925092565b6132e381613173565b82525050565b60006020820190506132fe60008301846132da565b92915050565b600060ff82169050919050565b61331a81613304565b82525050565b60006020820190506133356000830184613311565b92915050565b6000602082840312156133515761335061314e565b5b600061335f848285016131d2565b91505092915050565b60006020828403121561337e5761337d61314e565b5b600061338c8482850161319c565b91505092915050565b60006133a082613153565b9050919050565b6133b081613395565b81146133bb57600080fd5b50565b6000813590506133cd816133a7565b92915050565b6000602082840312156133e9576133e861314e565b5b60006133f7848285016133be565b91505092915050565b61340981613395565b82525050565b60006020820190506134246000830184613400565b92915050565b61343381613227565b811461343e57600080fd5b50565b6000813590506134508161342a565b92915050565b6000806040838503121561346d5761346c61314e565b5b600061347b8582860161319c565b925050602061348c85828601613441565b9150509250929050565b600080604083850312156134ad576134ac61314e565b5b60006134bb8582860161319c565b92505060206134cc8582860161319c565b9150509250929050565b6000819050919050565b60006134fb6134f66134f184613153565b6134d6565b613153565b9050919050565b600061350d826134e0565b9050919050565b600061351f82613502565b9050919050565b61352f81613514565b82525050565b600060208201905061354a6000830184613526565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061359757607f821691505b602082108114156135ab576135aa613550565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135eb826131b1565b91506135f6836131b1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561362b5761362a6135b1565b5b828201905092915050565b7f43616e6e6f742065786365656420313030300000000000000000000000000000600082015250565b600061366c60128361309e565b915061367782613636565b602082019050919050565b6000602082019050818103600083015261369b8161365f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136fe60258361309e565b9150613709826136a2565b604082019050919050565b6000602082019050818103600083015261372d816136f1565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061379060388361309e565b915061379b82613734565b604082019050919050565b600060208201905081810360008301526137bf81613783565b9050919050565b6000815190506137d5816131bb565b92915050565b6000602082840312156137f1576137f061314e565b5b60006137ff848285016137c6565b91505092915050565b600060408201905061381d60008301856132da565b61382a602083018461325d565b9392505050565b6000815190506138408161342a565b92915050565b60006020828403121561385c5761385b61314e565b5b600061386a84828501613831565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506138e081613185565b92915050565b6000602082840312156138fc576138fb61314e565b5b600061390a848285016138d1565b91505092915050565b6000819050919050565b600061393861393361392e84613913565b6134d6565b6131b1565b9050919050565b6139488161391d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61398381613173565b82525050565b6000613995838361397a565b60208301905092915050565b6000602082019050919050565b60006139b98261394e565b6139c38185613959565b93506139ce8361396a565b8060005b838110156139ff5781516139e68882613989565b97506139f1836139a1565b9250506001810190506139d2565b5085935050505092915050565b600060a082019050613a21600083018861325d565b613a2e602083018761393f565b8181036040830152613a4081866139ae565b9050613a4f60608301856132da565b613a5c608083018461325d565b9695505050505050565b6000613a71826131b1565b9150613a7c836131b1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ab557613ab46135b1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613afa826131b1565b9150613b05836131b1565b925082613b1557613b14613ac0565b5b828204905092915050565b6000608082019050613b35600083018761393f565b8181036020830152613b4781866139ae565b9050613b5660408301856132da565b613b63606083018461325d565b95945050505050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc860238361309e565b9150613bd382613b6c565b604082019050919050565b60006020820190508181036000830152613bf781613bbb565b9050919050565b6000604082019050613c1360008301856132da565b613c2060208301846132da565b9392505050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613c83602a8361309e565b9150613c8e82613c27565b604082019050919050565b60006020820190508181036000830152613cb281613c76565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d1560268361309e565b9150613d2082613cb9565b604082019050919050565b60006020820190508181036000830152613d4481613d08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613da760248361309e565b9150613db282613d4b565b604082019050919050565b60006020820190508181036000830152613dd681613d9a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e3960228361309e565b9150613e4482613ddd565b604082019050919050565b60006020820190508181036000830152613e6881613e2c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613ea5601d8361309e565b9150613eb082613e6f565b602082019050919050565b60006020820190508181036000830152613ed481613e98565b9050919050565b6000613ee6826131b1565b9150613ef1836131b1565b925082821015613f0457613f036135b1565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f4560208361309e565b9150613f5082613f0f565b602082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613fd760258361309e565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061406960238361309e565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140fb60268361309e565b91506141068261409f565b604082019050919050565b6000602082019050818103600083015261412a816140ee565b905091905056fea2646970667358221220f10207897e65dd44a16805c7f2c18d4c700a183fa1312c11f71cbd04819cd61564736f6c634300080a00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000ffcf2b0e8080722b12899cb5d7ed45e14ec99892000000000000000000000000ffcf2b0e8080722b12899cb5d7ed45e14ec99892000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000095ad61b0a150d79219dcf64e1e6cc01f0b64c4ce

Deployed Bytecode

0x60806040526004361061021e5760003560e01c806394a4ebd511610123578063c0246668116100ab578063f287eada1161006f578063f287eada146107dc578063f2fde38b14610807578063f6d7eade14610830578063faa0a2641461085b578063fce589d81461088657610225565b8063c02466681461070b578063c358798014610734578063c824d8071461075d578063dd62ed3e14610788578063e799ffb1146107c557610225565b8063a9059cbb116100f2578063a9059cbb14610628578063ac5cad5614610665578063b62496f51461068e578063b9413b51146106cb578063b98b677f146106e257610225565b806394a4ebd51461056e57806395d89b4114610597578063a457c2d7146105c2578063a7f7b36f146105ff57610225565b80635d098b38116101a6578063715018a611610175578063715018a6146104ad57806375f0a874146104c457806386917524146104ef5780638c9a5a311461051a5780638da5cb5b1461054357610225565b80635d098b38146103f35780636402511e1461041c5780636b67c4df1461044557806370a082311461047057610225565b806326991cc8116101ed57806326991cc8146102fa578063313ce5671461032557806339509351146103505780634bf2c7c91461038d5780634fbee193146103b657610225565b806306fdde031461022a578063095ea7b31461025557806318160ddd1461029257806323b872dd146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108b1565b60405161024c919061312c565b60405180910390f35b34801561026157600080fd5b5061027c600480360381019061027791906131e7565b610943565b6040516102899190613242565b60405180910390f35b34801561029e57600080fd5b506102a7610966565b6040516102b4919061326c565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613287565b610970565b6040516102f19190613242565b60405180910390f35b34801561030657600080fd5b5061030f61099f565b60405161031c91906132e9565b60405180910390f35b34801561033157600080fd5b5061033a6109c5565b6040516103479190613320565b60405180910390f35b34801561035c57600080fd5b50610377600480360381019061037291906131e7565b6109ce565b6040516103849190613242565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af919061333b565b610a05565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190613368565b610a5c565b6040516103ea9190613242565b60405180910390f35b3480156103ff57600080fd5b5061041a600480360381019061041591906133d3565b610ab2565b005b34801561042857600080fd5b50610443600480360381019061043e919061333b565b610c56565b005b34801561045157600080fd5b5061045a610c68565b604051610467919061326c565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613368565b610c6e565b6040516104a4919061326c565b60405180910390f35b3480156104b957600080fd5b506104c2610cb7565b005b3480156104d057600080fd5b506104d9610ccb565b6040516104e6919061340f565b60405180910390f35b3480156104fb57600080fd5b50610504610cf1565b604051610511919061326c565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c919061333b565b610cf7565b005b34801561054f57600080fd5b50610558610d4e565b60405161056591906132e9565b60405180910390f35b34801561057a57600080fd5b506105956004803603810190610590919061333b565b610d77565b005b3480156105a357600080fd5b506105ac610dce565b6040516105b9919061312c565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e491906131e7565b610e60565b6040516105f69190613242565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613456565b610ed7565b005b34801561063457600080fd5b5061064f600480360381019061064a91906131e7565b611013565b60405161065c9190613242565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190613368565b611036565b005b34801561069a57600080fd5b506106b560048036038101906106b09190613368565b611139565b6040516106c29190613242565b60405180910390f35b3480156106d757600080fd5b506106e0611159565b005b3480156106ee57600080fd5b5061070960048036038101906107049190613368565b611813565b005b34801561071757600080fd5b50610732600480360381019061072d9190613456565b611d76565b005b34801561074057600080fd5b5061075b60048036038101906107569190613368565b611eba565b005b34801561076957600080fd5b50610772611f06565b60405161077f919061326c565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190613496565b611f0c565b6040516107bc919061326c565b60405180910390f35b3480156107d157600080fd5b506107da611f93565b005b3480156107e857600080fd5b506107f1611fe4565b6040516107fe919061340f565b60405180910390f35b34801561081357600080fd5b5061082e60048036038101906108299190613368565b61200a565b005b34801561083c57600080fd5b5061084561208e565b6040516108529190613535565b60405180910390f35b34801561086757600080fd5b506108706120b4565b60405161087d91906132e9565b60405180910390f35b34801561089257600080fd5b5061089b6120da565b6040516108a8919061326c565b60405180910390f35b6060600480546108c09061357f565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec9061357f565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b60008061094e6120e0565b905061095b8185856120e8565b600191505092915050565b6000600354905090565b60008061097b6120e0565b90506109888582856122b3565b61099385858561233f565b60019150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b6000806109d96120e0565b90506109fa8185856109eb8589611f0c565b6109f591906135e0565b6120e8565b600191505092915050565b610a0d6125db565b6103e8811115610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990613682565b60405180910390fd5b8060088190555050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610aba6125db565b600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610b6657610b65600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d76565b5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905515610c5357610c52600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611d76565b5b50565b610c5e6125db565b80600b8190555050565b60095481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cbf6125db565b610cc96000612659565b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b610cff6125db565b6103e8811115610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90613682565b60405180910390fd5b8060098190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d7f6125db565b6103e8811115610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613682565b60405180910390fd5b8060078190555050565b606060058054610ddd9061357f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e099061357f565b8015610e565780601f10610e2b57610100808354040283529160200191610e56565b820191906000526020600020905b815481529060010190602001808311610e3957829003601f168201915b5050505050905090565b600080610e6b6120e0565b90506000610e798286611f0c565b905083811015610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590613714565b60405180910390fd5b610ecb82868684036120e8565b60019250505092915050565b610edf6125db565b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f69906137a6565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008061101e6120e0565b905061102b81858561233f565b600191505092915050565b61103e6125db565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161109491906132e9565b602060405180830381865afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d591906137db565b6040518363ffffffff1660e01b81526004016110f2929190613808565b6020604051808303816000875af1158015611111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111359190613846565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6111616125db565b6000600267ffffffffffffffff81111561117e5761117d613873565b5b6040519080825280602002602001820160405280156111ac5781602001602082028036833780820191505090505b50905030816000815181106111c4576111c36138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f91906138e6565b816001815181106112a3576112a26138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94761132430610c6e565b60008430426040518663ffffffff1660e01b8152600401611349959493929190613a0c565b600060405180830381600087803b15801561136357600080fd5b505af1158015611377573d6000803e3d6000fd5b50505050600060095460075460085461139091906135e0565b61139a91906135e0565b600854476113a89190613a66565b6113b29190613aef565b90506000600267ffffffffffffffff8111156113d1576113d0613873565b5b6040519080825280602002602001820160405280156113ff5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149391906138e6565b816000815181106114a7576114a66138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110611518576115176138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b81526004016115b59493929190613b20565b6000604051808303818588803b1580156115ce57600080fd5b505af11580156115e2573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161168091906132e9565b602060405180830381865afa15801561169d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c191906137db565b6040518263ffffffff1660e01b81526004016116dd919061326c565b600060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b50505050600060095460075461172191906135e0565b6009544761172f9190613a66565b6117399190613aef565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117a3573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561180c573d6000803e3d6000fd5b5050505050565b61181b6125db565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613bde565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198091906138e6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2d91906138e6565b6040518363ffffffff1660e01b8152600401611a4a929190613bfe565b602060405180830381865afa158015611a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8b91906138e6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c6357600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5391906138e6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0091906138e6565b6040518363ffffffff1660e01b8152600401611c1d929190613bfe565b6020604051808303816000875af1158015611c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6091906138e6565b90505b60011515600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514158015611cf15750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611d0257611d01816001610ed7565b5b611d3130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196120e8565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611d7e6125db565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0890613c99565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611eae9190613242565b60405180910390a25050565b611ec26125db565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f9b6125db565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611fe1573d6000803e3d6000fd5b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120126125db565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990613d2b565b60405180910390fd5b61208b81612659565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90613e4f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122a6919061326c565b60405180910390a3505050565b60006122bf8484611f0c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612339578181101561232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290613ebb565b60405180910390fd5b61233884848484036120e8565b5b50505050565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123e35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125cb57600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124895750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125ca5760008060075411806124a257506000600854115b806124af57506000600954115b1561251c57612710600954836124c59190613a66565b6124cf9190613aef565b612710600854846124e09190613a66565b6124ea9190613aef565b612710600754856124fb9190613a66565b6125059190613aef565b61250f91906135e0565b61251991906135e0565b90505b600b5461252830610c6e565b1180156125425750601160009054906101000a900460ff16155b80156125975750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125a5576125a461271d565b5b60008111156125c8576125b9843083612e05565b80826125c59190613edb565b91505b505b5b6125d6838383612e05565b505050565b6125e36120e0565b73ffffffffffffffffffffffffffffffffffffffff16612601610d4e565b73ffffffffffffffffffffffffffffffffffffffff1614612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e90613f5b565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601160006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561275557612754613873565b5b6040519080825280602002602001820160405280156127835781602001602082028036833780820191505090505b509050308160008151811061279b5761279a6138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612842573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286691906138e6565b8160018151811061287a576128796138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9476128fb30610c6e565b60008430426040518663ffffffff1660e01b8152600401612920959493929190613a0c565b600060405180830381600087803b15801561293a57600080fd5b505af115801561294e573d6000803e3d6000fd5b50505050600060095460075460085461296791906135e0565b61297191906135e0565b6008544761297f9190613a66565b6129899190613aef565b90506000600267ffffffffffffffff8111156129a8576129a7613873565b5b6040519080825280602002602001820160405280156129d65781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a91906138e6565b81600081518110612a7e57612a7d6138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612aef57612aee6138a2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008430426040518663ffffffff1660e01b8152600401612b8c9493929190613b20565b6000604051808303818588803b158015612ba557600080fd5b505af1158015612bb9573d6000803e3d6000fd5b5050505050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c5791906132e9565b602060405180830381865afa158015612c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9891906137db565b6040518263ffffffff1660e01b8152600401612cb4919061326c565b600060405180830381600087803b158015612cce57600080fd5b505af1158015612ce2573d6000803e3d6000fd5b505050506000600954600754612cf891906135e0565b60095447612d069190613a66565b612d109190613aef565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d7a573d6000803e3d6000fd5b50600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612de3573d6000803e3d6000fd5b50505050506000601160006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6c90613fed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edc9061407f565b60405180910390fd5b612ef0838383613089565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6e90614111565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461300c91906135e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613070919061326c565b60405180910390a361308384848461308e565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130cd5780820151818401526020810190506130b2565b838111156130dc576000848401525b50505050565b6000601f19601f8301169050919050565b60006130fe82613093565b613108818561309e565b93506131188185602086016130af565b613121816130e2565b840191505092915050565b6000602082019050818103600083015261314681846130f3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061317e82613153565b9050919050565b61318e81613173565b811461319957600080fd5b50565b6000813590506131ab81613185565b92915050565b6000819050919050565b6131c4816131b1565b81146131cf57600080fd5b50565b6000813590506131e1816131bb565b92915050565b600080604083850312156131fe576131fd61314e565b5b600061320c8582860161319c565b925050602061321d858286016131d2565b9150509250929050565b60008115159050919050565b61323c81613227565b82525050565b60006020820190506132576000830184613233565b92915050565b613266816131b1565b82525050565b6000602082019050613281600083018461325d565b92915050565b6000806000606084860312156132a05761329f61314e565b5b60006132ae8682870161319c565b93505060206132bf8682870161319c565b92505060406132d0868287016131d2565b9150509250925092565b6132e381613173565b82525050565b60006020820190506132fe60008301846132da565b92915050565b600060ff82169050919050565b61331a81613304565b82525050565b60006020820190506133356000830184613311565b92915050565b6000602082840312156133515761335061314e565b5b600061335f848285016131d2565b91505092915050565b60006020828403121561337e5761337d61314e565b5b600061338c8482850161319c565b91505092915050565b60006133a082613153565b9050919050565b6133b081613395565b81146133bb57600080fd5b50565b6000813590506133cd816133a7565b92915050565b6000602082840312156133e9576133e861314e565b5b60006133f7848285016133be565b91505092915050565b61340981613395565b82525050565b60006020820190506134246000830184613400565b92915050565b61343381613227565b811461343e57600080fd5b50565b6000813590506134508161342a565b92915050565b6000806040838503121561346d5761346c61314e565b5b600061347b8582860161319c565b925050602061348c85828601613441565b9150509250929050565b600080604083850312156134ad576134ac61314e565b5b60006134bb8582860161319c565b92505060206134cc8582860161319c565b9150509250929050565b6000819050919050565b60006134fb6134f66134f184613153565b6134d6565b613153565b9050919050565b600061350d826134e0565b9050919050565b600061351f82613502565b9050919050565b61352f81613514565b82525050565b600060208201905061354a6000830184613526565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061359757607f821691505b602082108114156135ab576135aa613550565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135eb826131b1565b91506135f6836131b1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561362b5761362a6135b1565b5b828201905092915050565b7f43616e6e6f742065786365656420313030300000000000000000000000000000600082015250565b600061366c60128361309e565b915061367782613636565b602082019050919050565b6000602082019050818103600083015261369b8161365f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136fe60258361309e565b9150613709826136a2565b604082019050919050565b6000602082019050818103600083015261372d816136f1565b9050919050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b600061379060388361309e565b915061379b82613734565b604082019050919050565b600060208201905081810360008301526137bf81613783565b9050919050565b6000815190506137d5816131bb565b92915050565b6000602082840312156137f1576137f061314e565b5b60006137ff848285016137c6565b91505092915050565b600060408201905061381d60008301856132da565b61382a602083018461325d565b9392505050565b6000815190506138408161342a565b92915050565b60006020828403121561385c5761385b61314e565b5b600061386a84828501613831565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506138e081613185565b92915050565b6000602082840312156138fc576138fb61314e565b5b600061390a848285016138d1565b91505092915050565b6000819050919050565b600061393861393361392e84613913565b6134d6565b6131b1565b9050919050565b6139488161391d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61398381613173565b82525050565b6000613995838361397a565b60208301905092915050565b6000602082019050919050565b60006139b98261394e565b6139c38185613959565b93506139ce8361396a565b8060005b838110156139ff5781516139e68882613989565b97506139f1836139a1565b9250506001810190506139d2565b5085935050505092915050565b600060a082019050613a21600083018861325d565b613a2e602083018761393f565b8181036040830152613a4081866139ae565b9050613a4f60608301856132da565b613a5c608083018461325d565b9695505050505050565b6000613a71826131b1565b9150613a7c836131b1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ab557613ab46135b1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613afa826131b1565b9150613b05836131b1565b925082613b1557613b14613ac0565b5b828204905092915050565b6000608082019050613b35600083018761393f565b8181036020830152613b4781866139ae565b9050613b5660408301856132da565b613b63606083018461325d565b95945050505050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc860238361309e565b9150613bd382613b6c565b604082019050919050565b60006020820190508181036000830152613bf781613bbb565b9050919050565b6000604082019050613c1360008301856132da565b613c2060208301846132da565b9392505050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613c83602a8361309e565b9150613c8e82613c27565b604082019050919050565b60006020820190508181036000830152613cb281613c76565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d1560268361309e565b9150613d2082613cb9565b604082019050919050565b60006020820190508181036000830152613d4481613d08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613da760248361309e565b9150613db282613d4b565b604082019050919050565b60006020820190508181036000830152613dd681613d9a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e3960228361309e565b9150613e4482613ddd565b604082019050919050565b60006020820190508181036000830152613e6881613e2c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613ea5601d8361309e565b9150613eb082613e6f565b602082019050919050565b60006020820190508181036000830152613ed481613e98565b9050919050565b6000613ee6826131b1565b9150613ef1836131b1565b925082821015613f0457613f036135b1565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f4560208361309e565b9150613f5082613f0f565b602082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613fd760258361309e565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061406960238361309e565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140fb60268361309e565b91506141068261409f565b604082019050919050565b6000602082019050818103600083015261412a816140ee565b905091905056fea2646970667358221220f10207897e65dd44a16805c7f2c18d4c700a183fa1312c11f71cbd04819cd61564736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000ffcf2b0e8080722b12899cb5d7ed45e14ec99892000000000000000000000000ffcf2b0e8080722b12899cb5d7ed45e14ec99892000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000095ad61b0a150d79219dcf64e1e6cc01f0b64c4ce

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _MarketingWallet (address): 0xFfCF2b0e8080722B12899CB5D7ED45E14Ec99892
Arg [2] : _donationsWallet (address): 0xFfCF2b0e8080722B12899CB5D7ED45E14Ec99892
Arg [3] : initialSupply (uint256): 1000000000
Arg [4] : _burnToken (address): 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000ffcf2b0e8080722b12899cb5d7ed45e14ec99892
Arg [2] : 000000000000000000000000ffcf2b0e8080722b12899cb5d7ed45e14ec99892
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 00000000000000000000000095ad61b0a150d79219dcf64e1e6cc01f0b64c4ce


Deployed Bytecode Sourcemap

24090:8190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9728:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12079:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10848:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12860:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24455:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10690:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13564:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25604:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27740:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25959:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27873:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24265:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11019:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22397:103;;;;;;;;;;;;;:::i;:::-;;24364:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24330:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25767:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21749:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25412:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9947:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14305:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26725:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11352:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31992:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24485:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30530:1318;;;;;;;;;;;;;:::i;:::-;;27051:677;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26423:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26303:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24202:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11608:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31860:120;;;;;;;;;;;;;:::i;:::-;;24410:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22655:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24168:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24299:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24236:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9728:100;9782:13;9815:5;9808:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9728:100;:::o;12079:201::-;12162:4;12179:13;12195:12;:10;:12::i;:::-;12179:28;;12218:32;12227:5;12234:7;12243:6;12218:8;:32::i;:::-;12268:4;12261:11;;;12079:201;;;;:::o;10848:108::-;10909:7;10936:12;;10929:19;;10848:108;:::o;12860:295::-;12991:4;13008:15;13026:12;:10;:12::i;:::-;13008:30;;13049:38;13065:4;13071:7;13080:6;13049:15;:38::i;:::-;13098:27;13108:4;13114:2;13118:6;13098:9;:27::i;:::-;13143:4;13136:11;;;12860:295;;;;;:::o;24455:23::-;;;;;;;;;;;;;:::o;10690:93::-;10748:5;10773:2;10766:9;;10690:93;:::o;13564:238::-;13652:4;13669:13;13685:12;:10;:12::i;:::-;13669:28;;13708:64;13717:5;13724:7;13761:10;13733:25;13743:5;13750:7;13733:9;:25::i;:::-;:38;;;;:::i;:::-;13708:8;:64::i;:::-;13790:4;13783:11;;;13564:238;;;;:::o;25604:155::-;21635:13;:11;:13::i;:::-;25694:4:::1;25679:11;:19;;25671:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;25740:11;25730:7;:21;;;;25604:155:::0;:::o;27740:125::-;27805:4;27829:19;:28;27849:7;27829:28;;;;;;;;;;;;;;;;;;;;;;;;;27822:35;;27740:125;;;:::o;25959:336::-;21635:13;:11;:13::i;:::-;26095:4:::1;26056:19;:36;26076:15;;;;;;;;;;;26056:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;26052:88;;;26101:39;26117:15;;;;;;;;;;;26134:5;26101:15;:39::i;:::-;26052:88;26169:18;26151:15;;:36;;;;;;;;;;;;;;;;;;26242:5;26203:19;:36;26223:15;;;;;;;;;;;26203:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;26199:88;;;26249:38;26265:15;;;;;;;;;;;26282:4;26249:15;:38::i;:::-;26199:88;25959:336:::0;:::o;27873:120::-;21635:13;:11;:13::i;:::-;27969:16:::1;27954:12;:31;;;;27873:120:::0;:::o;24265:27::-;;;;:::o;11019:127::-;11093:7;11120:9;:18;11130:7;11120:18;;;;;;;;;;;;;;;;11113:25;;11019:127;;;:::o;22397:103::-;21635:13;:11;:13::i;:::-;22462:30:::1;22489:1;22462:18;:30::i;:::-;22397:103::o:0;24364:39::-;;;;;;;;;;;;;:::o;24330:27::-;;;;:::o;25767:180::-;21635:13;:11;:13::i;:::-;25872:4:::1;25852:16;:24;;25844:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;25923:16;25908:12;:31;;;;25767:180:::0;:::o;21749:87::-;21795:7;21822:6;;;;;;;;;;;21815:13;;21749:87;:::o;25412:180::-;21635:13;:11;:13::i;:::-;25517:4:::1;25497:16;:24;;25489:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;25568:16;25553:12;:31;;;;25412:180:::0;:::o;9947:104::-;10003:13;10036:7;10029:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9947:104;:::o;14305:436::-;14398:4;14415:13;14431:12;:10;:12::i;:::-;14415:28;;14454:24;14481:25;14491:5;14498:7;14481:9;:25::i;:::-;14454:52;;14545:15;14525:16;:35;;14517:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14638:60;14647:5;14654:7;14682:15;14663:16;:34;14638:8;:60::i;:::-;14729:4;14722:11;;;;14305:436;;;;:::o;26725:315::-;21635:13;:11;:13::i;:::-;26860:5:::1;26825:40;;:25;:31;26851:4;26825:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;26817:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;26971:5;26937:25;:31;26963:4;26937:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27026:5;26992:40;;27020:4;26992:40;;;;;;;;;;;;26725:315:::0;;:::o;11352:193::-;11431:4;11448:13;11464:12;:10;:12::i;:::-;11448:28;;11487;11497:5;11504:2;11508:6;11487:9;:28::i;:::-;11533:4;11526:11;;;11352:193;;;;:::o;31992:181::-;21635:13;:11;:13::i;:::-;32079::::1;32073:29;;;32103:10;32121:13;32115:30;;;32154:4;32115:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32073:88;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31992:181:::0;:::o;24485:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;30530:1318::-;21635:13;:11;:13::i;:::-;30593:21:::1;30631:1;30617:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30593:40;;30666:4;30648;30653:1;30648:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;30696:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30686:4;30691:1;30686:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;30730:6;;;;;;;;;;;:57;;;30810:24;30828:4;30810:9;:24::i;:::-;30857:1;30881:4;30916;30944:15;30730:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30995:18;31076:12;;31061;;31051:7;;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31040:7;;31016:21;:31;;;;:::i;:::-;:73;;;;:::i;:::-;30995:94;;31118:22;31157:1;31143:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31118:41;;31185:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31174:5;31180:1;31174:8;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;31224:9;;;;;;;;;;;31213:5;31219:1;31213:8;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;::::0;::::1;31254:6;;;;;;;;;;;:57;;;31319:10;31354:1;31378:5;31414:4;31442:15;31254:222;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;31527:9;;;;;;;;;;;31517:25;;;31549:9;;;;;;;;;;;31543:26;;;31578:4;31543:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31517:68;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31602:23;31684:12;;31669;;:27;;;;:::i;:::-;31652:12;;31628:21;:36;;;;:::i;:::-;:70;;;;:::i;:::-;31602:96;;31723:15;;;;;;;;;;;31715:33;;:50;31749:15;31715:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31788:15;;;;;;;;;;;31780:33;;:56;31814:21;31780:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;30578:1270;;;;30530:1318::o:0;27051:677::-;21635:13;:11;:13::i;:::-;27155:6:::1;;;;;;;;;;;27133:29;;:10;:29;;;;27125:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;27230:10;27213:6;;:28;;;;;;;;;;;;;;;;;;27252:15;27279:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27270:48;;;27327:4;27334:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27270:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27252:96;;27381:1;27362:21;;:7;:21;;;27359:103;;;27404:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27395:37;;;27441:4;27448:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27395:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27385:77;;27359:103;27515:4;27477:42;;:25;:34;27503:7;27477:34;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;:67;;;;;27542:1;27523:21;;:7;:21;;;;27477:67;27473:143;;;27561:43;27590:7;27599:4;27561:28;:43::i;:::-;27473:143;27628:53;27645:4;27660:6;;;;;;;;;;;27678:1;27669:11;27628:8;:53::i;:::-;27713:7;27702:8;;:18;;;;;;;;;;;;;;;;;;27114:614;27051:677:::0;:::o;26423:290::-;21635:13;:11;:13::i;:::-;26548:8:::1;26516:40;;:19;:28;26536:7;26516:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;26508:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;26645:8;26614:19;:28;26634:7;26614:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26687:7;26671:34;;;26696:8;26671:34;;;;;;:::i;:::-;;;;;;;;26423:290:::0;;:::o;26303:108::-;21635:13;:11;:13::i;:::-;26390::::1;26378:9;;:25;;;;;;;;;;;;;;;;;;26303:108:::0;:::o;24202:27::-;;;;:::o;11608:151::-;11697:7;11724:11;:18;11736:5;11724:18;;;;;;;;;;;;;;;:27;11743:7;11724:27;;;;;;;;;;;;;;;;11717:34;;11608:151;;;;:::o;31860:120::-;21635:13;:11;:13::i;:::-;31925:10:::1;31917:28;;:51;31946:21;31917:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31860:120::o:0;24410:38::-;;;;;;;;;;;;;:::o;22655:201::-;21635:13;:11;:13::i;:::-;22764:1:::1;22744:22;;:8;:22;;;;22736:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22820:28;22839:8;22820:18;:28::i;:::-;22655:201:::0;:::o;24168:21::-;;;;;;;;;;;;;:::o;24299:24::-;;;;;;;;;;;;;:::o;24236:22::-;;;;:::o;7368:98::-;7421:7;7448:10;7441:17;;7368:98;:::o;17930:380::-;18083:1;18066:19;;:5;:19;;;;18058:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18164:1;18145:21;;:7;:21;;;;18137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18248:6;18218:11;:18;18230:5;18218:18;;;;;;;;;;;;;;;:27;18237:7;18218:27;;;;;;;;;;;;;;;:36;;;;18286:7;18270:32;;18279:5;18270:32;;;18295:6;18270:32;;;;;;:::i;:::-;;;;;;;;17930:380;;;:::o;18601:453::-;18736:24;18763:25;18773:5;18780:7;18763:9;:25::i;:::-;18736:52;;18823:17;18803:16;:37;18799:248;;18885:6;18865:16;:26;;18857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18969:51;18978:5;18985:7;19013:6;18994:16;:25;18969:8;:51::i;:::-;18799:248;18725:329;18601:453;;;:::o;28159:1016::-;28385:19;:25;28405:4;28385:25;;;;;;;;;;;;;;;;;;;;;;;;;28384:26;:54;;;;;28415:19;:23;28435:2;28415:23;;;;;;;;;;;;;;;;;;;;;;;;;28414:24;28384:54;28381:736;;;28460:25;:29;28486:2;28460:29;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;28493:25;:31;28519:4;28493:31;;;;;;;;;;;;;;;;;;;;;;;;;28460:64;28457:644;;;28545:16;28597:1;28583:12;;:15;:29;;;;28611:1;28602:7;;:10;28583:29;:48;;;;28630:1;28616:12;;:15;28583:48;28580:151;;;28726:5;28712:12;;28703:6;:21;;;;:::i;:::-;28702:29;;;;:::i;:::-;28694:5;28685:7;;28676:6;:16;;;;:::i;:::-;28675:24;;;;:::i;:::-;28667:5;28653:12;;28644:6;:21;;;;:::i;:::-;28643:29;;;;:::i;:::-;:56;;;;:::i;:::-;:88;;;;:::i;:::-;28633:98;;28580:151;28801:12;;28774:24;28792:4;28774:9;:24::i;:::-;:39;:60;;;;;28818:16;;;;;;;;;;;28817:17;28774:60;:93;;;;;28838:25;:29;28864:2;28838:29;;;;;;;;;;;;;;;;;;;;;;;;;28774:93;28770:109;;;28869:10;:8;:10::i;:::-;28770:109;28931:1;28920:8;:12;28916:152;;;28955:46;28971:4;28985;28992:8;28955:15;:46::i;:::-;29040:8;29031:6;:17;;;;:::i;:::-;29022:26;;28916:152;28526:575;28457:644;28381:736;29125:33;29141:4;29147:2;29151:6;29125:15;:33::i;:::-;28159:1016;;;:::o;21914:132::-;21989:12;:10;:12::i;:::-;21978:23;;:7;:5;:7::i;:::-;:23;;;21970:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21914:132::o;23016:191::-;23090:16;23109:6;;;;;;;;;;;23090:25;;23135:8;23126:6;;:17;;;;;;;;;;;;;;;;;;23190:8;23159:40;;23180:8;23159:40;;;;;;;;;;;;23079:128;23016:191;:::o;29183:1335::-;28088:4;28069:16;;:23;;;;;;;;;;;;;;;;;;29245:21:::1;29283:1;29269:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29245:40;;29318:4;29300;29305:1;29300:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;29348:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29338:4;29343:1;29338:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;29382:6;;;;;;;;;;;:57;;;29462:24;29480:4;29462:9;:24::i;:::-;29509:1;29533:4;29568;29596:15;29382:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29647:18;29728:12;;29713;;29703:7;;:22;;;;:::i;:::-;:37;;;;:::i;:::-;29692:7;;29668:21;:31;;;;:::i;:::-;:73;;;;:::i;:::-;29647:94;;29770:22;29809:1;29795:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29770:41;;29837:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29826:5;29832:1;29826:8;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;29876:9;;;;;;;;;;;29865:5;29871:1;29865:8;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;::::0;::::1;29906:6;;;;;;;;;;;:57;;;29971:10;30006:1;30030:5;30066:4;30094:15;29906:222;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;30179:9;;;;;;;;;;;30169:25;;;30201:9;;;;;;;;;;;30195:26;;;30230:4;30195:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30169:68;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30254:23;30336:12;;30321;;:27;;;;:::i;:::-;30304:12;;30280:21;:36;;;;:::i;:::-;:70;;;;:::i;:::-;30254:96;;30375:15;;;;;;;;;;;30367:33;;:50;30401:15;30367:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;30440:15;;;;;;;;;;;30432:33;;:56;30466:21;30432:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;29223:1295;;;;28134:5:::0;28115:16;;:24;;;;;;;;;;;;;;;;;;29183:1335::o;15211:671::-;15358:1;15342:18;;:4;:18;;;;15334:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15435:1;15421:16;;:2;:16;;;;15413:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15490:38;15511:4;15517:2;15521:6;15490:20;:38::i;:::-;15541:19;15563:9;:15;15573:4;15563:15;;;;;;;;;;;;;;;;15541:37;;15612:6;15597:11;:21;;15589:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15729:6;15715:11;:20;15697:9;:15;15707:4;15697:15;;;;;;;;;;;;;;;:38;;;;15774:6;15757:9;:13;15767:2;15757:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;15813:2;15798:26;;15807:4;15798:26;;;15817:6;15798:26;;;;;;:::i;:::-;;;;;;;;15837:37;15857:4;15863:2;15867:6;15837:19;:37::i;:::-;15323:559;15211:671;;;:::o;19654:125::-;;;;:::o;20383:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:118::-;4558:24;4576:5;4558:24;:::i;:::-;4553:3;4546:37;4471:118;;:::o;4595:222::-;4688:4;4726:2;4715:9;4711:18;4703:26;;4739:71;4807:1;4796:9;4792:17;4783:6;4739:71;:::i;:::-;4595:222;;;;:::o;4823:86::-;4858:7;4898:4;4891:5;4887:16;4876:27;;4823:86;;;:::o;4915:112::-;4998:22;5014:5;4998:22;:::i;:::-;4993:3;4986:35;4915:112;;:::o;5033:214::-;5122:4;5160:2;5149:9;5145:18;5137:26;;5173:67;5237:1;5226:9;5222:17;5213:6;5173:67;:::i;:::-;5033:214;;;;:::o;5253:329::-;5312:6;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5253:329;;;;:::o;5588:::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:104::-;5968:7;5997:24;6015:5;5997:24;:::i;:::-;5986:35;;5923:104;;;:::o;6033:138::-;6114:32;6140:5;6114:32;:::i;:::-;6107:5;6104:43;6094:71;;6161:1;6158;6151:12;6094:71;6033:138;:::o;6177:155::-;6231:5;6269:6;6256:20;6247:29;;6285:41;6320:5;6285:41;:::i;:::-;6177:155;;;;:::o;6338:345::-;6405:6;6454:2;6442:9;6433:7;6429:23;6425:32;6422:119;;;6460:79;;:::i;:::-;6422:119;6580:1;6605:61;6658:7;6649:6;6638:9;6634:22;6605:61;:::i;:::-;6595:71;;6551:125;6338:345;;;;:::o;6689:142::-;6792:32;6818:5;6792:32;:::i;:::-;6787:3;6780:45;6689:142;;:::o;6837:254::-;6946:4;6984:2;6973:9;6969:18;6961:26;;6997:87;7081:1;7070:9;7066:17;7057:6;6997:87;:::i;:::-;6837:254;;;;:::o;7097:116::-;7167:21;7182:5;7167:21;:::i;:::-;7160:5;7157:32;7147:60;;7203:1;7200;7193:12;7147:60;7097:116;:::o;7219:133::-;7262:5;7300:6;7287:20;7278:29;;7316:30;7340:5;7316:30;:::i;:::-;7219:133;;;;:::o;7358:468::-;7423:6;7431;7480:2;7468:9;7459:7;7455:23;7451:32;7448:119;;;7486:79;;:::i;:::-;7448:119;7606:1;7631:53;7676:7;7667:6;7656:9;7652:22;7631:53;:::i;:::-;7621:63;;7577:117;7733:2;7759:50;7801:7;7792:6;7781:9;7777:22;7759:50;:::i;:::-;7749:60;;7704:115;7358:468;;;;;:::o;7832:474::-;7900:6;7908;7957:2;7945:9;7936:7;7932:23;7928:32;7925:119;;;7963:79;;:::i;:::-;7925:119;8083:1;8108:53;8153:7;8144:6;8133:9;8129:22;8108:53;:::i;:::-;8098:63;;8054:117;8210:2;8236:53;8281:7;8272:6;8261:9;8257:22;8236:53;:::i;:::-;8226:63;;8181:118;7832:474;;;;;:::o;8312:60::-;8340:3;8361:5;8354:12;;8312:60;;;:::o;8378:142::-;8428:9;8461:53;8479:34;8488:24;8506:5;8488:24;:::i;:::-;8479:34;:::i;:::-;8461:53;:::i;:::-;8448:66;;8378:142;;;:::o;8526:126::-;8576:9;8609:37;8640:5;8609:37;:::i;:::-;8596:50;;8526:126;;;:::o;8658:141::-;8723:9;8756:37;8787:5;8756:37;:::i;:::-;8743:50;;8658:141;;;:::o;8805:161::-;8907:52;8953:5;8907:52;:::i;:::-;8902:3;8895:65;8805:161;;:::o;8972:252::-;9080:4;9118:2;9107:9;9103:18;9095:26;;9131:86;9214:1;9203:9;9199:17;9190:6;9131:86;:::i;:::-;8972:252;;;;:::o;9230:180::-;9278:77;9275:1;9268:88;9375:4;9372:1;9365:15;9399:4;9396:1;9389:15;9416:320;9460:6;9497:1;9491:4;9487:12;9477:22;;9544:1;9538:4;9534:12;9565:18;9555:81;;9621:4;9613:6;9609:17;9599:27;;9555:81;9683:2;9675:6;9672:14;9652:18;9649:38;9646:84;;;9702:18;;:::i;:::-;9646:84;9467:269;9416:320;;;:::o;9742:180::-;9790:77;9787:1;9780:88;9887:4;9884:1;9877:15;9911:4;9908:1;9901:15;9928:305;9968:3;9987:20;10005:1;9987:20;:::i;:::-;9982:25;;10021:20;10039:1;10021:20;:::i;:::-;10016:25;;10175:1;10107:66;10103:74;10100:1;10097:81;10094:107;;;10181:18;;:::i;:::-;10094:107;10225:1;10222;10218:9;10211:16;;9928:305;;;;:::o;10239:168::-;10379:20;10375:1;10367:6;10363:14;10356:44;10239:168;:::o;10413:366::-;10555:3;10576:67;10640:2;10635:3;10576:67;:::i;:::-;10569:74;;10652:93;10741:3;10652:93;:::i;:::-;10770:2;10765:3;10761:12;10754:19;;10413:366;;;:::o;10785:419::-;10951:4;10989:2;10978:9;10974:18;10966:26;;11038:9;11032:4;11028:20;11024:1;11013:9;11009:17;11002:47;11066:131;11192:4;11066:131;:::i;:::-;11058:139;;10785:419;;;:::o;11210:224::-;11350:34;11346:1;11338:6;11334:14;11327:58;11419:7;11414:2;11406:6;11402:15;11395:32;11210:224;:::o;11440:366::-;11582:3;11603:67;11667:2;11662:3;11603:67;:::i;:::-;11596:74;;11679:93;11768:3;11679:93;:::i;:::-;11797:2;11792:3;11788:12;11781:19;;11440:366;;;:::o;11812:419::-;11978:4;12016:2;12005:9;12001:18;11993:26;;12065:9;12059:4;12055:20;12051:1;12040:9;12036:17;12029:47;12093:131;12219:4;12093:131;:::i;:::-;12085:139;;11812:419;;;:::o;12237:243::-;12377:34;12373:1;12365:6;12361:14;12354:58;12446:26;12441:2;12433:6;12429:15;12422:51;12237:243;:::o;12486:366::-;12628:3;12649:67;12713:2;12708:3;12649:67;:::i;:::-;12642:74;;12725:93;12814:3;12725:93;:::i;:::-;12843:2;12838:3;12834:12;12827:19;;12486:366;;;:::o;12858:419::-;13024:4;13062:2;13051:9;13047:18;13039:26;;13111:9;13105:4;13101:20;13097:1;13086:9;13082:17;13075:47;13139:131;13265:4;13139:131;:::i;:::-;13131:139;;12858:419;;;:::o;13283:143::-;13340:5;13371:6;13365:13;13356:22;;13387:33;13414:5;13387:33;:::i;:::-;13283:143;;;;:::o;13432:351::-;13502:6;13551:2;13539:9;13530:7;13526:23;13522:32;13519:119;;;13557:79;;:::i;:::-;13519:119;13677:1;13702:64;13758:7;13749:6;13738:9;13734:22;13702:64;:::i;:::-;13692:74;;13648:128;13432:351;;;;:::o;13789:332::-;13910:4;13948:2;13937:9;13933:18;13925:26;;13961:71;14029:1;14018:9;14014:17;14005:6;13961:71;:::i;:::-;14042:72;14110:2;14099:9;14095:18;14086:6;14042:72;:::i;:::-;13789:332;;;;;:::o;14127:137::-;14181:5;14212:6;14206:13;14197:22;;14228:30;14252:5;14228:30;:::i;:::-;14127:137;;;;:::o;14270:345::-;14337:6;14386:2;14374:9;14365:7;14361:23;14357:32;14354:119;;;14392:79;;:::i;:::-;14354:119;14512:1;14537:61;14590:7;14581:6;14570:9;14566:22;14537:61;:::i;:::-;14527:71;;14483:125;14270:345;;;;:::o;14621:180::-;14669:77;14666:1;14659:88;14766:4;14763:1;14756:15;14790:4;14787:1;14780:15;14807:180;14855:77;14852:1;14845:88;14952:4;14949:1;14942:15;14976:4;14973:1;14966:15;14993:143;15050:5;15081:6;15075:13;15066:22;;15097:33;15124:5;15097:33;:::i;:::-;14993:143;;;;:::o;15142:351::-;15212:6;15261:2;15249:9;15240:7;15236:23;15232:32;15229:119;;;15267:79;;:::i;:::-;15229:119;15387:1;15412:64;15468:7;15459:6;15448:9;15444:22;15412:64;:::i;:::-;15402:74;;15358:128;15142:351;;;;:::o;15499:85::-;15544:7;15573:5;15562:16;;15499:85;;;:::o;15590:158::-;15648:9;15681:61;15699:42;15708:32;15734:5;15708:32;:::i;:::-;15699:42;:::i;:::-;15681:61;:::i;:::-;15668:74;;15590:158;;;:::o;15754:147::-;15849:45;15888:5;15849:45;:::i;:::-;15844:3;15837:58;15754:147;;:::o;15907:114::-;15974:6;16008:5;16002:12;15992:22;;15907:114;;;:::o;16027:184::-;16126:11;16160:6;16155:3;16148:19;16200:4;16195:3;16191:14;16176:29;;16027:184;;;;:::o;16217:132::-;16284:4;16307:3;16299:11;;16337:4;16332:3;16328:14;16320:22;;16217:132;;;:::o;16355:108::-;16432:24;16450:5;16432:24;:::i;:::-;16427:3;16420:37;16355:108;;:::o;16469:179::-;16538:10;16559:46;16601:3;16593:6;16559:46;:::i;:::-;16637:4;16632:3;16628:14;16614:28;;16469:179;;;;:::o;16654:113::-;16724:4;16756;16751:3;16747:14;16739:22;;16654:113;;;:::o;16803:732::-;16922:3;16951:54;16999:5;16951:54;:::i;:::-;17021:86;17100:6;17095:3;17021:86;:::i;:::-;17014:93;;17131:56;17181:5;17131:56;:::i;:::-;17210:7;17241:1;17226:284;17251:6;17248:1;17245:13;17226:284;;;17327:6;17321:13;17354:63;17413:3;17398:13;17354:63;:::i;:::-;17347:70;;17440:60;17493:6;17440:60;:::i;:::-;17430:70;;17286:224;17273:1;17270;17266:9;17261:14;;17226:284;;;17230:14;17526:3;17519:10;;16927:608;;;16803:732;;;;:::o;17541:831::-;17804:4;17842:3;17831:9;17827:19;17819:27;;17856:71;17924:1;17913:9;17909:17;17900:6;17856:71;:::i;:::-;17937:80;18013:2;18002:9;17998:18;17989:6;17937:80;:::i;:::-;18064:9;18058:4;18054:20;18049:2;18038:9;18034:18;18027:48;18092:108;18195:4;18186:6;18092:108;:::i;:::-;18084:116;;18210:72;18278:2;18267:9;18263:18;18254:6;18210:72;:::i;:::-;18292:73;18360:3;18349:9;18345:19;18336:6;18292:73;:::i;:::-;17541:831;;;;;;;;:::o;18378:348::-;18418:7;18441:20;18459:1;18441:20;:::i;:::-;18436:25;;18475:20;18493:1;18475:20;:::i;:::-;18470:25;;18663:1;18595:66;18591:74;18588:1;18585:81;18580:1;18573:9;18566:17;18562:105;18559:131;;;18670:18;;:::i;:::-;18559:131;18718:1;18715;18711:9;18700:20;;18378:348;;;;:::o;18732:180::-;18780:77;18777:1;18770:88;18877:4;18874:1;18867:15;18901:4;18898:1;18891:15;18918:185;18958:1;18975:20;18993:1;18975:20;:::i;:::-;18970:25;;19009:20;19027:1;19009:20;:::i;:::-;19004:25;;19048:1;19038:35;;19053:18;;:::i;:::-;19038:35;19095:1;19092;19088:9;19083:14;;18918:185;;;;:::o;19109:720::-;19344:4;19382:3;19371:9;19367:19;19359:27;;19396:79;19472:1;19461:9;19457:17;19448:6;19396:79;:::i;:::-;19522:9;19516:4;19512:20;19507:2;19496:9;19492:18;19485:48;19550:108;19653:4;19644:6;19550:108;:::i;:::-;19542:116;;19668:72;19736:2;19725:9;19721:18;19712:6;19668:72;:::i;:::-;19750;19818:2;19807:9;19803:18;19794:6;19750:72;:::i;:::-;19109:720;;;;;;;:::o;19835:222::-;19975:34;19971:1;19963:6;19959:14;19952:58;20044:5;20039:2;20031:6;20027:15;20020:30;19835:222;:::o;20063:366::-;20205:3;20226:67;20290:2;20285:3;20226:67;:::i;:::-;20219:74;;20302:93;20391:3;20302:93;:::i;:::-;20420:2;20415:3;20411:12;20404:19;;20063:366;;;:::o;20435:419::-;20601:4;20639:2;20628:9;20624:18;20616:26;;20688:9;20682:4;20678:20;20674:1;20663:9;20659:17;20652:47;20716:131;20842:4;20716:131;:::i;:::-;20708:139;;20435:419;;;:::o;20860:332::-;20981:4;21019:2;21008:9;21004:18;20996:26;;21032:71;21100:1;21089:9;21085:17;21076:6;21032:71;:::i;:::-;21113:72;21181:2;21170:9;21166:18;21157:6;21113:72;:::i;:::-;20860:332;;;;;:::o;21198:229::-;21338:34;21334:1;21326:6;21322:14;21315:58;21407:12;21402:2;21394:6;21390:15;21383:37;21198:229;:::o;21433:366::-;21575:3;21596:67;21660:2;21655:3;21596:67;:::i;:::-;21589:74;;21672:93;21761:3;21672:93;:::i;:::-;21790:2;21785:3;21781:12;21774:19;;21433:366;;;:::o;21805:419::-;21971:4;22009:2;21998:9;21994:18;21986:26;;22058:9;22052:4;22048:20;22044:1;22033:9;22029:17;22022:47;22086:131;22212:4;22086:131;:::i;:::-;22078:139;;21805:419;;;:::o;22230:225::-;22370:34;22366:1;22358:6;22354:14;22347:58;22439:8;22434:2;22426:6;22422:15;22415:33;22230:225;:::o;22461:366::-;22603:3;22624:67;22688:2;22683:3;22624:67;:::i;:::-;22617:74;;22700:93;22789:3;22700:93;:::i;:::-;22818:2;22813:3;22809:12;22802:19;;22461:366;;;:::o;22833:419::-;22999:4;23037:2;23026:9;23022:18;23014:26;;23086:9;23080:4;23076:20;23072:1;23061:9;23057:17;23050:47;23114:131;23240:4;23114:131;:::i;:::-;23106:139;;22833:419;;;:::o;23258:223::-;23398:34;23394:1;23386:6;23382:14;23375:58;23467:6;23462:2;23454:6;23450:15;23443:31;23258:223;:::o;23487:366::-;23629:3;23650:67;23714:2;23709:3;23650:67;:::i;:::-;23643:74;;23726:93;23815:3;23726:93;:::i;:::-;23844:2;23839:3;23835:12;23828:19;;23487:366;;;:::o;23859:419::-;24025:4;24063:2;24052:9;24048:18;24040:26;;24112:9;24106:4;24102:20;24098:1;24087:9;24083:17;24076:47;24140:131;24266:4;24140:131;:::i;:::-;24132:139;;23859:419;;;:::o;24284:221::-;24424:34;24420:1;24412:6;24408:14;24401:58;24493:4;24488:2;24480:6;24476:15;24469:29;24284:221;:::o;24511:366::-;24653:3;24674:67;24738:2;24733:3;24674:67;:::i;:::-;24667:74;;24750:93;24839:3;24750:93;:::i;:::-;24868:2;24863:3;24859:12;24852:19;;24511:366;;;:::o;24883:419::-;25049:4;25087:2;25076:9;25072:18;25064:26;;25136:9;25130:4;25126:20;25122:1;25111:9;25107:17;25100:47;25164:131;25290:4;25164:131;:::i;:::-;25156:139;;24883:419;;;:::o;25308:179::-;25448:31;25444:1;25436:6;25432:14;25425:55;25308:179;:::o;25493:366::-;25635:3;25656:67;25720:2;25715:3;25656:67;:::i;:::-;25649:74;;25732:93;25821:3;25732:93;:::i;:::-;25850:2;25845:3;25841:12;25834:19;;25493:366;;;:::o;25865:419::-;26031:4;26069:2;26058:9;26054:18;26046:26;;26118:9;26112:4;26108:20;26104:1;26093:9;26089:17;26082:47;26146:131;26272:4;26146:131;:::i;:::-;26138:139;;25865:419;;;:::o;26290:191::-;26330:4;26350:20;26368:1;26350:20;:::i;:::-;26345:25;;26384:20;26402:1;26384:20;:::i;:::-;26379:25;;26423:1;26420;26417:8;26414:34;;;26428:18;;:::i;:::-;26414:34;26473:1;26470;26466:9;26458:17;;26290:191;;;;:::o;26487:182::-;26627:34;26623:1;26615:6;26611:14;26604:58;26487:182;:::o;26675:366::-;26817:3;26838:67;26902:2;26897:3;26838:67;:::i;:::-;26831:74;;26914:93;27003:3;26914:93;:::i;:::-;27032:2;27027:3;27023:12;27016:19;;26675:366;;;:::o;27047:419::-;27213:4;27251:2;27240:9;27236:18;27228:26;;27300:9;27294:4;27290:20;27286:1;27275:9;27271:17;27264:47;27328:131;27454:4;27328:131;:::i;:::-;27320:139;;27047:419;;;:::o;27472:224::-;27612:34;27608:1;27600:6;27596:14;27589:58;27681:7;27676:2;27668:6;27664:15;27657:32;27472:224;:::o;27702:366::-;27844:3;27865:67;27929:2;27924:3;27865:67;:::i;:::-;27858:74;;27941:93;28030:3;27941:93;:::i;:::-;28059:2;28054:3;28050:12;28043:19;;27702:366;;;:::o;28074:419::-;28240:4;28278:2;28267:9;28263:18;28255:26;;28327:9;28321:4;28317:20;28313:1;28302:9;28298:17;28291:47;28355:131;28481:4;28355:131;:::i;:::-;28347:139;;28074:419;;;:::o;28499:222::-;28639:34;28635:1;28627:6;28623:14;28616:58;28708:5;28703:2;28695:6;28691:15;28684:30;28499:222;:::o;28727:366::-;28869:3;28890:67;28954:2;28949:3;28890:67;:::i;:::-;28883:74;;28966:93;29055:3;28966:93;:::i;:::-;29084:2;29079:3;29075:12;29068:19;;28727:366;;;:::o;29099:419::-;29265:4;29303:2;29292:9;29288:18;29280:26;;29352:9;29346:4;29342:20;29338:1;29327:9;29323:17;29316:47;29380:131;29506:4;29380:131;:::i;:::-;29372:139;;29099:419;;;:::o;29524:225::-;29664:34;29660:1;29652:6;29648:14;29641:58;29733:8;29728:2;29720:6;29716:15;29709:33;29524:225;:::o;29755:366::-;29897:3;29918:67;29982:2;29977:3;29918:67;:::i;:::-;29911:74;;29994:93;30083:3;29994:93;:::i;:::-;30112:2;30107:3;30103:12;30096:19;;29755:366;;;:::o;30127:419::-;30293:4;30331:2;30320:9;30316:18;30308:26;;30380:9;30374:4;30370:20;30366:1;30355:9;30351:17;30344:47;30408:131;30534:4;30408:131;:::i;:::-;30400:139;;30127:419;;;:::o

Swarm Source

ipfs://f10207897e65dd44a16805c7f2c18d4c700a183fa1312c11f71cbd04819cd615
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.