ETH Price: $3,384.34 (-1.55%)
Gas: 1 Gwei

Token

The SolaVerse (SOLA)
 

Overview

Max Total Supply

1,000,000,000 SOLA

Holders

223 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Doodles: GBOX Token
Balance
100 SOLA

Value
$0.00
0xb75f09b4340aeb85cd5f2dd87d31751edc11ed39
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The SolaVerse, an ever-expanding metaverse based in the stars. The first stop on our journey is a Play-2-Earn MMO strategy game launching in June 2022, that will be free to play in your browser and on mobile later in the year.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SOLA

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-26
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
-------------
The SolaVerse
-------------

  /$$$$$$   /$$$$$$  /$$        /$$$$$$
 /$$__  $$ /$$__  $$| $$       /$$__  $$
| $$  \__/| $$  \ $$| $$      | $$  \ $$
|  $$$$$$ | $$  | $$| $$      | $$$$$$$$
 \____  $$| $$  | $$| $$      | $$__  $$
 /$$  \ $$| $$  | $$| $$      | $$  | $$
|  $$$$$$/|  $$$$$$/| $$$$$$$$| $$  | $$
 \______/  \______/ |________/|__/  |__/
*/

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

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

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

	/**
	 * @dev Allows our Processor wallets/contracts to transfer SOLA without
	 * having to burn tokens
	 *
	 * Emits a {Transfer} event.
	 */
	function processorTransfer(address recipient, uint amount) external;

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

	/**
	 * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
	 *
	 * Returns a boolean value indicating whether the operation succeeded.
	 *
	 * IMPORTANT: Beware that changing an allowance with this method brings the risk
	 * that someone may use both the old and the new allowance by unfortunate
	 * transaction ordering. One possible solution to mitigate this race
	 * condition is to first reduce the spender's allowance to 0 and set the
	 * desired value afterwards:
	 * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
	 *
	 * Emits an {Approval} event.
	 */
	function approve(address spender, uint256 amount) external returns (bool);

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

	/**
	 * @dev Emitted when `value` tokens are moved from one account (`from`) to
	 * another (`to`).
	 *
	 * Note that `value` may be zero.
	 */
	event Transfer(address indexed from, address indexed to, uint256 value);

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

	/**
	 * @dev Emitted when the burning Percentage is changed by `owner`.
	 */
	event UpdateDeflationRate(uint32 value);

	/**
	 * @dev Emitted when a transfer() happens.
	 */
	event Burnt(uint256 value);
}





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

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





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

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

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

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

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

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

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





