ETH Price: $3,112.21 (+1.35%)
Gas: 4 Gwei

Token

MuturiCollection (MUT)
 

Overview

Max Total Supply

3,760 MUT

Holders

853

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
apeazuki.eth
Balance
5 MUT
0x01a7e0d59a07288fabb63ffa91b597d524e235fc
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MUT

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-13
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}
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);
}
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}
interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    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");
    }
    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");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}
contract ERC721A is
  Context,
  ERC165,
  IERC721,
  IERC721Metadata,
  IERC721Enumerable
{
  using Address for address;
  using Strings for uint256;
  struct TokenOwnership {
    address addr;
    uint64 startTimestamp;
  }
  struct AddressData {
    uint128 balance;
    uint128 numberMinted;
  }
  uint256 private currentIndex = 0;
  uint256 internal immutable collectionSize;
  uint256 internal immutable maxBatchSize;
  string private _name;
  string private _symbol;
  mapping(uint256 => TokenOwnership) private _ownerships;
  mapping(address => AddressData) private _addressData;
  mapping(uint256 => address) private _tokenApprovals;
  mapping(address => mapping(address => bool)) private _operatorApprovals;
  constructor(
    string memory name_,
    string memory symbol_,
    uint256 maxBatchSize_,
    uint256 collectionSize_
  ) {
    require(
      collectionSize_ > 0,
      "ERC721A: collection must have a nonzero supply"
    );
    require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
    _name = name_;
    _symbol = symbol_;
    maxBatchSize = maxBatchSize_;
    collectionSize = collectionSize_;
  }
  function totalSupply() public view override returns (uint256) {
    return currentIndex;
  }
  function tokenByIndex(uint256 index) public view override returns (uint256) {
    require(index < totalSupply(), "ERC721A: global index out of bounds");
    return index;
  }
  function tokenOfOwnerByIndex(address owner, uint256 index)
    public
    view
    override
    returns (uint256)
  {
    require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
    uint256 numMintedSoFar = totalSupply();
    uint256 tokenIdsIdx = 0;
    address currOwnershipAddr = address(0);
    for (uint256 i = 0; i < numMintedSoFar; i++) {
      TokenOwnership memory ownership = _ownerships[i];
      if (ownership.addr != address(0)) {
        currOwnershipAddr = ownership.addr;
      }
      if (currOwnershipAddr == owner) {
        if (tokenIdsIdx == index) {
          return i;
        }
        tokenIdsIdx++;
      }
    }
    revert("ERC721A: unable to get token of owner by index");
  }
  function supportsInterface(bytes4 interfaceId)
    public
    view
    virtual
    override(ERC165, IERC165)
    returns (bool)
  {
    return
      interfaceId == type(IERC721).interfaceId ||
      interfaceId == type(IERC721Metadata).interfaceId ||
      interfaceId == type(IERC721Enumerable).interfaceId ||
      super.supportsInterface(interfaceId);
  }
  function balanceOf(address owner) public view override returns (uint256) {
    require(owner != address(0), "ERC721A: balance query for the zero address");
    return uint256(_addressData[owner].balance);
  }
  function _numberMinted(address owner) internal view returns (uint256) {
    require(
      owner != address(0),
      "ERC721A: number minted query for the zero address"
    );
    return uint256(_addressData[owner].numberMinted);
  }
  function ownershipOf(uint256 tokenId)
    internal
    view
    returns (TokenOwnership memory)
  {
    require(_exists(tokenId), "ERC721A: owner query for nonexistent token");
    uint256 lowestTokenToCheck;
    if (tokenId >= maxBatchSize) {
      lowestTokenToCheck = tokenId - maxBatchSize + 1;
    }
    for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
      TokenOwnership memory ownership = _ownerships[curr];
      if (ownership.addr != address(0)) {
        return ownership;
      }
    }
    revert("ERC721A: unable to determine the owner of token");
  }
  function ownerOf(uint256 tokenId) public view override returns (address) {
    return ownershipOf(tokenId).addr;
  }
  function name() public view virtual override returns (string memory) {
    return _name;
  }
  function symbol() public view virtual override returns (string memory) {
    return _symbol;
  }
  function tokenURI(uint256 tokenId)
    public
    view
    virtual
    override
    returns (string memory)
  {
    require(
      _exists(tokenId),
      "ERC721Metadata: URI query for nonexistent token"
    );
    string memory baseURI = _baseURI();
    return
      bytes(baseURI).length > 0
        ? string(abi.encodePacked(baseURI, tokenId.toString()))
        : "";
  }
  function _baseURI() internal view virtual returns (string memory) {
    return "";
  }
  function approve(address to, uint256 tokenId) public override {
    address owner = ERC721A.ownerOf(tokenId);
    require(to != owner, "ERC721A: approval to current owner");
    require(
      _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
      "ERC721A: approve caller is not owner nor approved for all"
    );
    _approve(to, tokenId, owner);
  }
  function getApproved(uint256 tokenId) public view override returns (address) {
    require(_exists(tokenId), "ERC721A: approved query for nonexistent token");
    return _tokenApprovals[tokenId];
  }
  function setApprovalForAll(address operator, bool approved) public override {
    require(operator != _msgSender(), "ERC721A: approve to caller");
    _operatorApprovals[_msgSender()][operator] = approved;
    emit ApprovalForAll(_msgSender(), operator, approved);
  }
  function isApprovedForAll(address owner, address operator)
    public
    view
    virtual
    override
    returns (bool)
  {
    return _operatorApprovals[owner][operator];
  }
  function transferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    _transfer(from, to, tokenId);
  }
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    safeTransferFrom(from, to, tokenId, "");
  }
  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) public override {
    _transfer(from, to, tokenId);
    require(
      _checkOnERC721Received(from, to, tokenId, _data),
      "ERC721A: transfer to non ERC721Receiver implementer"
    );
  }
  function _exists(uint256 tokenId) internal view returns (bool) {
    return tokenId < currentIndex;
  }
  function _safeMint(address to, uint256 quantity) internal {
    _safeMint(to, quantity, "");
  }
  function _safeMint(
    address to,
    uint256 quantity,
    bytes memory _data
  ) internal {
    uint256 startTokenId = currentIndex;
    require(to != address(0), "ERC721A: mint to the zero address");
    require(!_exists(startTokenId), "ERC721A: token already minted");
    require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");
    _beforeTokenTransfers(address(0), to, startTokenId, quantity);
    AddressData memory addressData = _addressData[to];
    _addressData[to] = AddressData(
      addressData.balance + uint128(quantity),
      addressData.numberMinted + uint128(quantity)
    );
    _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));
    uint256 updatedIndex = startTokenId;
    for (uint256 i = 0; i < quantity; i++) {
      emit Transfer(address(0), to, updatedIndex);
      require(
        _checkOnERC721Received(address(0), to, updatedIndex, _data),
        "ERC721A: transfer to non ERC721Receiver implementer"
      );
      updatedIndex++;
    }
    currentIndex = updatedIndex;
    _afterTokenTransfers(address(0), to, startTokenId, quantity);
  }
  function _transfer(
    address from,
    address to,
    uint256 tokenId
  ) private {
    TokenOwnership memory prevOwnership = ownershipOf(tokenId);
    bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
      getApproved(tokenId) == _msgSender() ||
      isApprovedForAll(prevOwnership.addr, _msgSender()));
    require(
      isApprovedOrOwner,
      "ERC721A: transfer caller is not owner nor approved"
    );
    require(
      prevOwnership.addr == from,
      "ERC721A: transfer from incorrect owner"
    );
    require(to != address(0), "ERC721A: transfer to the zero address");
    _beforeTokenTransfers(from, to, tokenId, 1);
    _approve(address(0), tokenId, prevOwnership.addr);
    _addressData[from].balance -= 1;
    _addressData[to].balance += 1;
    _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
    uint256 nextTokenId = tokenId + 1;
    if (_ownerships[nextTokenId].addr == address(0)) {
      if (_exists(nextTokenId)) {
        _ownerships[nextTokenId] = TokenOwnership(
          prevOwnership.addr,
          prevOwnership.startTimestamp
        );
      }
    }
    emit Transfer(from, to, tokenId);
    _afterTokenTransfers(from, to, tokenId, 1);
  }
  function _approve(
    address to,
    uint256 tokenId,
    address owner
  ) private {
    _tokenApprovals[tokenId] = to;
    emit Approval(owner, to, tokenId);
  }
  uint256 public nextOwnerToExplicitlySet = 0;
  function _setOwnersExplicit(uint256 quantity) internal {
    uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
    require(quantity > 0, "quantity must be nonzero");
    uint256 endIndex = oldNextOwnerToSet + quantity - 1;
    if (endIndex > collectionSize - 1) {
      endIndex = collectionSize - 1;
    }
    require(_exists(endIndex), "not enough minted yet for this cleanup");
    for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
      if (_ownerships[i].addr == address(0)) {
        TokenOwnership memory ownership = ownershipOf(i);
        _ownerships[i] = TokenOwnership(
          ownership.addr,
          ownership.startTimestamp
        );
      }
    }
    nextOwnerToExplicitlySet = endIndex + 1;
  }
  function _checkOnERC721Received(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) private returns (bool) {
    if (to.isContract()) {
      try
        IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data)
      returns (bytes4 retval) {
        return retval == IERC721Receiver(to).onERC721Received.selector;
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert("ERC721A: transfer to non ERC721Receiver implementer");
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    } else {
      return true;
    }
  }
  function _beforeTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}
  function _afterTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}
}
contract MUT is ERC721A, Ownable, ReentrancyGuard {
    string public baseTokenURI;
    uint256 public collectionsize = 10000;
    uint256 public reservedsize = 100;
    uint256 public price = 0.0055 ether;
    uint256 public maxmint = 5;
    uint256 public freesize = 3333;
    uint256 public mintpause=1;
    mapping(address => uint256) public mintedq;
constructor() ERC721A("MuturiCollection", "MUT",50,10000)
{}
    function _onlyMinter() private view 
    { 
	require(msg.sender == tx.origin);
    }
    modifier onlyMinter 
    {
	_onlyMinter();
	_;
    }
    function ownerMintMulti(address recipient,uint256 value) public onlyOwner returns (uint256) 
    {
	_safeMint(recipient, value);
	return 1;
    }
    function isOwner(uint256 _id, address _address) public view virtual returns (bool) 
    {
	return ownerOf(_id) == _address;
    }
    function mint(uint256 st) external payable onlyMinter nonReentrant
    {
	require(mintpause==0, "Minting is not live yet!");
	if ( freesize < totalSupply() )
	{
    	    uint256 r=msg.value%price;
    	    require(r==0,"Bad ammount of ETH");
    	    st=msg.value/price;
    	    require(st>0,"Input amount=0");
	}
        require(mintedq[msg.sender] + st<=maxmint,"This would exceed the maximum NFTs/address!");
        require(totalSupply() + st <= collectionsize - reservedsize, "Sold out!" );
        mintedq[msg.sender]+=st;
	_safeMint(msg.sender,st);
    }
    function _baseURI() internal view virtual override returns (string memory) 
    {
	return baseTokenURI;
    }
    function setBaseTokenURI(string memory _b) public onlyOwner 
    {
	baseTokenURI = _b;
    }
    function setcollectionsize(uint256 _p) external onlyOwner 
    {
	collectionsize=_p;
    }
    function setfreesize(uint256 _p) external onlyOwner 
    {
	freesize=_p;
    }
    function setreservedsize(uint256 _p) external onlyOwner 
    {
	reservedsize=_p;
    }
    function setmintpause(uint256 _p) external onlyOwner
    {
        mintpause = _p;
    }
    function setmaxmint(uint256 _p) external onlyOwner 
    {
	maxmint=_p;
    }
    function setprice(uint256 _p) external onlyOwner 
    {
	price=_p;
    }
    function _sendmoney(address _address, uint256 _amount) private 
    {
        (bool success, ) = _address.call{value: _amount}("");
	require(success, "Transfer failed.");
    }
    function withdraw() public onlyOwner 
    {
	_sendmoney(owner(),address(this).balance);
    }
    function withdrawto(address payable to, uint256 amount) public onlyOwner 
    {
	require( address(this).balance >= amount, "Insufficient balance to withdraw");
	_sendmoney(to,amount);
    }
    function getmintstatus(address minter) public view virtual returns (string memory) 
    {
	string memory o1 = string(abi.encodePacked(
	"mintpause:",Strings.toString(mintpause),
	";maxmint:",Strings.toString(maxmint),
	";price:",Strings.toString(price),
	";freesize:",Strings.toString(freesize)
	));
	string memory o2 = string(abi.encodePacked(
	";totalsupply:", Strings.toString(totalSupply()), 
	";reservedsize:", Strings.toString(reservedsize), 
	";collectionsize:", Strings.toString(collectionsize),
	";minted:", Strings.toString(mintedq[minter]) 
	));
	string memory outstring = string(abi.encodePacked(o1,o2));
	return outstring;
    }
}

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":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionsize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freesize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"getmintstatus","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxmint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"st","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedq","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintpause","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"ownerMintMulti","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedsize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_b","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"setcollectionsize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"setfreesize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"setmaxmint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"setmintpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"setprice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"setreservedsize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawto","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600080556000600755612710600b556064600c5566138a388a43c000600d556005600e55610d05600f5560016010553480156200004057600080fd5b506040518060400160405280601081526020016f26baba3ab934a1b7b63632b1ba34b7b760811b8152506040518060400160405280600381526020016213555560ea1b815250603261271060008111620000f85760405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060448201526d6e6f6e7a65726f20737570706c7960901b60648201526084015b60405180910390fd5b600082116200015a5760405162461bcd60e51b815260206004820152602760248201527f455243373231413a206d61782062617463682073697a65206d757374206265206044820152666e6f6e7a65726f60c81b6064820152608401620000ef565b83516200016f906001906020870190620001fa565b50825162000185906002906020860190620001fa565b5060a091909152608052506200019d905033620001a8565b6001600955620002dd565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200020890620002a0565b90600052602060002090601f0160209004810192826200022c576000855562000277565b82601f106200024757805160ff191683800117855562000277565b8280016001018555821562000277579182015b82811115620002775782518255916020019190600101906200025a565b506200028592915062000289565b5090565b5b808211156200028557600081556001016200028a565b600181811c90821680620002b557607f821691505b60208210811415620002d757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516129226200030e60003960008181611ad601528181611b000152611f340152600050506129226000f3fe6080604052600436106102465760003560e01c8063830346cf11610139578063b88d4fde116100b6578063d547cfb71161007a578063d547cfb71461068a578063d7224ba01461069f578063d9e023b7146106b5578063db5ec004146106cb578063e985e9c5146106eb578063f2fde38b1461073457600080fd5b8063b88d4fde146105e7578063bdf68fba14610607578063c87b56dd1461061d578063cab2bab51461063d578063d49f0fa51461066a57600080fd5b8063a035b1fe116100fd578063a035b1fe1461055e578063a0712d6814610574578063a1a7723414610587578063a22cb465146105a7578063b00c3575146105c757600080fd5b8063830346cf146104d55780638aa80ea5146104f55780638da5cb5b1461050b57806393ea01d11461052957806395d89b411461054957600080fd5b80633ccfd60b116101c75780636352211e1161018b5780636352211e1461044a5780636b8dd0d71461046a57806370a082311461048a578063715018a6146104aa57806379eef03c146104bf57600080fd5b80633ccfd60b146103b557806342842e0e146103ca578063433ee791146103ea5780634f6ccce71461040a5780635a5d096c1461042a57600080fd5b80630b28105c1161020e5780630b28105c1461032057806318160ddd1461034057806323b872dd146103555780632f745c591461037557806330176e131461039557600080fd5b806301ffc9a71461024b57806306fdde0314610280578063081812fc146102a2578063090cdeaa146102da578063095ea7b3146102fe575b600080fd5b34801561025757600080fd5b5061026b6102663660046121f8565b610754565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956107c1565b604051610277919061226d565b3480156102ae57600080fd5b506102c26102bd366004612280565b610853565b6040516001600160a01b039091168152602001610277565b3480156102e657600080fd5b506102f0600c5481565b604051908152602001610277565b34801561030a57600080fd5b5061031e6103193660046122ae565b6108e3565b005b34801561032c57600080fd5b506102f061033b3660046122ae565b6109fb565b34801561034c57600080fd5b506000546102f0565b34801561036157600080fd5b5061031e6103703660046122da565b610a3b565b34801561038157600080fd5b506102f06103903660046122ae565b610a46565b3480156103a157600080fd5b5061031e6103b03660046123a7565b610bb4565b3480156103c157600080fd5b5061031e610bf5565b3480156103d657600080fd5b5061031e6103e53660046122da565b610c3c565b3480156103f657600080fd5b5061031e6104053660046122ae565b610c57565b34801561041657600080fd5b506102f0610425366004612280565b610cdb565b34801561043657600080fd5b5061026b6104453660046123f0565b610d3d565b34801561045657600080fd5b506102c2610465366004612280565b610d63565b34801561047657600080fd5b5061031e610485366004612280565b610d75565b34801561049657600080fd5b506102f06104a5366004612420565b610da4565b3480156104b657600080fd5b5061031e610e35565b3480156104cb57600080fd5b506102f060105481565b3480156104e157600080fd5b5061031e6104f0366004612280565b610e69565b34801561050157600080fd5b506102f0600e5481565b34801561051757600080fd5b506008546001600160a01b03166102c2565b34801561053557600080fd5b5061031e610544366004612280565b610e98565b34801561055557600080fd5b50610295610ec7565b34801561056a57600080fd5b506102f0600d5481565b61031e610582366004612280565b610ed6565b34801561059357600080fd5b5061031e6105a2366004612280565b61114e565b3480156105b357600080fd5b5061031e6105c236600461243d565b61117d565b3480156105d357600080fd5b5061031e6105e2366004612280565b611242565b3480156105f357600080fd5b5061031e610602366004612470565b611271565b34801561061357600080fd5b506102f0600f5481565b34801561062957600080fd5b50610295610638366004612280565b6112aa565b34801561064957600080fd5b506102f0610658366004612420565b60116020526000908152604090205481565b34801561067657600080fd5b5061031e610685366004612280565b611377565b34801561069657600080fd5b506102956113a6565b3480156106ab57600080fd5b506102f060075481565b3480156106c157600080fd5b506102f0600b5481565b3480156106d757600080fd5b506102956106e6366004612420565b611434565b3480156106f757600080fd5b5061026b6107063660046124f0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561074057600080fd5b5061031e61074f366004612420565b611525565b60006001600160e01b031982166380ac58cd60e01b148061078557506001600160e01b03198216635b5e139f60e01b145b806107a057506001600160e01b0319821663780e9d6360e01b145b806107bb57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600180546107d09061251e565b80601f01602080910402602001604051908101604052809291908181526020018280546107fc9061251e565b80156108495780601f1061081e57610100808354040283529160200191610849565b820191906000526020600020905b81548152906001019060200180831161082c57829003601f168201915b5050505050905090565b6000610860826000541190565b6108c75760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60006108ee82610d63565b9050806001600160a01b0316836001600160a01b0316141561095d5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b60648201526084016108be565b336001600160a01b038216148061097957506109798133610706565b6109eb5760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016108be565b6109f68383836115c0565b505050565b6008546000906001600160a01b03163314610a285760405162461bcd60e51b81526004016108be90612559565b610a32838361161c565b50600192915050565b6109f6838383611636565b6000610a5183610da4565b8210610aaa5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016108be565b600080549080805b83811015610b54576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610b0557805192505b876001600160a01b0316836001600160a01b03161415610b415786841415610b33575093506107bb92505050565b83610b3d816125a4565b9450505b5080610b4c816125a4565b915050610ab2565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b60648201526084016108be565b6008546001600160a01b03163314610bde5760405162461bcd60e51b81526004016108be90612559565b8051610bf190600a906020840190612152565b5050565b6008546001600160a01b03163314610c1f5760405162461bcd60e51b81526004016108be90612559565b610c3a610c346008546001600160a01b031690565b476119be565b565b6109f683838360405180602001604052806000815250611271565b6008546001600160a01b03163314610c815760405162461bcd60e51b81526004016108be90612559565b80471015610cd15760405162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742062616c616e636520746f20776974686472617760448201526064016108be565b610bf182826119be565b600080548210610d395760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016108be565b5090565b6000816001600160a01b0316610d5284610d63565b6001600160a01b0316149392505050565b6000610d6e82611a54565b5192915050565b6008546001600160a01b03163314610d9f5760405162461bcd60e51b81526004016108be90612559565b600c55565b60006001600160a01b038216610e105760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016108be565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6008546001600160a01b03163314610e5f5760405162461bcd60e51b81526004016108be90612559565b610c3a6000611bfe565b6008546001600160a01b03163314610e935760405162461bcd60e51b81526004016108be90612559565b600e55565b6008546001600160a01b03163314610ec25760405162461bcd60e51b81526004016108be90612559565b600f55565b6060600280546107d09061251e565b610ede611c50565b60026009541415610f315760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108be565b600260095560105415610f865760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e67206973206e6f74206c6976652079657421000000000000000060448201526064016108be565b600054600f541015611039576000600d5434610fa291906125d5565b90508015610fe75760405162461bcd60e51b8152602060048201526012602482015271084c2c840c2dadadeeadce840decc408aa8960731b60448201526064016108be565b600d54610ff490346125e9565b9150600082116110375760405162461bcd60e51b815260206004820152600e60248201526d0496e70757420616d6f756e743d360941b60448201526064016108be565b505b600e54336000908152601160205260409020546110579083906125fd565b11156110b95760405162461bcd60e51b815260206004820152602b60248201527f5468697320776f756c642065786365656420746865206d6178696d756d204e4660448201526a54732f616464726573732160a81b60648201526084016108be565b600c54600b546110c99190612615565b816110d360005490565b6110dd91906125fd565b11156111175760405162461bcd60e51b8152602060048201526009602482015268536f6c64206f75742160b81b60448201526064016108be565b33600090815260116020526040812080548392906111369084906125fd565b909155506111469050338261161c565b506001600955565b6008546001600160a01b031633146111785760405162461bcd60e51b81526004016108be90612559565b600b55565b6001600160a01b0382163314156111d65760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c657200000000000060448201526064016108be565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b0316331461126c5760405162461bcd60e51b81526004016108be90612559565b601055565b61127c848484611636565b61128884848484611c5c565b6112a45760405162461bcd60e51b81526004016108be9061262c565b50505050565b60606112b7826000541190565b61131b5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016108be565b6000611325611d6a565b905060008151116113455760405180602001604052806000815250611370565b8061134f84611d79565b60405160200161136092919061267f565b6040516020818303038152906040525b9392505050565b6008546001600160a01b031633146113a15760405162461bcd60e51b81526004016108be90612559565b600d55565b600a80546113b39061251e565b80601f01602080910402602001604051908101604052809291908181526020018280546113df9061251e565b801561142c5780601f106114015761010080835404028352916020019161142c565b820191906000526020600020905b81548152906001019060200180831161140f57829003601f168201915b505050505081565b60606000611443601054611d79565b61144e600e54611d79565b611459600d54611d79565b611464600f54611d79565b60405160200161147794939291906126ae565b6040516020818303038152906040529050600061149b61149660005490565b611d79565b6114a6600c54611d79565b6114b1600b54611d79565b6001600160a01b0387166000908152601160205260409020546114d390611d79565b6040516020016114e6949392919061275d565b60405160208183030381529060405290506000828260405160200161150c92919061267f565b60408051601f1981840301815291905295945050505050565b6008546001600160a01b0316331461154f5760405162461bcd60e51b81526004016108be90612559565b6001600160a01b0381166115b45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108be565b6115bd81611bfe565b50565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610bf1828260405180602001604052806000815250611e77565b600061164182611a54565b80519091506000906001600160a01b0316336001600160a01b0316148061167857503361166d84610853565b6001600160a01b0316145b8061168a5750815161168a9033610706565b9050806116f45760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016108be565b846001600160a01b031682600001516001600160a01b0316146117685760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b60648201526084016108be565b6001600160a01b0384166117cc5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016108be565b6117dc60008484600001516115c0565b6001600160a01b038516600090815260046020526040812080546001929061180e9084906001600160801b031661281b565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b0386166000908152600460205260408120805460019450909261185a91859116612843565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526003909152948520935184549151909216600160a01b026001600160e01b031990911691909216171790556118e28460016125fd565b6000818152600360205260409020549091506001600160a01b03166119745761190c816000541190565b156119745760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a0b576040519150601f19603f3d011682016040523d82523d6000602084013e611a10565b606091505b50509050806109f65760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016108be565b6040805180820190915260008082526020820152611a73826000541190565b611ad25760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b60648201526084016108be565b60007f00000000000000000000000000000000000000000000000000000000000000008310611b3357611b257f000000000000000000000000000000000000000000000000000000000000000084612615565b611b309060016125fd565b90505b825b818110611b9d576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611b8a57949350505050565b5080611b9581612865565b915050611b35565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b60648201526084016108be565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b333214610c3a57600080fd5b60006001600160a01b0384163b15611d5e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ca090339089908890889060040161287c565b602060405180830381600087803b158015611cba57600080fd5b505af1925050508015611cea575060408051601f3d908101601f19168201909252611ce7918101906128b9565b60015b611d44573d808015611d18576040519150601f19603f3d011682016040523d82523d6000602084013e611d1d565b606091505b508051611d3c5760405162461bcd60e51b81526004016108be9061262c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d62565b5060015b949350505050565b6060600a80546107d09061251e565b606081611d9d5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611dc75780611db1816125a4565b9150611dc09050600a836125e9565b9150611da1565b60008167ffffffffffffffff811115611de257611de261231b565b6040519080825280601f01601f191660200182016040528015611e0c576020820181803683370190505b5090505b8415611d6257611e21600183612615565b9150611e2e600a866125d5565b611e399060306125fd565b60f81b818381518110611e4e57611e4e6128d6565b60200101906001600160f81b031916908160001a905350611e70600a866125e9565b9450611e10565b6000546001600160a01b038416611eda5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016108be565b611ee5816000541190565b15611f325760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e74656400000060448201526064016108be565b7f0000000000000000000000000000000000000000000000000000000000000000831115611fad5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b60648201526084016108be565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190612009908790612843565b6001600160801b031681526020018583602001516120279190612843565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156121475760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461210b6000888488611c5c565b6121275760405162461bcd60e51b81526004016108be9061262c565b81612131816125a4565b925050808061213f906125a4565b9150506120be565b5060008190556119b6565b82805461215e9061251e565b90600052602060002090601f01602090048101928261218057600085556121c6565b82601f1061219957805160ff19168380011785556121c6565b828001600101855582156121c6579182015b828111156121c65782518255916020019190600101906121ab565b50610d399291505b80821115610d3957600081556001016121ce565b6001600160e01b0319811681146115bd57600080fd5b60006020828403121561220a57600080fd5b8135611370816121e2565b60005b83811015612230578181015183820152602001612218565b838111156112a45750506000910152565b60008151808452612259816020860160208601612215565b601f01601f19169290920160200192915050565b6020815260006113706020830184612241565b60006020828403121561229257600080fd5b5035919050565b6001600160a01b03811681146115bd57600080fd5b600080604083850312156122c157600080fd5b82356122cc81612299565b946020939093013593505050565b6000806000606084860312156122ef57600080fd5b83356122fa81612299565b9250602084013561230a81612299565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561234c5761234c61231b565b604051601f8501601f19908116603f011681019082821181831017156123745761237461231b565b8160405280935085815286868601111561238d57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156123b957600080fd5b813567ffffffffffffffff8111156123d057600080fd5b8201601f810184136123e157600080fd5b611d6284823560208401612331565b6000806040838503121561240357600080fd5b82359150602083013561241581612299565b809150509250929050565b60006020828403121561243257600080fd5b813561137081612299565b6000806040838503121561245057600080fd5b823561245b81612299565b91506020830135801515811461241557600080fd5b6000806000806080858703121561248657600080fd5b843561249181612299565b935060208501356124a181612299565b925060408501359150606085013567ffffffffffffffff8111156124c457600080fd5b8501601f810187136124d557600080fd5b6124e487823560208401612331565b91505092959194509250565b6000806040838503121561250357600080fd5b823561250e81612299565b9150602083013561241581612299565b600181811c9082168061253257607f821691505b6020821081141561255357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006000198214156125b8576125b861258e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826125e4576125e46125bf565b500690565b6000826125f8576125f86125bf565b500490565b600082198211156126105761261061258e565b500190565b6000828210156126275761262761258e565b500390565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008351612691818460208801612215565b8351908301906126a5818360208801612215565b01949350505050565b6936b4b73a3830bab9b29d60b11b8152600085516126d381600a850160208a01612215565b681db6b0bc36b4b73a1d60b91b600a9184019182015285516126fc816013840160208a01612215565b661db83934b1b29d60c91b60139290910191820152845161272481601a840160208901612215565b691db33932b2b9b4bd329d60b11b601a9290910191820152835161274f816024840160208801612215565b016024019695505050505050565b6c1dba37ba30b639bab838363c9d60991b81526000855161278581600d850160208a01612215565b6d1db932b9b2b93b32b239b4bd329d60911b600d9184019182015285516127b381601b840160208a01612215565b6f1db1b7b63632b1ba34b7b739b4bd329d60811b601b929091019182015284516127e481602b840160208901612215565b671db6b4b73a32b21d60c11b602b9290910191820152835161280d816033840160208801612215565b016033019695505050505050565b60006001600160801b038381169083168181101561283b5761283b61258e565b039392505050565b60006001600160801b038083168185168083038211156126a5576126a561258e565b6000816128745761287461258e565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128af90830184612241565b9695505050505050565b6000602082840312156128cb57600080fd5b8151611370816121e2565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220aa1508f89294b95711d1b3e5eff0c7073a335a94f0726870e69c0b50911330e364736f6c63430008090033

