BNB Price: $613.24 (+2.60%)
 

Overview

Max Total Supply

99,000,000AZT

Holders

2,335 (0.00%)

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
15 AZT

Value
$0.00
0x063789e9daceae44996d1326a581611e19c20a77
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A2Z traders, a form of commingled fund, also known as collective investment funds or trust funds, are growing in number and assets.


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
A2ZToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at BscScan.com on 2022-06-09
*/

pragma solidity ^0.6.0;


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

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

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

pragma solidity ^0.6.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
	function totalSupply() external view returns (uint256);

	function balanceOf(address account) external view returns (uint256);

	function transfer(address recipient, uint256 amount) external returns (bool);

	function allowance(address owner, address spender) external view returns (uint256);

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

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

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

	event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/math/SafeMath.sol

pragma solidity ^0.6.0;


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

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

pragma solidity ^0.6.2;

/**
 * @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) {
		// This method relies in extcodesize, which returns 0 for contracts in
		// construction, since the code is only stored at the end of the
		// constructor execution.

		uint256 size;
		// solhint-disable-next-line no-inline-assembly
		assembly { size := extcodesize(account) }
		return size > 0;
	}

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



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

pragma solidity ^0.6.0;
contract Ownable is Context {
	address private _owner;

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

	/**
	 * @dev Initializes the contract setting the deployer as the initial owner.
	 */
	constructor () internal {
		address msgSender = _msgSender();
		_owner = msgSender;
		emit OwnershipTransferred(address(0), msgSender);
	}

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

	/**
	 * @dev Throws if called by any account other than the owner.
	 */
	modifier onlyOwner() {
		require(_owner == _msgSender(), "Ownable: caller is not the owner");
		_;
	}

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

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

pragma solidity ^0.6.0;
contract AccountFrozenBalances {
    using SafeMath for uint256;

    mapping (address => uint256) private frozen_balances;

    function _frozen_add(address _account, uint256 _amount) internal returns (bool) {
        frozen_balances[_account] = frozen_balances[_account].add(_amount);
        return true;
    }

    function _frozen_sub(address _account, uint256 _amount) internal returns (bool) {
        frozen_balances[_account] = frozen_balances[_account].sub(_amount);
        return true;
    }

    function _frozen_balanceOf(address _account) internal view returns (uint) {
        return frozen_balances[_account];
    }
}

pragma solidity ^0.6.0;
contract Meltable {
    mapping (address => bool) private _melters;
    address private _melteradmin;
    address public pendingMelterAdmin;

    modifier onlyMelterAdmin() {
        require (msg.sender == _melteradmin, "caller not a melter admin");
        _;
    }

    modifier onlyMelter() {
        require (_melters[msg.sender] == true, "can't perform melt");
        _;
    }

    modifier onlyPendingMelterAdmin() {
        require(msg.sender == pendingMelterAdmin, "caller not a pending melter admin");
        _;
    }

    event MelterTransferred(address indexed previousMelter, address indexed newMelter);

    constructor () internal {
        _melteradmin = msg.sender;
        _melters[msg.sender] = true;
    }

    function melteradmin() public view returns (address) {
        return _melteradmin;
    }

    function addToMelters(address account) public onlyMelterAdmin {
        _melters[account] = true;
    }

    function removeFromMelters(address account) public onlyMelterAdmin {
        _melters[account] = false;
    }

    function transferMelterAdmin(address newMelter) public onlyMelterAdmin {
        pendingMelterAdmin = newMelter;
    }

    function claimMelterAdmin() public onlyPendingMelterAdmin {
        emit MelterTransferred(_melteradmin, pendingMelterAdmin);
        _melteradmin = pendingMelterAdmin;
        pendingMelterAdmin = address(0);
    }
}

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

pragma solidity ^0.6.0;
contract ERC20 is Context, IERC20, AccountFrozenBalances, Ownable, Meltable {
	using SafeMath for uint256;
	using Address for address;

	mapping (address => uint256) private _balances;

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

	uint256 private _totalSupply;
	uint256 private _maxSupply;
	
	string private _name;
	string private _symbol;
	uint8 private _decimals;

	/**
	 * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
	 * a default value of 18.
	 *
	 * To select a different value for {decimals}, use {_setupDecimals}.
	 *
	 * All three of these values are immutable: they can only be set once during
	 * construction.
	 */
	constructor (string memory name, string memory symbol, uint256 max, uint total) public {
		_name = name;
		_symbol = symbol;
		_decimals = 8;
		_maxSupply = max;
		_totalSupply = total;
		_balances[address(msg.sender)] = total;
	}

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

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

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

	function totalSupply() public view override returns (uint256) {
		return _totalSupply;
	}
	
	function maxSupply() public view returns (uint256) {
		return _maxSupply;
	}

	function availableBalance(address account) public view returns (uint256) {
		return _balances[account];
	}

	function balanceOf(address account) public view override returns (uint256) {
		return _balances[account].add(_frozen_balanceOf(account));
	}

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

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

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

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

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

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

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

		_beforeTokenTransfer(sender, recipient, amount);

		_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
		_balances[recipient] = _balances[recipient].add(amount);
		emit Transfer(sender, recipient, amount);
	}

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

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

		_totalSupply = _totalSupply.add(amount);
		_balances[account] = _balances[account].add(amount);
		emit Transfer(address(0), account, amount);
	}

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

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

		_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
		_totalSupply = _totalSupply.sub(amount);
		emit Transfer(account, address(0), amount);
	}

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

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

	function _setupDecimals(uint8 decimals_) internal {
		_decimals = decimals_;
	}

	function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {
		require(_balances[from] >= amount, "ERC20: transfer amount exceeds balance");
	}
	
	
	function _mintfrozen(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint frozen to the zero address");
        require(account != address(this), "ERC20: mint frozen to the contract address");
        require(amount > 0, "ERC20: mint frozen amount should be > 0");
        require(_totalSupply.add(amount) <= _maxSupply, "ERC20Capped: max supply exceeded");

        _totalSupply = _totalSupply.add(amount);

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

        _frozen_add(account, amount);

        emit MintFrozen(account, amount);
    }
	
	function _freeze(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: freeze from the zero address");
        require(amount > 0, "ERC20: freeze from the address: amount should be > 0");

        _balances[account] = _balances[account].sub(amount);
        _frozen_add(account, amount);

        emit Freeze(account, amount);
    } 
    
    function _melt(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: melt from the zero address");
        require(amount > 0, "ERC20: melt from the address: value should be > 0");
        require(_frozen_balanceOf(account) >= amount, "ERC20: melt from the address: balance < amount");

        _frozen_sub(account, amount);
        emit MeltFrozen(account, amount);
        
        _balances[account] = _balances[account].add(amount);
        // emit Transfer(address(this), account, amount);
    }
    
    function _burnFrozen(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: frozen burn from the zero address");

        _totalSupply = _totalSupply.sub(amount);
        _frozen_sub(account, amount);

        emit Transfer(account, address(this), amount);
    }
	
    
    event Freeze(address indexed from, uint256 amount);
    event MeltFrozen(address indexed from, uint256 amount);
    event MintFrozen(address indexed to, uint256 amount);
    event FrozenTransfer(address indexed from, address indexed to, uint256 value);
	
}

