contract LympoNFT is ERC1155Tradable {

  mapping(uint => bool) public mintOwnableBlocked;

	// _proxyRegistryAddress - 0xa5409ec958c83c3f309868babaca7c86dcb077c1
	constructor(address _proxyRegistryAddress) public ERC1155Tradable("Lympo NFT", "LYMPO", _proxyRegistryAddress) {
		_setBaseMetadataURI("https://api.lympo.io/pools/assets/");
	}

  /**
   * @dev Mints some amount of tokens to an address
   * @param _to          Address of the future owner of the token
   * @param _id          Token ID to mint
   * @param _quantity    Amount of tokens to mint
   * @param _data        Data to pass if receiver is contract
   */
  function mintOwnable(
    address _to,
    uint256 _id,
    uint256 _quantity,
    bytes memory _data
  ) public onlyOwner {
    require(!mintOwnableBlocked[_id], "mint closed");
    _mint(_to, _id, _quantity, _data);
  }

  function blockMintOwnable(uint[] calldata _ids) public onlyOwner {
    for(uint i = 0; i < _ids.length; i++) {
      mintOwnableBlocked[_ids[i]] = true;
    }
  }

	function contractURI() public pure returns (string memory) {
		return "https://api.lympo.io/pools/lympo";
	}
}
function mintOwnable(
  address _to,
  uint256 _id,
  uint256 _quantity,
  bytes memory _data
) public onlyOwner {
  require(!mintOwnableBlocked[_id], "mint closed");
  _mint(_to, _id, _quantity, _data);
}

/**
 * @dev Mints some amount of tokens to an address
 * @param _to          Address of the future owner of the token
 * @param _id          Token ID to mint
 * @param _quantity    Amount of tokens to mint
 * @param _data        Data to pass if receiver is contract
 */