Deployed Bytecode

0x6080604052600436106102465760003560e01c8063830346cf11610139578063b88d4fde116100b6578063d547cfb71161007a578063d547cfb71461068a578063d7224ba01461069f578063d9e023b7146106b5578063db5ec004146106cb578063e985e9c5146106eb578063f2fde38b1461073457600080fd5b8063b88d4fde146105e7578063bdf68fba14610607578063c87b56dd1461061d578063cab2bab51461063d578063d49f0fa51461066a57600080fd5b8063a035b1fe116100fd578063a035b1fe1461055e578063a0712d6814610574578063a1a7723414610587578063a22cb465146105a7578063b00c3575146105c757600080fd5b8063830346cf146104d55780638aa80ea5146104f55780638da5cb5b1461050b57806393ea01d11461052957806395d89b411461054957600080fd5b80633ccfd60b116101c75780636352211e1161018b5780636352211e1461044a5780636b8dd0d71461046a57806370a082311461048a578063715018a6146104aa57806379eef03c146104bf57600080fd5b80633ccfd60b146103b557806342842e0e146103ca578063433ee791146103ea5780634f6ccce71461040a5780635a5d096c1461042a57600080fd5b80630b28105c1161020e5780630b28105c1461032057806318160ddd1461034057806323b872dd146103555780632f745c591461037557806330176e131461039557600080fd5b806301ffc9a71461024b57806306fdde0314610280578063081812fc146102a2578063090cdeaa146102da578063095ea7b3146102fe575b600080fd5b34801561025757600080fd5b5061026b6102663660046121f8565b610754565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956107c1565b604051610277919061226d565b3480156102ae57600080fd5b506102c26102bd366004612280565b610853565b6040516001600160a01b039091168152602001610277565b3480156102e657600080fd5b506102f0600c5481565b604051908152602001610277565b34801561030a57600080fd5b5061031e6103193660046122ae565b6108e3565b005b34801561032c57600080fd5b506102f061033b3660046122ae565b6109fb565b34801561034c57600080fd5b506000546102f0565b34801561036157600080fd5b5061031e6103703660046122da565b610a3b565b34801561038157600080fd5b506102f06103903660046122ae565b610a46565b3480156103a157600080fd5b5061031e6103b03660046123a7565b610bb4565b3480156103c157600080fd5b5061031e610bf5565b3480156103d657600080fd5b5061031e6103e53660046122da565b610c3c565b3480156103f657600080fd5b5061031e6104053660046122ae565b610c57565b34801561041657600080fd5b506102f0610425366004612280565b610cdb565b34801561043657600080fd5b5061026b6104453660046123f0565b610d3d565b34801561045657600080fd5b506102c2610465366004612280565b610d63565b34801561047657600080fd5b5061031e610485366004612280565b610d75565b34801561049657600080fd5b506102f06104a5366004612420565b610da4565b3480156104b657600080fd5b5061031e610e35565b3480156104cb57600080fd5b506102f060105481565b3480156104e157600080fd5b5061031e6104f0366004612280565b610e69565b34801561050157600080fd5b506102f0600e5481565b34801561051757600080fd5b506008546001600160a01b03166102c2565b34801561053557600080fd5b5061031e610544366004612280565b610e98565b34801561055557600080fd5b50610295610ec7565b34801561056a57600080fd5b506102f0600d5481565b61031e610582366004612280565b610ed6565b34801561059357600080fd5b5061031e6105a2366004612280565b61114e565b3480156105b357600080fd5b5061031e6105c236600461243d565b61117d565b3480156105d357600080fd5b5061031e6105e2366004612280565b611242565b3480156105f357600080fd5b5061031e610602366004612470565b611271565b34801561061357600080fd5b506102f0600f5481565b34801561062957600080fd5b50610295610638366004612280565b6112aa565b34801561064957600080fd5b506102f0610658366004612420565b60116020526000908152604090205481565b34801561067657600080fd5b5061031e610685366004612280565b611377565b34801561069657600080fd5b506102956113a6565b3480156106ab57600080fd5b506102f060075481565b3480156106c157600080fd5b506102f0600b5481565b3480156106d757600080fd5b506102956106e6366004612420565b611434565b3480156106f757600080fd5b5061026b6107063660046124f0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b34801561074057600080fd5b5061031e61074f366004612420565b611525565b60006001600160e01b031982166380ac58cd60e01b148061078557506001600160e01b03198216635b5e139f60e01b145b806107a057506001600160e01b0319821663780e9d6360e01b145b806107bb57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600180546107d09061251e565b80601f01602080910402602001604051908101604052809291908181526020018280546107fc9061251e565b80156108495780601f1061081e57610100808354040283529160200191610849565b820191906000526020600020905b81548152906001019060200180831161082c57829003601f168201915b5050505050905090565b6000610860826000541190565b6108c75760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60006108ee82610d63565b9050806001600160a01b0316836001600160a01b0316141561095d5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b60648201526084016108be565b336001600160a01b038216148061097957506109798133610706565b6109eb5760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016108be565b6109f68383836115c0565b505050565b6008546000906001600160a01b03163314610a285760405162461bcd60e51b81526004016108be90612559565b610a32838361161c565b50600192915050565b6109f6838383611636565b6000610a5183610da4565b8210610aaa5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016108be565b600080549080805b83811015610b54576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215610b0557805192505b876001600160a01b0316836001600160a01b03161415610b415786841415610b33575093506107bb92505050565b83610b3d816125a4565b9450505b5080610b4c816125a4565b915050610ab2565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b60648201526084016108be565b6008546001600160a01b03163314610bde5760405162461bcd60e51b81526004016108be90612559565b8051610bf190600a906020840190612152565b5050565b6008546001600160a01b03163314610c1f5760405162461bcd60e51b81526004016108be90612559565b610c3a610c346008546001600160a01b031690565b476119be565b565b6109f683838360405180602001604052806000815250611271565b6008546001600160a01b03163314610c815760405162461bcd60e51b81526004016108be90612559565b80471015610cd15760405162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742062616c616e636520746f20776974686472617760448201526064016108be565b610bf182826119be565b600080548210610d395760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016108be565b5090565b6000816001600160a01b0316610d5284610d63565b6001600160a01b0316149392505050565b6000610d6e82611a54565b5192915050565b6008546001600160a01b03163314610d9f5760405162461bcd60e51b81526004016108be90612559565b600c55565b60006001600160a01b038216610e105760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016108be565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6008546001600160a01b03163314610e5f5760405162461bcd60e51b81526004016108be90612559565b610c3a6000611bfe565b6008546001600160a01b03163314610e935760405162461bcd60e51b81526004016108be90612559565b600e55565b6008546001600160a01b03163314610ec25760405162461bcd60e51b81526004016108be90612559565b600f55565b6060600280546107d09061251e565b610ede611c50565b60026009541415610f315760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108be565b600260095560105415610f865760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e67206973206e6f74206c6976652079657421000000000000000060448201526064016108be565b600054600f541015611039576000600d5434610fa291906125d5565b90508015610fe75760405162461bcd60e51b8152602060048201526012602482015271084c2c840c2dadadeeadce840decc408aa8960731b60448201526064016108be565b600d54610ff490346125e9565b9150600082116110375760405162461bcd60e51b815260206004820152600e60248201526d0496e70757420616d6f756e743d360941b60448201526064016108be565b505b600e54336000908152601160205260409020546110579083906125fd565b11156110b95760405162461bcd60e51b815260206004820152602b60248201527f5468697320776f756c642065786365656420746865206d6178696d756d204e4660448201526a54732f616464726573732160a81b60648201526084016108be565b600c54600b546110c99190612615565b816110d360005490565b6110dd91906125fd565b11156111175760405162461bcd60e51b8152602060048201526009602482015268536f6c64206f75742160b81b60448201526064016108be565b33600090815260116020526040812080548392906111369084906125fd565b909155506111469050338261161c565b506001600955565b6008546001600160a01b031633146111785760405162461bcd60e51b81526004016108be90612559565b600b55565b6001600160a01b0382163314156111d65760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c657200000000000060448201526064016108be565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b0316331461126c5760405162461bcd60e51b81526004016108be90612559565b601055565b61127c848484611636565b61128884848484611c5c565b6112a45760405162461bcd60e51b81526004016108be9061262c565b50505050565b60606112b7826000541190565b61131b5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016108be565b6000611325611d6a565b905060008151116113455760405180602001604052806000815250611370565b8061134f84611d79565b60405160200161136092919061267f565b6040516020818303038152906040525b9392505050565b6008546001600160a01b031633146113a15760405162461bcd60e51b81526004016108be90612559565b600d55565b600a80546113b39061251e565b80601f01602080910402602001604051908101604052809291908181526020018280546113df9061251e565b801561142c5780601f106114015761010080835404028352916020019161142c565b820191906000526020600020905b81548152906001019060200180831161140f57829003601f168201915b505050505081565b60606000611443601054611d79565b61144e600e54611d79565b611459600d54611d79565b611464600f54611d79565b60405160200161147794939291906126ae565b6040516020818303038152906040529050600061149b61149660005490565b611d79565b6114a6600c54611d79565b6114b1600b54611d79565b6001600160a01b0387166000908152601160205260409020546114d390611d79565b6040516020016114e6949392919061275d565b60405160208183030381529060405290506000828260405160200161150c92919061267f565b60408051601f1981840301815291905295945050505050565b6008546001600160a01b0316331461154f5760405162461bcd60e51b81526004016108be90612559565b6001600160a01b0381166115b45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108be565b6115bd81611bfe565b50565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610bf1828260405180602001604052806000815250611e77565b600061164182611a54565b80519091506000906001600160a01b0316336001600160a01b0316148061167857503361166d84610853565b6001600160a01b0316145b8061168a5750815161168a9033610706565b9050806116f45760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016108be565b846001600160a01b031682600001516001600160a01b0316146117685760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b60648201526084016108be565b6001600160a01b0384166117cc5760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016108be565b6117dc60008484600001516115c0565b6001600160a01b038516600090815260046020526040812080546001929061180e9084906001600160801b031661281b565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b0386166000908152600460205260408120805460019450909261185a91859116612843565b82546001600160801b039182166101009390930a9283029190920219909116179055506040805180820182526001600160a01b03808716825267ffffffffffffffff428116602080850191825260008981526003909152948520935184549151909216600160a01b026001600160e01b031990911691909216171790556118e28460016125fd565b6000818152600360205260409020549091506001600160a01b03166119745761190c816000541190565b156119745760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a0b576040519150601f19603f3d011682016040523d82523d6000602084013e611a10565b606091505b50509050806109f65760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016108be565b6040805180820190915260008082526020820152611a73826000541190565b611ad25760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b60648201526084016108be565b60007f00000000000000000000000000000000000000000000000000000000000000328310611b3357611b257f000000000000000000000000000000000000000000000000000000000000003284612615565b611b309060016125fd565b90505b825b818110611b9d576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff169183019190915215611b8a57949350505050565b5080611b9581612865565b915050611b35565b5060405162461bcd60e51b815260206004820152602f60248201527f455243373231413a20756e61626c6520746f2064657465726d696e652074686560448201526e1037bbb732b91037b3103a37b5b2b760891b60648201526084016108be565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b333214610c3a57600080fd5b60006001600160a01b0384163b15611d5e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ca090339089908890889060040161287c565b602060405180830381600087803b158015611cba57600080fd5b505af1925050508015611cea575060408051601f3d908101601f19168201909252611ce7918101906128b9565b60015b611d44573d808015611d18576040519150601f19603f3d011682016040523d82523d6000602084013e611d1d565b606091505b508051611d3c5760405162461bcd60e51b81526004016108be9061262c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611d62565b5060015b949350505050565b6060600a80546107d09061251e565b606081611d9d5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611dc75780611db1816125a4565b9150611dc09050600a836125e9565b9150611da1565b60008167ffffffffffffffff811115611de257611de261231b565b6040519080825280601f01601f191660200182016040528015611e0c576020820181803683370190505b5090505b8415611d6257611e21600183612615565b9150611e2e600a866125d5565b611e399060306125fd565b60f81b818381518110611e4e57611e4e6128d6565b60200101906001600160f81b031916908160001a905350611e70600a866125e9565b9450611e10565b6000546001600160a01b038416611eda5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016108be565b611ee5816000541190565b15611f325760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e74656400000060448201526064016108be565b7f0000000000000000000000000000000000000000000000000000000000000032831115611fad5760405162461bcd60e51b815260206004820152602260248201527f455243373231413a207175616e7469747920746f206d696e7420746f6f2068696044820152610ced60f31b60648201526084016108be565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190612009908790612843565b6001600160801b031681526020018583602001516120279190612843565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b858110156121475760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461210b6000888488611c5c565b6121275760405162461bcd60e51b81526004016108be9061262c565b81612131816125a4565b925050808061213f906125a4565b9150506120be565b5060008190556119b6565b82805461215e9061251e565b90600052602060002090601f01602090048101928261218057600085556121c6565b82601f1061219957805160ff19168380011785556121c6565b828001600101855582156121c6579182015b828111156121c65782518255916020019190600101906121ab565b50610d399291505b80821115610d3957600081556001016121ce565b6001600160e01b0319811681146115bd57600080fd5b60006020828403121561220a57600080fd5b8135611370816121e2565b60005b83811015612230578181015183820152602001612218565b838111156112a45750506000910152565b60008151808452612259816020860160208601612215565b601f01601f19169290920160200192915050565b6020815260006113706020830184612241565b60006020828403121561229257600080fd5b5035919050565b6001600160a01b03811681146115bd57600080fd5b600080604083850312156122c157600080fd5b82356122cc81612299565b946020939093013593505050565b6000806000606084860312156122ef57600080fd5b83356122fa81612299565b9250602084013561230a81612299565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561234c5761234c61231b565b604051601f8501601f19908116603f011681019082821181831017156123745761237461231b565b8160405280935085815286868601111561238d57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156123b957600080fd5b813567ffffffffffffffff8111156123d057600080fd5b8201601f810184136123e157600080fd5b611d6284823560208401612331565b6000806040838503121561240357600080fd5b82359150602083013561241581612299565b809150509250929050565b60006020828403121561243257600080fd5b813561137081612299565b6000806040838503121561245057600080fd5b823561245b81612299565b91506020830135801515811461241557600080fd5b6000806000806080858703121561248657600080fd5b843561249181612299565b935060208501356124a181612299565b925060408501359150606085013567ffffffffffffffff8111156124c457600080fd5b8501601f810187136124d557600080fd5b6124e487823560208401612331565b91505092959194509250565b6000806040838503121561250357600080fd5b823561250e81612299565b9150602083013561241581612299565b600181811c9082168061253257607f821691505b6020821081141561255357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006000198214156125b8576125b861258e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826125e4576125e46125bf565b500690565b6000826125f8576125f86125bf565b500490565b600082198211156126105761261061258e565b500190565b6000828210156126275761262761258e565b500390565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008351612691818460208801612215565b8351908301906126a5818360208801612215565b01949350505050565b6936b4b73a3830bab9b29d60b11b8152600085516126d381600a850160208a01612215565b681db6b0bc36b4b73a1d60b91b600a9184019182015285516126fc816013840160208a01612215565b661db83934b1b29d60c91b60139290910191820152845161272481601a840160208901612215565b691db33932b2b9b4bd329d60b11b601a9290910191820152835161274f816024840160208801612215565b016024019695505050505050565b6c1dba37ba30b639bab838363c9d60991b81526000855161278581600d850160208a01612215565b6d1db932b9b2b93b32b239b4bd329d60911b600d9184019182015285516127b381601b840160208a01612215565b6f1db1b7b63632b1ba34b7b739b4bd329d60811b601b929091019182015284516127e481602b840160208901612215565b671db6b4b73a32b21d60c11b602b9290910191820152835161280d816033840160208801612215565b016033019695505050505050565b60006001600160801b038381169083168181101561283b5761283b61258e565b039392505050565b60006001600160801b038083168185168083038211156126a5576126a561258e565b6000816128745761287461258e565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128af90830184612241565b9695505050505050565b6000602082840312156128cb57600080fd5b8151611370816121e2565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220aa1508f89294b95711d1b3e5eff0c7073a335a94f0726870e69c0b50911330e364736f6c63430008090033

