ETH Price: $3,100.71 (+1.32%)
Gas: 8 Gwei

Token

Elon Mars (ELMA)
 

Overview

Max Total Supply

1,000,000,000,000,000 ELMA

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,503,513,577,246.060617799512754065 ELMA

Value
$0.00
0x09c7074f58f8bf2b12498dc51ac155e72a8cdc07
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:
ElonMars

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-24
*/

// SPDX-License-Identifier: Unlicensed

//Elon Mars is the God Father of Elon MemeCoins. 

pragma solidity ^0.8.0;

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

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

interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @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);
}

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

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}



contract ElonMars is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**6 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = 'Elon Mars';
    string private _symbol = 'ELMA';
    uint8 private _decimals = 18;

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflect(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

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

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
       
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount) private pure returns (uint256, uint256) {
        uint256 tFee = tAmount.div(100).mul(0);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526d314dc6448d9338c15b0a00000000600019620000229190620003eb565b60001962000031919062000370565b6006556040518060400160405280600981526020017f456c6f6e204d6172730000000000000000000000000000000000000000000000815250600890805190602001906200008192919062000292565b506040518060400160405280600481526020017f454c4d410000000000000000000000000000000000000000000000000000000081525060099080519060200190620000cf92919062000292565b506012600a60006101000a81548160ff021916908360ff160217905550348015620000f957600080fd5b5060006200010c6200028a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001c16200028a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200020f6200028a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d314dc6448d9338c15b0a000000006040516200027c919062000353565b60405180910390a3620004b0565b600033905090565b828054620002a090620003b5565b90600052602060002090601f016020900481019282620002c4576000855562000310565b82601f10620002df57805160ff191683800117855562000310565b8280016001018555821562000310579182015b828111156200030f578251825591602001919060010190620002f2565b5b5090506200031f919062000323565b5090565b5b808211156200033e57600081600090555060010162000324565b5090565b6200034d81620003ab565b82525050565b60006020820190506200036a600083018462000342565b92915050565b60006200037d82620003ab565b91506200038a83620003ab565b925082821015620003a0576200039f62000423565b5b828203905092915050565b6000819050919050565b60006002820490506001821680620003ce57607f821691505b60208210811415620003e557620003e462000481565b5b50919050565b6000620003f882620003ab565b91506200040583620003ab565b92508262000418576200041762000452565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6139a680620004c06000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b61015660048036038101906101519190612dd2565b61044a565b005b6101606105c4565b60405161016d91906130a9565b60405180910390f35b610190600480360381019061018b9190612d96565b610656565b60405161019d919061308e565b60405180910390f35b6101ae610674565b6040516101bb919061326b565b60405180910390f35b6101cc61067e565b6040516101d9919061326b565b60405180910390f35b6101fc60048036038101906101f79190612d47565b610694565b604051610209919061308e565b60405180910390f35b61022c60048036038101906102279190612dd2565b61076d565b604051610239919061326b565b60405180910390f35b61024a6107db565b6040516102579190613286565b60405180910390f35b61027a60048036038101906102759190612d96565b6107f2565b604051610287919061308e565b60405180910390f35b6102aa60048036038101906102a59190612dfb565b6108a5565b6040516102b7919061326b565b60405180910390f35b6102da60048036038101906102d59190612ce2565b610933565b6040516102e7919061326b565b60405180910390f35b6102f8610a1e565b005b610302610b71565b60405161030f9190613073565b60405180910390f35b610320610b9a565b60405161032d91906130a9565b60405180910390f35b610350600480360381019061034b9190612d96565b610c2c565b60405161035d919061308e565b60405180910390f35b610380600480360381019061037b9190612d96565b610cf9565b60405161038d919061308e565b60405180910390f35b6103b060048036038101906103ab9190612ce2565b610d17565b6040516103bd919061308e565b60405180910390f35b6103e060048036038101906103db9190612d0b565b610d6d565b6040516103ed919061326b565b60405180910390f35b610410600480360381019061040b9190612ce2565b610df4565b005b61042c60048036038101906104279190612ce2565b6110a8565b005b61044860048036038101906104439190612ce2565b61126a565b005b6000610454611651565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da9061324b565b60405180910390fd5b60006104ee83611659565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e816006546116b190919063ffffffff16565b6006819055506105b9836007546116fb90919063ffffffff16565b600781905550505050565b6060600880546105d39061345a565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff9061345a565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a610663611651565b8484611759565b6001905092915050565b6000600754905090565b60006d314dc6448d9338c15b0a00000000905090565b60006106a1848484611924565b610762846106ad611651565b61075d8560405180606001604052806028815260200161392460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610713611651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3b9092919063ffffffff16565b611759565b600190509392505050565b60006006548211156107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab906130eb565b60405180910390fd5b60006107be611d9f565b90506107d38184611dca90919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b600061089b6107ff611651565b846108968560036000610810611651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b611759565b6001905092915050565b60006d314dc6448d9338c15b0a000000008311156108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef9061318b565b60405180910390fd5b8161091757600061090884611659565b5050505090508091505061092d565b600061092284611659565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109ce57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a19565b610a16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076d565b90505b919050565b610a26611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610ba99061345a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd59061345a565b8015610c225780601f10610bf757610100808354040283529160200191610c22565b820191906000526020600020905b815481529060010190602001808311610c0557829003601f168201915b5050505050905090565b6000610cef610c39611651565b84610cea8560405180606001604052806025815260200161394c6025913960036000610c63611651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3b9092919063ffffffff16565b611759565b6001905092915050565b6000610d0d610d06611651565b8484611924565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dfc611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e80906131cb565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d9061316b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610fea57610fa6600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076d565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110b0611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611134906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a49061310b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611272611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6906131cb565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661138b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113829061316b565b60405180910390fd5b60005b60058054905081101561164d578173ffffffffffffffffffffffffffffffffffffffff16600582815481106113ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561163a5760056001600580549050611447919061339e565b8154811061147e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481106114e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611600577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561164d565b80806116459061348c565b91505061138e565b5050565b600033905090565b600080600080600080600061166d88611e14565b91509150600061167b611d9f565b9050600080600061168d8c8686611e66565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60006116f383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d3b565b905092915050565b600080828461170a91906132bd565b90508381101561174f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117469061314b565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c09061322b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118309061312b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611917919061326b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b9061320b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb906130cb565b60405180910390fd5b60008111611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e906131eb565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611aea5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aff57611afa838383611ec4565b611d36565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ba25750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bb757611bb2838383612117565b611d35565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c5b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c7057611c6b83838361236a565b611d34565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d125750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d2757611d22838383612528565b611d33565b611d3283838361236a565b5b5b5b5b505050565b6000838311158290611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a91906130a9565b60405180910390fd5b5060008385611d92919061339e565b9050809150509392505050565b6000806000611dac612810565b91509150611dc38183611dca90919063ffffffff16565b9250505090565b6000611e0c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b8b565b905092915050565b6000806000611e406000611e32606487611dca90919063ffffffff16565b612bee90919063ffffffff16565b90506000611e5782866116b190919063ffffffff16565b90508082935093505050915091565b600080600080611e7f8588612bee90919063ffffffff16565b90506000611e968688612bee90919063ffffffff16565b90506000611ead82846116b190919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611ed586611659565b94509450945094509450611f3186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fc685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205b84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a88382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612105919061326b565b60405180910390a35050505050505050565b600080600080600061212886611659565b9450945094509450945061218485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221982600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ae84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122fb8382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612358919061326b565b60405180910390a35050505050505050565b600080600080600061237b86611659565b945094509450945094506123d785600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061246c84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124b98382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612516919061326b565b60405180910390a35050505050505050565b600080600080600061253986611659565b9450945094509450945061259586600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262a85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126bf82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275484600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127a18382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127fe919061326b565b60405180910390a35050505050505050565b6000806000600654905060006d314dc6448d9338c15b0a00000000905060005b600580549050811015612b365782600160006005848154811061287c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806129905750816002600060058481548110612928577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156129b3576006546d314dc6448d9338c15b0a0000000094509450505050612b87565b612a6960016000600584815481106129f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846116b190919063ffffffff16565b9250612b216002600060058481548110612aac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836116b190919063ffffffff16565b91508080612b2e9061348c565b915050612830565b50612b5a6d314dc6448d9338c15b0a00000000600654611dca90919063ffffffff16565b821015612b7e576006546d314dc6448d9338c15b0a00000000935093505050612b87565b81819350935050505b9091565b60008083118290612bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc991906130a9565b60405180910390fd5b5060008385612be19190613313565b9050809150509392505050565b600080831415612c015760009050612c63565b60008284612c0f9190613344565b9050828482612c1e9190613313565b14612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c55906131ab565b60405180910390fd5b809150505b92915050565b612c7e826006546116b190919063ffffffff16565b600681905550612c99816007546116fb90919063ffffffff16565b6007819055505050565b600081359050612cb2816138de565b92915050565b600081359050612cc7816138f5565b92915050565b600081359050612cdc8161390c565b92915050565b600060208284031215612cf457600080fd5b6000612d0284828501612ca3565b91505092915050565b60008060408385031215612d1e57600080fd5b6000612d2c85828601612ca3565b9250506020612d3d85828601612ca3565b9150509250929050565b600080600060608486031215612d5c57600080fd5b6000612d6a86828701612ca3565b9350506020612d7b86828701612ca3565b9250506040612d8c86828701612ccd565b9150509250925092565b60008060408385031215612da957600080fd5b6000612db785828601612ca3565b9250506020612dc885828601612ccd565b9150509250929050565b600060208284031215612de457600080fd5b6000612df284828501612ccd565b91505092915050565b60008060408385031215612e0e57600080fd5b6000612e1c85828601612ccd565b9250506020612e2d85828601612cb8565b9150509250929050565b612e40816133d2565b82525050565b612e4f816133e4565b82525050565b6000612e60826132a1565b612e6a81856132ac565b9350612e7a818560208601613427565b612e8381613562565b840191505092915050565b6000612e9b6023836132ac565b9150612ea682613573565b604082019050919050565b6000612ebe602a836132ac565b9150612ec9826135c2565b604082019050919050565b6000612ee16026836132ac565b9150612eec82613611565b604082019050919050565b6000612f046022836132ac565b9150612f0f82613660565b604082019050919050565b6000612f27601b836132ac565b9150612f32826136af565b602082019050919050565b6000612f4a601b836132ac565b9150612f55826136d8565b602082019050919050565b6000612f6d601f836132ac565b9150612f7882613701565b602082019050919050565b6000612f906021836132ac565b9150612f9b8261372a565b604082019050919050565b6000612fb36020836132ac565b9150612fbe82613779565b602082019050919050565b6000612fd66029836132ac565b9150612fe1826137a2565b604082019050919050565b6000612ff96025836132ac565b9150613004826137f1565b604082019050919050565b600061301c6024836132ac565b915061302782613840565b604082019050919050565b600061303f602c836132ac565b915061304a8261388f565b604082019050919050565b61305e81613410565b82525050565b61306d8161341a565b82525050565b60006020820190506130886000830184612e37565b92915050565b60006020820190506130a36000830184612e46565b92915050565b600060208201905081810360008301526130c38184612e55565b905092915050565b600060208201905081810360008301526130e481612e8e565b9050919050565b6000602082019050818103600083015261310481612eb1565b9050919050565b6000602082019050818103600083015261312481612ed4565b9050919050565b6000602082019050818103600083015261314481612ef7565b9050919050565b6000602082019050818103600083015261316481612f1a565b9050919050565b6000602082019050818103600083015261318481612f3d565b9050919050565b600060208201905081810360008301526131a481612f60565b9050919050565b600060208201905081810360008301526131c481612f83565b9050919050565b600060208201905081810360008301526131e481612fa6565b9050919050565b6000602082019050818103600083015261320481612fc9565b9050919050565b6000602082019050818103600083015261322481612fec565b9050919050565b600060208201905081810360008301526132448161300f565b9050919050565b6000602082019050818103600083015261326481613032565b9050919050565b60006020820190506132806000830184613055565b92915050565b600060208201905061329b6000830184613064565b92915050565b600081519050919050565b600082825260208201905092915050565b60006132c882613410565b91506132d383613410565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613308576133076134d5565b5b828201905092915050565b600061331e82613410565b915061332983613410565b92508261333957613338613504565b5b828204905092915050565b600061334f82613410565b915061335a83613410565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613393576133926134d5565b5b828202905092915050565b60006133a982613410565b91506133b483613410565b9250828210156133c7576133c66134d5565b5b828203905092915050565b60006133dd826133f0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561344557808201518184015260208101905061342a565b83811115613454576000848401525b50505050565b6000600282049050600182168061347257607f821691505b6020821081141561348657613485613533565b5b50919050565b600061349782613410565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134ca576134c96134d5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6138e7816133d2565b81146138f257600080fd5b50565b6138fe816133e4565b811461390957600080fd5b50565b61391581613410565b811461392057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220393a86ee0d0579308b0851358b6c40fda2a7e1ccdcd3ae81a92d043587eadf5a64736f6c63430008040033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b61015660048036038101906101519190612dd2565b61044a565b005b6101606105c4565b60405161016d91906130a9565b60405180910390f35b610190600480360381019061018b9190612d96565b610656565b60405161019d919061308e565b60405180910390f35b6101ae610674565b6040516101bb919061326b565b60405180910390f35b6101cc61067e565b6040516101d9919061326b565b60405180910390f35b6101fc60048036038101906101f79190612d47565b610694565b604051610209919061308e565b60405180910390f35b61022c60048036038101906102279190612dd2565b61076d565b604051610239919061326b565b60405180910390f35b61024a6107db565b6040516102579190613286565b60405180910390f35b61027a60048036038101906102759190612d96565b6107f2565b604051610287919061308e565b60405180910390f35b6102aa60048036038101906102a59190612dfb565b6108a5565b6040516102b7919061326b565b60405180910390f35b6102da60048036038101906102d59190612ce2565b610933565b6040516102e7919061326b565b60405180910390f35b6102f8610a1e565b005b610302610b71565b60405161030f9190613073565b60405180910390f35b610320610b9a565b60405161032d91906130a9565b60405180910390f35b610350600480360381019061034b9190612d96565b610c2c565b60405161035d919061308e565b60405180910390f35b610380600480360381019061037b9190612d96565b610cf9565b60405161038d919061308e565b60405180910390f35b6103b060048036038101906103ab9190612ce2565b610d17565b6040516103bd919061308e565b60405180910390f35b6103e060048036038101906103db9190612d0b565b610d6d565b6040516103ed919061326b565b60405180910390f35b610410600480360381019061040b9190612ce2565b610df4565b005b61042c60048036038101906104279190612ce2565b6110a8565b005b61044860048036038101906104439190612ce2565b61126a565b005b6000610454611651565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da9061324b565b60405180910390fd5b60006104ee83611659565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e816006546116b190919063ffffffff16565b6006819055506105b9836007546116fb90919063ffffffff16565b600781905550505050565b6060600880546105d39061345a565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff9061345a565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a610663611651565b8484611759565b6001905092915050565b6000600754905090565b60006d314dc6448d9338c15b0a00000000905090565b60006106a1848484611924565b610762846106ad611651565b61075d8560405180606001604052806028815260200161392460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610713611651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3b9092919063ffffffff16565b611759565b600190509392505050565b60006006548211156107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab906130eb565b60405180910390fd5b60006107be611d9f565b90506107d38184611dca90919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b600061089b6107ff611651565b846108968560036000610810611651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b611759565b6001905092915050565b60006d314dc6448d9338c15b0a000000008311156108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef9061318b565b60405180910390fd5b8161091757600061090884611659565b5050505090508091505061092d565b600061092284611659565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109ce57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a19565b610a16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076d565b90505b919050565b610a26611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610ba99061345a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd59061345a565b8015610c225780601f10610bf757610100808354040283529160200191610c22565b820191906000526020600020905b815481529060010190602001808311610c0557829003601f168201915b5050505050905090565b6000610cef610c39611651565b84610cea8560405180606001604052806025815260200161394c6025913960036000610c63611651565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3b9092919063ffffffff16565b611759565b6001905092915050565b6000610d0d610d06611651565b8484611924565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dfc611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e80906131cb565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0d9061316b565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610fea57610fa6600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076d565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110b0611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611134906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a49061310b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611272611651565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f6906131cb565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661138b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113829061316b565b60405180910390fd5b60005b60058054905081101561164d578173ffffffffffffffffffffffffffffffffffffffff16600582815481106113ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561163a5760056001600580549050611447919061339e565b8154811061147e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481106114e3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005805480611600577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561164d565b80806116459061348c565b91505061138e565b5050565b600033905090565b600080600080600080600061166d88611e14565b91509150600061167b611d9f565b9050600080600061168d8c8686611e66565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60006116f383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d3b565b905092915050565b600080828461170a91906132bd565b90508381101561174f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117469061314b565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c09061322b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611839576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118309061312b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611917919061326b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b9061320b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb906130cb565b60405180910390fd5b60008111611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e906131eb565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611aea5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aff57611afa838383611ec4565b611d36565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ba25750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611bb757611bb2838383612117565b611d35565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c5b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c7057611c6b83838361236a565b611d34565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d125750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d2757611d22838383612528565b611d33565b611d3283838361236a565b5b5b5b5b505050565b6000838311158290611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a91906130a9565b60405180910390fd5b5060008385611d92919061339e565b9050809150509392505050565b6000806000611dac612810565b91509150611dc38183611dca90919063ffffffff16565b9250505090565b6000611e0c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b8b565b905092915050565b6000806000611e406000611e32606487611dca90919063ffffffff16565b612bee90919063ffffffff16565b90506000611e5782866116b190919063ffffffff16565b90508082935093505050915091565b600080600080611e7f8588612bee90919063ffffffff16565b90506000611e968688612bee90919063ffffffff16565b90506000611ead82846116b190919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611ed586611659565b94509450945094509450611f3186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fc685600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061205b84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120a88382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612105919061326b565b60405180910390a35050505050505050565b600080600080600061212886611659565b9450945094509450945061218485600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221982600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ae84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122fb8382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612358919061326b565b60405180910390a35050505050505050565b600080600080600061237b86611659565b945094509450945094506123d785600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061246c84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124b98382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612516919061326b565b60405180910390a35050505050505050565b600080600080600061253986611659565b9450945094509450945061259586600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262a85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116b190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126bf82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275484600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fb90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127a18382612c69565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127fe919061326b565b60405180910390a35050505050505050565b6000806000600654905060006d314dc6448d9338c15b0a00000000905060005b600580549050811015612b365782600160006005848154811061287c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806129905750816002600060058481548110612928577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156129b3576006546d314dc6448d9338c15b0a0000000094509450505050612b87565b612a6960016000600584815481106129f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846116b190919063ffffffff16565b9250612b216002600060058481548110612aac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836116b190919063ffffffff16565b91508080612b2e9061348c565b915050612830565b50612b5a6d314dc6448d9338c15b0a00000000600654611dca90919063ffffffff16565b821015612b7e576006546d314dc6448d9338c15b0a00000000935093505050612b87565b81819350935050505b9091565b60008083118290612bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc991906130a9565b60405180910390fd5b5060008385612be19190613313565b9050809150509392505050565b600080831415612c015760009050612c63565b60008284612c0f9190613344565b9050828482612c1e9190613313565b14612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c55906131ab565b60405180910390fd5b809150505b92915050565b612c7e826006546116b190919063ffffffff16565b600681905550612c99816007546116fb90919063ffffffff16565b6007819055505050565b600081359050612cb2816138de565b92915050565b600081359050612cc7816138f5565b92915050565b600081359050612cdc8161390c565b92915050565b600060208284031215612cf457600080fd5b6000612d0284828501612ca3565b91505092915050565b60008060408385031215612d1e57600080fd5b6000612d2c85828601612ca3565b9250506020612d3d85828601612ca3565b9150509250929050565b600080600060608486031215612d5c57600080fd5b6000612d6a86828701612ca3565b9350506020612d7b86828701612ca3565b9250506040612d8c86828701612ccd565b9150509250925092565b60008060408385031215612da957600080fd5b6000612db785828601612ca3565b9250506020612dc885828601612ccd565b9150509250929050565b600060208284031215612de457600080fd5b6000612df284828501612ccd565b91505092915050565b60008060408385031215612e0e57600080fd5b6000612e1c85828601612ccd565b9250506020612e2d85828601612cb8565b9150509250929050565b612e40816133d2565b82525050565b612e4f816133e4565b82525050565b6000612e60826132a1565b612e6a81856132ac565b9350612e7a818560208601613427565b612e8381613562565b840191505092915050565b6000612e9b6023836132ac565b9150612ea682613573565b604082019050919050565b6000612ebe602a836132ac565b9150612ec9826135c2565b604082019050919050565b6000612ee16026836132ac565b9150612eec82613611565b604082019050919050565b6000612f046022836132ac565b9150612f0f82613660565b604082019050919050565b6000612f27601b836132ac565b9150612f32826136af565b602082019050919050565b6000612f4a601b836132ac565b9150612f55826136d8565b602082019050919050565b6000612f6d601f836132ac565b9150612f7882613701565b602082019050919050565b6000612f906021836132ac565b9150612f9b8261372a565b604082019050919050565b6000612fb36020836132ac565b9150612fbe82613779565b602082019050919050565b6000612fd66029836132ac565b9150612fe1826137a2565b604082019050919050565b6000612ff96025836132ac565b9150613004826137f1565b604082019050919050565b600061301c6024836132ac565b915061302782613840565b604082019050919050565b600061303f602c836132ac565b915061304a8261388f565b604082019050919050565b61305e81613410565b82525050565b61306d8161341a565b82525050565b60006020820190506130886000830184612e37565b92915050565b60006020820190506130a36000830184612e46565b92915050565b600060208201905081810360008301526130c38184612e55565b905092915050565b600060208201905081810360008301526130e481612e8e565b9050919050565b6000602082019050818103600083015261310481612eb1565b9050919050565b6000602082019050818103600083015261312481612ed4565b9050919050565b6000602082019050818103600083015261314481612ef7565b9050919050565b6000602082019050818103600083015261316481612f1a565b9050919050565b6000602082019050818103600083015261318481612f3d565b9050919050565b600060208201905081810360008301526131a481612f60565b9050919050565b600060208201905081810360008301526131c481612f83565b9050919050565b600060208201905081810360008301526131e481612fa6565b9050919050565b6000602082019050818103600083015261320481612fc9565b9050919050565b6000602082019050818103600083015261322481612fec565b9050919050565b600060208201905081810360008301526132448161300f565b9050919050565b6000602082019050818103600083015261326481613032565b9050919050565b60006020820190506132806000830184613055565b92915050565b600060208201905061329b6000830184613064565b92915050565b600081519050919050565b600082825260208201905092915050565b60006132c882613410565b91506132d383613410565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613308576133076134d5565b5b828201905092915050565b600061331e82613410565b915061332983613410565b92508261333957613338613504565b5b828204905092915050565b600061334f82613410565b915061335a83613410565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613393576133926134d5565b5b828202905092915050565b60006133a982613410565b91506133b483613410565b9250828210156133c7576133c66134d5565b5b828203905092915050565b60006133dd826133f0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561344557808201518184015260208101905061342a565b83811115613454576000848401525b50505050565b6000600282049050600182168061347257607f821691505b6020821081141561348657613485613533565b5b50919050565b600061349782613410565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134ca576134c96134d5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6138e7816133d2565b81146138f257600080fd5b50565b6138fe816133e4565b811461390957600080fd5b50565b61391581613410565b811461392057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220393a86ee0d0579308b0851358b6c40fda2a7e1ccdcd3ae81a92d043587eadf5a64736f6c63430008040033

Deployed Bytecode Sourcemap

15643:10168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18609:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16491:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17403:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18514:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16768:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17572:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19435:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16677:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17893:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18993:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16871:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15085:148;;;:::i;:::-;;14443:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16582:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18119:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17077:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18396:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17252:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19696:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15388:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20036:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18609:376;18661:14;18678:12;:10;:12::i;:::-;18661:29;;18710:11;:19;18722:6;18710:19;;;;;;;;;;;;;;;;;;;;;;;;;18709:20;18701:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18790:15;18813:19;18824:7;18813:10;:19::i;:::-;18789:43;;;;;;18861:28;18881:7;18861;:15;18869:6;18861:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;18843:7;:15;18851:6;18843:15;;;;;;;;;;;;;;;:46;;;;18910:20;18922:7;18910;;:11;;:20;;;;:::i;:::-;18900:7;:30;;;;18954:23;18969:7;18954:10;;:14;;:23;;;;:::i;:::-;18941:10;:36;;;;18609:376;;;:::o;16491:83::-;16528:13;16561:5;16554:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16491:83;:::o;17403:161::-;17478:4;17495:39;17504:12;:10;:12::i;:::-;17518:7;17527:6;17495:8;:39::i;:::-;17552:4;17545:11;;17403:161;;;;:::o;18514:87::-;18556:7;18583:10;;18576:17;;18514:87;:::o;16768:95::-;16821:7;16118:27;16841:14;;16768:95;:::o;17572:313::-;17670:4;17687:36;17697:6;17705:9;17716:6;17687:9;:36::i;:::-;17734:121;17743:6;17751:12;:10;:12::i;:::-;17765:89;17803:6;17765:89;;;;;;;;;;;;;;;;;:11;:19;17777:6;17765:19;;;;;;;;;;;;;;;:33;17785:12;:10;:12::i;:::-;17765:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17734:8;:121::i;:::-;17873:4;17866:11;;17572:313;;;;;:::o;19435:253::-;19501:7;19540;;19529;:18;;19521:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19605:19;19628:10;:8;:10::i;:::-;19605:33;;19656:24;19668:11;19656:7;:11;;:24;;;;:::i;:::-;19649:31;;;19435:253;;;:::o;16677:83::-;16718:5;16743:9;;;;;;;;;;;16736:16;;16677:83;:::o;17893:218::-;17981:4;17998:83;18007:12;:10;:12::i;:::-;18021:7;18030:50;18069:10;18030:11;:25;18042:12;:10;:12::i;:::-;18030:25;;;;;;;;;;;;;;;:34;18056:7;18030:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17998:8;:83::i;:::-;18099:4;18092:11;;17893:218;;;;:::o;18993:434::-;19083:7;16118:27;19111:7;:18;;19103:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19181:17;19176:244;;19216:15;19239:19;19250:7;19239:10;:19::i;:::-;19215:43;;;;;;19280:7;19273:14;;;;;19176:244;19322:23;19352:19;19363:7;19352:10;:19::i;:::-;19320:51;;;;;;19393:15;19386:22;;;18993:434;;;;;:::o;16871:198::-;16937:7;16961:11;:20;16973:7;16961:20;;;;;;;;;;;;;;;;;;;;;;;;;16957:49;;;16990:7;:16;16998:7;16990:16;;;;;;;;;;;;;;;;16983:23;;;;16957:49;17024:37;17044:7;:16;17052:7;17044:16;;;;;;;;;;;;;;;;17024:19;:37::i;:::-;17017:44;;16871:198;;;;:::o;15085:148::-;14665:12;:10;:12::i;:::-;14655:22;;:6;;;;;;;;;;:22;;;14647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15192:1:::1;15155:40;;15176:6;::::0;::::1;;;;;;;;15155:40;;;;;;;;;;;;15223:1;15206:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15085:148::o:0;14443:79::-;14481:7;14508:6;;;;;;;;;;;14501:13;;14443:79;:::o;16582:87::-;16621:13;16654:7;16647:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16582:87;:::o;18119:269::-;18212:4;18229:129;18238:12;:10;:12::i;:::-;18252:7;18261:96;18300:15;18261:96;;;;;;;;;;;;;;;;;:11;:25;18273:12;:10;:12::i;:::-;18261:25;;;;;;;;;;;;;;;:34;18287:7;18261:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18229:8;:129::i;:::-;18376:4;18369:11;;18119:269;;;;:::o;17077:167::-;17155:4;17172:42;17182:12;:10;:12::i;:::-;17196:9;17207:6;17172:9;:42::i;:::-;17232:4;17225:11;;17077:167;;;;:::o;18396:110::-;18454:4;18478:11;:20;18490:7;18478:20;;;;;;;;;;;;;;;;;;;;;;;;;18471:27;;18396:110;;;:::o;17252:143::-;17333:7;17360:11;:18;17372:5;17360:18;;;;;;;;;;;;;;;:27;17379:7;17360:27;;;;;;;;;;;;;;;;17353:34;;17252:143;;;;:::o;19696:332::-;14665:12;:10;:12::i;:::-;14655:22;;:6;;;;;;;;;;:22;;;14647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19778:11:::1;:20;19790:7;19778:20;;;;;;;;;;;;;;;;;;;;;;;;;19777:21;19769:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19863:1;19844:7;:16;19852:7;19844:16;;;;;;;;;;;;;;;;:20;19841:108;;;19900:37;19920:7;:16;19928:7;19920:16;;;;;;;;;;;;;;;;19900:19;:37::i;:::-;19881:7;:16;19889:7;19881:16;;;;;;;;;;;;;;;:56;;;;19841:108;19982:4;19959:11;:20;19971:7;19959:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19997:9;20012:7;19997:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19696:332:::0;:::o;15388:244::-;14665:12;:10;:12::i;:::-;14655:22;;:6;;;;;;;;;;:22;;;14647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15497:1:::1;15477:22;;:8;:22;;;;15469:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15587:8;15558:38;;15579:6;::::0;::::1;;;;;;;;15558:38;;;;;;;;;;;;15616:8;15607:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15388:244:::0;:::o;20036:478::-;14665:12;:10;:12::i;:::-;14655:22;;:6;;;;;;;;;;:22;;;14647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20117:11:::1;:20;20129:7;20117:20;;;;;;;;;;;;;;;;;;;;;;;;;20109:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20185:9;20180:327;20204:9;:16;;;;20200:1;:20;20180:327;;;20262:7;20246:23;;:9;20256:1;20246:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;20242:254;;;20305:9;20334:1;20315:9;:16;;;;:20;;;;:::i;:::-;20305:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20290:9;20300:1;20290:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20374:1;20355:7;:16;20363:7;20355:16;;;;;;;;;;;;;;;:20;;;;20417:5;20394:11;:20;20406:7;20394:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20441:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20475:5;;20242:254;20222:3;;;;;:::i;:::-;;;;20180:327;;;;20036:478:::0;:::o;155:98::-;208:7;235:10;228:17;;155:98;:::o;24077:411::-;24136:7;24145;24154;24163;24172;24193:23;24218:12;24234:20;24246:7;24234:11;:20::i;:::-;24192:62;;;;24265:19;24288:10;:8;:10::i;:::-;24265:33;;24310:15;24327:23;24352:12;24368:39;24380:7;24389:4;24395:11;24368;:39::i;:::-;24309:98;;;;;;24426:7;24435:15;24452:4;24458:15;24475:4;24418:62;;;;;;;;;;;;;;;;24077:411;;;;;;;:::o;3867:136::-;3925:7;3952:43;3956:1;3959;3952:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3945:50;;3867:136;;;;:::o;3403:181::-;3461:7;3481:9;3497:1;3493;:5;;;;:::i;:::-;3481:17;;3522:1;3517;:6;;3509:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3575:1;3568:8;;;3403:181;;;;:::o;20522:337::-;20632:1;20615:19;;:5;:19;;;;20607:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20713:1;20694:21;;:7;:21;;;;20686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20797:6;20767:11;:18;20779:5;20767:18;;;;;;;;;;;;;;;:27;20786:7;20767:27;;;;;;;;;;;;;;;:36;;;;20835:7;20819:32;;20828:5;20819:32;;;20844:6;20819:32;;;;;;:::i;:::-;;;;;;;;20522:337;;;:::o;20867:931::-;20982:1;20964:20;;:6;:20;;;;20956:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21066:1;21045:23;;:9;:23;;;;21037:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21136:1;21127:6;:10;21119:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21198:11;:19;21210:6;21198:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;21222:11;:22;21234:9;21222:22;;;;;;;;;;;;;;;;;;;;;;;;;21221:23;21198:46;21194:597;;;21261:48;21283:6;21291:9;21302:6;21261:21;:48::i;:::-;21194:597;;;21332:11;:19;21344:6;21332:19;;;;;;;;;;;;;;;;;;;;;;;;;21331:20;:46;;;;;21355:11;:22;21367:9;21355:22;;;;;;;;;;;;;;;;;;;;;;;;;21331:46;21327:464;;;21394:46;21414:6;21422:9;21433:6;21394:19;:46::i;:::-;21327:464;;;21463:11;:19;21475:6;21463:19;;;;;;;;;;;;;;;;;;;;;;;;;21462:20;:47;;;;;21487:11;:22;21499:9;21487:22;;;;;;;;;;;;;;;;;;;;;;;;;21486:23;21462:47;21458:333;;;21526:44;21544:6;21552:9;21563:6;21526:17;:44::i;:::-;21458:333;;;21592:11;:19;21604:6;21592:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;21615:11;:22;21627:9;21615:22;;;;;;;;;;;;;;;;;;;;;;;;;21592:45;21588:203;;;21654:48;21676:6;21684:9;21695:6;21654:21;:48::i;:::-;21588:203;;;21735:44;21753:6;21761:9;21772:6;21735:17;:44::i;:::-;21588:203;21458:333;21327:464;21194:597;20867:931;;;:::o;4306:192::-;4392:7;4425:1;4420;:6;;4428:12;4412:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4452:9;4468:1;4464;:5;;;;:::i;:::-;4452:17;;4489:1;4482:8;;;4306:192;;;;;:::o;25076:163::-;25117:7;25138:15;25155;25174:19;:17;:19::i;:::-;25137:56;;;;25211:20;25223:7;25211;:11;;:20;;;;:::i;:::-;25204:27;;;;25076:163;:::o;5704:132::-;5762:7;5789:39;5793:1;5796;5789:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5782:46;;5704:132;;;;:::o;24496:230::-;24556:7;24565;24585:12;24600:23;24621:1;24600:16;24612:3;24600:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;24585:38;;24634:23;24660:17;24672:4;24660:7;:11;;:17;;;;:::i;:::-;24634:43;;24696:15;24713:4;24688:30;;;;;;24496:230;;;:::o;24734:334::-;24829:7;24838;24847;24867:15;24885:24;24897:11;24885:7;:11;;:24;;;;:::i;:::-;24867:42;;24920:12;24935:21;24944:11;24935:4;:8;;:21;;;;:::i;:::-;24920:36;;24967:23;24993:17;25005:4;24993:7;:11;;:17;;;;:::i;:::-;24967:43;;25029:7;25038:15;25055:4;25021:39;;;;;;;;;24734:334;;;;;;;:::o;22803:509::-;22906:15;22923:23;22948:12;22962:23;22987:12;23003:19;23014:7;23003:10;:19::i;:::-;22905:117;;;;;;;;;;23051:28;23071:7;23051;:15;23059:6;23051:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23033:7;:15;23041:6;23033:15;;;;;;;;;;;;;;;:46;;;;23108:28;23128:7;23108;:15;23116:6;23108:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23090:7;:15;23098:6;23090:15;;;;;;;;;;;;;;;:46;;;;23168:39;23191:15;23168:7;:18;23176:9;23168:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23147:7;:18;23155:9;23147:18;;;;;;;;;;;;;;;:60;;;;23221:23;23233:4;23239;23221:11;:23::i;:::-;23277:9;23260:44;;23269:6;23260:44;;;23288:15;23260:44;;;;;;:::i;:::-;;;;;;;;22803:509;;;;;;;;:::o;22266:529::-;22367:15;22384:23;22409:12;22423:23;22448:12;22464:19;22475:7;22464:10;:19::i;:::-;22366:117;;;;;;;;;;22512:28;22532:7;22512;:15;22520:6;22512:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22494:7;:15;22502:6;22494:15;;;;;;;;;;;;;;;:46;;;;22572:39;22595:15;22572:7;:18;22580:9;22572:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22551:7;:18;22559:9;22551:18;;;;;;;;;;;;;;;:60;;;;22643:39;22666:15;22643:7;:18;22651:9;22643:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22622:7;:18;22630:9;22622:18;;;;;;;;;;;;;;;:60;;;;22704:23;22716:4;22722;22704:11;:23::i;:::-;22760:9;22743:44;;22752:6;22743:44;;;22771:15;22743:44;;;;;;:::i;:::-;;;;;;;;22266:529;;;;;;;;:::o;21806:452::-;21905:15;21922:23;21947:12;21961:23;21986:12;22002:19;22013:7;22002:10;:19::i;:::-;21904:117;;;;;;;;;;22050:28;22070:7;22050;:15;22058:6;22050:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22032:7;:15;22040:6;22032:15;;;;;;;;;;;;;;;:46;;;;22110:39;22133:15;22110:7;:18;22118:9;22110:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;22089:7;:18;22097:9;22089:18;;;;;;;;;;;;;;;:60;;;;22167:23;22179:4;22185;22167:11;:23::i;:::-;22223:9;22206:44;;22215:6;22206:44;;;22234:15;22206:44;;;;;;:::i;:::-;;;;;;;;21806:452;;;;;;;;:::o;23320:585::-;23423:15;23440:23;23465:12;23479:23;23504:12;23520:19;23531:7;23520:10;:19::i;:::-;23422:117;;;;;;;;;;23568:28;23588:7;23568;:15;23576:6;23568:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23550:7;:15;23558:6;23550:15;;;;;;;;;;;;;;;:46;;;;23625:28;23645:7;23625;:15;23633:6;23625:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23607:7;:15;23615:6;23607:15;;;;;;;;;;;;;;;:46;;;;23685:39;23708:15;23685:7;:18;23693:9;23685:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23664:7;:18;23672:9;23664:18;;;;;;;;;;;;;;;:60;;;;23756:39;23779:15;23756:7;:18;23764:9;23756:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;23735:7;:18;23743:9;23735:18;;;;;;;;;;;;;;;:60;;;;23814:23;23826:4;23832;23814:11;:23::i;:::-;23870:9;23853:44;;23862:6;23853:44;;;23881:15;23853:44;;;;;;:::i;:::-;;;;;;;;23320:585;;;;;;;;:::o;25247:561::-;25297:7;25306;25326:15;25344:7;;25326:25;;25362:15;16118:27;25362:25;;25409:9;25404:289;25428:9;:16;;;;25424:1;:20;25404:289;;;25494:7;25470;:21;25478:9;25488:1;25478:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25470:21;;;;;;;;;;;;;;;;:31;:66;;;;25529:7;25505;:21;25513:9;25523:1;25513:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25505:21;;;;;;;;;;;;;;;;:31;25470:66;25466:97;;;25546:7;;16118:27;25538:25;;;;;;;;;25466:97;25588:34;25600:7;:21;25608:9;25618:1;25608:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25600:21;;;;;;;;;;;;;;;;25588:7;:11;;:34;;;;:::i;:::-;25578:44;;25647:34;25659:7;:21;25667:9;25677:1;25667:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25659:21;;;;;;;;;;;;;;;;25647:7;:11;;:34;;;;:::i;:::-;25637:44;;25446:3;;;;;:::i;:::-;;;;25404:289;;;;25717:20;16118:27;25717:7;;:11;;:20;;;;:::i;:::-;25707:7;:30;25703:61;;;25747:7;;16118:27;25739:25;;;;;;;;25703:61;25783:7;25792;25775:25;;;;;;25247:561;;;:::o;6332:278::-;6418:7;6450:1;6446;:5;6453:12;6438:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6477:9;6493:1;6489;:5;;;;:::i;:::-;6477:17;;6601:1;6594:8;;;6332:278;;;;;:::o;4757:471::-;4815:7;5065:1;5060;:6;5056:47;;;5090:1;5083:8;;;;5056:47;5115:9;5131:1;5127;:5;;;;:::i;:::-;5115:17;;5160:1;5155;5151;:5;;;;:::i;:::-;:10;5143:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5219:1;5212:8;;;4757:471;;;;;:::o;23913:156::-;24000:17;24012:4;24000:7;;:11;;:17;;;;:::i;:::-;23990:7;:27;;;;24041:20;24056:4;24041:10;;:14;;:20;;;;:::i;:::-;24028:10;:33;;;;23913:156;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;495:6;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;772:6;780;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;1194:6;1202;1210;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;1743:6;1751;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:262::-;2147:6;2196:2;2184:9;2175:7;2171:23;2167:32;2164:2;;;2212:1;2209;2202:12;2164:2;2255:1;2280:53;2325:7;2316:6;2305:9;2301:22;2280:53;:::i;:::-;2270:63;;2226:117;2154:196;;;;:::o;2356:401::-;2421:6;2429;2478:2;2466:9;2457:7;2453:23;2449:32;2446:2;;;2494:1;2491;2484:12;2446:2;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:50;2732:7;2723:6;2712:9;2708:22;2690:50;:::i;:::-;2680:60;;2635:115;2436:321;;;;;:::o;2763:118::-;2850:24;2868:5;2850:24;:::i;:::-;2845:3;2838:37;2828:53;;:::o;2887:109::-;2968:21;2983:5;2968:21;:::i;:::-;2963:3;2956:34;2946:50;;:::o;3002:364::-;3090:3;3118:39;3151:5;3118:39;:::i;:::-;3173:71;3237:6;3232:3;3173:71;:::i;:::-;3166:78;;3253:52;3298:6;3293:3;3286:4;3279:5;3275:16;3253:52;:::i;:::-;3330:29;3352:6;3330:29;:::i;:::-;3325:3;3321:39;3314:46;;3094:272;;;;;:::o;3372:366::-;3514:3;3535:67;3599:2;3594:3;3535:67;:::i;:::-;3528:74;;3611:93;3700:3;3611:93;:::i;:::-;3729:2;3724:3;3720:12;3713:19;;3518:220;;;:::o;3744:366::-;3886:3;3907:67;3971:2;3966:3;3907:67;:::i;:::-;3900:74;;3983:93;4072:3;3983:93;:::i;:::-;4101:2;4096:3;4092:12;4085:19;;3890:220;;;:::o;4116:366::-;4258:3;4279:67;4343:2;4338:3;4279:67;:::i;:::-;4272:74;;4355:93;4444:3;4355:93;:::i;:::-;4473:2;4468:3;4464:12;4457:19;;4262:220;;;:::o;4488:366::-;4630:3;4651:67;4715:2;4710:3;4651:67;:::i;:::-;4644:74;;4727:93;4816:3;4727:93;:::i;:::-;4845:2;4840:3;4836:12;4829:19;;4634:220;;;:::o;4860:366::-;5002:3;5023:67;5087:2;5082:3;5023:67;:::i;:::-;5016:74;;5099:93;5188:3;5099:93;:::i;:::-;5217:2;5212:3;5208:12;5201:19;;5006:220;;;:::o;5232:366::-;5374:3;5395:67;5459:2;5454:3;5395:67;:::i;:::-;5388:74;;5471:93;5560:3;5471:93;:::i;:::-;5589:2;5584:3;5580:12;5573:19;;5378:220;;;:::o;5604:366::-;5746:3;5767:67;5831:2;5826:3;5767:67;:::i;:::-;5760:74;;5843:93;5932:3;5843:93;:::i;:::-;5961:2;5956:3;5952:12;5945:19;;5750:220;;;:::o;5976:366::-;6118:3;6139:67;6203:2;6198:3;6139:67;:::i;:::-;6132:74;;6215:93;6304:3;6215:93;:::i;:::-;6333:2;6328:3;6324:12;6317:19;;6122:220;;;:::o;6348:366::-;6490:3;6511:67;6575:2;6570:3;6511:67;:::i;:::-;6504:74;;6587:93;6676:3;6587:93;:::i;:::-;6705:2;6700:3;6696:12;6689:19;;6494:220;;;:::o;6720:366::-;6862:3;6883:67;6947:2;6942:3;6883:67;:::i;:::-;6876:74;;6959:93;7048:3;6959:93;:::i;:::-;7077:2;7072:3;7068:12;7061:19;;6866:220;;;:::o;7092:366::-;7234:3;7255:67;7319:2;7314:3;7255:67;:::i;:::-;7248:74;;7331:93;7420:3;7331:93;:::i;:::-;7449:2;7444:3;7440:12;7433:19;;7238:220;;;:::o;7464:366::-;7606:3;7627:67;7691:2;7686:3;7627:67;:::i;:::-;7620:74;;7703:93;7792:3;7703:93;:::i;:::-;7821:2;7816:3;7812:12;7805:19;;7610:220;;;:::o;7836:366::-;7978:3;7999:67;8063:2;8058:3;7999:67;:::i;:::-;7992:74;;8075:93;8164:3;8075:93;:::i;:::-;8193:2;8188:3;8184:12;8177:19;;7982:220;;;:::o;8208:118::-;8295:24;8313:5;8295:24;:::i;:::-;8290:3;8283:37;8273:53;;:::o;8332:112::-;8415:22;8431:5;8415:22;:::i;:::-;8410:3;8403:35;8393:51;;:::o;8450:222::-;8543:4;8581:2;8570:9;8566:18;8558:26;;8594:71;8662:1;8651:9;8647:17;8638:6;8594:71;:::i;:::-;8548:124;;;;:::o;8678:210::-;8765:4;8803:2;8792:9;8788:18;8780:26;;8816:65;8878:1;8867:9;8863:17;8854:6;8816:65;:::i;:::-;8770:118;;;;:::o;8894:313::-;9007:4;9045:2;9034:9;9030:18;9022:26;;9094:9;9088:4;9084:20;9080:1;9069:9;9065:17;9058:47;9122:78;9195:4;9186:6;9122:78;:::i;:::-;9114:86;;9012:195;;;;:::o;9213:419::-;9379:4;9417:2;9406:9;9402:18;9394:26;;9466:9;9460:4;9456:20;9452:1;9441:9;9437:17;9430:47;9494:131;9620:4;9494:131;:::i;:::-;9486:139;;9384:248;;;:::o;9638:419::-;9804:4;9842:2;9831:9;9827:18;9819:26;;9891:9;9885:4;9881:20;9877:1;9866:9;9862:17;9855:47;9919:131;10045:4;9919:131;:::i;:::-;9911:139;;9809:248;;;:::o;10063:419::-;10229:4;10267:2;10256:9;10252:18;10244:26;;10316:9;10310:4;10306:20;10302:1;10291:9;10287:17;10280:47;10344:131;10470:4;10344:131;:::i;:::-;10336:139;;10234:248;;;:::o;10488:419::-;10654:4;10692:2;10681:9;10677:18;10669:26;;10741:9;10735:4;10731:20;10727:1;10716:9;10712:17;10705:47;10769:131;10895:4;10769:131;:::i;:::-;10761:139;;10659:248;;;:::o;10913:419::-;11079:4;11117:2;11106:9;11102:18;11094:26;;11166:9;11160:4;11156:20;11152:1;11141:9;11137:17;11130:47;11194:131;11320:4;11194:131;:::i;:::-;11186:139;;11084:248;;;:::o;11338:419::-;11504:4;11542:2;11531:9;11527:18;11519:26;;11591:9;11585:4;11581:20;11577:1;11566:9;11562:17;11555:47;11619:131;11745:4;11619:131;:::i;:::-;11611:139;;11509:248;;;:::o;11763:419::-;11929:4;11967:2;11956:9;11952:18;11944:26;;12016:9;12010:4;12006:20;12002:1;11991:9;11987:17;11980:47;12044:131;12170:4;12044:131;:::i;:::-;12036:139;;11934:248;;;:::o;12188:419::-;12354:4;12392:2;12381:9;12377:18;12369:26;;12441:9;12435:4;12431:20;12427:1;12416:9;12412:17;12405:47;12469:131;12595:4;12469:131;:::i;:::-;12461:139;;12359:248;;;:::o;12613:419::-;12779:4;12817:2;12806:9;12802:18;12794:26;;12866:9;12860:4;12856:20;12852:1;12841:9;12837:17;12830:47;12894:131;13020:4;12894:131;:::i;:::-;12886:139;;12784:248;;;:::o;13038:419::-;13204:4;13242:2;13231:9;13227:18;13219:26;;13291:9;13285:4;13281:20;13277:1;13266:9;13262:17;13255:47;13319:131;13445:4;13319:131;:::i;:::-;13311:139;;13209:248;;;:::o;13463:419::-;13629:4;13667:2;13656:9;13652:18;13644:26;;13716:9;13710:4;13706:20;13702:1;13691:9;13687:17;13680:47;13744:131;13870:4;13744:131;:::i;:::-;13736:139;;13634:248;;;:::o;13888:419::-;14054:4;14092:2;14081:9;14077:18;14069:26;;14141:9;14135:4;14131:20;14127:1;14116:9;14112:17;14105:47;14169:131;14295:4;14169:131;:::i;:::-;14161:139;;14059:248;;;:::o;14313:419::-;14479:4;14517:2;14506:9;14502:18;14494:26;;14566:9;14560:4;14556:20;14552:1;14541:9;14537:17;14530:47;14594:131;14720:4;14594:131;:::i;:::-;14586:139;;14484:248;;;:::o;14738:222::-;14831:4;14869:2;14858:9;14854:18;14846:26;;14882:71;14950:1;14939:9;14935:17;14926:6;14882:71;:::i;:::-;14836:124;;;;:::o;14966:214::-;15055:4;15093:2;15082:9;15078:18;15070:26;;15106:67;15170:1;15159:9;15155:17;15146:6;15106:67;:::i;:::-;15060:120;;;;:::o;15186:99::-;15238:6;15272:5;15266:12;15256:22;;15245:40;;;:::o;15291:169::-;15375:11;15409:6;15404:3;15397:19;15449:4;15444:3;15440:14;15425:29;;15387:73;;;;:::o;15466:305::-;15506:3;15525:20;15543:1;15525:20;:::i;:::-;15520:25;;15559:20;15577:1;15559:20;:::i;:::-;15554:25;;15713:1;15645:66;15641:74;15638:1;15635:81;15632:2;;;15719:18;;:::i;:::-;15632:2;15763:1;15760;15756:9;15749:16;;15510:261;;;;:::o;15777:185::-;15817:1;15834:20;15852:1;15834:20;:::i;:::-;15829:25;;15868:20;15886:1;15868:20;:::i;:::-;15863:25;;15907:1;15897:2;;15912:18;;:::i;:::-;15897:2;15954:1;15951;15947:9;15942:14;;15819:143;;;;:::o;15968:348::-;16008:7;16031:20;16049:1;16031:20;:::i;:::-;16026:25;;16065:20;16083:1;16065:20;:::i;:::-;16060:25;;16253:1;16185:66;16181:74;16178:1;16175:81;16170:1;16163:9;16156:17;16152:105;16149:2;;;16260:18;;:::i;:::-;16149:2;16308:1;16305;16301:9;16290:20;;16016:300;;;;:::o;16322:191::-;16362:4;16382:20;16400:1;16382:20;:::i;:::-;16377:25;;16416:20;16434:1;16416:20;:::i;:::-;16411:25;;16455:1;16452;16449:8;16446:2;;;16460:18;;:::i;:::-;16446:2;16505:1;16502;16498:9;16490:17;;16367:146;;;;:::o;16519:96::-;16556:7;16585:24;16603:5;16585:24;:::i;:::-;16574:35;;16564:51;;;:::o;16621:90::-;16655:7;16698:5;16691:13;16684:21;16673:32;;16663:48;;;:::o;16717:126::-;16754:7;16794:42;16787:5;16783:54;16772:65;;16762:81;;;:::o;16849:77::-;16886:7;16915:5;16904:16;;16894:32;;;:::o;16932:86::-;16967:7;17007:4;17000:5;16996:16;16985:27;;16975:43;;;:::o;17024:307::-;17092:1;17102:113;17116:6;17113:1;17110:13;17102:113;;;17201:1;17196:3;17192:11;17186:18;17182:1;17177:3;17173:11;17166:39;17138:2;17135:1;17131:10;17126:15;;17102:113;;;17233:6;17230:1;17227:13;17224:2;;;17313:1;17304:6;17299:3;17295:16;17288:27;17224:2;17073:258;;;;:::o;17337:320::-;17381:6;17418:1;17412:4;17408:12;17398:22;;17465:1;17459:4;17455:12;17486:18;17476:2;;17542:4;17534:6;17530:17;17520:27;;17476:2;17604;17596:6;17593:14;17573:18;17570:38;17567:2;;;17623:18;;:::i;:::-;17567:2;17388:269;;;;:::o;17663:233::-;17702:3;17725:24;17743:5;17725:24;:::i;:::-;17716:33;;17771:66;17764:5;17761:77;17758:2;;;17841:18;;:::i;:::-;17758:2;17888:1;17881:5;17877:13;17870:20;;17706:190;;;:::o;17902:180::-;17950:77;17947:1;17940:88;18047:4;18044:1;18037:15;18071:4;18068:1;18061:15;18088:180;18136:77;18133:1;18126:88;18233:4;18230:1;18223:15;18257:4;18254:1;18247:15;18274:180;18322:77;18319:1;18312:88;18419:4;18416:1;18409:15;18443:4;18440:1;18433:15;18460:102;18501:6;18552:2;18548:7;18543:2;18536:5;18532:14;18528:28;18518:38;;18508:54;;;:::o;18568:222::-;18708:34;18704:1;18696:6;18692:14;18685:58;18777:5;18772:2;18764:6;18760:15;18753:30;18674:116;:::o;18796:229::-;18936:34;18932:1;18924:6;18920:14;18913:58;19005:12;19000:2;18992:6;18988:15;18981:37;18902:123;:::o;19031:225::-;19171:34;19167:1;19159:6;19155:14;19148:58;19240:8;19235:2;19227:6;19223:15;19216:33;19137:119;:::o;19262:221::-;19402:34;19398:1;19390:6;19386:14;19379:58;19471:4;19466:2;19458:6;19454:15;19447:29;19368:115;:::o;19489:177::-;19629:29;19625:1;19617:6;19613:14;19606:53;19595:71;:::o;19672:177::-;19812:29;19808:1;19800:6;19796:14;19789:53;19778:71;:::o;19855:181::-;19995:33;19991:1;19983:6;19979:14;19972:57;19961:75;:::o;20042:220::-;20182:34;20178:1;20170:6;20166:14;20159:58;20251:3;20246:2;20238:6;20234:15;20227:28;20148:114;:::o;20268:182::-;20408:34;20404:1;20396:6;20392:14;20385:58;20374:76;:::o;20456:228::-;20596:34;20592:1;20584:6;20580:14;20573:58;20665:11;20660:2;20652:6;20648:15;20641:36;20562:122;:::o;20690:224::-;20830:34;20826:1;20818:6;20814:14;20807:58;20899:7;20894:2;20886:6;20882:15;20875:32;20796:118;:::o;20920:223::-;21060:34;21056:1;21048:6;21044:14;21037:58;21129:6;21124:2;21116:6;21112:15;21105:31;21026:117;:::o;21149:231::-;21289:34;21285:1;21277:6;21273:14;21266:58;21358:14;21353:2;21345:6;21341:15;21334:39;21255:125;:::o;21386:122::-;21459:24;21477:5;21459:24;:::i;:::-;21452:5;21449:35;21439:2;;21498:1;21495;21488:12;21439:2;21429:79;:::o;21514:116::-;21584:21;21599:5;21584:21;:::i;:::-;21577:5;21574:32;21564:2;;21620:1;21617;21610:12;21564:2;21554:76;:::o;21636:122::-;21709:24;21727:5;21709:24;:::i;:::-;21702:5;21699:35;21689:2;;21748:1;21745;21738:12;21689:2;21679:79;:::o

Swarm Source

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