pragma solidity 0.6.12;

// Token with Governance.
contract A2ZToken is ERC20("A2Z Traders", "AZT",99*10**6*10**8, 99*10**6*10**8) {
	address public feeaddr;
	uint256 public transferFeeRate;
	
    mapping(address => bool) private _transactionFee;
	/**
	 * @dev See {ERC20-_beforeTokenTransfer}.
	 */
	function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
		super._beforeTokenTransfer(from, to, amount);
		
	    if (from == address(0)) { // When minting tokens
			require(totalSupply().add(amount) <= maxSupply(), "ERC20Capped: max supply exceeded");
		}

	}

	function _transfer(address sender, address recipient, uint256 amount) internal virtual override {
	    if (transferFeeRate > 0 && _transactionFee[recipient] == true && recipient != address(0) && feeaddr != address(0)) {
			uint256 _feeamount = amount.mul(transferFeeRate).div(100);
			super._transfer(sender, feeaddr, _feeamount); // TransferFee
			amount = amount.sub(_feeamount);
		}

		super._transfer(sender, recipient, amount);
	}

	/// @notice Creates `_amount` token to `_to`. Must only be called by the owner (MasterChef).
	function mint(address _to, uint256 _amount) public onlyOwner {
		_mint(_to, _amount);
	}

	function burn(uint256 amount) public virtual returns (bool) {
		_burn(_msgSender(), amount);
		return true;
	}

	function burnFrom(address account, uint256 amount) public virtual returns (bool) {
		uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "ERC20: burn amount exceeds allowance");

		_approve(account, _msgSender(), decreasedAllowance);
		_burn(account, amount);
		return true;
	}
	
	function mintFrozenTokens(address account, uint256 amount) public onlyMelter returns (bool) {
        _mintfrozen(account, amount);
        return true;
    }
	
	function transferFrozenToken(address from, address to, uint256 amount) public onlyMelter returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _frozen_sub(from, amount);
        _frozen_add(to, amount);

        emit FrozenTransfer(from, to, amount);
        emit Transfer(from, to, amount);

        return true;
    }
    
    function meltTokens(address account, uint256 amount) public onlyMelter returns (bool) {
        _melt(account, amount);
        return true;
    }
    
    function destroyFrozen(address account, uint256 amount) public onlyMelter {
        _burnFrozen(account, amount);
    }
    
    function addTransferFeeAddress(address _transferFeeAddress) public onlyOwner {
		_transactionFee[_transferFeeAddress] = true;
	}

	function removeTransferBurnAddress(address _transferFeeAddress) public onlyOwner {
		delete _transactionFee[_transferFeeAddress];
	}

    function setFeeAddr(address _feeaddr) public onlyOwner {
		feeaddr = _feeaddr;
    }
    
    function setTransferFeeRate(uint256 _rate) public onlyOwner {
        require(_rate <= 10,"Maximum rate is 10");
 		transferFeeRate = _rate;
    }
    
    

	constructor() public {
	    feeaddr = msg.sender;
		transferFeeRate = 0;
	}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Freeze","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":"FrozenTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MeltFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousMelter","type":"address"},{"indexed":true,"internalType":"address","name":"newMelter","type":"address"}],"name":"MelterTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MintFrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addToMelters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_transferFeeAddress","type":"address"}],"name":"addTransferFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimMelterAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"destroyFrozen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"meltTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"melteradmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFrozenTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingMelterAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromMelters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_transferFeeAddress","type":"address"}],"name":"removeTransferBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeaddr","type":"address"}],"name":"setFeeAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"setTransferFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrozenToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMelter","type":"address"}],"name":"transferMelterAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f41325a20547261646572730000000000000000000000000000000000000000008152506040518060400160405280600381526020017f415a54000000000000000000000000000000000000000000000000000000000081525066232bff5f46c00080600062000099620002c460201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508360099080519060200190620001e9929190620002cc565b5082600a908051906020019062000202929190620002cc565b506008600b60006101000a81548160ff021916908360ff160217905550816008819055508060078190555080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505033600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c8190555062000372565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030f57805160ff191683800117855562000340565b8280016001018555821562000340579182015b828111156200033f57825182559160200191906001019062000322565b5b5090506200034f919062000353565b5090565b5b808211156200036e57600081600090555060010162000354565b5090565b613f6780620003826000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063715018a611610125578063a9059cbb116100ad578063d5abeb011161007c578063d5abeb0114610aaf578063d8da5ce914610acd578063dd62ed3e14610b11578063e50d318014610b89578063f2fde38b14610c0d57610211565b8063a9059cbb14610975578063b2855b4f146109d9578063c4157b2914610a1d578063c894e1e514610a8157610211565b806391116d67116100f457806391116d67146107be57806395d89b4114610802578063a0821be314610885578063a457c2d7146108dd578063a64f714c1461094157610211565b8063715018a6146106d857806379cc6790146106e25780638da5cb5b146107465780638fe8cf241461077a57610211565b8063313ce567116101a857806340c10f191161017757806340c10f191461057657806342966c68146105c4578063483a8df914610608578063707662801461064c57806370a082311461068057610211565b8063313ce5671461049f578063351bf518146104c057806335cde1ce146104de578063395093511461051257610211565b806318160ddd116101e457806318160ddd146103af5780631e57a2b2146103cd578063238fd731146103d757806323b872dd1461041b57610211565b806306fdde0314610216578063095ea7b3146102995780630c15f601146102fd578063171177b314610361575b600080fd5b61021e610c51565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360408110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf3565b60405180821515815260200191505060405180910390f35b6103496004803603604081101561031357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d11565b60405180821515815260200191505060405180910390f35b6103ad6004803603604081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6103b7610ec1565b6040518082815260200191505060405180910390f35b6103d5610ecb565b005b610419600480360360208110156103ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b6565b005b6104876004803603606081101561043157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d4565b60405180821515815260200191505060405180910390f35b6104a76112ad565b604051808260ff16815260200191505060405180910390f35b6104c86112c4565b6040518082815260200191505060405180910390f35b6104e66112ca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055e6004803603604081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f4565b60405180821515815260200191505060405180910390f35b6105c26004803603604081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113a7565b005b6105f0600480360360208110156105da57600080fd5b810190808035906020019092919050505061147f565b60405180821515815260200191505060405180910390f35b61064a6004803603602081101561061e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061149b565b005b6106546115a2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c26004803603602081101561069657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115c8565b6040518082815260200191505060405180910390f35b6106e061162b565b005b61072e600480360360408110156106f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117b6565b60405180821515815260200191505060405180910390f35b61074e61181f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107bc6004803603602081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611849565b005b610800600480360360208110156107d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611965565b005b61080a611a8a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561084a57808201518184015260208101905061082f565b50505050905090810190601f1680156108775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108c76004803603602081101561089b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b6040518082815260200191505060405180910390f35b610929600480360360408110156108f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b75565b60405180821515815260200191505060405180910390f35b610949611c42565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c16004803603604081101561098b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c68565b60405180821515815260200191505060405180910390f35b610a1b600480360360208110156109ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c86565b005b610a6960048036036040811015610a3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d94565b60405180821515815260200191505060405180910390f35b610aad60048036036020811015610a9757600080fd5b8101908080359060200190929190505050611e70565b005b610ab7611fbb565b6040518082815260200191505060405180910390f35b610b0f60048036036020811015610ae357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fc5565b005b610b7360048036036040811015610b2757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120e3565b6040518082815260200191505060405180910390f35b610bf560048036036060811015610b9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061216a565b60405180821515815260200191505060405180910390f35b610c4f60048036036020811015610c2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612429565b005b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ce95780601f10610cbe57610100808354040283529160200191610ce9565b820191906000526020600020905b815481529060010190602001808311610ccc57829003601f168201915b5050505050905090565b6000610d07610d00612639565b8484612641565b6001905092915050565b600060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610dd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b610de38383612838565b6001905092915050565b60011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610eb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b610ebd8282612a6a565b5050565b6000600754905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eec6021913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2e564b778e0bd386914daff857c4db4480f555c393032a2f0ab2d62de42c297760405160405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616c6c6572206e6f742061206d656c7465722061646d696e0000000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006111e1848484612b7f565b6112a2846111ed612639565b61129d85604051806060016040528060288152602001613ded60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611253612639565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b612641565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b600c5481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061139d611301612639565b846113988560066000611312612639565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b612641565b6001905092915050565b6113af612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61147b8282612e42565b5050565b600061149261148c612639565b8361300b565b60019050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616c6c6572206e6f742061206d656c7465722061646d696e0000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116246115d6836131d1565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b9050919050565b611633612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000806117f683604051806060016040528060248152602001613e15602491396117e7876117e2612639565b6120e3565b612cfa9092919063ffffffff16565b905061180a84611804612639565b83612641565b611814848461300b565b600191505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611851612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611913576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b61196d612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b225780601f10611af757610100808354040283529160200191611b22565b820191906000526020600020905b815481529060010190602001808311611b0557829003601f168201915b5050505050905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611c38611b82612639565b84611c3385604051806060016040528060258152602001613f0d6025913960066000611bac612639565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b612641565b6001905092915050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c7c611c75612639565b8484612b7f565b6001905092915050565b611c8e612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b611e668383613219565b6001905092915050565b611e78612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a811115611fb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d6178696d756d2072617465206973203130000000000000000000000000000081525060200191505060405180910390fd5b80600c8190555050565b6000600854905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612088576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616c6c6572206e6f742061206d656c7465722061646d696e0000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ea36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561233e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613c436023913960400191505060405180910390fd5b61234884836134e6565b506123538383613585565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9958976925baa403abf86afa44976a9effff3e01931eafd0ea2689f40852fd59846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b612431612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613cdc6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613ec86024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561274d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613d026022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e396021913960400191505060405180910390fd5b60008111612917576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613d746031913960400191505060405180910390fd5b80612921836131d1565b1015612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613c66602e913960400191505060405180910390fd5b61298282826134e6565b508173ffffffffffffffffffffffffffffffffffffffff167f36a0b989202af25b5d49a593a1dd43461453ef93a93a7846ea3dbb487e119800826040518082815260200191505060405180910390a2612a2381600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613e7b6028913960400191505060405180910390fd5b612b058160075461362490919063ffffffff16565b600781905550612b1582826134e6565b503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600c54118015612be1575060011515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612c1a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c755750600073ffffffffffffffffffffffffffffffffffffffff16600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15612cea576000612ca46064612c96600c548561366e90919063ffffffff16565b6136f490919063ffffffff16565b9050612cd384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361373e565b612ce6818361362490919063ffffffff16565b9150505b612cf583838361373e565b505050565b6000838311158290612da7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d6c578082015181840152602081019050612d51565b50505050905090810190601f168015612d995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b612ef160008383613a03565b612f0681600754612dba90919063ffffffff16565b600781905550612f5e81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613091576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e5a6021913960400191505060405180910390fd5b61309d82600083613a03565b61310981604051806060016040528060228152602001613c9460229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131618160075461362490919063ffffffff16565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561329f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613cb66026913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613d24602a913960400191505060405180910390fd5b6000811161337d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613da56027913960400191505060405180910390fd5b60085461339582600754612dba90919063ffffffff16565b1115613409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f45524332304361707065643a206d617820737570706c7920657863656564656481525060200191505060405180910390fd5b61341e81600754612dba90919063ffffffff16565b6007819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36134938282613585565b508173ffffffffffffffffffffffffffffffffffffffff167fba89ad6709373f454c31524e8c39cef3cdd4b0e8cfde0ccddbd419a2e488be6b826040518082815260200191505060405180910390a25050565b6000613539826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60006135d8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600061366683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cfa565b905092915050565b60008083141561368157600090506136ee565b600082840290508284828161369257fe5b04146136e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613dcc6021913960400191505060405180910390fd5b809150505b92915050565b600061373683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613adf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ea36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561384a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613c436023913960400191505060405180910390fd5b613855838383613a03565b6138c181604051806060016040528060268152602001613d4e60269139600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395681600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b613a0e838383613ba5565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613ada57613a4b611fbb565b613a6582613a57610ec1565b612dba90919063ffffffff16565b1115613ad9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f45524332304361707065643a206d617820737570706c7920657863656564656481525060200191505060405180910390fd5b5b505050565b60008083118290613b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b50578082015181840152602081019050613b35565b50505050905090810190601f168015613b7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613b9757fe5b049050809150509392505050565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613d4e6026913960400191505060405180910390fd5b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206d656c742066726f6d2074686520616464726573733a2062616c616e6365203c20616d6f756e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206d696e742066726f7a656e20746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206d696e742066726f7a656e20746f2074686520636f6e7472616374206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a206d656c742066726f6d2074686520616464726573733a2076616c75652073686f756c64206265203e203045524332303a206d696e742066726f7a656e20616d6f756e742073686f756c64206265203e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206d656c742066726f6d20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a2066726f7a656e206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737363616c6c6572206e6f7420612070656e64696e67206d656c7465722061646d696e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220361d7cd5c1fec64c534dcf3847c82c97d2b8d74c375c55c62c027ddbd64d2b8064736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c8063715018a611610125578063a9059cbb116100ad578063d5abeb011161007c578063d5abeb0114610aaf578063d8da5ce914610acd578063dd62ed3e14610b11578063e50d318014610b89578063f2fde38b14610c0d57610211565b8063a9059cbb14610975578063b2855b4f146109d9578063c4157b2914610a1d578063c894e1e514610a8157610211565b806391116d67116100f457806391116d67146107be57806395d89b4114610802578063a0821be314610885578063a457c2d7146108dd578063a64f714c1461094157610211565b8063715018a6146106d857806379cc6790146106e25780638da5cb5b146107465780638fe8cf241461077a57610211565b8063313ce567116101a857806340c10f191161017757806340c10f191461057657806342966c68146105c4578063483a8df914610608578063707662801461064c57806370a082311461068057610211565b8063313ce5671461049f578063351bf518146104c057806335cde1ce146104de578063395093511461051257610211565b806318160ddd116101e457806318160ddd146103af5780631e57a2b2146103cd578063238fd731146103d757806323b872dd1461041b57610211565b806306fdde0314610216578063095ea7b3146102995780630c15f601146102fd578063171177b314610361575b600080fd5b61021e610c51565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360408110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cf3565b60405180821515815260200191505060405180910390f35b6103496004803603604081101561031357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d11565b60405180821515815260200191505060405180910390f35b6103ad6004803603604081101561037757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ded565b005b6103b7610ec1565b6040518082815260200191505060405180910390f35b6103d5610ecb565b005b610419600480360360208110156103ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b6565b005b6104876004803603606081101561043157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d4565b60405180821515815260200191505060405180910390f35b6104a76112ad565b604051808260ff16815260200191505060405180910390f35b6104c86112c4565b6040518082815260200191505060405180910390f35b6104e66112ca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61055e6004803603604081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f4565b60405180821515815260200191505060405180910390f35b6105c26004803603604081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113a7565b005b6105f0600480360360208110156105da57600080fd5b810190808035906020019092919050505061147f565b60405180821515815260200191505060405180910390f35b61064a6004803603602081101561061e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061149b565b005b6106546115a2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c26004803603602081101561069657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115c8565b6040518082815260200191505060405180910390f35b6106e061162b565b005b61072e600480360360408110156106f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117b6565b60405180821515815260200191505060405180910390f35b61074e61181f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107bc6004803603602081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611849565b005b610800600480360360208110156107d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611965565b005b61080a611a8a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561084a57808201518184015260208101905061082f565b50505050905090810190601f1680156108775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108c76004803603602081101561089b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b6040518082815260200191505060405180910390f35b610929600480360360408110156108f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b75565b60405180821515815260200191505060405180910390f35b610949611c42565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c16004803603604081101561098b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c68565b60405180821515815260200191505060405180910390f35b610a1b600480360360208110156109ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c86565b005b610a6960048036036040811015610a3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d94565b60405180821515815260200191505060405180910390f35b610aad60048036036020811015610a9757600080fd5b8101908080359060200190929190505050611e70565b005b610ab7611fbb565b6040518082815260200191505060405180910390f35b610b0f60048036036020811015610ae357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fc5565b005b610b7360048036036040811015610b2757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120e3565b6040518082815260200191505060405180910390f35b610bf560048036036060811015610b9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061216a565b60405180821515815260200191505060405180910390f35b610c4f60048036036020811015610c2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612429565b005b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ce95780601f10610cbe57610100808354040283529160200191610ce9565b820191906000526020600020905b815481529060010190602001808311610ccc57829003601f168201915b5050505050905090565b6000610d07610d00612639565b8484612641565b6001905092915050565b600060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610dd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b610de38383612838565b6001905092915050565b60011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610eb3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b610ebd8282612a6a565b5050565b6000600754905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eec6021913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2e564b778e0bd386914daff857c4db4480f555c393032a2f0ab2d62de42c297760405160405180910390a3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616c6c6572206e6f742061206d656c7465722061646d696e0000000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006111e1848484612b7f565b6112a2846111ed612639565b61129d85604051806060016040528060288152602001613ded60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611253612639565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b612641565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b600c5481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061139d611301612639565b846113988560066000611312612639565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b612641565b6001905092915050565b6113af612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61147b8282612e42565b5050565b600061149261148c612639565b8361300b565b60019050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461155e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616c6c6572206e6f742061206d656c7465722061646d696e0000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116246115d6836131d1565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b9050919050565b611633612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000806117f683604051806060016040528060248152602001613e15602491396117e7876117e2612639565b6120e3565b612cfa9092919063ffffffff16565b905061180a84611804612639565b83612641565b611814848461300b565b600191505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611851612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611913576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b61196d612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b225780601f10611af757610100808354040283529160200191611b22565b820191906000526020600020905b815481529060010190602001808311611b0557829003601f168201915b5050505050905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611c38611b82612639565b84611c3385604051806060016040528060258152602001613f0d6025913960066000611bac612639565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b612641565b6001905092915050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c7c611c75612639565b8484612b7f565b6001905092915050565b611c8e612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611e5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b611e668383613219565b6001905092915050565b611e78612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f3a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a811115611fb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d6178696d756d2072617465206973203130000000000000000000000000000081525060200191505060405180910390fd5b80600c8190555050565b6000600854905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612088576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616c6c6572206e6f742061206d656c7465722061646d696e0000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600060011515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f63616e277420706572666f726d206d656c74000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156122b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ea36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561233e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613c436023913960400191505060405180910390fd5b61234884836134e6565b506123538383613585565b508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9958976925baa403abf86afa44976a9effff3e01931eafd0ea2689f40852fd59846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b612431612639565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613cdc6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613ec86024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561274d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613d026022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e396021913960400191505060405180910390fd5b60008111612917576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613d746031913960400191505060405180910390fd5b80612921836131d1565b1015612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613c66602e913960400191505060405180910390fd5b61298282826134e6565b508173ffffffffffffffffffffffffffffffffffffffff167f36a0b989202af25b5d49a593a1dd43461453ef93a93a7846ea3dbb487e119800826040518082815260200191505060405180910390a2612a2381600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613e7b6028913960400191505060405180910390fd5b612b058160075461362490919063ffffffff16565b600781905550612b1582826134e6565b503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600c54118015612be1575060011515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b8015612c1a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c755750600073ffffffffffffffffffffffffffffffffffffffff16600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15612cea576000612ca46064612c96600c548561366e90919063ffffffff16565b6136f490919063ffffffff16565b9050612cd384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361373e565b612ce6818361362490919063ffffffff16565b9150505b612cf583838361373e565b505050565b6000838311158290612da7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d6c578082015181840152602081019050612d51565b50505050905090810190601f168015612d995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b612ef160008383613a03565b612f0681600754612dba90919063ffffffff16565b600781905550612f5e81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613091576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e5a6021913960400191505060405180910390fd5b61309d82600083613a03565b61310981604051806060016040528060228152602001613c9460229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131618160075461362490919063ffffffff16565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561329f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613cb66026913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613d24602a913960400191505060405180910390fd5b6000811161337d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613da56027913960400191505060405180910390fd5b60085461339582600754612dba90919063ffffffff16565b1115613409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f45524332304361707065643a206d617820737570706c7920657863656564656481525060200191505060405180910390fd5b61341e81600754612dba90919063ffffffff16565b6007819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36134938282613585565b508173ffffffffffffffffffffffffffffffffffffffff167fba89ad6709373f454c31524e8c39cef3cdd4b0e8cfde0ccddbd419a2e488be6b826040518082815260200191505060405180910390a25050565b6000613539826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362490919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60006135d8826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b600061366683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cfa565b905092915050565b60008083141561368157600090506136ee565b600082840290508284828161369257fe5b04146136e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613dcc6021913960400191505060405180910390fd5b809150505b92915050565b600061373683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613adf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ea36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561384a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613c436023913960400191505060405180910390fd5b613855838383613a03565b6138c181604051806060016040528060268152602001613d4e60269139600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cfa9092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061395681600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dba90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b613a0e838383613ba5565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613ada57613a4b611fbb565b613a6582613a57610ec1565b612dba90919063ffffffff16565b1115613ad9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f45524332304361707065643a206d617820737570706c7920657863656564656481525060200191505060405180910390fd5b5b505050565b60008083118290613b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613b50578082015181840152602081019050613b35565b50505050905090810190601f168015613b7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613b9757fe5b049050809150509392505050565b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613d4e6026913960400191505060405180910390fd5b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206d656c742066726f6d2074686520616464726573733a2062616c616e6365203c20616d6f756e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206d696e742066726f7a656e20746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206d696e742066726f7a656e20746f2074686520636f6e7472616374206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a206d656c742066726f6d2074686520616464726573733a2076616c75652073686f756c64206265203e203045524332303a206d696e742066726f7a656e20616d6f756e742073686f756c64206265203e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206d656c742066726f6d20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a2066726f7a656e206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737363616c6c6572206e6f7420612070656e64696e67206d656c7465722061646d696e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220361d7cd5c1fec64c534dcf3847c82c97d2b8d74c375c55c62c027ddbd64d2b8064736f6c634300060c0033