Deployed Bytecode Sourcemap

20221:3371:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11738:370;;;;;;;;;;-1:-1:-1;11738:370:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;11738:370:0;;;;;;;;13297:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14364:202::-;;;;;;;;;;-1:-1:-1;14364:202:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:1;;;1674:51;;1662:2;1647:18;14364:202:0;1528:203:1;20355:33:0;;;;;;;;;;;;;;;;;;;1882:25:1;;;1870:2;1855:18;20355:33:0;1736:177:1;13985:375:0;;;;;;;;;;-1:-1:-1;13985:375:0;;;;;:::i;:::-;;:::i;:::-;;20807:149;;;;;;;;;;-1:-1:-1;20807:149:0;;;;;:::i;:::-;;:::i;10711:94::-;;;;;;;;;;-1:-1:-1;10764:7:0;10787:12;10711:94;;15036:142;;;;;;;;;;-1:-1:-1;15036:142:0;;;;;:::i;:::-;;:::i;10990:744::-;;;;;;;;;;-1:-1:-1;10990:744:0;;;;;:::i;:::-;;:::i;21800:95::-;;;;;;;;;;-1:-1:-1;21800:95:0;;;;;:::i;:::-;;:::i;22631:96::-;;;;;;;;;;;;;:::i;15182:157::-;;;;;;;;;;-1:-1:-1;15182:157:0;;;;;:::i;:::-;;:::i;22733:193::-;;;;;;;;;;-1:-1:-1;22733:193:0;;;;;:::i;:::-;;:::i;10809:177::-;;;;;;;;;;-1:-1:-1;10809:177:0;;;;;:::i;:::-;;:::i;20962:132::-;;;;;;;;;;-1:-1:-1;20962:132:0;;;;;:::i;:::-;;:::i;13175:118::-;;;;;;;;;;-1:-1:-1;13175:118:0;;;;;:::i;:::-;;:::i;22087:89::-;;;;;;;;;;-1:-1:-1;22087:89:0;;;;;:::i;:::-;;:::i;12112:211::-;;;;;;;;;;-1:-1:-1;12112:211:0;;;;;:::i;:::-;;:::i;754:103::-;;;;;;;;;;;;;:::i;20507:26::-;;;;;;;;;;;;;;;;22279:79;;;;;;;;;;-1:-1:-1;22279:79:0;;;;;:::i;:::-;;:::i;20437:26::-;;;;;;;;;;;;;;;;535:87;;;;;;;;;;-1:-1:-1;608:6:0;;-1:-1:-1;;;;;608:6:0;535:87;;22000:81;;;;;;;;;;-1:-1:-1;22000:81:0;;;;;:::i;:::-;;:::i;13395:98::-;;;;;;;;;;;;;:::i;20395:35::-;;;;;;;;;;;;;;;;21100:576;;;;;;:::i;:::-;;:::i;21901:93::-;;;;;;;;;;-1:-1:-1;21901:93:0;;;;;:::i;:::-;;:::i;14570:272::-;;;;;;;;;;-1:-1:-1;14570:272:0;;;;;:::i;:::-;;:::i;22182:91::-;;;;;;;;;;-1:-1:-1;22182:91:0;;;;;:::i;:::-;;:::i;15343:311::-;;;;;;;;;;-1:-1:-1;15343:311:0;;;;;:::i;:::-;;:::i;20470:30::-;;;;;;;;;;;;;;;;13497:392;;;;;;;;;;-1:-1:-1;13497:392:0;;;;;:::i;:::-;;:::i;20540:42::-;;;;;;;;;;-1:-1:-1;20540:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;22364:75;;;;;;;;;;-1:-1:-1;22364:75:0;;;;;:::i;:::-;;:::i;20278:26::-;;;;;;;;;;;;;:::i;18440:43::-;;;;;;;;;;;;;;;;20311:37;;;;;;;;;;;;;;;;22932:657;;;;;;;;;;-1:-1:-1;22932:657:0;;;;;:::i;:::-;;:::i;14846:186::-;;;;;;;;;;-1:-1:-1;14846:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;14991:25:0;;;14968:4;14991:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;14846:186;863:201;;;;;;;;;;-1:-1:-1;863:201:0;;;;;:::i;:::-;;:::i;11738:370::-;11865:4;-1:-1:-1;;;;;;11895:40:0;;-1:-1:-1;;;11895:40:0;;:99;;-1:-1:-1;;;;;;;11946:48:0;;-1:-1:-1;;;11946:48:0;11895:99;:160;;;-1:-1:-1;;;;;;;12005:50:0;;-1:-1:-1;;;12005:50:0;11895:160;:207;;;-1:-1:-1;;;;;;;;;;9473:40:0;;;12066:36;11881:221;11738:370;-1:-1:-1;;11738:370:0:o;13297:94::-;13351:13;13380:5;13373:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13297:94;:::o;14364:202::-;14432:7;14456:16;14464:7;15715:4;15745:12;-1:-1:-1;15735:22:0;15658:105;14456:16;14448:74;;;;-1:-1:-1;;;14448:74:0;;7161:2:1;14448:74:0;;;7143:21:1;7200:2;7180:18;;;7173:30;7239:34;7219:18;;;7212:62;-1:-1:-1;;;7290:18:1;;;7283:43;7343:19;;14448:74:0;;;;;;;;;-1:-1:-1;14536:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;14536:24:0;;14364:202::o;13985:375::-;14054:13;14070:24;14086:7;14070:15;:24::i;:::-;14054:40;;14115:5;-1:-1:-1;;;;;14109:11:0;:2;-1:-1:-1;;;;;14109:11:0;;;14101:58;;;;-1:-1:-1;;;14101:58:0;;7575:2:1;14101:58:0;;;7557:21:1;7614:2;7594:18;;;7587:30;7653:34;7633:18;;;7626:62;-1:-1:-1;;;7704:18:1;;;7697:32;7746:19;;14101:58:0;7373:398:1;14101:58:0;171:10;-1:-1:-1;;;;;14182:21:0;;;;:62;;-1:-1:-1;14207:37:0;14224:5;171:10;14846:186;:::i;14207:37::-;14166:153;;;;-1:-1:-1;;;14166:153:0;;7978:2:1;14166:153:0;;;7960:21:1;8017:2;7997:18;;;7990:30;8056:34;8036:18;;;8029:62;8127:27;8107:18;;;8100:55;8172:19;;14166:153:0;7776:421:1;14166:153:0;14326:28;14335:2;14339:7;14348:5;14326:8;:28::i;:::-;14047:313;13985:375;;:::o;20807:149::-;608:6;;20890:7;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;20909:27:::1;20919:9;20930:5;20909:9;:27::i;:::-;-1:-1:-1::0;20947:1:0::1;20807:149:::0;;;;:::o;15036:142::-;15144:28;15154:4;15160:2;15164:7;15144:9;:28::i;10990:744::-;11099:7;11134:16;11144:5;11134:9;:16::i;:::-;11126:5;:24;11118:71;;;;-1:-1:-1;;;11118:71:0;;8765:2:1;11118:71:0;;;8747:21:1;8804:2;8784:18;;;8777:30;8843:34;8823:18;;;8816:62;-1:-1:-1;;;8894:18:1;;;8887:32;8936:19;;11118:71:0;8563:398:1;11118:71:0;11196:22;10787:12;;;11196:22;;11316:350;11340:14;11336:1;:18;11316:350;;;11370:31;11404:14;;;:11;:14;;;;;;;;;11370:48;;;;;;;;;-1:-1:-1;;;;;11370:48:0;;;;;-1:-1:-1;;;11370:48:0;;;;;;;;;;;;11431:28;11427:89;;11492:14;;;-1:-1:-1;11427:89:0;11549:5;-1:-1:-1;;;;;11528:26:0;:17;-1:-1:-1;;;;;11528:26:0;;11524:135;;;11586:5;11571:11;:20;11567:59;;;-1:-1:-1;11613:1:0;-1:-1:-1;11606:8:0;;-1:-1:-1;;;11606:8:0;11567:59;11636:13;;;;:::i;:::-;;;;11524:135;-1:-1:-1;11356:3:0;;;;:::i;:::-;;;;11316:350;;;-1:-1:-1;11672:56:0;;-1:-1:-1;;;11672:56:0;;9440:2:1;11672:56:0;;;9422:21:1;9479:2;9459:18;;;9452:30;9518:34;9498:18;;;9491:62;-1:-1:-1;;;9569:18:1;;;9562:44;9623:19;;11672:56:0;9238:410:1;21800:95:0;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;21870:17;;::::1;::::0;:12:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;;21800:95:::0;:::o;22631:96::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;22678:41:::1;22689:7;608:6:::0;;-1:-1:-1;;;;;608:6:0;;535:87;22689:7:::1;22697:21;22678:10;:41::i;:::-;22631:96::o:0;15182:157::-;15294:39;15311:4;15317:2;15321:7;15294:39;;;;;;;;;;;;:16;:39::i;22733:193::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;22850:6:::1;22825:21;:31;;22816:77;;;::::0;-1:-1:-1;;;22816:77:0;;9855:2:1;22816:77:0::1;::::0;::::1;9837:21:1::0;;;9874:18;;;9867:30;9933:34;9913:18;;;9906:62;9985:18;;22816:77:0::1;9653:356:1::0;22816:77:0::1;22897:21;22908:2;22911:6;22897:10;:21::i;10809:177::-:0;10876:7;10787:12;;10900:5;:21;10892:69;;;;-1:-1:-1;;;10892:69:0;;10216:2:1;10892:69:0;;;10198:21:1;10255:2;10235:18;;;10228:30;10294:34;10274:18;;;10267:62;-1:-1:-1;;;10345:18:1;;;10338:33;10388:19;;10892:69:0;10014:399:1;10892:69:0;-1:-1:-1;10975:5:0;10809:177::o;20962:132::-;21039:4;21078:8;-1:-1:-1;;;;;21062:24:0;:12;21070:3;21062:7;:12::i;:::-;-1:-1:-1;;;;;21062:24:0;;;20962:132;-1:-1:-1;;;20962:132:0:o;13175:118::-;13239:7;13262:20;13274:7;13262:11;:20::i;:::-;:25;;13175:118;-1:-1:-1;;13175:118:0:o;22087:89::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;22153:12:::1;:15:::0;22087:89::o;12112:211::-;12176:7;-1:-1:-1;;;;;12200:19:0;;12192:75;;;;-1:-1:-1;;;12192:75:0;;10620:2:1;12192:75:0;;;10602:21:1;10659:2;10639:18;;;10632:30;10698:34;10678:18;;;10671:62;-1:-1:-1;;;10749:18:1;;;10742:41;10800:19;;12192:75:0;10418:407:1;12192:75:0;-1:-1:-1;;;;;;12289:19:0;;;;;:12;:19;;;;;:27;-1:-1:-1;;;;;12289:27:0;;12112:211::o;754:103::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;819:30:::1;846:1;819:18;:30::i;22279:79::-:0;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;22340:7:::1;:10:::0;22279:79::o;22000:81::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;22062:8:::1;:11:::0;22000:81::o;13395:98::-;13451:13;13480:7;13473:14;;;;;:::i;21100:576::-;20775:13;:11;:13::i;:::-;1391:1:::1;1533:7;;:19;;1525:63;;;::::0;-1:-1:-1;;;1525:63:0;;11032:2:1;1525:63:0::1;::::0;::::1;11014:21:1::0;11071:2;11051:18;;;11044:30;11110:33;11090:18;;;11083:61;11161:18;;1525:63:0::1;10830:355:1::0;1525:63:0::1;1391:1;1599:7;:18:::0;21184:9:::2;::::0;:12;21176:49:::2;;;::::0;-1:-1:-1;;;21176:49:0;;11392:2:1;21176:49:0::2;::::0;::::2;11374:21:1::0;11431:2;11411:18;;;11404:30;11470:26;11450:18;;;11443:54;11514:18;;21176:49:0::2;11190:348:1::0;21176:49:0::2;10764:7:::0;10787:12;21234:8:::2;;:24;21229:194;;;21275:9;21295:5;;21285:9;:15;;;;:::i;:::-;21275:25:::0;-1:-1:-1;21320:4:0;;21312:34:::2;;;::::0;-1:-1:-1;;;21312:34:0;;11994:2:1;21312:34:0::2;::::0;::::2;11976:21:1::0;12033:2;12013:18;;;12006:30;-1:-1:-1;;;12052:18:1;;;12045:48;12110:18;;21312:34:0::2;11792:342:1::0;21312:34:0::2;21371:5;::::0;21361:15:::2;::::0;:9:::2;:15;:::i;:::-;21358:18;;21399:1;21396:2;:4;21388:30;;;::::0;-1:-1:-1;;;21388:30:0;;12466:2:1;21388:30:0::2;::::0;::::2;12448:21:1::0;12505:2;12485:18;;;12478:30;-1:-1:-1;;;12524:18:1;;;12517:44;12578:18;;21388:30:0::2;12264:338:1::0;21388:30:0::2;21263:160;21229:194;21467:7;::::0;21449:10:::2;21441:19;::::0;;;:7:::2;:19;::::0;;;;;:24:::2;::::0;21463:2;;21441:24:::2;:::i;:::-;:33;;21433:88;;;::::0;-1:-1:-1;;;21433:88:0;;12942:2:1;21433:88:0::2;::::0;::::2;12924:21:1::0;12981:2;12961:18;;;12954:30;13020:34;13000:18;;;12993:62;-1:-1:-1;;;13071:18:1;;;13064:41;13122:19;;21433:88:0::2;12740:407:1::0;21433:88:0::2;21579:12;;21562:14;;:29;;;;:::i;:::-;21556:2;21540:13;10764:7:::0;10787:12;;10711:94;21540:13:::2;:18;;;;:::i;:::-;:51;;21532:74;;;::::0;-1:-1:-1;;;21532:74:0;;13484:2:1;21532:74:0::2;::::0;::::2;13466:21:1::0;13523:1;13503:18;;;13496:29;-1:-1:-1;;;13541:18:1;;;13534:39;13590:18;;21532:74:0::2;13282:332:1::0;21532:74:0::2;21625:10;21617:19;::::0;;;:7:::2;:19;::::0;;;;:23;;21638:2;;21617:19;:23:::2;::::0;21638:2;;21617:23:::2;:::i;:::-;::::0;;;-1:-1:-1;21644:24:0::2;::::0;-1:-1:-1;21654:10:0::2;21665:2:::0;21644:9:::2;:24::i;:::-;-1:-1:-1::0;1347:1:0::1;1640:7;:22:::0;21100:576::o;21901:93::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;21969:14:::1;:17:::0;21901:93::o;14570:272::-;-1:-1:-1;;;;;14661:24:0;;171:10;14661:24;;14653:63;;;;-1:-1:-1;;;14653:63:0;;13821:2:1;14653:63:0;;;13803:21:1;13860:2;13840:18;;;13833:30;13899:28;13879:18;;;13872:56;13945:18;;14653:63:0;13619:350:1;14653:63:0;171:10;14723:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;14723:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;14723:53:0;;;;;;;;;;14788:48;;540:41:1;;;14723:42:0;;171:10;14788:48;;513:18:1;14788:48:0;;;;;;;14570:272;;:::o;22182:91::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;22251:9:::1;:14:::0;22182:91::o;15343:311::-;15480:28;15490:4;15496:2;15500:7;15480:9;:28::i;:::-;15531:48;15554:4;15560:2;15564:7;15573:5;15531:22;:48::i;:::-;15515:133;;;;-1:-1:-1;;;15515:133:0;;;;;;;:::i;:::-;15343:311;;;;:::o;13497:392::-;13595:13;13636:16;13644:7;15715:4;15745:12;-1:-1:-1;15735:22:0;15658:105;13636:16;13620:97;;;;-1:-1:-1;;;13620:97:0;;14596:2:1;13620:97:0;;;14578:21:1;14635:2;14615:18;;;14608:30;14674:34;14654:18;;;14647:62;-1:-1:-1;;;14725:18:1;;;14718:45;14780:19;;13620:97:0;14394:411:1;13620:97:0;13724:21;13748:10;:8;:10::i;:::-;13724:34;;13803:1;13785:7;13779:21;:25;:104;;;;;;;;;;;;;;;;;13840:7;13849:18;:7;:16;:18::i;:::-;13823:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13779:104;13765:118;13497:392;-1:-1:-1;;;13497:392:0:o;22364:75::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;22423:5:::1;:8:::0;22364:75::o;20278:26::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22932:657::-;23000:13;23025:16;23084:27;23101:9;;23084:16;:27::i;:::-;23127:25;23144:7;;23127:16;:25::i;:::-;23166:23;23183:5;;23166:16;:23::i;:::-;23206:26;23223:8;;23206:16;:26::i;:::-;23051:185;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23025:212;;23241:16;23304:31;23321:13;10764:7;10787:12;;10711:94;23321:13;23304:16;:31::i;:::-;23358:30;23375:12;;23358:16;:30::i;:::-;23413:32;23430:14;;23413:16;:32::i;:::-;-1:-1:-1;;;;;23478:15:0;;;;;;:7;:15;;;;;;23461:33;;:16;:33::i;:::-;23267:232;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23241:259;;23504:23;23554:2;23557;23537:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23537:23:0;;;;;;;;;;22932:657;-1:-1:-1;;;;;22932:657:0:o;863:201::-;608:6;;-1:-1:-1;;;;;608:6:0;171:10;668:23;660:68;;;;-1:-1:-1;;;660:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;952:22:0;::::1;944:73;;;::::0;-1:-1:-1;;;944:73:0;;18384:2:1;944:73:0::1;::::0;::::1;18366:21:1::0;18423:2;18403:18;;;18396:30;18462:34;18442:18;;;18435:62;-1:-1:-1;;;18513:18:1;;;18506:36;18559:19;;944:73:0::1;18182:402:1::0;944:73:0::1;1028:28;1047:8;1028:18;:28::i;:::-;863:201:::0;:::o;18264:172::-;18361:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;18361:29:0;-1:-1:-1;;;;;18361:29:0;;;;;;;;;18402:28;;18361:24;;18402:28;;;;;;;18264:172;;;:::o;15767:98::-;15832:27;15842:2;15846:8;15832:27;;;;;;;;;;;;:9;:27::i;17014:1246::-;17111:35;17149:20;17161:7;17149:11;:20::i;:::-;17218:18;;17111:58;;-1:-1:-1;17176:22:0;;-1:-1:-1;;;;;17202:34:0;171:10;-1:-1:-1;;;;;17202:34:0;;:81;;;-1:-1:-1;171:10:0;17247:20;17259:7;17247:11;:20::i;:::-;-1:-1:-1;;;;;17247:36:0;;17202:81;:142;;;-1:-1:-1;17311:18:0;;17294:50;;171:10;14846:186;:::i;17294:50::-;17176:169;;17368:17;17352:101;;;;-1:-1:-1;;;17352:101:0;;18791:2:1;17352:101:0;;;18773:21:1;18830:2;18810:18;;;18803:30;18869:34;18849:18;;;18842:62;-1:-1:-1;;;18920:18:1;;;18913:48;18978:19;;17352:101:0;18589:414:1;17352:101:0;17498:4;-1:-1:-1;;;;;17476:26:0;:13;:18;;;-1:-1:-1;;;;;17476:26:0;;17460:98;;;;-1:-1:-1;;;17460:98:0;;19210:2:1;17460:98:0;;;19192:21:1;19249:2;19229:18;;;19222:30;19288:34;19268:18;;;19261:62;-1:-1:-1;;;19339:18:1;;;19332:36;19385:19;;17460:98:0;19008:402:1;17460:98:0;-1:-1:-1;;;;;17573:16:0;;17565:66;;;;-1:-1:-1;;;17565:66:0;;19617:2:1;17565:66:0;;;19599:21:1;19656:2;19636:18;;;19629:30;19695:34;19675:18;;;19668:62;-1:-1:-1;;;19746:18:1;;;19739:35;19791:19;;17565:66:0;19415:401:1;17565:66:0;17688:49;17705:1;17709:7;17718:13;:18;;;17688:8;:49::i;:::-;-1:-1:-1;;;;;17744:18:0;;;;;;:12;:18;;;;;:31;;17774:1;;17744:18;:31;;17774:1;;-1:-1:-1;;;;;17744:31:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;17744:31:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17782:16:0;;-1:-1:-1;17782:16:0;;;:12;:16;;;;;:29;;-1:-1:-1;;;17782:16:0;;:29;;-1:-1:-1;;17782:29:0;;:::i;:::-;;;-1:-1:-1;;;;;17782:29:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17841:43:0;;;;;;;;-1:-1:-1;;;;;17841:43:0;;;;;;17867:15;17841:43;;;;;;;;;-1:-1:-1;17818:20:0;;;:11;:20;;;;;;:66;;;;;;;;;-1:-1:-1;;;17818:66:0;-1:-1:-1;;;;;;17818:66:0;;;;;;;;;;;17913:11;17830:7;-1:-1:-1;17913:11:0;:::i;:::-;17976:1;17935:24;;;:11;:24;;;;;:29;17891:33;;-1:-1:-1;;;;;;17935:29:0;17931:236;;17993:20;18001:11;15715:4;15745:12;-1:-1:-1;15735:22:0;15658:105;17993:20;17989:171;;;18053:97;;;;;;;;18080:18;;-1:-1:-1;;;;;18053:97:0;;;;;;18111:28;;;;18053:97;;;;;;;;;;-1:-1:-1;18026:24:0;;;:11;:24;;;;;;;:124;;;;;;;;;-1:-1:-1;;;18026:124:0;-1:-1:-1;;;;;;18026:124:0;;;;;;;;;;;;17989:171;18197:7;18193:2;-1:-1:-1;;;;;18178:27:0;18187:4;-1:-1:-1;;;;;18178:27:0;;;;;;;;;;;18212:42;17104:1156;;;17014:1246;;;:::o;22445:180::-;22526:12;22544:8;-1:-1:-1;;;;;22544:13:0;22565:7;22544:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22525:52;;;22589:7;22581:36;;;;-1:-1:-1;;;22581:36:0;;20742:2:1;22581:36:0;;;20724:21:1;20781:2;20761:18;;;20754:30;-1:-1:-1;;;20800:18:1;;;20793:46;20856:18;;22581:36:0;20540:340:1;12571:600:0;-1:-1:-1;;;;;;;;;;;;;;;;;12688:16:0;12696:7;15715:4;15745:12;-1:-1:-1;15735:22:0;15658:105;12688:16;12680:71;;;;-1:-1:-1;;;12680:71:0;;21087:2:1;12680:71:0;;;21069:21:1;21126:2;21106:18;;;21099:30;21165:34;21145:18;;;21138:62;-1:-1:-1;;;21216:18:1;;;21209:40;21266:19;;12680:71:0;20885:406:1;12680:71:0;12758:26;12806:12;12795:7;:23;12791:93;;12850:22;12860:12;12850:7;:22;:::i;:::-;:26;;12875:1;12850:26;:::i;:::-;12829:47;;12791:93;12910:7;12890:212;12927:18;12919:4;:26;12890:212;;12964:31;12998:17;;;:11;:17;;;;;;;;;12964:51;;;;;;;;;-1:-1:-1;;;;;12964:51:0;;;;;-1:-1:-1;;;12964:51:0;;;;;;;;;;;;13028:28;13024:71;;13076:9;12571:600;-1:-1:-1;;;;12571:600:0:o;13024:71::-;-1:-1:-1;12947:6:0;;;;:::i;:::-;;;;12890:212;;;-1:-1:-1;13108:57:0;;-1:-1:-1;;;13108:57:0;;21639:2:1;13108:57:0;;;21621:21:1;21678:2;21658:18;;;21651:30;21717:34;21697:18;;;21690:62;-1:-1:-1;;;21768:18:1;;;21761:45;21823:19;;13108:57:0;21437:411:1;1070:191:0;1163:6;;;-1:-1:-1;;;;;1180:17:0;;;-1:-1:-1;;;;;;1180:17:0;;;;;;;1213:40;;1163:6;;;1180:17;1163:6;;1213:40;;1144:16;;1213:40;1133:128;1070:191;:::o;20652:87::-;20707:10;20721:9;20707:23;20699:32;;;;;19237:690;19374:4;-1:-1:-1;;;;;19391:13:0;;4541:20;4589:8;19387:535;;19430:72;;-1:-1:-1;;;19430:72:0;;-1:-1:-1;;;;;19430:36:0;;;;;:72;;171:10;;19481:4;;19487:7;;19496:5;;19430:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19430:72:0;;;;;;;;-1:-1:-1;;19430:72:0;;;;;;;;;;;;:::i;:::-;;;19417:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19661:13:0;;19657:215;;19694:61;;-1:-1:-1;;;19694:61:0;;;;;;;:::i;19657:215::-;19840:6;19834:13;19825:6;19821:2;19817:15;19810:38;19417:464;-1:-1:-1;;;;;;19552:55:0;-1:-1:-1;;;19552:55:0;;-1:-1:-1;19545:62:0;;19387:535;-1:-1:-1;19910:4:0;19387:535;19237:690;;;;;;:::o;21682:112::-;21742:13;21774:12;21767:19;;;;;:::i;7981:532::-;8037:13;8067:10;8063:53;;-1:-1:-1;;8094:10:0;;;;;;;;;;;;-1:-1:-1;;;8094:10:0;;;;;7981:532::o;8063:53::-;8141:5;8126:12;8182:78;8189:9;;8182:78;;8215:8;;;;:::i;:::-;;-1:-1:-1;8238:10:0;;-1:-1:-1;8246:2:0;8238:10;;:::i;:::-;;;8182:78;;;8270:19;8302:6;8292:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8292:17:0;;8270:39;;8320:154;8327:10;;8320:154;;8354:11;8364:1;8354:11;;:::i;:::-;;-1:-1:-1;8423:10:0;8431:2;8423:5;:10;:::i;:::-;8410:24;;:2;:24;:::i;:::-;8397:39;;8380:6;8387;8380:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;8380:56:0;;;;;;;;-1:-1:-1;8451:11:0;8460:2;8451:11;;:::i;:::-;;;8320:154;;15869:1141;15974:20;15997:12;-1:-1:-1;;;;;16024:16:0;;16016:62;;;;-1:-1:-1;;;16016:62:0;;22935:2:1;16016:62:0;;;22917:21:1;22974:2;22954:18;;;22947:30;23013:34;22993:18;;;22986:62;-1:-1:-1;;;23064:18:1;;;23057:31;23105:19;;16016:62:0;22733:397:1;16016:62:0;16094:21;16102:12;15715:4;15745:12;-1:-1:-1;15735:22:0;15658:105;16094:21;16093:22;16085:64;;;;-1:-1:-1;;;16085:64:0;;23337:2:1;16085:64:0;;;23319:21:1;23376:2;23356:18;;;23349:30;23415:31;23395:18;;;23388:59;23464:18;;16085:64:0;23135:353:1;16085:64:0;16176:12;16164:8;:24;;16156:71;;;;-1:-1:-1;;;16156:71:0;;23695:2:1;16156:71:0;;;23677:21:1;23734:2;23714:18;;;23707:30;23773:34;23753:18;;;23746:62;-1:-1:-1;;;23824:18:1;;;23817:32;23866:19;;16156:71:0;23493:398:1;16156:71:0;-1:-1:-1;;;;;16335:16:0;;16302:30;16335:16;;;:12;:16;;;;;;;;;16302:49;;;;;;;;;-1:-1:-1;;;;;16302:49:0;;;;;-1:-1:-1;;;16302:49:0;;;;;;;;;;;16377:119;;;;;;;;16397:19;;16302:49;;16377:119;;;16397:39;;16427:8;;16397:39;:::i;:::-;-1:-1:-1;;;;;16377:119:0;;;;;16480:8;16445:11;:24;;;:44;;;;:::i;:::-;-1:-1:-1;;;;;16377:119:0;;;;;;-1:-1:-1;;;;;16358:16:0;;;;;;;:12;:16;;;;;;;;:138;;;;;;;;-1:-1:-1;;;16358:138:0;;;;;;;;;;;;16531:43;;;;;;;;;;;16557:15;16531:43;;;;;;;;16503:25;;;:11;:25;;;;;;:71;;;;;;;;;-1:-1:-1;;;16503:71:0;-1:-1:-1;;;;;;16503:71:0;;;;;;;;;;;;;;;;;;16515:12;;16623:281;16647:8;16643:1;:12;16623:281;;;16676:38;;16701:12;;-1:-1:-1;;;;;16676:38:0;;;16693:1;;16676:38;;16693:1;;16676:38;16741:59;16772:1;16776:2;16780:12;16794:5;16741:22;:59::i;:::-;16723:150;;;;-1:-1:-1;;;16723:150:0;;;;;;;:::i;:::-;16882:14;;;;:::i;:::-;;;;16657:3;;;;;:::i;:::-;;;;16623:281;;;-1:-1:-1;16910:12:0;:27;;;16944:60;15343:311;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:1;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:1;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:1:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:1;;1343:180;-1:-1:-1;1343:180:1:o;1918:131::-;-1:-1:-1;;;;;1993:31:1;;1983:42;;1973:70;;2039:1;2036;2029:12;2054:315;2122:6;2130;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;2238:9;2225:23;2257:31;2282:5;2257:31;:::i;:::-;2307:5;2359:2;2344:18;;;;2331:32;;-1:-1:-1;;;2054:315:1:o;2374:456::-;2451:6;2459;2467;2520:2;2508:9;2499:7;2495:23;2491:32;2488:52;;;2536:1;2533;2526:12;2488:52;2575:9;2562:23;2594:31;2619:5;2594:31;:::i;:::-;2644:5;-1:-1:-1;2701:2:1;2686:18;;2673:32;2714:33;2673:32;2714:33;:::i;:::-;2374:456;;2766:7;;-1:-1:-1;;;2820:2:1;2805:18;;;;2792:32;;2374:456::o;2835:127::-;2896:10;2891:3;2887:20;2884:1;2877:31;2927:4;2924:1;2917:15;2951:4;2948:1;2941:15;2967:632;3032:5;3062:18;3103:2;3095:6;3092:14;3089:40;;;3109:18;;:::i;:::-;3184:2;3178:9;3152:2;3238:15;;-1:-1:-1;;3234:24:1;;;3260:2;3230:33;3226:42;3214:55;;;3284:18;;;3304:22;;;3281:46;3278:72;;;3330:18;;:::i;:::-;3370:10;3366:2;3359:22;3399:6;3390:15;;3429:6;3421;3414:22;3469:3;3460:6;3455:3;3451:16;3448:25;3445:45;;;3486:1;3483;3476:12;3445:45;3536:6;3531:3;3524:4;3516:6;3512:17;3499:44;3591:1;3584:4;3575:6;3567;3563:19;3559:30;3552:41;;;;2967:632;;;;;:::o;3604:451::-;3673:6;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;3782:9;3769:23;3815:18;3807:6;3804:30;3801:50;;;3847:1;3844;3837:12;3801:50;3870:22;;3923:4;3915:13;;3911:27;-1:-1:-1;3901:55:1;;3952:1;3949;3942:12;3901:55;3975:74;4041:7;4036:2;4023:16;4018:2;4014;4010:11;3975:74;:::i;4388:315::-;4456:6;4464;4517:2;4505:9;4496:7;4492:23;4488:32;4485:52;;;4533:1;4530;4523:12;4485:52;4569:9;4556:23;4546:33;;4629:2;4618:9;4614:18;4601:32;4642:31;4667:5;4642:31;:::i;:::-;4692:5;4682:15;;;4388:315;;;;;:::o;4708:247::-;4767:6;4820:2;4808:9;4799:7;4795:23;4791:32;4788:52;;;4836:1;4833;4826:12;4788:52;4875:9;4862:23;4894:31;4919:5;4894:31;:::i;4960:416::-;5025:6;5033;5086:2;5074:9;5065:7;5061:23;5057:32;5054:52;;;5102:1;5099;5092:12;5054:52;5141:9;5128:23;5160:31;5185:5;5160:31;:::i;:::-;5210:5;-1:-1:-1;5267:2:1;5252:18;;5239:32;5309:15;;5302:23;5290:36;;5280:64;;5340:1;5337;5330:12;5381:795;5476:6;5484;5492;5500;5553:3;5541:9;5532:7;5528:23;5524:33;5521:53;;;5570:1;5567;5560:12;5521:53;5609:9;5596:23;5628:31;5653:5;5628:31;:::i;:::-;5678:5;-1:-1:-1;5735:2:1;5720:18;;5707:32;5748:33;5707:32;5748:33;:::i;:::-;5800:7;-1:-1:-1;5854:2:1;5839:18;;5826:32;;-1:-1:-1;5909:2:1;5894:18;;5881:32;5936:18;5925:30;;5922:50;;;5968:1;5965;5958:12;5922:50;5991:22;;6044:4;6036:13;;6032:27;-1:-1:-1;6022:55:1;;6073:1;6070;6063:12;6022:55;6096:74;6162:7;6157:2;6144:16;6139:2;6135;6131:11;6096:74;:::i;:::-;6086:84;;;5381:795;;;;;;;:::o;6181:388::-;6249:6;6257;6310:2;6298:9;6289:7;6285:23;6281:32;6278:52;;;6326:1;6323;6316:12;6278:52;6365:9;6352:23;6384:31;6409:5;6384:31;:::i;:::-;6434:5;-1:-1:-1;6491:2:1;6476:18;;6463:32;6504:33;6463:32;6504:33;:::i;6574:380::-;6653:1;6649:12;;;;6696;;;6717:61;;6771:4;6763:6;6759:17;6749:27;;6717:61;6824:2;6816:6;6813:14;6793:18;6790:38;6787:161;;;6870:10;6865:3;6861:20;6858:1;6851:31;6905:4;6902:1;6895:15;6933:4;6930:1;6923:15;6787:161;;6574:380;;;:::o;8202:356::-;8404:2;8386:21;;;8423:18;;;8416:30;8482:34;8477:2;8462:18;;8455:62;8549:2;8534:18;;8202:356::o;8966:127::-;9027:10;9022:3;9018:20;9015:1;9008:31;9058:4;9055:1;9048:15;9082:4;9079:1;9072:15;9098:135;9137:3;-1:-1:-1;;9158:17:1;;9155:43;;;9178:18;;:::i;:::-;-1:-1:-1;9225:1:1;9214:13;;9098:135::o;11543:127::-;11604:10;11599:3;11595:20;11592:1;11585:31;11635:4;11632:1;11625:15;11659:4;11656:1;11649:15;11675:112;11707:1;11733;11723:35;;11738:18;;:::i;:::-;-1:-1:-1;11772:9:1;;11675:112::o;12139:120::-;12179:1;12205;12195:35;;12210:18;;:::i;:::-;-1:-1:-1;12244:9:1;;12139:120::o;12607:128::-;12647:3;12678:1;12674:6;12671:1;12668:13;12665:39;;;12684:18;;:::i;:::-;-1:-1:-1;12720:9:1;;12607:128::o;13152:125::-;13192:4;13220:1;13217;13214:8;13211:34;;;13225:18;;:::i;:::-;-1:-1:-1;13262:9:1;;13152:125::o;13974:415::-;14176:2;14158:21;;;14215:2;14195:18;;;14188:30;14254:34;14249:2;14234:18;;14227:62;-1:-1:-1;;;14320:2:1;14305:18;;14298:49;14379:3;14364:19;;13974:415::o;14810:470::-;14989:3;15027:6;15021:13;15043:53;15089:6;15084:3;15077:4;15069:6;15065:17;15043:53;:::i;:::-;15159:13;;15118:16;;;;15181:57;15159:13;15118:16;15215:4;15203:17;;15181:57;:::i;:::-;15254:20;;14810:470;-1:-1:-1;;;;14810:470:1:o;15285:1436::-;-1:-1:-1;;;15989:3:1;15982:25;15964:3;16036:6;16030:13;16052:62;16107:6;16102:2;16097:3;16093:12;16086:4;16078:6;16074:17;16052:62;:::i;:::-;-1:-1:-1;;;16173:2:1;16133:16;;;16165:11;;;16158:32;16215:13;;16237:63;16215:13;16286:2;16278:11;;16271:4;16259:17;;16237:63;:::i;:::-;-1:-1:-1;;;16360:2:1;16319:17;;;;16352:11;;;16345:30;16400:13;;16422:63;16400:13;16471:2;16463:11;;16456:4;16444:17;;16422:63;:::i;:::-;-1:-1:-1;;;16545:2:1;16504:17;;;;16537:11;;;16530:33;16588:13;;16610:63;16588:13;16659:2;16651:11;;16644:4;16632:17;;16610:63;:::i;:::-;16693:17;16712:2;16689:26;;15285:1436;-1:-1:-1;;;;;;15285:1436:1:o;16726:1451::-;-1:-1:-1;;;17430:3:1;17423:28;17405:3;17480:6;17474:13;17496:62;17551:6;17546:2;17541:3;17537:12;17530:4;17522:6;17518:17;17496:62;:::i;:::-;-1:-1:-1;;;17617:2:1;17577:16;;;17609:11;;;17602:37;17664:13;;17686:63;17664:13;17735:2;17727:11;;17720:4;17708:17;;17686:63;:::i;:::-;-1:-1:-1;;;17809:2:1;17768:17;;;;17801:11;;;17794:39;17858:13;;17880:63;17858:13;17929:2;17921:11;;17914:4;17902:17;;17880:63;:::i;:::-;-1:-1:-1;;;18003:2:1;17962:17;;;;17995:11;;;17988:31;18044:13;;18066:63;18044:13;18115:2;18107:11;;18100:4;18088:17;;18066:63;:::i;:::-;18149:17;18168:2;18145:26;;16726:1451;-1:-1:-1;;;;;;16726:1451:1:o;19821:246::-;19861:4;-1:-1:-1;;;;;19974:10:1;;;;19944;;19996:12;;;19993:38;;;20011:18;;:::i;:::-;20048:13;;19821:246;-1:-1:-1;;;19821:246:1:o;20072:253::-;20112:3;-1:-1:-1;;;;;20201:2:1;20198:1;20194:10;20231:2;20228:1;20224:10;20262:3;20258:2;20254:12;20249:3;20246:21;20243:47;;;20270:18;;:::i;21296:136::-;21335:3;21363:5;21353:39;;21372:18;;:::i;:::-;-1:-1:-1;;;21408:18:1;;21296:136::o;21853:489::-;-1:-1:-1;;;;;22122:15:1;;;22104:34;;22174:15;;22169:2;22154:18;;22147:43;22221:2;22206:18;;22199:34;;;22269:3;22264:2;22249:18;;22242:31;;;22047:4;;22290:46;;22316:19;;22308:6;22290:46;:::i;:::-;22282:54;21853:489;-1:-1:-1;;;;;;21853:489:1:o;22347:249::-;22416:6;22469:2;22457:9;22448:7;22444:23;22440:32;22437:52;;;22485:1;22482;22475:12;22437:52;22517:9;22511:16;22536:30;22560:5;22536:30;:::i;22601:127::-;22662:10;22657:3;22653:20;22650:1;22643:31;22693:4;22690:1;22683:15;22717:4;22714:1;22707:15

Swarm Source

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