ETH Price: $3,318.11 (+2.10%)
Gas: 3 Gwei

Token

Uranium MultiChain (UNM)
 

Overview

Max Total Supply

10,000,000 UNM

Holders

2

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,766,100 UNM

Value
$0.00
0x60af7036ac567b97bdcff869bbdaf78933959e75
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:
CoinToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

/**
 *Submitted for verification at BscScan.com on 2021-05-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.2;


abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(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;
    }
}

/**
 * @dev Interface of the BEP20 standard as defined in the EIP.
 */
interface IBEP20 {
    /**
     * @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);
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
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);
            }
        }
    }
}

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

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


    /**
     * @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 CoinToken is Context, IBEP20, 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;
    
    string  private _NAME;
    string  private _SYMBOL;
    uint256   private _DECIMALS;
    address public FeeAddress;
   
    uint256 private _MAX = ~uint256(0);
    uint256 private _DECIMALFACTOR;
    uint256 private _GRANULARITY = 100;
    
    uint256 private _tTotal;
    uint256 private _rTotal;
    
    uint256 private _tFeeTotal;
    uint256 private _tBurnTotal;
    uint256 private _tCharityTotal;
    
    uint256 public     _TAX_FEE;
    uint256 public    _BURN_FEE;
    uint256 public _CHARITY_FEE;

    // Track original fees to bypass fees for charity account
    uint256 private ORIG_TAX_FEE;
    uint256 private ORIG_BURN_FEE;
    uint256 private ORIG_CHARITY_FEE;

    constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, address _FeeAddress,address tokenOwner)  {
        _NAME = _name;
        _SYMBOL = _symbol;
        _DECIMALS = _decimals;
        _DECIMALFACTOR = 10 ** _DECIMALS;
        _tTotal =_supply * _DECIMALFACTOR;
        _rTotal = (_MAX - (_MAX % _tTotal));
        _TAX_FEE = 0 * 100; 
        _BURN_FEE = 0 * 100;
        _CHARITY_FEE =  1 * 100;
        ORIG_TAX_FEE = _TAX_FEE;
        ORIG_BURN_FEE = _BURN_FEE;
        ORIG_CHARITY_FEE = _CHARITY_FEE;
        FeeAddress = _FeeAddress;
        _owner = tokenOwner;
        _rOwned[tokenOwner] = _rTotal;
        emit Transfer(address(0),tokenOwner, _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 uint8(_DECIMALS);
    }

    function totalSupply() public view 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, "TOKEN20: 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, "TOKEN20: 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 totalBurn() public view returns (uint256) {
        return _tBurnTotal;
    }
    
    function totalCharity() public view returns (uint256) {
        return _tCharityTotal;
    }

    function deliver(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 included");
        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 setAsCharityAccount(address account) external onlyOwner() {
        FeeAddress = account;
    }

    
    function updateFee(uint256 _charityFee) onlyOwner() public{
        require(_charityFee < 10);
        _CHARITY_FEE = _charityFee* 100;
        ORIG_CHARITY_FEE = _CHARITY_FEE;
    }
    




    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "TOKEN20: approve from the zero address");
        require(spender != address(0), "TOKEN20: 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), "TOKEN20: transfer from the zero address");
        require(recipient != address(0), "TOKEN20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        // Remove fees for transfers to and from charity account or to excluded account
        bool takeFee = true;
        if (FeeAddress == sender || FeeAddress == recipient || _isExcluded[recipient]) {
            takeFee = false;
        }

        if (!takeFee) removeAllFee();
        
        
        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);
        }

        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _standardTransferContent(sender, recipient, rAmount, rTransferAmount);
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
    }
    
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount);        
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
    }
    

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount);
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);  
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) = _getValues(tAmount);
        uint256 rBurn =  tBurn.mul(currentRate);
        _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount);  
        _sendToCharity(tCharity, sender);
        _reflectFee(rFee, rBurn, tFee, tBurn, tCharity);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);  
    }

    function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn, uint256 tCharity) private {
        _rTotal = _rTotal.sub(rFee).sub(rBurn);
        _tFeeTotal = _tFeeTotal.add(tFee);
        _tBurnTotal = _tBurnTotal.add(tBurn);
        _tCharityTotal = _tCharityTotal.add(tCharity);
        _tTotal = _tTotal.sub(tBurn);
        emit Transfer(address(this), address(0), tBurn);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tFee, uint256 tBurn, uint256 tCharity) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _CHARITY_FEE);
        uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tCharity);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate);
        uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tCharity, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tCharity);
    }
    
    function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 charityFee) private view returns (uint256, uint256, uint256) {
        uint256 tFee = ((tAmount.mul(taxFee)).div(_GRANULARITY)).div(100);
        uint256 tBurn = ((tAmount.mul(burnFee)).div(_GRANULARITY)).div(100);
        uint256 tCharity = ((tAmount.mul(charityFee)).div(_GRANULARITY)).div(100);
        return (tFee, tBurn, tCharity);
    }
    
    function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tCharity) private pure returns (uint256) {
        return tAmount.sub(tFee).sub(tBurn).sub(tCharity);
    }
    
    function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        return (rAmount, rFee);
    }
    
    function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tCharity, uint256 currentRate) private pure returns (uint256) {
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rCharity = tCharity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rCharity);
        return rTransferAmount;
    }

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

    function _sendToCharity(uint256 tCharity, address sender) private {
        uint256 currentRate = _getRate();
        uint256 rCharity = tCharity.mul(currentRate);
        _rOwned[FeeAddress] = _rOwned[FeeAddress].add(rCharity);
        _tOwned[FeeAddress] = _tOwned[FeeAddress].add(tCharity);
        emit Transfer(sender, FeeAddress, tCharity);
    }

    function removeAllFee() private {
        if(_CHARITY_FEE == 0) return;
        
        ORIG_CHARITY_FEE = _CHARITY_FEE;
        _CHARITY_FEE = 0;
    }
    
    function restoreAllFee() private {
        _CHARITY_FEE = ORIG_CHARITY_FEE;
    }
    
    function _getTaxFee() private view returns(uint256) {
        return _TAX_FEE;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address","name":"_FeeAddress","type":"address"},{"internalType":"address","name":"tokenOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[],"name":"FeeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_CHARITY_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"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"},{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"setAsCharityAccount","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":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCharity","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_charityFee","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600019600a556064600c553480156200001c57600080fd5b5060405162004ef738038062004ef7833981810160405281019062000042919062000464565b85600690816200005391906200077f565b5084600790816200006591906200077f565b5083600881905550600854600a6200007e9190620009e9565b600b81905550600b548362000094919062000a3a565b600d81905550600d54600a54620000ac919062000ab4565b600a54620000bb919062000aec565b600e8190555060006012819055506000601381905550606460148190555060125460158190555060135460168190555060145460178190555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e54600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200021d919062000b38565b60405180910390a350505050505062000b55565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200029a826200024f565b810181811067ffffffffffffffff82111715620002bc57620002bb62000260565b5b80604052505050565b6000620002d162000231565b9050620002df82826200028f565b919050565b600067ffffffffffffffff82111562000302576200030162000260565b5b6200030d826200024f565b9050602081019050919050565b60005b838110156200033a5780820151818401526020810190506200031d565b60008484015250505050565b60006200035d6200035784620002e4565b620002c5565b9050828152602081018484840111156200037c576200037b6200024a565b5b620003898482856200031a565b509392505050565b600082601f830112620003a957620003a862000245565b5b8151620003bb84826020860162000346565b91505092915050565b6000819050919050565b620003d981620003c4565b8114620003e557600080fd5b50565b600081519050620003f981620003ce565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200042c82620003ff565b9050919050565b6200043e816200041f565b81146200044a57600080fd5b50565b6000815190506200045e8162000433565b92915050565b60008060008060008060c087890312156200048457620004836200023b565b5b600087015167ffffffffffffffff811115620004a557620004a462000240565b5b620004b389828a0162000391565b965050602087015167ffffffffffffffff811115620004d757620004d662000240565b5b620004e589828a0162000391565b9550506040620004f889828a01620003e8565b94505060606200050b89828a01620003e8565b93505060806200051e89828a016200044d565b92505060a06200053189828a016200044d565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200059157607f821691505b602082108103620005a757620005a662000549565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005d2565b6200061d8683620005d2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620006606200065a6200065484620003c4565b62000635565b620003c4565b9050919050565b6000819050919050565b6200067c836200063f565b620006946200068b8262000667565b848454620005df565b825550505050565b600090565b620006ab6200069c565b620006b881848462000671565b505050565b5b81811015620006e057620006d4600082620006a1565b600181019050620006be565b5050565b601f8211156200072f57620006f981620005ad565b6200070484620005c2565b8101602085101562000714578190505b6200072c6200072385620005c2565b830182620006bd565b50505b505050565b600082821c905092915050565b6000620007546000198460080262000734565b1980831691505092915050565b60006200076f838362000741565b9150826002028217905092915050565b6200078a826200053e565b67ffffffffffffffff811115620007a657620007a562000260565b5b620007b2825462000578565b620007bf828285620006e4565b600060209050601f831160018114620007f75760008415620007e2578287015190505b620007ee858262000761565b8655506200085e565b601f1984166200080786620005ad565b60005b8281101562000831578489015182556001820191506020850194506020810190506200080a565b868310156200085157848901516200084d601f89168262000741565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008f457808604811115620008cc57620008cb62000866565b5b6001851615620008dc5780820291505b8081029050620008ec8562000895565b9450620008ac565b94509492505050565b6000826200090f5760019050620009e2565b816200091f5760009050620009e2565b8160018114620009385760028114620009435762000979565b6001915050620009e2565b60ff84111562000958576200095762000866565b5b8360020a91508482111562000972576200097162000866565b5b50620009e2565b5060208310610133831016604e8410600b8410161715620009b35782820a905083811115620009ad57620009ac62000866565b5b620009e2565b620009c28484846001620008a2565b92509050818404811115620009dc57620009db62000866565b5b81810290505b9392505050565b6000620009f682620003c4565b915062000a0383620003c4565b925062000a327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008fd565b905092915050565b600062000a4782620003c4565b915062000a5483620003c4565b925082820262000a6481620003c4565b9150828204841483151762000a7e5762000a7d62000866565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ac182620003c4565b915062000ace83620003c4565b92508262000ae15762000ae062000a85565b5b828206905092915050565b600062000af982620003c4565b915062000b0683620003c4565b925082820390508181111562000b215762000b2062000866565b5b92915050565b62000b3281620003c4565b82525050565b600060208201905062000b4f600083018462000b27565b92915050565b6143928062000b656000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637b7e8bac11610104578063b2bdfa7b116100a2578063dd62ed3e11610071578063dd62ed3e14610573578063f2cc0c18146105a3578063f2fde38b146105bf578063f84354f1146105db576101da565b8063b2bdfa7b146104e9578063b586242814610507578063cba0e99614610525578063d608b3b214610555576101da565b806395d89b41116100de57806395d89b411461044d578063a457c2d71461046b578063a9059cbb1461049b578063ae9dd5e0146104cb576101da565b80637b7e8bac146103f55780638da5cb5b146104135780639012c4a814610431576101da565b8063395093511161017c578063457bdf6c1161014b578063457bdf6c1461038157806370a082311461039d578063715018a6146103cd57806377ef7993146103d7576101da565b806339509351146102e75780633bd5d173146103175780633c9f861d146103335780634549b03914610351576101da565b806318160ddd116101b857806318160ddd1461024b57806323b872dd146102695780632d83811914610299578063313ce567146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806313114a9d1461022d575b600080fd5b6101e76105f7565b6040516101f49190613679565b60405180910390f35b61021760048036038101906102129190613734565b610689565b604051610224919061378f565b60405180910390f35b6102356106a7565b60405161024291906137b9565b60405180910390f35b6102536106b1565b60405161026091906137b9565b60405180910390f35b610283600480360381019061027e91906137d4565b6106bb565b604051610290919061378f565b60405180910390f35b6102b360048036038101906102ae9190613827565b610794565b6040516102c091906137b9565b60405180910390f35b6102d1610802565b6040516102de9190613870565b60405180910390f35b61030160048036038101906102fc9190613734565b61080c565b60405161030e919061378f565b60405180910390f35b610331600480360381019061032c9190613827565b6108bf565b005b61033b610a3b565b60405161034891906137b9565b60405180910390f35b61036b600480360381019061036691906138b7565b610a45565b60405161037891906137b9565b60405180910390f35b61039b600480360381019061039691906138f7565b610acb565b005b6103b760048036038101906103b291906138f7565b610ba4565b6040516103c491906137b9565b60405180910390f35b6103d5610c8f565b005b6103df610de2565b6040516103ec91906137b9565b60405180910390f35b6103fd610de8565b60405161040a9190613933565b60405180910390f35b61041b610e0e565b6040516104289190613933565b60405180910390f35b61044b60048036038101906104469190613827565b610e37565b005b610455610ef8565b6040516104629190613679565b60405180910390f35b61048560048036038101906104809190613734565b610f8a565b604051610492919061378f565b60405180910390f35b6104b560048036038101906104b09190613734565b611057565b6040516104c2919061378f565b60405180910390f35b6104d3611075565b6040516104e091906137b9565b60405180910390f35b6104f161107b565b6040516104fe9190613933565b60405180910390f35b61050f61109f565b60405161051c91906137b9565b60405180910390f35b61053f600480360381019061053a91906138f7565b6110a5565b60405161054c919061378f565b60405180910390f35b61055d6110fb565b60405161056a91906137b9565b60405180910390f35b61058d6004803603810190610588919061394e565b611105565b60405161059a91906137b9565b60405180910390f35b6105bd60048036038101906105b891906138f7565b61118c565b005b6105d960048036038101906105d491906138f7565b611440565b005b6105f560048036038101906105f091906138f7565b611601565b005b606060068054610606906139bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610632906139bd565b801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b600061069d61069661194f565b8484611957565b6001905092915050565b6000600f54905090565b6000600d54905090565b60006106c8848484611b20565b610789846106d461194f565b610784856040518060600160405280602a8152602001614333602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073a61194f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205f9092919063ffffffff16565b611957565b600190509392505050565b6000600e548211156107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290613a60565b60405180910390fd5b60006107e56120c3565b90506107fa81846120ee90919063ffffffff16565b915050919050565b6000600854905090565b60006108b561081961194f565b846108b0856003600061082a61194f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b611957565b6001905092915050565b60006108c961194f565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90613af2565b60405180910390fd5b600061096383612196565b50505050505090506109bd81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a1581600e5461222490919063ffffffff16565b600e81905550610a3083600f5461213890919063ffffffff16565b600f81905550505050565b6000601054905090565b6000600d54831115610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613b5e565b60405180910390fd5b81610aad576000610a9c84612196565b505050505050905080915050610ac5565b6000610ab884612196565b5050505050915050809150505b92915050565b610ad361194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5790613bca565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c3f57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610c8a565b610c87600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610794565b90505b919050565b610c9761194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613bca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60135481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e3f61194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec390613bca565b60405180910390fd5b600a8110610ed957600080fd5b606481610ee69190613c19565b60148190555060145460178190555050565b606060078054610f07906139bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f33906139bd565b8015610f805780601f10610f5557610100808354040283529160200191610f80565b820191906000526020600020905b815481529060010190602001808311610f6357829003601f168201915b5050505050905090565b600061104d610f9761194f565b846110488560405180606001604052806027815260200161430c6027913960036000610fc161194f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205f9092919063ffffffff16565b611957565b6001905092915050565b600061106b61106461194f565b8484611b20565b6001905092915050565b60145481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601154905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61119461194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613bca565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590613ca7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113825761133e600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610794565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61144861194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90613bca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90613d39565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61160961194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90613bca565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990613da5565b60405180910390fd5b60005b60058054905081101561194b578173ffffffffffffffffffffffffffffffffffffffff166005828154811061175d5761175c613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361193857600560016005805490506117b79190613df4565b815481106117c8576117c7613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061180757611806613dc5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806118fe576118fd613e28565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561194b565b808061194390613e57565b915050611725565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bd90613f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613fa3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b1391906137b9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690614035565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf5906140c7565b60405180910390fd5b60008111611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890614159565b60405180910390fd5b6000600190508373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611cf057508273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611d445750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d4e57600090505b80611d5c57611d5b61226e565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dff5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1457611e0f84848461228d565b61204b565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eb75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ecc57611ec7848484612369565b61204a565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f705750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8557611f80848484612445565b612049565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120275750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561203c57612037848484612520565b612048565b612047848484612445565b5b5b5b5b80612059576120586125fd565b5b50505050565b60008383111582906120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e9190613679565b60405180910390fd5b50600083856120b69190613df4565b9050809150509392505050565b60008060006120d0612608565b915091506120e781836120ee90919063ffffffff16565b9250505090565b600061213083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128bb565b905092915050565b60008082846121479190614179565b90508381101561218c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612183906141f9565b60405180910390fd5b8091505092915050565b6000806000806000806000806000806121b78b60125460135460145461291e565b92509250925060006121cb8c8585856129f2565b905060006121d76120c3565b90506000806121e78f8885612a35565b9150915060006121fa8383898988612a76565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b600061226683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205f565b905092915050565b6000601454031561228b5760145460178190555060006014819055505b565b60006122976120c3565b905060008060008060008060006122ad89612196565b965096509650965096509650965060006122d08984612aef90919063ffffffff16565b90506122df8c8c8c8b8b612b69565b6122e9828d612d2f565b6122f68682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161235391906137b9565b60405180910390a3505050505050505050505050565b60006123736120c3565b9050600080600080600080600061238989612196565b965096509650965096509650965060006123ac8984612aef90919063ffffffff16565b90506123bb8c8c878b8b613097565b6123c5828d612d2f565b6123d28682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161242f91906137b9565b60405180910390a3505050505050505050505050565b600061244f6120c3565b9050600080600080600080600061246589612196565b965096509650965096509650965060006124888984612aef90919063ffffffff16565b90506124968c8c8a8a61325d565b6124a0828d612d2f565b6124ad8682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161250a91906137b9565b60405180910390a3505050505050505050505050565b600061252a6120c3565b9050600080600080600080600061254089612196565b965096509650965096509650965060006125638984612aef90919063ffffffff16565b90506125738c8c8c8b898c61338d565b61257d828d612d2f565b61258a8682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516125e791906137b9565b60405180910390a3505050505050505050505050565b601754601481905550565b6000806000600e5490506000600d54905060005b60058054905081101561287e5782600160006005848154811061264257612641613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061273057508160026000600584815481106126c8576126c7613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561274757600e54600d54945094505050506128b7565b6127d7600160006005848154811061276257612761613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461222490919063ffffffff16565b925061286960026000600584815481106127f4576127f3613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361222490919063ffffffff16565b9150808061287690613e57565b91505061261c565b50612896600d54600e546120ee90919063ffffffff16565b8210156128ae57600e54600d549350935050506128b7565b81819350935050505b9091565b60008083118290612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f99190613679565b60405180910390fd5b50600083856129119190614248565b9050809150509392505050565b60008060008061295e6064612950600c546129428b8d612aef90919063ffffffff16565b6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b9050600061299c606461298e600c546129808b8e612aef90919063ffffffff16565b6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b905060006129da60646129cc600c546129be8b8f612aef90919063ffffffff16565b6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b90508282829550955095505050509450945094915050565b6000612a2b82612a1d85612a0f888a61222490919063ffffffff16565b61222490919063ffffffff16565b61222490919063ffffffff16565b9050949350505050565b6000806000612a4d8487612aef90919063ffffffff16565b90506000612a648587612aef90919063ffffffff16565b90508181935093505050935093915050565b600080612a8c8386612aef90919063ffffffff16565b90506000612aa38486612aef90919063ffffffff16565b90506000612ade82612ad085612ac28c8e61222490919063ffffffff16565b61222490919063ffffffff16565b61222490919063ffffffff16565b905080935050505095945050505050565b6000808303612b015760009050612b63565b60008284612b0f9190613c19565b9050828482612b1e9190614248565b14612b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b55906142eb565b60405180910390fd5b809150505b92915050565b612bbb83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c5082600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ce581600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000612d396120c3565b90506000612d508285612aef90919063ffffffff16565b9050612dc68160016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b60016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e9f8460026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b60026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612f8391906137b9565b60405180910390a350505050565b612fb884612faa87600e5461222490919063ffffffff16565b61222490919063ffffffff16565b600e81905550612fd383600f5461213890919063ffffffff16565b600f81905550612fee8260105461213890919063ffffffff16565b6010819055506130098160115461213890919063ffffffff16565b60118190555061302482600d5461222490919063ffffffff16565b600d81905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161308891906137b9565b60405180910390a35050505050565b6130e982600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317e83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061321381600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6132af82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061334481600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6133df84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347483600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350982600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061359e81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613623578082015181840152602081019050613608565b60008484015250505050565b6000601f19601f8301169050919050565b600061364b826135e9565b61365581856135f4565b9350613665818560208601613605565b61366e8161362f565b840191505092915050565b600060208201905081810360008301526136938184613640565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136cb826136a0565b9050919050565b6136db816136c0565b81146136e657600080fd5b50565b6000813590506136f8816136d2565b92915050565b6000819050919050565b613711816136fe565b811461371c57600080fd5b50565b60008135905061372e81613708565b92915050565b6000806040838503121561374b5761374a61369b565b5b6000613759858286016136e9565b925050602061376a8582860161371f565b9150509250929050565b60008115159050919050565b61378981613774565b82525050565b60006020820190506137a46000830184613780565b92915050565b6137b3816136fe565b82525050565b60006020820190506137ce60008301846137aa565b92915050565b6000806000606084860312156137ed576137ec61369b565b5b60006137fb868287016136e9565b935050602061380c868287016136e9565b925050604061381d8682870161371f565b9150509250925092565b60006020828403121561383d5761383c61369b565b5b600061384b8482850161371f565b91505092915050565b600060ff82169050919050565b61386a81613854565b82525050565b60006020820190506138856000830184613861565b92915050565b61389481613774565b811461389f57600080fd5b50565b6000813590506138b18161388b565b92915050565b600080604083850312156138ce576138cd61369b565b5b60006138dc8582860161371f565b92505060206138ed858286016138a2565b9150509250929050565b60006020828403121561390d5761390c61369b565b5b600061391b848285016136e9565b91505092915050565b61392d816136c0565b82525050565b60006020820190506139486000830184613924565b92915050565b600080604083850312156139655761396461369b565b5b6000613973858286016136e9565b9250506020613984858286016136e9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139d557607f821691505b6020821081036139e8576139e761398e565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a4a602a836135f4565b9150613a55826139ee565b604082019050919050565b60006020820190508181036000830152613a7981613a3d565b9050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000613adc602c836135f4565b9150613ae782613a80565b604082019050919050565b60006020820190508181036000830152613b0b81613acf565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000613b48601f836135f4565b9150613b5382613b12565b602082019050919050565b60006020820190508181036000830152613b7781613b3b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613bb46020836135f4565b9150613bbf82613b7e565b602082019050919050565b60006020820190508181036000830152613be381613ba7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c24826136fe565b9150613c2f836136fe565b9250828202613c3d816136fe565b91508282048414831517613c5457613c53613bea565b5b5092915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613c91601b836135f4565b9150613c9c82613c5b565b602082019050919050565b60006020820190508181036000830152613cc081613c84565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d236026836135f4565b9150613d2e82613cc7565b604082019050919050565b60006020820190508181036000830152613d5281613d16565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b6000613d8f601b836135f4565b9150613d9a82613d59565b602082019050919050565b60006020820190508181036000830152613dbe81613d82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613dff826136fe565b9150613e0a836136fe565b9250828203905081811115613e2257613e21613bea565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000613e62826136fe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e9457613e93613bea565b5b600182019050919050565b7f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613efb6026836135f4565b9150613f0682613e9f565b604082019050919050565b60006020820190508181036000830152613f2a81613eee565b9050919050565b7f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f8d6024836135f4565b9150613f9882613f31565b604082019050919050565b60006020820190508181036000830152613fbc81613f80565b9050919050565b7f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061401f6027836135f4565b915061402a82613fc3565b604082019050919050565b6000602082019050818103600083015261404e81614012565b9050919050565b7f544f4b454e32303a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140b16025836135f4565b91506140bc82614055565b604082019050919050565b600060208201905081810360008301526140e0816140a4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141436029836135f4565b915061414e826140e7565b604082019050919050565b6000602082019050818103600083015261417281614136565b9050919050565b6000614184826136fe565b915061418f836136fe565b92508282019050808211156141a7576141a6613bea565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006141e3601b836135f4565b91506141ee826141ad565b602082019050919050565b60006020820190508181036000830152614212816141d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614253826136fe565b915061425e836136fe565b92508261426e5761426d614219565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006142d56021836135f4565b91506142e082614279565b604082019050919050565b60006020820190508181036000830152614304816142c8565b905091905056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122087eb41a93e693b7a5448e2a195047011bdde67f2a820a661042da46a3b2f217164736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000098968000000000000000000000000060af7036ac567b97bdcff869bbdaf78933959e7500000000000000000000000060af7036ac567b97bdcff869bbdaf78933959e7500000000000000000000000000000000000000000000000000000000000000125572616e69756d204d756c7469436861696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003554e4d0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637b7e8bac11610104578063b2bdfa7b116100a2578063dd62ed3e11610071578063dd62ed3e14610573578063f2cc0c18146105a3578063f2fde38b146105bf578063f84354f1146105db576101da565b8063b2bdfa7b146104e9578063b586242814610507578063cba0e99614610525578063d608b3b214610555576101da565b806395d89b41116100de57806395d89b411461044d578063a457c2d71461046b578063a9059cbb1461049b578063ae9dd5e0146104cb576101da565b80637b7e8bac146103f55780638da5cb5b146104135780639012c4a814610431576101da565b8063395093511161017c578063457bdf6c1161014b578063457bdf6c1461038157806370a082311461039d578063715018a6146103cd57806377ef7993146103d7576101da565b806339509351146102e75780633bd5d173146103175780633c9f861d146103335780634549b03914610351576101da565b806318160ddd116101b857806318160ddd1461024b57806323b872dd146102695780632d83811914610299578063313ce567146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806313114a9d1461022d575b600080fd5b6101e76105f7565b6040516101f49190613679565b60405180910390f35b61021760048036038101906102129190613734565b610689565b604051610224919061378f565b60405180910390f35b6102356106a7565b60405161024291906137b9565b60405180910390f35b6102536106b1565b60405161026091906137b9565b60405180910390f35b610283600480360381019061027e91906137d4565b6106bb565b604051610290919061378f565b60405180910390f35b6102b360048036038101906102ae9190613827565b610794565b6040516102c091906137b9565b60405180910390f35b6102d1610802565b6040516102de9190613870565b60405180910390f35b61030160048036038101906102fc9190613734565b61080c565b60405161030e919061378f565b60405180910390f35b610331600480360381019061032c9190613827565b6108bf565b005b61033b610a3b565b60405161034891906137b9565b60405180910390f35b61036b600480360381019061036691906138b7565b610a45565b60405161037891906137b9565b60405180910390f35b61039b600480360381019061039691906138f7565b610acb565b005b6103b760048036038101906103b291906138f7565b610ba4565b6040516103c491906137b9565b60405180910390f35b6103d5610c8f565b005b6103df610de2565b6040516103ec91906137b9565b60405180910390f35b6103fd610de8565b60405161040a9190613933565b60405180910390f35b61041b610e0e565b6040516104289190613933565b60405180910390f35b61044b60048036038101906104469190613827565b610e37565b005b610455610ef8565b6040516104629190613679565b60405180910390f35b61048560048036038101906104809190613734565b610f8a565b604051610492919061378f565b60405180910390f35b6104b560048036038101906104b09190613734565b611057565b6040516104c2919061378f565b60405180910390f35b6104d3611075565b6040516104e091906137b9565b60405180910390f35b6104f161107b565b6040516104fe9190613933565b60405180910390f35b61050f61109f565b60405161051c91906137b9565b60405180910390f35b61053f600480360381019061053a91906138f7565b6110a5565b60405161054c919061378f565b60405180910390f35b61055d6110fb565b60405161056a91906137b9565b60405180910390f35b61058d6004803603810190610588919061394e565b611105565b60405161059a91906137b9565b60405180910390f35b6105bd60048036038101906105b891906138f7565b61118c565b005b6105d960048036038101906105d491906138f7565b611440565b005b6105f560048036038101906105f091906138f7565b611601565b005b606060068054610606906139bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610632906139bd565b801561067f5780601f106106545761010080835404028352916020019161067f565b820191906000526020600020905b81548152906001019060200180831161066257829003601f168201915b5050505050905090565b600061069d61069661194f565b8484611957565b6001905092915050565b6000600f54905090565b6000600d54905090565b60006106c8848484611b20565b610789846106d461194f565b610784856040518060600160405280602a8152602001614333602a9139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061073a61194f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205f9092919063ffffffff16565b611957565b600190509392505050565b6000600e548211156107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290613a60565b60405180910390fd5b60006107e56120c3565b90506107fa81846120ee90919063ffffffff16565b915050919050565b6000600854905090565b60006108b561081961194f565b846108b0856003600061082a61194f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b611957565b6001905092915050565b60006108c961194f565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90613af2565b60405180910390fd5b600061096383612196565b50505050505090506109bd81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a1581600e5461222490919063ffffffff16565b600e81905550610a3083600f5461213890919063ffffffff16565b600f81905550505050565b6000601054905090565b6000600d54831115610a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8390613b5e565b60405180910390fd5b81610aad576000610a9c84612196565b505050505050905080915050610ac5565b6000610ab884612196565b5050505050915050809150505b92915050565b610ad361194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5790613bca565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c3f57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610c8a565b610c87600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610794565b90505b919050565b610c9761194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613bca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60135481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e3f61194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec390613bca565b60405180910390fd5b600a8110610ed957600080fd5b606481610ee69190613c19565b60148190555060145460178190555050565b606060078054610f07906139bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f33906139bd565b8015610f805780601f10610f5557610100808354040283529160200191610f80565b820191906000526020600020905b815481529060010190602001808311610f6357829003601f168201915b5050505050905090565b600061104d610f9761194f565b846110488560405180606001604052806027815260200161430c6027913960036000610fc161194f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205f9092919063ffffffff16565b611957565b6001905092915050565b600061106b61106461194f565b8484611b20565b6001905092915050565b60145481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601154905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61119461194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613bca565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590613ca7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113825761133e600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610794565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61144861194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90613bca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b90613d39565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61160961194f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90613bca565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990613da5565b60405180910390fd5b60005b60058054905081101561194b578173ffffffffffffffffffffffffffffffffffffffff166005828154811061175d5761175c613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361193857600560016005805490506117b79190613df4565b815481106117c8576117c7613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061180757611806613dc5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806118fe576118fd613e28565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561194b565b808061194390613e57565b915050611725565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bd90613f11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613fa3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b1391906137b9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690614035565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf5906140c7565b60405180910390fd5b60008111611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890614159565b60405180910390fd5b6000600190508373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611cf057508273ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80611d445750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d4e57600090505b80611d5c57611d5b61226e565b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dff5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1457611e0f84848461228d565b61204b565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eb75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ecc57611ec7848484612369565b61204a565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f705750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8557611f80848484612445565b612049565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120275750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561203c57612037848484612520565b612048565b612047848484612445565b5b5b5b5b80612059576120586125fd565b5b50505050565b60008383111582906120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e9190613679565b60405180910390fd5b50600083856120b69190613df4565b9050809150509392505050565b60008060006120d0612608565b915091506120e781836120ee90919063ffffffff16565b9250505090565b600061213083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128bb565b905092915050565b60008082846121479190614179565b90508381101561218c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612183906141f9565b60405180910390fd5b8091505092915050565b6000806000806000806000806000806121b78b60125460135460145461291e565b92509250925060006121cb8c8585856129f2565b905060006121d76120c3565b90506000806121e78f8885612a35565b9150915060006121fa8383898988612a76565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b600061226683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205f565b905092915050565b6000601454031561228b5760145460178190555060006014819055505b565b60006122976120c3565b905060008060008060008060006122ad89612196565b965096509650965096509650965060006122d08984612aef90919063ffffffff16565b90506122df8c8c8c8b8b612b69565b6122e9828d612d2f565b6122f68682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161235391906137b9565b60405180910390a3505050505050505050505050565b60006123736120c3565b9050600080600080600080600061238989612196565b965096509650965096509650965060006123ac8984612aef90919063ffffffff16565b90506123bb8c8c878b8b613097565b6123c5828d612d2f565b6123d28682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161242f91906137b9565b60405180910390a3505050505050505050505050565b600061244f6120c3565b9050600080600080600080600061246589612196565b965096509650965096509650965060006124888984612aef90919063ffffffff16565b90506124968c8c8a8a61325d565b6124a0828d612d2f565b6124ad8682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161250a91906137b9565b60405180910390a3505050505050505050505050565b600061252a6120c3565b9050600080600080600080600061254089612196565b965096509650965096509650965060006125638984612aef90919063ffffffff16565b90506125738c8c8c8b898c61338d565b61257d828d612d2f565b61258a8682868686612f91565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516125e791906137b9565b60405180910390a3505050505050505050505050565b601754601481905550565b6000806000600e5490506000600d54905060005b60058054905081101561287e5782600160006005848154811061264257612641613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061273057508160026000600584815481106126c8576126c7613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561274757600e54600d54945094505050506128b7565b6127d7600160006005848154811061276257612761613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461222490919063ffffffff16565b925061286960026000600584815481106127f4576127f3613dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361222490919063ffffffff16565b9150808061287690613e57565b91505061261c565b50612896600d54600e546120ee90919063ffffffff16565b8210156128ae57600e54600d549350935050506128b7565b81819350935050505b9091565b60008083118290612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f99190613679565b60405180910390fd5b50600083856129119190614248565b9050809150509392505050565b60008060008061295e6064612950600c546129428b8d612aef90919063ffffffff16565b6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b9050600061299c606461298e600c546129808b8e612aef90919063ffffffff16565b6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b905060006129da60646129cc600c546129be8b8f612aef90919063ffffffff16565b6120ee90919063ffffffff16565b6120ee90919063ffffffff16565b90508282829550955095505050509450945094915050565b6000612a2b82612a1d85612a0f888a61222490919063ffffffff16565b61222490919063ffffffff16565b61222490919063ffffffff16565b9050949350505050565b6000806000612a4d8487612aef90919063ffffffff16565b90506000612a648587612aef90919063ffffffff16565b90508181935093505050935093915050565b600080612a8c8386612aef90919063ffffffff16565b90506000612aa38486612aef90919063ffffffff16565b90506000612ade82612ad085612ac28c8e61222490919063ffffffff16565b61222490919063ffffffff16565b61222490919063ffffffff16565b905080935050505095945050505050565b6000808303612b015760009050612b63565b60008284612b0f9190613c19565b9050828482612b1e9190614248565b14612b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b55906142eb565b60405180910390fd5b809150505b92915050565b612bbb83600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c5082600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ce581600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000612d396120c3565b90506000612d508285612aef90919063ffffffff16565b9050612dc68160016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b60016000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e9f8460026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b60026000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612f8391906137b9565b60405180910390a350505050565b612fb884612faa87600e5461222490919063ffffffff16565b61222490919063ffffffff16565b600e81905550612fd383600f5461213890919063ffffffff16565b600f81905550612fee8260105461213890919063ffffffff16565b6010819055506130098160115461213890919063ffffffff16565b60118190555061302482600d5461222490919063ffffffff16565b600d81905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161308891906137b9565b60405180910390a35050505050565b6130e982600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317e83600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061321381600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6132af82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061334481600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6133df84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347483600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350982600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061359e81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213890919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613623578082015181840152602081019050613608565b60008484015250505050565b6000601f19601f8301169050919050565b600061364b826135e9565b61365581856135f4565b9350613665818560208601613605565b61366e8161362f565b840191505092915050565b600060208201905081810360008301526136938184613640565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136cb826136a0565b9050919050565b6136db816136c0565b81146136e657600080fd5b50565b6000813590506136f8816136d2565b92915050565b6000819050919050565b613711816136fe565b811461371c57600080fd5b50565b60008135905061372e81613708565b92915050565b6000806040838503121561374b5761374a61369b565b5b6000613759858286016136e9565b925050602061376a8582860161371f565b9150509250929050565b60008115159050919050565b61378981613774565b82525050565b60006020820190506137a46000830184613780565b92915050565b6137b3816136fe565b82525050565b60006020820190506137ce60008301846137aa565b92915050565b6000806000606084860312156137ed576137ec61369b565b5b60006137fb868287016136e9565b935050602061380c868287016136e9565b925050604061381d8682870161371f565b9150509250925092565b60006020828403121561383d5761383c61369b565b5b600061384b8482850161371f565b91505092915050565b600060ff82169050919050565b61386a81613854565b82525050565b60006020820190506138856000830184613861565b92915050565b61389481613774565b811461389f57600080fd5b50565b6000813590506138b18161388b565b92915050565b600080604083850312156138ce576138cd61369b565b5b60006138dc8582860161371f565b92505060206138ed858286016138a2565b9150509250929050565b60006020828403121561390d5761390c61369b565b5b600061391b848285016136e9565b91505092915050565b61392d816136c0565b82525050565b60006020820190506139486000830184613924565b92915050565b600080604083850312156139655761396461369b565b5b6000613973858286016136e9565b9250506020613984858286016136e9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139d557607f821691505b6020821081036139e8576139e761398e565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a4a602a836135f4565b9150613a55826139ee565b604082019050919050565b60006020820190508181036000830152613a7981613a3d565b9050919050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000613adc602c836135f4565b9150613ae782613a80565b604082019050919050565b60006020820190508181036000830152613b0b81613acf565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000613b48601f836135f4565b9150613b5382613b12565b602082019050919050565b60006020820190508181036000830152613b7781613b3b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613bb46020836135f4565b9150613bbf82613b7e565b602082019050919050565b60006020820190508181036000830152613be381613ba7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c24826136fe565b9150613c2f836136fe565b9250828202613c3d816136fe565b91508282048414831517613c5457613c53613bea565b5b5092915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613c91601b836135f4565b9150613c9c82613c5b565b602082019050919050565b60006020820190508181036000830152613cc081613c84565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d236026836135f4565b9150613d2e82613cc7565b604082019050919050565b60006020820190508181036000830152613d5281613d16565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b6000613d8f601b836135f4565b9150613d9a82613d59565b602082019050919050565b60006020820190508181036000830152613dbe81613d82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613dff826136fe565b9150613e0a836136fe565b9250828203905081811115613e2257613e21613bea565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000613e62826136fe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e9457613e93613bea565b5b600182019050919050565b7f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613efb6026836135f4565b9150613f0682613e9f565b604082019050919050565b60006020820190508181036000830152613f2a81613eee565b9050919050565b7f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f8d6024836135f4565b9150613f9882613f31565b604082019050919050565b60006020820190508181036000830152613fbc81613f80565b9050919050565b7f544f4b454e32303a207472616e736665722066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061401f6027836135f4565b915061402a82613fc3565b604082019050919050565b6000602082019050818103600083015261404e81614012565b9050919050565b7f544f4b454e32303a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140b16025836135f4565b91506140bc82614055565b604082019050919050565b600060208201905081810360008301526140e0816140a4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006141436029836135f4565b915061414e826140e7565b604082019050919050565b6000602082019050818103600083015261417281614136565b9050919050565b6000614184826136fe565b915061418f836136fe565b92508282019050808211156141a7576141a6613bea565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006141e3601b836135f4565b91506141ee826141ad565b602082019050919050565b60006020820190508181036000830152614212816141d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614253826136fe565b915061425e836136fe565b92508261426e5761426d614219565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006142d56021836135f4565b91506142e082614279565b604082019050919050565b60006020820190508181036000830152614304816142c8565b905091905056fe544f4b454e32303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f544f4b454e32303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122087eb41a93e693b7a5448e2a195047011bdde67f2a820a661042da46a3b2f217164736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000098968000000000000000000000000060af7036ac567b97bdcff869bbdaf78933959e7500000000000000000000000060af7036ac567b97bdcff869bbdaf78933959e7500000000000000000000000000000000000000000000000000000000000000125572616e69756d204d756c7469436861696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003554e4d0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Uranium MultiChain
Arg [1] : _symbol (string): UNM
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 10000000
Arg [4] : _FeeAddress (address): 0x60af7036AC567B97bdcFF869bbDAF78933959e75
Arg [5] : tokenOwner (address): 0x60af7036AC567B97bdcFF869bbDAF78933959e75

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000989680
Arg [4] : 00000000000000000000000060af7036ac567b97bdcff869bbdaf78933959e75
Arg [5] : 00000000000000000000000060af7036ac567b97bdcff869bbdaf78933959e75
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [7] : 5572616e69756d204d756c7469436861696e0000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [9] : 554e4d0000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

16708:15800:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18544:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19463:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20584:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18828:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19632:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21717:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18730:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19955:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20885:378;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20683:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21271:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22804:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18931:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16154:148;;;:::i;:::-;;17565:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17193:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15512:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22924:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18635:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20181:271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19137:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17599:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15315:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17531:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20460:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20783:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19312:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21978:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16457:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22318:478;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18544:83;18581:13;18614:5;18607:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18544:83;:::o;19463:161::-;19538:4;19555:39;19564:12;:10;:12::i;:::-;19578:7;19587:6;19555:8;:39::i;:::-;19612:4;19605:11;;19463:161;;;;:::o;20584:87::-;20626:7;20653:10;;20646:17;;20584:87;:::o;18828:95::-;18881:7;18908;;18901:14;;18828:95;:::o;19632:315::-;19730:4;19747:36;19757:6;19765:9;19776:6;19747:9;:36::i;:::-;19794:123;19803:6;19811:12;:10;:12::i;:::-;19825:91;19863:6;19825:91;;;;;;;;;;;;;;;;;:11;:19;19837:6;19825:19;;;;;;;;;;;;;;;:33;19845:12;:10;:12::i;:::-;19825:33;;;;;;;;;;;;;;;;:37;;:91;;;;;:::i;:::-;19794:8;:123::i;:::-;19935:4;19928:11;;19632:315;;;;;:::o;21717:253::-;21783:7;21822;;21811;:18;;21803:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21887:19;21910:10;:8;:10::i;:::-;21887:33;;21938:24;21950:11;21938:7;:11;;:24;;;;:::i;:::-;21931:31;;;21717:253;;;:::o;18730:90::-;18771:5;18802:9;;18789:23;;18730:90;:::o;19955:218::-;20043:4;20060:83;20069:12;:10;:12::i;:::-;20083:7;20092:50;20131:10;20092:11;:25;20104:12;:10;:12::i;:::-;20092:25;;;;;;;;;;;;;;;:34;20118:7;20092:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20060:8;:83::i;:::-;20161:4;20154:11;;19955:218;;;;:::o;20885:378::-;20937:14;20954:12;:10;:12::i;:::-;20937:29;;20986:11;:19;20998:6;20986:19;;;;;;;;;;;;;;;;;;;;;;;;;20985:20;20977:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21066:15;21091:19;21102:7;21091:10;:19::i;:::-;21065:45;;;;;;;;21139:28;21159:7;21139;:15;21147:6;21139:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21121:7;:15;21129:6;21121:15;;;;;;;;;;;;;;;:46;;;;21188:20;21200:7;21188;;:11;;:20;;;;:::i;:::-;21178:7;:30;;;;21232:23;21247:7;21232:10;;:14;;:23;;;;:::i;:::-;21219:10;:36;;;;20926:337;;20885:378;:::o;20683:88::-;20725:7;20752:11;;20745:18;;20683:88;:::o;21271:438::-;21361:7;21400;;21389;:18;;21381:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21459:17;21454:248;;21494:15;21519:19;21530:7;21519:10;:19::i;:::-;21493:45;;;;;;;;21560:7;21553:14;;;;;21454:248;21602:23;21634:19;21645:7;21634:10;:19::i;:::-;21600:53;;;;;;;;21675:15;21668:22;;;21271:438;;;;;:::o;22804:106::-;15734:12;:10;:12::i;:::-;15724:22;;:6;;;;;;;;;;:22;;;15716:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22895:7:::1;22882:10;;:20;;;;;;;;;;;;;;;;;;22804:106:::0;:::o;18931:198::-;18997:7;19021:11;:20;19033:7;19021:20;;;;;;;;;;;;;;;;;;;;;;;;;19017:49;;;19050:7;:16;19058:7;19050:16;;;;;;;;;;;;;;;;19043:23;;;;19017:49;19084:37;19104:7;:16;19112:7;19104:16;;;;;;;;;;;;;;;;19084:19;:37::i;:::-;19077:44;;18931:198;;;;:::o;16154:148::-;15734:12;:10;:12::i;:::-;15724:22;;:6;;;;;;;;;;:22;;;15716:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16261:1:::1;16224:40;;16245:6;::::0;::::1;;;;;;;;16224:40;;;;;;;;;;;;16292:1;16275:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16154:148::o:0;17565:27::-;;;;:::o;17193:25::-;;;;;;;;;;;;;:::o;15512:79::-;15550:7;15577:6;;;;;;;;;;;15570:13;;15512:79;:::o;22924:186::-;15734:12;:10;:12::i;:::-;15724:22;;:6;;;;;;;;;;:22;;;15716:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23015:2:::1;23001:11;:16;22993:25;;;::::0;::::1;;23057:3;23044:11;:16;;;;:::i;:::-;23029:12;:31;;;;23090:12;;23071:16;:31;;;;22924:186:::0;:::o;18635:87::-;18674:13;18707:7;18700:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18635:87;:::o;20181:271::-;20274:4;20291:131;20300:12;:10;:12::i;:::-;20314:7;20323:98;20362:15;20323:98;;;;;;;;;;;;;;;;;:11;:25;20335:12;:10;:12::i;:::-;20323:25;;;;;;;;;;;;;;;:34;20349:7;20323:34;;;;;;;;;;;;;;;;:38;;:98;;;;;:::i;:::-;20291:8;:131::i;:::-;20440:4;20433:11;;20181:271;;;;:::o;19137:167::-;19215:4;19232:42;19242:12;:10;:12::i;:::-;19256:9;19267:6;19232:9;:42::i;:::-;19292:4;19285:11;;19137:167;;;;:::o;17599:27::-;;;;:::o;15315:21::-;;;;;;;;;;;;:::o;17531:27::-;;;;:::o;20460:110::-;20518:4;20542:11;:20;20554:7;20542:20;;;;;;;;;;;;;;;;;;;;;;;;;20535:27;;20460:110;;;:::o;20783:94::-;20828:7;20855:14;;20848:21;;20783:94;:::o;19312:143::-;19393:7;19420:11;:18;19432:5;19420:18;;;;;;;;;;;;;;;:27;19439:7;19420:27;;;;;;;;;;;;;;;;19413:34;;19312:143;;;;:::o;21978:332::-;15734:12;:10;:12::i;:::-;15724:22;;:6;;;;;;;;;;:22;;;15716:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22060:11:::1;:20;22072:7;22060:20;;;;;;;;;;;;;;;;;;;;;;;;;22059:21;22051:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22145:1;22126:7;:16;22134:7;22126:16;;;;;;;;;;;;;;;;:20;22123:108;;;22182:37;22202:7;:16;22210:7;22202:16;;;;;;;;;;;;;;;;22182:19;:37::i;:::-;22163:7;:16;22171:7;22163:16;;;;;;;;;;;;;;;:56;;;;22123:108;22264:4;22241:11;:20;22253:7;22241:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22279:9;22294:7;22279:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21978:332:::0;:::o;16457:244::-;15734:12;:10;:12::i;:::-;15724:22;;:6;;;;;;;;;;:22;;;15716:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16566:1:::1;16546:22;;:8;:22;;::::0;16538:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16656:8;16627:38;;16648:6;::::0;::::1;;;;;;;;16627:38;;;;;;;;;;;;16685:8;16676:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16457:244:::0;:::o;22318:478::-;15734:12;:10;:12::i;:::-;15724:22;;:6;;;;;;;;;;:22;;;15716:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22399:11:::1;:20;22411:7;22399:20;;;;;;;;;;;;;;;;;;;;;;;;;22391:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22467:9;22462:327;22486:9;:16;;;;22482:1;:20;22462:327;;;22544:7;22528:23;;:9;22538:1;22528:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;22524:254:::1;;22587:9;22616:1;22597:9;:16;;;;:20;;;;:::i;:::-;22587:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22572:9;22582:1;22572:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22656:1;22637:7;:16;22645:7;22637:16;;;;;;;;;;;;;;;:20;;;;22699:5;22676:11;:20;22688:7;22676:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22723:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;22757:5;;22524:254;22504:3;;;;;:::i;:::-;;;;22462:327;;;;22318:478:::0;:::o;238:115::-;291:15;334:10;319:26;;238:115;:::o;23130:341::-;23240:1;23223:19;;:5;:19;;;23215:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23323:1;23304:21;;:7;:21;;;23296:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23409:6;23379:11;:18;23391:5;23379:18;;;;;;;;;;;;;;;:27;23398:7;23379:27;;;;;;;;;;;;;;;:36;;;;23447:7;23431:32;;23440:5;23431:32;;;23456:6;23431:32;;;;;;:::i;:::-;;;;;;;;23130:341;;;:::o;23479:1290::-;23594:1;23576:20;;:6;:20;;;23568:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;23680:1;23659:23;;:9;:23;;;23651:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23752:1;23743:6;:10;23735:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23901:12;23916:4;23901:19;;23949:6;23935:20;;:10;;;;;;;;;;;:20;;;:47;;;;23973:9;23959:23;;:10;;;;;;;;;;;:23;;;23935:47;:73;;;;23986:11;:22;23998:9;23986:22;;;;;;;;;;;;;;;;;;;;;;;;;23935:73;23931:121;;;24035:5;24025:15;;23931:121;24069:7;24064:28;;24078:14;:12;:14::i;:::-;24064:28;24127:11;:19;24139:6;24127:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;24151:11;:22;24163:9;24151:22;;;;;;;;;;;;;;;;;;;;;;;;;24150:23;24127:46;24123:597;;;24190:48;24212:6;24220:9;24231:6;24190:21;:48::i;:::-;24123:597;;;24261:11;:19;24273:6;24261:19;;;;;;;;;;;;;;;;;;;;;;;;;24260:20;:46;;;;;24284:11;:22;24296:9;24284:22;;;;;;;;;;;;;;;;;;;;;;;;;24260:46;24256:464;;;24323:46;24343:6;24351:9;24362:6;24323:19;:46::i;:::-;24256:464;;;24392:11;:19;24404:6;24392:19;;;;;;;;;;;;;;;;;;;;;;;;;24391:20;:47;;;;;24416:11;:22;24428:9;24416:22;;;;;;;;;;;;;;;;;;;;;;;;;24415:23;24391:47;24387:333;;;24455:44;24473:6;24481:9;24492:6;24455:17;:44::i;:::-;24387:333;;;24521:11;:19;24533:6;24521:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;24544:11;:22;24556:9;24544:22;;;;;;;;;;;;;;;;;;;;;;;;;24521:45;24517:203;;;24583:48;24605:6;24613:9;24624:6;24583:21;:48::i;:::-;24517:203;;;24664:44;24682:6;24690:9;24701:6;24664:17;:44::i;:::-;24517:203;24387:333;24256:464;24123:597;24737:7;24732:29;;24746:15;:13;:15::i;:::-;24732:29;23557:1212;23479:1290;;;:::o;5057:192::-;5143:7;5176:1;5171;:6;;5179:12;5163:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5203:9;5219:1;5215;:5;;;;:::i;:::-;5203:17;;5240:1;5233:8;;;5057:192;;;;;:::o;31044:163::-;31085:7;31106:15;31123;31142:19;:17;:19::i;:::-;31105:56;;;;31179:20;31191:7;31179;:11;;:20;;;;:::i;:::-;31172:27;;;;31044:163;:::o;6455:132::-;6513:7;6540:39;6544:1;6547;6540:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6533:46;;6455:132;;;;:::o;4154:181::-;4212:7;4232:9;4248:1;4244;:5;;;;:::i;:::-;4232:17;;4273:1;4268;:6;;4260:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4326:1;4319:8;;;4154:181;;;;:::o;29095:652::-;29154:7;29163;29172;29181;29190;29199;29208;29229:12;29243:13;29258:16;29278:55;29290:7;29299:8;;29309:9;;29320:12;;29278:11;:55::i;:::-;29228:105;;;;;;29344:23;29370:50;29389:7;29398:4;29404:5;29411:8;29370:18;:50::i;:::-;29344:76;;29431:19;29454:10;:8;:10::i;:::-;29431:33;;29476:15;29493:12;29509:39;29521:7;29530:4;29536:11;29509;:39::i;:::-;29475:73;;;;29559:23;29585:64;29605:7;29614:4;29620:5;29627:8;29637:11;29585:19;:64::i;:::-;29559:90;;29668:7;29677:15;29694:4;29700:15;29717:4;29723:5;29730:8;29660:79;;;;;;;;;;;;;;;;;;;;;;29095:652;;;;;;;;;:::o;4618:136::-;4676:7;4703:43;4707:1;4710;4703:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4696:50;;4618:136;;;;:::o;32150:158::-;32212:1;32196:12;;:17;32193:29;32215:7;32193:29;32261:12;;32242:16;:31;;;;32299:1;32284:12;:16;;;;32150:158;:::o;26654:606::-;26756:19;26779:10;:8;:10::i;:::-;26756:33;;26801:15;26818:23;26843:12;26857:23;26882:12;26896:13;26911:16;26931:19;26942:7;26931:10;:19::i;:::-;26800:150;;;;;;;;;;;;;;26961:13;26978:22;26988:11;26978:5;:9;;:22;;;;:::i;:::-;26961:39;;27011:80;27038:6;27046:9;27057:7;27066;27075:15;27011:26;:80::i;:::-;27102:32;27117:8;27127:6;27102:14;:32::i;:::-;27145:47;27157:4;27163:5;27170:4;27176:5;27183:8;27145:11;:47::i;:::-;27225:9;27208:44;;27217:6;27208:44;;;27236:15;27208:44;;;;;;:::i;:::-;;;;;;;;26745:515;;;;;;;;;26654:606;;;:::o;25647:622::-;25747:19;25770:10;:8;:10::i;:::-;25747:33;;25792:15;25809:23;25834:12;25848:23;25873:12;25887:13;25902:16;25922:19;25933:7;25922:10;:19::i;:::-;25791:150;;;;;;;;;;;;;;25952:13;25969:22;25979:11;25969:5;:9;;:22;;;;:::i;:::-;25952:39;;26002:90;26031:6;26039:9;26050:15;26067:7;26076:15;26002:28;:90::i;:::-;26111:32;26126:8;26136:6;26111:14;:32::i;:::-;26154:47;26166:4;26172:5;26179:4;26185:5;26192:8;26154:11;:47::i;:::-;26234:9;26217:44;;26226:6;26217:44;;;26245:15;26217:44;;;;;;:::i;:::-;;;;;;;;25736:533;;;;;;;;;25647:622;;;:::o;24777:591::-;24875:19;24898:10;:8;:10::i;:::-;24875:33;;24920:15;24937:23;24962:12;24976:23;25001:12;25015:13;25030:16;25050:19;25061:7;25050:10;:19::i;:::-;24919:150;;;;;;;;;;;;;;25080:13;25097:22;25107:11;25097:5;:9;;:22;;;;:::i;:::-;25080:39;;25130:69;25155:6;25163:9;25174:7;25183:15;25130:24;:69::i;:::-;25210:32;25225:8;25235:6;25210:14;:32::i;:::-;25253:47;25265:4;25271:5;25278:4;25284:5;25291:8;25253:11;:47::i;:::-;25333:9;25316:44;;25325:6;25316:44;;;25344:15;25316:44;;;;;;:::i;:::-;;;;;;;;24864:504;;;;;;;;;24777:591;;;:::o;27613:619::-;27715:19;27738:10;:8;:10::i;:::-;27715:33;;27760:15;27777:23;27802:12;27816:23;27841:12;27855:13;27870:16;27890:19;27901:7;27890:10;:19::i;:::-;27759:150;;;;;;;;;;;;;;27920:13;27937:22;27947:11;27937:5;:9;;:22;;;;:::i;:::-;27920:39;;27970:91;27991:6;27999:9;28010:7;28019;28028:15;28045;27970:20;:91::i;:::-;28074:32;28089:8;28099:6;28074:14;:32::i;:::-;28117:47;28129:4;28135:5;28142:4;28148:5;28155:8;28117:11;:47::i;:::-;28197:9;28180:44;;28189:6;28180:44;;;28208:15;28180:44;;;;;;:::i;:::-;;;;;;;;27704:528;;;;;;;;;27613:619;;;:::o;32320:83::-;32379:16;;32364:12;:31;;;;32320:83::o;31215:561::-;31265:7;31274;31294:15;31312:7;;31294:25;;31330:15;31348:7;;31330:25;;31377:9;31372:289;31396:9;:16;;;;31392:1;:20;31372:289;;;31462:7;31438;:21;31446:9;31456:1;31446:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31438:21;;;;;;;;;;;;;;;;:31;:66;;;;31497:7;31473;:21;31481:9;31491:1;31481:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31473:21;;;;;;;;;;;;;;;;:31;31438:66;31434:97;;;31514:7;;31523;;31506:25;;;;;;;;;31434:97;31556:34;31568:7;:21;31576:9;31586:1;31576:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31568:21;;;;;;;;;;;;;;;;31556:7;:11;;:34;;;;:::i;:::-;31546:44;;31615:34;31627:7;:21;31635:9;31645:1;31635:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31627:21;;;;;;;;;;;;;;;;31615:7;:11;;:34;;;;:::i;:::-;31605:44;;31414:3;;;;;:::i;:::-;;;;31372:289;;;;31685:20;31697:7;;31685;;:11;;:20;;;;:::i;:::-;31675:7;:30;31671:61;;;31715:7;;31724;;31707:25;;;;;;;;31671:61;31751:7;31760;31743:25;;;;;;31215:561;;;:::o;7083:278::-;7169:7;7201:1;7197;:5;7204:12;7189:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7228:9;7244:1;7240;:5;;;;:::i;:::-;7228:17;;7352:1;7345:8;;;7083:278;;;;;:::o;29759:427::-;29872:7;29881;29890;29910:12;29925:50;29971:3;29926:39;29952:12;;29927:19;29939:6;29927:7;:11;;:19;;;;:::i;:::-;29926:25;;:39;;;;:::i;:::-;29925:45;;:50;;;;:::i;:::-;29910:65;;29986:13;30002:51;30049:3;30003:40;30030:12;;30004:20;30016:7;30004;:11;;:20;;;;:::i;:::-;30003:26;;:40;;;;:::i;:::-;30002:46;;:51;;;;:::i;:::-;29986:67;;30064:16;30083:54;30133:3;30084:43;30114:12;;30085:23;30097:10;30085:7;:11;;:23;;;;:::i;:::-;30084:29;;:43;;;;:::i;:::-;30083:49;;:54;;;;:::i;:::-;30064:73;;30156:4;30162:5;30169:8;30148:30;;;;;;;;;29759:427;;;;;;;;:::o;30198:191::-;30312:7;30339:42;30372:8;30339:28;30361:5;30339:17;30351:4;30339:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;30332:49;;30198:191;;;;;;:::o;30401:254::-;30496:7;30505;30525:15;30543:24;30555:11;30543:7;:11;;:24;;;;:::i;:::-;30525:42;;30578:12;30593:21;30602:11;30593:4;:8;;:21;;;;:::i;:::-;30578:36;;30633:7;30642:4;30625:22;;;;;;30401:254;;;;;;:::o;30667:369::-;30803:7;30823:13;30839:22;30849:11;30839:5;:9;;:22;;;;:::i;:::-;30823:38;;30872:16;30891:25;30904:11;30891:8;:12;;:25;;;;:::i;:::-;30872:44;;30927:23;30953:42;30986:8;30953:28;30975:5;30953:17;30965:4;30953:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:42;;;;:::i;:::-;30927:68;;31013:15;31006:22;;;;;30667:369;;;;;;;:::o;5508:471::-;5566:7;5816:1;5811;:6;5807:47;;5841:1;5834:8;;;;5807:47;5866:9;5882:1;5878;:5;;;;:::i;:::-;5866:17;;5911:1;5906;5902;:5;;;;:::i;:::-;:10;5894:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5970:1;5963:8;;;5508:471;;;;;:::o;27272:333::-;27439:28;27459:7;27439;:15;27447:6;27439:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27421:7;:15;27429:6;27421:15;;;;;;;;;;;;;;;:46;;;;27496:28;27516:7;27496;:15;27504:6;27496:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27478:7;:15;27486:6;27478:15;;;;;;;;;;;;;;;:46;;;;27556:39;27579:15;27556:7;:18;27564:9;27556:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27535:7;:18;27543:9;27535:18;;;;;;;;;;;;;;;:60;;;;27272:333;;;;;:::o;31784:358::-;31861:19;31883:10;:8;:10::i;:::-;31861:32;;31904:16;31923:25;31936:11;31923:8;:12;;:25;;;;:::i;:::-;31904:44;;31981:33;32005:8;31981:7;:19;31989:10;;;;;;;;;;;31981:19;;;;;;;;;;;;;;;;:23;;:33;;;;:::i;:::-;31959:7;:19;31967:10;;;;;;;;;;;31959:19;;;;;;;;;;;;;;;:55;;;;32047:33;32071:8;32047:7;:19;32055:10;;;;;;;;;;;32047:19;;;;;;;;;;;;;;;;:23;;:33;;;;:::i;:::-;32025:7;:19;32033:10;;;;;;;;;;;32025:19;;;;;;;;;;;;;;;:55;;;;32113:10;;;;;;;;;;;32096:38;;32105:6;32096:38;;;32125:8;32096:38;;;;;;:::i;:::-;;;;;;;;31850:292;;31784:358;;:::o;28675:406::-;28801:28;28823:5;28801:17;28813:4;28801:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;28791:7;:38;;;;28853:20;28868:4;28853:10;;:14;;:20;;;;:::i;:::-;28840:10;:33;;;;28898:22;28914:5;28898:11;;:15;;:22;;;;:::i;:::-;28884:11;:36;;;;28948:28;28967:8;28948:14;;:18;;:28;;;;:::i;:::-;28931:14;:45;;;;28997:18;29009:5;28997:7;;:11;;:18;;;;:::i;:::-;28987:7;:28;;;;29063:1;29031:42;;29048:4;29031:42;;;29067:5;29031:42;;;;;;:::i;:::-;;;;;;;;28675:406;;;;;:::o;26281:359::-;26458:28;26478:7;26458;:15;26466:6;26458:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26440:7;:15;26448:6;26440:15;;;;;;;;;;;;;;;:46;;;;26518:39;26541:15;26518:7;:18;26526:9;26518:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26497:7;:18;26505:9;26497:18;;;;;;;;;;;;;;;:60;;;;26589:39;26612:15;26589:7;:18;26597:9;26589:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26568:7;:18;26576:9;26568:18;;;;;;;;;;;;;;;:60;;;;26281:359;;;;;:::o;25380:255::-;25528:28;25548:7;25528;:15;25536:6;25528:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;25510:7;:15;25518:6;25510:15;;;;;;;;;;;;;;;:46;;;;25588:39;25611:15;25588:7;:18;25596:9;25588:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;25567:7;:18;25575:9;25567:18;;;;;;;;;;;;;;;:60;;;;25380:255;;;;:::o;28244:423::-;28430:28;28450:7;28430;:15;28438:6;28430:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28412:7;:15;28420:6;28412:15;;;;;;;;;;;;;;;:46;;;;28487:28;28507:7;28487;:15;28495:6;28487:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28469:7;:15;28477:6;28469:15;;;;;;;;;;;;;;;:46;;;;28547:39;28570:15;28547:7;:18;28555:9;28547:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28526:7;:18;28534:9;28526:18;;;;;;;;;;;;;;;:60;;;;28618:39;28641:15;28618:7;:18;28626:9;28618:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28597:7;:18;28605:9;28597:18;;;;;;;;;;;;;;;:60;;;;28244:423;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:180::-;7138:77;7135:1;7128:88;7235:4;7232:1;7225:15;7259:4;7256:1;7249:15;7276:320;7320:6;7357:1;7351:4;7347:12;7337:22;;7404:1;7398:4;7394:12;7425:18;7415:81;;7481:4;7473:6;7469:17;7459:27;;7415:81;7543:2;7535:6;7532:14;7512:18;7509:38;7506:84;;7562:18;;:::i;:::-;7506:84;7327:269;7276:320;;;:::o;7602:229::-;7742:34;7738:1;7730:6;7726:14;7719:58;7811:12;7806:2;7798:6;7794:15;7787:37;7602:229;:::o;7837:366::-;7979:3;8000:67;8064:2;8059:3;8000:67;:::i;:::-;7993:74;;8076:93;8165:3;8076:93;:::i;:::-;8194:2;8189:3;8185:12;8178:19;;7837:366;;;:::o;8209:419::-;8375:4;8413:2;8402:9;8398:18;8390:26;;8462:9;8456:4;8452:20;8448:1;8437:9;8433:17;8426:47;8490:131;8616:4;8490:131;:::i;:::-;8482:139;;8209:419;;;:::o;8634:231::-;8774:34;8770:1;8762:6;8758:14;8751:58;8843:14;8838:2;8830:6;8826:15;8819:39;8634:231;:::o;8871:366::-;9013:3;9034:67;9098:2;9093:3;9034:67;:::i;:::-;9027:74;;9110:93;9199:3;9110:93;:::i;:::-;9228:2;9223:3;9219:12;9212:19;;8871:366;;;:::o;9243:419::-;9409:4;9447:2;9436:9;9432:18;9424:26;;9496:9;9490:4;9486:20;9482:1;9471:9;9467:17;9460:47;9524:131;9650:4;9524:131;:::i;:::-;9516:139;;9243:419;;;:::o;9668:181::-;9808:33;9804:1;9796:6;9792:14;9785:57;9668:181;:::o;9855:366::-;9997:3;10018:67;10082:2;10077:3;10018:67;:::i;:::-;10011:74;;10094:93;10183:3;10094:93;:::i;:::-;10212:2;10207:3;10203:12;10196:19;;9855:366;;;:::o;10227:419::-;10393:4;10431:2;10420:9;10416:18;10408:26;;10480:9;10474:4;10470:20;10466:1;10455:9;10451:17;10444:47;10508:131;10634:4;10508:131;:::i;:::-;10500:139;;10227:419;;;:::o;10652:182::-;10792:34;10788:1;10780:6;10776:14;10769:58;10652:182;:::o;10840:366::-;10982:3;11003:67;11067:2;11062:3;11003:67;:::i;:::-;10996:74;;11079:93;11168:3;11079:93;:::i;:::-;11197:2;11192:3;11188:12;11181:19;;10840:366;;;:::o;11212:419::-;11378:4;11416:2;11405:9;11401:18;11393:26;;11465:9;11459:4;11455:20;11451:1;11440:9;11436:17;11429:47;11493:131;11619:4;11493:131;:::i;:::-;11485:139;;11212:419;;;:::o;11637:180::-;11685:77;11682:1;11675:88;11782:4;11779:1;11772:15;11806:4;11803:1;11796:15;11823:410;11863:7;11886:20;11904:1;11886:20;:::i;:::-;11881:25;;11920:20;11938:1;11920:20;:::i;:::-;11915:25;;11975:1;11972;11968:9;11997:30;12015:11;11997:30;:::i;:::-;11986:41;;12176:1;12167:7;12163:15;12160:1;12157:22;12137:1;12130:9;12110:83;12087:139;;12206:18;;:::i;:::-;12087:139;11871:362;11823:410;;;;:::o;12239:177::-;12379:29;12375:1;12367:6;12363:14;12356:53;12239:177;:::o;12422:366::-;12564:3;12585:67;12649:2;12644:3;12585:67;:::i;:::-;12578:74;;12661:93;12750:3;12661:93;:::i;:::-;12779:2;12774:3;12770:12;12763:19;;12422:366;;;:::o;12794:419::-;12960:4;12998:2;12987:9;12983:18;12975:26;;13047:9;13041:4;13037:20;13033:1;13022:9;13018:17;13011:47;13075:131;13201:4;13075:131;:::i;:::-;13067:139;;12794:419;;;:::o;13219:225::-;13359:34;13355:1;13347:6;13343:14;13336:58;13428:8;13423:2;13415:6;13411:15;13404:33;13219:225;:::o;13450:366::-;13592:3;13613:67;13677:2;13672:3;13613:67;:::i;:::-;13606:74;;13689:93;13778:3;13689:93;:::i;:::-;13807:2;13802:3;13798:12;13791:19;;13450:366;;;:::o;13822:419::-;13988:4;14026:2;14015:9;14011:18;14003:26;;14075:9;14069:4;14065:20;14061:1;14050:9;14046:17;14039:47;14103:131;14229:4;14103:131;:::i;:::-;14095:139;;13822:419;;;:::o;14247:177::-;14387:29;14383:1;14375:6;14371:14;14364:53;14247:177;:::o;14430:366::-;14572:3;14593:67;14657:2;14652:3;14593:67;:::i;:::-;14586:74;;14669:93;14758:3;14669:93;:::i;:::-;14787:2;14782:3;14778:12;14771:19;;14430:366;;;:::o;14802:419::-;14968:4;15006:2;14995:9;14991:18;14983:26;;15055:9;15049:4;15045:20;15041:1;15030:9;15026:17;15019:47;15083:131;15209:4;15083:131;:::i;:::-;15075:139;;14802:419;;;:::o;15227:180::-;15275:77;15272:1;15265:88;15372:4;15369:1;15362:15;15396:4;15393:1;15386:15;15413:194;15453:4;15473:20;15491:1;15473:20;:::i;:::-;15468:25;;15507:20;15525:1;15507:20;:::i;:::-;15502:25;;15551:1;15548;15544:9;15536:17;;15575:1;15569:4;15566:11;15563:37;;;15580:18;;:::i;:::-;15563:37;15413:194;;;;:::o;15613:180::-;15661:77;15658:1;15651:88;15758:4;15755:1;15748:15;15782:4;15779:1;15772:15;15799:233;15838:3;15861:24;15879:5;15861:24;:::i;:::-;15852:33;;15907:66;15900:5;15897:77;15894:103;;15977:18;;:::i;:::-;15894:103;16024:1;16017:5;16013:13;16006:20;;15799:233;;;:::o;16038:225::-;16178:34;16174:1;16166:6;16162:14;16155:58;16247:8;16242:2;16234:6;16230:15;16223:33;16038:225;:::o;16269:366::-;16411:3;16432:67;16496:2;16491:3;16432:67;:::i;:::-;16425:74;;16508:93;16597:3;16508:93;:::i;:::-;16626:2;16621:3;16617:12;16610:19;;16269:366;;;:::o;16641:419::-;16807:4;16845:2;16834:9;16830:18;16822:26;;16894:9;16888:4;16884:20;16880:1;16869:9;16865:17;16858:47;16922:131;17048:4;16922:131;:::i;:::-;16914:139;;16641:419;;;:::o;17066:223::-;17206:34;17202:1;17194:6;17190:14;17183:58;17275:6;17270:2;17262:6;17258:15;17251:31;17066:223;:::o;17295:366::-;17437:3;17458:67;17522:2;17517:3;17458:67;:::i;:::-;17451:74;;17534:93;17623:3;17534:93;:::i;:::-;17652:2;17647:3;17643:12;17636:19;;17295:366;;;:::o;17667:419::-;17833:4;17871:2;17860:9;17856:18;17848:26;;17920:9;17914:4;17910:20;17906:1;17895:9;17891:17;17884:47;17948:131;18074:4;17948:131;:::i;:::-;17940:139;;17667:419;;;:::o;18092:226::-;18232:34;18228:1;18220:6;18216:14;18209:58;18301:9;18296:2;18288:6;18284:15;18277:34;18092:226;:::o;18324:366::-;18466:3;18487:67;18551:2;18546:3;18487:67;:::i;:::-;18480:74;;18563:93;18652:3;18563:93;:::i;:::-;18681:2;18676:3;18672:12;18665:19;;18324:366;;;:::o;18696:419::-;18862:4;18900:2;18889:9;18885:18;18877:26;;18949:9;18943:4;18939:20;18935:1;18924:9;18920:17;18913:47;18977:131;19103:4;18977:131;:::i;:::-;18969:139;;18696:419;;;:::o;19121:224::-;19261:34;19257:1;19249:6;19245:14;19238:58;19330:7;19325:2;19317:6;19313:15;19306:32;19121:224;:::o;19351:366::-;19493:3;19514:67;19578:2;19573:3;19514:67;:::i;:::-;19507:74;;19590:93;19679:3;19590:93;:::i;:::-;19708:2;19703:3;19699:12;19692:19;;19351:366;;;:::o;19723:419::-;19889:4;19927:2;19916:9;19912:18;19904:26;;19976:9;19970:4;19966:20;19962:1;19951:9;19947:17;19940:47;20004:131;20130:4;20004:131;:::i;:::-;19996:139;;19723:419;;;:::o;20148:228::-;20288:34;20284:1;20276:6;20272:14;20265:58;20357:11;20352:2;20344:6;20340:15;20333:36;20148:228;:::o;20382:366::-;20524:3;20545:67;20609:2;20604:3;20545:67;:::i;:::-;20538:74;;20621:93;20710:3;20621:93;:::i;:::-;20739:2;20734:3;20730:12;20723:19;;20382:366;;;:::o;20754:419::-;20920:4;20958:2;20947:9;20943:18;20935:26;;21007:9;21001:4;20997:20;20993:1;20982:9;20978:17;20971:47;21035:131;21161:4;21035:131;:::i;:::-;21027:139;;20754:419;;;:::o;21179:191::-;21219:3;21238:20;21256:1;21238:20;:::i;:::-;21233:25;;21272:20;21290:1;21272:20;:::i;:::-;21267:25;;21315:1;21312;21308:9;21301:16;;21336:3;21333:1;21330:10;21327:36;;;21343:18;;:::i;:::-;21327:36;21179:191;;;;:::o;21376:177::-;21516:29;21512:1;21504:6;21500:14;21493:53;21376:177;:::o;21559:366::-;21701:3;21722:67;21786:2;21781:3;21722:67;:::i;:::-;21715:74;;21798:93;21887:3;21798:93;:::i;:::-;21916:2;21911:3;21907:12;21900:19;;21559:366;;;:::o;21931:419::-;22097:4;22135:2;22124:9;22120:18;22112:26;;22184:9;22178:4;22174:20;22170:1;22159:9;22155:17;22148:47;22212:131;22338:4;22212:131;:::i;:::-;22204:139;;21931:419;;;:::o;22356:180::-;22404:77;22401:1;22394:88;22501:4;22498:1;22491:15;22525:4;22522:1;22515:15;22542:185;22582:1;22599:20;22617:1;22599:20;:::i;:::-;22594:25;;22633:20;22651:1;22633:20;:::i;:::-;22628:25;;22672:1;22662:35;;22677:18;;:::i;:::-;22662:35;22719:1;22716;22712:9;22707:14;;22542:185;;;;:::o;22733:220::-;22873:34;22869:1;22861:6;22857:14;22850:58;22942:3;22937:2;22929:6;22925:15;22918:28;22733:220;:::o;22959:366::-;23101:3;23122:67;23186:2;23181:3;23122:67;:::i;:::-;23115:74;;23198:93;23287:3;23198:93;:::i;:::-;23316:2;23311:3;23307:12;23300:19;;22959:366;;;:::o;23331:419::-;23497:4;23535:2;23524:9;23520:18;23512:26;;23584:9;23578:4;23574:20;23570:1;23559:9;23555:17;23548:47;23612:131;23738:4;23612:131;:::i;:::-;23604:139;;23331:419;;;:::o

Swarm Source

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