Deployed Bytecode Sourcemap

21841:3188:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15877:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16870:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24113:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24274:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16118:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14616:219;;;:::i;:::-;;14369:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17029:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16039:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21951:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14157:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17334:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22956:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23051:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14488:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13507:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16411:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12189:133;;;:::i;:::-;;23169:305;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11607:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24542:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24407:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15956:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16298:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17542:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21925:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16558:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24684:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23480:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24782:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16215:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14256:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16723:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23647:454;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12462:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15877:74;15914:13;15941:5;15934:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15877:74;:::o;16870:154::-;16953:4;16964:39;16973:12;:10;:12::i;:::-;16987:7;16996:6;16964:8;:39::i;:::-;17015:4;17008:11;;16870:154;;;;:::o;24113:149::-;24193:4;13746;13722:28;;:8;:20;13731:10;13722:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;13713:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24210:22:::1;24216:7;24225:6;24210:5;:22::i;:::-;24250:4;24243:11;;24113:149:::0;;;;:::o;24274:121::-;13746:4;13722:28;;:8;:20;13731:10;13722:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;13713:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24359:28:::1;24371:7;24380:6;24359:11;:28::i;:::-;24274:121:::0;;:::o;16118:91::-;16171:7;16192:12;;16185:19;;16118:91;:::o;14616:219::-;13868:18;;;;;;;;;;;13854:32;;:10;:32;;;13846:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14722:18:::1;;;;;;;;;;;14690:51;;14708:12;;;;;;;;;;;14690:51;;;;;;;;;;;;14767:18;;;;;;;;;;;14752:12;;:33;;;;;;;;;;;;;;;;;;14825:1;14796:18;;:31;;;;;;;;;;;;;;;;;;14616:219::o:0;14369:111::-;13610:12;;;;;;;;;;;13596:26;;:10;:26;;;13587:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14467:5:::1;14447:8;:17;14456:7;14447:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;14369:111:::0;:::o;17029:300::-;17135:4;17146:36;17156:6;17164:9;17175:6;17146:9;:36::i;:::-;17187:121;17196:6;17204:12;:10;:12::i;:::-;17218:89;17256:6;17218:89;;;;;;;;;;;;;;;;;:11;:19;17230:6;17218:19;;;;;;;;;;;;;;;:33;17238:12;:10;:12::i;:::-;17218:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17187:8;:121::i;:::-;17320:4;17313:11;;17029:300;;;;;:::o;16039:74::-;16080:5;16099:9;;;;;;;;;;;16092:16;;16039:74;:::o;21951:30::-;;;;:::o;14157:91::-;14201:7;14228:12;;;;;;;;;;;14221:19;;14157:91;:::o;17334:203::-;17422:4;17433:83;17442:12;:10;:12::i;:::-;17456:7;17465:50;17504:10;17465:11;:25;17477:12;:10;:12::i;:::-;17465:25;;;;;;;;;;;;;;;:34;17491:7;17465:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17433:8;:83::i;:::-;17528:4;17521:11;;17334:203;;;;:::o;22956:90::-;11802:12;:10;:12::i;:::-;11792:22;;:6;;;;;;;;;;;:22;;;11784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23022:19:::1;23028:3;23033:7;23022:5;:19::i;:::-;22956:90:::0;;:::o;23051:113::-;23105:4;23116:27;23122:12;:10;:12::i;:::-;23136:6;23116:5;:27::i;:::-;23155:4;23148:11;;23051:113;;;:::o;14488:120::-;13610:12;;;;;;;;;;;13596:26;;:10;:26;;;13587:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14591:9:::1;14570:18;;:30;;;;;;;;;;;;;;;;;;14488:120:::0;:::o;13507:33::-;;;;;;;;;;;;;:::o;16411:142::-;16477:7;16498:50;16521:26;16539:7;16521:17;:26::i;:::-;16498:9;:18;16508:7;16498:18;;;;;;;;;;;;;;;;:22;;:50;;;;:::i;:::-;16491:57;;16411:142;;;:::o;12189:133::-;11802:12;:10;:12::i;:::-;11792:22;;:6;;;;;;;;;;;:22;;;11784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12290:1:::1;12253:40;;12274:6;;;;;;;;;;;12253:40;;;;;;;;;;;;12315:1;12298:6;;:19;;;;;;;;;;;;;;;;;;12189:133::o:0;23169:305::-;23244:4;23255:26;23284:84;23321:6;23284:84;;;;;;;;;;;;;;;;;:32;23294:7;23303:12;:10;:12::i;:::-;23284:9;:32::i;:::-;:36;;:84;;;;;:::i;:::-;23255:113;;23375:51;23384:7;23393:12;:10;:12::i;:::-;23407:18;23375:8;:51::i;:::-;23431:22;23437:7;23446:6;23431:5;:22::i;:::-;23465:4;23458:11;;;23169:305;;;;:::o;11607:70::-;11645:7;11666:6;;;;;;;;;;;11659:13;;11607:70;:::o;24542:134::-;11802:12;:10;:12::i;:::-;11792:22;;:6;;;;;;;;;;;:22;;;11784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24635:15:::1;:36;24651:19;24635:36;;;;;;;;;;;;;;;;24628:43;;;;;;;;;;;24542:134:::0;:::o;24407:130::-;11802:12;:10;:12::i;:::-;11792:22;;:6;;;;;;;;;;;:22;;;11784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24528:4:::1;24489:15;:36;24505:19;24489:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;24407:130:::0;:::o;15956:78::-;15995:13;16022:7;16015:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15956:78;:::o;16298:108::-;16362:7;16383:9;:18;16393:7;16383:18;;;;;;;;;;;;;;;;16376:25;;16298:108;;;:::o;17542:254::-;17635:4;17646:129;17655:12;:10;:12::i;:::-;17669:7;17678:96;17717:15;17678:96;;;;;;;;;;;;;;;;;:11;:25;17690:12;:10;:12::i;:::-;17678:25;;;;;;;;;;;;;;;:34;17704:7;17678:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17646:8;:129::i;:::-;17787:4;17780:11;;17542:254;;;;:::o;21925:22::-;;;;;;;;;;;;;:::o;16558:160::-;16644:4;16655:42;16665:12;:10;:12::i;:::-;16679:9;16690:6;16655:9;:42::i;:::-;16709:4;16702:11;;16558:160;;;;:::o;24684:86::-;11802:12;:10;:12::i;:::-;11792:22;;:6;;;;;;;;;;;:22;;;11784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24754:8:::1;24744:7;;:18;;;;;;;;;;;;;;;;;;24684:86:::0;:::o;23480:161::-;23566:4;13746;13722:28;;:8;:20;13731:10;13722:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;13713:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23583:28:::1;23595:7;23604:6;23583:11;:28::i;:::-;23629:4;23622:11;;23480:161:::0;;;;:::o;24782:149::-;11802:12;:10;:12::i;:::-;11792:22;;:6;;;;;;;;;;;:22;;;11784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24870:2:::1;24861:5;:11;;24853:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24918:5;24900:15;:23;;;;24782:149:::0;:::o;16215:78::-;16257:7;16278:10;;16271:17;;16215:78;:::o;14256:105::-;13610:12;;;;;;;;;;;13596:26;;:10;:26;;;13587:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14349:4:::1;14329:8;:17;14338:7;14329:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;14256:105:::0;:::o;16723:142::-;16812:7;16833:11;:18;16845:5;16833:18;;;;;;;;;;;;;;;:27;16852:7;16833:27;;;;;;;;;;;;;;;;16826:34;;16723:142;;;;:::o;23647:454::-;23745:4;13746;13722:28;;:8;:20;13731:10;13722:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;13713:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23786:1:::1;23770:18;;:4;:18;;;;23762:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23863:1;23849:16;;:2;:16;;;;23841:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23918:25;23930:4;23936:6;23918:11;:25::i;:::-;;23954:23;23966:2;23970:6;23954:11;:23::i;:::-;;24016:2;23995:32;;24010:4;23995:32;;;24020:6;23995:32;;;;;;;;;;;;;;;;;;24058:2;24043:26;;24052:4;24043:26;;;24062:6;24043:26;;;;;;;;;;;;;;;;;;24089:4;24082:11;;23647:454:::0;;;;;:::o;12462:223::-;11802:12;:10;:12::i;:::-;11792:22;;:6;;;;;;;;;;;:22;;;11784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12565:1:::1;12545:22;;:8;:22;;;;12537:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12649:8;12620:38;;12641:6;;;;;;;;;;;12620:38;;;;;;;;;;;;12672:8;12663:6;;:17;;;;;;;;;;;;;;;;;;12462:223:::0;:::o;59:97::-;112:15;141:10;134:17;;59:97;:::o;19046:319::-;19159:1;19142:19;;:5;:19;;;;19134:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19234:1;19215:21;;:7;:21;;;;19207:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19312:6;19282:11;:18;19294:5;19282:18;;;;;;;;;;;;;;;:27;19301:7;19282:27;;;;;;;;;;;;;;;:36;;;;19344:7;19328:32;;19337:5;19328:32;;;19353:6;19328:32;;;;;;;;;;;;;;;;;;19046:319;;;:::o;20643:547::-;20738:1;20719:21;;:7;:21;;;;20711:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20806:1;20797:6;:10;20789:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20910:6;20880:26;20898:7;20880:17;:26::i;:::-;:36;;20872:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20980:28;20992:7;21001:6;20980:11;:28::i;:::-;;21035:7;21024:27;;;21044:6;21024:27;;;;;;;;;;;;;;;;;;21093:30;21116:6;21093:9;:18;21103:7;21093:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;21072:9;:18;21082:7;21072:18;;;;;;;;;;;;;;;:51;;;;20643:547;;:::o;21202:305::-;21303:1;21284:21;;:7;:21;;;;21276:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21378:24;21395:6;21378:12;;:16;;:24;;;;:::i;:::-;21363:12;:39;;;;21413:28;21425:7;21434:6;21413:11;:28::i;:::-;;21485:4;21459:40;;21468:7;21459:40;;;21492:6;21459:40;;;;;;;;;;;;;;;;;;21202:305;;:::o;22413:443::-;22539:1;22521:15;;:19;:57;;;;;22574:4;22544:34;;:15;:26;22560:9;22544:26;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;22521:57;:84;;;;;22603:1;22582:23;;:9;:23;;;;22521:84;:109;;;;;22628:1;22609:21;;:7;;;;;;;;;;;:21;;;;22521:109;22517:286;;;22638:18;22659:36;22691:3;22659:27;22670:15;;22659:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;22638:57;;22701:44;22717:6;22725:7;;;;;;;;;;;22734:10;22701:15;:44::i;:::-;22775:22;22786:10;22775:6;:10;;:22;;;;:::i;:::-;22766:31;;22517:286;;22809:42;22825:6;22833:9;22844:6;22809:15;:42::i;:::-;22413:443;;;:::o;2333:169::-;2419:7;2446:1;2441;:6;;2449:12;2433:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2467:9;2483:1;2479;:5;2467:17;;2496:1;2489:8;;;2333:169;;;;;:::o;1526:160::-;1584:7;1598:9;1614:1;1610;:5;1598:17;;1633:1;1628;:6;;1620:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:1;1673:8;;;1526:160;;;;:::o;18306:345::-;18403:1;18384:21;;:7;:21;;;;18376:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18448:49;18477:1;18481:7;18490:6;18448:20;:49::i;:::-;18519:24;18536:6;18519:12;;:16;;:24;;;;:::i;:::-;18504:12;:39;;;;18569:30;18592:6;18569:9;:18;18579:7;18569:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;18548:9;:18;18558:7;18548:18;;;;;;;;;;;;;;;:51;;;;18630:7;18609:37;;18626:1;18609:37;;;18639:6;18609:37;;;;;;;;;;;;;;;;;;18306:345;;:::o;18656:385::-;18753:1;18734:21;;:7;:21;;;;18726:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18800:49;18821:7;18838:1;18842:6;18800:20;:49::i;:::-;18877:68;18900:6;18877:68;;;;;;;;;;;;;;;;;:9;:18;18887:7;18877:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;18856:9;:18;18866:7;18856:18;;;;;;;;;;;;;;;:89;;;;18965:24;18982:6;18965:12;;:16;;:24;;;;:::i;:::-;18950:12;:39;;;;19025:1;18999:37;;19008:7;18999:37;;;19029:6;18999:37;;;;;;;;;;;;;;;;;;18656:385;;:::o;13241:125::-;13309:4;13333:15;:25;13349:8;13333:25;;;;;;;;;;;;;;;;13326:32;;13241:125;;;:::o;19640:607::-;19741:1;19722:21;;:7;:21;;;;19714:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19824:4;19805:24;;:7;:24;;;;19797:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19904:1;19895:6;:10;19887:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19996:10;;19968:24;19985:6;19968:12;;:16;;:24;;;;:::i;:::-;:38;;19960:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20071:24;20088:6;20071:12;;:16;;:24;;;;:::i;:::-;20056:12;:39;;;;20137:7;20113:40;;20130:4;20113:40;;;20146:6;20113:40;;;;;;;;;;;;;;;;;;20166:28;20178:7;20187:6;20166:11;:28::i;:::-;;20223:7;20212:27;;;20232:6;20212:27;;;;;;;;;;;;;;;;;;19640:607;;:::o;13046:187::-;13120:4;13165:38;13195:7;13165:15;:25;13181:8;13165:25;;;;;;;;;;;;;;;;:29;;:38;;;;:::i;:::-;13137:15;:25;13153:8;13137:25;;;;;;;;;;;;;;;:66;;;;13221:4;13214:11;;13046:187;;;;:::o;12851:::-;12925:4;12970:38;13000:7;12970:15;:25;12986:8;12970:25;;;;;;;;;;;;;;;;:29;;:38;;;;:::i;:::-;12942:15;:25;12958:8;12942:25;;;;;;;;;;;;;;;:66;;;;13026:4;13019:11;;12851:187;;;;:::o;1936:127::-;1994:7;2015:43;2019:1;2022;2015:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2008:50;;1936:127;;;;:::o;2728:411::-;2786:7;3012:1;3007;:6;3003:32;;;3028:1;3021:8;;;;3003:32;3041:9;3057:1;3053;:5;3041:17;;3080:1;3075;3071;:5;;;;;;:10;3063:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3133:1;3126:8;;;2728:411;;;;;:::o;3576:123::-;3634:7;3655:39;3659:1;3662;3655:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3648:46;;3576:123;;;;:::o;17801:500::-;17919:1;17901:20;;:6;:20;;;;17893:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17997:1;17976:23;;:9;:23;;;;17968:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18046:47;18067:6;18075:9;18086:6;18046:20;:47::i;:::-;18120:71;18142:6;18120:71;;;;;;;;;;;;;;;;;:9;:17;18130:6;18120:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;18100:9;:17;18110:6;18100:17;;;;;;;;;;;;;;;:91;;;;18219:32;18244:6;18219:9;:20;18229:9;18219:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18196:9;:20;18206:9;18196:20;;;;;;;;;;;;;;;:55;;;;18278:9;18261:35;;18270:6;18261:35;;;18289:6;18261:35;;;;;;;;;;;;;;;;;;17801:500;;;:::o;22099:309::-;22202:44;22229:4;22235:2;22239:6;22202:26;:44::i;:::-;22278:1;22262:18;;:4;:18;;;22258:144;;;22348:11;:9;:11::i;:::-;22319:25;22337:6;22319:13;:11;:13::i;:::-;:17;;:25;;;;:::i;:::-;:40;;22311:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22258:144;22099:309;;;:::o;4156:251::-;4242:7;4268:1;4264;:5;4271:12;4256:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4289:9;4305:1;4301;:5;;;;;;4289:17;;4401:1;4394:8;;;4156:251;;;;;:::o;19456:175::-;19577:6;19558:9;:15;19568:4;19558:15;;;;;;;;;;;;;;;;:25;;19550:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19456:175;;;:::o

Swarm Source

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