contract SOLA is Ownable, ISOLA
{
	mapping (address => uint256) private _balances;
	mapping (address => mapping (address => uint256)) private _allowances;

	uint256 private _totalSupply;
	uint256 private _maxSupply = 100000000000 * (10 ** 18);

	string private _name = "The SolaVerse";
	string private _symbol = "SOLA";

	uint32 public deflationRate = 0;

	address[] processorAddresses;

	constructor () {}


	/**
	 * @dev Guard for functions that only Processors are allowed to call.
	 */
	modifier onlyProcessor
	{
		require(isProcessor(msg.sender) == true, "SOLA: Only Processors can call this method.");
		_;
	}


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


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


	/**
	 * @dev Returns the number of decimals used to get its user representation.
	 * For example, if `decimals` equals `2`, a balance of `505` tokens should
	 * be displayed to a user as `5,05` (`505 / 10 ** 2`).
	 *
	 * Tokens usually opt for a value of 18, imitating the relationship between
	 * Ether and Wei. This is the value {ERC20} uses, unless this function is
	 * overloaded;
	 *
	 * NOTE: This information is only used for _display_ purposes: it in
	 * no way affects any of the arithmetic of the contract, including
	 * {IERC20-balanceOf} and {IERC20-transfer}.
	 */
	function decimals() external pure returns (uint8) {
		return 18;
	}


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


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


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


	/**
	 * @dev See {IERC20-allowance}.
	 */
	function allowance(address owner, address spender) external view override returns (uint256) {
		return _allowances[owner][spender];
	}


	/**
	 * @dev See {IERC20-approve}.
	 *
	 * Requirements:
	 *
	 * - `spender` cannot be the zero address.
	 */
	function approve(address spender, uint256 amount) external override returns (bool) {
		_approve(msg.sender, spender, amount);
		return true;
	}


	/**
	 * @dev See {IERC20-transferFrom}.
	 *
	 * Emits an {Approval} event indicating the updated allowance. This is not
	 * required by the EIP. See the note at the beginning of {ERC20}.
	 *
	 * Requirements:
	 *
	 * - `sender` and `recipient` cannot be the zero address.
	 * - `sender` must have a balance of at least `amount`.
	 * - the caller must have allowance for ``sender``'s tokens of at least
	 * `amount`.
	 */
	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		_transfer(sender, recipient, amount);

		uint256 currentAllowance = _allowances[sender][_msgSender()];
		require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
		_approve(sender, _msgSender(), currentAllowance - amount);

		return true;
	}


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


	/**
	 * @dev Atomically decreases the allowance granted to `spender` by the caller.
	 *
	 * This is an alternative to {approve} that can be used as a mitigation for
	 * problems described in {IERC20-approve}.
	 *
	 * Emits an {Approval} event indicating the updated allowance.
	 *
	 * Requirements:
	 *
	 * - `spender` cannot be the zero address.
	 * - `spender` must have allowance for the caller of at least
	 * `subtractedValue`.
	 */
	function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
		uint256 currentAllowance = _allowances[msg.sender][spender];
		require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
		_approve(msg.sender, spender, currentAllowance - subtractedValue);

		return true;
	}


	/**
	 * @dev Sets `deflationRate` as the percent of SOLA to burn on each transfer
	 *
	 * Emits an {UpdateDeflationRate} event.
	 */
	function economyUpdate(uint16 _deflationRate) external onlyOwner
	{
		deflationRate = _deflationRate;
		emit UpdateDeflationRate(deflationRate);
	}


	/**
	 * @dev Check to see if the sender is in our list of Processor addresses.
	 *
	 * Returns boolean
	 */
	function isProcessor(address _sender) internal view returns(bool)
	{
		bool is_processor = false;
		uint length = processorAddresses.length;

		for (uint i = 0; i < length; i++)
		{
			if (_sender == processorAddresses[i])
			{
				is_processor = true;
			}
		}

		return is_processor;
	}


	/**
	 * @dev Add the supplied address to the list of Processor addresses.
	 */
	function addProcessorAddress(address _address) external onlyOwner
	{
		require(msg.sender != address(0));
		require(isProcessor(_address) == false, "SOLA: That address is already in the list.");
		processorAddresses.push(_address);
	}


	/**
	 * @dev Remove the supplied address from the list of Processors.
	 */
	function removeProcessorAddress(address _address) external onlyOwner
	{
		require(msg.sender != address(0));
		uint length = processorAddresses.length;

		for (uint i = 0; i < length; i++)
		{
			if (processorAddresses[i] == _address)
			{
				processorAddresses[i] = processorAddresses[length-1];
				processorAddresses.pop();
			}
		}
	}


	/**
	 * @dev Get the list of the Processor wallet/contract addresses.
	 *
	 * Returns an array of Addresses.
	 */
	function getProcessorAddresses() public view returns(address[] memory)
	{
		return processorAddresses;
	}


	/**
	 * @dev Variation of the transfer() function that will allow our Processor wallets
	 * to distribute SOLA without incurring the deflationary burn.
	 *
	 * Emits a {Transfer} event.
	 *
	 * Requirements:
	 *
	 * - `sender` cannot be the zero address.
	 * - `_recipient` cannot be the zero address.
	 * - `sender` must have a balance of at least `amount`.
	 */
	function processorTransfer(address _recipient, uint _amount) external override onlyProcessor
	{
		require(msg.sender != address(0), "SOLA: transfer from the zero address");
		require(_recipient != address(0), "SOLA: transfer to the zero address");

		uint256 senderBalance = _balances[msg.sender];
		require(senderBalance >= _amount, "SOLA: transfer amount exceeds balance");

		_balances[msg.sender] = senderBalance - _amount;
		_balances[_recipient] += _amount;

		emit Transfer(msg.sender, _recipient, _amount);
	}


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

		uint256 senderBalance = _balances[sender];
		require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

		if (deflationRate > 0)
		{
			uint256 deflationAmount = amount / 100 * deflationRate / 100000;
			_balances[sender] = senderBalance - amount;
			_balances[recipient] += (amount - deflationAmount);
			_totalSupply -= deflationAmount;

			emit Burnt(deflationAmount);
		}
		else
		{
			_balances[sender] = senderBalance - amount;
			_balances[recipient] += amount;
		}

		emit Transfer(sender, recipient, amount);
	}


	/** @dev Creates `amount` tokens and assigns them to `account`, increasing
	 * the total supply.
	 *
	 * Emits a {Transfer} event with `from` set to the zero address.
	 *
	 * Requirements:
	 *
	 * - `to` cannot be the zero address.
	 */
	function mint(address account, uint256 amount) external onlyOwner {
		require(account != address(0), "ERC20: mint to the zero address");
		require(_maxSupply > _totalSupply, "ERC20: you are trying to mint more than the max supply.");

		uint256 _amount = _maxSupply - _totalSupply;
		if (_amount > amount) {
			_amount = amount;
		}

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


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

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

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


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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burnt","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"value","type":"uint32"}],"name":"UpdateDeflationRate","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addProcessorAddress","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":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deflationRate","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_deflationRate","type":"uint16"}],"name":"economyUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getProcessorAddresses","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"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":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"processorTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeProcessorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6c01431e0fae6d7217caa000000060045560c0604052600d60808190526c54686520536f6c61566572736560981b60a0908152620000419160059190620000eb565b5060408051808201909152600480825263534f4c4160e01b60209092019182526200006f91600691620000eb565b506007805463ffffffff191690553480156200008a57600080fd5b50600062000097620000e7565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001ce565b3390565b828054620000f99062000191565b90600052602060002090601f0160209004810192826200011d576000855562000168565b82601f106200013857805160ff191683800117855562000168565b8280016001018555821562000168579182015b82811115620001685782518255916020019190600101906200014b565b50620001769291506200017a565b5090565b5b808211156200017657600081556001016200017b565b600281046001821680620001a657607f821691505b60208210811415620001c857634e487b7160e01b600052602260045260246000fd5b50919050565b611e7980620001de6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063715018a6116100d8578063a457c2d71161008c578063d8b8e45611610066578063d8b8e456146102e0578063dd62ed3e146102f3578063f2fde38b1461030657610177565b8063a457c2d7146102a5578063a9059cbb146102b8578063acecbd22146102cb57610177565b80638da5cb5b116100bd5780638da5cb5b1461027557806395d89b411461028a5780639efe01b31461029257610177565b8063715018a61461025a5780637bdefde61461026257610177565b8063395093511161012f5780634a347e4b116101145780634a347e4b1461021f5780636e4b11fd1461023457806370a082311461024757610177565b806339509351146101f757806340c10f191461020a57610177565b806318160ddd1161016057806318160ddd146101ba57806323b872dd146101cf578063313ce567146101e257610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610319565b60405161019191906116c7565b60405180910390f35b6101ad6101a83660046115f6565b6103ab565b60405161019191906116bc565b6101c26103c1565b6040516101919190611cba565b6101ad6101dd3660046115bb565b6103c7565b6101ea6104a8565b6040516101919190611cd4565b6101ad6102053660046115f6565b6104ad565b61021d6102183660046115f6565b6104f1565b005b6102276106b6565b6040516101919190611662565b61021d610242366004611568565b610724565b6101c2610255366004611568565b610858565b61021d610884565b61021d61027036600461161f565b610966565b61027d610a4c565b6040516101919190611641565b610184610a68565b61021d6102a03660046115f6565b610a77565b6101ad6102b33660046115f6565b610c22565b6101ad6102c63660046115f6565b610ca6565b6102d3610cba565b6040516101919190611cc3565b61021d6102ee366004611568565b610cc6565b6101c2610301366004611589565b610f5e565b61021d610314366004611568565b610f96565b60606005805461032890611d87565b80601f016020809104026020016040519081016040528092919081815260200182805461035490611d87565b80156103a15780601f10610376576101008083540402835291602001916103a1565b820191906000526020600020905b81548152906001019060200180831161038457829003601f168201915b5050505050905090565b60006103b83384846110e3565b50600192915050565b60035490565b60006103d48484846111e5565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260205260408120816104026114a8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a20565b60405180910390fd5b61049d8561048e6114a8565b6104988685611d70565b6110e3565b506001949350505050565b601290565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103b8918590610498908690611ce2565b6104f96114a8565b73ffffffffffffffffffffffffffffffffffffffff16610517610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b73ffffffffffffffffffffffffffffffffffffffff82166105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611c26565b600354600454116105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061184f565b60006003546004546106009190611d70565b90508181111561060d5750805b806003600082825461061f9190611ce2565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081208054839290610659908490611ce2565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106a9908590611cba565b60405180910390a3505050565b606060088054806020026020016040519081016040528092919081815260200182805480156103a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116106f0575050505050905090565b61072c6114a8565b73ffffffffffffffffffffffffffffffffffffffff1661074a610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b336107a157600080fd5b6107aa816114ac565b156107e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906117f2565b600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260409020545b919050565b61088c6114a8565b73ffffffffffffffffffffffffffffffffffffffff166108aa610a4c565b73ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61096e6114a8565b73ffffffffffffffffffffffffffffffffffffffff1661098c610a4c565b73ffffffffffffffffffffffffffffffffffffffff16146109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001661ffff831617908190556040517f6f365bf6fe6bc415297589e908c19ba809f22a525a18a3d3e4e65ce5e1f1b03791610a419163ffffffff9190911690611cc3565b60405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60606006805461032890611d87565b610a80336114ac565b1515600114610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611c5d565b33610af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611795565b73ffffffffffffffffffffffffffffffffffffffff8216610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611ab2565b3360009081526001602052604090205481811015610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906119c3565b610b938282611d70565b336000908152600160205260408082209290925573ffffffffffffffffffffffffffffffffffffffff851681529081208054849290610bd3908490611ce2565b909155505060405173ffffffffffffffffffffffffffffffffffffffff84169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106a9908690611cba565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611bc9565b610c9c33856104988685611d70565b5060019392505050565b60006103b8610cb36114a8565b84846111e5565b60075463ffffffff1681565b610cce6114a8565b73ffffffffffffffffffffffffffffffffffffffff16610cec610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614610d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b33610d4357600080fd5b60085460005b81811015610f59578273ffffffffffffffffffffffffffffffffffffffff1660088281548110610da2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610f47576008610dd7600184611d70565b81548110610e0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546008805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610e6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008805480610eee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555b80610f5181611ddb565b915050610d49565b505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b610f9e6114a8565b73ffffffffffffffffffffffffffffffffffffffff16610fbc610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b73ffffffffffffffffffffffffffffffffffffffff8116611056576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906118ac565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611b6c565b73ffffffffffffffffffffffffffffffffffffffff821661117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611909565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106a9908590611cba565b73ffffffffffffffffffffffffffffffffffffffff8316611232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611b0f565b73ffffffffffffffffffffffffffffffffffffffff821661127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611738565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054818110156112df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611966565b60075463ffffffff16156113ea57600754600090620186a09063ffffffff16611309606486611cfa565b6113139190611d33565b61131d9190611cfa565b90506113298383611d70565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020556113598184611d70565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600160205260408120805490919061138e908490611ce2565b9250508190555080600360008282546113a79190611d70565b90915550506040517f4cd1cedac1faabaf2d2d626f6caa6a7df4cf69ec7ecc3bcae2f938bdedc86071906113dc908390611cba565b60405180910390a15061143d565b6113f48282611d70565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160205260408082209390935590851681529081208054849290611437908490611ce2565b90915550505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161149a9190611cba565b60405180910390a350505050565b3390565b6008546000908190815b8181101561153b57600881815481106114f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff8681169116141561152957600192505b8061153381611ddb565b9150506114b6565b50909392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087f57600080fd5b600060208284031215611579578081fd5b61158282611544565b9392505050565b6000806040838503121561159b578081fd5b6115a483611544565b91506115b260208401611544565b90509250929050565b6000806000606084860312156115cf578081fd5b6115d884611544565b92506115e660208501611544565b9150604084013590509250925092565b60008060408385031215611608578182fd5b61161183611544565b946020939093013593505050565b600060208284031215611630578081fd5b813561ffff81168114611582578182fd5b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156116b057835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161167e565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156116f3578581018301518582016040015282016116d7565b818111156117045783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f534f4c413a207472616e736665722066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f534f4c413a2054686174206164647265737320697320616c726561647920696e60408201527f20746865206c6973742e00000000000000000000000000000000000000000000606082015260800190565b60208082526037908201527f45524332303a20796f752061726520747279696e6720746f206d696e74206d6f60408201527f7265207468616e20746865206d617820737570706c792e000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260408201527f616c616e63650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f534f4c413a207472616e7366657220616d6f756e74206578636565647320626160408201527f6c616e6365000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160408201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f534f4c413a207472616e7366657220746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760408201527f207a65726f000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b6020808252602b908201527f534f4c413a204f6e6c792050726f636573736f72732063616e2063616c6c207460408201527f686973206d6574686f642e000000000000000000000000000000000000000000606082015260800190565b90815260200190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60008219821115611cf557611cf5611e14565b500190565b600082611d2e577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6b57611d6b611e14565b500290565b600082821015611d8257611d82611e14565b500390565b600281046001821680611d9b57607f821691505b60208210811415611dd5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e0d57611e0d611e14565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122008377d75f14a8924c01b584c62be45894d25d4ef832ba9c8c53663353d7ef6bc64736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063715018a6116100d8578063a457c2d71161008c578063d8b8e45611610066578063d8b8e456146102e0578063dd62ed3e146102f3578063f2fde38b1461030657610177565b8063a457c2d7146102a5578063a9059cbb146102b8578063acecbd22146102cb57610177565b80638da5cb5b116100bd5780638da5cb5b1461027557806395d89b411461028a5780639efe01b31461029257610177565b8063715018a61461025a5780637bdefde61461026257610177565b8063395093511161012f5780634a347e4b116101145780634a347e4b1461021f5780636e4b11fd1461023457806370a082311461024757610177565b806339509351146101f757806340c10f191461020a57610177565b806318160ddd1161016057806318160ddd146101ba57806323b872dd146101cf578063313ce567146101e257610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610319565b60405161019191906116c7565b60405180910390f35b6101ad6101a83660046115f6565b6103ab565b60405161019191906116bc565b6101c26103c1565b6040516101919190611cba565b6101ad6101dd3660046115bb565b6103c7565b6101ea6104a8565b6040516101919190611cd4565b6101ad6102053660046115f6565b6104ad565b61021d6102183660046115f6565b6104f1565b005b6102276106b6565b6040516101919190611662565b61021d610242366004611568565b610724565b6101c2610255366004611568565b610858565b61021d610884565b61021d61027036600461161f565b610966565b61027d610a4c565b6040516101919190611641565b610184610a68565b61021d6102a03660046115f6565b610a77565b6101ad6102b33660046115f6565b610c22565b6101ad6102c63660046115f6565b610ca6565b6102d3610cba565b6040516101919190611cc3565b61021d6102ee366004611568565b610cc6565b6101c2610301366004611589565b610f5e565b61021d610314366004611568565b610f96565b60606005805461032890611d87565b80601f016020809104026020016040519081016040528092919081815260200182805461035490611d87565b80156103a15780601f10610376576101008083540402835291602001916103a1565b820191906000526020600020905b81548152906001019060200180831161038457829003601f168201915b5050505050905090565b60006103b83384846110e3565b50600192915050565b60035490565b60006103d48484846111e5565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260205260408120816104026114a8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a20565b60405180910390fd5b61049d8561048e6114a8565b6104988685611d70565b6110e3565b506001949350505050565b601290565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103b8918590610498908690611ce2565b6104f96114a8565b73ffffffffffffffffffffffffffffffffffffffff16610517610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b73ffffffffffffffffffffffffffffffffffffffff82166105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611c26565b600354600454116105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104799061184f565b60006003546004546106009190611d70565b90508181111561060d5750805b806003600082825461061f9190611ce2565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081208054839290610659908490611ce2565b909155505060405173ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106a9908590611cba565b60405180910390a3505050565b606060088054806020026020016040519081016040528092919081815260200182805480156103a157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116106f0575050505050905090565b61072c6114a8565b73ffffffffffffffffffffffffffffffffffffffff1661074a610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b336107a157600080fd5b6107aa816114ac565b156107e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906117f2565b600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260409020545b919050565b61088c6114a8565b73ffffffffffffffffffffffffffffffffffffffff166108aa610a4c565b73ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b61096e6114a8565b73ffffffffffffffffffffffffffffffffffffffff1661098c610a4c565b73ffffffffffffffffffffffffffffffffffffffff16146109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001661ffff831617908190556040517f6f365bf6fe6bc415297589e908c19ba809f22a525a18a3d3e4e65ce5e1f1b03791610a419163ffffffff9190911690611cc3565b60405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60606006805461032890611d87565b610a80336114ac565b1515600114610abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611c5d565b33610af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611795565b73ffffffffffffffffffffffffffffffffffffffff8216610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611ab2565b3360009081526001602052604090205481811015610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906119c3565b610b938282611d70565b336000908152600160205260408082209290925573ffffffffffffffffffffffffffffffffffffffff851681529081208054849290610bd3908490611ce2565b909155505060405173ffffffffffffffffffffffffffffffffffffffff84169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106a9908690611cba565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611bc9565b610c9c33856104988685611d70565b5060019392505050565b60006103b8610cb36114a8565b84846111e5565b60075463ffffffff1681565b610cce6114a8565b73ffffffffffffffffffffffffffffffffffffffff16610cec610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614610d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b33610d4357600080fd5b60085460005b81811015610f59578273ffffffffffffffffffffffffffffffffffffffff1660088281548110610da2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff161415610f47576008610dd7600184611d70565b81548110610e0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602090912001546008805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610e6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008805480610eee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555b80610f5181611ddb565b915050610d49565b505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b610f9e6114a8565b73ffffffffffffffffffffffffffffffffffffffff16610fbc610a4c565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611a7d565b73ffffffffffffffffffffffffffffffffffffffff8116611056576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610479906118ac565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611b6c565b73ffffffffffffffffffffffffffffffffffffffff821661117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611909565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106a9908590611cba565b73ffffffffffffffffffffffffffffffffffffffff8316611232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611b0f565b73ffffffffffffffffffffffffffffffffffffffff821661127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611738565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054818110156112df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990611966565b60075463ffffffff16156113ea57600754600090620186a09063ffffffff16611309606486611cfa565b6113139190611d33565b61131d9190611cfa565b90506113298383611d70565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020556113598184611d70565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600160205260408120805490919061138e908490611ce2565b9250508190555080600360008282546113a79190611d70565b90915550506040517f4cd1cedac1faabaf2d2d626f6caa6a7df4cf69ec7ecc3bcae2f938bdedc86071906113dc908390611cba565b60405180910390a15061143d565b6113f48282611d70565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160205260408082209390935590851681529081208054849290611437908490611ce2565b90915550505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161149a9190611cba565b60405180910390a350505050565b3390565b6008546000908190815b8181101561153b57600881815481106114f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff8681169116141561152957600192505b8061153381611ddb565b9150506114b6565b50909392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087f57600080fd5b600060208284031215611579578081fd5b61158282611544565b9392505050565b6000806040838503121561159b578081fd5b6115a483611544565b91506115b260208401611544565b90509250929050565b6000806000606084860312156115cf578081fd5b6115d884611544565b92506115e660208501611544565b9150604084013590509250925092565b60008060408385031215611608578182fd5b61161183611544565b946020939093013593505050565b600060208284031215611630578081fd5b813561ffff81168114611582578182fd5b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156116b057835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161167e565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156116f3578581018301518582016040015282016116d7565b818111156117045783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f534f4c413a207472616e736665722066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f534f4c413a2054686174206164647265737320697320616c726561647920696e60408201527f20746865206c6973742e00000000000000000000000000000000000000000000606082015260800190565b60208082526037908201527f45524332303a20796f752061726520747279696e6720746f206d696e74206d6f60408201527f7265207468616e20746865206d617820737570706c792e000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260408201527f616c616e63650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f534f4c413a207472616e7366657220616d6f756e74206578636565647320626160408201527f6c616e6365000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160408201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f534f4c413a207472616e7366657220746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760408201527f207a65726f000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b6020808252602b908201527f534f4c413a204f6e6c792050726f636573736f72732063616e2063616c6c207460408201527f686973206d6574686f642e000000000000000000000000000000000000000000606082015260800190565b90815260200190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b60008219821115611cf557611cf5611e14565b500190565b600082611d2e577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d6b57611d6b611e14565b500290565b600082821015611d8257611d82611e14565b500390565b600281046001821680611d9b57607f821691505b60208210811415611dd5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e0d57611e0d611e14565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122008377d75f14a8924c01b584c62be45894d25d4ef832ba9c8c53663353d7ef6bc64736f6c63430008000033

