Browse Source

Merge branch 'crf-xls-reading' of jguetschow/UNFCCC_non-AnnexI_data into master

merge CRF reading branch into main
Johannes Gütschow 2 years ago
parent
commit
b31382b72a
100 changed files with 7987 additions and 113 deletions
  1. 2 0
      .gitignore
  2. 102 0
      code/UNFCCC_CRF_reader/CRF_raw_for_year.py
  3. 0 21
      code/UNFCCC_CRF_reader/UNFCCC_CRF_reader.py
  4. 1059 0
      code/UNFCCC_CRF_reader/UNFCCC_CRF_reader_core.py
  5. 243 0
      code/UNFCCC_CRF_reader/UNFCCC_CRF_reader_devel.py
  6. 536 0
      code/UNFCCC_CRF_reader/UNFCCC_CRF_reader_prod.py
  7. 8 0
      code/UNFCCC_CRF_reader/__init__.py
  8. 2502 0
      code/UNFCCC_CRF_reader/crf_specifications/CRF2021_specification.py
  9. 2522 0
      code/UNFCCC_CRF_reader/crf_specifications/CRF2022_specification.py
  10. 6 0
      code/UNFCCC_CRF_reader/crf_specifications/__init__.py
  11. 32 0
      code/UNFCCC_CRF_reader/crf_specifications/util.py
  12. 31 0
      code/UNFCCC_CRF_reader/read_UNFCCC_CRF_submission.py
  13. 33 0
      code/UNFCCC_CRF_reader/read_UNFCCC_CRF_submission_datalad.py
  14. 30 0
      code/UNFCCC_CRF_reader/read_new_UNFCCC_CRF_for_year.py
  15. 32 0
      code/UNFCCC_CRF_reader/read_new_UNFCCC_CRF_for_year_datalad.py
  16. 23 0
      code/UNFCCC_CRF_reader/test_read_UNFCCC_CRF_for_year.py
  17. 36 0
      code/UNFCCC_CRF_reader/util.py
  18. 100 62
      code/UNFCCC_reader/get_submissions_info.py
  19. 2 1
      code/UNFCCC_reader/read_UNFCCC_submission.py
  20. 2 0
      code/requirements.txt
  21. 1 0
      datasets/UNFCCC/CRF2021/CRF2021_raw_2022-05-06.csv
  22. 1 0
      datasets/UNFCCC/CRF2021/CRF2021_raw_2022-05-06.nc
  23. 26 0
      datasets/UNFCCC/CRF2021/CRF2021_raw_2022-05-06.yaml
  24. 1 0
      datasets/UNFCCC/CRF2022/CRF2022_raw_2022-05-06.csv
  25. 1 0
      datasets/UNFCCC/CRF2022/CRF2022_raw_2022-05-06.nc
  26. 26 0
      datasets/UNFCCC/CRF2022/CRF2022_raw_2022-05-06.yaml
  27. 70 8
      dodo.py
  28. 1 0
      downloaded_data/UNFCCC/00_new_downloads_BUR-2022-05-05.csv
  29. 1 0
      downloaded_data/UNFCCC/00_new_downloads_BUR-2022-05-17.csv
  30. 1 0
      downloaded_data/UNFCCC/00_new_downloads_CRF2022-2022-05-06.csv
  31. 1 0
      downloaded_data/UNFCCC/00_new_downloads_NC-2022-05-05.csv
  32. 1 0
      downloaded_data/UNFCCC/Chad/NC3/RAPPORT_TCN_2020.pdf
  33. 1 0
      downloaded_data/UNFCCC/Gabon/NC3/TROISIEME_COMMUNICATION_NATIONALE_DU_GABON_SUR_LES_CC.pdf
  34. 1 0
      downloaded_data/UNFCCC/Ghana/BUR3/gh_nir5_15052022_final.pdf
  35. 1 0
      downloaded_data/UNFCCC/Guatemala/NC3/3CNCC_low_compressed.pdf
  36. 1 0
      downloaded_data/UNFCCC/Morocco/BUR3/Morocco_BUR3_Fr.pdf
  37. 1 0
      downloaded_data/UNFCCC/Pakistan/BUR1/Pakistan%E2%80%99s_First_Biennial_Update_Report_%28BUR-1%29_-_2022.pdf
  38. 1 0
      downloaded_data/UNFCCC/Saudi_Arabia/NC4/7123846_Saudi_Arabia-NC4-1-Fourth_National_Communication_NC4_Kingdom_of_Saudi_Arabia_March_2022.pdf
  39. 13 18
      downloaded_data/UNFCCC/folder_mapping.json
  40. 1 1
      downloaded_data/UNFCCC/submissions-annexI_2022.csv
  41. 1 1
      downloaded_data/UNFCCC/submissions-bur.csv
  42. 1 1
      downloaded_data/UNFCCC/submissions-nc.csv
  43. 1 0
      extracted_data/UNFCCC/Australia/AUS_CRF2021_15042021.csv
  44. 1 0
      extracted_data/UNFCCC/Australia/AUS_CRF2021_15042021.nc
  45. 26 0
      extracted_data/UNFCCC/Australia/AUS_CRF2021_15042021.yaml
  46. 1 0
      extracted_data/UNFCCC/Austria/AUT_CRF2021_16042021.csv
  47. 1 0
      extracted_data/UNFCCC/Austria/AUT_CRF2021_16042021.nc
  48. 26 0
      extracted_data/UNFCCC/Austria/AUT_CRF2021_16042021.yaml
  49. 1 0
      extracted_data/UNFCCC/Austria/AUT_CRF2022_13042022.csv
  50. 1 0
      extracted_data/UNFCCC/Austria/AUT_CRF2022_13042022.nc
  51. 26 0
      extracted_data/UNFCCC/Austria/AUT_CRF2022_13042022.yaml
  52. 1 0
      extracted_data/UNFCCC/Belarus/BLR_CRF2021_30032021.csv
  53. 1 0
      extracted_data/UNFCCC/Belarus/BLR_CRF2021_30032021.nc
  54. 26 0
      extracted_data/UNFCCC/Belarus/BLR_CRF2021_30032021.yaml
  55. 1 0
      extracted_data/UNFCCC/Belarus/BLR_CRF2022_13042022.csv
  56. 1 0
      extracted_data/UNFCCC/Belarus/BLR_CRF2022_13042022.nc
  57. 26 0
      extracted_data/UNFCCC/Belarus/BLR_CRF2022_13042022.yaml
  58. 1 0
      extracted_data/UNFCCC/Belgium/BEL_CRF2021_13042021.csv
  59. 1 0
      extracted_data/UNFCCC/Belgium/BEL_CRF2021_13042021.nc
  60. 26 0
      extracted_data/UNFCCC/Belgium/BEL_CRF2021_13042021.yaml
  61. 1 0
      extracted_data/UNFCCC/Belgium/BEL_CRF2022_11042022.csv
  62. 1 0
      extracted_data/UNFCCC/Belgium/BEL_CRF2022_11042022.nc
  63. 26 0
      extracted_data/UNFCCC/Belgium/BEL_CRF2022_11042022.yaml
  64. 1 0
      extracted_data/UNFCCC/Bulgaria/BGR_CRF2021_15042021.csv
  65. 1 0
      extracted_data/UNFCCC/Bulgaria/BGR_CRF2021_15042021.nc
  66. 26 0
      extracted_data/UNFCCC/Bulgaria/BGR_CRF2021_15042021.yaml
  67. 1 0
      extracted_data/UNFCCC/Bulgaria/BGR_CRF2022_15042022.csv
  68. 1 0
      extracted_data/UNFCCC/Bulgaria/BGR_CRF2022_15042022.nc
  69. 26 0
      extracted_data/UNFCCC/Bulgaria/BGR_CRF2022_15042022.yaml
  70. 1 0
      extracted_data/UNFCCC/Canada/CAN_CRF2021_06042021.csv
  71. 1 0
      extracted_data/UNFCCC/Canada/CAN_CRF2021_06042021.nc
  72. 26 0
      extracted_data/UNFCCC/Canada/CAN_CRF2021_06042021.yaml
  73. 1 0
      extracted_data/UNFCCC/Canada/CAN_CRF2022_27032022.csv
  74. 1 0
      extracted_data/UNFCCC/Canada/CAN_CRF2022_27032022.nc
  75. 26 0
      extracted_data/UNFCCC/Canada/CAN_CRF2022_27032022.yaml
  76. 1 0
      extracted_data/UNFCCC/Croatia/HRV_CRF2021_09042021.csv
  77. 1 0
      extracted_data/UNFCCC/Croatia/HRV_CRF2021_09042021.nc
  78. 26 0
      extracted_data/UNFCCC/Croatia/HRV_CRF2021_09042021.yaml
  79. 1 0
      extracted_data/UNFCCC/Croatia/HRV_CRF2022_12042022.csv
  80. 1 0
      extracted_data/UNFCCC/Croatia/HRV_CRF2022_12042022.nc
  81. 26 0
      extracted_data/UNFCCC/Croatia/HRV_CRF2022_12042022.yaml
  82. 1 0
      extracted_data/UNFCCC/Cyprus/CYP_CRF2021_12032021.csv
  83. 1 0
      extracted_data/UNFCCC/Cyprus/CYP_CRF2021_12032021.nc
  84. 26 0
      extracted_data/UNFCCC/Cyprus/CYP_CRF2021_12032021.yaml
  85. 1 0
      extracted_data/UNFCCC/Cyprus/CYP_CRF2022_13032022.csv
  86. 1 0
      extracted_data/UNFCCC/Cyprus/CYP_CRF2022_13032022.nc
  87. 26 0
      extracted_data/UNFCCC/Cyprus/CYP_CRF2022_13032022.yaml
  88. 1 0
      extracted_data/UNFCCC/Czechia/CZE_CRF2021_07042021.csv
  89. 1 0
      extracted_data/UNFCCC/Czechia/CZE_CRF2021_07042021.nc
  90. 26 0
      extracted_data/UNFCCC/Czechia/CZE_CRF2021_07042021.yaml
  91. 1 0
      extracted_data/UNFCCC/Czechia/CZE_CRF2022_14042022.csv
  92. 1 0
      extracted_data/UNFCCC/Czechia/CZE_CRF2022_14042022.nc
  93. 26 0
      extracted_data/UNFCCC/Czechia/CZE_CRF2022_14042022.yaml
  94. 1 0
      extracted_data/UNFCCC/Denmark/DKE_CRF2021_11042021.csv
  95. 1 0
      extracted_data/UNFCCC/Denmark/DKE_CRF2021_11042021.nc
  96. 26 0
      extracted_data/UNFCCC/Denmark/DKE_CRF2021_11042021.yaml
  97. 1 0
      extracted_data/UNFCCC/Denmark/DKE_CRF2022_06042022.csv
  98. 1 0
      extracted_data/UNFCCC/Denmark/DKE_CRF2022_06042022.nc
  99. 26 0
      extracted_data/UNFCCC/Denmark/DKE_CRF2022_06042022.yaml
  100. 1 0
      extracted_data/UNFCCC/Denmark/DNK_CRF2021_16042021.csv

+ 2 - 0
.gitignore

@@ -4,3 +4,5 @@ geckodriver.log
 __pycache__
 /JG_test_code/
 .doit.db
+log
+code/datasets

+ 102 - 0
code/UNFCCC_CRF_reader/CRF_raw_for_year.py

@@ -0,0 +1,102 @@
+"""
+This script collects all latest CRF submissions for a given year
+
+Currently it only checks the extracted_data folder and not if new
+submission are available in the downloaded data folder.
+"""
+
+# TODO: sort importing and move to datasets folder
+# TODO: integrate into doit
+
+import argparse
+import sys
+import primap2 as pm2
+from pathlib import Path
+from datetime import date
+
+root_path = Path(__file__).parents[2].absolute()
+root_path = root_path.resolve()
+#log_path = root_path / "log"
+code_path = root_path / "code"
+downloaded_data_path = root_path / "downloaded_data" / "UNFCCC"
+extracted_data_path = root_path / "extracted_data" / "UNFCCC"
+dataset_path = root_path / "datasets" / "UNFCCC"
+
+#sys.path.append(code_path.name)
+
+from util import all_crf_countries
+from UNFCCC_CRF_reader_prod import get_input_and_output_files_for_country
+from UNFCCC_CRF_reader_prod import submission_has_been_read
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--submission_year', help='Submission round to read', type=int)
+args = parser.parse_args()
+submission_year = args.submission_year
+
+ds_all_CRF = None
+outdated_countries = []
+included_countries = []
+
+for country in all_crf_countries:
+    # determine folder
+    try:
+        country_info = get_input_and_output_files_for_country(
+            country, submission_year=submission_year, verbose=False)
+
+        # check if the latest submission has been read already
+
+        data_read = submission_has_been_read(
+            country_info["code"], country_info["name"],
+            submission_year=submission_year,
+            submission_date=country_info["date"],
+            verbose=False,
+        )
+        if not data_read:
+            print(f"Latest submission for {country} has not been read yet.")
+            # TODO: make sure an older submission is read if present. currently none is included at all
+            outdated_countries.append(country)
+
+        # read the native format file
+        #print(country_info["output"])
+        input_files = [file for file in country_info["output"] if Path(file).suffix == ".nc"]
+
+        ds_country = pm2.open_dataset(input_files[0])
+
+        # combine per table DS
+        if ds_all_CRF is None:
+            ds_all_CRF = ds_country
+        else:
+            ds_all_CRF = ds_all_CRF.combine_first(ds_country)
+
+        included_countries.append(country)
+
+    except Exception as ex:
+        print(f"Exception {ex} occurred for {country}")
+
+
+# Update metadata
+# not necessary
+
+# write to disc
+today = date.today()
+
+compression = dict(zlib=True, complevel=9)
+output_folder = dataset_path / f"CRF{submission_year}"
+output_filename = f"CRF{submission_year}_raw_{today.strftime('%Y-%m-%d')}"
+
+if not output_folder.exists():
+    output_folder.mkdir()
+
+# write data in interchange format
+pm2.pm2io.write_interchange_format(output_folder / output_filename,
+                                   ds_all_CRF.pr.to_interchange_format())
+
+# write data in native PRIMAP2 format
+encoding = {var: compression for var in ds_all_CRF.data_vars}
+ds_all_CRF.pr.to_netcdf(output_folder / (output_filename + ".nc"),
+                      encoding=encoding)
+
+# show info
+print(f"The following countries are included in the dataset: {included_countries}")
+print(f"The following countries have updated submission not yet read "
+      f"and not included in the dataset: {outdated_countries}")

+ 0 - 21
code/UNFCCC_CRF_reader/UNFCCC_CRF_reader.py

@@ -1,21 +0,0 @@
-import pandas as pd
-
-
-def read_crf_tables(
-
-)->pd.DataFrame:
-    """
-    Read given tables from file and return result as pandas dataframe
-    """
-
-# functions:
-# * production functions
-# ** read one table for a country
-# ** read alist of tables for one country
-# ** convert to IF and NC and save
-# * testing fucntions
-# ** read one or more table(s) for all countries
-#    (and a if desired only a single year) and write
-#    output files with missing sectors etc
-# **
-

+ 1059 - 0
code/UNFCCC_CRF_reader/UNFCCC_CRF_reader_core.py

@@ -0,0 +1,1059 @@
+"""
+This file holds the core functions of the CRF reader.
+Core function are used both for reading for final datasets as
+well as for test-reading to check for new categories etc.
+"""
+
+import re
+import json
+import numpy as np
+import pandas as pd
+import xarray as xr
+import primap2 as pm2
+import pycountry
+from pathlib import Path
+from treelib import Tree
+from operator import itemgetter
+from collections import Counter
+from typing import Dict, List, Optional, Tuple, Union
+from datetime import datetime, timedelta
+import crf_specifications as crf
+from util import downloaded_data_path, NoCRFFilesError, custom_country_mapping
+
+
+### reading functions
+def convert_crf_table_to_pm2if(
+        df_table: pd.DataFrame,
+        submission_year: int,
+        entity_mapping: Optional[Dict[str,str]]=None,
+        coords_defaults_input: Optional[Dict[str,str]]=None,
+        filter_remove_input: Optional[Dict[str,Dict[str,Union[str,List]]]]=None,
+        filter_keep_input: Optional[Dict[str,Dict[str,Union[str,List]]]]=None,
+        meta_data_input: Optional[Dict[str,str]]=None,
+) -> pd.DataFrame:
+    """
+    Converts a given pandas long format crf table to PRIMAP2 interchange format
+
+    Parameters
+    __________
+        df_table: pd.DataFrame
+            Data to convert
+
+        submission_year: int
+            Year of submission
+
+        entity_mapping: Optional[Dict[str,str]]
+            Mapping of entities to PRIMAP2 format. Not necessary for all tables
+
+        coords_defaults_input: Optional[Dict[str,str]],
+            Additional default values for coordinates. (e.g. "Total" for `type`)
+
+        filter_remove_input: Optional[Dict[str,Dict[str,Union[str,List]]]]
+            Filter to remove data during conversion. The format is as in
+            PRIMAP2
+
+        filter_keep_input: Optional[Dict[str,Dict[str,Union[str,List]]]]
+            Filter to keep only specified data during conversion.
+            The format is as in PRIMAP2
+
+        meta_data_input: Optional[Dict[str,str]]
+            Meta data information. If values filled by this function automatically
+            are given as input the automatic values are overwritten.
+
+    Returns
+    _______
+        pd.DataFrame:
+            Pandas DataFrame containing the data in PRIMAP2 interchange format
+            Metadata is stored as attrs in the DataFrame
+    """
+
+    coords_cols = {
+        "category": "category",
+        "entity": "entity",
+        "unit": "unit",
+        "sec_cats__type": "type",
+        "area": "country",
+        "data": "data",
+    }
+
+    add_coords_cols = {
+    #    "orig_cat_name": ["orig_cat_name", "category"],
+    }
+
+    coords_terminologies = {
+        "area": "ISO3",
+        "category": f"CRF2013_{submission_year}",
+        "scenario": "PRIMAP",
+        "type": "CRF2013",
+    }
+
+    coords_defaults = {
+        "source": "UNFCCC",
+        "provenance": "measured",
+        "scenario": f"CRF{submission_year}",
+    }
+    if coords_defaults_input is not None:
+        for key in coords_defaults_input.keys():
+            coords_defaults[key] = coords_defaults_input[key]
+
+    coords_value_mapping = {
+        "unit": "PRIMAP1",
+        "entity": "PRIMAP1",
+    }
+    if entity_mapping is not None:
+        coords_value_mapping["entity"] = entity_mapping
+
+    #coords_value_filling_template = {
+    #}
+
+    filter_remove = {
+        "f1": {
+            "category": ["\IGNORE"],
+        }
+    }
+    if filter_remove_input is not None:
+        for key in filter_remove_input.keys():
+            filter_remove[key] = filter_remove_input[key]
+
+    filter_keep = {
+    }
+    if filter_keep_input is not None:
+        for key in filter_keep_input.keys():
+            filter_keep[key] = filter_keep_input[key]
+
+
+    meta_data = {
+        "references": f"https://unfccc.int/ghg-inventories-annex-i-parties/{submission_year}",
+        "rights": "",
+        "contact": "mail@johannes-guetschow.de",
+        "title": f"Data submitted in {submission_year} to the UNFCCC in the common reporting format (CRF)",
+        "comment": "Read fom xlsx file by Johannes Gütschow",
+        "institution": "United Nations Framework Convention on Climate Change (www.unfccc.int)",
+    }
+    if meta_data_input is not None:
+        for key in meta_data_input.keys():
+            meta_data[key] = meta_data_input[key]
+
+    df_table_if = pm2.pm2io.convert_long_dataframe_if(
+        df_table,
+        coords_cols=coords_cols,
+        add_coords_cols=add_coords_cols,
+        coords_defaults=coords_defaults,
+        coords_terminologies=coords_terminologies,
+        coords_value_mapping=coords_value_mapping,
+        #coords_value_filling=coords_value_filling,
+        filter_remove=filter_remove,
+        filter_keep=filter_keep,
+        meta_data=meta_data
+    )
+    return df_table_if
+
+
+def read_crf_table(
+        country_codes: Union[str, List[str]],
+        table: str,
+        submission_year: int,
+        data_year: Optional[Union[int, List[int]]]=None,
+        date: Optional[str]=None,
+        folder: Optional[str]=None,
+) -> Tuple[pd.DataFrame, List[List], List[List]]:
+    """
+    Read CRF table for given submission year and country / or countries
+    This function can read for multiple years and countries but only a single
+    table. The reason is that combining data from different tables needs
+    consistency checks while combining for different years and countries does not.
+
+    The folder can either be given explicitly or if not given folders are determined
+    from the submission_year and country_code variables
+
+    Parameters
+    __________
+
+    country_codes: str or list[str]
+        ISO 3-letter country code or list of country codes
+
+    table: str
+        name of the table sheet in the CRF xlsx file
+
+    submission_year: int
+        Year of the submission of the data
+
+    data_year: int or List of int (optional)
+        if int a single data year will be read. if a list of ints is given these
+        years will be read. If no nothing is given all data years will be read
+
+    date: str (optional, default is "latest")
+        readonly submission from the given date
+
+    folder: str (optional)
+        Folder that contains the xls files. If not given fodlers are determined by the
+        submissions_year and country_code variables
+
+    Returns
+    _______
+        Tuple[pd.DataFrame, List[List], List[List]]:
+        * First return parameter is the data as a pandas DataFrame in long format
+        * Second return parameter is a list of unknown categories / row headers
+        * Third return parameter holds information on data found in the last read row.
+          This is used as a hint to check if table specifications might have to be adapted
+          as country submitted tables are longer than expected.
+
+    """
+    if isinstance(country_codes, str):
+        country_codes = [country_codes]
+
+    # get file names and locations
+    input_files = get_crf_files(country_codes=country_codes,
+                                submission_year=submission_year,
+                                data_year=data_year,
+                                date=date,
+                                folder=folder)
+    # nasty fix for cases where exporting ran overnight and not all files have the same date
+    if (date is not None) and (len(country_codes)==1):
+        if isinstance(data_year, list):
+            expected_files = len(data_year)
+        elif isinstance(data_year, int):
+            expected_files = 1
+        else:
+            expected_files = submission_year - 1990 - 1
+        if len(input_files) < expected_files:
+            print(f"Found only {len(input_files)} input files for {country_codes}. "
+                  f"Expected {expected_files}.")
+            print(f"Possibly exporting run overnight and some files have the previous day as date.")
+            date_datetime = datetime.strptime(date, "%d%m%Y")
+            date_datetime = date_datetime - timedelta(days=1)
+            prv_date = date_datetime.strftime("%d%m%Y")
+            more_input_files = get_crf_files(country_codes=country_codes,
+                                             submission_year=submission_year,
+                                             data_year=data_year,
+                                             date=prv_date,
+                                             folder=folder)
+            if len(more_input_files) > 0:
+                print(f"Found {len(more_input_files)} additional input files.")
+                input_files = input_files + more_input_files
+            else:
+                print(f"Found no additional input files")
+
+    if input_files == []:
+        raise NoCRFFilesError(f"No files found for {country_codes}, "
+                              f"submission_year={submission_year}, "
+                              f"data_year={data_year}, "
+                              f"date={date}, "
+                              f"folder={folder}.")
+
+    # get specification
+    try:
+        crf_spec = getattr(crf, f"CRF{submission_year}")
+    except:
+        raise ValueError(f"No terminology exists for submission year {submission_year}")
+
+    # now loop over files and read them
+    df_all = None
+    unknown_rows = []
+    last_row_info = []
+    for file in input_files:
+        file_info = get_info_from_crf_filename(file.name)
+        try:
+            int(file_info["data_year"])
+            df_this_file, unknown_rows_this_file, last_row_info_this_file = \
+                read_crf_table_from_file(file, table, crf_spec[table])
+            if df_all is None:
+                df_all = df_this_file.copy(deep=True)
+                unknown_rows = unknown_rows_this_file
+                last_row_info = last_row_info_this_file
+            else:
+                df_all = pd.concat([df_this_file, df_all])
+                unknown_rows = unknown_rows + unknown_rows_this_file
+                last_row_info = last_row_info + last_row_info_this_file
+        except:
+            print(f"Year could not be converted to int for file {file}. Skipping file.")
+
+    return df_all, unknown_rows, last_row_info
+
+
+def read_crf_table_from_file(
+        file: Path,
+        table: str,
+        table_spec: Dict[str, Dict],
+) -> Tuple[pd.DataFrame, List[List], List[List]]:
+    """
+    Read a single CRF table from a given file. This is the core function of the CRF
+    reading process as it reads the data from xls and performs the category mapping.
+
+    Parameters
+    __________
+    file: Path
+        file to read from
+
+    table: str
+        table to read (name of the sheet in the xlsx file)
+
+    table_spec: Dict[str, Dict]
+        Specification for the given table, e.g. CRF2021["Table4"]
+
+    Returns
+    _______
+        Tuple[pd.DataFrame, List[List], List[List]]:
+        * First return parameter is the data as a pandas DataFrame in long format
+        * Second return parameter is a list of unknown categories / row headers
+        * Third return parameter holds information on data found in the last read row.
+          This is used as a hint to check if table specifications might have to be adapted
+          as country submitted tables are longer than expected.
+
+    TODO: add verbosity option for debugging?
+    """
+
+    table_properties = table_spec["table"]
+    file_info = get_info_from_crf_filename(file.name)
+
+    # find non-unique categories in mapping
+    all_cats_mapping = table_spec["sector_mapping"]
+    all_cats = [cat[0] for cat in all_cats_mapping]
+
+    unique_cats = [cat for (cat, count) in Counter(all_cats).items() if count == 1]
+    unique_cat_tuples = [mapping for mapping in all_cats_mapping if mapping[0] in unique_cats]
+    unique_mapping = dict(zip([tup[0] for tup in unique_cat_tuples],
+                              [tup[1] for tup in unique_cat_tuples]))
+    non_unique_cats = [cat for (cat, count) in Counter(all_cats).items() if count > 1]
+
+    # prepare the sector hierarchy
+    if non_unique_cats:
+        # if we have non-unique categories present we need the information on
+        # levels within the category hierarchy
+        category_tree = create_category_tree(all_cats_mapping, table, file_info["party"])
+
+    # prepare index colum information
+    cat_col = table_properties["col_for_categories"]
+    index_cols = table_properties["categories"] + [cat_col]
+    cols_for_space_stripping = [table_properties["col_for_categories"]]
+
+    # read the data
+    print(f"Reading table {table} for year {file_info['data_year']} from {file.name}.")
+    skiprows = table_properties["firstrow"] - 1
+    nrows = table_properties["lastrow"] - skiprows + 1 # read one row more to check if we reached the end
+    # we read with user specific NaN treatment as the NaN treatment is part of the conversion to
+    # PRIMAP2 format.
+    df_raw = pd.read_excel(file, sheet_name=table, skiprows=skiprows , nrows=nrows, engine="openpyxl",
+                               na_values=['-1.#IND', '-1.#QNAN', '-NaN', '-nan', '1.#IND', '1.#QNAN',
+                                          'NULL', 'NaN', ''], keep_default_na=False)
+
+    if len(df_raw) < nrows:
+        #print(f"read data truncated because of all-nan rows")
+        last_row_nan = True
+    else:
+        last_row_nan = False
+
+    #### prepare the header (2 row header, first entity, then unit)
+    # We do this before removing columns and any other processing to
+    # have consistent column names in the configuration and to avoid
+    # "Unnamed: X" column names which appear after reading of merged
+    # cells
+    # the filling leads to long and a bit confusing headers, but as long
+    # as pandas can not fill values of merged cells in all individual cells
+    # we have to use some filling algorithm.
+    df_header = df_raw.iloc[0:len(table_properties["header"])-1].copy(deep=True)
+    df_header.loc[-1] = df_header.columns.values
+    df_header.index = df_header.index + 1
+    # replace "Unnamed: X" colum names by nan to fill from left in next step
+    df_header = df_header.sort_index()
+    df_header = df_header.replace(r"Unnamed: [0-9]{1,2}", np.nan, regex=True)
+    header = []
+    # fill nans with the last value from the left
+    for row in range(0, len(df_header)):
+        header.append(list(df_header.iloc[row].fillna(method="ffill")))
+
+    # combine all non-unit rows into one
+    entities = None
+    units = None
+    for idx, row in enumerate(header):
+        if table_properties["header"][idx] == "unit":
+            units = row
+        else:
+            if entities is None:
+                entities = row
+            else:
+                for col, value in enumerate(row):
+                    if str(value) != "nan":
+                        entities[col] = f"{entities[col]} {value}"
+
+    if units is None:
+        raise ValueError(f"Specification for table {table} does not contain unit information.")
+
+    # remove double spaces
+    entities = [entity.strip() for entity in entities]
+    entities = [re.sub('\s+', ' ', entity) for entity in entities]
+
+    # replace the old header
+    if len(header) > 2:
+        df_current = df_raw.drop(index=df_raw.iloc[0:len(header)-2].index)
+    else:
+        df_current = df_raw
+
+    df_current.iloc[0] = units
+    df_current.columns = entities
+    #### standardized header is finalized
+
+    # remove all columns to ignore
+    df_current = df_current.drop(columns=table_properties["cols_to_ignore"])
+
+    # remove double spaces
+    for col in cols_for_space_stripping:
+        df_current[col] = df_current[col].str.strip()
+        df_current[col] = df_current[col].replace('\s+', ' ', regex=True)
+
+    # prepare for sector mapping by initializing result lists and
+    # variables
+    new_cats = [[''] * len(table_properties["categories"])] * len(df_current)
+
+    # copy the header rows which are not part of the index (unit)
+    new_cats[0] = [df_current.iloc[0][cat_col]] * len(table_properties["categories"])
+
+    # do the sector mapping here as we need to keep track of unmapped categories
+    # and also need to consider the order of elements for the mapping
+    unknown_categories = []
+    info_last_row = []
+    if non_unique_cats:
+        # need to initialize the tree parsing.
+        last_parent = category_tree.get_node("root")
+        all_nodes = set([category_tree.get_node(node).tag for node in category_tree.nodes])
+
+        for idx in range(1, len(df_current)):
+            current_cat = df_current.iloc[idx][cat_col]
+            if current_cat in table_properties["stop_cats"]:
+                # we've reached the end of the table, so stop processing
+                # and remove all further rows
+                df_current = df_current.drop(df_current.index[idx:])
+                new_cats = new_cats[0:idx]
+                break
+
+            # check if current category is a child of the last node
+            children = dict([[child.tag, child.identifier]
+                        for child in category_tree.children(last_parent.identifier)])
+            if current_cat in children.keys():
+                # the current category is a child of the current parent
+                # do the mapping
+                node = category_tree.get_node(children[current_cat])
+                new_cats[idx] = node.data[1]
+                # check if the node has children
+                new_children = category_tree.children(node.identifier)
+                if new_children:
+                    last_parent = node
+            else:
+                # two possibilities
+                # 1. The category is at a higher point in the hierarchy
+                # 2. It's missing in the hierarchy
+                # we have to first move up the hierarchy
+                # first check if category is present at all
+                if current_cat in all_nodes:
+                    old_parent = last_parent
+
+                    while (current_cat not in children.keys()) and \
+                            (last_parent.identifier != "root"):
+                        last_parent = category_tree.get_node(
+                            last_parent.predecessor(category_tree.identifier))
+                        children = dict([[child.tag, child.identifier]
+                                    for child in category_tree.children(last_parent.identifier)])
+
+                    if (last_parent.identifier == "root") and \
+                        (current_cat not in children.keys()):
+                        # we have not found the category as direct child of any of the
+                        # predecessors. Thus it is missing in the specification in
+                        # that place
+                        print(f"Unknown category '{current_cat}' found in {table} for {file_info['party']}, "
+                              f"{file_info['data_year']} (last parent: {old_parent.tag}).")
+                        unknown_categories.append([table, file_info["party"], current_cat, file_info['data_year']])
+                        # copy back the parent info to continue with next category
+                        last_parent = old_parent
+                    else:
+                        # do the mapping
+                        node = category_tree.get_node(children[current_cat])
+                        new_cats[idx] = node.data[1]
+                        # check if the node has children
+                        new_children = category_tree.children(node.identifier)
+                        if new_children:
+                            last_parent = node
+                else:
+                    print(f"Unknown category '{current_cat}' found in {table} for {file_info['party']}, {file_info['data_year']}.")
+                    unknown_categories.append([table, file_info["party"], current_cat, file_info['data_year']])
+    else:
+        for idx in range(1, len(df_current)):
+            current_cat = df_current.iloc[idx][cat_col]
+            if current_cat in table_properties["stop_cats"]:
+                # we've reached the end of the table, so stop processing
+                # and remove all further rows
+                df_current = df_current.drop(df_current.index[idx:])
+                new_cats = new_cats[0:idx]
+                break
+            if current_cat in all_cats:
+                new_cats[idx] = unique_mapping[current_cat]
+                if (idx == len(df_current) - 1) and not last_row_nan:
+                    print(f"found information in last row: category {current_cat}, row {idx}")
+                    info_last_row.append([table, file_info["party"], current_cat, file_info['data_year']])
+            else:
+                print(f"Unknown category '{current_cat}' found in {table} for {file_info['party']}, {file_info['data_year']}.")
+                unknown_categories.append([table, file_info["party"], current_cat, file_info['data_year']])
+
+    for idx, col in enumerate(table_properties["categories"]):
+        df_current.insert(loc=idx, column=col, value=
+                          [cat[idx] for cat in new_cats])
+
+    # set index
+    df_current = df_current.set_index(index_cols)
+    # process the unit information using the primap2 functions
+
+    df_current = pm2.pm2io.nir_add_unit_information(df_current, **table_properties["unit_info"])
+
+    # convert to long format
+    header_long = table_properties["categories"] + \
+        ["orig_cat_name", "entity", "unit", "time", "data"]
+    df_long = pm2.pm2io.nir_convert_df_to_long(
+        df_current, file_info["data_year"], header_long=header_long)
+
+    # add country information
+    df_long.insert(0, column="country", value=file_info["party"])
+    #df_long.insert(1, column="submission", value=f"CRF{file_info['submission_year']}")
+    if "coords_defaults" in table_spec.keys():
+        for col in table_spec["coords_defaults"]:
+            df_long.insert(2, column=col, value=table_spec["coords_defaults"][col])
+
+    return df_long, unknown_categories, info_last_row
+
+
+def get_crf_files(
+        country_codes: Union[str, List[str]],
+        submission_year: int,
+        data_year: Optional[Union[int, List[int]]] = None,
+        date: Optional[str] = None,
+        folder: Optional[str] = None,
+) -> List[Path]:
+    """
+    Finds all files according to given parameters
+
+    Parameters
+    __________
+
+    country_codes: str or list[str]
+        ISO 3-letter country code or list of country codes
+
+    submission_year: int
+        Year of the submission of the data
+
+    data_year: int or List of int (optional)
+        if int a single data year will be read. if a list of ints is given these
+        years will be read. If no nothing is given all data years will be read
+
+    date: str (optional, default is "latest")
+        readonly submission from the given date
+
+    folder: str (optional)
+        Folder that contains the xls files. If not given fodlers are determined by the
+        submissions_year and country_code variables
+
+    Returns
+    _______
+        List[Path]: list of Path objects for the files
+    """
+    if isinstance(country_codes, str):
+        country_codes = [country_codes]
+    input_files = []
+    # get file names and locations
+    # we're filtering for country and submission year here but in the repository setup
+    # we should only have files for one country and submission in the folder. But the
+    # function can also be used on a given folder and then the filter is useful.
+    if folder is None:
+        data_folder = downloaded_data_path
+        submission_folder = f"CRF{submission_year}"
+
+        with open(data_folder / "folder_mapping.json", "r") as mapping_file:
+            folder_mapping = json.load(mapping_file)
+
+        # use country default folders
+        country_folders = []
+        for country_code in country_codes:
+            if country_code in folder_mapping:
+                new_country_folders = folder_mapping[country_code]
+                if isinstance(new_country_folders, str):
+                    # only one folder
+                    country_folders = country_folders + \
+                                      [data_folder / new_country_folders / submission_folder]
+                else:
+                    country_folders = country_folders + \
+                                      [data_folder / folder / submission_folder
+                                       for folder in new_country_folders]
+            else:
+                raise ValueError(f"No data folder found for country {country_code}. "
+                                 f"Check if folder mapping is up to date.")
+    else:
+        country_folders = [folder]
+
+    file_filter_template = {}
+    file_filter_template["submission_year"] = submission_year
+    file_filter_template["party"] = country_codes
+    if data_year is not None:
+        file_filter_template["data_year"] = data_year
+
+    for input_folder in country_folders:
+        input_folder = Path(input_folder)
+        if input_folder.exists():
+            # if desired find the latest date and only read that
+            # has to be done per country
+            if date == "latest":
+                for country in country_codes:
+                    file_filter = file_filter_template.copy()
+                    file_filter["party"] = country
+                    dates = get_submission_dates(folder, file_filter)
+                    file_filter["date"] = find_latest_date(dates)
+                    input_files = input_files + \
+                                  filter_filenames(input_folder.glob("*.xlsx"),
+                                                   **file_filter)
+            else:
+                file_filter = file_filter_template.copy()
+                if date is not None:
+                    file_filter["date"] = date
+                input_files = input_files + \
+                              filter_filenames(input_folder.glob("*.xlsx"),
+                                               **file_filter)
+        else:
+            raise ValueError(f"Folder {input_folder} does not exist")
+
+    return input_files
+
+
+def get_info_from_crf_filename(
+        filename: str,
+) -> Dict[str, Union[int, str]]:
+    """
+    Parse given file name and return a dict with information
+    on the contained data.
+
+    Parameters
+    __________
+
+    filename: str
+        The file to analyze (without path)
+
+    Returns
+    _______
+    dict with fields:
+        party: the party that submitted the data (3 letter code)
+        submission_year: year of submission
+        data_year: year in which the meissions took place
+        date: date of the submission
+        extra: rest of the file name
+    """
+    name_parts = filename.split("_")
+    file_info = {}
+    file_info["party"] = name_parts[0]
+    file_info["submission_year"] = int(name_parts[1])
+    try:
+        file_info["data_year"] = int(name_parts[2])
+    except:
+        print(f"Data year string {name_parts[2]} "
+              "could not be converted to int.")
+        file_info["data_year"] = name_parts[2]
+    file_info["date"] = name_parts[3]
+    file_info["extra"] = name_parts[4]
+    return file_info
+
+
+def filter_filenames(
+        files_to_filter: List[Path],
+        party: Optional[Union[str, List[str]]] = None,
+        data_year: Optional[Union[int, List[int]]] = None,
+        submission_year: Optional[str] = None,
+        date: Optional[str] = None,
+) -> List[Path]:
+    """ Filter a list of filenames of CRF files
+
+    Parameters
+    __________
+    files_to_filter: List[Path]
+        List with pathlib.Path objects for the filenames to filter
+
+    party: Optional[Union[str, List[str]]] (default: None)
+        List of country codes or single country code. If given only files
+        for this(these) country-code(s) will be returned.
+
+    data_year: Optional[Union[int, List[int]]] (default: None)
+        List of data years or single year. If given only files for this
+        (these) year(s) will be returned
+
+    submission_year: Optional[str] (default: None)
+        List of submission years or single year. If given only files with the
+        given submission year(s) will be returned
+
+    date: Optional[str] (default: None)
+        Date. If given only files with the given submission date will be returned
+
+    """
+    file_filter = {}
+    if party is not None:
+        file_filter["party"] = party
+    if submission_year is not None:
+        file_filter["submission_year"] = submission_year
+    if data_year is not None:
+        file_filter["data_year"] = data_year
+    if date is not None:
+        file_filter["date"] = date
+
+    filtered_files = []
+    for file in files_to_filter:
+        if not file.is_dir():
+            file_info = get_info_from_crf_filename(file.name)
+            if check_crf_file_info(file_info, file_filter):
+                filtered_files.append(file)
+
+    return filtered_files
+
+
+def check_crf_file_info(
+        file_info: Dict,
+        file_filter: Dict,
+) -> bool:
+    """
+    Check if a CRF file has given properties
+
+    Parameters
+    __________
+    file_info: Dict
+        the file info dict of a CRF xlsx file as returned by
+        `get_info_from_crf_filename`
+
+    file_filter: Dict
+        possible keys are `party`, `data_year`, `submission_year` and `date`
+        with functionality as in `filter_filenames`
+
+    Returns
+    _______
+        bool: `True` if the file info matches the filter and `False` if not
+
+    """
+    if "submission_year" in file_filter.keys():
+        if file_info["submission_year"] != file_filter["submission_year"]:
+            return False
+    if "date" in file_filter.keys():
+        if file_info["date"] != file_filter["date"]:
+            return False
+    if "data_year" in file_filter.keys():
+        if isinstance(file_filter["data_year"], int):
+            if file_info["data_year"] != file_filter["data_year"]:
+                return False
+        else:
+            if file_info["data_year"] not in file_filter["data_year"]:
+                return False
+    if "party" in file_filter.keys():
+        if isinstance(file_filter["party"], str):
+            if file_info["party"] != file_filter["party"]:
+                return False
+        else:
+            if file_info["party"] not in file_filter["party"]:
+                return False
+    return True
+
+
+def create_category_tree(
+        specification: List[List],
+        table: str,
+        country: Optional[str] = None,
+) -> Tree:
+    """
+    Create a treelib Tree for the categorical hierarchy from a CRF
+    table specification.
+
+    The tree is used to parse the row headers in CRF xlsx files and assign the
+    correct categories to non-unique row headers.
+
+    Parameters
+    __________
+
+    specification: List[List]
+        The `sector_mapping` dict of a table specification
+
+    table: str
+        Name of the table. Mainly used for output so error messages can
+        be linked to tables
+
+    country: str (optional)
+        Country name to build the table for. Some categories are country dependent.
+        To include them in the tree the country name has to be specified. If no country name
+        is given the generic tree will be built.
+
+    """
+    # small sanity check on the specification
+    if len(specification[0]) < 3:
+        raise ValueError(f"Error: Specification for Table {table} has non-unique "
+                         "categories and need level specifications")
+
+    # initialize variables for tree building
+    parent_info = [
+        {
+            "level": -1,
+            "id": "root",
+        }
+    ]
+    category_tree = Tree()
+    category_tree.create_node(table, "root")
+    last_cat_info = {
+        "level": 0,
+        "category": "",
+        "id": "root",
+    }
+
+    # filter categories in case country is given
+    if country is not None:
+        # remove country tags from categories and mark categories
+        # for other countries for removal
+        specification = [filter_category(mapping, country)
+                         for mapping in specification]
+        # remove the categories for other countries
+        specification = [mapping for mapping in specification
+                         if mapping[0] != "\REMOVE"]
+
+    # build a tree from specification
+    # when looping over the categories present in the table
+    # to read data from we walk along this tree
+    for idx, mapping in enumerate(specification):
+        current_cat = mapping[0]
+        current_cat_level = mapping[2]
+        if current_cat_level == last_cat_info["level"]:
+            # cat has the same level as preceeding on, so no change to
+            # parent node
+            category_tree.create_node(current_cat, idx, parent=parent_info[-1]["id"], data=mapping)
+        elif current_cat_level == last_cat_info["level"] + 1:
+            # the current category is one level further away from
+            # the trunk of the tree. This means that
+            # * the previous category is its parent
+            # add it to parent info
+            parent_info.append(
+                {
+                    "id": last_cat_info["id"],
+                    "tag": last_cat_info["category"],
+                    "level": last_cat_info["level"]
+                }
+            )
+            # add the category as new node
+            category_tree.create_node(current_cat, idx, parent=parent_info[-1]["id"], data=mapping)
+
+        elif current_cat_level < last_cat_info["level"]:
+            # the new level is smaller (closer to the trunk)
+            # than the last one. Thus we remove all parents
+            # from this level on
+            parent_info = parent_info[0: current_cat_level + 1]
+            category_tree.create_node(current_cat, idx, parent=parent_info[-1]["id"], data=mapping)
+        else:
+            # increase in levels of more than one is not allowed
+            raise ValueError(f"Error in sector hierarchy for table {table}, category {current_cat}: "
+                             f"Category level is {current_cat_level} and parent level is "
+                             f"{parent_info[-1]['level']}")
+
+        # set last_cat_info
+        last_cat_info["category"] = current_cat
+        last_cat_info["level"] = current_cat_level
+        last_cat_info["id"] = idx
+
+    return category_tree
+
+
+def filter_category(
+        mapping: List,
+        country: str,
+) -> List[str]:
+    """
+    This function checks if a category mapping is suitable for the given country.
+    If it is the country information will be removed and the new mapping returned.
+    If it is not suitable it will be returned with category name "\REMOVE" such that
+    it can be removed from the mapping by the calling function.
+
+    Parameters
+    __________
+        mapping: List
+            mapping for a single category
+        country: str
+            iso 3-letter code of the country
+
+    Returns
+    _______
+        List: updated mapping
+
+    """
+    string_exclude = f"\C!-"
+    regex_exclude = r"\\C!-([A-Z\-]+)\\"
+    regex_exclude_full = r"(\\C!-[A-Z\-]+\\)"
+    string_country = f"\C-{country}\\"
+    regex_countries = r"^\\C-[A-Z]{3}\\"
+    new_mapping = mapping.copy()
+    if mapping[0].startswith(string_exclude):
+        re_result = re.search(regex_exclude, mapping[0])
+        countries_ex = re_result.group(1)
+        countries_ex = countries_ex.split("-")
+        if country in countries_ex:
+            new_mapping[0] = "\REMOVE"
+        else:
+            re_result = re.search(regex_exclude_full, mapping[0])
+            new_mapping[0] = mapping[0][len(re_result.group(1)) + 1:]
+    elif mapping[0].startswith(string_country):
+        new_mapping[0] = mapping[0][len(string_country) + 1:]
+    elif re.match(regex_countries, mapping[0]):
+        new_mapping[0] = "\REMOVE"
+
+    return new_mapping
+
+
+def get_latest_date_for_country(
+        country_code: str,
+        submission_year: int,
+)->str:
+    """
+    Find the latest submission date for a country
+
+    Parameters
+    __________
+    country: str
+        3-letter country code
+
+    submission_year: int
+        Year of the submission to find the l;atest date for
+
+    Returns
+    _______
+        str: string with date
+    """
+
+    with open(downloaded_data_path / "folder_mapping.json", "r") as mapping_file:
+        folder_mapping = json.load(mapping_file)
+
+    if country_code in folder_mapping:
+        file_filter = {}
+        file_filter["party"] = country_code
+        file_filter["submission_year"] = submission_year
+        country_folders = folder_mapping[country_code]
+        if isinstance(country_folders, str):
+            # only one folder
+            submission_date = find_latest_date(get_submission_dates(
+                downloaded_data_path / country_folders / f"CRF{submission_year}", file_filter))
+        else:
+            dates = []
+            for folder in country_folders:
+                dates = dates + get_submission_dates(
+                    downloaded_data_path / folder / f"CRF{submission_year}", file_filter)
+            submission_date = find_latest_date(dates)
+    else:
+        raise ValueError(f"No data folder found for country {country_code}. "
+                         f"Check if folder mapping is up to date.")
+
+    return submission_date
+
+
+def get_submission_dates(
+        folder: Path,
+        file_filter: Dict[str, Union[str, int, List]],
+)->List[str]:
+    """
+    Returns all submission dates available in a folder
+
+    Parameters
+    __________
+    folder: Path
+        Folder to analyze
+
+    file_filter: Dict[str, Union[str, int, List]]
+        Dict with possible fields "party", "submission_year", "data_year"
+
+    Returns
+    _______
+        List[str]:
+            List of dates as str
+    """
+
+    if "date" in file_filter:
+        raise ValueError(f"'date' present in 'file_filter'. This makes no sense as "
+                         f"the function's purpose is to return available dates.")
+
+    if folder.exists():
+        files = filter_filenames(folder.glob("*.xlsx"), **file_filter)
+    else:
+        raise ValueError(f"Folder {folder} does not exist")
+
+    dates = [get_info_from_crf_filename(file.name)["date"] for file in files]
+    dates = list(set(dates))
+
+    return dates
+
+
+def get_submission_parties(
+        folder: Path,
+        file_filter: Dict[str, Union[str, int, List]],
+)->List[str]:
+    """
+    Returns all submission dates available in a folder
+
+    Parameters
+    __________
+    folder: Path
+        Folder to analyze
+
+    file_filter: Dict[str, Union[str, int, List]]
+        Dict with possible fields "submission_year", "data_year", "date"
+
+    Returns
+    _______
+        List[str]:
+            List of parties as str
+    """
+
+    if "party" in file_filter:
+        raise ValueError(f"'party' present in 'file_filter'. This makes no sense as "
+                         f"the function's purpose is to return available parties.")
+
+    if folder.exists():
+        files = filter_filenames(folder.glob("*.xlsx"), **file_filter)
+    else:
+        raise ValueError(f"Folder {folder} does not exist")
+
+    parties = [get_info_from_crf_filename(file.name)["party"] for file in files]
+    parties = list(set(parties))
+
+    return parties
+
+
+def find_latest_date(
+        dates: List[str],
+)-> str:
+    """
+    Returns the latest date in a list of dates as str in the format
+    ddmmyyyy
+
+    Parameters
+    __________
+    dates: List[str]
+        List of dates
+
+    Returns
+    _______
+        str: latest date
+    """
+
+    if len(dates) > 0:
+        dates_datetime = [[date, datetime.strptime(date, "%d%m%Y")] for date in dates]
+        dates_datetime = sorted(dates_datetime, key=itemgetter(1))
+    else:
+        raise ValueError(f"Passed list of dates is empty")
+
+    return dates_datetime[-1][0]
+
+
+def get_country_name(
+        country_code: str,
+) -> str:
+    """get country name from code """
+    if country_code in custom_country_mapping:
+        country_name = custom_country_mapping[country_code]
+    else:
+        try:
+            country = pycountry.countries.get(alpha_3=country_code)
+            country_name = country.name
+        except:
+            raise ValueError(f"Country code {country_code} can not be mapped to "
+                             f"any country")
+
+    return country_name

+ 243 - 0
code/UNFCCC_CRF_reader/UNFCCC_CRF_reader_devel.py

@@ -0,0 +1,243 @@
+"""
+This file holds functions that are used in CRF reading development like
+adding new tables or new submission years (and according country specific
+categories). Thue functions are tailored towards debug output and reading
+of single years in contrast to the production functions which are tailored
+towards the creation of full datasets including storage in the
+"""
+
+import pandas as pd
+import xarray as xr
+import primap2 as pm2
+from typing import List, Optional
+from pathlib import Path
+from datetime import date
+
+
+from util import all_crf_countries
+from util import log_path
+import crf_specifications as crf
+from UNFCCC_CRF_reader_core import get_country_name
+from UNFCCC_CRF_reader_core import get_latest_date_for_country, read_crf_table
+from UNFCCC_CRF_reader_core import convert_crf_table_to_pm2if
+
+def read_year_to_test_specs(
+        submission_year: int,
+        data_year: Optional[int]=None,
+) -> xr.Dataset:
+    """
+    Read one xlsx file (so one data year) for each country for a submission year to
+    create log files and extend the specifications
+
+    """
+    if data_year is None:
+        data_year=2000
+
+    unknown_categories = []
+    last_row_info = []
+    ds_all = None
+    print(f"CRF test reading for CRF{submission_year}. Using data year {data_year}")
+    print("#"*80)
+    try:
+        crf_spec = getattr(crf, f"CRF{submission_year}")
+    except:
+        raise ValueError(f"No terminology exists for submission years {submission_year}, "
+                         f"{submission_year - 1}")
+
+    tables = [table for table in crf_spec.keys()
+              if crf_spec[table]["status"] == "tested"]
+    print(f"The following tables are available in the " \
+          f"CRF{submission_year} specification: {tables}")
+    print("#" * 80)
+
+    for country_code in all_crf_countries:
+        # get country name
+        country_name = get_country_name(country_code)
+        print(f"Reading for {country_name}")
+        # get specification and available tables
+
+        try:
+            submission_date = get_latest_date_for_country(country_code, submission_year)
+        except:
+            print(f"No submissions for country {country_name}, CRF{submission_year}")
+            submission_date = None
+
+        if submission_date is not None:
+            for table in tables:
+                # read table for all years
+                ds_table, new_unknown_categories, new_last_row_info = read_crf_table(
+                    country_code, table, submission_year, date=submission_date, data_year=[data_year])
+
+                # collect messages on unknown rows etc
+                unknown_categories = unknown_categories + new_unknown_categories
+                last_row_info = last_row_info + new_last_row_info
+
+                # convert to PRIMAP2 IF
+                # first drop the orig_cat_name col as it can have multiple values for
+                # one category
+                ds_table = ds_table.drop(columns=["orig_cat_name"])
+
+                # TODO: catch entity conversion errors and make list of error entities
+                # if we need to map entities pass this info to the conversion function
+                if "entity_mapping" in crf_spec[table]:
+                    entity_mapping = crf_spec[table]["entity_mapping"]
+                else:
+                    entity_mapping = None
+                try:
+                    ds_table_if = convert_crf_table_to_pm2if(
+                        ds_table,
+                        submission_year,
+                        meta_data_input={"title": f"Data submitted in {submission_year} to the UNFCCC "
+                                                  f"in the common reporting format (CRF) by {country_name}. "
+                                                  f"Submission date: {submission_date}"},
+                        entity_mapping=entity_mapping,
+                    )
+
+                    # now convert to native PRIMAP2 format
+                    ds_table_pm2 = pm2.pm2io.from_interchange_format(ds_table_if)
+
+                    # combine per table DS
+                    if ds_all is None:
+                        ds_all = ds_table_pm2
+                    else:
+                        ds_all = ds_all.combine_first(ds_table_pm2)
+                except:
+                    print(f"Error occured when converting table {table} for {country_name} to"
+                          f" PRIMAP2 IF.")
+                    # TODO: error handling and logging
+
+    # process log messages.
+    today = date.today()
+    if len(unknown_categories) > 0:
+        log_location = log_path / f"CRF{submission_year}" \
+                       / f"{data_year}_unknown_categories_{today.strftime('%Y-%m-%d')}.csv"
+        print(f"Unknown rows found. Savin log to {log_location}")
+        save_unknown_categories_info(unknown_categories, log_location)
+
+    if len(last_row_info) > 0:
+        log_location = log_path / f"CRF{submission_year}" \
+                       / f"{data_yar}_last_row_info_{today.strftime('%Y-%m-%d')}.csv"
+        print(f"Data found in the last row. Savin log to "
+              f"{log_location}")
+        save_last_row_info(last_row_info, log_location)
+
+    # save the data:
+    compression = dict(zlib=True, complevel=9)
+    output_folder = log_path / f"test_read_CRF{submission_year}"
+    output_filename = f"CRF{submission_year}_{today.strftime('%Y-%m-%d')}"
+
+    if not output_folder.exists():
+        output_folder.mkdir()
+
+    # write data in interchange format
+    pm2.pm2io.write_interchange_format(output_folder / output_filename,
+                                       ds_all.pr.to_interchange_format())
+
+    # write data in native PRIMAP2 format
+    encoding = {var: compression for var in ds_all.data_vars}
+    ds_all.pr.to_netcdf(output_folder / (output_filename + ".nc"),
+                        encoding=encoding)
+
+    return ds_all
+
+
+def save_unknown_categories_info(
+        unknown_categories: List[List],
+        file: Path,
+) -> None:
+    """
+    Save information on unknown categories to a csv file.
+
+    Parameters
+    __________
+
+    unknown_categories: List[List]
+        List of lists with information on the unknown categories.
+        (which table, country and year, and which categories)
+
+    file: pathlib.Path
+        File including path where the data should be stored
+
+    """
+    # process unknown categories
+    df_unknown_cats = pd.DataFrame(unknown_categories, columns=["Table", "Country", "Category", "Year"])
+
+    processed_cats = []
+    all_tables = df_unknown_cats["Table"].unique()
+    all_years = set(df_unknown_cats["Year"].unique())
+    all_years = set([year for year in all_years if isinstance(year, int)])
+    all_years = set([year for year in all_years if int(year) > 1989])
+    for table in all_tables:
+        df_cats_current_table = df_unknown_cats[df_unknown_cats["Table"] == table]
+        cats_current_table = list(df_cats_current_table["Category"].unique())
+        for cat in cats_current_table:
+            df_current_cat_table = df_cats_current_table[df_cats_current_table["Category"] == cat]
+            all_countries = df_current_cat_table["Country"].unique()
+            countries_cat = ""
+            for country in all_countries:
+                years_country = df_current_cat_table[df_current_cat_table["Country"] == country]["Year"].unique()
+                if set(years_country) == all_years:
+                    countries_cat = f"{countries_cat}; {country}"
+                else:
+                    countries_cat = f"{countries_cat}; {country} ({years_country})"
+            processed_cats.append([table, cat, countries_cat])
+
+
+    if not file.parents[1].exists():
+        file.parents[1].mkdir()
+    if not file.parents[0].exists():
+        file.parents[0].mkdir()
+    df_processed_cats = pd.DataFrame(processed_cats, columns=["Table", "Category", "Countries"])
+    df_processed_cats.to_csv(file, index=False)
+
+
+def save_last_row_info(
+        last_row_info: List[List],
+        file: Path,
+    ) -> None:
+    """
+    Save information on data found in the last row read for a table.
+    The last row read should not contain data. If it does contain data
+    it is a hint that table size is larger for some countries than
+    given in the specification and thus we might not read the full table.
+
+    Parameters
+    __________
+
+    last_row_info: List[List]
+        List of lists with information on the unknown categories.
+        (which table, country and year, and which categories)
+
+    file: pathlib.Path
+        File including path where the data should be stored
+
+    """
+    # process last row with information messages
+    df_last_row_info = pd.DataFrame(last_row_info, columns=["Table", "Country", "Category", "Year"])
+
+    processed_last_row_info = []
+    all_tables = df_last_row_info["Table"].unique()
+    all_years = set(df_last_row_info["Year"].unique())
+    all_years = set([year for year in all_years if isinstance(year, int)])
+    all_years = set([year for year in all_years if year > 1989])
+    for table in all_tables:
+        df_last_row_current_table = df_last_row_info[df_last_row_info["Table"] == table]
+        all_countries = df_last_row_current_table["Country"].unique()
+        for country in all_countries:
+            df_current_country_table = df_last_row_current_table[df_last_row_current_table["Country"] == country]
+            all_categories = df_current_country_table["Category"].unique()
+            cats_country = ""
+            for cat in all_categories:
+                years_category = df_current_country_table[df_current_country_table["Category"] == cat]["Year"].unique()
+                if set(years_category) == all_years:
+                    cats_country = f"{cats_country}; {cat}"
+                else:
+                    cats_country = f"{cats_country}; {cat} ({years_category})"
+            processed_last_row_info.append([table, country, cats_country])
+
+    if not file.parents[1].exists():
+        file.parents[1].mkdir()
+    if not file.parents[0].exists():
+        file.parents[0].mkdir()
+    df_processed_lost_row_info = pd.DataFrame(processed_last_row_info, columns=["Table", "Country", "Categories"])
+    df_processed_lost_row_info.to_csv("test_last_row_info.csv", index=False)

+ 536 - 0
code/UNFCCC_CRF_reader/UNFCCC_CRF_reader_prod.py

@@ -0,0 +1,536 @@
+#import re
+#
+#from treelib import Tree
+
+
+#import pandas as pd
+import xarray as xr
+import primap2 as pm2
+#import numpy as np
+#import pycountry
+import datalad.api
+from datetime import date
+#from pathlib import Path
+from typing import Optional, List, Dict, Union
+
+#from . import crf_specifications as crf
+import crf_specifications as crf
+
+from UNFCCC_CRF_reader_core import read_crf_table
+from UNFCCC_CRF_reader_core import convert_crf_table_to_pm2if
+from UNFCCC_CRF_reader_core import get_latest_date_for_country
+from UNFCCC_CRF_reader_core import get_crf_files
+from UNFCCC_CRF_reader_core import get_country_name
+from UNFCCC_CRF_reader_devel import save_unknown_categories_info
+from UNFCCC_CRF_reader_devel import save_last_row_info
+
+from util import code_path, log_path, \
+    custom_country_mapping, extracted_data_path, root_path, \
+    all_crf_countries, NoCRFFilesError
+
+import sys
+sys.path.append(code_path.name)
+from UNFCCC_reader.get_submissions_info import get_country_code
+
+
+# functions:
+# * testing fucntions
+# ** read one or more table(s) for all countries
+#    (and a if desired only a single year) and write
+#    output files with missing sectors etc
+# **
+
+# TODO: add function to read several / all countries
+
+
+
+# general approach:
+# main code in a function that reads on table from one file.
+# return raw pandas DF for use in different functions
+# wrappers around this function to read for a whole country or for test reading where we also
+# write files with missing sectors etc.
+# merging functions use native pm2 format
+
+
+def read_crf_for_country(
+        country_code: str,
+        submission_year: int,
+        submission_date: Optional[str]=None,
+        re_read: Optional[bool]=True,
+) -> xr.Dataset:
+    """
+    Read CRF data for given submission year and country. All tables
+    available in the specification will be read for all years. Result
+    will be written to appropriate country folder.
+
+    Folders are determined from the submission_year and country_code variables.
+    The output is a primap2 dataset (xarray based).
+
+    If you want to read data for more countries or from a different folder
+    use the read_latest_crf_submissions_for_year or test_read_crf_data function.
+
+    IMPORTANT NOTE:
+    Currently there is no consistency check between data for the same category
+    read from different tables
+
+    We only save the data in the country folder if there were no messages like
+    unknown rows to make sure that data that goes into the repository is complete.
+    The result dataframe is returned in any case. In case log messages appeared
+    they are saved in the folder 'log' under the file name
+    'country_reading_<country_code>_<date>_X.csv'.
+
+
+    Parameters
+    __________
+
+    country_codes: str
+        ISO 3-letter country code
+
+    submission_year: int
+        Year of the submission of the data
+
+    submission_data: Optional(str)
+        Read for a specific submission date (given as string as in the file names)
+        If not specified latest data will be read
+
+    re_read: Optional(bool) default: True
+        Read the data also if it's already present
+
+    Returns
+    _______
+        return value is a Pandas DataFrame with the read data in PRIMAP2 format
+    """
+
+    # get country name
+    country_name = get_country_name(country_code)
+
+    # get specification and available tables
+    try:
+        crf_spec = getattr(crf, f"CRF{submission_year}")
+        #print(table_spec)
+    except:
+        raise ValueError(f"No terminology exists for submission year {submission_year}")
+
+    tables = [table for table in crf_spec.keys()
+              if crf_spec[table]["status"] == "tested"]
+    print(f"The following tables are available in the " \
+          f"CRF{submission_year} specification: {tables}")
+
+    if submission_date is None:
+        submission_date = get_latest_date_for_country(country_code, submission_year)
+
+    # check if data has been read already
+    read_data = not submission_has_been_read(
+        country_code, country_name, submission_year=submission_year,
+        submission_date=submission_date, verbose=True,
+    )
+
+    ds_all = None
+    if read_data or re_read:
+        unknown_categories = []
+        last_row_info = []
+        for table in tables:
+            # read table for all years
+            ds_table, new_unknown_categories, new_last_row_info = read_crf_table(
+                country_code, table, submission_year, date=submission_date)#, data_year=[1990])
+
+            # collect messages on unknown rows etc
+            unknown_categories = unknown_categories + new_unknown_categories
+            last_row_info = last_row_info + new_last_row_info
+
+            # convert to PRIMAP2 IF
+            # first drop the orig_cat_name col as it can have multiple values for
+            # one category
+            ds_table = ds_table.drop(columns=["orig_cat_name"])
+
+            # if we need to map entities pass this info to the conversion function
+            if "entity_mapping" in crf_spec[table]:
+                entity_mapping = crf_spec[table]["entity_mapping"]
+            else:
+                entity_mapping = None
+            ds_table_if = convert_crf_table_to_pm2if(
+                ds_table,
+                submission_year,
+                meta_data_input={"title": f"Data submitted in {submission_year} to the UNFCCC "
+                                          f"in the common reporting format (CRF) by {country_name}. "
+                                          f"Submission date: {submission_date}"},
+                entity_mapping=entity_mapping,
+            )
+
+            # now convert to native PRIMAP2 format
+            ds_table_pm2 = pm2.pm2io.from_interchange_format(ds_table_if)
+
+            # combine per table DS
+            if ds_all is None:
+                ds_all = ds_table_pm2
+            else:
+                ds_all = ds_all.combine_first(ds_table_pm2)
+
+        # check if there were log messages.
+        save_data = True
+        if len(unknown_categories) > 0:
+            save_data = False
+            today = date.today()
+            log_location = log_path / f"CRF{submission_year}" \
+                           / f"{country_code}_unknown_categories_{today.strftime('%Y-%m-%d')}.csv"
+            print(f"Unknown rows found for {country_code}. Not saving data. Savin log to "
+                  f"{log_location}" )
+            save_unknown_categories_info(unknown_categories, log_location)
+
+        if len(last_row_info) > 0:
+            save_data = False
+            today = date.today()
+            log_location = log_path / f"CRF{submission_year}" \
+                           / f"{country_code}_last_row_info_{today.strftime('%Y-%m-%d')}.csv"
+            print(f"Data found in the last row found for {country_code}. Not saving data. Savin log to "
+                  f"{log_location}")
+            save_last_row_info(last_row_info, log_location)
+
+        if save_data:
+            compression = dict(zlib=True, complevel=9)
+            output_folder = extracted_data_path / country_name.replace(" ", "_")
+            output_filename = f"{country_code}_CRF{submission_year}_{submission_date}"
+
+            if not output_folder.exists():
+                output_folder.mkdir()
+
+            # write data in interchange format
+            pm2.pm2io.write_interchange_format(output_folder / output_filename,
+                                               ds_all.pr.to_interchange_format())
+
+            # write data in native PRIMAP2 format
+            encoding = {var: compression for var in ds_all.data_vars}
+            ds_all.pr.to_netcdf(output_folder / (output_filename + ".nc"),
+                                  encoding=encoding)
+
+    return ds_all
+
+
+def read_crf_for_country_datalad(
+        country: str,
+        submission_year: int,
+        submission_date: Optional[str]=None,
+        re_read: Optional[bool]=True
+) -> None:
+    """
+    Wrapper around read_crf_for_country which takes care of selecting input
+    and output files and using datalad run to trigger the data reading
+
+    Parameters
+    __________
+
+    country_codes: str
+        ISO 3-letter country code
+
+    submission_year: int
+        Year of the submission of the data
+
+    submission_date: Optional(str)
+        Read for a specific submission date (given as string as in the file names)
+        If not specified latest data will be read
+
+    """
+
+    # get all the info for the country
+    country_info = get_input_and_output_files_for_country(
+        country, submission_year=submission_year, verbose=True)
+
+    print(f"Attempting to read data for CRF{submission_year} from {country}.")
+    print("#"*80)
+    print("")
+    print(f"Using the UNFCCC_CRF_reader")
+    print("")
+    print(f"Run the script using datalad run via the python api")
+    script = code_path / "UNFCCC_CRF_reader" / "read_UNFCCC_CRF_submission.py"
+
+    cmd = f"./venv/bin/python3 {script.as_posix()} --country={country} "\
+          f"--submission_year={submission_year} --submission_date={submission_date}"
+    if re_read:
+        cmd = cmd + f" --re_read"
+    datalad.api.run(
+        cmd=cmd,
+        dataset=root_path,
+        message=f"Read data for {country}, CRF{submission_year}, {submission_date}.",
+        inputs=country_info["input"],
+        outputs=country_info["output"],
+        dry_run=None,
+        explicit=True,
+    )
+
+
+def read_new_crf_for_year(
+        submission_year: int,
+        countries: Optional[List[str]]=None,
+        re_read: Optional[bool]=False,
+) -> dict:
+    """
+    Read CRF data for given submission year for all countries in
+    `countries` that have submitted data. If no `countries` list is
+    given, all countries are used.
+    When updated submission exist the latest will be read.
+    All tables available in the specification will be read for all years.
+    Results will be written to appropriate country folders.
+
+    If you want to read data from a different folder use the
+    test_read_crf_data function.
+
+    IMPORTANT NOTE:
+    Currently there is no consistency check between data for the same category
+    read from different tables
+
+    Parameters
+    __________
+
+    submission_year: int
+        Year of the submission of the data
+
+    countries: List[int] (optional)
+        List of countries to read. If not given reading is tried for all
+        CRF countries
+
+    re_read: bool (optional, default=False)
+        If true data will be read even if already read before.
+
+    TODO: write log with failed countries and what has been read
+
+    Returns
+    _______
+        list[str]: list with country codes for which the data has been read
+
+    """
+
+    if countries is None:
+        countries = all_crf_countries
+
+    read_countries = {}
+    for country in countries:
+        try:
+            country_df = read_crf_for_country(country, submission_year, re_read=re_read)
+            if country_df is None:
+                read_countries[country] = "skipped"
+            else:
+                read_countries[country] = "read"
+        except NoCRFFilesError:
+            print(f"No data for country {country}, {submission_year}")
+            read_countries[country] = "no data"
+        except Exception as ex:
+            print(f"Data for country {country}, {submission_year} could not be read")
+            print(f"The following error occurred: {ex}")
+            read_countries[country]= "failed"
+
+    # print overview
+    successful_countries = [country for country in read_countries if read_countries[country] == "read"]
+    skipped_countries = [country for country in read_countries if read_countries[country] == "skipped"]
+    failed_countries = [country for country in read_countries if read_countries[country] == "failed"]
+    no_data_countries = [country for country in read_countries if read_countries[country] == "no data"]
+
+    print(f"Read data for countries {successful_countries}")
+    print(f"Skipped countries {skipped_countries}")
+    print(f"No data for countries {no_data_countries}")
+    print(f"!!!!! Reading failed for {failed_countries}. Check why")
+    return(read_countries)
+
+
+def read_new_crf_for_year_datalad(
+        submission_year: int,
+        countries: Optional[List[str]] = None,
+        re_read: Optional[bool] = False,
+) -> None:
+    """
+    Wrapper around read_crf_for_year_datalad which takes care of selecting input
+    and output files and using datalad run to trigger the data reading
+
+    Parameters
+    __________
+
+    submission_year: int
+        Year of the submission of the data
+
+    countries: List[int] (optional)
+        List of countries to read. If not given reading is tried for all
+        CRF countries
+
+    re_read: bool (optional, default=False)
+        If true data will be read even if already read before.
+
+    """
+
+    if countries is not None:
+        print(f"Reading CRF{submission_year} for countries {countries} using UNFCCC_CRF_reader.")
+    else:
+        print(f"Reading CRF{submission_year} for all countries using UNFCCC_CRF_reader.")
+        countries = all_crf_countries
+    print("#" * 80)
+    print("")
+    if re_read:
+        print("Re-reading all latest submissions.")
+    else:
+        print("Only reading new submissions not read yet.")
+
+
+    input_files = []
+    output_files = []
+    # loop over countries to collect input and output files
+    print("Collect input and output files to pass to datalad")
+    for country in countries:
+        try:
+            country_info = get_input_and_output_files_for_country(
+                country, submission_year=submission_year, verbose=False)
+            # check if the submission has been read already
+            if re_read:
+                input_files = input_files + country_info["input"]
+                output_files = output_files + country_info["output"]
+            else:
+                data_read = submission_has_been_read(
+                    country_info["code"], country_info["name"],
+                    submission_year=submission_year,
+                    submission_date=country_info["date"],
+                    verbose=False,
+                )
+                if not data_read:
+                    input_files = input_files + country_info["input"]
+                    output_files = output_files + country_info["output"]
+        except:
+            # no error handling here as that is done in the function that does the actual reading
+            pass
+
+    print(f"Run the script using datalad run via the python api")
+    script = code_path / "UNFCCC_CRF_reader" / "read_new_UNFCCC_CRF_for_year.py"
+
+    #cmd = f"./venv/bin/python3 {script.as_posix()} --countries={countries} "\
+    #      f"--submission_year={submission_year}"
+    cmd = f"./venv/bin/python3 {script.as_posix()} " \
+          f"--submission_year={submission_year}"
+
+    if re_read:
+        cmd = cmd + " --re_read"
+    datalad.api.run(
+        cmd=cmd,
+        dataset=root_path,
+        message=f"Read data for {countries}, CRF{submission_year}. Re-reading: {re_read}",
+        inputs=input_files,
+        outputs=output_files,
+        dry_run=None,
+        #explicit=True,
+    )
+
+
+# function to read all available data (or list of countries?)
+# make sure it works when not all countries have submitted data
+# give option to only read new data (no output yet), but also option to
+# read all data, e.g. when specifications have changed
+
+def get_input_and_output_files_for_country(
+        country: str,
+        submission_year: int,
+        submission_date: Optional[str]=None,
+        verbose: Optional[bool]=True,
+) -> Dict[str, Union[List, str]]:
+    """
+    Get input and output files for a given country
+    """
+
+    country_info = {}
+
+    if country in custom_country_mapping:
+        country_code = country
+    else:
+        country_code = get_country_code(country)
+    # now get the country name
+    country_name = get_country_name(country_code)
+    country_info["code"] = country_code
+    country_info["name"] = country_name
+
+    # determine latest data
+    print(f"Determining input and output files for {country}")
+    if submission_date is None:
+        if verbose:
+            print(f"No submission date given, find latest date.")
+        submission_date = get_latest_date_for_country(country_code, submission_year)
+    else:
+        if verbose:
+            print(f"Using given submissions date {submission_date}")
+
+    if submission_date is None:
+        # there is no data. Raise an exception
+        raise NoCRFFilesError(f"No submissions found for {country_code}, "
+                              f"submission_year={submission_year}, "
+                              f"date={date}")
+    else:
+        if verbose:
+            print(f"Latest submission date for CRF{submission_year} is {submission_date}")
+    country_info["date"] = submission_date
+
+    # get possible input files
+    input_files = get_crf_files(country_codes=country_code,
+                                submission_year=submission_year,
+                                date=submission_date)
+    if not input_files:
+        raise NoCRFFilesError(f"No possible input files found for {country}, CRF{submission_year}, "
+                              f"v{submission_date}. Are they already submitted and included in the "
+                              f"repository?")
+    elif verbose:
+        print(f"Found the following input_files:")
+        for file in input_files:
+            print(file.name)
+        print("")
+
+
+    # convert file's path to str
+    input_files = [file.as_posix() for file in input_files]
+    country_info["input"] = input_files
+
+    # get output file
+    output_folder = extracted_data_path / country_name.replace(" ", "_")
+    output_files = [output_folder / f"{country_code}_CRF{submission_year}"
+                                    f"_{submission_date}.{suffix}" for suffix
+                    in ['yaml', 'csv', 'nc']]
+    if verbose:
+        print(f"The following files are considered as output_files:")
+        for file in output_files:
+            print(file)
+        print("")
+
+    # check if output data present
+
+    # convert file paths to str
+    output_files = [file.as_posix() for file in output_files]
+    country_info["output"] = output_files
+
+    return country_info
+
+
+def submission_has_been_read(
+        country_code: str,
+        country_name: str,
+        submission_year: int,
+        submission_date: str,
+        verbose: Optional[bool]=True,
+) -> bool:
+    """
+    Check if a CRF submission has already been read
+    """
+    output_folder = extracted_data_path / country_name.replace(" ", "_")
+    output_filename = f"{country_code}_CRF{submission_year}_{submission_date}"
+    if output_folder.exists():
+        existing_files = output_folder.glob(f"{output_filename}.*")
+        existing_suffixes = [file.suffix for file in existing_files]
+        if all(suffix in existing_suffixes for suffix in [".nc", ".yaml", ".csv"]):
+            has_been_read = True
+            if verbose:
+                print(f"Data already available for {country_code}, "
+                      f"CRF{submission_year}, version {submission_date}.")
+        else:
+            has_been_read = False
+            if verbose:
+                print(f"Partial data available for {country_code}, "
+                      f"CRF{submission_year}, version {submission_date}. "
+                      "Please check if all files have been written after "
+                      "reading.")
+    else:
+        has_been_read = False
+        if verbose:
+            print(f"No read data available for {country_code}, "
+                  f"CRF{submission_year}, version {submission_date}. ")
+
+    return has_been_read

+ 8 - 0
code/UNFCCC_CRF_reader/__init__.py

@@ -0,0 +1,8 @@
+"""
+CRF reader module
+"""
+
+#from pathlib import Path
+#from . import crf_specifications
+from .UNFCCC_CRF_reader_prod import read_crf_for_country, read_crf_for_country_datalad
+

+ 2502 - 0
code/UNFCCC_CRF_reader/crf_specifications/CRF2021_specification.py

@@ -0,0 +1,2502 @@
+""" CRF2021 specification.
+Currently not all tables are included. Extend if you need all country
+specific items in categories 2, 3.H-G, 4
+
+tables included:
+* Energy
+    'Table1s1', Table1s2',
+    'Table1.A(a)s1', 'Table1.A(a)s2', 'Table1.A(a)s3', 'Table1.A(a)s4',
+    'Table1.B.1', 'Table1.B.2', 'Table1.C', 'Table1.D',
+* Industrial processes
+    'Table2(I)s1', 'Table2(I)s2',
+    'Table2(II)',
+* Agriculture
+    'Table3s1', 'Table3s2',
+    'Table3.C', 'Table3.D', 'Table3.E',
+* LULUCF
+    'Table4',
+* Waste
+    'Table5', 'Table5.A', 'Table5.B', 'Table5.C', 'Table5.D'
+
+missing tables are:
+* Energy
+    'Table1.D'
+* Industrial processes
+    'Table2(I).A-Hs1', 'Table2(I).A-Hs2',
+    'Table2(II)B-Hs1', 'Table2(II)B-Hs2',
+* Agriculture
+    'Table3.As1', 'Table3.As2' (no additional emissions data)
+    'Table3.F', 'Table3.G-I',
+* LULUCF
+    All tables except Table4
+* Waste
+    All tables read
+
+TODO:
+* Add missing tables
+* Add activity data
+
+"""
+
+import numpy as np
+from .util import unit_info
+
+CRF2021 = {
+    "Table1s1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 26,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['Total Energy', ['1']],
+            ['A. Fuel combustion activities (sectoral approach)', ['1.A']],
+            ['1. Energy industries', ['1.A.1']],
+            ['a. Public electricity and heat production', ['1.A.1.a']],
+            ['b. Petroleum refining', ['1.A.1.b']],
+            ['c. Manufacture of solid fuels and other energy industries', ['1.A.1.c']],
+            ['2. Manufacturing industries and construction', ['1.A.2']],
+            ['a. Iron and steel', ['1.A.2.a']],
+            ['b. Non-ferrous metals', ['1.A.2.b']],
+            ['c. Chemicals', ['1.A.2.c']],
+            ['d. Pulp, paper and print', ['1.A.2.d']],
+            ['e. Food processing, beverages and tobacco', ['1.A.2.e']],
+            ['f. Non-metallic minerals', ['1.A.2.f']],
+            ['g. Other (please specify)', ['1.A.2.g']],
+            ['3. Transport', ['1.A.3']],
+            ['a. Domestic aviation', ['1.A.3.a']],
+            ['b. Road transportation', ['1.A.3.b']],
+            ['c. Railways', ['1.A.3.c']],
+            ['d. Domestic navigation', ['1.A.3.d']],
+            ['e. Other transportation', ['1.A.3.e']],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1s2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 36,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['4. Other sectors', ['1.A.4']],
+            ['a. Commercial/institutional', ['1.A.4.a']],
+            ['b. Residential', ['1.A.4.b']],
+            ['c. Agriculture/forestry/fishing', ['1.A.4.c']],
+            ['5. Other (as specified in table 1.A(a) sheet 4)', ['1.A.5']],
+            ['a. Stationary', ['1.A.5.a']],
+            ['b. Mobile', ['1.A.5.b']],
+            ['B. Fugitive emissions from fuels', ['1.B']],
+            ['1. Solid fuels', ['1.B.1']],
+            ['a. Coal mining and handling', ['1.B.1.a']],
+            ['b. Solid fuel transformation', ['1.B.1.b']],
+            ['c. Other (as specified in table 1.B.1)', ['1.B.1.c']],
+            ['2. Oil and natural gas and other emissions from energy production', ['1.B.2']],
+            ['a. Oil', ['1.B.2.a']],
+            ['b. Natural gas', ['1.B.2.b']],
+            ['c. Venting and flaring', ['1.B.2.c']],
+            ['d. Other (as specified in table 1.B.2)', ['1.B.2.d']],
+            ['C. CO2 Transport and storage', ['1.C']],
+            ['1. Transport of CO2', ['1.C.1']],
+            ['2. Injection and storage', ['1.C.2']],
+            ['3. Other', ['1.C.3']],
+            ['Memo items: (1)', ['\IGNORE']],
+            ['International bunkers', ['M.Memo.Int']],
+            ['Aviation', ['M.Memo.Int.Avi']],
+            ['Navigation', ['M.Memo.Int.Mar']],
+            ['Multilateral operations', ['M.Memo.Mult']],
+            ['CO2 emissions from biomass', ['M.Memo.Bio']],
+            ['CO2 captured', ['M.Memo.CO2Cap']],
+            ['For domestic storage', ['M.Memo.CO2Cap.Dom']],
+            ['For storage in other countries', ['M.Memo.CO2Cap.Exp']],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.A(a)s1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 6,
+            "lastrow": 104,  # template, countries report less
+            # check the resulting data as the templates have nan rows
+            # which would stop the reading process (actual reported
+            # data does not seem to have the nan rows)
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured'
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A. Fuel combustion', ['1.A', 'Total'], 0],
+            ['Liquid fuels', ['1.A', 'Liquid'], 1],
+            ['Solid fuels', ['1.A', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A', 'OtherFF'], 1],
+            ['Peat(5)', ['1.A', 'Peat'], 1],
+            ['Biomass(6)', ['1.A', 'Biomass'], 1],
+            # 1.A.1. Energy industries
+            ['1.A.1. Energy industries', ['1.A.1', 'Total'], 1],
+            ['Liquid fuels', ['1.A.1', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.1', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.1', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.1', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.1', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.1', 'Biomass'], 2],
+            # a. Public electricity and heat production
+            ['a. Public electricity and heat production(7)', ['1.A.1.a', 'Total'], 2],
+            ['Liquid fuels', ['1.A.1.a', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.1.a', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.1.a', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.1.a', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.1.a', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.1.a', 'Biomass'], 3],
+            # 1.A.1.a.i Electricity Generation
+            ['1.A.1.a.i Electricity Generation', ['1.A.1.a.i', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.a.i', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.a.i', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.a.i', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.i', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.a.i', 'Peat'], 4],
+            ['Biomass', ['1.A.1.a.i', 'Biomass'], 4],
+            # 1.A.1.a.ii Combined heat and power generation
+            ['1.A.1.a.ii Combined heat and power generation', ['1.A.1.a.ii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.a.ii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.a.ii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.a.ii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.ii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.a.ii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.a.ii', 'Biomass'], 4],
+            # 1.A.1.a.iii heat plants
+            ['1.A.1.a.iii Heat plants', ['1.A.1.a.iii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.a.iii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.a.iii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.a.iii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.a.iii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.a.iii', 'Biomass'], 4],
+            # 1.A.1.a.iv Other (please specify)
+            ['1.A.1.a.iv Other (please specify)', ['1.A.1.a.iv', 'Total'], 3],
+            # AUT
+            ['Total Public Electricity and Heat Production', ['1.A.1.a.iv.4', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.a.iv.4', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.a.iv.4', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.a.iv.4', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.4', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.a.iv.4', 'Peat'], 5],
+            ['Biomass', ['1.A.1.a.iv.4', 'Biomass'], 5],
+            # DEU
+            ['1.A.1.a Public Electricity and Heat Production', ['1.A.1.a.iv.4', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.a.iv.4', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.a.iv.4', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.a.iv.4', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.4', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.a.iv.4', 'Peat'], 5],
+            ['Biomass', ['1.A.1.a.iv.4', 'Biomass'], 5],
+            # ESP
+            ['Other', ['1.A.1.a.iv.3', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.a.iv.3', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.a.iv.3', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.a.iv.3', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.3', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.a.iv.3', 'Peat'], 5],
+            ['Biomass', ['1.A.1.a.iv.3', 'Biomass'], 5],
+            # SVK
+            ['Methane Cogeneration (Mining)', ['1.A.1.a.iv.1', 'Total'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.1', 'OtherFF'], 5],
+            ['Municipal Solid Waste Incineration (Energy use)', ['1.A.1.a.iv.2', 'Total'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.2', 'OtherFF'], 5],
+            ['Biomass', ['1.A.1.a.iv.2', 'Biomass'], 5],
+            # CHE
+            ['Municipal and special waste incineration plants', ['1.A.1.a.iv.2', 'Total'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.2', 'OtherFF'], 5],
+            ['Biomass', ['1.A.1.a.iv.2', 'Biomass'], 5],
+            # b. Petroleum refining
+            ['b. Petroleum refining', ['1.A.1.b', 'Total'], 2],
+            ['Liquid fuels', ['1.A.1.b', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.1.b', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.1.b', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.1.b', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.1.b', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.1.b', 'Biomass'], 3],
+            # c. Manufacture of solid fuels and other energy industries
+            ['c. Manufacture of solid fuels and other energy industries(8)', ['1.A.1.c', 'Total'], 2],
+            ['Liquid fuels', ['1.A.1.c', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.1.c', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.1.c', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.1.c', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.1.c', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.1.c', 'Biomass'], 3],
+            # 1.A.1.c.i Manufacture of solid fuels
+            ['1.A.1.c.i Manufacture of solid fuels', ['1.A.1.c.i', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.c.i', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.c.i', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.c.i', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.c.i', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.c.i', 'Peat'], 4],
+            ['Biomass', ['1.A.1.c.i', 'Biomass'], 4],
+            # 1.A.1.c.ii Oil and gas extraction
+            ['1.A.1.c.ii Oil and gas extraction', ['1.A.1.c.ii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.c.ii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.c.ii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.c.ii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.c.ii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.c.ii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.c.ii', 'Biomass'], 4],
+            # 1.A.1.c.iii Other energy industries
+            ['1.A.1.c.iii Other energy industries', ['1.A.1.c.iii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.c.iii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.c.iii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.c.iii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.c.iii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.c.iii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.c.iii', 'Biomass'], 4],
+            # 1.A.1.c.iv Other (please specify)
+            ['1.A.1.c.iv Other (please specify)', ['1.A.1.c.iv', 'Total'], 3],
+            # DEU
+            ['1.A.1.c Manufacture of Solid Fuels and Other Energy Industries', ['1.A.1.c.iv.2', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.c.iv.2', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.c.iv.2', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.c.iv.2', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.c.iv.2', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.c.iv.2', 'Peat'], 5],
+            ['Biomass', ['1.A.1.c.iv.2', 'Biomass'], 5],
+            # ESP
+            ['Other', ['1.A.1.c.iv.3', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.c.iv.3', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.c.iv.3', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.c.iv.3', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.c.iv.3', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.c.iv.3', 'Peat'], 5],
+            ['Biomass', ['1.A.1.c.iv.3', 'Biomass'], 5],
+            # CYP
+            ['Charcoal Production', ['1.A.1.c.iv.1', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.c.iv.1', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.c.iv.1', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.c.iv.1', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.c.iv.1', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.c.iv.1', 'Peat'], 5],
+            ['Biomass', ['1.A.1.c.iv.1', 'Biomass'], 5],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.A(a)s2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 114,  # template, countries report less
+            # check the resulting data as the templates have nan rows
+            # which would stop the reading process (actual reported
+            # data does not seem to have the nan rows)
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A.2 Manufacturing industries and construction', ['1.A.2', 'Total'], 0],
+            ['Liquid fuels', ['1.A.2', 'Liquid'], 1],
+            ['Solid fuels', ['1.A.2', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A.2', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A.2', 'OtherFF'], 1],
+            ['Peat(5)', ['1.A.2', 'Peat'], 1],
+            ['Biomass(6)', ['1.A.2', 'Biomass'], 1],
+            # a. Iron and Steel
+            ['a. Iron and steel', ['1.A.2.a', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.a', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.a', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.a', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.a', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.a', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.a', 'Biomass'], 2],
+            # b. non-ferrous metals
+            ['b. Non-ferrous metals', ['1.A.2.b', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.b', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.b', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.b', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.b', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.b', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.b', 'Biomass'], 2],
+            # c. Chemicals
+            ['c. Chemicals', ['1.A.2.c', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.c', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.c', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.c', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.c', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.c', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.c', 'Biomass'], 2],
+            # d. Pulp paper print
+            ['d. Pulp, paper and print', ['1.A.2.d', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.d', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.d', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.d', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.d', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.d', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.d', 'Biomass'], 2],
+            # e. Food processing, beverages and tobacco
+            ['e. Food processing, beverages and tobacco', ['1.A.2.e', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.e', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.e', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.e', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.e', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.e', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.e', 'Biomass'], 2],
+            # f. non-metallic minerals
+            ['f. Non-metallic minerals', ['1.A.2.f', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.f', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.f', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.f', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.f', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.f', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.f', 'Biomass'], 2],
+            # g. other
+            ['g. Other (please specify)(9)', ['1.A.2.g', 'Total'], 1],
+            #1.A.2.g.i Manufacturing of machinery
+            ['1.A.2.g.i Manufacturing of machinery', ['1.A.2.g.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.i', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.i', 'Biomass'], 3],
+            # 1.A.2.g.ii Manufacturing of transport equipment
+            ['1.A.2.g.ii Manufacturing of transport equipment', ['1.A.2.g.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.ii', 'Biomass'], 3],
+            # 1.A.2.g.iii Mining (excluding fuels) and quarrying
+            ['1.A.2.g.iii Mining (excluding fuels) and quarrying', ['1.A.2.g.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.iii', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.iii', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.iii', 'Biomass'], 3],
+            # 1.A.2.g.iv Wood and wood products
+            ['1.A.2.g.iv Wood and wood products', ['1.A.2.g.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.iv', 'Biomass'], 3],
+            # 1.A.2.g.v Construction
+            ['1.A.2.g.v Construction', ['1.A.2.g.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.v', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.v', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.v', 'Biomass'], 3],
+            # 1.A.2.g.vi Textile and leather
+            ['1.A.2.g.vi Textile and leather', ['1.A.2.g.vi', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.vi', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.vi', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.vi', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.vi', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.vi', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.vi', 'Biomass'], 3],
+            # 1.A.2.g.vii Off-road vehicles and other machinery
+            ['1.A.2.g.vii Off-road vehicles and other machinery', ['1.A.2.g.vii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.vii', 'Liquid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.vii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.vii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.2.g.vii', 'Biomass'], 3],
+            # 1.A.2.g.viii Other (please specify)
+            ['1.A.2.g.viii Other (please specify)', ['1.A.2.g.viii', 'Total'], 2],
+            # DKE
+            ['Construction', ['\IGNORE', '\IGNORE'], 3],  # (empty)
+            ['Mining', ['\IGNORE', '\IGNORE'], 3],  # (empty)
+            # DNK, DKE, USA, CZE
+            ['Other non-specified', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            #SVK, CYP
+            ['Non-specified Industry', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            #BEL
+            ['Other non specified', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            #PRT, LTU
+            ['Non-specified industry', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            # MLT
+            ['Undefined Industry', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            # TUR
+            ['Other unspecified', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            # DKE
+            ['Textile', ['\IGNORE', '\IGNORE'], 3],  # (empty)
+            # DNK, DNM, FIN, DKE
+            ['Other manufacturing industries', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # CAN
+            ['Other Manufacturing', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # AUT, LUX
+            ['Other Manufacturing Industries', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # NOR
+            ['Other manufacturing', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # AUS
+            ['All Other Manufacturing', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # NLD
+            ['Other Industrial Sectors', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # GBR, GBK
+            ['Other industry (not specified above)', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # UKR
+            ['Oter Industries', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # RUS
+            ['Other industries', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # RUS
+            ['Non-CO2 emissions from BFG combustion', ['1.A.2.g.viii.5', 'Total'], 3],
+            ['Solid Fuels', ['1.A.2.g.viii.5', 'Solid'], 4],
+            # BLR, DNK, ESP, LVA, NZL, POL, ROU, SVN,
+            ['Other', ['1.A.2.g.viii.10', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.10', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.10', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.10', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.10', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.10', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.10', 'Biomass'], 4],
+            # BLR
+            ['Manufacture and construction Aggregated', ['1.A.2.g.viii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.2', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.2', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.2', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.2', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.2', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.2', 'Biomass'], 4],
+            # HRV
+            ['Other Industry', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # HRV
+            ['1A2 Total for 1990 to 2000', ['1.A.2.g.viii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.2', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.2', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.2', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.2', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.2', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.2', 'Biomass'], 4],
+            # MLT
+            ['All Industry', ['1.A.2.g.viii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.2', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.2', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.2', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.2', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.2', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.2', 'Biomass'], 4],
+            # PRT
+            ['Rubber', ['1.A.2.g.viii.6', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.6', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.6', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.6', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.6', 'OtherFF'], 4],
+            ['Biomass', ['1.A.2.g.viii.6', 'Biomass'], 4],
+            # SWE
+            ['All stationary combustin within CRF 1.A.2.g', ['1.A.2.g.viii.7', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.7', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.7', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.7', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.7', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.7', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.7', 'Biomass'], 4],
+            # IRL
+            ['Other stationary combustion', ['1.A.2.g.viii.8', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.8', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.8', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.8', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.8', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.8', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.8', 'Biomass'], 4],
+            # HUN
+            ['Other Stationary Combustion', ['1.A.2.g.viii.8', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.8', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.8', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.8', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.8', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.8', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.8', 'Biomass'], 4],
+            # CHE
+            ['Other Boilers and Engines Industry', ['1.A.2.g.viii.9', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.9', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.9', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.9', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.9', 'OtherFF'], 4],
+            ['Biomass', ['1.A.2.g.viii.9', 'Biomass'], 4],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.A(a)s3": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 115,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+            ],
+            "stop_cats": ["Note: All footnotes for this table are given at the end of the table on sheet 4.", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A.3 Transport', ['1.A.3', 'Total'], 0],
+            ['Liquid fuels', ['1.A.3', 'Liquid'], 1],
+            ['Solid fuels', ['1.A.3', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A.3', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A.3', 'OtherFF'], 1],
+            ['Biomass(6)', ['1.A.3', 'Biomass'], 1],
+            # a. Domestic Aviation
+            ['a. Domestic aviation(10)', ['1.A.3.a', 'Total'], 1],
+            ['Aviation gasoline', ['1.A.3.a', 'AvGasoline'], 2],
+            ['Jet kerosene', ['1.A.3.a', 'JetKerosene'], 2],
+            ['Biomass', ['1.A.3.a', 'Biomass'], 2],
+            # b. road Transportation
+            ['b. Road transportation(11)', ['1.A.3.b', 'Total'], 1],
+            ['Gasoline', ['1.A.3.b', 'Gasoline'], 2],
+            ['Diesel oil', ['1.A.3.b', 'DieselOil'], 2],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b', 'LPG'], 2],
+            ['Other liquid fuels (please specify)', ['1.A.3.b', 'OtherLiquid'], 2],
+            ['Gaseous fuels', ['1.A.3.b', 'Gaseous'], 2],
+            ['Biomass(6)', ['1.A.3.b', 'Biomass'], 2],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b', 'OtherFF'], 2],
+            # i. Cars
+            ['i. Cars', ['1.A.3.b.i', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.i', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.i', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.i', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.3.b.i', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.i', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.i', 'Lubricants'], 4],  # UKR, JPN
+            ['Lubricant oil', ['1.A.3.b.i', 'Lubricants'], 4],  # PRT
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.b.i', 'OLBiodieselFC'], 4],  # CAN
+            ['Fossil part of biodiesel', ['1.A.3.b.i', 'OLBiodieselFC'], 4],  # LTU
+            ['Other', ['1.A.3.b.i', 'OLOther'], 4],  # UKR, MLT
+            ['Other Liquid Fuels', ['1.A.3.b.i', 'OLOther'], 4],  # CYP
+            ['Other motor fuels', ['1.A.3.b.i', 'OMotorFuels'], 4],  # RUS
+            ['Lubricants in 2-stroke engines', ['1.A.3.b.i', 'Lubricants'], 4],  # HUN
+            ['LNG', ['1.A.3.b.i', 'LNG'], 4],  ## USA
+            ['Gaseous fuels', ['1.A.3.b.i', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.i', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.i', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.i', 'OFFOther'], 4],  # CYP, POL
+            ['Biodiesel (fossil component)', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # LUX
+            ['Biodiesel fossil fraction', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # NOR
+            ['Biodiesel (fossil fraction)', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # NZL
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # CZE
+            ['fossil part of biodiesel', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # DKE, DNK, HRV
+            ['Fossil part of biodiesel', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # DNM, BEL, HUN, LVA, ESP
+            ['Fossil part of biogasoline', ['1.A.3.b.i', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Natural Gas', ['1.A.3.b.i.', 'OFFNaturalGas'], 4],  # USA
+            ['Fossil part of biofuel', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # IRL
+            ['Other', ['1.A.3.b.i', 'OFFOther'], 4],  # MLT
+            # ii. Light duty trucks
+            ['ii. Light duty trucks', ['1.A.3.b.ii', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.ii', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.ii', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.ii', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.3.b.ii', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.ii', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.ii', 'Lubricants'], 4],  # UKR, JPN
+            ['Lubricant Oil', ['1.A.3.b.ii', 'Lubricants'], 4],  # PRT
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.b.ii', 'OLBiodieselFC'], 4],  # CAN
+            ['Other', ['1.A.3.b.ii', 'OLOther'], 4],  # UKR (and probably others)
+            ['Other Liquid Fuels', ['1.A.3.b.ii', 'OLOther'], 4],  # CYP
+            ['Other motor fuels', ['1.A.3.b.ii', 'OMotorFuels'], 4],  # RUS
+            ['LNG', ['1.A.3.b.ii', 'LNG'], 4],  ## USA
+            ['Gaseous fuels', ['1.A.3.b.ii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.ii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.ii', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.ii', 'OFFOther'], 4],  # CYP, POL
+            ['Biodiesel (fossil component)', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # LUX
+            ['Biodiesel fossil fraction', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # NOR
+            ['Biodiesel (fossil fraction)', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # NZL
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # CZE
+            ['fossil part of biodiesel', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # DKE, DNK, HRV
+            ['Fossil part of biodiesel', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # DNM, BEL, HUN, LVA, ESP
+            ['Fossil part of biogasoline', ['1.A.3.b.ii', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Fossil part of biofuel', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # IRL
+            # iii. Heavy duty trucks and buses
+            ['iii. Heavy duty trucks and buses', ['1.A.3.b.iii', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.iii', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.iii', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.iii', 'LPG'], 3],
+            ['Other liquid fFuels (please specify)', ['1.A.3.b.iii', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.iii', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.iii', 'Lubricants'], 4],  # UKR, JPN
+            ['Lubricant Oil', ['1.A.3.b.iii', 'Lubricants'], 4],  # PRT
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.b.iii', 'OLBiodieselFC'], 4],  # CAN
+            ['Other', ['1.A.3.b.iii', 'OLOther'], 4],  # UKR (and probably others)
+            ['Other Liquid Fuels', ['1.A.3.b.iii', 'OLOther'], 4],  # CYP
+            ['Other motor fuels', ['1.A.3.b.iii', 'OMotorFuels'], 4],  # RUS
+            ['LNG', ['1.A.3.b.iii', 'LNG'], 4],  ## USA
+            ['Gaseous fuels', ['1.A.3.b.iii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.iii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.iii', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.iii', 'OFFOther'], 4],  # CYP, POL
+            ['Biodiesel (fossil component)', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # LUX
+            ['Biodiesel fossil fraction', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # NOR
+            ['Biodiesel (fossil fraction)', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # NZL
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # CZE
+            ['fossil part of biodiesel', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # DKE, DNK, HRV
+            ['Fossil part of biodiesel', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # DNM, BEL, HUN. LVA, ESP
+            ['Fossil part of biogasoline', ['1.A.3.b.iii', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Fossil part of biofuel', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # IRL
+            # iv. Motorcycles
+            ['iv. Motorcycles', ['1.A.3.b.iv', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.iv', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.iv', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.iv', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.3.b.iv', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.iv', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.iv', 'Lubricants'], 4],  # UKR, JPN, HRV
+            ['Lubricant Oil', ['1.A.3.b.iv', 'Lubricants'], 4],  # PRT
+            ['Other', ['1.A.3.b.iv', 'OLOther'], 4],  # UKR (and probably others)
+            ['Other Liquid Fuels', ['1.A.3.b.iv', 'OLOther'], 4],  # CYP
+            ['Lube', ['1.A.3.b.iv', 'Lubricants'], 4],  # MCO
+            ['Lubricants in 2-stroke engines', ['1.A.3.b.iv', 'Lubricants'], 4],  # HUN
+            ['Lubricants (two-stroke engines)', ['1.A.3.b.iv', 'Lubricants'], 4],  # ESP
+            ['lubricants', ['1.A.3.b.iv', 'Lubricants'], 4],  # SVN
+            ['Gaseous fuels', ['1.A.3.b.iv', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.iv', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.iv', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.iv', 'OFFOther'], 4],  # CYP
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # CZE
+            ['Fossil part of biodiesel', ['1.A.3.b.iv', 'OFFBiodieselFC'], 4],  # BEL
+            ['Fossil part of biogasoline', ['1.A.3.b.iv', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Fossil part of biodiese', ['1.A.3.b.iv', 'OFFBiodieselFC'], 4],  # LVA
+            ['Fossil part of biofuel', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # IRL
+            ['fossil part of biodiesel', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # HRV
+            # v. Other
+            ['v. Other (please specify)', ['1.A.3.b.v', 'Total'], 2],
+            # TUR
+            ['Road total', ['1.A.3.b.v.1', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.1', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.1', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.1', 'LPG'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.1', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.1', 'Biomass'], 4],
+            # CYP
+            ['Buses', ['1.A.3.b.v.2', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.2', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.2', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.2', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.2', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.2', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.2', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.2', 'OtherFF'], 4],
+            # GBK, GBR
+            ['All vehicles - biofuel use', ['1.A.3.b.v.3', 'Total'], 3],
+            ['Biomass', ['1.A.3.b.v.3', 'Biomass'], 4],
+            ['All vehicles - LPG use', ['1.A.3.b.v.4', 'Total'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.4', 'LPG'], 4],
+            ['All vehicles - biofuel use (fossil component)', ['1.A.3.b.v.5', 'Total'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.5', 'OtherFF'], 4],
+            # CAN
+            ['Propane and Natural Gas Vehicles', ['1.A.3.b.v.6', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.6', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.6', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.6', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.6', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.6', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.6', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.6', 'OtherFF'], 4],
+            # BEL
+            ['Lubricant Two-Stroke Engines', ['1.A.3.b.v.7', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.7', 'OtherLiquid'], 4],
+            # ROU
+            ['Gaseous Fuels', ['1.A.3.b.v.8', 'Total'], 3],
+            ['Gaseous Fuels', ['1.A.3.b.v.8', 'Gaseous'], 4],
+            ['Other Liquid Fuels', ['1.A.3.b.v.9', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.9', 'OtherLiquid'], 4],
+            ['Other Kerosene', ['1.A.3.b.v.9', 'Kerosene'], 5],
+            ['Heating and Other Gasoil', ['1.A.3.b.v.9', 'HeatingGasoil'], 5],
+            ['Biomass', ['1.A.3.b.v.10', 'Total'], 3],
+            ['Biomass', ['1.A.3.b.v.10', 'Biomass'], 4],
+            # DEU
+            ['CO2 from lubricant co-incineration in 2-stroke road vehicles', ['1.A.3.b.v.7', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.7', 'OtherLiquid'], 4],
+            ['lubricant used in 2-stroke mix', ['1.A.3.b.v.7', 'Lubricants'], 5],
+            # USA
+            ['Evaporative Emissions', ['1.A.3.b.v.11', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.11', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.11', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.11', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.11', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.11', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.11', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.11', 'OtherFF'], 4],
+            # SVK
+            ['Urea-based catalysts', ['1.A.3.b.v.12', 'Total'], 3],
+            ['Diesel Oil', ['1.A.3.b.v.12', 'DieselOil'], 4],
+            # ESP
+            ['Other non-specified', ['1.A.3.b.v.13', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.13', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.13', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.13', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.13', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.13', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.13', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.13', 'OtherFF'], 4],
+            # BGR
+            ['Urea', ['1.A.3.b.v.12', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.12', 'OtherLiquid'], 4],
+            ['Lubricants', ['1.A.3.b.v.7', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.7', 'OtherLiquid'], 4],
+            # c. Railways
+            ['c. Railways', ['1.A.3.c', 'Total'], 1],
+            ['Liquid fuels', ['1.A.3.c', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.3.c', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.3.c', 'Gaseous'], 2],
+            ['Biomass(6)', ['1.A.3.c', 'Biomass'], 2],
+            ['Other fossil fuels (please specify)', ['1.A.3.c', 'OtherFF'], 2],
+            ['Biodiesel (fossil component)', ['1.A.3.c', 'OFFBiodieselFC'], 3],  # LUX
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.c', 'OFFBiodieselFC'], 3],  # SWE
+            # d. Domestic navigation
+            ['d. Domestic Navigation(10)', ['1.A.3.d', 'Total'], 1],
+            ['Residual fuel oil', ['1.A.3.d', 'ResFuelOil'], 2],
+            ['Gas/diesel oil', ['1.A.3.d', 'GasDieselOil'], 2],
+            ['Gasoline', ['1.A.3.d', 'Gasoline'], 2],
+            ['Other liquid fuels (please specify)', ['1.A.3.d', 'OtherLiquid'], 2],
+            ['Lubricants', ['1.A.3.d', 'Lubricants'], 3],  # UKR, JPN
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.d', 'OLBiodieselFC'], 3],  # CAN
+            ['Light Fuel Oil', ['1.A.3.d', 'LightFuelOil'], 3],  # CAN
+            ['Kerosene and stove oil', ['1.A.3.d', 'KeroseStoveOil'], 3],  # CAN
+            ['Kerosene', ['1.A.3.d', 'Kerosene'], 3],  # DKE, DNK
+            ['Natural Gas Liquids', ['1.A.3.d', 'NGL'], 3],  # DKE, DNK
+            ['Fossil part of biodiesel', ['1.A.3.d', 'OLBiodieselFC'], 3],  # LTU
+            ['Other non-specified', ['1.A.3.d', 'OLOther'], 3],  # SWE
+            ['Other motor fuels', ['1.A.3.d', 'OMotorFuels'], 3],  # RUS
+            ['Fuel oil A', ['1.A.3.d', 'FuelOilA'], 3],  # JPN
+            ['Fuel oil B', ['1.A.3.d', 'FuelOilB'], 3],  # JPN
+            ['Fuel oil C', ['1.A.3.d', 'FuelOilC'], 3],  # JPN
+            ['Diesel Oil', ['1.A.3.d', 'OLDiesel'], 3],  # FIN
+            ['Gaseous fuels', ['1.A.3.d', 'Gaseous'], 2],
+            ['Biomass(6)', ['1.A.3.d', 'Biomass'], 2],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.d', 'OtherFF'], 2],
+            ['Liquified natural gas', ['1.A.3.d', 'LNG'], 3],  # DKE, DNK, DNM
+            ['Biodiesel (fossil component)', ['1.A.3.d', 'OFFBiodieselFC'], 3],  # LUX
+            ['Coal', ['1.A.3.d', 'OFFCoal'], 3],  # NZL, NDL
+            ['fossil part of biodiesel', ['1.A.3.d', 'OFFBiodieselFC'], 3],  # AUT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.d', 'OFFBioGasDieselFC'], 3],  # SWE
+            ['Solid Fuels', ['1.A.3.d', 'OFFSolid'], 3],  # AUS
+            # e. other transportation
+            # keep details also for top category as it's present
+            ['e. Other transportation (please specify)', ['1.A.3.e', 'Total'], 1],
+            ['Liquid fuels', ['1.A.3.e', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.3.e', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.3.e', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.3.e', 'OtherFF'], 2],
+            ['Biomass(6)', ['1.A.3.e', 'Biomass'], 2],
+            # i. pipeline
+            ['i. Pipeline transport', ['1.A.3.e.i', 'Total'], 2],
+            ['Liquid fuels', ['1.A.3.e.i', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.3.e.i', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.3.e.i', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.3.e.i', 'OtherFF'], 3],
+            ['Biomass(6)', ['1.A.3.e.i', 'Biomass'], 3],
+            # ii other
+            ['ii. Other (please specify)', ['1.A.3.e.ii', 'Total'], 2],
+            ## temp
+            # ['Liquid fuels', ['1.A.3.e.ii', 'Liquid'], False],
+            # ['Solid fuels', ['1.A.3.e.ii', 'Solid'], False],
+            # ['Gaseous fuels', ['1.A.3.e.ii', 'Gaseous'], False],
+            # ['Other fossil fuels(4)', ['1.A.3.e.ii', 'OtherFF'], False],
+            # ['Biomass(6)', ['1.A.3.e.ii', 'Biomass'], False],
+            ## end temp
+            # UKR, SWE
+            ['Off-road vehicles and other machinery', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # GBR, GBK
+            ['Aircraft support vehicles', ['1.A.3.e.ii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.2', 'Liquid'], 4],
+            # CAN
+            ['Off Road', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # LTU
+            ['Off-road transport', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # BEL
+            ['Other non-specified', ['1.A.3.e.ii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.3', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.3', 'Biomass'], 4],
+            # AUS
+            ['Off-Road Vehicles', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # USA
+            ['Non-Transportation Mobile', ['1.A.3.e.ii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.4', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.4', 'Biomass'], 4],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.A(a)s4": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 127,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A.4 Other sectors', ['1.A.4', 'Total'], 0],
+            ['Liquid fuels', ['1.A.4', 'Liquid'], 1],
+            ['Solid fuels', ['1.A.4', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A.4', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A.4', 'OtherFF'], 1],
+            ['Peat(5)', ['1.A.4', 'Peat'], 1],
+            ['Biomass(6)', ['1.A.4', 'Biomass'], 1],
+            # a. Commercial/institutional(12)
+            ['a. Commercial/institutional(12)', ['1.A.4.a', 'Total'], 1],
+            ['Liquid fuels', ['1.A.4.a', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.4.a', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.4.a', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.4.a', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.4.a', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.4.a', 'Biomass'], 2],
+            # 1.A.4.a.i Stationary combustion
+            ['1.A.4.a.i Stationary combustion', ['1.A.4.a.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.a.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.a.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.a.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.a.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.a.i', 'Peat'], 3],
+            ['Biomass', ['1.A.4.a.i', 'Biomass'], 3],
+            # 1.A.4.a.ii Off-road vehicles and other machinery
+            ['1.A.4.a.ii Off-road vehicles and other machinery', ['1.A.4.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.a.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.4.a.ii', 'Biomass'], 3],
+            # 1.A.4.a.iii Other (please specify)
+            ['1.A.4.a.iii Other (please specify)', ['1.A.4.a.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.a.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.a.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.a.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.a.iii', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.a.iii', 'Peat'], 3],
+            ['Biomass', ['1.A.4.a.iii', 'Biomass'], 3],
+            # b. Residential(13)
+            ['b. Residential(13)', ['1.A.4.b', 'Total'], 1],
+            ['Liquid fuels', ['1.A.4.b', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.4.b', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.4.b', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.4.b', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.4.b', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.4.b', 'Biomass'], 2],
+            # 1.A.4.b.i Stationary combustion
+            ['1.A.4.b.i Stationary combustion', ['1.A.4.b.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.b.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.b.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.b.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.b.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.b.i', 'Peat'], 3],
+            ['Biomass', ['1.A.4.b.i', 'Biomass'], 3],
+            # 1.A.4.b.ii Off-road vehicles and other machinery
+            ['1.A.4.b.ii Off-road vehicles and other machinery', ['1.A.4.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.b.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.b.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.b.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.b.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.4.b.ii', 'Biomass'], 3],
+            # 1.A.4.b.iii Other (please specify)
+            ['1.A.4.b.iii Other (please specify)', ['1.A.4.b.iii', 'Total'], 2],
+            # CYP, USA
+            ['Residential', ['1.A.4.b.iii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.4.b.iii.1', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.b.iii.1', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.b.iii.1', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.b.iii.1', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.b.iii.1', 'Peat'], 3],
+            ['Biomass', ['1.A.4.b.iii.1', 'Biomass'], 3],
+            # c. Agriculture/forestry/fishing
+            ['c. Agriculture/forestry/fishing', ['1.A.4.c', 'Total'], 1],
+            ['Liquid fuels', ['1.A.4.c', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.4.c', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.4.c', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.4.c', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.4.c', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.4.c', 'Biomass'], 2],
+            # i. Stationary
+            ['i. Stationary', ['1.A.4.c.i', 'Total'], 2],
+            ['Liquid fuels', ['1.A.4.c.i', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.4.c.i', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.4.c.i', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.4.c.i', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.4.c.i', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.4.c.i', 'Biomass'], 3],
+            # ii. Off-road vehicles and other machinery
+            ['ii. Off-road vehicles and other machinery', ['1.A.4.c.ii', 'Total'], 2],
+            ['Gasoline', ['1.A.4.c.ii', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.4.c.ii', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.4.c.ii', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.4.c.ii', 'OtherLiquid'], 3],
+            ['Other Kerosene', ['1.A.4.c.ii', 'Kerosene'], 4],  # HRV
+            ['Lubricants', ['1.A.4.c.ii', 'Lubricants'], 4],  # HRV
+            ['Gasoil', ['1.A.4.c.ii', 'Gasoil'], 4],  # FIN
+            ['Marine gasoil', ['1.A.4.c.ii', 'MarineGasoil'], 4],  # NOR
+            ['heavy fuel oil', ['1.A.4.c.ii', 'HeavyFuelOil'], 4],  # NOR
+            ['Other motor fuels', ['1.A.4.c.ii', 'OMotorFuel'], 4],  # RUS
+            ['Biodiesel (5 percent fossil portion)', ['1.A.4.c.ii', 'OLBiodieselFC'], 4],  # CAN
+            ['Gaseous fuels', ['1.A.4.c.ii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.4.c.ii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.4.c.ii', 'OtherFF'], 3],
+            ['fossil part of biodiesel', ['1.A.4.c.ii', 'OFFBiodieselFC'], 4],
+            ['Fossil part of biodiesel and biogasoline', ['1.A.4.c.ii', 'OFFBiofuelFC'], 4],
+            ['Biodiesel (fossil component)', ['1.A.4.c.ii', 'OFFBiodieselFC'], 4], # LUX
+            ['Alkylate Gasoline', ['1.A.4.c.ii', 'OFFAlkylateGasoline'], 4], # LIE
+            # iii. Fishing
+            ['iii. Fishing', ['1.A.4.c.iii', 'Total'], 2],
+            ['Residual fuel oil', ['1.A.4.c.iii', 'ResFuelOil'], 3],
+            ['Gas/diesel oil', ['1.A.4.c.iii', 'GasDieselOil'], 3],
+            ['Gasoline', ['1.A.4.c.iii', 'Gasoline'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.4.c.iii', 'OtherLiquid'], 3],
+            ['Biodiesel (5 percent fossil portion)', ['1.A.4.c.iii', 'OLBiodieselFC'], 4],  # CAN
+            ['Gaseous fuels', ['1.A.4.c.iii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.4.c.iii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.4.c.iii', 'OtherFF'], 3],
+            ['Fossil part of biodiesel and biogasoline', ['1.A.4.c.iii', 'OFFBiofuelFC'], 3],
+            # 1.A.5 Other (Not specified elsewhere)(14)
+            ['1.A.5 Other (Not specified elsewhere)(14)', ['1.A.5', 'Total'], 0],
+            # a. Stationary (please specify)
+            ['a. Stationary (please specify)', ['1.A.5.a', 'Total'], 1],
+            # temp
+            ['Liquid Fuels', ['1.A.5.a', 'Liquid'], 2],
+            ['Solid Fuels', ['1.A.5.a', 'Solid'], 2],
+            ['Gaseous Fuels', ['1.A.5.a', 'Gaseous'], 2],
+            ['Other Fossil Fuels', ['1.A.5.a', 'OtherFF'], 2],
+            ['Peat', ['1.A.5.a', 'Peat'], 2],
+            ['Biomass', ['1.A.5.a', 'Biomass'], 2],
+            # temp
+            # GBK, GBR
+            ['Military fuel use', ['1.A.5.a.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.i', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.i', 'Biomass'], 3],
+            # TUR
+            ['Liquid fuels', ['1.A.5.a', 'Liquid'], 2],
+            # ESP, FIN, SWE
+            ['Other non-specified', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # ROU, SVK, RUS
+            ['Other', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # FRA, FRK
+            ['Other not specified', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # CYP
+            ['Other (not specified elsewhere)', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # NOR, HUN
+            ['Military', ['1.A.5.a.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.i', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.i', 'Biomass'], 3],
+            ['Non-fuel Use', ['1.A.5.a.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.iii', 'Liquid'], 3],
+            # DNM, DKE, DNK
+            ['Other stationary combustion', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # LUX
+            ['Stationary', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # USA
+            ['Incineration of Waste', ['1.A.5.a.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.iv', 'Biomass'], 3],
+            ['U.S. Territories', ['1.A.5.a.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.v', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.v', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.v', 'Biomass'], 3],
+            ['Non Energy Use', ['1.A.5.a.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.iii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.iii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.iii', 'Biomass'], 3],
+            # b. Mobile (please specify)
+            ['b. Mobile (please specify)', ['1.A.5.b', 'Total'], 1],
+            # temp
+            ['Liquid Fuels', ['1.A.5.b', 'Liquid'], 2],
+            ['Solid Fuels', ['1.A.5.b', 'Solid'], 2],
+            ['Gaseous Fuels', ['1.A.5.b', 'Gaseous'], 2],
+            ['Other Fossil Fuels', ['1.A.5.b', 'OtherFF'], 2],
+            ['Biomass', ['1.A.5.b', 'Biomass'], 2],
+            # temp
+            # GBK, GBR
+            ['Military aviation and naval shipping', ['1.A.5.b.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.i', 'Liquid'], 3],
+            # HRV
+            ['Military aviation component', ['1.A.5.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.ii', 'Biomass'], 3],
+            ['Military water-borne component', ['1.A.5.b.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iii', 'Biomass'], 3],
+            # ESP, FIN
+            ['Other non-specified', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # NLD, DKE, DNM, DNK, SWE, UKR
+            ['Military use', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.v', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.v', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.v', 'Biomass'], 3],
+            # AUT, NOR, USA, CHE, HUN, LTU
+            ['Military', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.v', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.v', 'Biomass'], 3],
+            # PRT
+            ['Military Aviation', ['1.A.5.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ii', 'Liquid'], 3],
+            # ROU, MLT
+            ['Other', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # FRA, FRK
+            ['Other not specified', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # CYP
+            ['1A5b i Mobile (aviation component)', ['1.A.5.b.vi', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.vi', 'Liquid'], 3],
+            # GBK, GBR
+            ['Lubricants used in 2-stroke engines', ['1.A.5.b.vii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.vii', 'Liquid'], 3],
+            # DNM, DKE, DNK
+            ['Recreational crafts', ['1.A.5.b.viii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.viii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.viii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.viii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.viii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.viii', 'Biomass'], 3],
+            # SVK
+            ['Military use Jet Kerosene', ['1.A.5.b.ix', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ix', 'Liquid'], 3],
+            ['Military Gasoline', ['1.A.5.b.x', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.x', 'Liquid'], 3],
+            ['Biomass', ['1.A.5.b.ix', 'Biomass'], 3],
+            ['Military Diesel Oil', ['1.A.5.b.xi', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.xi', 'Liquid'], 3],
+            ['Biomass', ['1.A.5.b.xi', 'Biomass'], 3],
+            # BEL
+            ['Military Use', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.v', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.v', 'Biomass'], 3],
+            # AUS
+            ['Military Transport', ['1.A.5.b.xii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.xii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.xii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.xii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.xii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.xii', 'Biomass'], 3],
+            # CZE
+            ['Agriculture and Forestry and Fishing', ['1.A.5.b.xiii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.xiii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.xiii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.xiii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.xiii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.xiii', 'Biomass'], 3],
+            ['Other mobile sources not included elsewhere', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # SVN
+            ['Military use of fuels', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            # LUX
+            ['Unspecified Mobile', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # LVA
+            ['Mobile', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # CAN
+            ['Domestic Military (Aviation)', ['1.A.5.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.ii', 'Biomass'], 3],
+            ['Military Water-borne Navigation', ['1.A.5.b.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iii', 'Biomass'], 3],
+            # ESP, FIN
+            # Information Item
+            ['Information item:(15)', ['\IGNORE', '\IGNORE'], 0],
+            ['Waste incineration with energy recovery included as:', ['\IGNORE', '\IGNORE'], 1],
+            ['Biomass(6)', ['\IGNORE', '\IGNORE'], 1],
+            ['Fossil fuels(4)', ['\IGNORE', '\IGNORE'], 1],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.B.1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 19,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA Amount of fuel produced',
+                'IMPLIED EMISSION FACTORS CH4(1)',
+                'IMPLIED EMISSION FACTORS CO2',
+                'EMISSIONS CH4 Recovery/Flaring(2)',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. B. 1. a. Coal mining and handling', ['1.B.1.a'], 0],
+            ['i. Underground mines(4)', ['1.B.1.a.i'], 1],
+            ['Mining activities', ['1.B.1.a.i.1'], 2],
+            ['Post-mining activities', ['1.B.1.a.i.2'], 2],
+            ['Abandoned underground mines', ['1.B.1.a.i.3'], 2],
+            ['ii. Surface mines(4)', ['1.B.1.a.ii'], 1],
+            ['Mining activities', ['1.B.1.a.ii.1'], 2],
+            ['Post-mining activities', ['1.B.1.a.ii.2'], 2],
+            ['1. B. 1. b. Solid fuel transformation(5)', ['1.B.1.b'], 0],
+            ['1. B. 1. c. Other (please specify)(6)', ['1.B.1.c'], 0],
+            ['Flaring', ['1.B.1.c.i'], 1],  # UKR, AUS
+            ['Flaring of gas', ['1.B.1.c.i'], 1],  # SWE
+            ['Coal Dumps', ['1.B.1.c.ii'], 1],  # JPN
+            ['SO2 scrubbing', ['1.B.1.c.iii'], 1],  # SVN
+            ['Flaring of coke oven gas', ['1.B.1.c.iv'], 1],  # KAZ
+            ['Emisson from Coke Oven Gas Subsystem', ['1.B.1.c.iv'], 1],  # POL
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 Emissions(3)': 'CH4',
+            'EMISSIONS CO2 Emissions': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.B.2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 33,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA(1) Description(1)',
+                'ACTIVITY DATA(1) Unit(1)',
+                'ACTIVITY DATA(1) Value',
+                'IMPLIED EMISSION FACTORS CO2(2)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured',
+            ],
+            "stop_cats": [".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. B. 2. a. Oil(6)', ['1.B.2.a'], 0],
+            ['1. Exploration', ['1.B.2.a.1'], 1],
+            ['2. Production(7)', ['1.B.2.a.2'], 1],
+            ['3. Transport', ['1.B.2.a.3'], 1],
+            ['4. Refining/storage', ['1.B.2.a.4'], 1],
+            ['5. Distribution of oil products', ['1.B.2.a.5'], 1],
+            ['6. Other', ['1.B.2.a.6'], 1],
+            ['1. B. 2. b. Natural gas', ['1.B.2.b'], 0],
+            ['1. Exploration', ['1.B.2.b.1'], 1],
+            ['2. Production(7)', ['1.B.2.b.2'], 1],
+            ['3. Processing', ['1.B.2.b.3'], 1],
+            ['4. Transmission and storage', ['1.B.2.b.4'], 1],
+            ['5. Distribution', ['1.B.2.b.5'], 1],
+            ['6. Other', ['1.B.2.b.6'], 1],
+            ['1. B. 2. c. Venting and flaring', ['1.B.2.c'], 0],
+            ['Venting', ['1.B.2.c-ven'], 1],
+            ['i. Oil', ['1.B.2.c-ven.i'], 2],
+            ['ii. Gas', ['1.B.2.c-ven.ii'], 2],
+            ['iii. Combined', ['1.B.2.c-ven.iii'], 2],
+            ['Flaring(8)', ['1.B.2.c-fla'], 1],
+            ['i. Oil', ['1.B.2.c-fla.i'], 2],
+            ['ii. Gas', ['1.B.2.c-fla.ii'], 2],
+            ['iii. Combined', ['1.B.2.c-fla.iii'], 2],
+            ['1.B.2.d. Other (please specify)(9)', ['1.B.2.d'], 0],
+            ['Groundwater extraction and CO2 mining', ['1.B.2.d.i'], 1],  # HUN
+            ['Geothermal', ['1.B.2.d.ii'], 1],  # NOR, DEU, PRT, NZL
+            ['Geothermal Energy', ['1.B.2.d.ii'], 1],  # ISL
+            ['Geothermal Generation', ['1.B.2.d.ii'], 1],  # JPN
+            ['Geotherm', ['1.B.2.d.ii'], 1],  # ITA
+            ['City Gas Production', ['1.B.2.d.iii'], 1],  # PRT
+            ['Other', ['1.B.2.d.iv'], 1],  # UKR, ROU
+            ['Other non-specified', ['1.B.2.d.iv'], 1],  # SWE
+            ['Flaring in refineries', ['1.B.2.d.v'], 1],  # ITA
+            ['LPG transport', ['1.B.2.d.vi'], 1],  # GRC
+            ['Distribution of town gas', ['1.B.2.d.vii'], 1],  # FIN
+            ['Petrol distribution', ['1.B.2.d.viii'], 1],  # IRL
+            ['Natural Gas Transport', ['1.B.2.d.ix'], 1],  # BLR
+            ['Natural gas exploration - N2O emissions', ['1.B.2.d.x'], 1],  # GBR, GBK
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 (4) Amount captured': 'CH4',
+            'EMISSIONS CO2 Emissions(3)': 'CO2',
+            'EMISSIONS N2O Amount captured': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.C": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 24,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA CO2 transported or injected(1)',
+                'IMPLIED EMISSION FACTORS CO2',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Transport of CO2', ['1.C.1']],
+            ['a. Pipelines', ['1.C.1.a']],
+            ['b. Ships', ['1.C.1.b']],
+            ['c. Other', ['1.C.1.c']],
+            ['2. Injection and storage(3)', ['1.C.2']],
+            ['a. Injection', ['1.C.2.a']],
+            ['b. Storage', ['1.C.2.b']],
+            ['3. Other', ['1.C.3']],
+            ['Information item(4, 5)', ['\IGNORE']],
+            ['Total amount captured for storage', ['M.Info.A.TACS']],
+            ['Total amount of imports for storage', ['M.Info.A.TAIS']],
+            ['Total A', ['M.Info.A']],
+            ['Total amount of exports for storage', ['M.Info.B.TAES']],
+            ['Total amount of CO2 injected at storage sites', ['M.Info.B.TAI']],
+            ['Total leakage from transport, injection and storage', ['M.Info.B.TLTIS']],
+            ['Total B', ['M.Info.B']],
+            ['Difference (A-B)(6)', ['\IGNORE']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CO2(2)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.D": {
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 20,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table2(I)s1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 31,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["industry"],
+        },
+        "sector_mapping": [
+            ['Total industrial processes', ['2']],
+            ['A. Mineral industry', ['2.A']],
+            ['1. Cement production', ['2.A.1']],
+            ['2. Lime production', ['2.A.2']],
+            ['3. Glass production', ['2.A.3']],
+            ['4. Other process uses of carbonates', ['2.A.4']],
+            ['B. Chemical industry', ['2.B']],
+            ['1. Ammonia production', ['2.B.1']],
+            ['2. Nitric acid production', ['2.B.2']],
+            ['3. Adipic acid production', ['2.B.3']],
+            ['4. Caprolactam, glyoxal and glyoxylic acid production', ['2.B.4']],
+            ['5. Carbide production', ['2.B.5']],
+            ['6. Titanium dioxide production', ['2.B.6']],
+            ['7. Soda ash production', ['2.B.7']],
+            ['8. Petrochemical and carbon black production', ['2.B.8']],
+            ['9. Fluorochemical production', ['2.B.9']],
+            ['10. Other (as specified in table 2(I).A-H)', ['2.B.10']],
+            ['C. Metal industry', ['2.C']],
+            ['1. Iron and steel production', ['2.C.1']],
+            ['2. Ferroalloys production', ['2.C.2']],
+            ['3. Aluminium production', ['2.C.3']],
+            ['4. Magnesium production', ['2.C.4']],
+            ['5. Lead production', ['2.C.5']],
+            ['6. Zinc production', ['2.C.6']],
+            ['7. Other (as specified in table 2(I).A-H)', ['2.C.7']],
+        ],
+        "entity_mapping": {
+            'HFCs(1)': 'HFCS (AR4GWP100)',
+            'PFCs(1)': 'PFCS (AR4GWP100)',
+            'Unspecified mix of HFCs and PFCs(1)': 'UnspMixOfHFCsPFCs (AR4GWP100)',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table2(I)s2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 29,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["industry"],
+        },
+        "sector_mapping": [
+            ['D. Non-energy products from fuels and solvent use', ['2.D']],
+            ['1. Lubricant use', ['2.D.1']],
+            ['2. Paraffin wax use', ['2.D.2']],
+            ['3. Other', ['2.D.3']],
+            ['E. Electronics industry', ['2.E']],
+            ['1. Integrated circuit or semiconductor', ['2.E.1']],
+            ['2. TFT flat panel display', ['2.E.2']],
+            ['3. Photovoltaics', ['2.E.3']],
+            ['4. Heat transfer fluid', ['2.E.4']],
+            ['5. Other (as specified in table 2(II))', ['2.E.5']],
+            ['F. Product uses as substitutes for ODS(2)', ['2.F']],
+            ['1. Refrigeration and air conditioning', ['2.F.1']],
+            ['2. Foam blowing agents', ['2.F.2']],
+            ['3. Fire protection', ['2.F.3']],
+            ['4. Aerosols', ['2.F.4']],
+            ['5. Solvents', ['2.F.5']],
+            ['6. Other applications', ['2.F.6']],
+            ['G. Other product manufacture and use', ['2.G']],
+            ['1. Electrical equipment', ['2.G.1']],
+            ['2. SF6 and PFCs from other product use', ['2.G.2']],
+            ['3. N2O from product uses', ['2.G.3']],
+            ['4. Other', ['2.G.4']],
+            ['H. Other (as specified in tables 2(I).A-H and 2(II))(3)', ['2.H']],
+        ],
+        "entity_mapping": {
+            'HFCs(1)': 'HFCS (AR4GWP100)',
+            'PFCs(1)': 'PFCS (AR4GWP100)',
+            'Unspecified mix of HFCs and PFCs(1)': 'UnspMixOfHFCsPFCs (AR4GWP100)',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table2(I).A-Hs1": {
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 40,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table2(I).A-Hs2": {
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 36,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table2(II)": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 38,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": [".", np.nan],
+            "unit_info": unit_info["fgases"],
+        },
+        "sector_mapping": [
+            ['Total actual emissions of halocarbons (by chemical) and SF6', ['2']],
+            ['B. Chemical industry', ['2.B']],
+            ['9. Flurochemical production', ['2.B.9']],
+            ['By-product emissions', ['2.B.9.a']],
+            ['Fugitive emissions', ['2.B.9.b']],
+            ['10. Other', ['2.B.10']],
+            ['C. Metal industry', ['2.C']],
+            ['3. Aluminium production', ['2.C.3']],
+            ['4. Magnesium production', ['2.C.4']],
+            ['7. Other', ['2.C.7']],
+            ['E. Electronics industry', ['2.E']],
+            ['1. Integrated circuit or semiconductor', ['2.E.1']],
+            ['2. TFT flat panel display', ['2.E.2']],
+            ['3. Photovoltaics', ['2.E.3']],
+            ['4. Heat transfer fluid', ['2.E.4']],
+            ['5. Other (as specified in table 2(II))', ['2.E.5']],
+            ['F. Product uses as substitutes for ODS(2)', ['2.F']],
+            ['1. Refrigeration and air conditioning', ['2.F.1']],
+            ['2. Foam blowing agents', ['2.F.2']],
+            ['3. Fire protection', ['2.F.3']],
+            ['4. Aerosols', ['2.F.4']],
+            ['5. Solvents', ['2.F.5']],
+            ['6. Other applications', ['2.F.6']],
+            ['G. Other product manufacture and use', ['2.G']],
+            ['1. Electrical equipment', ['2.G.1']],
+            ['2. SF6 and PFCs from other product use', ['2.G.2']],
+            ['4. Other', ['2.G.4']],
+            ['H. Other (please specify)', ['2.H']],
+            ['2.H.1 Pulp and paper', ['2.H.1']],
+            ['2.H.2 Food and beverages industry', ['2.H.2']],
+            ['2.H.3 Other (please specify)', ['2.H.3']],
+        ],
+        "entity_mapping": {
+            'C 3F8': 'C3F8',
+            #'C10F18' 'C2F6' 'C4F10' 'C5F12' 'C6F14' 'CF4'
+            'HFC-125': 'HFC125',
+            'HFC-134': 'HFC134',
+            'HFC-134a': 'HFC134a',
+            'HFC-143': 'HFC143',
+            'HFC-143a': 'HFC143a',
+            'HFC-152': 'HFC152',
+            'HFC-152a': 'HFC152a',
+            'HFC-161': 'HFC161',
+            'HFC-227ea': 'HFC227ea',
+            'HFC-23': 'HFC23',
+            'HFC-236cb': 'HFC236cb',
+            'HFC-236ea': 'HFC236ea',
+            'HFC-236fa': 'HFC236fa',
+            'HFC-245ca': 'HFC245ca',
+            'HFC-245fa': 'HFC245fa',
+            'HFC-32': 'HFC32',
+            'HFC-365mfc': 'HFC365mfc',
+            'HFC-41': 'HFC41',
+            'HFC-43-10mee': 'HFC4310mee',
+            'Unspecified mix of HFCs (1)': 'UnspMixOfHFCs (AR4GWP100)',
+            'Unspecified mix of HFCs and PFCs(1)': 'UnspMixOfHFCsPFCs (AR4GWP100)',
+            'Unspecified mix of PFCs (1)': 'UnspMixOfPFCs (AR4GWP100)',
+            'c-C3F6': 'cC3F6',
+            'c-C4F8': 'cC4F8',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3s1": {  # Agriculture summary sheet 1
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 75,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['3. Total agriculture', ['3'], 0],
+            # I. Livestock
+            ['I. Livestock', ['M.3.LV'], 1],
+            # A. Enteric fermentation
+            ['A. Enteric fermentation', ['3.A'], 2],
+            ['1. Cattle(1)', ['3.A.1'], 3],
+            ['Option A:', ['\IGNORE'], 4],
+            ['Dairy cattle', ['3.A.1.Aa'], 5],
+            ['Non-dairy cattle', ['3.A.1.Ab'], 5],
+            ['Option B:', ['\IGNORE'], 4],
+            ['Mature dairy cattle', ['3.A.1.Ba'], 5],
+            ['Other mature cattle', ['3.A.1.Bb'], 5],
+            ['Growing cattle', ['3.A.1.Bc'], 5],
+            ['Option C (country-specific):', ['\IGNORE'], 4],
+            # all countries not specified explcitly
+            ['\C!-AUS-MLT-LUX-POL-SVN-USA\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            # Australia
+            ['\C-AUS\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-AUS\ Dairy Cattle', ['3.A.1.C-AUS-a'], 6],
+            ['\C-AUS\ Beef Cattle - Pasture', ['3.A.1.C-AUS-b'], 6],
+            ['\C-AUS\ Beef Cattle - Feedlot', ['3.A.1.C-AUS-c'], 6],
+            # malta
+            ['\C-MLT\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-MLT\ dairy cows', ['3.A.1.C-MLT-a'], 6],
+            ['\C-MLT\ non-lactating cows', ['3.A.1.C-MLT-b'], 6],
+            ['\C-MLT\ bulls', ['3.A.1.C-MLT-c'], 6],
+            ['\C-MLT\ calves', ['3.A.1.C-MLT-d'], 6],
+            ['\C-MLT\ growing cattle 1-2 years', ['3.A.1.C-MLT-e'], 6],
+            # Luxembourg
+            ['\C-LUX\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-LUX\ Bulls', ['3.A.1.C-LUX-a'], 6],
+            ['\C-LUX\ Calves', ['3.A.1.C-LUX-b'], 6],
+            ['\C-LUX\ Young Cattle', ['3.A.1.C-LUX-c'], 6],
+            ['\C-LUX\ Suckler Cows', ['3.A.1.C-LUX-d'], 6],
+            ['\C-LUX\ Bulls under 2 years', ['3.A.1.C-LUX-e'], 6],
+            ['\C-LUX\ Dairy Cows', ['3.A.1.C-LUX-f'], 6],
+            # Poland
+            ['\C-POL\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-POL\ Bulls (older than 2 years)', ['3.A.1.C-POL-a'], 6],
+            ['\C-POL\ Non-dairy Heifers (older than 2 years)', ['3.A.1.C-POL-b'], 6],
+            ['\C-POL\ Non-dairy Young Cattle (younger than 1 year)', ['3.A.1.C-POL-c'], 6],
+            ['\C-POL\ Dairy Cattle', ['3.A.1.C-POL-d'], 6],
+            ['\C-POL\ Non-dairy Young Cattle (1-2 years)', ['3.A.1.C-POL-e'], 6],
+            # Slovenia
+            ['\C-SVN\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-SVN\ Dairy cows', ['3.A.1.C-SVN-a'], 6],
+            ['\C-SVN\ Non-dairy cattle', ['3.A.1.C-SVN-b'], 6],
+            ['\C-SVN\ Other cows', ['3.A.1.C-SVN-c'], 6],
+            # USA
+            ['\C-USA\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-USA\ Steer Stocker', ['3.A.1.C-USA-a'], 6],
+            ['\C-USA\ Heifer Stocker', ['3.A.1.C-USA-b'], 6],
+            ['\C-USA\ Beef Cows', ['3.A.1.C-USA-c'], 6],
+            ['\C-USA\ Dairy Replacements', ['3.A.1.C-USA-d'], 6],
+            ['\C-USA\ Beef Replacements', ['3.A.1.C-USA-e'], 6],
+            ['\C-USA\ Steer Feedlot', ['3.A.1.C-USA-f'], 6],
+            ['\C-USA\ Heifer Feedlot', ['3.A.1.C-USA-g'], 6],
+            ['\C-USA\ Bulls', ['3.A.1.C-USA-h'], 6],
+            ['\C-USA\ Dairy Cows', ['3.A.1.C-USA-i'], 6],
+            ['\C-USA\ Beef Calves', ['3.A.1.C-USA-j'], 6],
+            ['\C-USA\ Dairy Calves', ['3.A.1.C-USA-k'], 6],
+            # Other livestock
+            ['2. Sheep', ['3.A.2'], 3],
+            ['3. Swine', ['3.A.3'], 3],
+            ['4. Other livestock', ['3.A.4'], 3],
+            ['Buffalo', ['3.A.4.a'], 4],
+            ['Camels', ['3.A.4.b'], 4],
+            ['Deer', ['3.A.4.c'], 4],
+            ['Goats', ['3.A.4.d'], 4],
+            ['Horses', ['3.A.4.e'], 4],
+            ['Mules and Asses', ['3.A.4.f'], 4],
+            ['Poultry', ['3.A.4.g'], 4],
+            ['Other (please specify)', ['3.A.4.h'], 4],
+            ['Rabbit', ['3.A.4.h.i'], 5],
+            ['Reindeer', ['3.A.4.h.ii'], 5],
+            ['Ostrich', ['3.A.4.h.iii'], 5],
+            ['Fur-bearing Animals', ['3.A.4.h.iv'], 5],
+            ['Other', ['3.A.4.h.v'], 5],
+            # Manure Management
+            ['B. Manure management', ['3.B'], 2],
+            ['1. Cattle(1)', ['3.B.1'], 3],
+            ['Option A:', ['\IGNORE'], 4],
+            ['Dairy cattle', ['3.B.1.Aa'], 5],
+            ['Non-dairy cattle', ['3.B.1.Ab'], 5],
+            ['Option B:', ['\IGNORE'], 4],
+            ['Mature dairy cattle', ['3.B.1.Ba'], 5],
+            ['Other mature cattle', ['3.B.1.Bb'], 5],
+            ['Growing cattle', ['3.B.1.Bc'], 5],
+            ['Option C (country-specific):', ['\IGNORE'], 4],
+            # all countries not specified explicitly
+            ['\C!-AUS-MLT-LUX-POL-SVN-USA\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            # Australia
+            ['\C-AUS\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-AUS\ Dairy Cattle', ['3.B.1.C-AUS-a'], 6],
+            ['\C-AUS\ Beef Cattle - Pasture', ['3.B.1.C-AUS-b'], 6],
+            ['\C-AUS\ Beef Cattle - Feedlot', ['3.B.1.C-AUS-c'], 6],
+            # Malta
+            ['\C-MLT\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-MLT\ dairy cows', ['3.B.1.C-MLT-a'], 6],
+            ['\C-MLT\ non-lactating cows', ['3.B.1.C-MLT-b'], 6],
+            ['\C-MLT\ bulls', ['3.B.1.C-MLT-c'], 6],
+            ['\C-MLT\ calves', ['3.B.1.C-MLT-d'], 6],
+            ['\C-MLT\ growing cattle 1-2 years', ['3.B.1.C-MLT-e'], 6],
+            # Luxembourg
+            ['\C-LUX\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-LUX\ Bulls', ['3.B.1.C-LUX-a'], 6],
+            ['\C-LUX\ Calves', ['3.B.1.C-LUX-b'], 6],
+            ['\C-LUX\ Young Cattle', ['3.B.1.C-LUX-c'], 6],
+            ['\C-LUX\ Suckler Cows', ['3.B.1.C-LUX-d'], 6],
+            ['\C-LUX\ Bulls under 2 years', ['3.B.1.C-LUX-e'], 6],
+            ['\C-LUX\ Dairy Cows', ['3.B.1.C-LUX-f'], 6],
+            # Poland
+            ['\C-POL\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-POL\ Non-dairy Cattle', ['3.B.1.C-POL-a'], 6],
+            ['\C-POL\ Dairy Cattle', ['3.B.1.C-POL-b'], 6],
+            # Slovenia
+            ['\C-SVN\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-SVN\ Dairy cows', ['3.B.1.C-SVN-a'], 6],
+            ['\C-SVN\ Non-dairy cattle', ['3.B.1.C-SVN-b'], 6],
+            ['\C-SVN\ Other cows', ['3.B.1.C-SVN-c'], 6],
+            # USA
+            ['\C-USA\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-USA\ Dairy Cattle', ['\IGNORE'], 6],
+            ['\C-USA\ Non-Dairy Cattle', ['\IGNORE'], 6],
+            ['\C-USA\ Steer Stocker', ['3.B.1.C-USA-a'], 6],
+            ['\C-USA\ Heifer Stocker', ['3.B.1.C-USA-b'], 6],
+            ['\C-USA\ Beef Cows', ['3.B.1.C-USA-c'], 6],
+            ['\C-USA\ Dairy Replacements', ['3.B.1.C-USA-d'], 6],
+            ['\C-USA\ Beef Replacements', ['3.B.1.C-USA-e'], 6],
+            ['\C-USA\ Steer Feedlot', ['3.B.1.C-USA-f'], 6],
+            ['\C-USA\ Heifer Feedlot', ['3.B.1.C-USA-g'], 6],
+            ['\C-USA\ Bulls', ['3.B.1.C-USA-h'], 6],
+            ['\C-USA\ Dairy Cows', ['3.B.1.C-USA-i'], 6],
+            ['\C-USA\ Beef Calves', ['3.B.1.C-USA-j'], 6],
+            ['\C-USA\ Dairy Calves', ['3.B.1.C-USA-k'], 6],
+            # other animals
+            ['2. Sheep', ['3.B.2'], 3],
+            ['3. Swine', ['3.B.3'], 3],
+            ['4. Other livestock', ['3.B.4'], 3],
+            ['Buffalo', ['3.B.4.a'], 4],
+            ['Camels', ['3.B.4.b'], 4],
+            ['Deer', ['3.B.4.c'], 4],
+            ['Goats', ['3.B.4.d'], 4],
+            ['Horses', ['3.B.4.e'], 4],
+            ['Mules and Asses', ['3.B.4.f'], 4],
+            ['Poultry', ['3.B.4.g'], 4],
+            ['Other (please specify)', ['3.B.4.h'], 4],
+            ['Rabbit', ['3.B.4.h.i'], 5],
+            ['Reindeer', ['3.B.4.h.ii'], 5],
+            ['Ostrich', ['3.B.4.h.iii'], 5],
+            ['Fur-bearing Animals', ['3.B.4.h.iv'], 5],
+            ['Other', ['3.B.4.h.v'], 5],
+            ['5. Indirect N2O emissions', ['3.B.5'], 3],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3s2": {  # Agriculture summary sheet 2
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 18,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": [".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['C. Rice cultivation', ['3.C']],
+            ['D. Agricultural soils(2) (3) (4)', ['3.D']],
+            ['E. Prescribed burning of savannahs', ['3.E']],
+            ['E. Prescribed burning of savannas', ['3.E']],
+            ['F. Field burning of agricultural residues', ['3.F']],
+            ['G. Liming', ['3.G']],
+            ['H. Urea application', ['3.H']],
+            ['I. Other carbon-containing fertilizers', ['3.I']],
+            ['J. Other (please specify)', ['3.J']],
+            ['NOx from Manure Management', ['3.J.1']],
+            ['3.B NOx Emissions', ['3.J.1']],
+            ['NOx from 3B', ['3.J.1']],
+            ['NOX emissions from manure management', ['3.J.1']],
+            ['NOx from manure management', ['3.J.1']],
+            ['Other', ['3.J.2']],
+            ['Other UK emissions', ['3.J.2']],
+            ['Other non-specified', ['3.J.2']],
+            ['OTs and CDs - Livestock', ['3.J.3']],
+            ['OTs and CDs - soils', ['3.J.4']],
+            ['OTs and CDs - other', ['3.J.5']],
+            ['Digestate renewable raw material (storage of N)', ['3.J.6']],
+            ['Digestate renewable raw material (atmospheric deposition)', ['3.J.7']],
+            ['Digestate renewable raw material (storage of dry matter)', ['3.J.8']],
+            ['NOx from Livestock', ['3.J.9']],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.C": {  # rice cultivation details
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 21,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Harvested area(2)',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Organic amendments added(3)',
+                'IMPLIED EMISSION FACTOR (1) CH4',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Irrigated', ['3.C.1']],
+            ['Continuously flooded', ['3.C.1.a']],
+            ['Intermittently flooded Single aeration', ['3.C.1.a.i']],
+            ['Intermittently flooded Multiple aeration', ['3.C.1.b.ii']],
+            ['2. Rainfed', ['3.C.2']],
+            ['Flood prone', ['3.C.2.a']],
+            ['Drought prone', ['3.C.2.b']],
+            ['3. Deep water', ['3.C.3']],
+            ['Water depth 50–100 cm', ['3.C.3.a']],
+            ['Water depth > 100 cm', ['3.C.3.b']],
+            ['4. Other (please specify)', ['3.C.4']],
+            ['Non-specified', ['3.C.4.a']],  # EST
+            ['Other', ['3.C.4.a']],  # DEU
+            ['other', ['3.C.4.a']],  # LVA
+            ['Other cultivation', ['3.C.4.a']],  # CZE
+            ['Upland rice(4)', ['\IGNORE']],
+            ['Total(4)', ['\IGNORE']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': 'CH4',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.D": {  # direct and indirect N2O from soils
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 21,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                "ACTIVITY DATA AND OTHER RELATED INFORMATION Description",
+                "ACTIVITY DATA AND OTHER RELATED INFORMATION Value",
+                "IMPLIED EMISSION FACTORS Value",
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['a. Direct N2O emissions from managed soils', ['3.D.a']],
+            ['1. Inorganic N fertilizers(3)', ['3.D.a,1']],
+            ['2. Organic N fertilizers(3)', ['3.D.a.2']],
+            ['a. Animal manure applied to soils', ['3.D.a.2.a']],
+            ['b. Sewage sludge applied to soils', ['3.D.a.2.b']],
+            ['c. Other organic fertilizers applied to soils', ['3.D.a.2.c']],
+            ['3. Urine and dung deposited by grazing animals', ['3.D.a.3']],
+            ['4. Crop residues', ['3.D.a.4']],
+            ['5. Mineralization/immobilization associated with loss/gain of soil organic matter (4)(5)', ['3.D.a.5']],
+            ['6. Cultivation of organic soils (i.e. histosols)(2)', ['3.D.a.6']],
+            ['7. Other', ['3.D.a.7']],
+            ['b. Indirect N2O Emissions from managed soils', ['3.D.b']],
+            ['1. Atmospheric deposition(6)', ['3.D.b.1']],
+            ['2. Nitrogen leaching and run-off', ['3.D.b.2']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS N2O': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.E": {  # savanna burning details
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 14,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Area of savanna burned',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Average above-ground biomass density',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Biomass burned',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Fraction of savanna burned',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Nitrogen fraction in biomass',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+            ],
+            "stop_cats": ["", ".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['Forest land (specify ecological zone)(1)', ['3.E.1'], 0],
+            ['Savanna Grassland', ['3.E.1.b'], 1],  # AUS
+            ['Savanna Woodland', ['3.E.1.a'], 1],  # AUS
+            ['Forest land', ['3.E.1.a'], 1],  # SWE, CHE, CZE, HRV
+            ['Luxembourg', ['3.E.1.c'], 1],  # LUX
+            ['Other non-specified', ['3.E.1.d'], 1],  # EST
+            ['All', ['3.E.1.d'], 1],  # DNK, DNM, DKE
+            ['Unspecified', ['3.E.1.d'], 1],  # DEU
+            ['forest land', ['3.E.1.a'], 1],  # MLT
+            ['Zone', ['3.E.1.d'], 1],  # LVA
+            ['Grassland (specify ecological zone)(1)', ['3.E.2'], 0],
+            ['Savanna Woodland', ['3.E.2.a'], 1],  # AUS
+            ['Savanna Grassland', ['3.E.2.b'], 1],  # AUS
+            ['Temperate Grassland', ['3.E.2.c'], 1],  # AUS
+            ['Grassland', ['3.E.2.d'], 1],  # SWE, CHE, CZE, HRV
+            ['Luxembourg', ['3.E.2.e'], 1],  # LUX
+            ['Other non-specified', ['3.E.2.f'], 1],  # EST
+            ['All', ['3.E.2.f'], 1],  # DNK, DNM, DKE
+            ['Unspecified', ['3.E.2.f'], 1],  # DEU
+            ['Tussock', ['3.E.2.g'], 1],  # NZL
+            ['grassland', ['3.E.2.d'], 1],  # MLT
+            ['Zone_', ['3.E.2.f'], 1],  # LVA
+        ],
+        "entity_mapping": {
+            'EMISSIONS (2) CH4': 'CH4',
+            'EMISSIONS (2) N2O': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.F": {  # field burning details
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 30,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table3.G-I": {  # liming, urea, carbon containing fertilizer
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 13,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table4": {  # LULUCF overview
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 29,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", ".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['4. Total LULUCF', ['4']],
+            ['A. Forest land', ['4.A']],
+            ['1. Forest land remaining forest land', ['4.A.1']],
+            ['2. Land converted to forest land', ['4.A.2']],
+            ['B. Cropland', ['4.B']],
+            ['1. Cropland remaining cropland', ['4.B.1']],
+            ['2. Land converted to cropland', ['4.B.2']],
+            ['C. Grassland', ['4.C']],
+            ['1. Grassland remaining grassland', ['4.C.1']],
+            ['2. Land converted to grassland', ['4.C.2']],
+            ['D. Wetlands(3)', ['4.D']],
+            ['1. Wetlands remaining wetlands', ['4.D.1']],
+            ['2. Land converted to wetlands', ['4.D.2']],
+            ['E. Settlements', ['4.E']],
+            ['1. Settlements remaining settlements', ['4.E.1']],
+            ['2. Land converted to settlements', ['4.E.2']],
+            ['F. Other land (4)', ['4.F']],
+            ['1. Other land remaining other land', ['4.F.1']],
+            ['2. Land converted to other land', ['4.F.2']],
+            ['G. Harvested wood products (5)', ['4.G']],
+            ['H. Other (please specify)', ['4.H']],
+            ['Land converted to Settlement', ['4.H.1']],
+            ['Reservoir of Petit-Saut in French Guiana', ['4.H.5']],
+            ['Biogenic NMVOCs from managed forest', ['4.H.4']],
+            ['All other', ['4.H.9']],
+            ['Luxembourg', ['4.H.8']],
+            ['Settlements Remaining Settlements', ['4.H.2']],
+            ['4.E Settlements', ['4.H.2']],
+            ['4.C Grassland', ['4.H.3']],
+            ['Settlements', ['4.H.2']],
+            ['Other', ['4.H.9']],
+            ['N2O Emissions from Aquaculture Use', ['4.H.6']],
+            ['CH4 from artificial water bodies', ['4.H.7']],
+        ],
+        "entity_mapping": {
+            'CH4(2)': 'CH4',
+            'N2O(2)': 'N2O',
+            'Net CO2 emissions/removals(1), (2)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    # TODO: all other LULUCF tables
+    "Table5": {  # Waste overview
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 27,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['Total waste', ['5']],
+            ['A. Solid waste disposal', ['5.A']],
+            ['1. Managed waste disposal sites', ['5.A.1']],
+            ['2. Unmanaged waste disposal sites', ['5.A.2']],
+            ['3. Uncategorized waste disposal sites', ['5.A.3']],
+            ['B. Biological treatment of solid waste', ['5.B']],
+            ['1. Composting', ['5.B.1']],
+            ['2. Anaerobic digestion at biogas facilities', ['5.B.2']],
+            ['C. Incineration and open burning of waste', ['5.C']],
+            ['1. Waste incineration', ['5.C.1']],
+            ['2. Open burning of waste', ['5.C.2']],
+            ['D. Wastewater treatment and discharge', ['5.D']],
+            ['1. Domestic wastewater', ['5.D.1']],
+            ['2. Industrial wastewater', ['5.D.2']],
+            ['3. Other (as specified in table 5.D)', ['5.D.3']],
+            ['E. Other (please specify)', ['5.E']],
+            ['Other', ['5.E.5']],  # EST, NOR
+            ['Recycling activities', ['5.E.1']],  # NLD
+            ['Mechanical-Biological Treatment MBT', ['5.E.2']],  # DEU
+            ['Accidental fires', ['5.E.3']],  # DEU, DKE, DNK, DNM
+            ['Decomposition of Petroleum-Derived Surfactants', ['5.E.4']],  # JPN
+            ['Other non-specified', ['5.E.5']],  # USA
+            ['Biogas burning without energy recovery', ['5.E.6']],  # PRT
+            ['Sludge spreading', ['5.E.7']],  # ESP
+            ['Accidental combustion', ['5.E.3']],  # ESP
+            ['Other waste', ['5.E.5']],  # CZE
+            ['Memo item:(2)', ['\IGNORE']],
+            ['Long-term storage of C in waste disposal sites', ['M.Memo.LTSW']],
+            ['Annual change in total long-term C storage', ['M.Memo.ACLT']],
+            ['Annual change in total long-term C storage in HWP waste(3)', ['M.Memo.ACLTHWP']],
+        ],
+        "entity_mapping": {
+            'CO2(1)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested; memo items not read because of empty lines
+    "Table5.A": {  # solid waste disposal
+        "status": "tested",
+        "table": {
+            "firstrow": 6,
+            "lastrow": 15,
+            "header": ['group', 'group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION SINK CATEGORIES Annual waste at the SWDS',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION SINK CATEGORIES MCF',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION SINK CATEGORIES DOCf',
+                'IMPLIED EMISSION FACTOR SINK CATEGORIES CH4(1)',
+                'IMPLIED EMISSION FACTOR SINK CATEGORIES CO2',
+                'EMISSIONS SINK CATEGORIES CH4 Amount of CH4 flared',
+                'EMISSIONS SINK CATEGORIES CH4 Amount of CH4 for energy recovery(3)',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Managed waste disposal sites', ['5.1']],
+            ['a. Anaerobic', ['5.1.a']],
+            ['b. Semi-aerobic', ['5.1.b']],
+            ['2. Unmanaged waste disposal sites', ['5.2']],
+            ['3. Uncategorized waste disposal sites', ['5.3']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS SINK CATEGORIES CH4 Emissions(2)': 'CH4',
+            'EMISSIONS SINK CATEGORIES CO2(4) Amount of CH4 for energy recovery(3)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table5.B": {  # Biological treatment of solid waste
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 16,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Annual waste amount treated',
+                'IMPLIED EMISSION FACTOR CH4(1)',
+                'IMPLIED EMISSION FACTOR N2O',
+                'EMISSIONS CH4 Amount of CH4 flared',
+                'EMISSIONS CH4 Amount of CH4 for energy recovery(3)',
+            ],
+            "stop_cats": [".", "", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Composting', ['5.B.1'], 0],
+            ['Municipal solid waste', ['5.B.1.a'], 1],
+            ['Other (please specify)(4)', ['5.B.1.b'], 1],
+            ['Organic wastes households', ['5.B.1.b.i'], 2],  # NLD
+            ['Organic wastes from gardens and horticulture', ['5.B.1.b.ii'], 2],  # NLD
+            ['Food and garden waste', ['5.B.1.b.ii'], 2],  # DNM, DNK, DKE
+            ['Industrial Solid Waste', ['5.B.1.b.iii'], 2],  # POL
+            ['Home composting', ['5.B.1.b.iv'], 2],  # NOR
+            ['Mixed waste', ['5.B.1.b.v'], 2],  # LTU
+            ['Other waste', ['5.B.1.b.v'], 2],  # SWE
+            ['Sludge', ['5.B.1.b.vi'], 2],  # HUN, EST
+            ['Textile', ['5.B.1.b.vii'], 2],  # EST
+            ['Wood', ['5.B.1.b.viii'], 2],  # EST
+            ['Organic', ['5.B.1.b.ix'], 2],  # EST
+            ['Paper', ['5.B.1.b.x'], 2],  # EST
+            ['Other_SW', ['5.B.1.b.v'], 2],  # CZE
+            ['MBA treated MSW', ['5.B.1.b.xi'], 2],  # LUX
+            ['Specific Agricultural and Industrial Waste', ['5.B.1.b.xii'], 2],  # UKR
+            ['Industrial solid waste and constr. waste', ['5.B.1.b.xiii'], 2],  # FIN
+            ['Municipal sludge', ['5.B.1.b.xiv'], 2],  # FIN
+            ['Industrial sludge', ['5.B.1.b.xv'], 2],  # FIN
+            ['Open air composting', ['5.B.1.b.xvi'], 2],  # LIE
+            ['Industrial Waste', ['5.B.1.b.xvii'], 2],  # JPN
+            ['Human Waste and Johkasou sludge', ['5.B.1.b.xviii'], 2],  # JPN
+            ['2. Anaerobic digestion at biogas facilities(3)', ['5.B.2'], 0],
+            ['Municipal solid waste', ['5.B.2.a'], 1],
+            ['Other (please specify)(4)', ['5.B.2.b'], 1],
+            ['Organic wastes households', ['5.B.2.b.i'], 2],  # NLD
+            ['Organic wastes from gardens and horticulture', ['5.B.2.b.ii'], 2],  # NLD
+            ['Animal manure and other organic waste', ['5.B.2.b.iii'], 2],  # DNM, DNK, DKE
+            ['sewage sludge', ['5.B.2.b.iv'], 2],  # LTU
+            ['Other waste', ['5.B.2.b.v'], 2],  # SWE
+            ['Agricultural biogas facilities', ['5.B.2.b.vi'], 2],  # CHE
+            ['Other biogases from anaerobic fermentation', ['5.B.2.b.vii'], 2],  # HUN
+            ['Sludge', ['5.B.2.b.iv'], 2],  # EST
+            ['Anaerobic Digestion On-Farm and at Wastewater Treatment Facilities', ['5.B.2.b.viii'], 2],  # USA
+            ['Other_AD', ['5.B.2.b.v'], 2],  # CZE
+            ['Biogenic waste incl. wastes from Agriculture (manure)', ['5.B.2.b.ix'], 2],  # LUX
+            ['Industrial solid waste and constr. waste', ['5.B.2.b.x'], 2],  # FIN
+            ['Municipal sludge', ['5.B.2.b.xi'], 2],  # FIN
+            ['Industrial sludge', ['5.B.2.b.xii'], 2],  # FIN
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 Emissions(2)': 'CH4',
+            'EMISSIONS N2O Amount of CH4 for energy recovery(3)': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table5.C": {  # Waste incineration and open burning
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 38,
+            "header": ['group', 'group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA Amount of wastes (incinerated/open burned)',
+                'IMPLIED EMISSION FACTOR Amount of wastes (incinerated/open burned) CO2',
+                'IMPLIED EMISSION FACTOR Amount of wastes (incinerated/open burned) CH4',
+                'IMPLIED EMISSION FACTOR Amount of wastes (incinerated/open burned) N2O',
+            ],
+            "stop_cats": [".", "", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Waste Incineration', ['5.C.1'], 0],
+            ['Biogenic (1)', ['5.C.1.a'], 1],
+            ['Municipal solid waste', ['5.C.1.a.i'], 2],
+            ['Other (please specify)(2)', ['5.C.1.a.ii'], 2],
+            ['Industrial Solid Wastes', ['5.C.1.a.ii.1'], 3],
+            ['Hazardous Waste', ['5.C.1.a.ii.2'], 3],
+            ['Clinical Waste', ['5.C.1.a.ii.3'], 3],
+            ['Sewage Sludge', ['5.C.1.a.ii.4'], 3],
+            ['Other (please specify)', ['5.C.1.a.ii.5'], 3],
+            ['Animal cremations', ['5.C.1.a.ii.5.a'], 4],  # DKE, DNK, DNM
+            ['Human cremations', ['5.C.1.a.ii.5.b'], 4],  # DKE, DNK, DNM
+            ['Cremation', ['5.C.1.a.ii.5.c'], 4],  # CHE, NOR, FRA, FRK
+            ['cremation', ['5.C.1.a.ii.5.c'], 4],  # DEU
+            ['Industrial waste', ['5.C.1.a.ii.5.d'], 4],  # NOR
+            ['Biogenic other waste', ['5.C.1.a.ii.5.e'], 4],  # EST
+            ['Biogenic waste other than Municipal Solid Waste', ['5.C.1.a.ii.5.e'], 4],  # ROU
+            ['Sludge', ['5.C.1.a.ii.5.f'], 4],  # JPN
+            ['Non-fossile liquid waste', ['5.C.1.a.ii.5.g'], 4],  # JPN
+            ['Non-biogenic', ['5.C.1.b'], 1],
+            ['Municipal solid waste', ['5.C.1.b.i'], 2],
+            ['Other (please specify)(3)', ['5.C.1.b.ii'], 2],
+            ['Industrial Solid Wastes', ['5.C.1.b.ii.1'], 3],
+            ['Hazardous Waste', ['5.C.1.b.ii.2'], 3],
+            ['Clinical Waste', ['5.C.1.b.ii.3'], 3],
+            ['Sewage Sludge', ['5.C.1.b.ii.4'], 3],
+            ['Fossil liquid waste', ['5.C.1.b.ii.5'], 3],
+            ['Other (please specify)', ['5.C.1.b.ii.6'], 3],
+            ['Quarantine and other waste', ['5.C.1.b.ii.6.a'], 4],  # NZL
+            ['Industrial waste', ['5.C.1.b.ii.6.b'], 4],  # CHE
+            ['Chemical waste', ['5.C.1.b.ii.6.c'], 4],  # GBR, GBK
+            ['Flaring in the chemical industry', ['5.C.1.a.ii.6.d'], 4],  # BEL
+            ['Sludge', ['5.C.1.a.ii.6.e'], 4],  # JPN
+            ['Solvents', ['5.C.1.a.ii.6.f'], 4],  # GRC, AUS
+            ['2. Open burning of waste', ['5.C.2'], 0],
+            ['Biogenic (1)', ['5.C.2.a'], 1],
+            ['Municipal solid waste', ['5.C.2.a.i'], 2],
+            ['Other (please specify)', ['5.C.2.a.ii'], 2],
+            ['agricultural waste', ['5.C.2.a.ii.1'], 3],  # ITA
+            ['Agricultural residues', ['5.C.2.a.ii.1'], 3],  # ESP
+            ['Natural residues', ['5.C.2.a.ii.2'], 3],  # CHE
+            ['Wood waste', ['5.C.2.a.ii.3'], 3],  # GBR, GBK
+            ['Bonfires etc.', ['5.C.2.a.ii.4'], 3],  # DEU
+            ['Bonfires', ['5.C.2.a.ii.4'], 3],  # NLD, ISL
+            ['Other', ['5.C.2.a.ii.5'], 3],  # EST
+            ['Other waste', ['5.C.2.a.ii.5'], 3],  # CZE
+            ['Industrial Solid Waste', ['5.C.2.a.ii.6'], 3],  # JPN
+            ['Non-biogenic', ['5.C.2.b'], 1],
+            ['Municipal solid waste', ['5.C.2.b.i'], 2],
+            ['Other (please specify)', ['5.C.2.b.ii'], 2],
+            ['Rural waste', ['5.C.2.b.ii.1'], 3],  # NZL
+            ['Accidental fires (vehicles)', ['5.C.2.b.ii.2'], 3],  # GBR, GBK
+            ['Accidental fires (buildings)', ['5.C.2.b.ii.3'], 3],  # GBR, GBK
+            ['Bonfires', ['5.C.2.b.ii.4'], 3],  # ISL
+            ['Other', ['5.C.2.b.ii.5'], 3],  # EST
+            ['Other waste', ['5.C.2.b.ii.5'], 3],  # CZE
+            ['Industrial Solid Waste', ['5.C.2.b.ii.6'], 3],  # JPN
+        ],
+        "entity_mapping": {
+            'EMISSIONS Amount of wastes (incinerated/open burned) CH4': 'CH4',
+            'EMISSIONS Amount of wastes (incinerated/open burned) CO2': 'CO2',
+            'EMISSIONS Amount of wastes (incinerated/open burned) N2O': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table5.D": {  # Waste incineration and open burning
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 13,
+            "header": ['group', 'entity', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND RELATED INFORMATION Total organic product',
+                'ACTIVITY DATA AND RELATED INFORMATION Sludge removed(1)',
+                'ACTIVITY DATA AND RELATED INFORMATION Sludge removed(1) N in effluent',
+                'IMPLIED EMISSION FACTOR CH4(2) N in effluent',
+                'IMPLIED EMISSION FACTOR N2O(3) N in effluent',
+                'EMISSIONS CH4 Amount of CH4 flared',
+                'EMISSIONS CH4 Amount of CH4 for Energy Recovery(5)',
+            ],
+            "stop_cats": [".", "", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Domestic wastewater', ['5.D.1']],
+            ['2. Industrial wastewater', ['5.D.2']],
+            ['3. Other (please specify)', ['5.D.3']],
+            ['Other', ['5.D.3.a']],  # EST
+            ['Septic tanks', ['5.D.3.b']],  # NLD
+            ['Wastewater Effluent', ['5.D.3.c']],  # NLD
+            ['Fish farming', ['5.D.3.d']],  # FIN
+            ['Uncategorized wastewater', ['5.D.3.a']],  # CZE
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 Emissions(4)': 'CH4',
+            'EMISSIONS N2O(3) Amount of CH4 for Energy Recovery(5)': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+}

+ 2522 - 0
code/UNFCCC_CRF_reader/crf_specifications/CRF2022_specification.py

@@ -0,0 +1,2522 @@
+""" CRF2022 specification.
+Currently not all tables are included. Extend if you need all country
+specific items in categories 2, 3.H-G, 4
+
+tables included:
+* Energy
+    'Table1s1', Table1s2',
+    'Table1.A(a)s1', 'Table1.A(a)s2', 'Table1.A(a)s3', 'Table1.A(a)s4',
+    'Table1.B.1', 'Table1.B.2', 'Table1.C', 'Table1.D',
+* Industrial processes
+    'Table2(I)s1', 'Table2(I)s2',
+    'Table2(II)',
+* Agriculture
+    'Table3s1', 'Table3s2',
+    'Table3.C', 'Table3.D', 'Table3.E',
+* LULUCF
+    'Table4',
+* Waste
+    'Table5', 'Table5.A', 'Table5.B', 'Table5.C', 'Table5.D'
+
+missing tables are:
+* Energy
+    'Table1.D'
+* Industrial processes
+    'Table2(I).A-Hs1', 'Table2(I).A-Hs2',
+    'Table2(II)B-Hs1', 'Table2(II)B-Hs2',
+* Agriculture
+    'Table3.As1', 'Table3.As2' (no additional emissions data)
+    'Table3.F', 'Table3.G-I',
+* LULUCF
+    All tables except Table4
+* Waste
+    All tables read
+
+TODO:
+* Add missing tables
+* Add activity data
+
+"""
+
+import numpy as np
+from .util import unit_info
+
+CRF2022 = {
+    "Table1s1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 26,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['Total Energy', ['1']],
+            ['A. Fuel combustion activities (sectoral approach)', ['1.A']],
+            ['1. Energy industries', ['1.A.1']],
+            ['a. Public electricity and heat production', ['1.A.1.a']],
+            ['b. Petroleum refining', ['1.A.1.b']],
+            ['c. Manufacture of solid fuels and other energy industries', ['1.A.1.c']],
+            ['2. Manufacturing industries and construction', ['1.A.2']],
+            ['a. Iron and steel', ['1.A.2.a']],
+            ['b. Non-ferrous metals', ['1.A.2.b']],
+            ['c. Chemicals', ['1.A.2.c']],
+            ['d. Pulp, paper and print', ['1.A.2.d']],
+            ['e. Food processing, beverages and tobacco', ['1.A.2.e']],
+            ['f. Non-metallic minerals', ['1.A.2.f']],
+            ['g. Other (please specify)', ['1.A.2.g']],
+            ['3. Transport', ['1.A.3']],
+            ['a. Domestic aviation', ['1.A.3.a']],
+            ['b. Road transportation', ['1.A.3.b']],
+            ['c. Railways', ['1.A.3.c']],
+            ['d. Domestic navigation', ['1.A.3.d']],
+            ['e. Other transportation', ['1.A.3.e']],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1s2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 36,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['4. Other sectors', ['1.A.4']],
+            ['a. Commercial/institutional', ['1.A.4.a']],
+            ['b. Residential', ['1.A.4.b']],
+            ['c. Agriculture/forestry/fishing', ['1.A.4.c']],
+            ['5. Other (as specified in table 1.A(a) sheet 4)', ['1.A.5']],
+            ['a. Stationary', ['1.A.5.a']],
+            ['b. Mobile', ['1.A.5.b']],
+            ['B. Fugitive emissions from fuels', ['1.B']],
+            ['1. Solid fuels', ['1.B.1']],
+            ['a. Coal mining and handling', ['1.B.1.a']],
+            ['b. Solid fuel transformation', ['1.B.1.b']],
+            ['c. Other (as specified in table 1.B.1)', ['1.B.1.c']],
+            ['2. Oil and natural gas and other emissions from energy production', ['1.B.2']],
+            ['a. Oil', ['1.B.2.a']],
+            ['b. Natural gas', ['1.B.2.b']],
+            ['c. Venting and flaring', ['1.B.2.c']],
+            ['d. Other (as specified in table 1.B.2)', ['1.B.2.d']],
+            ['C. CO2 Transport and storage', ['1.C']],
+            ['1. Transport of CO2', ['1.C.1']],
+            ['2. Injection and storage', ['1.C.2']],
+            ['3. Other', ['1.C.3']],
+            ['Memo items: (1)', ['\IGNORE']],
+            ['International bunkers', ['M.Memo.Int']],
+            ['Aviation', ['M.Memo.Int.Avi']],
+            ['Navigation', ['M.Memo.Int.Mar']],
+            ['Multilateral operations', ['M.Memo.Mult']],
+            ['CO2 emissions from biomass', ['M.Memo.Bio']],
+            ['CO2 captured', ['M.Memo.CO2Cap']],
+            ['For domestic storage', ['M.Memo.CO2Cap.Dom']],
+            ['For storage in other countries', ['M.Memo.CO2Cap.Exp']],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.A(a)s1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 6,
+            "lastrow": 104,  # template, countries report less
+            # check the resulting data as the templates have nan rows
+            # which would stop the reading process (actual reported
+            # data does not seem to have the nan rows)
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured'
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A. Fuel combustion', ['1.A', 'Total'], 0],
+            ['Liquid fuels', ['1.A', 'Liquid'], 1],
+            ['Solid fuels', ['1.A', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A', 'OtherFF'], 1],
+            ['Peat(5)', ['1.A', 'Peat'], 1],
+            ['Biomass(6)', ['1.A', 'Biomass'], 1],
+            # 1.A.1. Energy industries
+            ['1.A.1. Energy industries', ['1.A.1', 'Total'], 1],
+            ['Liquid fuels', ['1.A.1', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.1', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.1', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.1', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.1', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.1', 'Biomass'], 2],
+            # a. Public electricity and heat production
+            ['a. Public electricity and heat production(7)', ['1.A.1.a', 'Total'], 2],
+            ['Liquid fuels', ['1.A.1.a', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.1.a', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.1.a', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.1.a', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.1.a', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.1.a', 'Biomass'], 3],
+            # 1.A.1.a.i Electricity Generation
+            ['1.A.1.a.i Electricity Generation', ['1.A.1.a.i', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.a.i', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.a.i', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.a.i', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.i', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.a.i', 'Peat'], 4],
+            ['Biomass', ['1.A.1.a.i', 'Biomass'], 4],
+            # 1.A.1.a.ii Combined heat and power generation
+            ['1.A.1.a.ii Combined heat and power generation', ['1.A.1.a.ii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.a.ii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.a.ii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.a.ii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.ii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.a.ii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.a.ii', 'Biomass'], 4],
+            # 1.A.1.a.iii heat plants
+            ['1.A.1.a.iii Heat plants', ['1.A.1.a.iii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.a.iii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.a.iii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.a.iii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.a.iii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.a.iii', 'Biomass'], 4],
+            # 1.A.1.a.iv Other (please specify)
+            ['1.A.1.a.iv Other (please specify)', ['1.A.1.a.iv', 'Total'], 3],
+            # AUT
+            ['Total Public Electricity and Heat Production', ['1.A.1.a.iv.4', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.a.iv.4', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.a.iv.4', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.a.iv.4', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.4', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.a.iv.4', 'Peat'], 5],
+            ['Biomass', ['1.A.1.a.iv.4', 'Biomass'], 5],
+            # DEU
+            ['1.A.1.a Public Electricity and Heat Production', ['1.A.1.a.iv.4', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.a.iv.4', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.a.iv.4', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.a.iv.4', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.4', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.a.iv.4', 'Peat'], 5],
+            ['Biomass', ['1.A.1.a.iv.4', 'Biomass'], 5],
+            # ESP
+            ['Other', ['1.A.1.a.iv.3', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.a.iv.3', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.a.iv.3', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.a.iv.3', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.3', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.a.iv.3', 'Peat'], 5],
+            ['Biomass', ['1.A.1.a.iv.3', 'Biomass'], 5],
+            # SVK
+            ['Methane Cogeneration (Mining)', ['1.A.1.a.iv.1', 'Total'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.1', 'OtherFF'], 5],
+            ['Municipal Solid Waste Incineration (Energy use)', ['1.A.1.a.iv.2', 'Total'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.2', 'OtherFF'], 5],
+            ['Biomass', ['1.A.1.a.iv.2', 'Biomass'], 5],
+            # CHE
+            ['Municipal and special waste incineration plants', ['1.A.1.a.iv.2', 'Total'], 4],
+            ['Other Fossil Fuels', ['1.A.1.a.iv.2', 'OtherFF'], 5],
+            ['Biomass', ['1.A.1.a.iv.2', 'Biomass'], 5],
+            # b. Petroleum refining
+            ['b. Petroleum refining', ['1.A.1.b', 'Total'], 2],
+            ['Liquid fuels', ['1.A.1.b', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.1.b', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.1.b', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.1.b', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.1.b', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.1.b', 'Biomass'], 3],
+            # c. Manufacture of solid fuels and other energy industries
+            ['c. Manufacture of solid fuels and other energy industries(8)', ['1.A.1.c', 'Total'], 2],
+            ['Liquid fuels', ['1.A.1.c', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.1.c', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.1.c', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.1.c', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.1.c', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.1.c', 'Biomass'], 3],
+            # 1.A.1.c.i Manufacture of solid fuels
+            ['1.A.1.c.i Manufacture of solid fuels', ['1.A.1.c.i', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.c.i', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.c.i', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.c.i', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.c.i', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.c.i', 'Peat'], 4],
+            ['Biomass', ['1.A.1.c.i', 'Biomass'], 4],
+            # 1.A.1.c.ii Oil and gas extraction
+            ['1.A.1.c.ii Oil and gas extraction', ['1.A.1.c.ii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.c.ii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.c.ii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.c.ii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.c.ii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.c.ii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.c.ii', 'Biomass'], 4],
+            # 1.A.1.c.iii Other energy industries
+            ['1.A.1.c.iii Other energy industries', ['1.A.1.c.iii', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.1.c.iii', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.1.c.iii', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.1.c.iii', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.1.c.iii', 'OtherFF'], 4],
+            ['Peat', ['1.A.1.c.iii', 'Peat'], 4],
+            ['Biomass', ['1.A.1.c.iii', 'Biomass'], 4],
+            # 1.A.1.c.iv Other (please specify)
+            ['1.A.1.c.iv Other (please specify)', ['1.A.1.c.iv', 'Total'], 3],
+            # DEU
+            ['1.A.1.c Manufacture of Solid Fuels and Other Energy Industries', ['1.A.1.c.iv.2', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.c.iv.2', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.c.iv.2', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.c.iv.2', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.c.iv.2', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.c.iv.2', 'Peat'], 5],
+            ['Biomass', ['1.A.1.c.iv.2', 'Biomass'], 5],
+            # ESP
+            ['Other', ['1.A.1.c.iv.3', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.c.iv.3', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.c.iv.3', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.c.iv.3', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.c.iv.3', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.c.iv.3', 'Peat'], 5],
+            ['Biomass', ['1.A.1.c.iv.3', 'Biomass'], 5],
+            # CYP
+            ['Charcoal Production', ['1.A.1.c.iv.1', 'Total'], 4],
+            ['Liquid Fuels', ['1.A.1.c.iv.1', 'Liquid'], 5],
+            ['Solid Fuels', ['1.A.1.c.iv.1', 'Solid'], 5],
+            ['Gaseous Fuels', ['1.A.1.c.iv.1', 'Gaseous'], 5],
+            ['Other Fossil Fuels', ['1.A.1.c.iv.1', 'OtherFF'], 5],
+            ['Peat', ['1.A.1.c.iv.1', 'Peat'], 5],
+            ['Biomass', ['1.A.1.c.iv.1', 'Biomass'], 5],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.A(a)s2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 114,  # template, countries report less
+            # check the resulting data as the templates have nan rows
+            # which would stop the reading process (actual reported
+            # data does not seem to have the nan rows)
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A.2 Manufacturing industries and construction', ['1.A.2', 'Total'], 0],
+            ['Liquid fuels', ['1.A.2', 'Liquid'], 1],
+            ['Solid fuels', ['1.A.2', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A.2', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A.2', 'OtherFF'], 1],
+            ['Peat(5)', ['1.A.2', 'Peat'], 1],
+            ['Biomass(6)', ['1.A.2', 'Biomass'], 1],
+            # a. Iron and Steel
+            ['a. Iron and steel', ['1.A.2.a', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.a', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.a', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.a', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.a', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.a', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.a', 'Biomass'], 2],
+            # b. non-ferrous metals
+            ['b. Non-ferrous metals', ['1.A.2.b', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.b', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.b', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.b', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.b', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.b', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.b', 'Biomass'], 2],
+            # c. Chemicals
+            ['c. Chemicals', ['1.A.2.c', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.c', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.c', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.c', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.c', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.c', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.c', 'Biomass'], 2],
+            # d. Pulp paper print
+            ['d. Pulp, paper and print', ['1.A.2.d', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.d', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.d', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.d', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.d', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.d', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.d', 'Biomass'], 2],
+            # e. Food processing, beverages and tobacco
+            ['e. Food processing, beverages and tobacco', ['1.A.2.e', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.e', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.e', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.e', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.e', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.e', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.e', 'Biomass'], 2],
+            # f. non-metallic minerals
+            ['f. Non-metallic minerals', ['1.A.2.f', 'Total'], 1],
+            ['Liquid fuels', ['1.A.2.f', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.2.f', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.2.f', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.2.f', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.2.f', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.2.f', 'Biomass'], 2],
+            # g. other
+            ['g. Other (please specify)(9)', ['1.A.2.g', 'Total'], 1],
+            #1.A.2.g.i Manufacturing of machinery
+            ['1.A.2.g.i Manufacturing of machinery', ['1.A.2.g.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.i', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.i', 'Biomass'], 3],
+            # 1.A.2.g.ii Manufacturing of transport equipment
+            ['1.A.2.g.ii Manufacturing of transport equipment', ['1.A.2.g.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.ii', 'Biomass'], 3],
+            # 1.A.2.g.iii Mining (excluding fuels) and quarrying
+            ['1.A.2.g.iii Mining (excluding fuels) and quarrying', ['1.A.2.g.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.iii', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.iii', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.iii', 'Biomass'], 3],
+            # 1.A.2.g.iv Wood and wood products
+            ['1.A.2.g.iv Wood and wood products', ['1.A.2.g.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.iv', 'Biomass'], 3],
+            # 1.A.2.g.v Construction
+            ['1.A.2.g.v Construction', ['1.A.2.g.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.v', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.v', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.v', 'Biomass'], 3],
+            # 1.A.2.g.vi Textile and leather
+            ['1.A.2.g.vi Textile and leather', ['1.A.2.g.vi', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.vi', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.2.g.vi', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.vi', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.vi', 'OtherFF'], 3],
+            ['Peat', ['1.A.2.g.vi', 'Peat'], 3],
+            ['Biomass', ['1.A.2.g.vi', 'Biomass'], 3],
+            # 1.A.2.g.vii Off-road vehicles and other machinery
+            ['1.A.2.g.vii Off-road vehicles and other machinery', ['1.A.2.g.vii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.2.g.vii', 'Liquid'], 3],
+            ['Gaseous Fuels', ['1.A.2.g.vii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.2.g.vii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.2.g.vii', 'Biomass'], 3],
+            # 1.A.2.g.viii Other (please specify)
+            ['1.A.2.g.viii Other (please specify)', ['1.A.2.g.viii', 'Total'], 2],
+            # DKE
+            ['Construction', ['\IGNORE', '\IGNORE'], 3],  # (empty)
+            ['Mining', ['\IGNORE', '\IGNORE'], 3],  # (empty)
+            # DNK, DKE, USA, CZE
+            ['Other non-specified', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            #SVK, CYP
+            ['Non-specified Industry', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            #BEL
+            ['Other non specified', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            #PRT, LTU
+            ['Non-specified industry', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            # MLT
+            ['Undefined Industry', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            # TUR
+            ['Other unspecified', ['1.A.2.g.viii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.1', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.1', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.1', 'Biomass'], 4],
+            # DKE
+            ['Textile', ['\IGNORE', '\IGNORE'], 3],  # (empty)
+            # DNK, DNM, FIN, DKE
+            ['Other manufacturing industries', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # CAN
+            ['Other Manufacturing', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # AUT, LUX
+            ['Other Manufacturing Industries', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # NOR
+            ['Other manufacturing', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # AUS
+            ['All Other Manufacturing', ['1.A.2.g.viii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.3', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.3', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.3', 'Biomass'], 4],
+            # NLD
+            ['Other Industrial Sectors', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # GBR, GBK
+            ['Other industry (not specified above)', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # UKR
+            ['Oter Industries', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # RUS
+            ['Other industries', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # RUS
+            ['Non-CO2 emissions from BFG combustion', ['1.A.2.g.viii.5', 'Total'], 3],
+            ['Solid Fuels', ['1.A.2.g.viii.5', 'Solid'], 4],
+            # BLR, DNK, ESP, LVA, NZL, POL, ROU, SVN,
+            ['Other', ['1.A.2.g.viii.10', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.10', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.10', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.10', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.10', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.10', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.10', 'Biomass'], 4],
+            # BLR
+            ['Manufacture and construction Aggregated', ['1.A.2.g.viii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.2', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.2', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.2', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.2', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.2', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.2', 'Biomass'], 4],
+            # HRV
+            ['Other Industry', ['1.A.2.g.viii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.4', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.4', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.4', 'Biomass'], 4],
+            # HRV
+            ['1A2 Total for 1990 to 2000', ['1.A.2.g.viii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.2', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.2', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.2', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.2', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.2', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.2', 'Biomass'], 4],
+            # MLT
+            ['All Industry', ['1.A.2.g.viii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.2', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.2', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.2', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.2', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.2', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.2', 'Biomass'], 4],
+            # PRT
+            ['Rubber', ['1.A.2.g.viii.6', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.6', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.6', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.6', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.6', 'OtherFF'], 4],
+            ['Biomass', ['1.A.2.g.viii.6', 'Biomass'], 4],
+            # SWE
+            ['All stationary combustin within CRF 1.A.2.g', ['1.A.2.g.viii.7', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.7', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.7', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.7', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.7', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.7', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.7', 'Biomass'], 4],
+            # IRL
+            ['Other stationary combustion', ['1.A.2.g.viii.8', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.8', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.8', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.8', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.8', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.8', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.8', 'Biomass'], 4],
+            # HUN
+            ['Other Stationary Combustion', ['1.A.2.g.viii.8', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.8', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.8', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.8', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.8', 'OtherFF'], 4],
+            ['Peat', ['1.A.2.g.viii.8', 'Peat'], 4],
+            ['Biomass', ['1.A.2.g.viii.8', 'Biomass'], 4],
+            # CHE
+            ['Other Boilers and Engines Industry', ['1.A.2.g.viii.9', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.2.g.viii.9', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.2.g.viii.9', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.2.g.viii.9', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.2.g.viii.9', 'OtherFF'], 4],
+            ['Biomass', ['1.A.2.g.viii.9', 'Biomass'], 4],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.A(a)s3": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 115,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+            ],
+            "stop_cats": ["Note: All footnotes for this table are given at the end of the table on sheet 4.", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A.3 Transport', ['1.A.3', 'Total'], 0],
+            ['Liquid fuels', ['1.A.3', 'Liquid'], 1],
+            ['Solid fuels', ['1.A.3', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A.3', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A.3', 'OtherFF'], 1],
+            ['Biomass(6)', ['1.A.3', 'Biomass'], 1],
+            # a. Domestic Aviation
+            ['a. Domestic aviation(10)', ['1.A.3.a', 'Total'], 1],
+            ['Aviation gasoline', ['1.A.3.a', 'AvGasoline'], 2],
+            ['Jet kerosene', ['1.A.3.a', 'JetKerosene'], 2],
+            ['Biomass', ['1.A.3.a', 'Biomass'], 2],
+            # b. road Transportation
+            ['b. Road transportation(11)', ['1.A.3.b', 'Total'], 1],
+            ['Gasoline', ['1.A.3.b', 'Gasoline'], 2],
+            ['Diesel oil', ['1.A.3.b', 'DieselOil'], 2],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b', 'LPG'], 2],
+            ['Other liquid fuels (please specify)', ['1.A.3.b', 'OtherLiquid'], 2],
+            ['Gaseous fuels', ['1.A.3.b', 'Gaseous'], 2],
+            ['Biomass(6)', ['1.A.3.b', 'Biomass'], 2],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b', 'OtherFF'], 2],
+            # i. Cars
+            ['i. Cars', ['1.A.3.b.i', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.i', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.i', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.i', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.3.b.i', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.i', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.i', 'Lubricants'], 4],  # UKR, JPN
+            ['Lubricant oil', ['1.A.3.b.i', 'Lubricants'], 4],  # PRT
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.b.i', 'OLBiodieselFC'], 4],  # CAN
+            ['Fossil part of biodiesel', ['1.A.3.b.i', 'OLBiodieselFC'], 4],  # LTU
+            ['Other', ['1.A.3.b.i', 'OLOther'], 4],  # UKR, MLT
+            ['Other Liquid Fuels', ['1.A.3.b.i', 'OLOther'], 4],  # CYP
+            ['Other motor fuels', ['1.A.3.b.i', 'OMotorFuels'], 4],  # RUS
+            ['Lubricants in 2-stroke engines', ['1.A.3.b.i', 'Lubricants'], 4],  # HUN
+            ['LNG', ['1.A.3.b.i', 'LNG'], 4],  ## USA
+            ['Gaseous fuels', ['1.A.3.b.i', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.i', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.i', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.i', 'OFFOther'], 4],  # CYP, POL
+            ['Biodiesel (fossil component)', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # LUX
+            ['Biodiesel fossil fraction', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # NOR
+            ['Biodiesel (fossil fraction)', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # NZL
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # CZE
+            ['fossil part of biodiesel', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # DKE, DNK, HRV
+            ['Fossil part of biodiesel', ['1.A.3.b.i', 'OFFBiodieselFC'], 4],  # DNM, BEL, HUN, LVA, ESP
+            ['Fossil part of biogasoline', ['1.A.3.b.i', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Natural Gas', ['1.A.3.b.i.', 'OFFNaturalGas'], 4],  # USA
+            ['Fossil part of biofuel', ['1.A.3.b.i', 'OFFBiofuelFC'], 4],  # IRL
+            ['Other', ['1.A.3.b.i', 'OFFOther'], 4],  # MLT
+            # ii. Light duty trucks
+            ['ii. Light duty trucks', ['1.A.3.b.ii', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.ii', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.ii', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.ii', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.3.b.ii', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.ii', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.ii', 'Lubricants'], 4],  # UKR, JPN
+            ['Lubricant Oil', ['1.A.3.b.ii', 'Lubricants'], 4],  # PRT
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.b.ii', 'OLBiodieselFC'], 4],  # CAN
+            ['Other', ['1.A.3.b.ii', 'OLOther'], 4],  # UKR (and probably others)
+            ['Other Liquid Fuels', ['1.A.3.b.ii', 'OLOther'], 4],  # CYP
+            ['Other motor fuels', ['1.A.3.b.ii', 'OMotorFuels'], 4],  # RUS
+            ['LNG', ['1.A.3.b.ii', 'LNG'], 4],  ## USA
+            ['Gaseous fuels', ['1.A.3.b.ii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.ii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.ii', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.ii', 'OFFOther'], 4],  # CYP, POL
+            ['Biodiesel (fossil component)', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # LUX
+            ['Biodiesel fossil fraction', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # NOR
+            ['Biodiesel (fossil fraction)', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # NZL
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # CZE
+            ['fossil part of biodiesel', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # DKE, DNK, HRV
+            ['Fossil part of biodiesel', ['1.A.3.b.ii', 'OFFBiodieselFC'], 4],  # DNM, BEL, HUN, LVA, ESP
+            ['Fossil part of biogasoline', ['1.A.3.b.ii', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Fossil part of biofuel', ['1.A.3.b.ii', 'OFFBiofuelFC'], 4],  # IRL
+            # iii. Heavy duty trucks and buses
+            ['iii. Heavy duty trucks and buses', ['1.A.3.b.iii', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.iii', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.iii', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.iii', 'LPG'], 3],
+            ['Other liquid fFuels (please specify)', ['1.A.3.b.iii', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.iii', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.iii', 'Lubricants'], 4],  # UKR, JPN
+            ['Lubricant Oil', ['1.A.3.b.iii', 'Lubricants'], 4],  # PRT
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.b.iii', 'OLBiodieselFC'], 4],  # CAN
+            ['Other', ['1.A.3.b.iii', 'OLOther'], 4],  # UKR (and probably others)
+            ['Other Liquid Fuels', ['1.A.3.b.iii', 'OLOther'], 4],  # CYP
+            ['Other motor fuels', ['1.A.3.b.iii', 'OMotorFuels'], 4],  # RUS
+            ['LNG', ['1.A.3.b.iii', 'LNG'], 4],  # USA
+            ['GTL', ['1.A.3.b.iii', 'GTL'], 4],  # MCO, new in 2022
+            ['Gaseous fuels', ['1.A.3.b.iii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.iii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.iii', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.iii', 'OFFOther'], 4],  # CYP, POL
+            ['Biodiesel (fossil component)', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # LUX
+            ['Biodiesel fossil fraction', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # NOR
+            ['Biodiesel (fossil fraction)', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # NZL
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # CZE
+            ['fossil part of biodiesel', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # DKE, DNK, HRV
+            ['Fossil part of biodiesel', ['1.A.3.b.iii', 'OFFBiodieselFC'], 4],  # DNM, BEL, HUN. LVA, ESP
+            ['Fossil part of biogasoline', ['1.A.3.b.iii', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Fossil part of biofuel', ['1.A.3.b.iii', 'OFFBiofuelFC'], 4],  # IRL
+            # iv. Motorcycles
+            ['iv. Motorcycles', ['1.A.3.b.iv', 'Total'], 2],
+            ['Gasoline', ['1.A.3.b.iv', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.3.b.iv', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.3.b.iv', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.3.b.iv', 'OtherLiquid'], 3],
+            ['Kerosene', ['1.A.3.b.iv', 'Kerosene'], 4],  # UKR (and probably others)
+            ['Lubricants', ['1.A.3.b.iv', 'Lubricants'], 4],  # UKR, JPN, HRV
+            ['Lubricant Oil', ['1.A.3.b.iv', 'Lubricants'], 4],  # PRT
+            ['Other', ['1.A.3.b.iv', 'OLOther'], 4],  # UKR (and probably others)
+            ['Other Liquid Fuels', ['1.A.3.b.iv', 'OLOther'], 4],  # CYP
+            ['Lube', ['1.A.3.b.iv', 'Lubricants'], 4],  # MCO
+            ['Lubricants in 2-stroke engines', ['1.A.3.b.iv', 'Lubricants'], 4],  # HUN
+            ['Lubricants (two-stroke engines)', ['1.A.3.b.iv', 'Lubricants'], 4],  # ESP
+            ['lubricants', ['1.A.3.b.iv', 'Lubricants'], 4],  # SVN
+            ['Gaseous fuels', ['1.A.3.b.iv', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.3.b.iv', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.b.iv', 'OtherFF'], 3],
+            ['Other Fossil Fuels', ['1.A.3.b.iv', 'OFFOther'], 4],  # CYP
+            ['Fossil part of biodiesel or biogasoline', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # PRT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # SWE
+            ['fossil part of biofuels', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # CZE
+            ['Fossil part of biodiesel', ['1.A.3.b.iv', 'OFFBiodieselFC'], 4],  # BEL
+            ['Fossil part of biogasoline', ['1.A.3.b.iv', 'OFFBiogasolineFC'], 4],  # BEL
+            ['Fossil part of biodiese', ['1.A.3.b.iv', 'OFFBiodieselFC'], 4],  # LVA
+            ['Fossil part of biofuel', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # IRL
+            ['fossil part of biodiesel', ['1.A.3.b.iv', 'OFFBiofuelFC'], 4],  # HRV
+            # v. Other
+            ['v. Other (please specify)', ['1.A.3.b.v', 'Total'], 2],
+            # TUR
+            ['Road total', ['1.A.3.b.v.1', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.1', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.1', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.1', 'LPG'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.1', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.1', 'Biomass'], 4],
+            # CYP
+            ['Buses', ['1.A.3.b.v.2', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.2', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.2', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.2', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.2', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.2', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.2', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.2', 'OtherFF'], 4],
+            # GBK, GBR
+            ['All vehicles - biofuel use', ['1.A.3.b.v.3', 'Total'], 3],
+            ['Biomass', ['1.A.3.b.v.3', 'Biomass'], 4],
+            ['All vehicles - LPG use', ['1.A.3.b.v.4', 'Total'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.4', 'LPG'], 4],
+            ['All vehicles - biofuel use (fossil component)', ['1.A.3.b.v.5', 'Total'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.5', 'OtherFF'], 4],
+            # CAN
+            ['Propane and Natural Gas Vehicles', ['1.A.3.b.v.6', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.6', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.6', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.6', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.6', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.6', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.6', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.6', 'OtherFF'], 4],
+            # BEL
+            ['Lubricant Two-Stroke Engines', ['1.A.3.b.v.7', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.7', 'OtherLiquid'], 4],
+            # ROU
+            ['Gaseous Fuels', ['1.A.3.b.v.8', 'Total'], 3],
+            ['Gaseous Fuels', ['1.A.3.b.v.8', 'Gaseous'], 4],
+            ['Other Liquid Fuels', ['1.A.3.b.v.9', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.9', 'OtherLiquid'], 4],
+            ['Other Kerosene', ['1.A.3.b.v.9', 'Kerosene'], 5],
+            ['Heating and Other Gasoil', ['1.A.3.b.v.9', 'HeatingGasoil'], 5],
+            ['Biomass', ['1.A.3.b.v.10', 'Total'], 3],
+            ['Biomass', ['1.A.3.b.v.10', 'Biomass'], 4],
+            # DEU
+            ['CO2 from lubricant co-incineration in 2-stroke road vehicles', ['1.A.3.b.v.7', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.7', 'OtherLiquid'], 4],
+            ['lubricant used in 2-stroke mix', ['1.A.3.b.v.7', 'Lubricants'], 5],
+            # USA
+            ['Evaporative Emissions', ['1.A.3.b.v.11', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.11', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.11', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.11', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.11', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.11', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.11', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.11', 'OtherFF'], 4],
+            # SVK
+            ['Urea-based catalysts', ['1.A.3.b.v.12', 'Total'], 3],
+            ['Diesel Oil', ['1.A.3.b.v.12', 'DieselOil'], 4],
+            # ESP
+            ['Other non-specified', ['1.A.3.b.v.13', 'Total'], 3],
+            ['Gasoline', ['1.A.3.b.v.13', 'Gasoline'], 4],
+            ['Diesel Oil', ['1.A.3.b.v.13', 'DieselOil'], 4],
+            ['Liquefied Petroleum Gases (LPG)', ['1.A.3.b.v.13', 'LPG'], 4],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.13', 'OtherLiquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.b.v.13', 'Gaseous'], 4],
+            ['Biomass', ['1.A.3.b.v.13', 'Biomass'], 4],
+            ['Other Fossil Fuels (please specify)', ['1.A.3.b.v.13', 'OtherFF'], 4],
+            # BGR
+            ['Urea', ['1.A.3.b.v.12', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.12', 'OtherLiquid'], 4],
+            ['Lubricants', ['1.A.3.b.v.7', 'Total'], 3],
+            ['Other Liquid Fuels (please specify)', ['1.A.3.b.v.7', 'OtherLiquid'], 4],
+            # c. Railways
+            ['c. Railways', ['1.A.3.c', 'Total'], 1],
+            ['Liquid fuels', ['1.A.3.c', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.3.c', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.3.c', 'Gaseous'], 2],
+            ['Biomass(6)', ['1.A.3.c', 'Biomass'], 2],
+            ['Other fossil fuels (please specify)', ['1.A.3.c', 'OtherFF'], 2],
+            ['Biodiesel (fossil component)', ['1.A.3.c', 'OFFBiodieselFC'], 3],  # LUX
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.c', 'OFFBiodieselFC'], 3],  # SWE
+            ['Fossil part of biodiesel', ['1.A.3.c', 'OFFBiodieselFC'], 3],  # LVA, new in 2022
+            ['Other fossil fuels', ['1.A.3.c', 'OFFOther'], 3],  # ROU, new in 2022
+            # d. Domestic navigation
+            ['d. Domestic Navigation(10)', ['1.A.3.d', 'Total'], 1],
+            ['Residual fuel oil', ['1.A.3.d', 'ResFuelOil'], 2],
+            ['Gas/diesel oil', ['1.A.3.d', 'GasDieselOil'], 2],
+            ['Gasoline', ['1.A.3.d', 'Gasoline'], 2],
+            ['Other liquid fuels (please specify)', ['1.A.3.d', 'OtherLiquid'], 2],
+            ['Lubricants', ['1.A.3.d', 'Lubricants'], 3],  # UKR, JPN
+            ['Biodiesel (5 percent fossil portion)', ['1.A.3.d', 'OLBiodieselFC'], 3],  # CAN
+            ['Light Fuel Oil', ['1.A.3.d', 'LightFuelOil'], 3],  # CAN
+            ['Kerosene and stove oil', ['1.A.3.d', 'KeroseStoveOil'], 3],  # CAN
+            ['Kerosene', ['1.A.3.d', 'Kerosene'], 3],  # DKE, DNK
+            ['Natural Gas Liquids', ['1.A.3.d', 'NGL'], 3],  # DKE, DNK
+            ['Fossil part of biodiesel', ['1.A.3.d', 'OLBiodieselFC'], 3],  # LTU
+            ['Other non-specified', ['1.A.3.d', 'OLOther'], 3],  # SWE
+            ['Other motor fuels', ['1.A.3.d', 'OMotorFuels'], 3],  # RUS
+            ['Fuel oil A', ['1.A.3.d', 'FuelOilA'], 3],  # JPN
+            ['Fuel oil B', ['1.A.3.d', 'FuelOilB'], 3],  # JPN
+            ['Fuel oil C', ['1.A.3.d', 'FuelOilC'], 3],  # JPN
+            ['Diesel Oil', ['1.A.3.d', 'OLDiesel'], 3],  # FIN
+            ['Other Liquid Fuels', ['1.A.3.d', 'OLOther'], 3],  # ROU, new in 2022
+            ['Gaseous fuels', ['1.A.3.d', 'Gaseous'], 2],
+            ['Biomass(6)', ['1.A.3.d', 'Biomass'], 2],
+            ['Other fossil fuels (please specify)(4)', ['1.A.3.d', 'OtherFF'], 2],
+            ['Liquified natural gas', ['1.A.3.d', 'LNG'], 3],  # DKE, DNK, DNM
+            ['Biodiesel (fossil component)', ['1.A.3.d', 'OFFBiodieselFC'], 3],  # LUX
+            ['Coal', ['1.A.3.d', 'OFFCoal'], 3],  # NZL, NDL
+            ['fossil part of biodiesel', ['1.A.3.d', 'OFFBiodieselFC'], 3],  # AUT
+            ['Fossil part of biodiesel and biogasoline', ['1.A.3.d', 'OFFBioGasDieselFC'], 3],  # SWE
+            ['Solid Fuels', ['1.A.3.d', 'OFFSolid'], 3],  # AUS
+            ['Other Fossil Fuels', ['1.A.3.d', 'OFFOther'], 3],  # ROU, new in 2022
+            # e. other transportation
+            # keep details also for top category as it's present
+            ['e. Other transportation (please specify)', ['1.A.3.e', 'Total'], 1],
+            ['Liquid fuels', ['1.A.3.e', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.3.e', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.3.e', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.3.e', 'OtherFF'], 2],
+            ['Biomass(6)', ['1.A.3.e', 'Biomass'], 2],
+            # i. pipeline
+            ['i. Pipeline transport', ['1.A.3.e.i', 'Total'], 2],
+            ['Liquid fuels', ['1.A.3.e.i', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.3.e.i', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.3.e.i', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.3.e.i', 'OtherFF'], 3],
+            ['Biomass(6)', ['1.A.3.e.i', 'Biomass'], 3],
+            # ii other
+            ['ii. Other (please specify)', ['1.A.3.e.ii', 'Total'], 2],
+            # UKR, SWE
+            ['Off-road vehicles and other machinery', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # GBR, GBK
+            ['Aircraft support vehicles', ['1.A.3.e.ii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.2', 'Liquid'], 4],
+            # CAN
+            ['Off Road', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # LTU
+            ['Off-road transport', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # BEL
+            ['Other non-specified', ['1.A.3.e.ii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.3', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.3', 'Biomass'], 4],
+            # AUS
+            ['Off-Road Vehicles', ['1.A.3.e.ii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.1', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.1', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.1', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.1', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.1', 'Biomass'], 4],
+            # USA
+            ['Non-Transportation Mobile', ['1.A.3.e.ii.4', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.4', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.4', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.4', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.4', 'Biomass'], 4],
+            # AUT (new in 2022)
+            ['Airport ground activities', ['1.A.3.e.ii.2', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.4', 'Liquid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.4', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.4', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.4', 'Biomass'], 4],
+            # ROU, new in 2022
+            ['Other', ['1.A.3.e.ii.3', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.3.e.ii.3', 'Liquid'], 4],
+            ['Solid Fuels', ['1.A.3.e.ii.3', 'Solid'], 4],
+            ['Gaseous Fuels', ['1.A.3.e.ii.3', 'Gaseous'], 4],
+            ['Other Fossil Fuels', ['1.A.3.e.ii.3', 'OtherFF'], 4],
+            ['Biomass', ['1.A.3.e.ii.3', 'Biomass'], 4],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.A(a)s4": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 127,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'AGGREGATE ACTIVITY DATA Consumption',
+                'IMPLIED EMISSION FACTORS CO2(1)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1.A.4 Other sectors', ['1.A.4', 'Total'], 0],
+            ['Liquid fuels', ['1.A.4', 'Liquid'], 1],
+            ['Solid fuels', ['1.A.4', 'Solid'], 1],
+            ['Gaseous fuels', ['1.A.4', 'Gaseous'], 1],
+            ['Other fossil fuels(4)', ['1.A.4', 'OtherFF'], 1],
+            ['Peat(5)', ['1.A.4', 'Peat'], 1],
+            ['Biomass(6)', ['1.A.4', 'Biomass'], 1],
+            # a. Commercial/institutional(12)
+            ['a. Commercial/institutional(12)', ['1.A.4.a', 'Total'], 1],
+            ['Liquid fuels', ['1.A.4.a', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.4.a', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.4.a', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.4.a', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.4.a', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.4.a', 'Biomass'], 2],
+            # 1.A.4.a.i Stationary combustion
+            ['1.A.4.a.i Stationary combustion', ['1.A.4.a.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.a.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.a.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.a.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.a.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.a.i', 'Peat'], 3],
+            ['Biomass', ['1.A.4.a.i', 'Biomass'], 3],
+            # 1.A.4.a.ii Off-road vehicles and other machinery
+            ['1.A.4.a.ii Off-road vehicles and other machinery', ['1.A.4.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.a.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.4.a.ii', 'Biomass'], 3],
+            # 1.A.4.a.iii Other (please specify)
+            ['1.A.4.a.iii Other (please specify)', ['1.A.4.a.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.a.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.a.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.a.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.a.iii', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.a.iii', 'Peat'], 3],
+            ['Biomass', ['1.A.4.a.iii', 'Biomass'], 3],
+            # b. Residential(13)
+            ['b. Residential(13)', ['1.A.4.b', 'Total'], 1],
+            ['Liquid fuels', ['1.A.4.b', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.4.b', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.4.b', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.4.b', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.4.b', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.4.b', 'Biomass'], 2],
+            # 1.A.4.b.i Stationary combustion
+            ['1.A.4.b.i Stationary combustion', ['1.A.4.b.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.b.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.b.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.b.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.b.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.b.i', 'Peat'], 3],
+            ['Biomass', ['1.A.4.b.i', 'Biomass'], 3],
+            # 1.A.4.b.ii Off-road vehicles and other machinery
+            ['1.A.4.b.ii Off-road vehicles and other machinery', ['1.A.4.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.4.b.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.b.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.b.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.b.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.4.b.ii', 'Biomass'], 3],
+            # 1.A.4.b.iii Other (please specify)
+            ['1.A.4.b.iii Other (please specify)', ['1.A.4.b.iii', 'Total'], 2],
+            # CYP, USA
+            ['Residential', ['1.A.4.b.iii.1', 'Total'], 3],
+            ['Liquid Fuels', ['1.A.4.b.iii.1', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.4.b.iii.1', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.4.b.iii.1', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.4.b.iii.1', 'OtherFF'], 3],
+            ['Peat', ['1.A.4.b.iii.1', 'Peat'], 3],
+            ['Biomass', ['1.A.4.b.iii.1', 'Biomass'], 3],
+            # c. Agriculture/forestry/fishing
+            ['c. Agriculture/forestry/fishing', ['1.A.4.c', 'Total'], 1],
+            ['Liquid fuels', ['1.A.4.c', 'Liquid'], 2],
+            ['Solid fuels', ['1.A.4.c', 'Solid'], 2],
+            ['Gaseous fuels', ['1.A.4.c', 'Gaseous'], 2],
+            ['Other fossil fuels(4)', ['1.A.4.c', 'OtherFF'], 2],
+            ['Peat(5)', ['1.A.4.c', 'Peat'], 2],
+            ['Biomass(6)', ['1.A.4.c', 'Biomass'], 2],
+            # i. Stationary
+            ['i. Stationary', ['1.A.4.c.i', 'Total'], 2],
+            ['Liquid fuels', ['1.A.4.c.i', 'Liquid'], 3],
+            ['Solid fuels', ['1.A.4.c.i', 'Solid'], 3],
+            ['Gaseous fuels', ['1.A.4.c.i', 'Gaseous'], 3],
+            ['Other fossil fuels(4)', ['1.A.4.c.i', 'OtherFF'], 3],
+            ['Peat(5)', ['1.A.4.c.i', 'Peat'], 3],
+            ['Biomass(6)', ['1.A.4.c.i', 'Biomass'], 3],
+            # ii. Off-road vehicles and other machinery
+            ['ii. Off-road vehicles and other machinery', ['1.A.4.c.ii', 'Total'], 2],
+            ['Gasoline', ['1.A.4.c.ii', 'Gasoline'], 3],
+            ['Diesel oil', ['1.A.4.c.ii', 'DieselOil'], 3],
+            ['Liquefied petroleum gases (LPG)', ['1.A.4.c.ii', 'LPG'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.4.c.ii', 'OtherLiquid'], 3],
+            ['Other Kerosene', ['1.A.4.c.ii', 'Kerosene'], 4],  # HRV
+            ['Lubricants', ['1.A.4.c.ii', 'Lubricants'], 4],  # HRV
+            ['Gasoil', ['1.A.4.c.ii', 'Gasoil'], 4],  # FIN
+            ['Marine gasoil', ['1.A.4.c.ii', 'MarineGasoil'], 4],  # NOR
+            ['heavy fuel oil', ['1.A.4.c.ii', 'HeavyFuelOil'], 4],  # NOR
+            ['Other motor fuels', ['1.A.4.c.ii', 'OMotorFuel'], 4],  # RUS
+            ['Biodiesel (5 percent fossil portion)', ['1.A.4.c.ii', 'OLBiodieselFC'], 4],  # CAN
+            ['Gaseous fuels', ['1.A.4.c.ii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.4.c.ii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.4.c.ii', 'OtherFF'], 3],
+            ['fossil part of biodiesel', ['1.A.4.c.ii', 'OFFBiodieselFC'], 4],
+            ['Fossil part of biodiesel and biogasoline', ['1.A.4.c.ii', 'OFFBiofuelFC'], 4],
+            ['Biodiesel (fossil component)', ['1.A.4.c.ii', 'OFFBiodieselFC'], 4], # LUX
+            ['Alkylate Gasoline', ['1.A.4.c.ii', 'OFFAlkylateGasoline'], 4], # LIE
+            # iii. Fishing
+            ['iii. Fishing', ['1.A.4.c.iii', 'Total'], 2],
+            ['Residual fuel oil', ['1.A.4.c.iii', 'ResFuelOil'], 3],
+            ['Gas/diesel oil', ['1.A.4.c.iii', 'GasDieselOil'], 3],
+            ['Gasoline', ['1.A.4.c.iii', 'Gasoline'], 3],
+            ['Other liquid fuels (please specify)', ['1.A.4.c.iii', 'OtherLiquid'], 3],
+            ['Biodiesel (5 percent fossil portion)', ['1.A.4.c.iii', 'OLBiodieselFC'], 4],  # CAN
+            ['Gaseous fuels', ['1.A.4.c.iii', 'Gaseous'], 3],
+            ['Biomass(6)', ['1.A.4.c.iii', 'Biomass'], 3],
+            ['Other fossil fuels (please specify)(4)', ['1.A.4.c.iii', 'OtherFF'], 3],
+            ['Fossil part of biodiesel and biogasoline', ['1.A.4.c.iii', 'OFFBiofuelFC'], 3],
+            # 1.A.5 Other (Not specified elsewhere)(14)
+            ['1.A.5 Other (Not specified elsewhere)(14)', ['1.A.5', 'Total'], 0],
+            # a. Stationary (please specify)
+            ['a. Stationary (please specify)', ['1.A.5.a', 'Total'], 1],
+            # temp
+            ['Liquid Fuels', ['1.A.5.a', 'Liquid'], 2],
+            ['Solid Fuels', ['1.A.5.a', 'Solid'], 2],
+            ['Gaseous Fuels', ['1.A.5.a', 'Gaseous'], 2],
+            ['Other Fossil Fuels', ['1.A.5.a', 'OtherFF'], 2],
+            ['Peat', ['1.A.5.a', 'Peat'], 2],
+            ['Biomass', ['1.A.5.a', 'Biomass'], 2],
+            # temp
+            # GBK, GBR
+            ['Military fuel use', ['1.A.5.a.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.i', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.i', 'Biomass'], 3],
+            # TUR
+            ['Liquid fuels', ['1.A.5.a', 'Liquid'], 2],
+            # ESP, FIN, SWE
+            ['Other non-specified', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # ROU, SVK, RUS
+            ['Other', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # FRA, FRK
+            ['Other not specified', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # CYP
+            ['Other (not specified elsewhere)', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.ii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # NOR, HUN
+            ['Military', ['1.A.5.a.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.i', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.i', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.i', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.i', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.i', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.i', 'Biomass'], 3],
+            ['Non-fuel Use', ['1.A.5.a.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.iii', 'Liquid'], 3],
+            # DNM, DKE, DNK
+            ['Other stationary combustion', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # LUX
+            ['Stationary', ['1.A.5.a.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.a.ii', 'Biomass'], 3],
+            # USA
+            ['Incineration of Waste', ['1.A.5.a.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.iv', 'Biomass'], 3],
+            ['U.S. Territories', ['1.A.5.a.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.v', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.v', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.v', 'Biomass'], 3],
+            ['Non Energy Use', ['1.A.5.a.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.a.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.a.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.a.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.a.iii', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.a.iii', 'Peat'], 3],
+            ['Biomass', ['1.A.5.a.iii', 'Biomass'], 3],
+            # b. Mobile (please specify)
+            ['b. Mobile (please specify)', ['1.A.5.b', 'Total'], 1],
+            # temp
+            ['Liquid Fuels', ['1.A.5.b', 'Liquid'], 2],
+            ['Solid Fuels', ['1.A.5.b', 'Solid'], 2],
+            ['Gaseous Fuels', ['1.A.5.b', 'Gaseous'], 2],
+            ['Other Fossil Fuels', ['1.A.5.b', 'OtherFF'], 2],
+            ['Biomass', ['1.A.5.b', 'Biomass'], 2],
+            # temp
+            # GBK, GBR
+            ['Military aviation and naval shipping', ['1.A.5.b.i', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.i', 'Liquid'], 3],
+            # HRV
+            ['Military aviation component', ['1.A.5.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.ii', 'Biomass'], 3],
+            ['Military water-borne component', ['1.A.5.b.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iii', 'Biomass'], 3],
+            # ESP, FIN
+            ['Other non-specified', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # NLD, DKE, DNM, DNK, SWE, UKR
+            ['Military use', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.v', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.v', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.v', 'Biomass'], 3],
+            # AUT, NOR, USA, CHE, HUN, LTU
+            ['Military', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.v', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.v', 'Biomass'], 3],
+            # PRT
+            ['Military Aviation', ['1.A.5.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ii', 'Liquid'], 3],
+            # ROU, MLT
+            ['Other', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # FRA, FRK
+            ['Other not specified', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Peat', ['1.A.5.b.iv', 'Peat'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # CYP
+            ['1A5b i Mobile (aviation component)', ['1.A.5.b.vi', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.vi', 'Liquid'], 3],
+            # GBK, GBR
+            ['Lubricants used in 2-stroke engines', ['1.A.5.b.vii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.vii', 'Liquid'], 3],
+            # DNM, DKE, DNK
+            ['Recreational crafts', ['1.A.5.b.viii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.viii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.viii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.viii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.viii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.viii', 'Biomass'], 3],
+            # SVK
+            ['Military use Jet Kerosene', ['1.A.5.b.ix', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ix', 'Liquid'], 3],
+            ['Military Gasoline', ['1.A.5.b.x', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.x', 'Liquid'], 3],
+            ['Biomass', ['1.A.5.b.ix', 'Biomass'], 3],
+            ['Military Diesel Oil', ['1.A.5.b.xi', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.xi', 'Liquid'], 3],
+            ['Biomass', ['1.A.5.b.xi', 'Biomass'], 3],
+            # BEL
+            ['Military Use', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.v', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.v', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.v', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.v', 'Biomass'], 3],
+            # AUS
+            ['Military Transport', ['1.A.5.b.xii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.xii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.xii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.xii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.xii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.xii', 'Biomass'], 3],
+            # CZE
+            ['Agriculture and Forestry and Fishing', ['1.A.5.b.xiii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.xiii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.xiii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.xiii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.xiii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.xiii', 'Biomass'], 3],
+            ['Other mobile sources not included elsewhere', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # SVN
+            ['Military use of fuels', ['1.A.5.b.v', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.v', 'Liquid'], 3],
+            # LUX
+            ['Unspecified Mobile', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # LVA
+            ['Mobile', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iv', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iv', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iv', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iv', 'Biomass'], 3],
+            # CAN
+            ['Domestic Military (Aviation)', ['1.A.5.b.ii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.ii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.ii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.ii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.ii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.ii', 'Biomass'], 3],
+            ['Military Water-borne Navigation', ['1.A.5.b.iii', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iii', 'Liquid'], 3],
+            ['Solid Fuels', ['1.A.5.b.iii', 'Solid'], 3],
+            ['Gaseous Fuels', ['1.A.5.b.iii', 'Gaseous'], 3],
+            ['Other Fossil Fuels', ['1.A.5.b.iii', 'OtherFF'], 3],
+            ['Biomass', ['1.A.5.b.iii', 'Biomass'], 3],
+            # CZE, new in 2022
+            ['i. Mobile (aviation component)', ['1.A.5.b.vi', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.vi', 'Liquid'], 3],
+            ['iii. Mobile (other)', ['1.A.5.b.iv', 'Total'], 2],
+            ['Liquid Fuels', ['1.A.5.b.iv', 'Liquid'], 3],
+            # Information Item
+            ['Information item:(15)', ['\IGNORE', '\IGNORE'], 0],
+            ['Waste incineration with energy recovery included as:', ['\IGNORE', '\IGNORE'], 1],
+            ['Biomass(6)', ['\IGNORE', '\IGNORE'], 1],
+            ['Fossil fuels(4)', ['\IGNORE', '\IGNORE'], 1],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': "CH4",
+            'EMISSIONS CO2(2)': "CO2",
+            'EMISSIONS N2O': "N2O",
+        },
+    },  # tested
+    "Table1.B.1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 19,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA Amount of fuel produced',
+                'IMPLIED EMISSION FACTORS CH4(1)',
+                'IMPLIED EMISSION FACTORS CO2',
+                'EMISSIONS CH4 Recovery/Flaring(2)',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. B. 1. a. Coal mining and handling', ['1.B.1.a'], 0],
+            ['i. Underground mines(4)', ['1.B.1.a.i'], 1],
+            ['Mining activities', ['1.B.1.a.i.1'], 2],
+            ['Post-mining activities', ['1.B.1.a.i.2'], 2],
+            ['Abandoned underground mines', ['1.B.1.a.i.3'], 2],
+            ['ii. Surface mines(4)', ['1.B.1.a.ii'], 1],
+            ['Mining activities', ['1.B.1.a.ii.1'], 2],
+            ['Post-mining activities', ['1.B.1.a.ii.2'], 2],
+            ['1. B. 1. b. Solid fuel transformation(5)', ['1.B.1.b'], 0],
+            ['1. B. 1. c. Other (please specify)(6)', ['1.B.1.c'], 0],
+            ['Flaring', ['1.B.1.c.i'], 1],  # UKR, AUS
+            ['Flaring of gas', ['1.B.1.c.i'], 1],  # SWE
+            ['Coal Dumps', ['1.B.1.c.ii'], 1],  # JPN
+            ['SO2 scrubbing', ['1.B.1.c.iii'], 1],  # SVN
+            ['Flaring of coke oven gas', ['1.B.1.c.iv'], 1],  # KAZ
+            ['Emisson from Coke Oven Gas Subsystem', ['1.B.1.c.iv'], 1],  # POL
+            ['Other', ['1.B.1.c.v'], 1],  # ROU, new in 2022
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 Emissions(3)': 'CH4',
+            'EMISSIONS CO2 Emissions': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.B.2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 33,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA(1) Description(1)',
+                'ACTIVITY DATA(1) Unit(1)',
+                'ACTIVITY DATA(1) Value',
+                'IMPLIED EMISSION FACTORS CO2(2)',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+                'EMISSIONS CO2 Amount captured',
+            ],
+            "stop_cats": [".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. B. 2. a. Oil(6)', ['1.B.2.a'], 0],
+            ['1. Exploration', ['1.B.2.a.1'], 1],
+            ['2. Production(7)', ['1.B.2.a.2'], 1],
+            ['3. Transport', ['1.B.2.a.3'], 1],
+            ['4. Refining/storage', ['1.B.2.a.4'], 1],
+            ['5. Distribution of oil products', ['1.B.2.a.5'], 1],
+            ['6. Other', ['1.B.2.a.6'], 1],
+            ['1. B. 2. b. Natural gas', ['1.B.2.b'], 0],
+            ['1. Exploration', ['1.B.2.b.1'], 1],
+            ['2. Production(7)', ['1.B.2.b.2'], 1],
+            ['3. Processing', ['1.B.2.b.3'], 1],
+            ['4. Transmission and storage', ['1.B.2.b.4'], 1],
+            ['5. Distribution', ['1.B.2.b.5'], 1],
+            ['6. Other', ['1.B.2.b.6'], 1],
+            ['1. B. 2. c. Venting and flaring', ['1.B.2.c'], 0],
+            ['Venting', ['1.B.2.c-ven'], 1],
+            ['i. Oil', ['1.B.2.c-ven.i'], 2],
+            ['ii. Gas', ['1.B.2.c-ven.ii'], 2],
+            ['iii. Combined', ['1.B.2.c-ven.iii'], 2],
+            ['Flaring(8)', ['1.B.2.c-fla'], 1],
+            ['i. Oil', ['1.B.2.c-fla.i'], 2],
+            ['ii. Gas', ['1.B.2.c-fla.ii'], 2],
+            ['iii. Combined', ['1.B.2.c-fla.iii'], 2],
+            ['1.B.2.d. Other (please specify)(9)', ['1.B.2.d'], 0],
+            ['Groundwater extraction and CO2 mining', ['1.B.2.d.i'], 1],  # HUN
+            ['Geothermal', ['1.B.2.d.ii'], 1],  # NOR, DEU, PRT, NZL
+            ['Geothermal Energy', ['1.B.2.d.ii'], 1],  # ISL
+            ['Geothermal Generation', ['1.B.2.d.ii'], 1],  # JPN
+            ['Geotherm', ['1.B.2.d.ii'], 1],  # ITA
+            ['City Gas Production', ['1.B.2.d.iii'], 1],  # PRT
+            ['Other', ['1.B.2.d.iv'], 1],  # UKR, ROU
+            ['Other non-specified', ['1.B.2.d.iv'], 1],  # SWE
+            ['Flaring in refineries', ['1.B.2.d.v'], 1],  # ITA
+            ['LPG transport', ['1.B.2.d.vi'], 1],  # GRC
+            ['Distribution of town gas', ['1.B.2.d.vii'], 1],  # FIN
+            ['Petrol distribution', ['1.B.2.d.viii'], 1],  # IRL
+            ['Natural Gas Transport', ['1.B.2.d.ix'], 1],  # BLR
+            ['Natural gas exploration - N2O emissions', ['1.B.2.d.x'], 1],  # GBR, GBK
+            ['flue gas desulfurisation', ['1.B.2.d.xi'], 1],  # GBR, GBK, new in 2022
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 (4) Amount captured': 'CH4',
+            'EMISSIONS CO2 Emissions(3)': 'CO2',
+            'EMISSIONS N2O Amount captured': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.C": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 24,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA CO2 transported or injected(1)',
+                'IMPLIED EMISSION FACTORS CO2',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Transport of CO2', ['1.C.1']],
+            ['a. Pipelines', ['1.C.1.a']],
+            ['b. Ships', ['1.C.1.b']],
+            ['c. Other', ['1.C.1.c']],
+            ['2. Injection and storage(3)', ['1.C.2']],
+            ['a. Injection', ['1.C.2.a']],
+            ['b. Storage', ['1.C.2.b']],
+            ['3. Other', ['1.C.3']],
+            ['Information item(4, 5)', ['\IGNORE']],
+            ['Total amount captured for storage', ['M.Info.A.TACS']],
+            ['Total amount of imports for storage', ['M.Info.A.TAIS']],
+            ['Total A', ['M.Info.A']],
+            ['Total amount of exports for storage', ['M.Info.B.TAES']],
+            ['Total amount of CO2 injected at storage sites', ['M.Info.B.TAI']],
+            ['Total leakage from transport, injection and storage', ['M.Info.B.TLTIS']],
+            ['Total B', ['M.Info.B']],
+            ['Difference (A-B)(6)', ['\IGNORE']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CO2(2)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table1.D": {
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 20,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category", "type"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table2(I)s1": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 31,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["industry"],
+        },
+        "sector_mapping": [
+            ['Total industrial processes', ['2']],
+            ['A. Mineral industry', ['2.A']],
+            ['1. Cement production', ['2.A.1']],
+            ['2. Lime production', ['2.A.2']],
+            ['3. Glass production', ['2.A.3']],
+            ['4. Other process uses of carbonates', ['2.A.4']],
+            ['B. Chemical industry', ['2.B']],
+            ['1. Ammonia production', ['2.B.1']],
+            ['2. Nitric acid production', ['2.B.2']],
+            ['3. Adipic acid production', ['2.B.3']],
+            ['4. Caprolactam, glyoxal and glyoxylic acid production', ['2.B.4']],
+            ['5. Carbide production', ['2.B.5']],
+            ['6. Titanium dioxide production', ['2.B.6']],
+            ['7. Soda ash production', ['2.B.7']],
+            ['8. Petrochemical and carbon black production', ['2.B.8']],
+            ['9. Fluorochemical production', ['2.B.9']],
+            ['10. Other (as specified in table 2(I).A-H)', ['2.B.10']],
+            ['C. Metal industry', ['2.C']],
+            ['1. Iron and steel production', ['2.C.1']],
+            ['2. Ferroalloys production', ['2.C.2']],
+            ['3. Aluminium production', ['2.C.3']],
+            ['4. Magnesium production', ['2.C.4']],
+            ['5. Lead production', ['2.C.5']],
+            ['6. Zinc production', ['2.C.6']],
+            ['7. Other (as specified in table 2(I).A-H)', ['2.C.7']],
+        ],
+        "entity_mapping": {
+            'HFCs(1)': 'HFCS (AR4GWP100)',
+            'PFCs(1)': 'PFCS (AR4GWP100)',
+            'Unspecified mix of HFCs and PFCs(1)': 'UnspMixOfHFCsPFCs (AR4GWP100)',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table2(I)s2": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 29,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["industry"],
+        },
+        "sector_mapping": [
+            ['D. Non-energy products from fuels and solvent use', ['2.D']],
+            ['1. Lubricant use', ['2.D.1']],
+            ['2. Paraffin wax use', ['2.D.2']],
+            ['3. Other', ['2.D.3']],
+            ['E. Electronics industry', ['2.E']],
+            ['1. Integrated circuit or semiconductor', ['2.E.1']],
+            ['2. TFT flat panel display', ['2.E.2']],
+            ['3. Photovoltaics', ['2.E.3']],
+            ['4. Heat transfer fluid', ['2.E.4']],
+            ['5. Other (as specified in table 2(II))', ['2.E.5']],
+            ['F. Product uses as substitutes for ODS(2)', ['2.F']],
+            ['1. Refrigeration and air conditioning', ['2.F.1']],
+            ['2. Foam blowing agents', ['2.F.2']],
+            ['3. Fire protection', ['2.F.3']],
+            ['4. Aerosols', ['2.F.4']],
+            ['5. Solvents', ['2.F.5']],
+            ['6. Other applications', ['2.F.6']],
+            ['G. Other product manufacture and use', ['2.G']],
+            ['1. Electrical equipment', ['2.G.1']],
+            ['2. SF6 and PFCs from other product use', ['2.G.2']],
+            ['3. N2O from product uses', ['2.G.3']],
+            ['4. Other', ['2.G.4']],
+            ['H. Other (as specified in tables 2(I).A-H and 2(II))(3)', ['2.H']],
+        ],
+        "entity_mapping": {
+            'HFCs(1)': 'HFCS (AR4GWP100)',
+            'PFCs(1)': 'PFCS (AR4GWP100)',
+            'Unspecified mix of HFCs and PFCs(1)': 'UnspMixOfHFCsPFCs (AR4GWP100)',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table2(I).A-Hs1": {
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 40,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table2(I).A-Hs2": {
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 36,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table2(II)": {
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 38,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": [".", np.nan],
+            "unit_info": unit_info["fgases"],
+        },
+        "sector_mapping": [
+            ['Total actual emissions of halocarbons (by chemical) and SF6', ['2']],
+            ['B. Chemical industry', ['2.B']],
+            ['9. Flurochemical production', ['2.B.9']],
+            ['By-product emissions', ['2.B.9.a']],
+            ['Fugitive emissions', ['2.B.9.b']],
+            ['10. Other', ['2.B.10']],
+            ['C. Metal industry', ['2.C']],
+            ['3. Aluminium production', ['2.C.3']],
+            ['4. Magnesium production', ['2.C.4']],
+            ['7. Other', ['2.C.7']],
+            ['E. Electronics industry', ['2.E']],
+            ['1. Integrated circuit or semiconductor', ['2.E.1']],
+            ['2. TFT flat panel display', ['2.E.2']],
+            ['3. Photovoltaics', ['2.E.3']],
+            ['4. Heat transfer fluid', ['2.E.4']],
+            ['5. Other (as specified in table 2(II))', ['2.E.5']],
+            ['F. Product uses as substitutes for ODS(2)', ['2.F']],
+            ['1. Refrigeration and air conditioning', ['2.F.1']],
+            ['2. Foam blowing agents', ['2.F.2']],
+            ['3. Fire protection', ['2.F.3']],
+            ['4. Aerosols', ['2.F.4']],
+            ['5. Solvents', ['2.F.5']],
+            ['6. Other applications', ['2.F.6']],
+            ['G. Other product manufacture and use', ['2.G']],
+            ['1. Electrical equipment', ['2.G.1']],
+            ['2. SF6 and PFCs from other product use', ['2.G.2']],
+            ['4. Other', ['2.G.4']],
+            ['H. Other (please specify)', ['2.H']],
+            ['2.H.1 Pulp and paper', ['2.H.1']],
+            ['2.H.2 Food and beverages industry', ['2.H.2']],
+            ['2.H.3 Other (please specify)', ['2.H.3']],
+        ],
+        "entity_mapping": {
+            'C 3F8': 'C3F8',
+            #'C10F18' 'C2F6' 'C4F10' 'C5F12' 'C6F14' 'CF4'
+            'HFC-125': 'HFC125',
+            'HFC-134': 'HFC134',
+            'HFC-134a': 'HFC134a',
+            'HFC-143': 'HFC143',
+            'HFC-143a': 'HFC143a',
+            'HFC-152': 'HFC152',
+            'HFC-152a': 'HFC152a',
+            'HFC-161': 'HFC161',
+            'HFC-227ea': 'HFC227ea',
+            'HFC-23': 'HFC23',
+            'HFC-236cb': 'HFC236cb',
+            'HFC-236ea': 'HFC236ea',
+            'HFC-236fa': 'HFC236fa',
+            'HFC-245ca': 'HFC245ca',
+            'HFC-245fa': 'HFC245fa',
+            'HFC-32': 'HFC32',
+            'HFC-365mfc': 'HFC365mfc',
+            'HFC-41': 'HFC41',
+            'HFC-43-10mee': 'HFC4310mee',
+            'Unspecified mix of HFCs (1)': 'UnspMixOfHFCs (AR4GWP100)',
+            'Unspecified mix of HFCs and PFCs(1)': 'UnspMixOfHFCsPFCs (AR4GWP100)',
+            'Unspecified mix of PFCs (1)': 'UnspMixOfPFCs (AR4GWP100)',
+            'c-C3F6': 'cC3F6',
+            'c-C4F8': 'cC4F8',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3s1": {  # Agriculture summary sheet 1
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 75,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['3. Total agriculture', ['3'], 0],
+            # I. Livestock
+            ['I. Livestock', ['M.3.LV'], 1],
+            # A. Enteric fermentation
+            ['A. Enteric fermentation', ['3.A'], 2],
+            ['1. Cattle(1)', ['3.A.1'], 3],
+            ['Option A:', ['\IGNORE'], 4],
+            ['Dairy cattle', ['3.A.1.Aa'], 5],
+            ['Non-dairy cattle', ['3.A.1.Ab'], 5],
+            ['Option B:', ['\IGNORE'], 4],
+            ['Mature dairy cattle', ['3.A.1.Ba'], 5],
+            ['Other mature cattle', ['3.A.1.Bb'], 5],
+            ['Growing cattle', ['3.A.1.Bc'], 5],
+            ['Option C (country-specific):', ['\IGNORE'], 4],
+            # all countries not specified explcitly
+            ['\C!-AUS-MLT-LUX-POL-SVN-USA\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            # Australia
+            ['\C-AUS\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-AUS\ Dairy Cattle', ['3.A.1.C-AUS-a'], 6],
+            ['\C-AUS\ Beef Cattle - Pasture', ['3.A.1.C-AUS-b'], 6],
+            ['\C-AUS\ Beef Cattle - Feedlot', ['3.A.1.C-AUS-c'], 6],
+            # malta
+            ['\C-MLT\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-MLT\ dairy cows', ['3.A.1.C-MLT-a'], 6],
+            ['\C-MLT\ non-lactating cows', ['3.A.1.C-MLT-b'], 6],
+            ['\C-MLT\ bulls', ['3.A.1.C-MLT-c'], 6],
+            ['\C-MLT\ calves', ['3.A.1.C-MLT-d'], 6],
+            ['\C-MLT\ growing cattle 1-2 years', ['3.A.1.C-MLT-e'], 6],
+            # Luxembourg
+            ['\C-LUX\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-LUX\ Bulls', ['3.A.1.C-LUX-a'], 6],
+            ['\C-LUX\ Calves', ['3.A.1.C-LUX-b'], 6],
+            ['\C-LUX\ Young Cattle', ['3.A.1.C-LUX-c'], 6],
+            ['\C-LUX\ Suckler Cows', ['3.A.1.C-LUX-d'], 6],
+            ['\C-LUX\ Bulls under 2 years', ['3.A.1.C-LUX-e'], 6],
+            ['\C-LUX\ Dairy Cows', ['3.A.1.C-LUX-f'], 6],
+            # Poland
+            ['\C-POL\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-POL\ Bulls (older than 2 years)', ['3.A.1.C-POL-a'], 6],
+            ['\C-POL\ Non-dairy Heifers (older than 2 years)', ['3.A.1.C-POL-b'], 6],
+            ['\C-POL\ Non-dairy Young Cattle (younger than 1 year)', ['3.A.1.C-POL-c'], 6],
+            ['\C-POL\ Dairy Cattle', ['3.A.1.C-POL-d'], 6],
+            ['\C-POL\ Non-dairy Young Cattle (1-2 years)', ['3.A.1.C-POL-e'], 6],
+            # Slovenia
+            ['\C-SVN\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-SVN\ Dairy cows', ['3.A.1.C-SVN-a'], 6],
+            ['\C-SVN\ Non-dairy cattle', ['3.A.1.C-SVN-b'], 6],
+            ['\C-SVN\ Other cows', ['3.A.1.C-SVN-c'], 6],
+            # USA
+            ['\C-USA\ Other (as specified in table 3(I).A)', ['3.A.1.C'], 5],
+            ['\C-USA\ Steer Stocker', ['3.A.1.C-USA-a'], 6],
+            ['\C-USA\ Heifer Stocker', ['3.A.1.C-USA-b'], 6],
+            ['\C-USA\ Beef Cows', ['3.A.1.C-USA-c'], 6],
+            ['\C-USA\ Dairy Replacements', ['3.A.1.C-USA-d'], 6],
+            ['\C-USA\ Beef Replacements', ['3.A.1.C-USA-e'], 6],
+            ['\C-USA\ Steer Feedlot', ['3.A.1.C-USA-f'], 6],
+            ['\C-USA\ Heifer Feedlot', ['3.A.1.C-USA-g'], 6],
+            ['\C-USA\ Bulls', ['3.A.1.C-USA-h'], 6],
+            ['\C-USA\ Dairy Cows', ['3.A.1.C-USA-i'], 6],
+            ['\C-USA\ Beef Calves', ['3.A.1.C-USA-j'], 6],
+            ['\C-USA\ Dairy Calves', ['3.A.1.C-USA-k'], 6],
+            # Other livestock
+            ['2. Sheep', ['3.A.2'], 3],
+            ['3. Swine', ['3.A.3'], 3],
+            ['4. Other livestock', ['3.A.4'], 3],
+            ['Buffalo', ['3.A.4.a'], 4],
+            ['Camels', ['3.A.4.b'], 4],
+            ['Deer', ['3.A.4.c'], 4],
+            ['Goats', ['3.A.4.d'], 4],
+            ['Horses', ['3.A.4.e'], 4],
+            ['Mules and Asses', ['3.A.4.f'], 4],
+            ['Poultry', ['3.A.4.g'], 4],
+            ['Other (please specify)', ['3.A.4.h'], 4],
+            ['Rabbit', ['3.A.4.h.i'], 5],
+            ['Reindeer', ['3.A.4.h.ii'], 5],
+            ['Ostrich', ['3.A.4.h.iii'], 5],
+            ['Fur-bearing Animals', ['3.A.4.h.iv'], 5],
+            ['Other', ['3.A.4.h.v'], 5],
+            # Manure Management
+            ['B. Manure management', ['3.B'], 2],
+            ['1. Cattle(1)', ['3.B.1'], 3],
+            ['Option A:', ['\IGNORE'], 4],
+            ['Dairy cattle', ['3.B.1.Aa'], 5],
+            ['Non-dairy cattle', ['3.B.1.Ab'], 5],
+            ['Option B:', ['\IGNORE'], 4],
+            ['Mature dairy cattle', ['3.B.1.Ba'], 5],
+            ['Other mature cattle', ['3.B.1.Bb'], 5],
+            ['Growing cattle', ['3.B.1.Bc'], 5],
+            ['Option C (country-specific):', ['\IGNORE'], 4],
+            # all countries not specified explicitly
+            ['\C!-AUS-MLT-LUX-POL-SVN-USA\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            # Australia
+            ['\C-AUS\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-AUS\ Dairy Cattle', ['3.B.1.C-AUS-a'], 6],
+            ['\C-AUS\ Beef Cattle - Pasture', ['3.B.1.C-AUS-b'], 6],
+            ['\C-AUS\ Beef Cattle - Feedlot', ['3.B.1.C-AUS-c'], 6],
+            # Malta
+            ['\C-MLT\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-MLT\ dairy cows', ['3.B.1.C-MLT-a'], 6],
+            ['\C-MLT\ non-lactating cows', ['3.B.1.C-MLT-b'], 6],
+            ['\C-MLT\ bulls', ['3.B.1.C-MLT-c'], 6],
+            ['\C-MLT\ calves', ['3.B.1.C-MLT-d'], 6],
+            ['\C-MLT\ growing cattle 1-2 years', ['3.B.1.C-MLT-e'], 6],
+            # Luxembourg
+            ['\C-LUX\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-LUX\ Bulls', ['3.B.1.C-LUX-a'], 6],
+            ['\C-LUX\ Calves', ['3.B.1.C-LUX-b'], 6],
+            ['\C-LUX\ Young Cattle', ['3.B.1.C-LUX-c'], 6],
+            ['\C-LUX\ Suckler Cows', ['3.B.1.C-LUX-d'], 6],
+            ['\C-LUX\ Bulls under 2 years', ['3.B.1.C-LUX-e'], 6],
+            ['\C-LUX\ Dairy Cows', ['3.B.1.C-LUX-f'], 6],
+            # Poland
+            ['\C-POL\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-POL\ Non-dairy Cattle', ['3.B.1.C-POL-a'], 6],
+            ['\C-POL\ Dairy Cattle', ['3.B.1.C-POL-b'], 6],
+            # Slovenia
+            ['\C-SVN\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-SVN\ Dairy cows', ['3.B.1.C-SVN-a'], 6],
+            ['\C-SVN\ Non-dairy cattle', ['3.B.1.C-SVN-b'], 6],
+            ['\C-SVN\ Other cows', ['3.B.1.C-SVN-c'], 6],
+            # USA
+            ['\C-USA\ Other (as specified in table 3(I).B)', ['3.B.1.C'], 5],
+            ['\C-USA\ Dairy Cattle', ['\IGNORE'], 6],
+            ['\C-USA\ Non-Dairy Cattle', ['\IGNORE'], 6],
+            ['\C-USA\ Steer Stocker', ['3.B.1.C-USA-a'], 6],
+            ['\C-USA\ Heifer Stocker', ['3.B.1.C-USA-b'], 6],
+            ['\C-USA\ Beef Cows', ['3.B.1.C-USA-c'], 6],
+            ['\C-USA\ Dairy Replacements', ['3.B.1.C-USA-d'], 6],
+            ['\C-USA\ Beef Replacements', ['3.B.1.C-USA-e'], 6],
+            ['\C-USA\ Steer Feedlot', ['3.B.1.C-USA-f'], 6],
+            ['\C-USA\ Heifer Feedlot', ['3.B.1.C-USA-g'], 6],
+            ['\C-USA\ Bulls', ['3.B.1.C-USA-h'], 6],
+            ['\C-USA\ Dairy Cows', ['3.B.1.C-USA-i'], 6],
+            ['\C-USA\ Beef Calves', ['3.B.1.C-USA-j'], 6],
+            ['\C-USA\ Dairy Calves', ['3.B.1.C-USA-k'], 6],
+            # other animals
+            ['2. Sheep', ['3.B.2'], 3],
+            ['3. Swine', ['3.B.3'], 3],
+            ['4. Other livestock', ['3.B.4'], 3],
+            ['Buffalo', ['3.B.4.a'], 4],
+            ['Camels', ['3.B.4.b'], 4],
+            ['Deer', ['3.B.4.c'], 4],
+            ['Goats', ['3.B.4.d'], 4],
+            ['Horses', ['3.B.4.e'], 4],
+            ['Mules and Asses', ['3.B.4.f'], 4],
+            ['Poultry', ['3.B.4.g'], 4],
+            ['Other (please specify)', ['3.B.4.h'], 4],
+            ['Rabbit', ['3.B.4.h.i'], 5],
+            ['Reindeer', ['3.B.4.h.ii'], 5],
+            ['Ostrich', ['3.B.4.h.iii'], 5],
+            ['Fur-bearing Animals', ['3.B.4.h.iv'], 5],
+            ['Other', ['3.B.4.h.v'], 5],
+            ['5. Indirect N2O emissions', ['3.B.5'], 3],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3s2": {  # Agriculture summary sheet 2
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 18,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": [".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['C. Rice cultivation', ['3.C']],
+            ['D. Agricultural soils(2) (3) (4)', ['3.D']],
+            ['E. Prescribed burning of savannahs', ['3.E']],
+            ['E. Prescribed burning of savannas', ['3.E']],
+            ['F. Field burning of agricultural residues', ['3.F']],
+            ['G. Liming', ['3.G']],
+            ['H. Urea application', ['3.H']],
+            ['I. Other carbon-containing fertilizers', ['3.I']],
+            ['J. Other (please specify)', ['3.J']],
+            ['NOx from Manure Management', ['3.J.1']],
+            ['3.B NOx Emissions', ['3.J.1']],
+            ['NOx from 3B', ['3.J.1']],
+            ['NOX emissions from manure management', ['3.J.1']],
+            ['NOx from manure management', ['3.J.1']],
+            ['Other', ['3.J.2']],
+            ['Other UK emissions', ['3.J.2']],
+            ['Other non-specified', ['3.J.2']],
+            ['OTs and CDs - Livestock', ['3.J.3']],
+            ['OTs and CDs - soils', ['3.J.4']],
+            ['OTs and CDs - other', ['3.J.5']],
+            ['Digestate renewable raw material (storage of N)', ['3.J.6']],
+            ['Digestate renewable raw material (atmospheric deposition)', ['3.J.7']],
+            ['Digestate renewable raw material (storage of dry matter)', ['3.J.8']],
+            ['NOx from Livestock', ['3.J.9']],
+        ],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.C": {  # rice cultivation details
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 21,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Harvested area(2)',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Organic amendments added(3)',
+                'IMPLIED EMISSION FACTOR (1) CH4',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Irrigated', ['3.C.1']],
+            ['Continuously flooded', ['3.C.1.a']],
+            ['Intermittently flooded Single aeration', ['3.C.1.a.i']],
+            ['Intermittently flooded Multiple aeration', ['3.C.1.b.ii']],
+            ['2. Rainfed', ['3.C.2']],
+            ['Flood prone', ['3.C.2.a']],
+            ['Drought prone', ['3.C.2.b']],
+            ['3. Deep water', ['3.C.3']],
+            ['Water depth 50–100 cm', ['3.C.3.a']],
+            ['Water depth > 100 cm', ['3.C.3.b']],
+            ['4. Other (please specify)', ['3.C.4']],
+            ['Non-specified', ['3.C.4.a']],  # EST
+            ['Other', ['3.C.4.a']],  # DEU
+            ['other', ['3.C.4.a']],  # LVA
+            ['Other cultivation', ['3.C.4.a']],  # CZE
+            ['Upland rice(4)', ['\IGNORE']],
+            ['Total(4)', ['\IGNORE']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4': 'CH4',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.D": {  # direct and indirect N2O from soils
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 21,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                "ACTIVITY DATA AND OTHER RELATED INFORMATION Description",
+                "ACTIVITY DATA AND OTHER RELATED INFORMATION Value",
+                "IMPLIED EMISSION FACTORS Value",
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['a. Direct N2O emissions from managed soils', ['3.D.a']],
+            ['1. Inorganic N fertilizers(3)', ['3.D.a,1']],
+            ['2. Organic N fertilizers(3)', ['3.D.a.2']],
+            ['a. Animal manure applied to soils', ['3.D.a.2.a']],
+            ['b. Sewage sludge applied to soils', ['3.D.a.2.b']],
+            ['c. Other organic fertilizers applied to soils', ['3.D.a.2.c']],
+            ['3. Urine and dung deposited by grazing animals', ['3.D.a.3']],
+            ['4. Crop residues', ['3.D.a.4']],
+            ['5. Mineralization/immobilization associated with loss/gain of soil organic matter (4)(5)', ['3.D.a.5']],
+            ['6. Cultivation of organic soils (i.e. histosols)(2)', ['3.D.a.6']],
+            ['7. Other', ['3.D.a.7']],
+            ['b. Indirect N2O Emissions from managed soils', ['3.D.b']],
+            ['1. Atmospheric deposition(6)', ['3.D.b.1']],
+            ['2. Nitrogen leaching and run-off', ['3.D.b.2']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS N2O': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.E": {  # savanna burning details
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 14,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Area of savanna burned',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Average above-ground biomass density',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Biomass burned',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Fraction of savanna burned',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Nitrogen fraction in biomass',
+                'IMPLIED EMISSION FACTORS CH4',
+                'IMPLIED EMISSION FACTORS N2O',
+            ],
+            "stop_cats": ["", ".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['Forest land (specify ecological zone)(1)', ['3.E.1'], 0],
+            ['Savanna Grassland', ['3.E.1.b'], 1],  # AUS
+            ['Savanna Woodland', ['3.E.1.a'], 1],  # AUS
+            ['Forest land', ['3.E.1.a'], 1],  # SWE, CHE, CZE, HRV
+            ['Luxembourg', ['3.E.1.c'], 1],  # LUX
+            ['Other non-specified', ['3.E.1.d'], 1],  # EST
+            ['All', ['3.E.1.d'], 1],  # DNK, DNM, DKE
+            ['Unspecified', ['3.E.1.d'], 1],  # DEU
+            ['forest land', ['3.E.1.a'], 1],  # MLT
+            ['Zone', ['3.E.1.d'], 1],  # LVA
+            ['Grassland (specify ecological zone)(1)', ['3.E.2'], 0],
+            ['Savanna Woodland', ['3.E.2.a'], 1],  # AUS
+            ['Savanna Grassland', ['3.E.2.b'], 1],  # AUS
+            ['Temperate Grassland', ['3.E.2.c'], 1],  # AUS
+            ['Grassland', ['3.E.2.d'], 1],  # SWE, CHE, CZE, HRV
+            ['Luxembourg', ['3.E.2.e'], 1],  # LUX
+            ['Other non-specified', ['3.E.2.f'], 1],  # EST
+            ['All', ['3.E.2.f'], 1],  # DNK, DNM, DKE
+            ['Unspecified', ['3.E.2.f'], 1],  # DEU
+            ['Tussock', ['3.E.2.g'], 1],  # NZL
+            ['grassland', ['3.E.2.d'], 1],  # MLT
+            ['Zone_', ['3.E.2.f'], 1],  # LVA
+        ],
+        "entity_mapping": {
+            'EMISSIONS (2) CH4': 'CH4',
+            'EMISSIONS (2) N2O': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table3.F": {  # field burning details
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 30,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table3.G-I": {  # liming, urea, carbon containing fertilizer
+        "status": "TODO",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 13,
+            "header": ['group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+
+        ],
+        "entity_mapping": [],
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # TODO
+    "Table4": {  # LULUCF overview
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 29,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", ".", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['4. Total LULUCF', ['4']],
+            ['A. Forest land', ['4.A']],
+            ['1. Forest land remaining forest land', ['4.A.1']],
+            ['2. Land converted to forest land', ['4.A.2']],
+            ['B. Cropland', ['4.B']],
+            ['1. Cropland remaining cropland', ['4.B.1']],
+            ['2. Land converted to cropland', ['4.B.2']],
+            ['C. Grassland', ['4.C']],
+            ['1. Grassland remaining grassland', ['4.C.1']],
+            ['2. Land converted to grassland', ['4.C.2']],
+            ['D. Wetlands(3)', ['4.D']],
+            ['1. Wetlands remaining wetlands', ['4.D.1']],
+            ['2. Land converted to wetlands', ['4.D.2']],
+            ['E. Settlements', ['4.E']],
+            ['1. Settlements remaining settlements', ['4.E.1']],
+            ['2. Land converted to settlements', ['4.E.2']],
+            ['F. Other land (4)', ['4.F']],
+            ['1. Other land remaining other land', ['4.F.1']],
+            ['2. Land converted to other land', ['4.F.2']],
+            ['G. Harvested wood products (5)', ['4.G']],
+            ['H. Other (please specify)', ['4.H']],
+            ['Land converted to Settlement', ['4.H.1']],
+            ['Reservoir of Petit-Saut in French Guiana', ['4.H.5']],
+            ['Biogenic NMVOCs from managed forest', ['4.H.4']],
+            ['All other', ['4.H.9']],
+            ['Luxembourg', ['4.H.8']],
+            ['Settlements Remaining Settlements', ['4.H.2']],
+            ['4.E Settlements', ['4.H.2']],
+            ['4.C Grassland', ['4.H.3']],
+            ['Settlements', ['4.H.2']],
+            ['Other', ['4.H.9']],
+            ['N2O Emissions from Aquaculture Use', ['4.H.6']],
+            ['CH4 from artificial water bodies', ['4.H.7']],
+        ],
+        "entity_mapping": {
+            'CH4(2)': 'CH4',
+            'N2O(2)': 'N2O',
+            'Net CO2 emissions/removals(1), (2)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    # TODO: all other LULUCF tables
+    "Table5": {  # Waste overview
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 27,
+            "header": ['entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['Total waste', ['5']],
+            ['A. Solid waste disposal', ['5.A']],
+            ['1. Managed waste disposal sites', ['5.A.1']],
+            ['2. Unmanaged waste disposal sites', ['5.A.2']],
+            ['3. Uncategorized waste disposal sites', ['5.A.3']],
+            ['B. Biological treatment of solid waste', ['5.B']],
+            ['1. Composting', ['5.B.1']],
+            ['2. Anaerobic digestion at biogas facilities', ['5.B.2']],
+            ['C. Incineration and open burning of waste', ['5.C']],
+            ['1. Waste incineration', ['5.C.1']],
+            ['2. Open burning of waste', ['5.C.2']],
+            ['D. Wastewater treatment and discharge', ['5.D']],
+            ['1. Domestic wastewater', ['5.D.1']],
+            ['2. Industrial wastewater', ['5.D.2']],
+            ['3. Other (as specified in table 5.D)', ['5.D.3']],
+            ['E. Other (please specify)', ['5.E']],
+            ['Other', ['5.E.5']],  # EST, NOR
+            ['Recycling activities', ['5.E.1']],  # NLD
+            ['Mechanical-Biological Treatment MBT', ['5.E.2']],  # DEU
+            ['Accidental fires', ['5.E.3']],  # DEU, DKE, DNK, DNM
+            ['Decomposition of Petroleum-Derived Surfactants', ['5.E.4']],  # JPN
+            ['Other non-specified', ['5.E.5']],  # USA
+            ['Biogas burning without energy recovery', ['5.E.6']],  # PRT
+            ['Sludge spreading', ['5.E.7']],  # ESP
+            ['Accidental combustion', ['5.E.3']],  # ESP
+            ['Other waste', ['5.E.5']],  # CZE
+            ['5.E.1 Industrial Wastewater', ['5.E.8']],  # CAN, new in 2022
+            ['Memo item:(2)', ['\IGNORE']],
+            ['Long-term storage of C in waste disposal sites', ['M.Memo.LTSW']],
+            ['Annual change in total long-term C storage', ['M.Memo.ACLT']],
+            ['Annual change in total long-term C storage in HWP waste(3)', ['M.Memo.ACLTHWP']],
+        ],
+        "entity_mapping": {
+            'CO2(1)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested; memo items not read because of empty lines
+    "Table5.A": {  # solid waste disposal
+        "status": "tested",
+        "table": {
+            "firstrow": 6,
+            "lastrow": 15,
+            "header": ['group', 'group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION SINK CATEGORIES Annual waste at the SWDS',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION SINK CATEGORIES MCF',
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION SINK CATEGORIES DOCf',
+                'IMPLIED EMISSION FACTOR SINK CATEGORIES CH4(1)',
+                'IMPLIED EMISSION FACTOR SINK CATEGORIES CO2',
+                'EMISSIONS SINK CATEGORIES CH4 Amount of CH4 flared',
+                'EMISSIONS SINK CATEGORIES CH4 Amount of CH4 for energy recovery(3)',
+            ],
+            "stop_cats": ["", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Managed waste disposal sites', ['5.1']],
+            ['a. Anaerobic', ['5.1.a']],
+            ['b. Semi-aerobic', ['5.1.b']],
+            ['2. Unmanaged waste disposal sites', ['5.2']],
+            ['3. Uncategorized waste disposal sites', ['5.3']],
+        ],
+        "entity_mapping": {
+            'EMISSIONS SINK CATEGORIES CH4 Emissions(2)': 'CH4',
+            'EMISSIONS SINK CATEGORIES CO2(4) Amount of CH4 for energy recovery(3)': 'CO2',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table5.B": {  # Biological treatment of solid waste
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 16,
+            "header": ['group', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND OTHER RELATED INFORMATION Annual waste amount treated',
+                'IMPLIED EMISSION FACTOR CH4(1)',
+                'IMPLIED EMISSION FACTOR N2O',
+                'EMISSIONS CH4 Amount of CH4 flared',
+                'EMISSIONS CH4 Amount of CH4 for energy recovery(3)',
+            ],
+            "stop_cats": [".", "", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Composting', ['5.B.1'], 0],
+            ['Municipal solid waste', ['5.B.1.a'], 1],
+            ['Other (please specify)(4)', ['5.B.1.b'], 1],
+            ['Organic wastes households', ['5.B.1.b.i'], 2],  # NLD
+            ['Organic wastes from gardens and horticulture', ['5.B.1.b.ii'], 2],  # NLD
+            ['Food and garden waste', ['5.B.1.b.ii'], 2],  # DNM, DNK, DKE
+            ['Industrial Solid Waste', ['5.B.1.b.iii'], 2],  # POL
+            ['Home composting', ['5.B.1.b.iv'], 2],  # NOR
+            ['Mixed waste', ['5.B.1.b.v'], 2],  # LTU
+            ['Other waste', ['5.B.1.b.v'], 2],  # SWE
+            ['Sludge', ['5.B.1.b.vi'], 2],  # HUN, EST
+            ['Textile', ['5.B.1.b.vii'], 2],  # EST
+            ['Wood', ['5.B.1.b.viii'], 2],  # EST
+            ['Organic', ['5.B.1.b.ix'], 2],  # EST
+            ['Paper', ['5.B.1.b.x'], 2],  # EST
+            ['Other_SW', ['5.B.1.b.v'], 2],  # CZE
+            ['MBA treated MSW', ['5.B.1.b.xi'], 2],  # LUX
+            ['Specific Agricultural and Industrial Waste', ['5.B.1.b.xii'], 2],  # UKR
+            ['Industrial solid waste and constr. waste', ['5.B.1.b.xiii'], 2],  # FIN
+            ['Municipal sludge', ['5.B.1.b.xiv'], 2],  # FIN
+            ['Industrial sludge', ['5.B.1.b.xv'], 2],  # FIN
+            ['Open air composting', ['5.B.1.b.xvi'], 2],  # LIE
+            ['Industrial Waste', ['5.B.1.b.xvii'], 2],  # JPN
+            ['Human Waste and Johkasou sludge', ['5.B.1.b.xviii'], 2],  # JPN
+            ['2. Anaerobic digestion at biogas facilities(3)', ['5.B.2'], 0],
+            ['Municipal solid waste', ['5.B.2.a'], 1],
+            ['Other (please specify)(4)', ['5.B.2.b'], 1],
+            ['Organic wastes households', ['5.B.2.b.i'], 2],  # NLD
+            ['Organic wastes from gardens and horticulture', ['5.B.2.b.ii'], 2],  # NLD
+            ['Animal manure and other organic waste', ['5.B.2.b.iii'], 2],  # DNM, DNK, DKE
+            ['sewage sludge', ['5.B.2.b.iv'], 2],  # LTU
+            ['Other waste', ['5.B.2.b.v'], 2],  # SWE
+            ['Agricultural biogas facilities', ['5.B.2.b.vi'], 2],  # CHE
+            ['Other biogases from anaerobic fermentation', ['5.B.2.b.vii'], 2],  # HUN
+            ['Sludge', ['5.B.2.b.iv'], 2],  # EST
+            ['Anaerobic Digestion On-Farm and at Wastewater Treatment Facilities', ['5.B.2.b.viii'], 2],  # USA
+            ['Other_AD', ['5.B.2.b.v'], 2],  # CZE
+            ['Biogenic waste incl. wastes from Agriculture (manure)', ['5.B.2.b.ix'], 2],  # LUX
+            ['Industrial solid waste and constr. waste', ['5.B.2.b.x'], 2],  # FIN
+            ['Municipal sludge', ['5.B.2.b.xi'], 2],  # FIN
+            ['Industrial sludge', ['5.B.2.b.xii'], 2],  # FIN
+            ['Livestock manure co-digested', ['5.B.2.b.xiii'], 2],  # DEU, new in 2022
+            ['Waste water', ['5.B.2.b.xiv'], 2],  # NOR, new in 2022
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 Emissions(2)': 'CH4',
+            'EMISSIONS N2O Amount of CH4 for energy recovery(3)': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table5.C": {  # Waste incineration and open burning
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 38,
+            "header": ['group', 'group', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA Amount of wastes (incinerated/open burned)',
+                'IMPLIED EMISSION FACTOR Amount of wastes (incinerated/open burned) CO2',
+                'IMPLIED EMISSION FACTOR Amount of wastes (incinerated/open burned) CH4',
+                'IMPLIED EMISSION FACTOR Amount of wastes (incinerated/open burned) N2O',
+            ],
+            "stop_cats": [".", "", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Waste Incineration', ['5.C.1'], 0],
+            ['Biogenic (1)', ['5.C.1.a'], 1],
+            ['Municipal solid waste', ['5.C.1.a.i'], 2],
+            ['Other (please specify)(2)', ['5.C.1.a.ii'], 2],
+            ['Industrial Solid Wastes', ['5.C.1.a.ii.1'], 3],
+            ['Hazardous Waste', ['5.C.1.a.ii.2'], 3],
+            ['Clinical Waste', ['5.C.1.a.ii.3'], 3],
+            ['Sewage Sludge', ['5.C.1.a.ii.4'], 3],
+            ['Other (please specify)', ['5.C.1.a.ii.5'], 3],
+            ['Animal cremations', ['5.C.1.a.ii.5.a'], 4],  # DKE, DNK, DNM
+            ['Human cremations', ['5.C.1.a.ii.5.b'], 4],  # DKE, DNK, DNM
+            ['Cremation', ['5.C.1.a.ii.5.c'], 4],  # CHE, NOR, FRA, FRK
+            ['cremation', ['5.C.1.a.ii.5.c'], 4],  # DEU
+            ['Industrial waste', ['5.C.1.a.ii.5.d'], 4],  # NOR
+            ['Biogenic other waste', ['5.C.1.a.ii.5.e'], 4],  # EST
+            ['Biogenic waste other than Municipal Solid Waste', ['5.C.1.a.ii.5.e'], 4],  # ROU
+            ['Sludge', ['5.C.1.a.ii.5.f'], 4],  # JPN
+            ['Non-fossile liquid waste', ['5.C.1.a.ii.5.g'], 4],  # JPN
+            ['Non-biogenic', ['5.C.1.b'], 1],
+            ['Municipal solid waste', ['5.C.1.b.i'], 2],
+            ['Other (please specify)(3)', ['5.C.1.b.ii'], 2],
+            ['Industrial Solid Wastes', ['5.C.1.b.ii.1'], 3],
+            ['Hazardous Waste', ['5.C.1.b.ii.2'], 3],
+            ['Clinical Waste', ['5.C.1.b.ii.3'], 3],
+            ['Sewage Sludge', ['5.C.1.b.ii.4'], 3],
+            ['Fossil liquid waste', ['5.C.1.b.ii.5'], 3],
+            ['Other (please specify)', ['5.C.1.b.ii.6'], 3],
+            ['Quarantine and other waste', ['5.C.1.b.ii.6.a'], 4],  # NZL
+            ['Industrial waste', ['5.C.1.b.ii.6.b'], 4],  # CHE
+            ['Chemical waste', ['5.C.1.b.ii.6.c'], 4],  # GBR, GBK
+            ['Flaring in the chemical industry', ['5.C.1.a.ii.6.d'], 4],  # BEL
+            ['Sludge', ['5.C.1.a.ii.6.e'], 4],  # JPN
+            ['Solvents', ['5.C.1.a.ii.6.f'], 4],  # GRC, AUS
+            ['2. Open burning of waste', ['5.C.2'], 0],
+            ['Biogenic (1)', ['5.C.2.a'], 1],
+            ['Municipal solid waste', ['5.C.2.a.i'], 2],
+            ['Other (please specify)', ['5.C.2.a.ii'], 2],
+            ['agricultural waste', ['5.C.2.a.ii.1'], 3],  # ITA
+            ['Agricultural residues', ['5.C.2.a.ii.1'], 3],  # ESP
+            ['Natural residues', ['5.C.2.a.ii.2'], 3],  # CHE
+            ['Wood waste', ['5.C.2.a.ii.3'], 3],  # GBR, GBK
+            ['Bonfires etc.', ['5.C.2.a.ii.4'], 3],  # DEU
+            ['Bonfires', ['5.C.2.a.ii.4'], 3],  # NLD, ISL
+            ['Other', ['5.C.2.a.ii.5'], 3],  # EST
+            ['Other waste', ['5.C.2.a.ii.5'], 3],  # CZE
+            ['Industrial Solid Waste', ['5.C.2.a.ii.6'], 3],  # JPN
+            ['Non-biogenic', ['5.C.2.b'], 1],
+            ['Municipal solid waste', ['5.C.2.b.i'], 2],
+            ['Other (please specify)', ['5.C.2.b.ii'], 2],
+            ['Rural waste', ['5.C.2.b.ii.1'], 3],  # NZL
+            ['Accidental fires (vehicles)', ['5.C.2.b.ii.2'], 3],  # GBR, GBK
+            ['Accidental fires (buildings)', ['5.C.2.b.ii.3'], 3],  # GBR, GBK
+            ['Bonfires', ['5.C.2.b.ii.4'], 3],  # ISL
+            ['Other', ['5.C.2.b.ii.5'], 3],  # EST
+            ['Other waste', ['5.C.2.b.ii.5'], 3],  # CZE
+            ['Industrial Solid Waste', ['5.C.2.b.ii.6'], 3],  # JPN
+        ],
+        "entity_mapping": {
+            'EMISSIONS Amount of wastes (incinerated/open burned) CH4': 'CH4',
+            'EMISSIONS Amount of wastes (incinerated/open burned) CO2': 'CO2',
+            'EMISSIONS Amount of wastes (incinerated/open burned) N2O': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+    "Table5.D": {  # Waste incineration and open burning
+        "status": "tested",
+        "table": {
+            "firstrow": 5,
+            "lastrow": 13,
+            "header": ['group', 'entity', 'entity', 'entity', 'unit'],
+            "col_for_categories": "GREENHOUSE GAS SOURCE AND SINK CATEGORIES",
+            "categories": ["category"],
+            "cols_to_ignore": [
+                'ACTIVITY DATA AND RELATED INFORMATION Total organic product',
+                'ACTIVITY DATA AND RELATED INFORMATION Sludge removed(1)',
+                'ACTIVITY DATA AND RELATED INFORMATION Sludge removed(1) N in effluent',
+                'IMPLIED EMISSION FACTOR CH4(2) N in effluent',
+                'IMPLIED EMISSION FACTOR N2O(3) N in effluent',
+                'EMISSIONS CH4 Amount of CH4 flared',
+                'EMISSIONS CH4 Amount of CH4 for Energy Recovery(5)',
+            ],
+            "stop_cats": [".", "", np.nan],
+            "unit_info": unit_info["default"],
+        },
+        "sector_mapping": [
+            ['1. Domestic wastewater', ['5.D.1']],
+            ['2. Industrial wastewater', ['5.D.2']],
+            ['3. Other (please specify)', ['5.D.3']],
+            ['Other', ['5.D.3.a']],  # EST
+            ['Septic tanks', ['5.D.3.b']],  # NLD
+            ['Wastewater Effluent', ['5.D.3.c']],  # NLD
+            ['Fish farming', ['5.D.3.d']],  # FIN
+            ['Uncategorized wastewater', ['5.D.3.a']],  # CZE
+        ],
+        "entity_mapping": {
+            'EMISSIONS CH4 Emissions(4)': 'CH4',
+            'EMISSIONS N2O(3) Amount of CH4 for Energy Recovery(5)': 'N2O',
+        },
+        "coords_defaults": {
+            "type": "Total",
+        },
+    },  # tested
+}

+ 6 - 0
code/UNFCCC_CRF_reader/crf_specifications/__init__.py

@@ -0,0 +1,6 @@
+"""
+Define the CRF specifications here for easy access
+"""
+
+from .CRF2021_specification import CRF2021
+from .CRF2022_specification import CRF2022

+ 32 - 0
code/UNFCCC_CRF_reader/crf_specifications/util.py

@@ -0,0 +1,32 @@
+""" Some definitions used for several CRF specifications"""
+
+unit_info = {
+    "default": {
+        "unit_row": 0,
+        "entity_row": "header",
+        "regexp_entity": r".*",
+        "regexp_unit": r"\((.*)\)",
+        "manual_repl_unit": {},
+        "default_unit": "kt",
+    },
+    "fgases": {
+        "unit_row": 0,
+        "entity_row": "header",
+        "regexp_entity": r".*",
+        "regexp_unit": r"\((.*)\)",
+        "manual_repl_unit": {
+            "CO2 equivalent (kt)": "kt CO2eq",
+        },
+        "default_unit": "t",
+    },
+    "industry": {  # contains fgas mixtures in CO2 eq units
+        "unit_row": 0,
+        "entity_row": "header",
+        "regexp_entity": r".*",
+        "regexp_unit": r"\((.*)\)",
+        "manual_repl_unit": {
+            "CO2 equivalent (kt)": "kt CO2eq",
+        },
+        "default_unit": "kt",
+    },
+}

+ 31 - 0
code/UNFCCC_CRF_reader/read_UNFCCC_CRF_submission.py

@@ -0,0 +1,31 @@
+"""
+This script is a wrapper around the read_crf_for_country
+function such that it can be called from datalad
+"""
+
+from UNFCCC_CRF_reader_prod import read_crf_for_country
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--country', help='Country name or code')
+parser.add_argument('--submission_year', help='Submission round to read', type=int)
+parser.add_argument('--submission_date', help='Date of submission to read', default=None)
+parser.add_argument('--re_read', help='Read data also if already read before',
+                    action='store_true')
+
+args = parser.parse_args()
+
+country = args.country
+submission_year = args.submission_year
+submission_date = args.submission_date
+re_read = args.re_read
+if submission_date == 'None':
+    submission_date = None
+
+read_crf_for_country(
+    country,
+    submission_year=submission_year,
+    submission_date=submission_date,
+    re_read=re_read
+)
+

+ 33 - 0
code/UNFCCC_CRF_reader/read_UNFCCC_CRF_submission_datalad.py

@@ -0,0 +1,33 @@
+"""
+wrapper around read_crf_for_country_datalad such that it can be called
+from doit in the current setup where doit runs on system python and
+not in the venv.
+"""
+
+from UNFCCC_CRF_reader_prod import read_crf_for_country_datalad
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--country', help='Country name or code')
+parser.add_argument('--submission_year', help='Submission round to read')
+parser.add_argument('--submission_date', help='Date of submission to read', default=None)
+parser.add_argument('--re_read', help='Read data also if already read before',
+                    action='store_true')
+
+args = parser.parse_args()
+
+country = args.country
+submission_year = args.submission_year
+submission_date = args.submission_date
+re_read = args.re_read
+
+
+if submission_date == "None":
+    submission_date = None
+
+read_crf_for_country_datalad(
+    country,
+    submission_year=int(submission_year),
+    submission_date=submission_date,
+    re_read=re_read
+)

+ 30 - 0
code/UNFCCC_CRF_reader/read_new_UNFCCC_CRF_for_year.py

@@ -0,0 +1,30 @@
+"""
+This script is a wrapper around the read_crf_for_country
+function such that it can be called from datalad
+"""
+
+from UNFCCC_CRF_reader_prod import read_new_crf_for_year
+import argparse
+
+parser = argparse.ArgumentParser()
+#parser.add_argument('--countries', help='List of country codes', default=None)
+parser.add_argument('--submission_year', help='Submission round to read', type=int)
+parser.add_argument('--submission_date', help='Date of submission to read', default=None)
+parser.add_argument('--re_read', help='Read data also if already read before',
+                    action='store_false')
+
+args = parser.parse_args()
+
+#countries = args.countries
+#if countries == "None":
+#    countries = None
+submission_year = args.submission_year
+re_read = args.re_read
+print(f"!!!!!!!!!!!!!!!!!!!!script: re_read={re_read}")
+read_new_crf_for_year(
+    submission_year=int(submission_year),
+#    countries=countries,
+    re_read=re_read
+)
+
+

+ 32 - 0
code/UNFCCC_CRF_reader/read_new_UNFCCC_CRF_for_year_datalad.py

@@ -0,0 +1,32 @@
+"""
+wrapper around read_crf_for_country_datalad such that it can be called
+from doit in the current setup where doit runs on system python and
+not in the venv.
+"""
+
+from UNFCCC_CRF_reader_prod import read_new_crf_for_year_datalad
+from util import NoCRFFilesError
+import argparse
+
+parser = argparse.ArgumentParser()
+#parser.add_argument('--countries', help='List of country codes', default=None)
+parser.add_argument('--submission_year', help='Submission round to read')
+parser.add_argument('--re_read', help='Read data also if already read before',
+                    action='store_false')
+
+args = parser.parse_args()
+
+#countries = args.countries
+#if countries == "None":
+#    countries = None
+submission_year = args.submission_year
+re_read = args.re_read
+print(f"!!!!!!!!!!!!!!!!!!!!script_dl: re_read={re_read}")
+try:
+    read_new_crf_for_year_datalad(
+        submission_year=int(submission_year),
+#        countries=countries,
+        re_read=re_read
+    )
+except NoCRFFilesError as err:
+    print(f"NoCRFFilesError: {err}")

+ 23 - 0
code/UNFCCC_CRF_reader/test_read_UNFCCC_CRF_for_year.py

@@ -0,0 +1,23 @@
+"""
+This script is a wrapper around the read_year_to_test_specs
+function such that it can be called from datalad
+"""
+
+from UNFCCC_CRF_reader_devel import read_year_to_test_specs
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--submission_year', help='Submission round to read', type=int)
+parser.add_argument('--data_year', help='Data year to read', type=int, default=2010)
+args = parser.parse_args()
+
+
+submission_year = args.submission_year
+data_year = args.data_year
+
+read_year_to_test_specs(
+    submission_year=submission_year,
+    data_year=data_year,
+)
+
+

+ 36 - 0
code/UNFCCC_CRF_reader/util.py

@@ -0,0 +1,36 @@
+from pathlib import Path
+
+# 4 for use from nbs, fix
+root_path = Path(__file__).parents[2].absolute()
+root_path = root_path.resolve()
+log_path = root_path / "log"
+code_path = root_path / "code"
+downloaded_data_path = root_path / "downloaded_data" / "UNFCCC"
+extracted_data_path = root_path / "extracted_data" / "UNFCCC"
+
+# TODO: move this to a more general location as we can't import it
+# to get_submissions_info
+custom_country_mapping = {
+    "EUA": "European Union",
+    "EUC": "European Union",
+    "FRK": "France",
+    "DKE": "Denmark",
+    "DNM": "Denmark",
+    "GBK": "United Kingdom of Great Britain and Northern Ireland",
+}
+
+all_crf_countries = [
+    'AUS', 'AUT', 'BEL', 'BGR', 'BLR',
+    'CAN', 'CHE', 'CYP', 'CZE', 'DEU', # 10
+    'DKE', 'DNK', 'DNM', 'ESP', 'EST',
+    'EUA', 'EUC', 'FIN', 'FRA', 'FRK', # 20
+    'GBK', 'GBR', 'GRC', 'HRV', 'HUN',
+    'IRL', 'ISL', 'ITA', 'JPN', 'KAZ', # 30
+    'LIE', 'LTU', 'LUX', 'LVA', 'MCO',
+    'MLT', 'NLD', 'NOR', 'NZL', 'POL', # 40
+    'PRT', 'ROU', 'RUS', 'SVK', 'SVN',
+    'SWE', 'TUR', 'UKR', 'USA', # 49
+]
+
+class NoCRFFilesError(Exception):
+    pass

+ 100 - 62
code/UNFCCC_reader/get_submissions_info.py

@@ -4,9 +4,26 @@
 from typing import List, Dict
 from pathlib import Path
 import json
-import countrynames
+import pycountry
 #import os
 
+root_path = Path(__file__).parents[2].absolute()
+root_path = root_path.resolve()
+code_path = root_path / "code"
+# beware, folders below are different than for CRF reader
+downloaded_data_path = root_path / "downloaded_data"
+extracted_data_path = root_path / "extracted_data"
+legacy_data_path = root_path / "legacy_data"
+
+# TODO: move this to general util package
+custom_country_mapping = {
+    "EUA": "European Union",
+    "EUC": "European Union",
+    "FRK": "France",
+    "DKE": "Denmark",
+    "DNM": "Denmark",
+    "GBK": "United Kingdom of Great Britain and Northern Ireland",
+}
 
 def get_country_submissions(
         country_name: str,
@@ -32,14 +49,9 @@ def get_country_submissions(
 
     """
 
-    codepath = Path(__file__).parent
-    data_folder = codepath / ".." / ".." / "downloaded_data"
+    data_folder = downloaded_data_path
 
-    # obtain country code
-    country_code = countrynames.to_code_3(country_name)
-    if country_code is None:
-        raise ValueError(f"Country name {country_name} can not be mapped to "
-                         f"any country code")
+    country_code = get_country_code(country_name)
 
     if print_sub:
         print(f"Country name {country_name} maps to ISO code {country_code}")
@@ -106,19 +118,12 @@ def get_country_datasets(
 
     """
 
-    codepath = Path(__file__).parent
-    #codepath = Path(os.getcwd()) / ".." / "code" / "UNFCCC_reader"
-    rootpath = codepath / ".." / ".."
-    rootpath = rootpath.resolve()
-    data_folder = rootpath / "extracted_data"
-    data_folder_legacy = rootpath / "legacy_data"
+    data_folder = extracted_data_path
+    data_folder_legacy = legacy_data_path
 
 
     # obtain country code
-    country_code = countrynames.to_code_3(country_name)
-    if country_code is None:
-        raise ValueError(f"Country name {country_name} can not be mapped to "
-                         f"any country code")
+    country_code = get_country_code(country_name)
 
     if print_ds:
         print(f"Country name {country_name} maps to ISO code {country_code}")
@@ -263,6 +268,43 @@ def get_country_datasets(
     return all_data
 
 
+def get_country_code(
+        country_name: str,
+)->str:
+    """
+    obtain country code. If the input is a code it will be returned, if the input
+    is not a three letter code a search will be performed
+
+    Parameters
+    __________
+    country_name: str
+        Country code or name to get the three-letter code for.
+
+    """
+    try:
+        # check if it's a 3 letter code
+        country = pycountry.countries.get(alpha_3=country_name)
+        country_code = country.alpha_3
+    except:
+        try:
+            country = pycountry.countries.search_fuzzy(country_name)
+        except:
+            raise ValueError(f"Country name {country_name} can not be mapped to "
+                             f"any country code")
+        if len(country) > 1:
+            country_code = None
+            for current_country in country:
+                if current_country.name == country_name:
+                    country_code = current_country.alpha_3
+            if country_code is None:
+                raise ValueError(f"Country name {country_name} has {len(country)} "
+                                 f"possible results for country codes.")
+
+        country_code = country[0].alpha_3
+
+    return country_code
+
+
 def get_possible_inputs(
         country_name: str,
         submission: str,
@@ -288,17 +330,10 @@ def get_possible_inputs(
         returns a list pathlib Path objects for the input files
     """
 
-    codepath = Path(__file__).parent
-    #codepath = Path(os.getcwd()) / ".." / "code" / "UNFCCC_reader"
-    rootpath = codepath / ".." / ".."
-    rootpath = rootpath.resolve()
-    data_folder = rootpath / "downloaded_data"
+    data_folder = downloaded_data_path
 
     # obtain country code
-    country_code = countrynames.to_code_3(country_name)
-    if country_code is None:
-        raise ValueError(f"Country name {country_name} can not be mapped to "
-                         f"any country code")
+    country_code = get_country_code(country_name)
 
     if print_info:
         print(f"Country name {country_name} maps to ISO code {country_code}")
@@ -319,7 +354,7 @@ def get_possible_inputs(
                     input_folder = item / country_folder / submission
                     if input_folder.exists():
                         for filepath in input_folder.glob("*"):
-                            input_files.append(filepath.relative_to(rootpath))
+                            input_files.append(filepath.relative_to(root_path))
 
     if print_info:
         if input_files:
@@ -357,18 +392,10 @@ def get_possible_outputs(
         returns a list pathlib Path objects for the input files
     """
 
-    codepath = Path(__file__).parent
-    #codepath = Path(os.getcwd()) / ".." / "code" / "UNFCCC_reader"
-    rootpath = codepath / ".." / ".."
-    rootpath = rootpath.resolve()
-    data_folder = rootpath / "extracted_data"
+    data_folder = extracted_data_path
 
     # obtain country code
-    country_code = countrynames.to_code_3(country_name)
-    if country_code is None:
-        raise ValueError(f"Country name {country_name} can not be mapped to "
-                         f"any country code")
-
+    country_code = get_country_code(country_name)
     if print_info:
         print(f"Country name {country_name} maps to ISO code {country_code}")
 
@@ -386,7 +413,7 @@ def get_possible_outputs(
                 output_folder = item / country_folder
                 if output_folder.exists():
                     for filepath in output_folder.glob(country_code + "_" + submission + "*"):
-                        output_files.append(filepath.relative_to(rootpath))
+                        output_files.append(filepath.relative_to(root_path))
 
     if print_info:
         if output_files:
@@ -423,22 +450,20 @@ def get_code_file(
         returns a pathlib Path object for the code file
     """
 
-    codepath = Path(__file__).parent
-    #codepath = Path(os.getcwd()) / ".." / "code" / "UNFCCC_reader"
-    rootpath = codepath / ".." / ".."
-    rootpath = rootpath.resolve()
     code_file_path = None
 
+    # CRF is an exception as it's read using the UNFCCC_CRF_reader module
+    # so we return the path to that.
+    if submission[0:3] == "CRF":
+        return root_path / "UNFCCC_CRF_reader"
+
     # obtain country code
-    country_code = countrynames.to_code_3(country_name)
-    if country_code is None:
-        raise ValueError(f"Country name {country_name} can not be mapped to "
-                         f"any country code")
+    country_code = get_country_code(country_name)
 
     if print_info:
         print(f"Country name {country_name} maps to ISO code {country_code}")
 
-    with open(codepath / "folder_mapping.json", "r") as mapping_file:
+    with open(code_path / "folder_mapping.json", "r") as mapping_file:
         folder_mapping = json.load(mapping_file)
 
     if country_code not in folder_mapping:
@@ -446,7 +471,7 @@ def get_code_file(
             print("No code available")
             print("")
     else:
-        country_folder = codepath / folder_mapping[country_code]
+        country_folder = code_path / folder_mapping[country_code]
         code_file_name_candidate = "read_" + country_code + "_" + submission + "*"
 
         for file in country_folder.iterdir():
@@ -458,14 +483,15 @@ def get_code_file(
                                      f"'read_ISO3_submission_XXX.YYY'.")
                 else:
                     if print_info:
-                        print(f"Found code file {file.relative_to(rootpath)}")
+                        print(f"Found code file {file.relative_to(root_path)}")
                 code_file_path = file
 
     if code_file_path is not None:
-        return code_file_path.relative_to(rootpath)
+        return code_file_path.relative_to(root_path)
     else:
         return None
 
+
 def create_folder_mapping(
         folder: str,
         extracted: bool = False
@@ -490,24 +516,36 @@ def create_folder_mapping(
         Nothing
 
     """
-    codepath = Path(__file__).parent
-    rootpath = codepath / ".." / ".."
-    rootpath = rootpath.resolve()
-    folder = rootpath / folder
 
-    if extracted:
-        folder_mapping = {}
-    else:
+    folder = root_path / folder
+
+    folder_mapping = custom_country_mapping
+    if not extracted:
         folder_mapping = {
-            'VEN': 'Venezeula_(Bolivarian_Republic_of)',
-            'FSM': 'Micronesia_(Federated_State_of)',
-            'MKD': 'The_Republic_of_North_Macedonia',
+            **folder_mapping,
+            **{
+                'VEN': 'Venezeula_(Bolivarian_Republic_of)',
+                'FSM': 'Micronesia_(Federated_State_of)',
+                'MKD': 'The_Republic_of_North_Macedonia',
+            }
         }
     known_folders = list(folder_mapping.values())
+    print(f"known_folders: {known_folders}")
 
     for item in folder.iterdir():
         if item.is_dir():
-            ISO3 = countrynames.to_code_3(item.name)
+            try:
+                country = pycountry.countries.search_fuzzy(item.name.replace("_", " "))
+                if len(country) > 1:
+                    ISO3 = None
+                    for current_country in country:
+                        if current_country.name == item.name.replace("_", " "):
+                            ISO3 = current_country.alpha_3
+                else:
+                    ISO3 = country[0].alpha_3
+            except:
+                ISO3 = None
+
             if ISO3 is None:
                 if item.name not in known_folders:
                     print(folder_mapping.values())

+ 2 - 1
code/UNFCCC_reader/read_UNFCCC_submission.py

@@ -32,6 +32,7 @@ print("")
 
 # get the correct script
 script_name = get_code_file(country, submission)
+
 if script_name is not None:
     print(f"Found code file {script_name}")
     print("")
@@ -49,7 +50,7 @@ if script_name is not None:
     # make input files absolute to avoid datalad confusions when
     # root directory is via symlink
     input_files = [rootpath / file for file in input_files]
-    # convert file path's to str
+    # convert file's path to str
     input_files = [file.as_posix() for file in input_files]
 
     # get possible output files

+ 2 - 0
code/requirements.txt

@@ -4,4 +4,6 @@ pandas
 selenium
 primap2
 countrynames
+pycountry
 datalad
+treelib

+ 1 - 0
datasets/UNFCCC/CRF2021/CRF2021_raw_2022-05-06.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/kp/79/MD5E-s33840999--11e516b64e8049fb68fa371b49225fed.csv/MD5E-s33840999--11e516b64e8049fb68fa371b49225fed.csv

+ 1 - 0
datasets/UNFCCC/CRF2021/CRF2021_raw_2022-05-06.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/63/V8/MD5E-s46554422--f1ccbdd6b92976f65dcef57190a50ea0.nc/MD5E-s46554422--f1ccbdd6b92976f65dcef57190a50ea0.nc

+ 26 - 0
datasets/UNFCCC/CRF2021/CRF2021_raw_2022-05-06.yaml

@@ -0,0 +1,26 @@
+attrs:
+  area: area (ISO3)
+  cat: category (CRF2013_2021)
+  comment: Read fom xlsx file by Johannes Gütschow
+  contact: mail@johannes-guetschow.de
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Australia. Submission date: 15042021'
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: CRF2021_raw_2022-05-06.csv

+ 1 - 0
datasets/UNFCCC/CRF2022/CRF2022_raw_2022-05-06.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/w0/pX/MD5E-s33250841--463bbe35f92234a4421ba7154a27b9c1.csv/MD5E-s33250841--463bbe35f92234a4421ba7154a27b9c1.csv

+ 1 - 0
datasets/UNFCCC/CRF2022/CRF2022_raw_2022-05-06.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/5K/Fg/MD5E-s45510469--76b013c1d33a2f910c28c93863029340.nc/MD5E-s45510469--76b013c1d33a2f910c28c93863029340.nc

+ 26 - 0
datasets/UNFCCC/CRF2022/CRF2022_raw_2022-05-06.yaml

@@ -0,0 +1,26 @@
+attrs:
+  area: area (ISO3)
+  cat: category (CRF2013_2022)
+  comment: Read fom xlsx file by Johannes Gütschow
+  contact: mail@johannes-guetschow.de
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Austria. Submission date: 13042022'
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: CRF2022_raw_2022-05-06.csv

+ 70 - 8
dodo.py

@@ -33,6 +33,7 @@ def task_map_folders():
         'setup': ['setup_venv'],
     }
 
+
 # Tasks for getting submissions and downloading them
 def task_update_bur():
     """ Update list of BUR submissions """
@@ -54,7 +55,10 @@ def task_download_bur():
         # before download
         'actions': ['datalad run -m "Download BUR submissions" '
                     '-i downloaded_data/UNFCCC/submissions-bur.csv '
-                    './venv/bin/python code/UNFCCC_downloader/download_non-annexI.py --category=BUR.py'],
+                    './venv/bin/python code/UNFCCC_downloader/download_non-annexI.py --category=BUR',
+                    f"./venv/bin/python code/UNFCCC_reader/folder_mapping.py "
+                    f"--folder=downloaded_data/UNFCCC"
+                    ],
         'verbosity': 2,
         'setup': ['setup_venv'],
     }
@@ -72,8 +76,6 @@ def task_update_nc():
     }
 
 
-
-
 def task_download_nc():
     """ Download NC submissions """
     return {
@@ -82,7 +84,10 @@ def task_download_nc():
         # before download
         'actions': ['datalad run -m "Download NC submissions" '
                     '-i downloaded_data/UNFCCC/submissions-nc.csv '
-                    './venv/bin/python code/UNFCCC_downloader/download_non-annexI.py --category=NC'],
+                    './venv/bin/python code/UNFCCC_downloader/download_non-annexI.py --category=NC',
+                    f"./venv/bin/python code/UNFCCC_reader/folder_mapping.py "
+                    f"--folder=downloaded_data/UNFCCC"
+                    ],
         'verbosity': 2,
         'setup': ['setup_venv'],
     }
@@ -120,7 +125,10 @@ def task_download_annexi():
                     f"{update_aI_config['category']}{update_aI_config['year']}' "
                     f"-i downloaded_data/UNFCCC/submissions-annexI_{update_aI_config['year']}.csv "
                     f"./venv/bin/python code/UNFCCC_downloader/download_annexI.py "
-                    f"--category={update_aI_config['category']} --year={update_aI_config['year']}"],
+                    f"--category={update_aI_config['category']} --year={update_aI_config['year']}",
+                    f"./venv/bin/python code/UNFCCC_reader/folder_mapping.py "
+                    f"--folder=downloaded_data/UNFCCC"
+                    ],
         'verbosity': 2,
         'setup': ['setup_venv'],
     }
@@ -130,7 +138,10 @@ def task_download_ndc():
     """ Download NDC submissions """
     return {
         'actions': ['datalad run -m "Download NDC submissions" '
-                    './venv/bin/python code/UNFCCC_downloader/download_ndc.py'],
+                    './venv/bin/python code/UNFCCC_downloader/download_ndc.py',
+                    f"./venv/bin/python code/UNFCCC_reader/folder_mapping.py "
+                    f"--folder=downloaded_data/UNFCCC"
+                    ],
         'verbosity': 2,
         'setup': ['setup_venv'],
     }
@@ -144,11 +155,62 @@ read_config = {
 }
 
 
+# TODO: make individual task for non-UNFCCC submissions
 def task_read_unfccc_submission():
-    """ Read submission for a country (if code exists) """
+    """ Read submission for a country (if code exists) (not for CRF)"""
     return {
         'actions': [f"./venv/bin/python code/UNFCCC_reader/read_UNFCCC_submission.py "
-                    f"--country={read_config['country']} --submission={read_config['submission']}"],
+                    f"--country={read_config['country']} --submission={read_config['submission']}",
+                    f"./venv/bin/python code/UNFCCC_reader/folder_mapping.py "
+                    f"--folder=extracted_data/UNFCCC"
+                    ],
+        'verbosity': 2,
+        'setup': ['setup_venv'],
+    }
+
+
+# read UNFCCC submissions.
+# datalad run is called from within the read_UNFCCC_submission.py script
+read_config_crf = {
+    "country": get_var('country', None),
+    "submission_year": get_var('submission_year', None),
+    "submission_date": get_var('submission_date', None),
+    "re_read": get_var('re_read', False),
+    "countries": get_var('countries', None),
+}
+
+def task_read_unfccc_crf_submission():
+    """ Read CRF submission for a country (will re-read if data already present)"""
+    return {
+        'actions': [f"./venv/bin/python code/UNFCCC_CRF_reader/read_UNFCCC_CRF_submission_datalad.py "
+                    f"--country={read_config_crf['country']} "
+                    f"--submission_year={read_config_crf['submission_year']} "
+                    f"--submission_date={read_config_crf['submission_date']} ",
+                    f"./venv/bin/python code/UNFCCC_reader/folder_mapping.py "
+                    f"--folder=extracted_data/UNFCCC"
+                    ],
+        'verbosity': 2,
+        'setup': ['setup_venv'],
+    }
+
+
+def task_read_new_unfccc_crf_for_year():
+    """ Read CRF submission for all countries for given submission year. by default only reads
+    data not present yet. Only reads the latest updated submission for each country."""
+    actions = [f"./venv/bin/python code/UNFCCC_CRF_reader/read_new_UNFCCC_CRF_for_year_datalad.py "
+               f"--submission_year={read_config_crf['submission_year']} ",
+               f"./venv/bin/python code/UNFCCC_reader/folder_mapping.py "
+               f"--folder=extracted_data/UNFCCC"
+               ]
+    # specifying countries is currently disabled duo to problems with command line
+    # list arguments
+    #if read_config_crf["countries"] is not None:
+    #        actions[0] = actions[0] + f"--countries={read_config_crf['countries']} "
+    if read_config_crf["re_read"]:
+        actions[0] = actions[0] + " --re_read"
+    return {
+        #'basename': "Read_CRF_year",
+        'actions': actions,
         'verbosity': 2,
         'setup': ['setup_venv'],
     }

+ 1 - 0
downloaded_data/UNFCCC/00_new_downloads_BUR-2022-05-05.csv

@@ -0,0 +1 @@
+../../.git/annex/objects/QP/FF/MD5E-s348--d45e88e9f263cb5f95a76ae6852ee267.csv/MD5E-s348--d45e88e9f263cb5f95a76ae6852ee267.csv

+ 1 - 0
downloaded_data/UNFCCC/00_new_downloads_BUR-2022-05-17.csv

@@ -0,0 +1 @@
+../../.git/annex/objects/Gq/J4/MD5E-s181--3b45cad560150b64464c57cf941ec2e6.csv/MD5E-s181--3b45cad560150b64464c57cf941ec2e6.csv

+ 1 - 0
downloaded_data/UNFCCC/00_new_downloads_CRF2022-2022-05-06.csv

@@ -0,0 +1 @@
+../../.git/annex/objects/wm/95/MD5E-s1--68b329da9893e34099c7d8ad5cb9c940.csv/MD5E-s1--68b329da9893e34099c7d8ad5cb9c940.csv

+ 1 - 0
downloaded_data/UNFCCC/00_new_downloads_NC-2022-05-05.csv

@@ -0,0 +1 @@
+../../.git/annex/objects/Xk/v7/MD5E-s687--1b0b7471a7da41aeabd04e4d8c5f8128.csv/MD5E-s687--1b0b7471a7da41aeabd04e4d8c5f8128.csv

+ 1 - 0
downloaded_data/UNFCCC/Chad/NC3/RAPPORT_TCN_2020.pdf

@@ -0,0 +1 @@
+../../../../.git/annex/objects/Wp/K1/MD5E-s2493290--e4658460babb6897e47f7bfb4b3b889c.pdf/MD5E-s2493290--e4658460babb6897e47f7bfb4b3b889c.pdf

+ 1 - 0
downloaded_data/UNFCCC/Gabon/NC3/TROISIEME_COMMUNICATION_NATIONALE_DU_GABON_SUR_LES_CC.pdf

@@ -0,0 +1 @@
+../../../../.git/annex/objects/2G/7m/MD5E-s4263718--504d515430df203defe66c49b42757ff.pdf/MD5E-s4263718--504d515430df203defe66c49b42757ff.pdf

+ 1 - 0
downloaded_data/UNFCCC/Ghana/BUR3/gh_nir5_15052022_final.pdf

@@ -0,0 +1 @@
+../../../../.git/annex/objects/1g/7P/MD5E-s17845724--d426176f1ae2541d1d1df5a1b96b4bf1.pdf/MD5E-s17845724--d426176f1ae2541d1d1df5a1b96b4bf1.pdf

+ 1 - 0
downloaded_data/UNFCCC/Guatemala/NC3/3CNCC_low_compressed.pdf

@@ -0,0 +1 @@
+../../../../.git/annex/objects/M1/9p/MD5E-s72413830--e6ec4c76ec83292b50d5f2b07a4bf226.pdf/MD5E-s72413830--e6ec4c76ec83292b50d5f2b07a4bf226.pdf

+ 1 - 0
downloaded_data/UNFCCC/Morocco/BUR3/Morocco_BUR3_Fr.pdf

@@ -0,0 +1 @@
+../../../../.git/annex/objects/G9/z7/MD5E-s8252539--6fa03ee1d326b757df5d0b19c63b2537.pdf/MD5E-s8252539--6fa03ee1d326b757df5d0b19c63b2537.pdf

+ 1 - 0
downloaded_data/UNFCCC/Pakistan/BUR1/Pakistan%E2%80%99s_First_Biennial_Update_Report_%28BUR-1%29_-_2022.pdf

@@ -0,0 +1 @@
+../../../../.git/annex/objects/wM/fp/MD5E-s7387957--38a54cc6f9c4578b740586f124779ec2.pdf/MD5E-s7387957--38a54cc6f9c4578b740586f124779ec2.pdf

+ 1 - 0
downloaded_data/UNFCCC/Saudi_Arabia/NC4/7123846_Saudi_Arabia-NC4-1-Fourth_National_Communication_NC4_Kingdom_of_Saudi_Arabia_March_2022.pdf

@@ -0,0 +1 @@
+../../../../.git/annex/objects/vp/0j/MD5E-s9049227--3253bae33df735effdc19fd32d268a82.pdf/MD5E-s9049227--3253bae33df735effdc19fd32d268a82.pdf

+ 13 - 18
downloaded_data/UNFCCC/folder_mapping.json

@@ -1,19 +1,22 @@
 {
-    "VEN": [
-        "Venezeula_(Bolivarian_Republic_of)",
-        "Venezuela_(Bolivarian_Republic_of)"
-    ],
-    "FSM": [
-        "Micronesia_(Federated_State_of)",
-        "Micronesia_(Federated_States_of)"
-    ],
+    "EUA": "European Union",
+    "EUC": "European Union",
+    "FRK": "France",
+    "DKE": "Denmark",
+    "DNM": "Denmark",
+    "GBK": "United Kingdom of Great Britain and Northern Ireland",
+    "VEN": "Venezeula_(Bolivarian_Republic_of)",
+    "FSM": "Micronesia_(Federated_State_of)",
     "MKD": [
         "The_Republic_of_North_Macedonia",
         "North_Macedonia"
     ],
     "GHA": "Ghana",
     "STP": "Sao_Tome_and_Principe",
-    "KOR": "Republic_of_Korea",
+    "PRK": [
+        "Republic_of_Korea",
+        "Democratic_People's_Republic_of_Korea"
+    ],
     "MWI": "Malawi",
     "SAU": "Saudi_Arabia",
     "SDN": "Sudan",
@@ -39,13 +42,8 @@
     "BRA": "Brazil",
     "CRI": "Costa_Rica",
     "VNM": "Viet_Nam",
-    "CIV": [
-        "C\u00f4te_d\u2019Ivoire",
-        "C\u00f4te_d'Ivoire"
-    ],
     "QAT": "Qatar",
     "NAM": "Namibia",
-    "COD": "Democratic_Republic_of_the_Congo",
     "MLT": "Malta",
     "SVN": "Slovenia",
     "BGR": "Bulgaria",
@@ -109,7 +107,6 @@
     "YEM": "Yemen",
     "KEN": "Kenya",
     "MDV": "Maldives",
-    "PRK": "Democratic_People's_Republic_of_Korea",
     "JPN": "Japan",
     "CYP": "Cyprus",
     "BIH": "Bosnia_and_Herzegovina",
@@ -130,9 +127,9 @@
     "TKM": "Turkmenistan",
     "GNB": "Guinea-Bissau",
     "ZWE": "Zimbabwe",
+    "CIV": "C\u00f4te_d'Ivoire",
     "LBR": "Liberia",
     "SLB": "Solomon_Islands",
-    "IRN": "Iran_(Islamic_Republic_of)",
     "CPV": "Cabo_Verde",
     "DJI": "Djibouti",
     "MAR": "Morocco",
@@ -151,7 +148,6 @@
     "MUS": "Mauritius",
     "PER": "Peru",
     "BFA": "Burkina_Faso",
-    "EUU": "European_Union",
     "GBR": "United_Kingdom_of_Great_Britain_and_Northern_Ireland",
     "LCA": "Saint_Lucia",
     "NRU": "Nauru",
@@ -166,7 +162,6 @@
     "SWZ": "Eswatini",
     "ARE": "United_Arab_Emirates",
     "MNG": "Mongolia",
-    "BOL": "Bolivia_(Plurinational_State_of)",
     "MYS": "Malaysia",
     "VCT": "Saint_Vincent_and_the_Grenadines",
     "JAM": "Jamaica",

+ 1 - 1
downloaded_data/UNFCCC/submissions-annexI_2022.csv

@@ -1 +1 @@
-../../.git/annex/objects/kP/pw/MD5E-s20719--9b9990522b0ec59d552ccdc16832b953.csv/MD5E-s20719--9b9990522b0ec59d552ccdc16832b953.csv
+../../.git/annex/objects/69/Z8/MD5E-s21071--c956a6bfd89500d7e67396b799373777.csv/MD5E-s21071--c956a6bfd89500d7e67396b799373777.csv

+ 1 - 1
downloaded_data/UNFCCC/submissions-bur.csv

@@ -1 +1 @@
-../../.git/annex/objects/5M/81/MD5E-s40412--31912fa0380d96de44fc4581b162857a.csv/MD5E-s40412--31912fa0380d96de44fc4581b162857a.csv
+../../.git/annex/objects/jG/Mj/MD5E-s40892--2233cc2ab8fb7713181ce51187b3597d.csv/MD5E-s40892--2233cc2ab8fb7713181ce51187b3597d.csv

+ 1 - 1
downloaded_data/UNFCCC/submissions-nc.csv

@@ -1 +1 @@
-../../.git/annex/objects/8w/v9/MD5E-s75706--cce789029a4dcd07b260c0b2f2fcda13.csv/MD5E-s75706--cce789029a4dcd07b260c0b2f2fcda13.csv
+../../.git/annex/objects/7j/X0/MD5E-s76370--3ad42167a164335ee4d634d65946bbe5.csv/MD5E-s76370--3ad42167a164335ee4d634d65946bbe5.csv

+ 1 - 0
extracted_data/UNFCCC/Australia/AUS_CRF2021_15042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s810181--745a1ddf1d474c10264af9af47bc279a.csv

+ 1 - 0
extracted_data/UNFCCC/Australia/AUS_CRF2021_15042021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s849454--70396cfb03c9c1159cd2e32a622f08d1.nc

+ 26 - 0
extracted_data/UNFCCC/Australia/AUS_CRF2021_15042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Australia. Submission date: 15042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: AUS_CRF2021_15042021.csv

+ 1 - 0
extracted_data/UNFCCC/Austria/AUT_CRF2021_16042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s667475--6cec0493a97c3df22de8c1eb9ec04220.csv

+ 1 - 0
extracted_data/UNFCCC/Austria/AUT_CRF2021_16042021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s813003--5b60f26fb52774260e118c8cd21498ff.nc

+ 26 - 0
extracted_data/UNFCCC/Austria/AUT_CRF2021_16042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Austria. Submission date: 16042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: AUT_CRF2021_16042021.csv

+ 1 - 0
extracted_data/UNFCCC/Austria/AUT_CRF2022_13042022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/kx/Q5/MD5E-s702469--918ea6ed374daa99e0a6552af2a4ace6.csv/MD5E-s702469--918ea6ed374daa99e0a6552af2a4ace6.csv

+ 1 - 0
extracted_data/UNFCCC/Austria/AUT_CRF2022_13042022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/vz/xQ/MD5E-s827292--458326963029a098e15ec32ddc79dc3e.nc/MD5E-s827292--458326963029a098e15ec32ddc79dc3e.nc

+ 26 - 0
extracted_data/UNFCCC/Austria/AUT_CRF2022_13042022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Austria. Submission date: 13042022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: AUT_CRF2022_13042022.csv

+ 1 - 0
extracted_data/UNFCCC/Belarus/BLR_CRF2021_30032021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s574170--c9f1db6f7f32b62e85139b2a1419dbbe.csv

+ 1 - 0
extracted_data/UNFCCC/Belarus/BLR_CRF2021_30032021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s721911--b586e50c58836606f07db8d6390c7435.nc

+ 26 - 0
extracted_data/UNFCCC/Belarus/BLR_CRF2021_30032021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Belarus. Submission date: 30032021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: BLR_CRF2021_30032021.csv

+ 1 - 0
extracted_data/UNFCCC/Belarus/BLR_CRF2022_13042022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/9j/k1/MD5E-s609966--bfb5370dcb891cb7a29a9f319aab67d1.csv/MD5E-s609966--bfb5370dcb891cb7a29a9f319aab67d1.csv

+ 1 - 0
extracted_data/UNFCCC/Belarus/BLR_CRF2022_13042022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/z0/kZ/MD5E-s745103--6734b52028836cb34d5646ca6fd97803.nc/MD5E-s745103--6734b52028836cb34d5646ca6fd97803.nc

+ 26 - 0
extracted_data/UNFCCC/Belarus/BLR_CRF2022_13042022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Belarus. Submission date: 13042022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: BLR_CRF2022_13042022.csv

+ 1 - 0
extracted_data/UNFCCC/Belgium/BEL_CRF2021_13042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s787533--5e07d2cde5163d067e786264f3338249.csv

+ 1 - 0
extracted_data/UNFCCC/Belgium/BEL_CRF2021_13042021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s869176--9f13429c009ee19f5bd310dcb71f4939.nc

+ 26 - 0
extracted_data/UNFCCC/Belgium/BEL_CRF2021_13042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Belgium. Submission date: 13042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: BEL_CRF2021_13042021.csv

+ 1 - 0
extracted_data/UNFCCC/Belgium/BEL_CRF2022_11042022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/Qq/Xz/MD5E-s816878--d152b47d1fac2a18b7e1e9203796a48b.csv/MD5E-s816878--d152b47d1fac2a18b7e1e9203796a48b.csv

+ 1 - 0
extracted_data/UNFCCC/Belgium/BEL_CRF2022_11042022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/40/x8/MD5E-s879744--b234eb97bcc06c340289ac8aa53990f4.nc/MD5E-s879744--b234eb97bcc06c340289ac8aa53990f4.nc

+ 26 - 0
extracted_data/UNFCCC/Belgium/BEL_CRF2022_11042022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Belgium. Submission date: 11042022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: BEL_CRF2022_11042022.csv

+ 1 - 0
extracted_data/UNFCCC/Bulgaria/BGR_CRF2021_15042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s699963--081622c203645d05b7014b4944bf534a.csv

+ 1 - 0
extracted_data/UNFCCC/Bulgaria/BGR_CRF2021_15042021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s831612--4ee4b3ec5964ed580795baa5172733ab.nc

+ 26 - 0
extracted_data/UNFCCC/Bulgaria/BGR_CRF2021_15042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Bulgaria. Submission date: 15042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: BGR_CRF2021_15042021.csv

+ 1 - 0
extracted_data/UNFCCC/Bulgaria/BGR_CRF2022_15042022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/zW/zG/MD5E-s718847--b6e36c4c627aec3a2c5188ec4e832f57.csv/MD5E-s718847--b6e36c4c627aec3a2c5188ec4e832f57.csv

+ 1 - 0
extracted_data/UNFCCC/Bulgaria/BGR_CRF2022_15042022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/Gw/Kz/MD5E-s846977--6ba19004b7f8bbd7bc7f5957ca19ace1.nc/MD5E-s846977--6ba19004b7f8bbd7bc7f5957ca19ace1.nc

+ 26 - 0
extracted_data/UNFCCC/Bulgaria/BGR_CRF2022_15042022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Bulgaria. Submission date: 15042022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: BGR_CRF2022_15042022.csv

+ 1 - 0
extracted_data/UNFCCC/Canada/CAN_CRF2021_06042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s743300--ddb6b545c1872f4dea8e7e1b26ee3a46.csv

+ 1 - 0
extracted_data/UNFCCC/Canada/CAN_CRF2021_06042021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s850647--5f580367bbaaf375e19aa9e07a2620fd.nc

+ 26 - 0
extracted_data/UNFCCC/Canada/CAN_CRF2021_06042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Canada. Submission date: 06042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: CAN_CRF2021_06042021.csv

+ 1 - 0
extracted_data/UNFCCC/Canada/CAN_CRF2022_27032022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/Mj/89/MD5E-s860136--d6baf378495225cef30e5eba70310a9d.csv/MD5E-s860136--d6baf378495225cef30e5eba70310a9d.csv

+ 1 - 0
extracted_data/UNFCCC/Canada/CAN_CRF2022_27032022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/4g/48/MD5E-s861572--c0bab805b8e6ac1da256bdf511e65ae1.nc/MD5E-s861572--c0bab805b8e6ac1da256bdf511e65ae1.nc

+ 26 - 0
extracted_data/UNFCCC/Canada/CAN_CRF2022_27032022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Canada. Submission date: 27032022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: CAN_CRF2022_27032022.csv

+ 1 - 0
extracted_data/UNFCCC/Croatia/HRV_CRF2021_09042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s694087--41d00a3e9b132192cb1b922a61633aa3.csv

+ 1 - 0
extracted_data/UNFCCC/Croatia/HRV_CRF2021_09042021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s819438--f5f83acd39724760567c51447bcdfe49.nc

+ 26 - 0
extracted_data/UNFCCC/Croatia/HRV_CRF2021_09042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Croatia. Submission date: 09042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: HRV_CRF2021_09042021.csv

+ 1 - 0
extracted_data/UNFCCC/Croatia/HRV_CRF2022_12042022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/Mj/mQ/MD5E-s714554--cda09bec702ff57411b61fe1871125ea.csv/MD5E-s714554--cda09bec702ff57411b61fe1871125ea.csv

+ 1 - 0
extracted_data/UNFCCC/Croatia/HRV_CRF2022_12042022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/x1/xz/MD5E-s827465--1600775e85164e963dcb0cee935d88b2.nc/MD5E-s827465--1600775e85164e963dcb0cee935d88b2.nc

+ 26 - 0
extracted_data/UNFCCC/Croatia/HRV_CRF2022_12042022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Croatia. Submission date: 12042022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: HRV_CRF2022_12042022.csv

+ 1 - 0
extracted_data/UNFCCC/Cyprus/CYP_CRF2021_12032021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s576669--e9da9531e420a1f581892cfdfa43b736.csv

+ 1 - 0
extracted_data/UNFCCC/Cyprus/CYP_CRF2021_12032021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s748845--a15c62981cad7d7ea2053a89679fa89e.nc

+ 26 - 0
extracted_data/UNFCCC/Cyprus/CYP_CRF2021_12032021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Cyprus. Submission date: 12032021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: CYP_CRF2021_12032021.csv

+ 1 - 0
extracted_data/UNFCCC/Cyprus/CYP_CRF2022_13032022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/zJ/jw/MD5E-s597581--28e192a86e58da4c85df18a528fb4d36.csv/MD5E-s597581--28e192a86e58da4c85df18a528fb4d36.csv

+ 1 - 0
extracted_data/UNFCCC/Cyprus/CYP_CRF2022_13032022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/4W/p6/MD5E-s753158--5d7270251fb05887499d001f65ac0248.nc/MD5E-s753158--5d7270251fb05887499d001f65ac0248.nc

+ 26 - 0
extracted_data/UNFCCC/Cyprus/CYP_CRF2022_13032022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Cyprus. Submission date: 13032022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: CYP_CRF2022_13032022.csv

+ 1 - 0
extracted_data/UNFCCC/Czechia/CZE_CRF2021_07042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s743533--b214610bcedd5b477a7bcd210a57b232.csv

+ 1 - 0
extracted_data/UNFCCC/Czechia/CZE_CRF2021_07042021.nc

@@ -0,0 +1 @@
+/annex/objects/MD5E-s826529--6a596b44f609cb2817464c46113d8b9e.nc

+ 26 - 0
extracted_data/UNFCCC/Czechia/CZE_CRF2021_07042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Czechia. Submission date: 07042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - provenance
+  - entity
+  - unit
+data_file: CZE_CRF2021_07042021.csv

+ 1 - 0
extracted_data/UNFCCC/Czechia/CZE_CRF2022_14042022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/jm/4P/MD5E-s750859--3b4e739c61bfd2e1200b0cd2ab10a664.csv/MD5E-s750859--3b4e739c61bfd2e1200b0cd2ab10a664.csv

+ 1 - 0
extracted_data/UNFCCC/Czechia/CZE_CRF2022_14042022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/Kw/Fj/MD5E-s828344--ff99d21735ec5655eeaaf340e08988c1.nc/MD5E-s828344--ff99d21735ec5655eeaaf340e08988c1.nc

+ 26 - 0
extracted_data/UNFCCC/Czechia/CZE_CRF2022_14042022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Czechia. Submission date: 14042022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: CZE_CRF2022_14042022.csv

+ 1 - 0
extracted_data/UNFCCC/Denmark/DKE_CRF2021_11042021.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/WG/gk/MD5E-s799433--422f0b01bd62782b607cbc270c872c77.csv/MD5E-s799433--422f0b01bd62782b607cbc270c872c77.csv

+ 1 - 0
extracted_data/UNFCCC/Denmark/DKE_CRF2021_11042021.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/gv/9j/MD5E-s863212--eac3b5bd332dd37da2ce443772306406.nc/MD5E-s863212--eac3b5bd332dd37da2ce443772306406.nc

+ 26 - 0
extracted_data/UNFCCC/Denmark/DKE_CRF2021_11042021.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2021
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2021 to the UNFCCC in the common reporting format (CRF)
+    by Denmark. Submission date: 11042021'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2021)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - provenance
+  - type
+  - source
+  - area (ISO3)
+  - scenario (PRIMAP)
+  - category (CRF2013_2021)
+  - entity
+  - unit
+data_file: DKE_CRF2021_11042021.csv

+ 1 - 0
extracted_data/UNFCCC/Denmark/DKE_CRF2022_06042022.csv

@@ -0,0 +1 @@
+../../../.git/annex/objects/29/Zm/MD5E-s820993--70b514657a277349e0e418753985b3f3.csv/MD5E-s820993--70b514657a277349e0e418753985b3f3.csv

+ 1 - 0
extracted_data/UNFCCC/Denmark/DKE_CRF2022_06042022.nc

@@ -0,0 +1 @@
+../../../.git/annex/objects/68/V2/MD5E-s871141--05e2f23274cb1f7e447986a574809e7d.nc/MD5E-s871141--05e2f23274cb1f7e447986a574809e7d.nc

+ 26 - 0
extracted_data/UNFCCC/Denmark/DKE_CRF2022_06042022.yaml

@@ -0,0 +1,26 @@
+attrs:
+  references: https://unfccc.int/ghg-inventories-annex-i-parties/2022
+  rights: ''
+  contact: mail@johannes-guetschow.de
+  title: 'Data submitted in 2022 to the UNFCCC in the common reporting format (CRF)
+    by Denmark. Submission date: 06042022'
+  comment: Read fom xlsx file by Johannes Gütschow
+  institution: United Nations Framework Convention on Climate Change (www.unfccc.int)
+  cat: category (CRF2013_2022)
+  area: area (ISO3)
+  scen: scenario (PRIMAP)
+  sec_cats:
+  - type
+time_format: '%Y'
+dimensions:
+  '*':
+  - time
+  - type
+  - area (ISO3)
+  - source
+  - scenario (PRIMAP)
+  - category (CRF2013_2022)
+  - provenance
+  - entity
+  - unit
+data_file: DKE_CRF2022_06042022.csv

+ 1 - 0
extracted_data/UNFCCC/Denmark/DNK_CRF2021_16042021.csv

@@ -0,0 +1 @@
+/annex/objects/MD5E-s801269--73b92a519bdb52326ee2c6de3a8d9931.csv

Some files were not shown because too many files changed in this diff