Deployed Bytecode Sourcemap

6380:10949:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7080:76;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8979:146;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8065:93::-;;;:::i;:::-;;;;;;;:::i;9567:383::-;;;;;;:::i;:::-;;:::i;7941:69::-;;;:::i;:::-;;;;;;;:::i;10322:190::-;;;;;;:::i;:::-;;:::i;15470:455::-;;;;;;:::i;:::-;;:::i;:::-;;12926:108;;;:::i;:::-;;;;;;;:::i;12122:239::-;;;;;;:::i;:::-;;:::i;8211:112::-;;;;;;:::i;:::-;;:::i;5869:133::-;;;:::i;11458:151::-;;;;;;:::i;:::-;;:::i;5278:78::-;;;:::i;:::-;;;;;;;:::i;7262:80::-;;;:::i;13418:529::-;;;;;;:::i;:::-;;:::i;10972:340::-;;;;;;:::i;:::-;;:::i;8511:154::-;;;;;;:::i;:::-;;:::i;6713:31::-;;;:::i;:::-;;;;;;;:::i;12447:352::-;;;;;;:::i;:::-;;:::i;8718:136::-;;;;;;:::i;:::-;;:::i;6142:223::-;;;;;;:::i;:::-;;:::i;7080:76::-;7119:13;7146:5;7139:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7080:76;:::o;8979:146::-;9056:4;9067:37;9076:10;9088:7;9097:6;9067:8;:37::i;:::-;-1:-1:-1;9116:4:0;8979:146;;;;:::o;8065:93::-;8141:12;;8065:93;:::o;9567:383::-;9667:4;9678:36;9688:6;9696:9;9707:6;9678:9;:36::i;:::-;9748:19;;;9721:24;9748:19;;;:11;:19;;;;;9721:24;9768:12;:10;:12::i;:::-;9748:33;;;;;;;;;;;;;;;;9721:60;;9814:6;9794:16;:26;;9786:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9870:57;9879:6;9887:12;:10;:12::i;:::-;9901:25;9920:6;9901:16;:25;:::i;:::-;9870:8;:57::i;:::-;-1:-1:-1;9941:4:0;;9567:383;-1:-1:-1;;;;9567:383:0:o;7941:69::-;8003:2;7941:69;:::o;10322:190::-;10424:10;10404:4;10445:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;10404:4;;10415:76;;10436:7;;10445:45;;10480:10;;10445:45;:::i;15470:455::-;5482:12;:10;:12::i;:::-;5471:23;;:7;:5;:7::i;:::-;:23;;;5463:68;;;;;;;;;;;;:::i;:::-;15549:21:::1;::::0;::::1;15541:65;;;;;;;;;;;;:::i;:::-;15632:12;;15619:10;;:25;15611:93;;;;;;;;;;;;:::i;:::-;15711:15;15742:12;;15729:10;;:25;;;;:::i;:::-;15711:43;;15773:6;15763:7;:16;15759:50;;;-1:-1:-1::0;15797:6:0;15759:50:::1;15831:7;15815:12;;:23;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;15843:18:0::1;::::0;::::1;;::::0;;;:9:::1;:18;::::0;;;;:29;;15865:7;;15843:18;:29:::1;::::0;15865:7;;15843:29:::1;:::i;:::-;::::0;;;-1:-1:-1;;15882:38:0::1;::::0;::::1;::::0;::::1;::::0;15899:1:::1;::::0;15882:38:::1;::::0;::::1;::::0;15912:7;;15882:38:::1;:::i;:::-;;;;;;;;5536:1;15470:455:::0;;:::o;12926:108::-;12979:16;13011:18;13004:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12926:108;:::o;12122:239::-;5482:12;:10;:12::i;:::-;5471:23;;:7;:5;:7::i;:::-;:23;;;5463:68;;;;;;;;;;;;:::i;:::-;12203:10:::1;12195:33;;;::::0;::::1;;12241:21;12253:8;12241:11;:21::i;:::-;:30;12233:85;;;;;;;;;;;;:::i;:::-;12323:18;:33:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;12323:33:0;;;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;12122:239::o;8211:112::-;8300:18;;;8279:7;8300:18;;;:9;:18;;;;;;8211:112;;;;:::o;5869:133::-;5482:12;:10;:12::i;:::-;5471:23;;:7;:5;:7::i;:::-;:23;;;5463:68;;;;;;;;;;;;:::i;:::-;5970:1:::1;5954:6:::0;;5933:40:::1;::::0;::::1;5954:6:::0;;::::1;::::0;5933:40:::1;::::0;5970:1;;5933:40:::1;5995:1;5978:19:::0;;;::::1;::::0;;5869:133::o;11458:151::-;5482:12;:10;:12::i;:::-;5471:23;;:7;:5;:7::i;:::-;:23;;;5463:68;;;;;;;;;;;;:::i;:::-;11530:13:::1;:30:::0;;;::::1;;::::0;::::1;;::::0;;;;11570:34:::1;::::0;::::1;::::0;::::1;::::0;11530:30:::1;11590:13:::0;;;::::1;::::0;11570:34:::1;:::i;:::-;;;;;;;;11458:151:::0;:::o;5278:78::-;5324:7;5345:6;;;5278:78;:::o;7262:80::-;7303:13;7330:7;7323:14;;;;;:::i;13418:529::-;6930:23;6942:10;6930:11;:23::i;:::-;:31;;6957:4;6930:31;6922:87;;;;;;;;;;;;:::i;:::-;13526:10:::1;13518:73;;;;;;;;;;;;:::i;:::-;13604:24;::::0;::::1;13596:71;;;;;;;;;;;;:::i;:::-;13708:10;13674:21;13698::::0;;;:9:::1;:21;::::0;;;;;13732:24;;::::1;;13724:74;;;;;;;;;;;;:::i;:::-;13829:23;13845:7:::0;13829:13;:23:::1;:::i;:::-;13815:10;13805:21;::::0;;;:9:::1;:21;::::0;;;;;:47;;;;:21:::1;13857::::0;::::1;::::0;;;;;:32;;13882:7;;13805:21;13857:32:::1;::::0;13882:7;;13857:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;13901:41:0::1;::::0;::::1;::::0;::::1;::::0;13910:10:::1;::::0;13901:41:::1;::::0;::::1;::::0;13934:7;;13901:41:::1;:::i;10972:340::-:0;11109:10;11059:4;11097:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;11142:35;;;;11134:85;;;;;;;;;;;;:::i;:::-;11224:65;11233:10;11245:7;11254:34;11273:15;11254:16;:34;:::i;11224:65::-;-1:-1:-1;11303:4:0;;10972:340;-1:-1:-1;;;10972:340:0:o;8511:154::-;8591:4;8602:42;8612:12;:10;:12::i;:::-;8626:9;8637:6;8602:9;:42::i;6713:31::-;;;;;;:::o;12447:352::-;5482:12;:10;:12::i;:::-;5471:23;;:7;:5;:7::i;:::-;:23;;;5463:68;;;;;;;;;;;;:::i;:::-;12531:10:::1;12523:33;;;::::0;::::1;;12575:18;:25:::0;12561:11:::1;12607:188;12628:6;12624:1;:10;12607:188;;;12679:8;12654:33;;:18;12673:1;12654:21;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;:33;12650:140;;;12724:18;12743:8;12750:1;12743:6:::0;:8:::1;:::i;:::-;12724:28;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;12700:18:::1;:21:::0;;12724:28:::1;::::0;;::::1;::::0;12719:1;;12700:21;::::1;;;;;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12759:18;:24;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;12650:140:::1;12636:3:::0;::::1;::::0;::::1;:::i;:::-;;;;12607:188;;;;5536:1;12447:352:::0;:::o;8718:136::-;8822:18;;;;8801:7;8822:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8718:136::o;6142:223::-;5482:12;:10;:12::i;:::-;5471:23;;:7;:5;:7::i;:::-;:23;;;5463:68;;;;;;;;;;;;:::i;:::-;6225:22:::1;::::0;::::1;6217:73;;;;;;;;;;;;:::i;:::-;6321:6;::::0;;6300:38:::1;::::0;::::1;::::0;;::::1;::::0;6321:6;::::1;::::0;6300:38:::1;::::0;::::1;6343:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;6142:223::o;17015:311::-;17103:19;;;17095:68;;;;;;;;;;;;:::i;:::-;17176:21;;;17168:68;;;;;;;;;;;;:::i;:::-;17243:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;17289:32;;;;;17273:6;;17289:32;:::i;14422:794::-;14514:20;;;14506:70;;;;;;;;;;;;:::i;:::-;14589:23;;;14581:71;;;;;;;;;;;;:::i;:::-;14683:17;;;14659:21;14683:17;;;:9;:17;;;;;;14713:23;;;;14705:74;;;;;;;;;;;;:::i;:::-;14790:13;;;;:17;14786:379;;14859:13;;14818:23;;14875:6;;14859:13;;14844:12;14853:3;14844:6;:12;:::i;:::-;:28;;;;:::i;:::-;:37;;;;:::i;:::-;14818:63;-1:-1:-1;14907:22:0;14923:6;14907:13;:22;:::i;:::-;14887:17;;;;;;;:9;:17;;;;;:42;14960:24;14969:15;14960:6;:24;:::i;:::-;14935:20;;;;;;;:9;:20;;;;;:50;;:20;;;:50;;;;;:::i;:::-;;;;;;;;15007:15;14991:12;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;15035:22:0;;;;;;15041:15;;15035:22;:::i;:::-;;;;;;;;14786:379;;;;15101:22;15117:6;15101:13;:22;:::i;:::-;15081:17;;;;;;;;:9;:17;;;;;;:42;;;;15129:20;;;;;;;;:30;;15153:6;;15081:17;15129:30;;15153:6;;15129:30;:::i;:::-;;;;-1:-1:-1;;14786:379:0;15193:9;15176:35;;15185:6;15176:35;;;15204:6;15176:35;;;;;;:::i;:::-;;;;;;;;14422:794;;;;:::o;3992:89::-;4066:10;3992:89;:::o;11730:302::-;11847:18;:25;11790:4;;;;;11879:123;11900:6;11896:1;:10;11879:123;;;11937:18;11956:1;11937:21;;;;;;;;;;;;;;;;;;;;;;;;;;;11926:32;;;11937:21;;11926:32;11922:75;;;11986:4;11971:19;;11922:75;11908:3;;;;:::i;:::-;;;;11879:123;;;-1:-1:-1;12015:12:0;;11730:302;-1:-1:-1;;;11730:302:0:o;14:198:1:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:198;;329:2;317:9;308:7;304:23;300:32;297:2;;;350:6;342;335:22;297:2;378:31;399:9;378:31;:::i;:::-;368:41;287:128;-1:-1:-1;;;287:128:1:o;420:274::-;;;549:2;537:9;528:7;524:23;520:32;517:2;;;570:6;562;555:22;517:2;598:31;619:9;598:31;:::i;:::-;588:41;;648:40;684:2;673:9;669:18;648:40;:::i;:::-;638:50;;507:187;;;;;:::o;699:342::-;;;;845:2;833:9;824:7;820:23;816:32;813:2;;;866:6;858;851:22;813:2;894:31;915:9;894:31;:::i;:::-;884:41;;944:40;980:2;969:9;965:18;944:40;:::i;:::-;934:50;;1031:2;1020:9;1016:18;1003:32;993:42;;803:238;;;;;:::o;1046:266::-;;;1175:2;1163:9;1154:7;1150:23;1146:32;1143:2;;;1196:6;1188;1181:22;1143:2;1224:31;1245:9;1224:31;:::i;:::-;1214:41;1302:2;1287:18;;;;1274:32;;-1:-1:-1;;;1133:179:1:o;1317:292::-;;1428:2;1416:9;1407:7;1403:23;1399:32;1396:2;;;1449:6;1441;1434:22;1396:2;1493:9;1480:23;1543:6;1536:5;1532:18;1525:5;1522:29;1512:2;;1570:6;1562;1555:22;1614:226;1790:42;1778:55;;;;1760:74;;1748:2;1733:18;;1715:125::o;1845:684::-;2016:2;2068:21;;;2138:13;;2041:18;;;2160:22;;;1845:684;;2016:2;2239:15;;;;2213:2;2198:18;;;1845:684;2285:218;2299:6;2296:1;2293:13;2285:218;;;2364:13;;2379:42;2360:62;2348:75;;2478:15;;;;2443:12;;;;2321:1;2314:9;2285:218;;;-1:-1:-1;2520:3:1;;1996:533;-1:-1:-1;;;;;;1996:533:1:o;2534:187::-;2699:14;;2692:22;2674:41;;2662:2;2647:18;;2629:92::o;2726:662::-;;2867:2;2896;2885:9;2878:21;2928:6;2922:13;2971:6;2966:2;2955:9;2951:18;2944:34;2996:4;3009:140;3023:6;3020:1;3017:13;3009:140;;;3118:14;;;3114:23;;3108:30;3084:17;;;3103:2;3080:26;3073:66;3038:10;;3009:140;;;3167:6;3164:1;3161:13;3158:2;;;3237:4;3232:2;3223:6;3212:9;3208:22;3204:31;3197:45;3158:2;-1:-1:-1;3304:2:1;3292:15;3309:66;3288:88;3273:104;;;;3379:2;3269:113;;2847:541;-1:-1:-1;;;2847:541:1:o;3393:399::-;3595:2;3577:21;;;3634:2;3614:18;;;3607:30;3673:34;3668:2;3653:18;;3646:62;3744:5;3739:2;3724:18;;3717:33;3782:3;3767:19;;3567:225::o;3797:400::-;3999:2;3981:21;;;4038:2;4018:18;;;4011:30;4077:34;4072:2;4057:18;;4050:62;4148:6;4143:2;4128:18;;4121:34;4187:3;4172:19;;3971:226::o;4202:406::-;4404:2;4386:21;;;4443:2;4423:18;;;4416:30;4482:34;4477:2;4462:18;;4455:62;4553:12;4548:2;4533:18;;4526:40;4598:3;4583:19;;4376:232::o;4613:419::-;4815:2;4797:21;;;4854:2;4834:18;;;4827:30;4893:34;4888:2;4873:18;;4866:62;4964:25;4959:2;4944:18;;4937:53;5022:3;5007:19;;4787:245::o;5037:402::-;5239:2;5221:21;;;5278:2;5258:18;;;5251:30;5317:34;5312:2;5297:18;;5290:62;5388:8;5383:2;5368:18;;5361:36;5429:3;5414:19;;5211:228::o;5444:398::-;5646:2;5628:21;;;5685:2;5665:18;;;5658:30;5724:34;5719:2;5704:18;;5697:62;5795:4;5790:2;5775:18;;5768:32;5832:3;5817:19;;5618:224::o;5847:402::-;6049:2;6031:21;;;6088:2;6068:18;;;6061:30;6127:34;6122:2;6107:18;;6100:62;6198:8;6193:2;6178:18;;6171:36;6239:3;6224:19;;6021:228::o;6254:401::-;6456:2;6438:21;;;6495:2;6475:18;;;6468:30;6534:34;6529:2;6514:18;;6507:62;6605:7;6600:2;6585:18;;6578:35;6645:3;6630:19;;6428:227::o;6660:404::-;6862:2;6844:21;;;6901:2;6881:18;;;6874:30;6940:34;6935:2;6920:18;;6913:62;7011:10;7006:2;6991:18;;6984:38;7054:3;7039:19;;6834:230::o;7069:356::-;7271:2;7253:21;;;7290:18;;;7283:30;7349:34;7344:2;7329:18;;7322:62;7416:2;7401:18;;7243:182::o;7430:398::-;7632:2;7614:21;;;7671:2;7651:18;;;7644:30;7710:34;7705:2;7690:18;;7683:62;7781:4;7776:2;7761:18;;7754:32;7818:3;7803:19;;7604:224::o;7833:401::-;8035:2;8017:21;;;8074:2;8054:18;;;8047:30;8113:34;8108:2;8093:18;;8086:62;8184:7;8179:2;8164:18;;8157:35;8224:3;8209:19;;8007:227::o;8239:400::-;8441:2;8423:21;;;8480:2;8460:18;;;8453:30;8519:34;8514:2;8499:18;;8492:62;8590:6;8585:2;8570:18;;8563:34;8629:3;8614:19;;8413:226::o;8644:401::-;8846:2;8828:21;;;8885:2;8865:18;;;8858:30;8924:34;8919:2;8904:18;;8897:62;8995:7;8990:2;8975:18;;8968:35;9035:3;9020:19;;8818:227::o;9050:355::-;9252:2;9234:21;;;9291:2;9271:18;;;9264:30;9330:33;9325:2;9310:18;;9303:61;9396:2;9381:18;;9224:181::o;9410:407::-;9612:2;9594:21;;;9651:2;9631:18;;;9624:30;9690:34;9685:2;9670:18;;9663:62;9761:13;9756:2;9741:18;;9734:41;9807:3;9792:19;;9584:233::o;9822:177::-;9968:25;;;9956:2;9941:18;;9923:76::o;10004:192::-;10178:10;10166:23;;;;10148:42;;10136:2;10121:18;;10103:93::o;10201:184::-;10373:4;10361:17;;;;10343:36;;10331:2;10316:18;;10298:87::o;10390:128::-;;10461:1;10457:6;10454:1;10451:13;10448:2;;;10467:18;;:::i;:::-;-1:-1:-1;10503:9:1;;10438:80::o;10523:274::-;;10589:1;10579:2;;10624:77;10621:1;10614:88;10725:4;10722:1;10715:15;10753:4;10750:1;10743:15;10579:2;-1:-1:-1;10782:9:1;;10569:228::o;10802:::-;;10968:1;10900:66;10896:74;10893:1;10890:81;10885:1;10878:9;10871:17;10867:105;10864:2;;;10975:18;;:::i;:::-;-1:-1:-1;11015:9:1;;10854:176::o;11035:125::-;;11103:1;11100;11097:8;11094:2;;;11108:18;;:::i;:::-;-1:-1:-1;11145:9:1;;11084:76::o;11165:437::-;11250:1;11240:12;;11297:1;11287:12;;;11308:2;;11362:4;11354:6;11350:17;11340:27;;11308:2;11415;11407:6;11404:14;11384:18;11381:38;11378:2;;;11452:77;11449:1;11442:88;11553:4;11550:1;11543:15;11581:4;11578:1;11571:15;11378:2;;11220:382;;;:::o;11607:195::-;;11677:66;11670:5;11667:77;11664:2;;;11747:18;;:::i;:::-;-1:-1:-1;11794:1:1;11783:13;;11654:148::o;11807:184::-;11859:77;11856:1;11849:88;11956:4;11953:1;11946:15;11980:4;11977:1;11970:15

Swarm Source

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