Repository: naver/kapture (language: python)

Issue:
add main commits to 1.1 (again)...



Discussion / hints:

Fix patch:
diff --git a/README.adoc b/README.adoc
index 0301b7b..0843faa 100644
--- a/README.adoc
+++ b/README.adoc
@@ -49,23 +49,57 @@ my_dataset                 # Dataset root path
 │     ├─ map/lidar_01/0001.pcd # lidar data path used in records_lidar.txt
 │     ├─ query/query001.jpg    # image path used in records_camera.txt
 │     ├─ ...
-├─ reconstruction/
-│  ├─ keypoints/                    # 2D keypoints files
-│  │  ├─ keypoints.txt              # type of keypoint
-│  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
-│  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
-│  │  ├─ ...
-│  ├─ descriptors/                  # keypoint descriptors files
-│  │  ├─ descriptors.txt            # type of descriptor
-│  │  ├─ map/cam_01/00001.jpg.desc  # descriptors for corresponding image (example)
-│  │  ├─ query/query001.jpg.desc    # descriptors for corresponding image (example)
-│  │  ├─ ...
-│  ├─ ...
-│  ├─ points3d.txt                  # 3D points of the reconstruction
-│  ├─ observations.txt              # 2D/3D points corespondences
-│  ├─ matches/                      # matches files.
-│  │  ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example
-│  │  ├─ ...
+└─ reconstruction/
+   ├─ keypoints/                       # 2D keypoints files
+   │  ├─ r2d2_WASF-N8_20k              # identify the type of keypoints
+   │  │  ├─ keypoints.txt              # type of keypoint (shape and dtype)
+   │  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
+   │  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
+   │  │  ├─ ...
+   │  ├─ d2_tf                         # identify the type of keypoints
+   │  │  ├─ keypoints.txt              # type of keypoint (shape and dtype)
+   │  │  ├─ keypoints.tar              # instead of regular files, you can use an archive
+   │  │  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
+   │  │  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
+   │  │  │  ├─ ...
+   │  ├─ ...
+   ├─ descriptors/                     # keypoint descriptors files
+   │  ├─ r2d2_WASF-N8_20k              # identify the type of descriptors
+   │  │  ├─ descriptors.txt            # type of descriptor (keypoints type, shape and dtype)
+   │  │  ├─ map/cam_01/00001.jpg.desc  # descriptors for corresponding image (example)
+   │  │  ├─ query/query001.jpg.desc    # descriptors for corresponding image (example)
+   │  │  ├─ ...
+   │  ├─ d2_tf                         # identify the type of descriptors
+   │  │  ├─ descriptors.txt            # type of descriptor
+   │  │  ├─ descriptors.tar            # instead of regular files, you can use an archive
+   │  │  │  ├─ map/cam_01/00001.jpg.desc  # descriptors for corresponding image (example)
+   │  │  │  ├─ query/query001.jpg.desc    # descriptors for corresponding image (example)
+   │  │  │  ├─ ...
+   │  ├─ ...
+   ├─ points3d.txt                  # 3D points of the reconstruction
+   ├─ observations.txt              # 2D/3D points corespondences
+   ├─ matches/                      # matches files.
+   │  ├─ r2d2_WASF-N8_20k           # identify the type of keypoints that are matched
+   │  │  ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example
+   │  │  ├─  ...
+   │  ├─ d2_tf                      # identify the type of keypoints that are matched
+   │  │  ├─ matches.tar             # instead of regular files, you can use an archive
+   │  │  │  ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example
+   │  │  │  ├─  ...
+   │  ├─ ...
+   └─ global_features/                 # global feature files
+      ├─ AP-GeM-LM18                   # identify the type of global_features
+      │  ├─ global_features.txt        # type of global feature
+      │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
+      │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
+      │  └─ ...
+      ├─ DELG                          # identify the type of global_features
+      │  ├─ global_features.txt        # type of global feature
+      │  ├─ global_features.tar        # instead of regular files, you can use an archive
+      │  │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
+      │  │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
+      │  │  └─ ...
+      ├─ ...
 ----
 
 == Software
diff --git a/dataset/kapture_dataset_index.yaml b/dataset/kapture_dataset_index.yaml
index ab057e1..3cc8b00 100644
--- a/dataset/kapture_dataset_index.yaml
+++ b/dataset/kapture_dataset_index.yaml
@@ -439,4 +439,48 @@ SILDa_mapping:
 SILDa_query:
   sha256sum: 65a41a8ca26c016d7f71418ac085c54043767a34996e9285a13ad7a81913e3b2
   url: https://imperialcollegelondon.box.com/shared/static/yvjyoj1bmp5h978qy7thuuv8uymbjps1.gz
-
+GangnamStation_B1_release_mapping:
+  sha256sum: 284f98b48e5d71d4f73073045b9d0dc61e0c98836e0b4e4c17eb4343a606886d
+  url: https://challenge.naverlabs.com/kapture/GangnamStation_B1_release_mapping.tar.gz
+GangnamStation_B1_release_test:
+  sha256sum: 3adf62404ced66401bbc5872cddf6e82d15e65e91a0dd6d274d652cd44f27939
+  url: https://challenge.naverlabs.com/kapture/GangnamStation_B1_release_test.tar.gz
+GangnamStation_B1_release_validation:
+  sha256sum: 51c6468ac9b21972a4e4125f58578e6816bc230424a98264c0f42a9f5cec8f73
+  url: https://challenge.naverlabs.com/kapture/GangnamStation_B1_release_validation.tar.gz
+GangnamStation_B2_release_mapping:
+  sha256sum: 0cf73e739c35cbdfa1a1327acadc76bde04bc179ca11919a2d0834c9cd31aaf9
+  url: https://challenge.naverlabs.com/kapture/GangnamStation_B2_release_mapping.tar.gz
+GangnamStation_B2_release_test:
+  sha256sum: d773e2b9be6b2dbabd60f4935552440ae74b43b9dbdd9bbfe1c39fd2b0533cd1
+  url: https://challenge.naverlabs.com/kapture/GangnamStation_B2_release_test.tar.gz
+GangnamStation_B2_release_validation:
+  sha256sum: c425e862cadc79298738e3e5d6afa45ffcd72629f5c04f23a6354d59bdf4a6c7
+  url: https://challenge.naverlabs.com/kapture/GangnamStation_B2_release_validation.tar.gz
+HyundaiDepartmentStore_1F_release_mapping:
+  sha256sum: b5890ff1fd49847e7b1cbb71ab7bcccbc21b209d2fbf0ca54b3216bf85c71b4a
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_1F_release_mapping.tar.gz
+HyundaiDepartmentStore_1F_release_test:
+  sha256sum: d8815848e43f5913c261e119db80cfb1ac28776c4292544cc89db99b83587ac9
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_1F_release_test.tar.gz
+HyundaiDepartmentStore_1F_release_validation:
+  sha256sum: bbf19825659c15bdb7a00e893a2dc2478503231929a4f811f08056f2c572703d
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_1F_release_validation.tar.gz
+HyundaiDepartmentStore_4F_release_mapping:
+  sha256sum: c889399115c5e0e86f7f5160e76e57311d3037812e5cfa5c06df6a3435f88cff
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_4F_release_mapping.tar.gz
+HyundaiDepartmentStore_4F_release_test:
+  sha256sum: de987207bd752c99ee3ab225e3759fe1011d6c1b08c0dadaf358cd37db71b321
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_4F_release_test.tar.gz
+HyundaiDepartmentStore_4F_release_validation:
+  sha256sum: 3761c19d7f02c40de76ba711ab3c09e571bfcdd74917576fef1aa13b7b0f4e22
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_4F_release_validation.tar.gz
+HyundaiDepartmentStore_B1_release_mapping:
+  sha256sum: d585ae1c4e01e48456442fabede1500f5a4508e45e7e255aea674ba6600464aa
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_B1_release_mapping.tar.gz
+HyundaiDepartmentStore_B1_release_test:
+  sha256sum: 8f6ff8e9fa8db7b6b3958420aa001053a9f31be7918f5941bbada37cdc8a7f1f
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_B1_release_test.tar.gz
+HyundaiDepartmentStore_B1_release_validation:
+  sha256sum: 43351bccc0a949ba0b63e22df65ec8231813a9317999d49eed0b889050f6060a
+  url: https://challenge.naverlabs.com/kapture/HyundaiDepartmentStore_B1_release_validation.tar.gz
diff --git a/doc/tutorial.adoc b/doc/tutorial.adoc
index 7d245bb..8cdd2fc 100644
--- a/doc/tutorial.adoc
+++ b/doc/tutorial.adoc
@@ -71,9 +71,16 @@ First, load a dataset:
 
 [source,python]
 ----
+import kapture
 import kapture.io.csv as csv
 
-kapture_data = csv.kapture_from_dir('../samples/virtual_gallery/kapture/training')
+dataset_path = '../samples/virtual_gallery/kapture/training'
+# keypoints, descriptors, matches, global features can be stored in tar files, so open them in advance
+# use with csv.get_all_tar_handlers(dataset_path) as tar_handlers
+# or call
+# tar_handlers.close() before exiting the program
+tar_handlers = csv.get_all_tar_handlers(dataset_path)
+kapture_data = csv.kapture_from_dir(dataset_path, tar_handlers=tar_handlers)
 ----
 
 === Get poses
@@ -132,6 +139,13 @@ outputs:
 ...
 ----
 
+=== Close handlers before quitting
+[source,python]
+----
+tar_handlers.close()
+----
+
+
 === Reconstruction
 
 Let's have a look at the reconstruction. First, import more tools from kapture and load another sample dataset:
@@ -145,7 +159,9 @@ from kapture.io.image import image_keypoints_to_image_file
 from PIL import Image
 from tqdm import tqdm
 # load another dataset with reconstruction
-kapture_data = csv.kapture_from_dir('../samples/maupertuis/kapture/')
+dataset_path='../samples/maupertuis/kapture/'
+tar_handlers = csv.get_all_tar_handlers(dataset_path)
+kapture_data = csv.kapture_from_dir(dataset_path, tar_handlers=tar_handlers)
 ----
 
 Let's see what is stored in __keypoints__, __descriptors__ and __matches__:
@@ -163,35 +179,35 @@ output:
 
 [source,bash]
 ----
-keypoints       :  SIFT (float32 x 6) = [
-	00.jpg,
-	02.jpg,
-	01.jpg,
-	03.jpg
-]
-descriptors     :  SIFT (uint8 x 128) = [
-	00.jpg,
-	02.jpg,
-	01.jpg,
-	03.jpg
-]
+keypoints       :  {'SIFT': SIFT (float32 x 6) = [
+        02.jpg,
+        00.jpg,
+        01.jpg,
+        03.jpg
+]}
+descriptors     :  {'SIFT': SIFT SIFT L2 (uint8 x 128) = [
+        02.jpg,
+        00.jpg,
+        01.jpg,
+        03.jpg
+]}
 global_features :  None
-matches         :  [
-	(01.jpg , 02.jpg),
-	(01.jpg , 03.jpg),
-	(00.jpg , 03.jpg),
-	(00.jpg , 02.jpg),
-	(02.jpg , 03.jpg),
-	(00.jpg , 01.jpg)
-]
+matches         :  {'SIFT': [
+        (01.jpg , 02.jpg),
+        (00.jpg , 01.jpg),
+        (00.jpg , 03.jpg),
+        (01.jpg , 03.jpg),
+        (00.jpg , 02.jpg),
+        (02.jpg , 03.jpg)
+]}
 observations    :
-[00000]: 	(01.jpg, 4561)	(02.jpg, 3389)	(00.jpg, 4975)	(03.jpg, 3472)
-[00001]: 	(01.jpg, 4557)	(02.jpg, 4128)	(00.jpg, 4970)
-[00002]: 	(01.jpg, 4554)	(02.jpg, 3466)	(00.jpg, 4958)	(03.jpg, 3556)
+[00000, SIFT]:  (01.jpg, 4561)  (02.jpg, 3389)  (00.jpg, 4975)  (03.jpg, 3472)
+[00001, SIFT]:  (01.jpg, 4557)  (02.jpg, 4128)  (00.jpg, 4970)
+[00002, SIFT]:  (01.jpg, 4554)  (02.jpg, 3466)  (00.jpg, 4958)  (03.jpg, 3556)
 ....
-[01036]: 	(01.jpg, 2484)	(02.jpg, 3702)	(00.jpg, 2527)	(03.jpg, 3944)
-[01037]: 	(01.jpg, 2498)	(02.jpg, 2191)	(00.jpg, 2621)
-[01038]: 	(01.jpg, 2507)	(02.jpg, 1941)	(00.jpg, 2696)
+[01036, SIFT]: 	(01.jpg, 2484)	(02.jpg, 3702)	(00.jpg, 2527)	(03.jpg, 3944)
+[01037, SIFT]: 	(01.jpg, 2498)	(02.jpg, 2191)	(00.jpg, 2621)
+[01038, SIFT]: 	(01.jpg, 2507)	(02.jpg, 1941)	(00.jpg, 2696)
 
 points3d        :
 [[ -2.39675   4.62278  13.2759   57.       57.       49.     ]
@@ -210,13 +226,14 @@ Then, we load the keypoints of the first image (`00.jpg`) as a numpy array using
 [source,python]
 ----
 image_name = '00.jpg'
+keypoints_type = 'SIFT'
 # keypoints_filepaths[image_name] -> keypoints file full path
-keypoints_filepaths = keypoints_to_filepaths(kapture_data.keypoints, kapture_dirpath)
+keypoints_filepaths = keypoints_to_filepaths(kapture_data.keypoints[keypoints_type], keypoints_type, dataset_path, tar_handlers)
 # for image_name in kapture_data.keypoints:
 keypoints_filepath = keypoints_filepaths[image_name]
 keypoints_data = image_keypoints_from_file(filepath=keypoints_filepath,
-                                           dsize=kapture_data.keypoints.dsize,
-                                           dtype=kapture_data.keypoints.dtype)
+                                           dsize=kapture_data.keypoints[keypoints_type].dsize,
+                                           dtype=kapture_data.keypoints[keypoints_type].dtype)
 print(f'keypoints of "{image_name}" as numpy array of {keypoints_data.dtype} and shape {keypoints_data.shape}:')
 print(keypoints_data)
 ----
@@ -249,7 +266,7 @@ to directly draw keypoints on top of an image:
 ----
 # images_filepaths[image_name] -> image file full path
 images_filepaths = images_to_filepaths(kapture_data.records_camera, kapture_dirpath)
-for image_name in tqdm(kapture_data.keypoints):
+for image_name in tqdm(kapture_data.keypoints[keypoints_type]):
     image_filepath = images_filepaths[image_name]
     keypoints_filepath = keypoints_filepaths[image_name]
     image_with_kp_filepath = keypoints_filepath + '_preview.jpg'
@@ -258,11 +275,11 @@ for image_name in tqdm(kapture_data.keypoints):
             output_filepath=image_with_kp_filepath,
             image_filepath=image_filepath,
             keypoints_filepath=keypoints_filepath,
-            keypoint_dtype=kapture_data.keypoints.dtype,
-            keypoint_dsize=kapture_data.keypoints.dsize,
+            keypoint_dtype=kapture_data.keypoints[keypoints_type].dtype,
+            keypoint_dsize=kapture_data.keypoints[keypoints_type].dsize,
             radius=6
         )
-
+tar_handlers.close()
 ----
 
 Saved in `../samples/maupertuis/kapture/reconstruction/keypoints/00.jpg.kpt_preview.png`, you will find:
diff --git a/kapture/algo/compare.py b/kapture/algo/compare.py
index 245cbb3..5153d3f 100644
--- a/kapture/algo/compare.py
+++ b/kapture/algo/compare.py
@@ -6,7 +6,7 @@
 
 import math
 import numpy as np
-from typing import List, Optional, Tuple, Any, Union
+from typing import Dict, List, Optional, Set, Tuple, Any, Union
 import inspect
 
 import kapture
@@ -255,17 +255,41 @@ def equal_nested_dict_or_set(data_a, data_b, name_to_log, expected_type=None) ->
     return are_equal
 
 
-def equal_image_features(
-        data_a: Optional[Union[kapture.Keypoints, kapture.Descriptors, kapture.GlobalFeatures]],
-        data_b: Optional[Union[kapture.Keypoints, kapture.Descriptors, kapture.GlobalFeatures]]
+def equal_sets(data_a: Set[Any], data_b: Set[Any], func_name: str = 'equal_sets'):
+    set_difference = data_a.difference(data_b)
+    are_equal = len(set_difference) == 0
+    if not are_equal:
+        getLogger().debug('{}:\n{}'.format(func_name, '\n'.join((str(s) for s in set_difference))))
+    return are_equal
+
+
+def equal_keypoints(
+        data_a: kapture.Keypoints,
+        data_b: kapture.Keypoints
 ) -> bool:
     """
-    Compare two instances of kapture features (keypoints, descriptors or global features).
+    Compare two instances of kapture keypoints.
 
     :param data_a: first set of features
     :param data_b: second set of features
     :return: True if they are identical, False otherwise.
     """
+    assert isinstance(data_a, kapture.Keypoints)
+    assert isinstance(data_b, kapture.Keypoints)
+    if data_a.type_name != data_b.type_name or data_a.dtype != data_b.dtype or data_a.dsize != data_b.dsize:
+        return False
+    current_function_name = inspect.getframeinfo(inspect.currentframe()).function
+    return equal_sets(data_a, data_b, current_function_name)
+
+
+def equal_keypoints_collections(data_a: Optional[Dict[str, kapture.Keypoints]],
+                                data_b: Optional[Dict[str, kapture.Keypoints]]):
+    """
+    Compare two keypoints collections.
+    :param data_a: first collection of features
+    :param data_b: second collection of features
+    :return: True if they are identical, False otherwise.
+    """
     # early check if one is None
     if data_a is None and data_b is None:
         return True
@@ -278,14 +302,111 @@ def equal_image_features(
     assert data_a is not None
     assert data_b is not None
 
-    if data_a.type_name != data_b.type_name or data_a.dtype != data_b.dtype or data_a.dsize != data_b.dsize:
+    current_function_name = inspect.getframeinfo(inspect.currentframe()).function
+    if not equal_sets(set(data_a.keys()), set(data_b.keys()), current_function_name):
+        return False
+    for keypoint_type in data_a.keys():
+        if not equal_keypoints(data_a[keypoint_type], data_b[keypoint_type]):
+            return False
+    return True
+
+
+def equal_descriptors(
+        data_a: kapture.Descriptors,
+        data_b: kapture.Descriptors
+) -> bool:
+    """
+    Compare two instances of kapture descriptors.
+
+    :param data_a: first set of features
+    :param data_b: second set of features
+    :return: True if they are identical, False otherwise.
+    """
+    assert isinstance(data_a, kapture.Descriptors)
+    assert isinstance(data_b, kapture.Descriptors)
+    if data_a.type_name != data_b.type_name or data_a.dtype != data_b.dtype or data_a.dsize != data_b.dsize \
+            or data_a.keypoints_type != data_b.keypoints_type or data_a.metric_type != data_b.metric_type:
+        return False
+    current_function_name = inspect.getframeinfo(inspect.currentframe()).function
+    return equal_sets(data_a, data_b, current_function_name)
+
+
+def equal_descriptors_collections(data_a: Optional[Dict[str, kapture.Descriptors]],
+                                  data_b: Optional[Dict[str, kapture.Descriptors]]):
+    """
+    Compare two descriptors collections.
+    :param data_a: first collection of features
+    :param data_b: second collection of features
+    :return: True if they are identical, False otherwise.
+    """
+    # early check if one is None
+    if data_a is None and data_b is None:
+        return True
+    elif data_a is None and data_b is not None:
+        return False
+    elif data_a is not None and data_b is None:
+        return False
+
+    # should not happen because of previous lines, use assert to help your ide figure out the type of data
+    assert data_a is not None
+    assert data_b is not None
+
+    current_function_name = inspect.getframeinfo(inspect.currentframe()).function
+    if not equal_sets(set(data_a.keys()), set(data_b.keys()), current_function_name):
+        return False
+    for descriptors_type in data_a.keys():
+        if not equal_descriptors(data_a[descriptors_type], data_b[descriptors_type]):
+            return False
+    return True
+
+
+def equal_global_features(
+        data_a: kapture.GlobalFeatures,
+        data_b: kapture.GlobalFeatures
+) -> bool:
+    """
+    Compare two instances of kapture global features.
+
+    :param data_a: first set of features
+    :param data_b: second set of features
+    :return: True if they are identical, False otherwise.
+    """
+    assert isinstance(data_a, kapture.GlobalFeatures)
+    assert isinstance(data_b, kapture.GlobalFeatures)
+    if data_a.type_name != data_b.type_name or data_a.dtype != data_b.dtype or data_a.dsize != data_b.dsize \
+            or data_a.metric_type != data_b.metric_type:
+        return False
+    current_function_name = inspect.getframeinfo(inspect.currentframe()).function
+    return equal_sets(data_a, data_b, current_function_name)
+
+
+def equal_global_features_collections(data_a: Optional[Dict[str, kapture.GlobalFeatures]],
+                                      data_b: Optional[Dict[str, kapture.GlobalFeatures]]):
+    """
+    Compare two global_features collections.
+    :param data_a: first collection of features
+    :param data_b: second collection of features
+    :return: True if they are identical, False otherwise.
+    """
+    # early check if one is None
+    if data_a is None and data_b is None:
+        return True
+    elif data_a is None and data_b is not None:
+        return False
+    elif data_a is not None and data_b is None:
         return False
-    flattened_a = list(flatten(data_a, is_sorted=True))
-    flattened_b = list(flatten(data_b, is_sorted=True))
-    are_equal = (flattened_a == flattened_b)
-    if not are_equal:
-        log_difference(flattened_a, flattened_b, 'equal_image_features')
-    return are_equal
+
+    # should not happen because of previous lines, use assert to help your ide figure out the type of data
+    assert data_a is not None
+    assert data_b is not None
+
+    current_function_name = inspect.getframeinfo(inspect.currentframe()).function
+    if not equal_sets(set(data_a.keys()), set(data_b.keys()), current_function_name):
+        return False
+    for global_features_type in data_a.keys():
+        if not equal_global_features(data_a[global_features_type], data_b[global_features_type]):
+            return False
+    return True
 
 
 def equal_records_camera(
@@ -409,8 +530,8 @@ def equal_records_magnetic(
 
 
 def equal_matches(
-        matches_a: Optional[kapture.Matches],
-        matches_b: Optional[kapture.Matches]) -> bool:
+        matches_a: kapture.Matches,
+        matches_b: kapture.Matches) -> bool:
     """
     Compare two instances of kapture.Matches.
 
@@ -418,9 +539,39 @@ def equal_matches(
     :param matches_b: second set of matches
     :return: True if they are identical, False otherwise.
     """
-    expected_type = kapture.Matches
+    assert isinstance(matches_a, kapture.Matches)
+    assert isinstance(matches_b, kapture.Matches)
     current_function_name = inspect.getframeinfo(inspect.currentframe()).function
-    return equal_nested_dict_or_set(matches_a, matches_b, current_function_name, expected_type)
+    return equal_sets(matches_a, matches_b, current_function_name)
+
+
+def equal_matches_collections(data_a: Optional[Dict[str, kapture.Matches]],
+                              data_b: Optional[Dict[str, kapture.Matches]]):
+    """
+    Compare two matches collections.
+    :param data_a: first collection of matches
+    :param data_b: second collection of matches
+    :return: True if they are identical, False otherwise.
+    """
+    # early check if one is None
+    if data_a is None and data_b is None:
+        return True
+    elif data_a is None and data_b is not None:
+        return False
+    elif data_a is not None and data_b is None:
+        return False
+
+    # should not happen because of previous lines, use assert to help your ide figure out the type of data
+    assert data_a is not None
+    assert data_b is not None
+
+    current_function_name = inspect.getframeinfo(inspect.currentframe()).function
+    if not equal_sets(set(data_a.keys()), set(data_b.keys()), current_function_name):
+        return False
+    for keypoints_type in data_a.keys():
+        if not equal_matches(data_a[keypoints_type], data_b[keypoints_type]):
+            return False
+    return True
 
 
 def equal_observations(
@@ -504,12 +655,15 @@ def equal_kapture(
             return False
 
     # compare image features (keypoints, descriptors, global_features)
-    for feature_type in ['keypoints', 'descriptors', 'global_features']:
-        if not equal_image_features(getattr(data_a, feature_type), getattr(data_b, feature_type)):
-            return False
+    if not equal_keypoints_collections(data_a.keypoints, data_b.keypoints):
+        return False
+    if not equal_descriptors_collections(data_a.descriptors, data_b.descriptors):
+        return False
+    if not equal_global_features_collections(data_a.global_features, data_b.global_features):
+        return False
 
     # compare matches
-    if not equal_matches(data_a.matches, data_b.matches):
+    if not equal_matches_collections(data_a.matches, data_b.matches):
         return False
 
     # compare observations
diff --git a/kapture/algo/merge_keep_ids.py b/kapture/algo/merge_keep_ids.py
index c22d1dd..8de6553 100644
--- a/kapture/algo/merge_keep_ids.py
+++ b/kapture/algo/merge_keep_ids.py
@@ -4,13 +4,15 @@
 Merge kapture objects.
 """
 
+from kapture.io.tar import TarCollection
 from typing import List, Optional, Type
 
 import kapture
 from kapture.io.records import TransferAction, get_image_fullpath
 from kapture.utils.Collections import get_new_if_not_empty
 
-from .merge_reconstruction import merge_keypoints, merge_descriptors, merge_global_features, merge_matches
+from .merge_reconstruction import merge_keypoints_collections, merge_descriptors_collections
+from .merge_reconstruction import merge_global_features_collections, merge_matches_collections
 from .merge_reconstruction import merge_points3d_and_observations, merge_points3d
 from .merge_records_data import merge_records_data
 
@@ -279,6 +281,7 @@ def merge_records_magnetic(
 def merge_keep_ids(kapture_list: List[kapture.Kapture],  # noqa: C901: function a bit long but not too complex
                    skip_list: List[Type],
                    data_paths: List[str],
+                   tarcollection_list: List[TarCollection],
                    kapture_path: str,
                    images_import_method: TransferAction) -> kapture.Kapture:
     """
@@ -287,6 +290,7 @@ def merge_keep_ids(kapture_list: List[kapture.Kapture],  # noqa: C901: function
     :param kapture_list: list of kapture to merge.
     :param skip_list: optional types not to merge. sensors and rigs are unskippable
     :param data_paths: list of path to root path directory in same order as mentioned in kapture_list.
+    :param tarcollection_list: list of opened tar archives same order as mentioned in kapture_list.
     :param kapture_path: directory root path to the merged kapture.
     :param images_import_method: method to transfer image files
     :return: merged kapture
@@ -363,25 +367,27 @@ def merge_keep_ids(kapture_list: List[kapture.Kapture],  # noqa: C901: function
         keypoints = [every_kapture.keypoints for every_kapture in kapture_list]
         keypoints_not_none = [k for k in keypoints if k is not None]
         if len(keypoints_not_none) > 0:
-            new_keypoints = merge_keypoints(keypoints, data_paths, kapture_path)
+            new_keypoints = merge_keypoints_collections(keypoints, data_paths, kapture_path, tarcollection_list)
             merged_kapture.keypoints = get_new_if_not_empty(new_keypoints, merged_kapture.keypoints)
     if kapture.Descriptors not in skip_list:
         descriptors = [every_kapture.descriptors for every_kapture in kapture_list]
         descriptors_not_none = [k for k in descriptors if k is not None]
         if len(descriptors_not_none) > 0:
-            new_descriptors = merge_descriptors(descriptors, data_paths, kapture_path)
+            new_descriptors = merge_descriptors_collections(descriptors, data_paths, kapture_path, tarcollection_list)
             merged_kapture.descriptors = get_new_if_not_empty(new_descriptors, merged_kapture.descriptors)
     if kapture.GlobalFeatures not in skip_list:
         global_features = [every_kapture.global_features for every_kapture in kapture_list]
         global_features_not_none = [k for k in global_features if k is not None]
         if len(global_features_not_none) > 0:
-            new_global_features = merge_global_features(global_features, data_paths, kapture_path)
+            new_global_features = merge_global_features_collections(global_features, data_paths,
+                                                                    kapture_path, tarcollection_list)
             merged_kapture.global_features = get_new_if_not_empty(new_global_features, merged_kapture.global_features)
     if kapture.Matches not in skip_list:
         matches = [every_kapture.matches for every_kapture in kapture_list]
-        new_matches = merge_matches(matches, data_paths, kapture_path)
-        merged_kapture.matches = get_new_if_not_empty(new_matches, merged_kapture.matches)
-
+        matches_not_none = [k for k in matches if k is not None]
+        if len(matches_not_none) > 0:
+            new_matches = merge_matches_collections(matches, data_paths, kapture_path, tarcollection_list)
+            merged_kapture.matches = get_new_if_not_empty(new_matches, merged_kapture.matches)
     if kapture.Points3d not in skip_list and kapture.Observations not in skip_list:
         points_and_obs = [(every_kapture.points3d, every_kapture.observations) for every_kapture in kapture_list]
         new_points, new_observations = merge_points3d_and_observations(points_and_obs)
diff --git a/kapture/algo/merge_reconstruction.py b/kapture/algo/merge_reconstruction.py
index ae12be3..b2f39db 100644
--- a/kapture/algo/merge_reconstruction.py
+++ b/kapture/algo/merge_reconstruction.py
@@ -4,125 +4,249 @@
 Merge kapture objects for reconstructions.
 """
 
+from kapture.io.binary import array_to_file
+from kapture.io.tar import TarCollection
 import numpy as np
 import os
 import shutil
-from typing import List, Union, Optional, Tuple, Type
+from typing import Dict, List, Union, Optional, Tuple, Type
 
 import kapture
 import kapture.io.features
 from kapture.utils.logging import getLogger
 
 
-def merge_image_features(feature_type: Type[Union[kapture.Keypoints, kapture.Descriptors, kapture.GlobalFeatures]],
-                         features_list: Union[List[Optional[kapture.Keypoints]],
-                                              List[Optional[kapture.Descriptors]],
-                                              List[Optional[kapture.GlobalFeatures]]],
-                         features_paths: List[str],
-                         output_path: str
-                         ) -> Union[kapture.Keypoints, kapture.Descriptors, kapture.GlobalFeatures]:
+def _merge_image_features(feature_class_type: Type[Union[kapture.Keypoints,
+                                                         kapture.Descriptors,
+                                                         kapture.GlobalFeatures]],
+                          feature_type: str,
+                          features_list: Union[List[Optional[kapture.Keypoints]],
+                                               List[Optional[kapture.Descriptors]],
+                                               List[Optional[kapture.GlobalFeatures]]],
+                          features_paths: List[str],
+                          output_path: str,
+                          tar_handlers: List[TarCollection]
+                          ) -> Union[kapture.Keypoints, kapture.Descriptors, kapture.GlobalFeatures]:
     """
     Merge several features_list (keypoints, descriptors or global features_list) (of same type) in one.
 
-    :param feature_type: the type of features_list
+    :param feature_class_type: the type of features_list
+    :param feature_type: the type (name of the folder) of the features
     :param features_list: the list of values
     :param features_paths: the paths
     :param output_path: root path of the features to construct
+    :param tar_handlers: collection of preloaded tar archives
     :return: merged features object of the corresponding type
     """
     assert len(features_list) > 0
     assert len(features_paths) == len(features_list)
 
     # find no none value
-    val = [d for d in features_list if d is not None]
+    val = [(i, d) for i, d in enumerate(features_list) if d is not None]
     assert len(val) > 0
 
-    merged_features = feature_type(val[0].type_name, val[0].dtype, val[0].dsize)
-    for features, features_path in zip(features_list, features_paths):
-        if features is None:
-            continue
-        assert isinstance(features, feature_type)
+    merged_features = val[0][1]
+    for j, (i, features) in enumerate(val):
+        assert isinstance(features, feature_class_type)
         assert features.type_name == merged_features.type_name
         assert features.dtype == merged_features.dtype
         assert features.dsize == merged_features.dsize
+        if feature_class_type == kapture.Descriptors or feature_class_type == kapture.GlobalFeatures:
+            assert not isinstance(features, kapture.Keypoints)  # IDE type check help
+            assert not isinstance(merged_features, kapture.Keypoints)  # IDE type check help
+            assert features.metric_type == merged_features.metric_type
+        if feature_class_type == kapture.Descriptors:
+            assert isinstance(features, kapture.Descriptors)  # IDE type check help
+            assert isinstance(merged_features, kapture.Descriptors)  # IDE type check help
+            assert features.keypoints_type == merged_features.keypoints_type
         for name in features:
-            if name in merged_features:
+            if j > 0 and name in merged_features:
                 getLogger().warning(f'{name} was found multiple times.')
             else:
                 merged_features.add(name)
                 if output_path:
                     # TODO: uses kapture.io.features_list.get_image_features_dirpath()
-                    in_path = kapture.io.features.get_features_fullpath(feature_type, features_path, name)
-                    out_path = kapture.io.features.get_features_fullpath(feature_type, output_path, name)
+                    in_path = kapture.io.features.get_features_fullpath(feature_class_type,
+                                                                        feature_type,
+                                                                        features_paths[i],
+                                                                        name,
+                                                                        tar_handlers[i])
+                    out_path = kapture.io.features.get_features_fullpath(feature_class_type,
+                                                                         feature_type,
+                                                                         output_path,
+                                                                         name)
                     if in_path != out_path:
                         # skip actual copy if file does not actually move.
                         os.makedirs(os.path.dirname(out_path), exist_ok=True)
-                        shutil.copy(in_path, out_path)
+                        if isinstance(in_path, str):
+                            shutil.copy(in_path, out_path)
+                        else:
+                            # in_path is a tuple [str, TarHandler]
+                            # keypoints are not stored in a file, have to read them to be able to copy them
+                            array = in_path[1].get_array_from_tar(in_path[0], features.dtype, features.dsize)
+                            array_to_file(out_path, array)
     return merged_features
 
 
-def merge_keypoints(keypoints_list: List[Optional[kapture.Keypoints]],
+def _merge_image_features_collection(feature_class_type: Type[Union[kapture.Keypoints,
+                                                                    kapture.Descriptors,
+                                                                    kapture.GlobalFeatures]],
+                                     features_list: Union[List[Optional[Dict[str, kapture.Keypoints]]],
+                                                          List[Optional[Dict[str, kapture.Descriptors]]],
+                                                          List[Optional[Dict[str, kapture.GlobalFeatures]]]],
+                                     features_paths: List[str],
+                                     output_path: str,
+                                     tar_handlers: List[TarCollection]
+                                     ) -> Union[Dict[str, kapture.Keypoints],
+                                                Dict[str, kapture.Descriptors],
+                                                Dict[str, kapture.GlobalFeatures]]:
+    assert len(features_list) > 0
+    assert len(features_paths) == len(features_list)
+    # get the union
+    features_types = set().union(*[features.keys() for features in features_list if features is not None])
+    assert len(features_types) > 0
+    out_collection = {}
+    for features_type in features_types:
+        image_features_list = [features[features_type] if features is not None and features_type in features else None
+                               for features in features_list]
+        image_features = _merge_image_features(feature_class_type, features_type,
+                                               image_features_list,
+                                               features_paths, output_path,
+                                               tar_handlers)
+        assert isinstance(image_features, feature_class_type)
+        out_collection[features_type] = image_features
+    return out_collection
+
+
+def merge_keypoints(feature_type: str,
+                    keypoints_list: List[Optional[kapture.Keypoints]],
                     keypoints_paths: List[str],
-                    output_path: str) -> kapture.Keypoints:
+                    output_path: str,
+                    tar_handlers: List[TarCollection]) -> kapture.Keypoints:
     """
     Merge several keypoints in one.
 
     :param keypoints_list: list of keypoints to merge
     :param keypoints_paths: keypoints files paths
     :param output_path: root path of the merged features files
+    :param tar_handlers: collection of preloaded tar archives
     :return: merged keypoints
     """
-    keypoints = merge_image_features(kapture.Keypoints, keypoints_list, keypoints_paths, output_path)
+    keypoints = _merge_image_features(kapture.Keypoints, feature_type, keypoints_list, keypoints_paths,
+                                      output_path, tar_handlers)
     assert isinstance(keypoints, kapture.Keypoints)
     return keypoints
 
 
-def merge_descriptors(descriptors_list: List[Optional[kapture.Descriptors]],
-                      descriptors_paths: List[str], output_path: str) -> kapture.Descriptors:
+def merge_keypoints_collections(keypoints_collections_list: List[Optional[Dict[str, kapture.Keypoints]]],
+                                keypoints_paths: List[str],
+                                output_path: str,
+                                tar_handlers: List[TarCollection]) -> Dict[str, kapture.Keypoints]:
+    """
+    Merge several keypoints collections in one.
+
+    :param keypoints_collections_list: list of keypoints collections to merge
+    :param keypoints_paths: keypoints files paths
+    :param output_path: root path of the merged features files
+    :param tar_handlers: collection of preloaded tar archives
+    :return: merged keypoints collection
+    """
+    return _merge_image_features_collection(kapture.Keypoints, keypoints_collections_list,
+                                            keypoints_paths, output_path, tar_handlers)
+
+
+def merge_descriptors(feature_type: str,
+                      descriptors_list: List[Optional[kapture.Descriptors]],
+                      descriptors_paths: List[str], output_path: str,
+                      tar_handlers: List[TarCollection]) -> kapture.Descriptors:
     """
     Merge several descriptors in one.
 
     :param descriptors_list: list of descriptors to merge
     :param descriptors_paths: descriptors files paths
     :param output_path: root path of the merged features files
+    :param tar_handlers: collection of preloaded tar archives
     :return: merged descriptors
     """
-    descriptors = merge_image_features(kapture.Descriptors, descriptors_list, descriptors_paths, output_path)
+    descriptors = _merge_image_features(kapture.Descriptors, feature_type,
+                                        descriptors_list, descriptors_paths, output_path, tar_handlers)
     assert isinstance(descriptors, kapture.Descriptors)
     return descriptors
 
 
+def merge_descriptors_collections(descriptors_collections_list: List[Optional[Dict[str, kapture.Descriptors]]],
+                                  descriptors_paths: List[str],
+                                  output_path: str,
+                                  tar_handlers: List[TarCollection]) -> Dict[str, kapture.Descriptors]:
+    """
+    Merge several descriptors collections in one.
+
+    :param descriptors_collections_list: list of descriptors collections to merge
+    :param descriptors_paths: descriptors files paths
+    :param output_path: root path of the merged features files
+    :param tar_handlers: collection of preloaded tar archives
+    :return: merged descriptors collections
+    """
+    return _merge_image_features_collection(kapture.Descriptors, descriptors_collections_list,
+                                            descriptors_paths, output_path, tar_handlers)
+
+
 def merge_global_features(global_features_list: List[Optional[kapture.GlobalFeatures]],
-                          global_features_paths: List[str], output_path: str) -> kapture.GlobalFeatures:
+                          global_features_paths: List[str], output_path: str,
+                          tar_handlers: List[TarCollection]) -> kapture.GlobalFeatures:
     """
     Merge several global features in one.
 
     :param global_features_list: list of global features to merge
     :param global_features_paths: global features files paths
     :param output_path: root path of the merged features files
+    :param tar_handlers: collection of preloaded tar archives
     :return: merged global features
     """
-    features = merge_image_features(kapture.GlobalFeatures, global_features_list, global_features_paths, output_path)
+    features = _merge_image_features(kapture.GlobalFeatures, global_features_list, global_features_paths,
+                                     output_path, tar_handlers)
     assert isinstance(features, kapture.GlobalFeatures)
     return features
 
 
-def merge_matches(matches_list: List[Optional[kapture.Matches]],
+def merge_global_features_collections(global_features_collections_list: List[Optional[Dict[str,
+                                                                                           kapture.GlobalFeatures]]],
+                                      global_features_paths: List[str],
+                                      output_path: str,
+                                      tar_handlers: List[TarCollection]) -> Dict[str, kapture.GlobalFeatures]:
+    """
+    Merge several global features collections in one.
+
+    :param global_features_collections_list: list of global features collections to merge
+    :param global_features_paths: global features files paths
+    :param output_path: root path of the merged features files
+    :param tar_handlers: collection of preloaded tar archives
+    :return: merged global features collection
+    """
+    return _merge_image_features_collection(kapture.GlobalFeatures, global_features_collections_list,
+                                            global_features_paths, output_path, tar_handlers)
+
+
+def merge_matches(keypoints_type: str,
+                  matches_list: List[Optional[kapture.Matches]],
                   matches_paths: List[str],
-                  output_path: str) -> kapture.Matches:
+                  output_path: str,
+                  tar_handlers: List[TarCollection]) -> kapture.Matches:
     """
     Merge several matches lists in one.
 
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param matches_list: list of matches to merge
     :param matches_paths: matches files paths
     :param output_path: root path of the merged matches files
+    :param tar_handlers: collection of preloaded tar archives
     :return: merged matches
     """
     assert len(matches_list) > 0
     assert len(matches_paths) == len(matches_list)
 
     merged_matches = kapture.Matches()
-    for matches, matches_path in zip(matches_list, matches_paths):
+    for matches, matches_path, tar_handler in zip(matches_list, matches_paths, tar_handlers):
         if matches is None:
             continue
         for pair in matches:
@@ -131,15 +255,54 @@ def merge_matches(matches_list: List[Optional[kapture.Matches]],
             else:
                 merged_matches.add(pair[0], pair[1])
                 if output_path:
-                    in_path = kapture.io.features.get_matches_fullpath(pair, matches_path)
-                    out_path = kapture.io.features.get_matches_fullpath(pair, output_path)
+                    in_path = kapture.io.features.get_matches_fullpath(pair, keypoints_type, matches_path, tar_handler)
+                    out_path = kapture.io.features.get_matches_fullpath(pair, keypoints_type, output_path)
                     if in_path != out_path:
                         # skip actual copy if file does not actually move.
                         os.makedirs(os.path.dirname(out_path), exist_ok=True)
-                        shutil.copy(in_path, out_path)
+                        if isinstance(in_path, str):
+                            shutil.copy(in_path, out_path)
+                        else:
+                            # in_path is a tuple [str, TarHandler]
+                            # keypoints are not stored in a file, have to read them to be able to copy them
+                            array = kapture.io.features.image_matches_from_file(in_path)
+                            kapture.io.features.image_matches_to_file(out_path, array)
     return merged_matches
 
 
+def merge_matches_collections(matches_list: List[Optional[Dict[str,  kapture.Matches]]],
+                              matches_paths: List[str],
+                              output_path: str,
+                              tar_handlers: List[TarCollection]) -> Dict[str,  kapture.Matches]:
+    """
+    Merge several matches collections in one.
+
+    :param matches_list: list of matches collections to merge
+    :param matches_paths: matches files paths
+    :param output_path: root path of the merged matches files
+    :param tar_handlers: collection of preloaded tar archives
+    :return: merged matches collection
+    """
+    assert len(matches_list) > 0
+    assert len(matches_paths) == len(matches_list)
+
+    # get the union
+    keypoints_types = set().union(*[matches.keys() for matches in matches_list if matches is not None])
+    assert len(keypoints_types) > 0
+    out_collection = {}
+    for keypoints_type in keypoints_types:
+        kmatches_list = [matches[keypoints_type] if matches is not None and keypoints_type in matches else None
+                         for matches in matches_list]
+        merged_matches = merge_matches(keypoints_type,
+                                       kmatches_list,
+                                       matches_paths,
+                                       output_path,
+                                       tar_handlers)
+        assert isinstance(merged_matches, kapture.Matches)
+        out_collection[keypoints_type] = merged_matches
+    return out_collection
+
+
 def merge_points3d_and_observations(pts3d_obs: List[Tuple[Optional[kapture.Points3d], Optional[kapture.Observations]]]
                                     ) -> Tuple[kapture.Points3d, kapture.Observations]:
     """
@@ -157,8 +320,8 @@ def merge_points3d_and_observations(pts3d_obs: List[Tuple[Optional[kapture.Point
             continue
         merged_points3d = kapture.Points3d(np.vstack([merged_points3d, points3d]))
         if observations is not None:
-            for point3d_idx, (image_path, keypoint_idx) in kapture.flatten(observations):
-                merged_observations.add(point3d_idx + point3d_offset, image_path, keypoint_idx)
+            for point3d_idx, keypoints_type, (image_path, keypoint_idx) in kapture.flatten(observations):
+                merged_observations.add(point3d_idx + point3d_offset, keypoints_type, image_path, keypoint_idx)
         point3d_offset += merged_points3d.shape[0]
     return merged_points3d, merged_observations
 
diff --git a/kapture/algo/merge_remap.py b/kapture/algo/merge_remap.py
index 0c43d3d..3347807 100644
--- a/kapture/algo/merge_remap.py
+++ b/kapture/algo/merge_remap.py
@@ -4,13 +4,15 @@
 Merge kapture objects with remapping of identifiers.
 """
 
+from kapture.io.tar import TarCollection
 from typing import List, Optional, Type, Dict
 
 import kapture
 from kapture.io.records import TransferAction, get_image_fullpath
 from kapture.utils.Collections import get_new_if_not_empty
 
-from .merge_reconstruction import merge_keypoints, merge_descriptors, merge_global_features, merge_matches
+from .merge_reconstruction import merge_keypoints_collections, merge_descriptors_collections
+from .merge_reconstruction import merge_global_features_collections, merge_matches_collections
 from .merge_reconstruction import merge_points3d_and_observations, merge_points3d
 from .merge_records_data import merge_records_data
 
@@ -340,6 +342,7 @@ def merge_records_magnetic(
 def merge_remap(kapture_list: List[kapture.Kapture],  # noqa: C901: function a bit long but not too complex
                 skip_list: List[Type],
                 data_paths: List[str],
+                tarcollection_list: List[TarCollection],
                 kapture_path: str,
                 images_import_method: TransferAction) -> kapture.Kapture:
     """
@@ -348,6 +351,7 @@ def merge_remap(kapture_list: List[kapture.Kapture],  # noqa: C901: function a b
     :param kapture_list: list of kapture to merge.
     :param skip_list: input optional types to not merge. sensors and rigs are unskippable
     :param data_paths: list of path to root path directory in same order as mentioned in kapture_list.
+    :param tarcollection_list: list of opened tar archives same order as mentioned in kapture_list.
     :param kapture_path: directory root path to the merged kapture.
     :param images_import_method: method to transfer image files
     :return: merged kapture object
@@ -431,23 +435,24 @@ def merge_remap(kapture_list: List[kapture.Kapture],  # noqa: C901: function a b
         keypoints = [a_kapture.keypoints for a_kapture in kapture_list]
         keypoints_not_none = [k for k in keypoints if k is not None]
         if len(keypoints_not_none) > 0:
-            new_keypoints = merge_keypoints(keypoints, data_paths, kapture_path)
+            new_keypoints = merge_keypoints_collections(keypoints, data_paths, kapture_path, tarcollection_list)
             merged_kapture.keypoints = get_new_if_not_empty(new_keypoints, merged_kapture.keypoints)
     if kapture.Descriptors not in skip_list:
         descriptors = [a_kapture.descriptors for a_kapture in kapture_list]
         descriptors_not_none = [k for k in descriptors if k is not None]
         if len(descriptors_not_none) > 0:
-            new_descriptors = merge_descriptors(descriptors, data_paths, kapture_path)
+            new_descriptors = merge_descriptors_collections(descriptors, data_paths, kapture_path, tarcollection_list)
             merged_kapture.descriptors = get_new_if_not_empty(new_descriptors, merged_kapture.descriptors)
     if kapture.GlobalFeatures not in skip_list:
         global_features = [a_kapture.global_features for a_kapture in kapture_list]
         global_features_not_none = [k for k in global_features if k is not None]
         if len(global_features_not_none) > 0:
-            new_global_features = merge_global_features(global_features, data_paths, kapture_path)
+            new_global_features = merge_global_features_collections(global_features, data_paths,
+                                                                    kapture_path, tarcollection_list)
             merged_kapture.global_features = get_new_if_not_empty(new_global_features, merged_kapture.global_features)
     if kapture.Matches not in skip_list:
         matches = [a_kapture.matches for a_kapture in kapture_list]
-        new_matches = merge_matches(matches, data_paths, kapture_path)
+        new_matches = merge_matches_collections(matches, data_paths, kapture_path, tarcollection_list)
         merged_kapture.matches = get_new_if_not_empty(new_matches, merged_kapture.matches)
 
     if kapture.Points3d not in skip_list and kapture.Observations not in skip_list:
diff --git a/kapture/converter/colmap/database_extra.py b/kapture/converter/colmap/database_extra.py
index ef61e4f..40f5c2e 100644
--- a/kapture/converter/colmap/database_extra.py
+++ b/kapture/converter/colmap/database_extra.py
@@ -4,6 +4,7 @@
 Colmap specific database functions
 """
 
+from kapture.io.tar import TarCollection
 import logging
 import numpy as np
 import os
@@ -279,20 +280,20 @@ def exists_table(table: str, database: COLMAPDatabase) -> bool:
     return True
 
 
-def save_match_list(kapture_data: kapture.Kapture, path_file: str) -> None:
+def save_match_list(kapture_matches: kapture.Matches, path_file: str) -> None:
     """
-    Saves matching files from db in a file at path_file
+    Saves list of matching files from kapture data to simple text file
     format :
     image_match_1 image_match_2
 
-    :param kapture_data: kapture data
-    :param path_file: path to the matches file
+    :param kapture_matches: kapture_matches data
+    :param kapture_matches: path to the matches file
 
     """
     if path.exists(path_file):
         os.remove(path_file)
     f = open(path_file, "w")
-    for image_path1, image_path2 in kapture_data.matches:
+    for image_path1, image_path2 in kapture_matches:
         f.write("{} {}\n".format(image_path1, image_path2))
     f.close()
 
@@ -318,6 +319,7 @@ def generate_priors_for_reconstruction(kapture_data: kapture.Kapture,
         path_to_priors_for_reconstruction,
         kapture_data_copy,
         "",  # kapture_data_copy do not have binaries so path is irrelevant
+        None,  # same for tar as above
         colmap_camera_ids,
         colmap_image_ids)
 
@@ -494,17 +496,22 @@ def add_images_to_database(database: COLMAPDatabase,
 
 def add_keypoints_to_database(database: COLMAPDatabase,
                               keypoints: kapture.Keypoints,
+                              keypoints_type: str,
                               kapture_dir_path: str,
+                              tar_handler: Optional[TarCollection],
                               colmap_image_ids: dict) -> None:
     """
     Add keypoints to the colmap database.
 
     :param database: colmap database.
     :param keypoints: kapture keypoints to add
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param kapture_dir_path: kapture data top directory
+    :param tar_handler: collection of preloaded tar archives
     :param colmap_image_ids: kapture camera identifier -> colmap camera identifier dictionary
     """
-    keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(keypoints, kapture_dir_path)
+    keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(keypoints, keypoints_type,
+                                                                     kapture_dir_path, tar_handler)
     for image_filename, keypoints_filepath in keypoints_filepaths.items():
         image_keypoints = image_keypoints_from_file(keypoints_filepath, keypoints.dtype, keypoints.dsize)
         colmap_image_id = colmap_image_ids[image_filename]
@@ -518,7 +525,9 @@ def add_keypoints_to_database(database: COLMAPDatabase,
 
 def add_descriptors_to_database(database: COLMAPDatabase,
                                 descriptors: kapture.Descriptors,
+                                descriptors_type: str,
                                 kapture_dir_path: str,
+                                tar_handler: Optional[TarCollection],
                                 colmap_image_ids: dict) -> None:
     """
     Add descriptors to the colmap database.
@@ -526,9 +535,13 @@ def add_descriptors_to_database(database: COLMAPDatabase,
     :param database: colmap database.
     :param descriptors: kapture descriptors to add
     :param kapture_dir_path: kapture data top directory
+    :param tar_handler: collection of preloaded tar archives
     :param colmap_image_ids: kapture camera identifier -> colmap camera identifier dictionary
     """
-    descriptors_filepaths = kapture.io.features.descriptors_to_filepaths(descriptors, kapture_dir_path)
+    descriptors_filepaths = kapture.io.features.descriptors_to_filepaths(descriptors,
+                                                                         descriptors_type,
+                                                                         kapture_dir_path,
+                                                                         tar_handler)
     for image_filename, descriptors_filepath in descriptors_filepaths.items():
         image_descriptors = image_keypoints_from_file(descriptors_filepath, descriptors.dtype, descriptors.dsize)
         colmap_image_id = colmap_image_ids[image_filename]
@@ -538,7 +551,9 @@ def add_descriptors_to_database(database: COLMAPDatabase,
 
 def add_matches_to_database(database: COLMAPDatabase,
                             matches: kapture.Matches,
+                            keypoints_type: str,
                             kapture_dir_path: str,
+                            tar_handler: Optional[TarCollection],
                             colmap_image_ids: dict,
                             export_two_view_geometry: bool = False) -> None:
     """
@@ -547,6 +562,7 @@ def add_matches_to_database(database: COLMAPDatabase,
     :param database: colmap database.
     :param matches: kapture matches to add
     :param kapture_dir_path: kapture data top directory
+    :param tar_handler: collection of preloaded tar archives
     :param colmap_image_ids: kapture camera identifier -> colmap camera identifier dictionary
     :param export_two_view_geometry: if True, also export two geometry.
     """
@@ -554,7 +570,7 @@ def add_matches_to_database(database: COLMAPDatabase,
 
     # matches[(image_path1, image_path2)] = image_matches
     matches.normalize()
-    matches_filepaths = kapture.io.features.matches_to_filepaths(matches, kapture_dir_path)
+    matches_filepaths = kapture.io.features.matches_to_filepaths(matches, keypoints_type, kapture_dir_path, tar_handler)
     for (image_path1, image_path2), image_matches_filepath in matches_filepaths.items():
         image_matches = kapture.io.features.image_matches_from_file(image_matches_filepath)
         colmap_image_id1 = colmap_image_ids[image_path1]
@@ -579,14 +595,20 @@ def add_matches_to_database(database: COLMAPDatabase,
 
 def kapture_to_colmap(kapture_data: kapture.Kapture,
                       kapture_dirpath: str,
+                      tar_handler: Optional[TarCollection],
                       database: COLMAPDatabase,
+                      keypoints_type: Optional[str] = None,
+                      descriptors_type: Optional[str] = None,
                       export_two_view_geometry: bool = False) -> None:
     """
     Export kapture data to colmap database.
 
     :param kapture_data: kapture data to export
     :param kapture_dirpath: path to kapture directory, to retrieve binary files (keypoints, descriptors, ...)
+    :param tar_handler: collection of preloaded tar archives
     :param database: colmap database.
+    :param keypoints_type: type of keypoints to export, name of the keypoints subfolder
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder
     :param export_two_view_geometry: if True, also export two geometry.
     """
     assert isinstance(kapture_data, kapture.Kapture)
@@ -621,17 +643,28 @@ def kapture_to_colmap(kapture_data: kapture.Kapture,
         kapture_data.trajectories, colmap_camera_ids)
 
     # keypoints
-    if kapture_data.keypoints is not None:
-        logger.info(f'registering {len(kapture_data.keypoints)} keypoints in database...')
-        add_keypoints_to_database(database, kapture_data.keypoints, kapture_dirpath, colmap_image_ids)
+    if kapture_data.keypoints is not None and keypoints_type is not None and keypoints_type in kapture_data.keypoints:
+        keypoints = kapture_data.keypoints[keypoints_type]
+        logger.info(f'registering {len(keypoints)} keypoints in database...')
+        add_keypoints_to_database(database, keypoints, keypoints_type,
+                                  kapture_dirpath, tar_handler, colmap_image_ids)
 
     # descriptors
-    if kapture_data.descriptors is not None:
-        logger.info(f'registering {len(kapture_data.descriptors)} descriptors in database...')
-        add_descriptors_to_database(database, kapture_data.descriptors, kapture_dirpath, colmap_image_ids)
+    if kapture_data.descriptors is not None \
+            and descriptors_type is not None \
+            and descriptors_type in kapture_data.descriptors:
+        descriptors = kapture_data.descriptors[descriptors_type]
+        logger.info(f'registering {len(descriptors)} descriptors in database...')
+        add_descriptors_to_database(database, descriptors,
+                                    descriptors_type, kapture_dirpath,
+                                    tar_handler, colmap_image_ids)
 
     # matches
-    if kapture_data.matches is not None:
-        logger.info(f'registering {len(kapture_data.matches)} matches in database...')
-        add_matches_to_database(database, kapture_data.matches, kapture_dirpath,
+    if kapture_data.matches is not None \
+            and keypoints_type is not None \
+            and keypoints_type in kapture_data.matches:
+        matches = kapture_data.matches[keypoints_type]
+        logger.info(f'registering {len(matches)} matches in database...')
+        add_matches_to_database(database, matches, keypoints_type,
+                                kapture_dirpath, tar_handler,
                                 colmap_image_ids, export_two_view_geometry)
diff --git a/kapture/converter/colmap/export_colmap.py b/kapture/converter/colmap/export_colmap.py
index d6360c9..5afcd08 100644
--- a/kapture/converter/colmap/export_colmap.py
+++ b/kapture/converter/colmap/export_colmap.py
@@ -17,6 +17,7 @@
 import kapture.io.csv as csv
 import kapture.io.structure
 import kapture.utils.paths
+from kapture.utils.Collections import try_get_only_key_from_collection
 
 # local
 from .database import COLMAPDatabase
@@ -31,6 +32,8 @@
 def export_colmap(kapture_dir_path: str,
                   colmap_database_filepath: str,
                   colmap_reconstruction_dir_path: Optional[str],
+                  keypoints_type: Optional[str] = None,
+                  descriptors_type: Optional[str] = None,
                   colmap_rig_filepath: str = None,
                   force_overwrite_existing: bool = False,
                   pairsfile_path: Optional[str] = None) -> None:
@@ -40,6 +43,8 @@ def export_colmap(kapture_dir_path: str,
     :param kapture_dir_path: kapture top directory
     :param colmap_database_filepath: path to colmap database file
     :param colmap_reconstruction_dir_path: path to colmap reconstruction directory
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder
     :param colmap_rig_filepath: path to colmap rig file
     :param force_overwrite_existing: Silently overwrite colmap files if already exists.
     :param pairsfile_path: Filter matches to load
@@ -58,37 +63,48 @@ def export_colmap(kapture_dir_path: str,
         raise ValueError('the existing colmap database is not empty : {}'.format(colmap_database_filepath))
 
     logger.info('loading kapture files...')
-    kapture_data = csv.kapture_from_dir(kapture_dir_path, pairsfile_path)
-    assert isinstance(kapture_data, kapture.Kapture)
-
-    # COLMAP does not fully support rigs.
-    if kapture_data.rigs is not None:
-        # make sure, rigs are not used in trajectories.
-        logger.info('remove rigs notation.')
-        rigs_remove_inplace(kapture_data.trajectories, kapture_data.rigs)
-
-    # write colmap database
-    kapture_to_colmap(kapture_data, kapture_dir_path, db)
-
-    if colmap_reconstruction_dir_path:
-        # create text files
-        colmap_camera_ids = get_colmap_camera_ids_from_db(db, kapture_data.records_camera)
-        colmap_image_ids = get_colmap_image_ids_from_db(db)
-        export_to_colmap_txt(colmap_reconstruction_dir_path,
-                             kapture_data,
-                             kapture_dir_path,
-                             colmap_camera_ids,
-                             colmap_image_ids)
-        if colmap_rig_filepath:
-            try:
-                if kapture_data.rigs is None:
-                    raise ValueError('No rig to export.')
-                export_colmap_rig(colmap_rig_filepath,
-                                  kapture_data.rigs,
-                                  kapture_data.records_camera,
-                                  colmap_camera_ids)
-            except Exception as e:
-                warnings.warn(e)
-                logger.warning(e)
+    with csv.get_all_tar_handlers(kapture_dir_path) as tar_handlers:
+        kapture_data = csv.kapture_from_dir(kapture_dir_path, pairsfile_path, tar_handlers=tar_handlers)
+        assert isinstance(kapture_data, kapture.Kapture)
+
+        if keypoints_type is None:
+            keypoints_type = try_get_only_key_from_collection(kapture_data.keypoints)
+        # if it's still None try again from matches
+        if keypoints_type is None:
+            keypoints_type = try_get_only_key_from_collection(kapture_data.matches)
+        if descriptors_type is None:
+            descriptors_type = try_get_only_key_from_collection(kapture_data.descriptors)
+
+        # COLMAP does not fully support rigs.
+        if kapture_data.rigs is not None:
+            # make sure, rigs are not used in trajectories.
+            logger.info('remove rigs notation.')
+            rigs_remove_inplace(kapture_data.trajectories, kapture_data.rigs)
+
+        # write colmap database
+        kapture_to_colmap(kapture_data, kapture_dir_path, tar_handlers, db, keypoints_type, descriptors_type)
+
+        if colmap_reconstruction_dir_path:
+            # create text files
+            colmap_camera_ids = get_colmap_camera_ids_from_db(db, kapture_data.records_camera)
+            colmap_image_ids = get_colmap_image_ids_from_db(db)
+            export_to_colmap_txt(colmap_reconstruction_dir_path,
+                                 kapture_data,
+                                 kapture_dir_path,
+                                 tar_handlers,
+                                 colmap_camera_ids,
+                                 colmap_image_ids,
+                                 keypoints_type)
+            if colmap_rig_filepath:
+                try:
+                    if kapture_data.rigs is None:
+                        raise ValueError('No rig to export.')
+                    export_colmap_rig(colmap_rig_filepath,
+                                      kapture_data.rigs,
+                                      kapture_data.records_camera,
+                                      colmap_camera_ids)
+                except Exception as e:
+                    warnings.warn(e)
+                    logger.warning(e)
 
     db.close()
diff --git a/kapture/converter/colmap/export_colmap_reconstruction.py b/kapture/converter/colmap/export_colmap_reconstruction.py
index 936047e..de4d5e6 100644
--- a/kapture/converter/colmap/export_colmap_reconstruction.py
+++ b/kapture/converter/colmap/export_colmap_reconstruction.py
@@ -4,9 +4,10 @@
 Functions to export the reconstruction part of colmap (only text format is supported).
 """
 
+from kapture.io.tar import TarCollection
 import logging
 import os.path as path
-from typing import Dict, Tuple, List
+from typing import Dict, Optional, Tuple, List
 
 # kapture
 import kapture
@@ -123,7 +124,8 @@ def export_to_colmap_matches_txt(colmap_matches_filepath: str, matches: kapture.
 def export_to_colmap_points3d_txt(colmap_points3d_filepath: str,
                                   colmap_image_ids: Dict[str, int],
                                   points3d: kapture.Points3d = None,
-                                  observations: kapture.Observations = None) -> None:
+                                  observations: kapture.Observations = None,
+                                  keypoints_type: str = None) -> None:
     """
     Exports to colmap points3d text file.
 
@@ -131,9 +133,11 @@ def export_to_colmap_points3d_txt(colmap_points3d_filepath: str,
     :param colmap_image_ids: correspondences between kapture image id (image path) and colmap image id
     :param points3d: kapture points3d to export
     :param observations: kapture observations to export
+    :param keypoints_type: type of keypoints for which the observations are exported, name of the keypoints subfolder
     """
     assert isinstance(points3d, kapture.Points3d) or points3d is None
     assert isinstance(observations, kapture.Observations) or observations is None
+
     assert isinstance(colmap_image_ids, dict)
     points3d_colmap_header = '# 3D point list with one line of data per point:\n' \
                              '#   POINT3D_ID, X, Y, Z, R, G, B, ERROR, TRACK[] as (IMAGE_ID, POINT2D_IDX)\n'
@@ -145,10 +149,18 @@ def export_to_colmap_points3d_txt(colmap_points3d_filepath: str,
                 line = '{} {} {} {} {} {} {} 0'.format(i,
                                                        point3d[0], point3d[1], point3d[2],
                                                        int(point3d[3]), int(point3d[4]), int(point3d[5]))
-                if observations is not None and i in observations and len(observations[i]) > 0:
-                    line += ' '
-                    pairs = [(str(colmap_image_ids[name]), str(keypoint_id)) for name, keypoint_id in observations[i]]
-                    line += ' '.join([str(s) for s in list(sum(pairs, ()))])
+                if observations is not None and i in observations:
+                    if len(observations[i]) == 0:
+                        continue
+                    elif len(observations[i]) == 1 and keypoints_type is None:
+                        keypoints_type = next(iter(observations[i].keys()))
+                    if keypoints_type is None or keypoints_type not in observations[i]:
+                        continue
+                    if len(observations[i, keypoints_type]) > 0:
+                        line += ' '
+                        pairs = [(str(colmap_image_ids[name]), str(keypoint_id))
+                                 for name, keypoint_id in observations[i, keypoints_type]]
+                        line += ' '.join([str(s) for s in list(sum(pairs, ()))])
                 line += '\n'
                 fid.write(line)
 
@@ -156,16 +168,20 @@ def export_to_colmap_points3d_txt(colmap_points3d_filepath: str,
 def export_to_colmap_txt(colmap_reconstruction_dirpath: str,
                          kapture_data: kapture.Kapture,
                          kapture_dirpath: str,
+                         tar_handler: Optional[TarCollection],
                          colmap_camera_ids: Dict[str, int],
-                         colmap_image_ids: Dict[str, int]) -> None:
+                         colmap_image_ids: Dict[str, int],
+                         keypoints_type: str = None) -> None:
     """
     Exports to colmap reconstruction text files.
 
     :param colmap_reconstruction_dirpath: path to directory where colmap reconstruction files will be stored.
     :param kapture_data: input kapture data
     :param kapture_dirpath: path to output directory, where colmap files will be stored
+    :param tar_handler: collection of preloaded tar archives
     :param colmap_camera_ids: gives the correspondences between kapture camera id and colmap camera id
     :param colmap_image_ids: gives the correspondences between kapture image id (image path) and colmap image id
+    :param keypoints_type: reference the the keypoints for which the reconstruction are exported
     """
     assert isinstance(kapture_data, kapture.Kapture)
     assert isinstance(colmap_camera_ids, dict)
@@ -192,22 +208,33 @@ def export_to_colmap_txt(colmap_reconstruction_dirpath: str,
     # images.txt
     image_to_keypoints = {}
     if kapture_data.keypoints and kapture_data.points3d and kapture_data.observations:
-        observations_reversed = {(image_filename, keypoint_idx): point3d_idx
-                                 for point3d_idx, (image_filename, keypoint_idx) in
-                                 kapture.flatten(kapture_data.observations)}
-
-        # prepare images.txt even lines
-        # POINTS2D[] as (X, Y, POINT3D_ID)
-        keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(kapture_data.keypoints, kapture_dirpath)
-        for image_filename, image_keypoints_filepath in keypoints_filepaths.items():
-            image_keypoints = kapture.io.features.image_keypoints_from_file(image_keypoints_filepath,
-                                                                            kapture_data.keypoints.dtype,
-                                                                            kapture_data.keypoints.dsize)
-            image_to_keypoints[image_filename] = []
-            for i in range(image_keypoints.shape[0]):
-                point3d_idx = observations_reversed[(image_filename, i)] if (image_filename,
-                                                                             i) in observations_reversed else -1
-                image_to_keypoints[image_filename].append((image_keypoints[i, 0], image_keypoints[i, 1], point3d_idx))
+        if len(kapture_data.keypoints) == 1 and keypoints_type is None:
+            keypoints_type = next(iter(kapture_data.keypoints.keys()))
+        if keypoints_type is not None and keypoints_type in kapture_data.keypoints:
+            obs_for_keypoints_type = {point_id: per_keypoints_type_subdict[keypoints_type]
+                                      for point_id, per_keypoints_type_subdict in kapture_data.observations.items()
+                                      if keypoints_type in per_keypoints_type_subdict}
+            observations_reversed = {(image_filename, keypoint_idx): point3d_idx
+                                     for point3d_idx in obs_for_keypoints_type.keys()
+                                     for image_filename, keypoint_idx in obs_for_keypoints_type[point3d_idx]}
+            # prepare images.txt even lines
+            # POINTS2D[] as (X, Y, POINT3D_ID)
+            keypoints = kapture_data.keypoints[keypoints_type]
+            keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(keypoints,
+                                                                             keypoints_type,
+                                                                             kapture_dirpath,
+                                                                             tar_handler)
+            for image_filename, image_keypoints_filepath in keypoints_filepaths.items():
+                image_keypoints = kapture.io.features.image_keypoints_from_file(image_keypoints_filepath,
+                                                                                keypoints.dtype,
+                                                                                keypoints.dsize)
+                image_to_keypoints[image_filename] = []
+                for i in range(image_keypoints.shape[0]):
+                    point3d_idx = observations_reversed[(image_filename, i)] if (image_filename,
+                                                                                 i) in observations_reversed else -1
+                    image_to_keypoints[image_filename].append((image_keypoints[i, 0],
+                                                               image_keypoints[i, 1],
+                                                               point3d_idx))
 
     if kapture_data.records_camera is None or kapture_data.trajectories is None:
         logger.info('skipping colmap images.txt (missing images or trajectories).')
@@ -221,11 +248,14 @@ def export_to_colmap_txt(colmap_reconstruction_dirpath: str,
 
     # image_matches.txt: to be imported as custom match (allow geometric verification)
     if kapture_data.matches:
-        logger.info('creating image_matches.txt')
-        export_to_colmap_matches_txt(path.join(colmap_reconstruction_dirpath, 'image_matches.txt'),
-                                     kapture_data.matches)
+        if len(kapture_data.matches) == 1 and keypoints_type is None:
+            keypoints_type = next(iter(kapture_data.matches.keys()))
+        if keypoints_type is not None and keypoints_type in kapture_data.matches:
+            logger.info('creating image_matches.txt')
+            export_to_colmap_matches_txt(path.join(colmap_reconstruction_dirpath, 'image_matches.txt'),
+                                         kapture_data.matches[keypoints_type])
 
     # points3D.txt
     logging.info('creating colmap points3D.txt')
     export_to_colmap_points3d_txt(path.join(colmap_reconstruction_dirpath, 'points3D.txt'), colmap_image_ids,
-                                  kapture_data.points3d, kapture_data.observations)
+                                  kapture_data.points3d, kapture_data.observations, keypoints_type)
diff --git a/kapture/converter/colmap/import_colmap.py b/kapture/converter/colmap/import_colmap.py
index 7d85cb7..77d262c 100644
--- a/kapture/converter/colmap/import_colmap.py
+++ b/kapture/converter/colmap/import_colmap.py
@@ -33,11 +33,11 @@
 
 
 def import_colmap_database(colmap_database_filepath: str,
-                           kapture_dir_path: str,
+                           kapture_dir_path: Optional[str],
+                           keypoints_type: str = 'SIFT',
+                           descriptors_type: str = 'SIFT',
                            no_geometric_filtering: bool = False,
-                           skip_reconstruction: bool = False,
-                           keypoint_name: str = 'SIFT',
-                           descriptor_name: str = 'SIFT') -> kapture.Kapture:
+                           skip_reconstruction: bool = False) -> kapture.Kapture:
     """
     Converts colmap database file to kapture data.
     If kapture_dir_path is given, it creates keypoints, descriptors, matches files (if any).
@@ -45,9 +45,9 @@ def import_colmap_database(colmap_database_filepath: str,
     :param colmap_database_filepath: path to colmap database file.
     :param kapture_dir_path: path to kapture directory. Is used to store keypoints, descriptors and matches files.
                             If not given (None), is equivalent to skip_reconstruction == True.
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder (by default, in colmap, its SIFT, but can be imported)
     :param no_geometric_filtering:
-    :param keypoint_name: name of the keypoints detector (by default, in colmap, its SIFT, but can be imported)
-    :param descriptor_name: name of the keypoints descriptor (by default, in colmap, its SIFT, but can be imported)
     :param skip_reconstruction: skip the import of the kapture/reconstruction part,
                             ie. Keypoints, Descriptors, Matches.
     :return: kapture object
@@ -70,18 +70,23 @@ def import_colmap_database(colmap_database_filepath: str,
 
         # keypoints
         logger.debug('parsing keypoints in database...')
-        kapture_data.keypoints = get_keypoints_from_database(
-            db, kapture_data.records_camera, kapture_dir_path, keypoint_name)
+        keypoints = get_keypoints_from_database(db, kapture_data.records_camera, kapture_dir_path, None, keypoints_type)
+        if keypoints is not None:
+            kapture_data.keypoints = {keypoints_type: keypoints}
 
         # descriptors
         logger.debug('parsing descriptors in database...')
-        kapture_data.descriptors = get_descriptors_from_database(
-            db, kapture_data.records_camera, kapture_dir_path, descriptor_name)
+        descriptors = get_descriptors_from_database(db, kapture_data.records_camera, kapture_dir_path,
+                                                    None, keypoints_type, descriptors_type)
+        if descriptors is not None:
+            kapture_data.descriptors = {descriptors_type: descriptors}
 
         # matches
         logger.debug('parsing matches in database...')
-        kapture_data.matches = get_matches_from_database(
-            db, kapture_data.records_camera, kapture_dir_path, no_geometric_filtering)
+        matches = get_matches_from_database(db, kapture_data.records_camera, kapture_dir_path,
+                                            None, keypoints_type, no_geometric_filtering)
+        if matches is not None:
+            kapture_data.matches = {keypoints_type: matches}
 
     db.close()
     return kapture_data
@@ -89,9 +94,10 @@ def import_colmap_database(colmap_database_filepath: str,
 
 def import_colmap_from_reconstruction_files(reconstruction_dir_path: str,
                                             kapture_dir_path: Optional[str],
+                                            keypoints_type: str = 'SIFT',
                                             skip: Set[Type[Union[kapture.Keypoints,
                                                                  kapture.Points3d,
-                                                                 kapture.Observations]]]
+                                                                 kapture.Observations]]] = set()
                                             ) -> kapture.Kapture:
     """
     Converts colmap reconstruction files to kapture data.
@@ -100,6 +106,7 @@ def import_colmap_from_reconstruction_files(reconstruction_dir_path: str,
     :param reconstruction_dir_path:
     :param kapture_dir_path: path to kapture directory. Is used to store keypoints files.
                             If not given (None), keypoints are automatically skipped.
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
     :param skip: can skip independently : Keypoints, Points3d or Observations.
                 Note that Points3d and Observations are in the same file, so you should skip both to gain its reading.
     :return: kapture object
@@ -125,18 +132,24 @@ def import_colmap_from_reconstruction_files(reconstruction_dir_path: str,
         logging.debug(f'loading images from:\n\t"{path.basename(colmap_images_filepath)}"')
         kapture_dir_path_for_keypoints = kapture_dir_path if proceed_keypoints else None
         images, trajectories, keypoints = import_from_colmap_images_txt(
-            colmap_images_filepath, kapture_dir_path_for_keypoints)
+            colmap_images_filepath, kapture_dir_path_for_keypoints, keypoints_type)
 
         kapture_data.records_camera = images
         kapture_data.trajectories = trajectories
-        kapture_data.keypoints = keypoints
+        if keypoints is not None:
+            if kapture_data.keypoints is None:
+                kapture_data.keypoints = {}
+            kapture_data.keypoints[keypoints_type] = keypoints
 
     if proceed_points3d or proceed_observations:
         assert kapture_data.records_camera is not None
         image_id_2_names = {ts: image_name
                             for ts, cam_id, image_name in kapture.flatten(kapture_data.records_camera, True)}
         logger.debug(f'parsing 3d points and observations from:\n\t"{path.basename(colmap_points3d_filepath)}"')
-        points3d, observations = import_from_colmap_points3d_txt(colmap_points3d_filepath, image_id_2_names)
+        points3d, observations = import_from_colmap_points3d_txt(colmap_points3d_filepath,
+                                                                 image_id_2_names,
+                                                                 keypoints_type,
+                                                                 skip_observations=False)
         kapture_data.points3d = points3d if proceed_points3d else None
         kapture_data.observations = observations if proceed_observations else None
 
@@ -148,6 +161,8 @@ def import_colmap(kapture_dir_path: Optional[str],  # noqa: C901: the import alg
                   colmap_reconstruction_dir_path: str = None,
                   colmap_images_dir_path: str = None,
                   colmap_rig_filepath: str = None,
+                  keypoints_type: str = 'SIFT',
+                  descriptors_type: str = 'SIFT',
                   no_geometric_filtering: bool = False,
                   skip_reconstruction: bool = False,
                   force_overwrite_existing: bool = False,
@@ -162,6 +177,8 @@ def import_colmap(kapture_dir_path: Optional[str],  # noqa: C901: the import alg
     :param colmap_reconstruction_dir_path: optional path to colmap reconstruction directory.
     :param colmap_images_dir_path: directory path to colmap images. If given, a link to it will be created.
     :param colmap_rig_filepath: optional path to colmap rig file.
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder (by default, in colmap, its SIFT, but can be imported)
     :param no_geometric_filtering:
     :param skip_reconstruction: skip the import of the kapture/reconstruction part,
                                 ie. Keypoints, Descriptors, Matches, Points3d, Observations.
@@ -184,7 +201,9 @@ def import_colmap(kapture_dir_path: Optional[str],  # noqa: C901: the import alg
     if colmap_database_filepath:
         logger.debug(f'importing from database "{colmap_database_filepath}"')
         kapture_from_database = import_colmap_database(
-            colmap_database_filepath, kapture_dir_path, no_geometric_filtering, skip_reconstruction)
+            colmap_database_filepath, kapture_dir_path,
+            keypoints_type, descriptors_type,
+            no_geometric_filtering, skip_reconstruction)
 
     # 2: import reconstruction text files.
     kapture_data_reconstructed = None
@@ -201,7 +220,7 @@ def import_colmap(kapture_dir_path: Optional[str],  # noqa: C901: the import alg
             what_to_skip_during_import_txt |= {kapture.Keypoints, kapture.Points3d, kapture.Observations}
         logger.debug(f'importing from reconstruction "{colmap_reconstruction_dir_path}"')
         kapture_data_reconstructed = import_colmap_from_reconstruction_files(
-            colmap_reconstruction_dir_path, kapture_dir_path, what_to_skip_during_import_txt)
+            colmap_reconstruction_dir_path, kapture_dir_path, keypoints_type, what_to_skip_during_import_txt)
 
     # Merge data from database and reconstruction files
     if colmap_database_filepath and colmap_reconstruction_dir_path:
@@ -257,5 +276,5 @@ def import_colmap(kapture_dir_path: Optional[str],  # noqa: C901: the import alg
             filename_list,
             images_import_strategy
         )
-
+    assert kapture_data is not None
     return kapture_data
diff --git a/kapture/converter/colmap/import_colmap_database.py b/kapture/converter/colmap/import_colmap_database.py
index 3eff950..fbf0f22 100644
--- a/kapture/converter/colmap/import_colmap_database.py
+++ b/kapture/converter/colmap/import_colmap_database.py
@@ -4,6 +4,7 @@
 Colmap database import as basic kapture objects functions
 """
 
+from kapture.io.tar import TarCollection
 import logging
 import numpy as np
 from tqdm import tqdm
@@ -93,7 +94,8 @@ def get_images_and_trajectories_from_database(database: COLMAPDatabase
 def get_keypoints_from_database(database: COLMAPDatabase,
                                 records_camera: kapture.RecordsCamera,
                                 kapture_dirpath: str,
-                                keypoint_name: str = 'SIFT'
+                                tar_handlers: Optional[TarCollection] = None,
+                                keypoints_type: str = 'SIFT'
                                 ) -> Optional[kapture.Keypoints]:
     """
     Writes keypoints files and return the kapture keypoints from the colmap database.
@@ -102,7 +104,8 @@ def get_keypoints_from_database(database: COLMAPDatabase,
     :param database: colmap database.
     :param records_camera: input images.
     :param kapture_dirpath: input root path to kapture.
-    :param keypoint_name: name of the keypoints detector (by default, in colmap, its SIFT, but can be imported)
+    :param tar_handler: collection of preloaded tar archives
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
     :return: kapture keypoints
     """
     image_filenames = set()
@@ -123,7 +126,10 @@ def get_keypoints_from_database(database: COLMAPDatabase,
         timestamp = colmap_image_id
         image_filename = next((v for v in records_camera[timestamp].values()), None)
         assert image_filename
-        keypoints_filepath = kapture.io.features.get_keypoints_fullpath(kapture_dirpath, image_filename)
+        keypoints_filepath = kapture.io.features.get_keypoints_fullpath(keypoints_type,
+                                                                        kapture_dirpath,
+                                                                        image_filename,
+                                                                        tar_handlers)
 
         # handle no keypoints (delay)
         if image_keypoints is None or image_keypoints.shape[0] == 0:
@@ -154,7 +160,7 @@ def get_keypoints_from_database(database: COLMAPDatabase,
         image_filenames.add(image_filename)
 
     if image_filenames:
-        return kapture.Keypoints(keypoint_name, dtype, dsize, image_filenames)
+        return kapture.Keypoints(keypoints_type, dtype, dsize, image_filenames)
     else:
         return None
 
@@ -162,7 +168,9 @@ def get_keypoints_from_database(database: COLMAPDatabase,
 def get_descriptors_from_database(database: COLMAPDatabase,
                                   images: kapture.RecordsCamera,
                                   kapture_dirpath: str,
-                                  descriptor_name: str = 'SIFT'
+                                  tar_handlers: Optional[TarCollection] = None,
+                                  keypoints_type: str = 'SIFT',
+                                  descriptors_type: str = 'SIFT'
                                   ) -> Optional[kapture.Descriptors]:
     """
     Writes descriptors files and return the list in kapture format from the colmap database.
@@ -170,7 +178,9 @@ def get_descriptors_from_database(database: COLMAPDatabase,
     :param database: colmap database.
     :param images: list of images (as RecordsCamera).
     :param kapture_dirpath: input root path to kapture.
-    :param descriptor_name: name of the keypoints descriptor (by default, in colmap, its SIFT, but can be imported)
+    :param tar_handler: collection of preloaded tar archives
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder (by default, in colmap, its SIFT, but can be imported)
     :return: kapture descriptors
     """
     image_filenames = set()
@@ -188,7 +198,10 @@ def get_descriptors_from_database(database: COLMAPDatabase,
         # retrieve image path from image_id (actually the timestamp)
         image_filename = next((v for v in images[image_id].values()), None)
         assert image_filename
-        descriptors_filepath = kapture.io.features.get_descriptors_fullpath(kapture_dirpath, image_filename)
+        descriptors_filepath = kapture.io.features.get_descriptors_fullpath(descriptors_type,
+                                                                            kapture_dirpath,
+                                                                            image_filename,
+                                                                            tar_handlers)
 
         if image_descriptors is None or image_descriptors.shape[0] == 0:
             logger.warning(f'image={image_id}:{image_filename} has 0 descriptors.')
@@ -218,7 +231,7 @@ def get_descriptors_from_database(database: COLMAPDatabase,
         image_filenames.add(image_filename)
 
     if image_filenames:
-        return kapture.Descriptors(descriptor_name, dtype, dsize, image_filenames)
+        return kapture.Descriptors(descriptors_type, dtype, dsize, keypoints_type, "L2", image_filenames)
     else:
         return None
 
@@ -226,13 +239,17 @@ def get_descriptors_from_database(database: COLMAPDatabase,
 def get_matches_from_database(database: COLMAPDatabase,
                               images: kapture.RecordsCamera,
                               kapture_dirpath: str,
-                              no_geometric_filtering: bool) -> kapture.Matches:
+                              tar_handlers: Optional[TarCollection] = None,
+                              keypoints_type: str = 'SIFT',
+                              no_geometric_filtering: bool = False) -> kapture.Matches:
     """
     Writes Matches files and return the list in kapture format from the colmap database.
 
     :param database: input colmap database.
     :param images: input list of images (as RecordsCamera).
     :param kapture_dirpath: input root path to kapture.
+    :param tar_handler: collection of preloaded tar archives
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
     :param no_geometric_filtering: only retrieve matches with geometric consistency.
     :return: kapture matches
     """
@@ -276,7 +293,10 @@ def get_matches_from_database(database: COLMAPDatabase,
         # convert colmap image matches into kapture (cast to float and add a score column)
         image_matches = image_matches.astype(np.float)
         image_matches = np.hstack([image_matches, np.zeros((image_matches.shape[0], 1))])
-        image_matches_filepath = kapture.io.features.get_matches_fullpath((filename1, filename2), kapture_dirpath)
+        image_matches_filepath = kapture.io.features.get_matches_fullpath((filename1, filename2),
+                                                                          keypoints_type,
+                                                                          kapture_dirpath,
+                                                                          tar_handlers)
         kapture.io.features.image_matches_to_file(image_matches_filepath, image_matches)
         # register the matching in kapture
         kapture_matches.add(filename1, filename2)
diff --git a/kapture/converter/colmap/import_colmap_reconstruction.py b/kapture/converter/colmap/import_colmap_reconstruction.py
index 86483c1..4116c8e 100644
--- a/kapture/converter/colmap/import_colmap_reconstruction.py
+++ b/kapture/converter/colmap/import_colmap_reconstruction.py
@@ -47,7 +47,8 @@ def import_from_colmap_cameras_txt(colmap_cameras_filepath: str) -> kapture.Sens
 
 
 def import_from_colmap_images_txt(colmap_images_filepath: str,
-                                  kapture_dirpath: Optional[str] = None
+                                  kapture_dirpath: Optional[str] = None,
+                                  keypoints_type: str = 'SIFT'
                                   ) -> Tuple[kapture.RecordsCamera, kapture.Trajectories, Optional[kapture.Keypoints]]:
     """
     Imports RecordsCamera, Trajectories and Keypoints from colmap images.txt
@@ -55,6 +56,7 @@ def import_from_colmap_images_txt(colmap_images_filepath: str,
     :param colmap_images_filepath: path to colmap images.txt file
     :param kapture_dirpath: path to kapture root path.
                             If not given (None), keypoints are not created.
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
     :return: kapture images, trajectories and keypoints
     """
 
@@ -106,19 +108,22 @@ def import_from_colmap_images_txt(colmap_images_filepath: str,
                 image_keypoints_colmap = np.array(fields).reshape((-1, 3))[:, 0:2].astype(np.float32)
                 # register as keypoints if there is at least one
                 if image_keypoints_colmap.shape[0] > 0:
-                    keypoints_filepath = kapture.io.features.get_keypoints_fullpath(kapture_dirpath, image_name)
+                    keypoints_filepath = kapture.io.features.get_keypoints_fullpath(keypoints_type,
+                                                                                    kapture_dirpath,
+                                                                                    image_name)
                     kapture.io.features.image_keypoints_to_file(keypoints_filepath, image_keypoints_colmap)
                     image_names_with_keypoints.add(image_name)
                     # TODO: observations
 
         if image_names_with_keypoints:
-            keypoints = kapture.Keypoints('SIFT', np.float32, 2, image_names_with_keypoints)
+            keypoints = kapture.Keypoints(keypoints_type, np.float32, 2, image_names_with_keypoints)
 
     return images, trajectories, keypoints
 
 
 def import_from_colmap_points3d_txt(colmap_points3d_filepath: str,
                                     image_names: Dict[int, str] = None,
+                                    keypoints_type: str = 'SIFT',
                                     skip_observations: bool = False
                                     ) -> Tuple[kapture.Points3d, Optional[kapture.Observations]]:
     """
@@ -127,6 +132,7 @@ def import_from_colmap_points3d_txt(colmap_points3d_filepath: str,
     :param colmap_points3d_filepath: path to the colmap file named "points3d.txt"
     :param image_names: dict of image names matching the colmap image id to the kapture image name
                         colmap_image_idx -> kapture_image_filename
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder (by default, in colmap, its SIFT, but can be imported)
     :param skip_observations: skip import of observations id true.
     :return: kapture 3D points and observations
     """
@@ -148,7 +154,7 @@ def import_from_colmap_points3d_txt(colmap_points3d_filepath: str,
             if not skip_observations and len(values) > 8 and len(image_names) > 0:
                 for image_idx, point_2d_idx in zip(values[8::2], values[9::2]):
                     filename = image_names.get(int(image_idx), 'unknown')
-                    observations.add(index, filename, int(point_2d_idx))
+                    observations.add(index, keypoints_type, filename, int(point_2d_idx))
 
     points3d = kapture.Points3d(np.array(points3d)) if points3d else kapture.Points3d()
     observations = None if len(observations) == 0 else observations
diff --git a/kapture/converter/openmvg/export_openmvg.py b/kapture/converter/openmvg/export_openmvg.py
index 17ceb4c..aabd106 100644
--- a/kapture/converter/openmvg/export_openmvg.py
+++ b/kapture/converter/openmvg/export_openmvg.py
@@ -20,7 +20,9 @@
 from kapture.io.features import keypoints_to_filepaths, image_keypoints_from_file, get_keypoints_fullpath
 from kapture.io.features import descriptors_to_filepaths, image_descriptors_from_file
 from kapture.io.features import matches_to_filepaths, image_matches_from_file
+from kapture.utils.Collections import try_get_only_key_from_collection
 import kapture.io.structure
+from kapture.io.tar import TarCollection
 from kapture.core.Trajectories import rigs_remove_inplace
 from kapture.utils.paths import safe_remove_file, safe_remove_any_path
 # local
@@ -342,11 +344,13 @@ def export_openmvg_poses(
 
 
 def export_openmvg_structure(
-        kapture_points_3d: kapture.Points3d,
+        kapture_points_3d: Optional[kapture.Points3d],
         kapture_to_openmvg_view_ids: Dict[str, int],
         kapture_observations: Optional[kapture.Observations] = None,
         kapture_keypoints: Optional[kapture.Keypoints] = None,
+        keypoints_type: Optional[str] = None,
         kapture_path: Optional[str] = None,
+        tar_handlers: Optional[TarCollection] = None,
 ):
     # early check
     if kapture_points_3d is None:
@@ -367,15 +371,22 @@ def export_openmvg_structure(
                 'observations': []
             }
         }
-        if include_2d_observations and point_idx in kapture_observations:
-            for kapture_image_name, feature_point_id in kapture_observations[point_idx]:
+        if include_2d_observations and \
+                kapture_observations is not None and \
+                point_idx in kapture_observations and \
+                keypoints_type is not None and \
+                keypoints_type in kapture_observations[point_idx]:
+            for kapture_image_name, feature_point_id in kapture_observations[point_idx, keypoints_type]:
                 openmvg_view_id = kapture_to_openmvg_view_ids[kapture_image_name]
                 point_2d_observation = {'key': openmvg_view_id,
                                         'value': {'id_feat': feature_point_id, }}
 
                 if kapture_path and kapture_keypoints is not None:
                     # if given, load keypoints to populate 2D coordinates of the feature.
-                    keypoints_file_path = get_keypoints_fullpath(kapture_path, kapture_image_name)
+                    keypoints_file_path = get_keypoints_fullpath(keypoints_type,
+                                                                 kapture_path,
+                                                                 kapture_image_name,
+                                                                 tar_handlers)
                     try:
                         keypoints_data = image_keypoints_from_file(keypoints_file_path,
                                                                    dtype=kapture_keypoints.dtype,
@@ -392,15 +403,17 @@ def export_openmvg_structure(
 
 
 def export_openmvg_sfm_data(
-        kapture_path: str,
-        kapture_data: kapture.Kapture,
-        openmvg_sfm_data_file_path: str,
-        openmvg_image_root_path: str,
-        image_action: TransferAction,
-        image_path_flatten: bool,
-        force: bool,
-        kapture_to_openmvg_view_ids: dict = {}
-) -> Dict:
+    keypoints_type: Optional[str],
+    kapture_path: str,
+    tar_handlers: TarCollection,
+    kapture_data: kapture.Kapture,
+    openmvg_sfm_data_file_path: str,
+    openmvg_image_root_path: str,
+    image_action: TransferAction,
+    image_path_flatten: bool,
+    force: bool,
+    kapture_to_openmvg_view_ids: dict = {}
+) -> None:
     """
     Convert the kapture data into an openMVG dataset stored as a dictionary.
     The format is defined here:
@@ -486,8 +499,13 @@ def export_openmvg_sfm_data(
         kapture_points_3d=kapture_data.points3d,
         kapture_to_openmvg_view_ids=kapture_to_openmvg_view_ids,
         kapture_observations=kapture_data.observations,
-        kapture_keypoints=kapture_data.keypoints,
-        kapture_path=kapture_path
+        kapture_keypoints=kapture_data.keypoints[keypoints_type] if (
+            kapture_data.keypoints is not None and
+            keypoints_type is not None and
+            keypoints_type in kapture_data.keypoints) else None,
+        kapture_path=kapture_path,
+        tar_handlers=tar_handlers,
+        keypoints_type=keypoints_type
     )
 
     openmvg_sfm_data = {
@@ -524,8 +542,11 @@ def export_openmvg_sfm_data(
 
 def export_openmvg_regions(
         kapture_path: str,
+        tar_handlers: TarCollection,
+        keypoints_type: Optional[str],
+        descriptors_type: Optional[str],
         kapture_keypoints: Optional[kapture.Keypoints],
-        kapture_descriptors: kapture.Descriptors,
+        kapture_descriptors: Optional[kapture.Descriptors],
         openmvg_regions_dir_path: str,
         image_path_flatten: bool
 ):
@@ -540,7 +561,7 @@ def export_openmvg_regions(
     :return:
     """
     # early check we should do
-    if kapture_keypoints is None or kapture_descriptors is None:
+    if kapture_keypoints is None or kapture_descriptors is None or keypoints_type is None or descriptors_type is None:
         logger.warning('no keypoints or descriptors to export.')
         return
 
@@ -568,7 +589,7 @@ def export_openmvg_regions(
     hide_progress_bars = logger.getEffectiveLevel() > logging.INFO
 
     # copy keypoints files
-    keypoints = keypoints_to_filepaths(kapture_keypoints, kapture_path)
+    keypoints = keypoints_to_filepaths(kapture_keypoints, keypoints_type, kapture_path, tar_handlers)
     for kapture_image_name, kapture_keypoint_file_path in tqdm(keypoints.items(), disable=hide_progress_bars):
         openmvg_keypoint_file_name = get_openmvg_image_path(kapture_image_name, image_path_flatten)
         openmvg_keypoint_file_name = path.splitext(path.basename(openmvg_keypoint_file_name))[0] + '.feat'
@@ -587,7 +608,7 @@ def export_openmvg_regions(
     using AKAZE_Liop_Regions = Scalar_Regions<SIOPointFeature, unsigned char, 144>;
     using AKAZE_Binary_Regions = Binary_Regions<SIOPointFeature, 64>;
     """
-    descriptors = descriptors_to_filepaths(kapture_descriptors, kapture_path)
+    descriptors = descriptors_to_filepaths(kapture_descriptors, descriptors_type, kapture_path, tar_handlers)
     for kapture_image_name, kapture_descriptors_file_path in tqdm(descriptors.items(), disable=hide_progress_bars):
         openmvg_descriptors_file_name = get_openmvg_image_path(kapture_image_name, image_path_flatten)
         openmvg_descriptors_file_name = path.splitext(path.basename(openmvg_descriptors_file_name))[0] + '.desc'
@@ -605,11 +626,13 @@ def export_openmvg_regions(
 
 def export_openmvg_matches(
         kapture_path: str,
+        tar_handlers: TarCollection,
+        keypoints_type: Optional[str],
         kapture_data: kapture.Kapture,
         openmvg_matches_file_path: str,
         kapture_to_openmvg_view_ids: Dict[str, int]
 ):
-    if kapture_data.matches is None:
+    if kapture_data.matches is None or keypoints_type is None or keypoints_type not in kapture_data.matches:
         logger.warning('No matches to be exported.')
         return
 
@@ -620,7 +643,7 @@ def export_openmvg_matches(
     os.makedirs(path.dirname(openmvg_matches_file_path), exist_ok=True)
 
     hide_progress_bars = logger.getEffectiveLevel() > logging.INFO
-    matches = matches_to_filepaths(kapture_data.matches, kapture_path)
+    matches = matches_to_filepaths(kapture_data.matches[keypoints_type], keypoints_type, kapture_path, tar_handlers)
     with open(openmvg_matches_file_path, 'w') as fid:
         for image_pair, kapture_matches_filepath in tqdm(matches.items(), disable=hide_progress_bars):
             # idx image1 idx image 2
@@ -635,14 +658,16 @@ def export_openmvg_matches(
 
 
 def export_openmvg(
-        kapture_path: str,
-        openmvg_sfm_data_file_path: str,
-        openmvg_image_root_path: str = None,
-        openmvg_regions_dir_path: str = None,
-        openmvg_matches_file_path: str = None,
-        image_action: TransferAction = TransferAction.skip,
-        image_path_flatten: bool = False,
-        force: bool = False
+    kapture_path: str,
+    openmvg_sfm_data_file_path: str,
+    openmvg_image_root_path: str = None,
+    openmvg_regions_dir_path: str = None,
+    openmvg_matches_file_path: str = None,
+    image_action: TransferAction = TransferAction.skip,
+    image_path_flatten: bool = False,
+    keypoints_type: Optional[str] = None,
+    descriptors_type: Optional[str] = None,
+    force: bool = False
 ) -> None:
     """
     Export the kapture data to an openMVG files.
@@ -672,43 +697,62 @@ def export_openmvg(
 
     # load kapture
     logger.info(f'loading kapture {kapture_path}...')
-    kapture_data = kapture.io.csv.kapture_from_dir(kapture_path)
-    if kapture_data is None or not isinstance(kapture_data, kapture.Kapture):
-        raise ValueError(f'unable to load kapture from {kapture_path}')
-    kapture_to_openmvg_view_ids = {}
-
-    logger.info(f'exporting sfm data to {openmvg_sfm_data_file_path} ...')
-    export_openmvg_sfm_data(
-        kapture_data=kapture_data,
-        kapture_path=kapture_path,
-        openmvg_sfm_data_file_path=openmvg_sfm_data_file_path,
-        openmvg_image_root_path=openmvg_image_root_path,
-        image_action=image_action,
-        image_path_flatten=image_path_flatten,
-        force=force,
-        kapture_to_openmvg_view_ids=kapture_to_openmvg_view_ids)
-
-    if openmvg_regions_dir_path is not None:
-        try:
-            logger.info(f'exporting regions to {openmvg_regions_dir_path} ...')
-            export_openmvg_regions(
-                kapture_path=kapture_path,
-                kapture_keypoints=kapture_data.keypoints,
-                kapture_descriptors=kapture_data.descriptors,
-                openmvg_regions_dir_path=openmvg_regions_dir_path,
-                image_path_flatten=image_path_flatten
-            )
-        except ValueError as e:
-            logger.error(e)
-
-    if openmvg_matches_file_path is not None:
-        try:
-            logger.info(f'exporting matches to {openmvg_matches_file_path} ...')
-            export_openmvg_matches(
-                kapture_path=kapture_path,
-                kapture_data=kapture_data,
-                openmvg_matches_file_path=openmvg_matches_file_path,
-                kapture_to_openmvg_view_ids=kapture_to_openmvg_view_ids
-            )
-        except ValueError as e:
-            logger.error(e)
+    with kapture.io.csv.get_all_tar_handlers(kapture_path) as tar_handlers:
+        kapture_data = kapture.io.csv.kapture_from_dir(kapture_path, tar_handlers=tar_handlers)
+        if kapture_data is None or not isinstance(kapture_data, kapture.Kapture):
+            raise ValueError(f'unable to load kapture from {kapture_path}')
+        kapture_to_openmvg_view_ids = {}
+
+        if keypoints_type is None:
+            keypoints_type = try_get_only_key_from_collection(kapture_data.keypoints)
+        if descriptors_type is None:
+            descriptors_type = try_get_only_key_from_collection(kapture_data.descriptors)
+
+        logger.info(f'exporting sfm data to {openmvg_sfm_data_file_path} ...')
+        export_openmvg_sfm_data(
+            keypoints_type=keypoints_type,
+            kapture_data=kapture_data,
+            kapture_path=kapture_path,
+            tar_handlers=tar_handlers,
+            openmvg_sfm_data_file_path=openmvg_sfm_data_file_path,
+            openmvg_image_root_path=openmvg_image_root_path,
+            image_action=image_action,
+            image_path_flatten=image_path_flatten,
+            force=force,
+            kapture_to_openmvg_view_ids=kapture_to_openmvg_view_ids)
+
+        if openmvg_regions_dir_path is not None:
+            try:
+                logger.info(f'exporting regions to {openmvg_regions_dir_path} ...')
+                export_openmvg_regions(
+                    kapture_path=kapture_path,
+                    kapture_keypoints=kapture_data.keypoints[keypoints_type] if (
+                        kapture_data.keypoints is not None and
+                        keypoints_type is not None and
+                        keypoints_type in kapture_data.keypoints) else None,
+                    kapture_descriptors=kapture_data.descriptors[descriptors_type] if (
+                        kapture_data.descriptors is not None and
+                        descriptors_type is not None and
+                        descriptors_type in kapture_data.descriptors) else None,
+                    openmvg_regions_dir_path=openmvg_regions_dir_path,
+                    image_path_flatten=image_path_flatten,
+                    tar_handlers=tar_handlers,
+                    keypoints_type=keypoints_type,
+                    descriptors_type=descriptors_type
+                )
+            except ValueError as e:
+                logger.error(e)
+
+        if openmvg_matches_file_path is not None:
+            try:
+                logger.info(f'exporting matches to {openmvg_matches_file_path} ...')
+                export_openmvg_matches(
+                    kapture_path=kapture_path,
+                    kapture_data=kapture_data,
+                    openmvg_matches_file_path=openmvg_matches_file_path,
+                    kapture_to_openmvg_view_ids=kapture_to_openmvg_view_ids,
+                    tar_handlers=tar_handlers,
+                    keypoints_type=keypoints_type
+                )
+            except ValueError as e:
+                logger.error(e)
diff --git a/kapture/converter/openmvg/import_openmvg.py b/kapture/converter/openmvg/import_openmvg.py
index 963eeda..3e270c7 100644
--- a/kapture/converter/openmvg/import_openmvg.py
+++ b/kapture/converter/openmvg/import_openmvg.py
@@ -17,8 +17,9 @@
 import kapture
 import kapture.io.csv as kcsv
 import kapture.io.structure
-from kapture.io.records import TransferAction, get_image_fullpath, transfer_files_from_dir
+from kapture.io.records import TransferAction, get_image_fullpath
 from kapture.io.features import get_keypoints_fullpath, get_descriptors_fullpath
+from kapture.io.features import get_matches_fullpath
 from kapture.io.binary import array_to_file
 from kapture.utils.paths import path_secure
 # local
@@ -345,8 +346,12 @@ def _import_openmvg_regions(
     # retrieve what type of descriptors it is.
     descriptors_type = image_describer.get('image_describer', {}).get('polymorphic_name', 'UNDEFINED')
     descriptors_props = {
-        'SIFT_Image_describer': dict(type_name='SIFT', dtype=np.int32, dsize=128),
-        'AKAZE_Image_describer_SURF': dict(type_name='AKAZE', dtype=np.int32, dsize=128),
+        'SIFT_Image_describer': dict(type_name='SIFT', dtype=np.int32, dsize=128,
+                                     keypoints_type=keypoints_type,
+                                     metric_type='L2'),
+        'AKAZE_Image_describer_SURF': dict(type_name='AKAZE', dtype=np.int32, dsize=128,
+                                           keypoints_type=keypoints_type,
+                                           metric_type='L2'),
     }.get(descriptors_type)
     if not descriptors_props:
         raise ValueError(f'conversion of {descriptors_type} descriptors not implemented.')
@@ -357,6 +362,7 @@ def _import_openmvg_regions(
     for _, _, image_name in kapture.flatten(kapture_data.records_camera):
         openmvg_image_name = path.splitext(path.basename(image_name))[0]
         # keypoints
+        keypoints_data = None
         openmvg_keypoints_filepath = path.join(openmvg_regions_directory_path, openmvg_image_name + '.feat')
         if path.isfile(openmvg_keypoints_filepath):
             # there is a keypoints file in openMVG, lets add it to kapture
@@ -364,7 +370,9 @@ def _import_openmvg_regions(
             assert keypoints_data.shape[1] == 4
             kapture_keypoints.add(image_name)
             # and convert file
-            kapture_keypoints_filepath = kapture.io.features.get_keypoints_fullpath(kapture_path, image_name)
+            kapture_keypoints_filepath = get_keypoints_fullpath(keypoints_type,
+                                                                kapture_path,
+                                                                image_name)
             array_to_file(kapture_keypoints_filepath, keypoints_data)
 
         # descriptors
@@ -374,26 +382,90 @@ def _import_openmvg_regions(
             # there is a keypoints file in openMVG, lets add it to kapture
             # assumes descriptors shape from keypoints_data shape
             descriptors_data_bytes = np.fromfile(openmvg_descriptors_filepath, dtype=np.uint8)
-            nb_features = keypoints_data.shape[0]
+            nb_features = keypoints_data.shape[0] if keypoints_data is not None else 0
             descriptors_shape = descriptors_data_bytes[0:8].view(descriptors_props['dtype'])
             assert descriptors_shape[0] == nb_features
             descriptors_data = descriptors_data_bytes[8:].view(np.uint8).reshape((nb_features, 128))
             # descriptors_data.reshape((keypoints_data.shape[0], -1))
             kapture_descriptors.add(image_name)
             # and convert file
-            kapture_descriptors_filepath = kapture.io.features.get_descriptors_fullpath(kapture_path, image_name)
+            kapture_descriptors_filepath = get_descriptors_fullpath(descriptors_type,
+                                                                    kapture_path,
+                                                                    image_name)
             array_to_file(kapture_descriptors_filepath, descriptors_data)
 
-    kapture_data.keypoints = kapture_keypoints
-    kapture_data.descriptors = kapture_descriptors
+    kapture_data.keypoints = {keypoints_type: kapture_keypoints}
+    kapture_data.descriptors = {descriptors_type: kapture_descriptors}
 
 
 def _import_openmvg_matches(
-        matches_file_path,
-        kapture_data,
-        kapture_path):
-    # look for the "image_describer.json"
-    # matches.*.bin files use cereal over a
-    # map < pair <uint32_t, uint32_t>, std::vector<uint64_t> >
-    # matches = np.fromfile(matches_file_path, dtype=np.uint8)
-    pass  # Ongoing work ...
+        matches_file_path: str,
+        kapture_data: kapture.Kapture,
+        kapture_path: str):
+    if kapture_data.records_camera is None:
+        logger.warning('no images in records_camera, cannot import matches')
+        return
+    if kapture_data.keypoints is None:
+        logger.warning('no keypoints, cannot import matches')
+        return
+    assert len(kapture_data.keypoints) == 1
+    keypoints_type = next(iter(kapture_data.keypoints.keys()))
+
+    # idx image1 idx image 2
+    # nb pairs
+    # pl1 pr1 pl2 pr2 ...
+    openmvg_image_idx_to_kapture_image_name = {}
+    matches = kapture.Matches()
+    with open(matches_file_path, 'r') as fid:
+        while True:
+            line = fid.readline()
+            if not line:
+                break
+            splits_idx = line.rstrip('\r\n').split()
+            assert len(splits_idx) == 2
+            idx_image1 = int(splits_idx[0])
+            if idx_image1 in openmvg_image_idx_to_kapture_image_name:
+                image_1 = openmvg_image_idx_to_kapture_image_name[idx_image1]
+            else:
+                if idx_image1 not in kapture_data.records_camera:
+                    raise ValueError(f'{idx_image1} not in kapture_data.records_camera')
+                assert len(kapture_data.records_camera[idx_image1]) == 1
+                sensor_id = next(iter(kapture_data.records_camera[idx_image1].keys()))
+                image_1 = kapture_data.records_camera.get(idx_image1)[sensor_id]
+                openmvg_image_idx_to_kapture_image_name[idx_image1] = image_1
+
+            idx_image2 = int(splits_idx[1])
+            if idx_image2 in openmvg_image_idx_to_kapture_image_name:
+                image_2 = openmvg_image_idx_to_kapture_image_name[idx_image2]
+            else:
+                if idx_image2 not in kapture_data.records_camera:
+                    raise ValueError(f'{idx_image2} not in kapture_data.records_camera')
+                assert len(kapture_data.records_camera[idx_image2]) == 1
+                sensor_id = next(iter(kapture_data.records_camera[idx_image2].keys()))
+                image_2 = kapture_data.records_camera.get(idx_image2)[sensor_id]
+                openmvg_image_idx_to_kapture_image_name[idx_image2] = image_2
+
+            swap_order = image_2 < image_1
+            line = fid.readline()
+            num_matches = int(line.rstrip('\r\n'))
+            matches_array = np.empty((num_matches, 3), dtype=np.float)
+            for i in range(num_matches):
+                line = fid.readline()
+                splits_kpts_idx = line.rstrip('\r\n').split()
+                assert len(splits_kpts_idx) == 2
+                if swap_order:
+                    matches_array[i, 1] = int(splits_kpts_idx[0])
+                    matches_array[i, 0] = int(splits_kpts_idx[1])
+                else:
+                    matches_array[i, 0] = int(splits_kpts_idx[0])
+                    matches_array[i, 1] = int(splits_kpts_idx[1])
+                matches_array[i, 2] = 1.0
+            if swap_order:
+                image_filename_pair = (image_2, image_1)
+                matches.add(image_2, image_1)
+            else:
+                image_filename_pair = (image_1, image_2)
+                matches.add(image_1, image_2)
+            matches_filepath = get_matches_fullpath(image_filename_pair, keypoints_type, kapture_path)
+            array_to_file(matches_filepath, matches_array)
+    kapture_data.matches = {keypoints_type: matches}
diff --git a/kapture/converter/opensfm/export_opensfm.py b/kapture/converter/opensfm/export_opensfm.py
index ea5be24..503f6bb 100644
--- a/kapture/converter/opensfm/export_opensfm.py
+++ b/kapture/converter/opensfm/export_opensfm.py
@@ -13,9 +13,11 @@
 import pickle
 import json
 from tqdm import tqdm
-from typing import Any, Dict
+from typing import Any, Dict, Optional
 # kapture
 import kapture
+from kapture.io.csv import get_all_tar_handlers, kapture_from_dir
+from kapture.utils.Collections import try_get_only_key_from_collection
 from kapture.io.binary import TransferAction, transfer_files_from_dir
 from kapture.io.features import get_keypoints_fullpath, image_keypoints_from_file
 from kapture.io.features import get_descriptors_fullpath, image_descriptors_from_file
@@ -187,7 +189,13 @@ def export_opensfm_camera(
     return opensfm_camera
 
 
-def _export_opensfm_features_and_matches(image_filenames, kapture_data, kapture_root_dir, opensfm_root_dir,
+def _export_opensfm_features_and_matches(image_filenames,
+                                         keypoints_type,
+                                         descriptors_type,
+                                         kapture_data,
+                                         kapture_root_dir,
+                                         tar_handlers,
+                                         opensfm_root_dir,
                                          disable_tqdm):
     """
     export features files (keypoints + descriptors) and matches
@@ -196,26 +204,45 @@ def _export_opensfm_features_and_matches(image_filenames, kapture_data, kapture_
     opensfm_features_dir_path = path.join(opensfm_root_dir, 'features')
     logger.info(f'exporting keypoint and descriptors to {opensfm_features_dir_path}')
     os.makedirs(opensfm_features_dir_path, exist_ok=True)
+
+    if keypoints_type is None:
+        keypoints_type = try_get_only_key_from_collection(kapture_data.keypoints)
+    # if it's still None try again from matches
+    if keypoints_type is None:
+        keypoints_type = try_get_only_key_from_collection(kapture_data.matches)
+    if descriptors_type is None:
+        descriptors_type = try_get_only_key_from_collection(kapture_data.descriptors)
+
     for image_filename in tqdm(image_filenames, disable=disable_tqdm):
         opensfm_features = {}
         # look and load for keypoints in kapture
-        if kapture_data.keypoints is not None and image_filename in kapture_data.keypoints:
-            kapture_keypoints_filepath = get_keypoints_fullpath(kapture_dirpath=kapture_root_dir,
-                                                                image_filename=image_filename)
+        if kapture_data.keypoints is not None and \
+                keypoints_type is not None and \
+                keypoints_type in kapture_data.keypoints and \
+                image_filename in kapture_data.keypoints[keypoints_type]:
+            kapture_keypoints_filepath = get_keypoints_fullpath(keypoints_type=keypoints_type,
+                                                                kapture_dirpath=kapture_root_dir,
+                                                                image_filename=image_filename,
+                                                                tar_handler=tar_handlers)
             logger.debug(f'loading {kapture_keypoints_filepath}')
             kapture_keypoint = image_keypoints_from_file(kapture_keypoints_filepath,
-                                                         dtype=kapture_data.keypoints.dtype,
-                                                         dsize=kapture_data.keypoints.dsize)
+                                                         dtype=kapture_data.keypoints[keypoints_type].dtype,
+                                                         dsize=kapture_data.keypoints[keypoints_type].dsize)
             opensfm_features['points'] = kapture_keypoint
 
         # look and load for descriptors in kapture
-        if kapture_data.descriptors is not None and image_filename in kapture_data.descriptors:
-            kapture_descriptor_filepath = get_descriptors_fullpath(kapture_dirpath=kapture_root_dir,
-                                                                   image_filename=image_filename)
+        if kapture_data.descriptors is not None and \
+                descriptors_type is not None and \
+                descriptors_type in kapture_data.descriptors and \
+                image_filename in kapture_data.descriptors[descriptors_type]:
+            kapture_descriptor_filepath = get_descriptors_fullpath(descriptors_type=descriptors_type,
+                                                                   kapture_dirpath=kapture_root_dir,
+                                                                   image_filename=image_filename,
+                                                                   tar_handler=tar_handlers)
             logger.debug(f'loading {kapture_descriptor_filepath}')
             kapture_descriptor = image_descriptors_from_file(kapture_descriptor_filepath,
-                                                             dtype=kapture_data.descriptors.dtype,
-                                                             dsize=kapture_data.descriptors.dsize)
+                                                             dtype=kapture_data.descriptors[descriptors_type].dtype,
+                                                             dsize=kapture_data.descriptors[descriptors_type].dsize)
             opensfm_features['descriptors'] = kapture_descriptor
 
         # writing opensfm feature file
@@ -226,13 +253,15 @@ def _export_opensfm_features_and_matches(image_filenames, kapture_data, kapture_
             np.save(opensfm_features_filepath, opensfm_features)
 
     # export matches files
-    if kapture_data.matches is not None:
+    if kapture_data.matches is not None and \
+            keypoints_type is not None and \
+            keypoints_type in kapture_data.matches:
         opensfm_matches_suffix = '_matches.pkl.gz'
         opensfm_matches_dir_path = path.join(opensfm_root_dir, 'matches')
         os.makedirs(opensfm_matches_dir_path, exist_ok=True)
         logger.info(f'exporting matches to {opensfm_matches_dir_path}')
         opensfm_pairs = {}
-        for image_filename1, image_filename2 in kapture_data.matches:
+        for image_filename1, image_filename2 in kapture_data.matches[keypoints_type]:
             opensfm_pairs.setdefault(image_filename1, []).append(image_filename2)
 
         for image_filename1 in tqdm(image_filenames, disable=disable_tqdm):
@@ -242,7 +271,10 @@ def _export_opensfm_features_and_matches(image_filenames, kapture_data, kapture_
             for image_filename2 in opensfm_pairs.get(image_filename1, []):
                 # print(image_filename1, image_filename2)
                 kapture_matches_filepath = get_matches_fullpath(
-                    (image_filename1, image_filename2), kapture_dirpath=kapture_root_dir)
+                    (image_filename1, image_filename2),
+                    keypoints_type=keypoints_type,
+                    kapture_dirpath=kapture_root_dir,
+                    tar_handler=tar_handlers)
                 kapture_matches = image_matches_from_file(kapture_matches_filepath)
                 opensfm_matches[image_filename2] = kapture_matches[:, 0:2].astype(np.int)
 
@@ -255,7 +287,9 @@ def export_opensfm(
         kapture_root_dir: str,
         opensfm_root_dir: str,
         force_overwrite_existing: bool = False,
-        images_export_method: TransferAction = TransferAction.copy
+        images_export_method: TransferAction = TransferAction.copy,
+        keypoints_type: Optional[str] = None,
+        descriptors_type: Optional[str] = None,
 ) -> None:
     """
     Export the kapture data to an openSfM format
@@ -268,69 +302,68 @@ def export_opensfm(
 
     disable_tqdm = logger.getEffectiveLevel() > logging.INFO  # don't display tqdm for non-verbose levels
     # load reconstruction
-    kapture_data = kapture.io.csv.kapture_from_dir(kapture_root_dir)
-
-    # export cameras
-    opensfm_cameras = {}
-    kapture_cameras = {cam_id: cam
-                       for cam_id, cam in kapture_data.sensors.items()
-                       if cam.sensor_type == kapture.SENSOR_TYPE_CAMERA}
-    for cam_id, kapture_camera in kapture_cameras.items():
-        opensfm_cameras[cam_id] = export_opensfm_camera(kapture_camera)
-
-    # export shots
-    opensfm_shots = {}
-    for timestamp, camera_id, image_filename in tqdm(kapture.flatten(kapture_data.records_camera),
-                                                     disable=disable_tqdm):
-        # retrieve pose (if there is one).
-        # opensfm_shots = {image_filename: shot}
-        # shot = {camera , rotation, translation, capture_time, gps_position, ...}
-        opensfm_shot = {
-            'capture_time': 0,  # in ms != timestamp
-            'camera': camera_id,
+    with get_all_tar_handlers(kapture_root_dir) as tar_handlers:
+        kapture_data = kapture_from_dir(kapture_root_dir, tar_handlers=tar_handlers)
+
+        # export cameras
+        opensfm_cameras = {}
+        for cam_id, kapture_camera in kapture_data.cameras.items():
+            opensfm_cameras[cam_id] = export_opensfm_camera(kapture_camera)
+
+        # export shots
+        opensfm_shots = {}
+        for timestamp, camera_id, image_filename in tqdm(kapture.flatten(kapture_data.records_camera),
+                                                         disable=disable_tqdm):
+            # retrieve pose (if there is one).
+            # opensfm_shots = {image_filename: shot}
+            # shot = {camera , rotation, translation, capture_time, gps_position, ...}
+            opensfm_shot = {
+                'capture_time': 0,  # in ms != timestamp
+                'camera': camera_id,
+            }
+            if (timestamp, camera_id) in kapture_data.trajectories.key_pairs():
+                pose = kapture_data.trajectories[timestamp, camera_id]
+                rotation_vector = quaternion.as_rotation_vector(pose.r)
+                translation_vector = pose.t.flatten()
+                opensfm_shot.update({
+                    'rotation': rotation_vector.tolist(),
+                    'translation': translation_vector.tolist()
+                })
+            opensfm_shots[image_filename] = opensfm_shot
+
+        # pack it
+        opensfm_reconstruction = {
+            'cameras': opensfm_cameras,
+            'shots': opensfm_shots,
         }
-        if (timestamp, camera_id) in kapture_data.trajectories:
-            pose = kapture_data.trajectories[timestamp, camera_id]
-            rotation_vector = quaternion.as_rotation_vector(pose.r)
-            translation_vector = pose.t.flatten()
-            opensfm_shot.update({
-                'rotation': rotation_vector.tolist(),
-                'translation': translation_vector.tolist()
-            })
-        opensfm_shots[image_filename] = opensfm_shot
-
-    # pack it
-    opensfm_reconstruction = {
-        'cameras': opensfm_cameras,
-        'shots': opensfm_shots,
-    }
 
-    # images
-    logger.info(f'writing image files "{path.join(opensfm_root_dir, "images")}".')
-    image_filenames = [f for _, _, f in kapture.flatten(kapture_data.records_camera)]
-    kapture_image_file_paths = [get_record_fullpath(kapture_root_dir, image_filename)
-                                for image_filename in image_filenames]
-    opensfm_image_file_paths = [path.join(opensfm_root_dir, 'images', image_filename)
-                                for image_filename in image_filenames]
-    transfer_files_from_dir(
-        source_filepath_list=kapture_image_file_paths,
-        destination_filepath_list=opensfm_image_file_paths,
-        force_overwrite=force_overwrite_existing,
-        copy_strategy=images_export_method,
-    )
-
-    _export_opensfm_features_and_matches(image_filenames, kapture_data, kapture_root_dir, opensfm_root_dir,
-                                         disable_tqdm)
-
-    # export 3D-points files
-    if kapture_data.points3d is not None:
-        logger.info('exporting points 3-D')
-        opensfm_reconstruction['points'] = {}
-        for i, (x, y, z, r, g, b) in tqdm(enumerate(kapture_data.points3d), disable=disable_tqdm):
-            opensfm_reconstruction['points'][i] = {
-                'coordinates': [x, y, z],
-                'color': [r, g, b]
-            }
+        # images
+        logger.info(f'writing image files "{path.join(opensfm_root_dir, "images")}".')
+        image_filenames = [f for _, _, f in kapture.flatten(kapture_data.records_camera)]
+        kapture_image_file_paths = [get_record_fullpath(kapture_root_dir, image_filename)
+                                    for image_filename in image_filenames]
+        opensfm_image_file_paths = [path.join(opensfm_root_dir, 'images', image_filename)
+                                    for image_filename in image_filenames]
+        transfer_files_from_dir(
+            source_filepath_list=kapture_image_file_paths,
+            destination_filepath_list=opensfm_image_file_paths,
+            force_overwrite=force_overwrite_existing,
+            copy_strategy=images_export_method,
+        )
+
+        _export_opensfm_features_and_matches(image_filenames, keypoints_type, descriptors_type,
+                                             kapture_data, kapture_root_dir, tar_handlers,
+                                             opensfm_root_dir, disable_tqdm)
+
+        # export 3D-points files
+        if kapture_data.points3d is not None:
+            logger.info('exporting points 3-D')
+            opensfm_reconstruction['points'] = {}
+            for i, (x, y, z, r, g, b) in tqdm(enumerate(kapture_data.points3d), disable=disable_tqdm):
+                opensfm_reconstruction['points'][i] = {
+                    'coordinates': [x, y, z],
+                    'color': [r, g, b]
+                }
 
     # write json files #################################################################################################
     os.makedirs(opensfm_root_dir, exist_ok=True)
diff --git a/kapture/converter/opensfm/import_opensfm.py b/kapture/converter/opensfm/import_opensfm.py
index 91e1eb3..546e15a 100644
--- a/kapture/converter/opensfm/import_opensfm.py
+++ b/kapture/converter/opensfm/import_opensfm.py
@@ -177,8 +177,12 @@ def _import_gnss(opensfm_root_dir, kapture_sensors, image_sensors, image_timesta
     return kapture_gnss
 
 
-def _import_features_and_matches(opensfm_root_dir, kapture_root_dir, disable_tqdm)\
-        -> Tuple[kapture.Descriptors, kapture.Keypoints, kapture.Matches]:
+def _import_features_and_matches(opensfm_root_dir, kapture_root_dir, disable_tqdm,
+                                 keypoints_type: str = 'HessianAffine',
+                                 descriptors_type: str = 'HOG')\
+        -> Tuple[Optional[kapture.Descriptors],
+                 Optional[kapture.Keypoints],
+                 Optional[kapture.Matches]]:
     # import features (keypoints + descriptors)
     kapture_keypoints = None  # kapture.Keypoints(type_name='opensfm', dsize=4, dtype=np.float64)
     kapture_descriptors = None  # kapture.Descriptors(type_name='opensfm', dsize=128, dtype=np.uint8)
@@ -193,7 +197,7 @@ def _import_features_and_matches(opensfm_root_dir, kapture_root_dir, disable_tqd
                                       if filepath.endswith(opensfm_features_suffix))
         for opensfm_feature_filename in tqdm(opensfm_features_file_list, disable=disable_tqdm):
             image_filename = path.relpath(opensfm_feature_filename, opensfm_features_dir_path)[
-                             :-len(opensfm_features_suffix)]
+                :-len(opensfm_features_suffix)]
             opensfm_image_features = np.load(opensfm_feature_filename)
             opensfm_image_keypoints = opensfm_image_features['points']
             opensfm_image_descriptors = opensfm_image_features['descriptors']
@@ -202,18 +206,23 @@ def _import_features_and_matches(opensfm_root_dir, kapture_root_dir, disable_tqd
                 # print(type(opensfm_image_keypoints.dtype))
                 # HAHOG = Hessian Affine feature point detector + HOG descriptor
                 kapture_keypoints = kapture.Keypoints(
-                    type_name='HessianAffine',
+                    type_name=keypoints_type,
                     dsize=opensfm_image_keypoints.shape[1],
                     dtype=opensfm_image_keypoints.dtype)
             if kapture_descriptors is None:
                 kapture_descriptors = kapture.Descriptors(
-                    type_name='HOG',
+                    type_name=descriptors_type,
                     dsize=opensfm_image_descriptors.shape[1],
-                    dtype=opensfm_image_descriptors.dtype)
+                    dtype=opensfm_image_descriptors.dtype,
+                    keypoints_type=keypoints_type,
+                    metric_type='L2')
 
             # convert keypoints file
             keypoint_file_path = kapture.io.features.get_features_fullpath(
-                data_type=kapture.Keypoints, kapture_dirpath=kapture_root_dir, image_filename=image_filename)
+                data_type=kapture.Keypoints,
+                feature_type=keypoints_type,
+                kapture_dirpath=kapture_root_dir,
+                image_filename=image_filename)
             kapture.io.features.image_keypoints_to_file(
                 filepath=keypoint_file_path, image_keypoints=opensfm_image_keypoints)
             # register the file
@@ -221,7 +230,10 @@ def _import_features_and_matches(opensfm_root_dir, kapture_root_dir, disable_tqd
 
             # convert descriptors file
             descriptor_file_path = kapture.io.features.get_features_fullpath(
-                data_type=kapture.Descriptors, kapture_dirpath=kapture_root_dir, image_filename=image_filename)
+                data_type=kapture.Descriptors,
+                feature_type=descriptors_type,
+                kapture_dirpath=kapture_root_dir,
+                image_filename=image_filename)
             kapture.io.features.image_descriptors_to_file(
                 filepath=descriptor_file_path, image_descriptors=opensfm_image_descriptors)
             # register the file
@@ -240,7 +252,7 @@ def _import_features_and_matches(opensfm_root_dir, kapture_root_dir, disable_tqd
 
         for opensfm_matches_filename in tqdm(opensfm_matches_file_list, disable=disable_tqdm):
             image_filename_1 = path.relpath(opensfm_matches_filename, opensfm_matches_dir_path)[
-                               :-len(opensfm_matches_suffix)]
+                :-len(opensfm_matches_suffix)]
             logger.debug(f'parsing matches in {image_filename_1}')
             with gzip.open(opensfm_matches_filename, 'rb') as f:
                 opensfm_matches = pickle.load(f)
@@ -251,6 +263,7 @@ def _import_features_and_matches(opensfm_root_dir, kapture_root_dir, disable_tqd
                     # convert the bin file to kapture
                     kapture_matches_filepath = kapture.io.features.get_matches_fullpath(
                         image_filename_pair=image_pair,
+                        keypoints_type=keypoints_type,
                         kapture_dirpath=kapture_root_dir)
                     kapture_image_matches = np.hstack([
                         opensfm_image_matches.astype(np.float64),
@@ -264,7 +277,9 @@ def import_opensfm(
         opensfm_root_dir: str,
         kapture_root_dir: str,
         force_overwrite_existing: bool = False,
-        images_import_method: TransferAction = TransferAction.copy
+        images_import_method: TransferAction = TransferAction.copy,
+        keypoints_type: str = 'HessianAffine',
+        descriptors_type: str = 'HOG'
 ) -> None:
     """
     Convert an openSfM structure to a kapture on disk. Also copy, move or link the images files if necessary.
@@ -328,7 +343,9 @@ def import_opensfm(
     # Imports descriptors, keypoints and matches
     kapture_descriptors, kapture_keypoints, kapture_matches = _import_features_and_matches(opensfm_root_dir,
                                                                                            kapture_root_dir,
-                                                                                           disable_tqdm)
+                                                                                           disable_tqdm,
+                                                                                           keypoints_type,
+                                                                                           descriptors_type)
 
     # import 3-D points
     if 'points' in opensfm_reconstruction:
@@ -350,9 +367,9 @@ def import_opensfm(
         records_camera=kapture_images,
         records_gnss=kapture_gnss,
         trajectories=kapture_trajectories,
-        keypoints=kapture_keypoints,
-        descriptors=kapture_descriptors,
-        matches=kapture_matches,
+        keypoints={keypoints_type: kapture_keypoints} if kapture_keypoints is not None else None,
+        descriptors={descriptors_type: kapture_descriptors} if kapture_descriptors is not None else None,
+        matches={keypoints_type: kapture_matches} if kapture_matches is not None else None,
         points3d=kapture_points
     )
     kapture_to_dir(kapture_root_dir, kapture_data)
diff --git a/kapture/core/ImageFeatures.py b/kapture/core/ImageFeatures.py
index 0e6b89c..9d947d4 100644
--- a/kapture/core/ImageFeatures.py
+++ b/kapture/core/ImageFeatures.py
@@ -88,11 +88,115 @@ class Descriptors(ImageFeaturesBase):
     """
     Image descriptor features
     """
-    pass
+
+    def __init__(self,
+                 type_name: str,
+                 dtype: Any,
+                 dsize: int,
+                 keypoints_type: str,
+                 metric_type: str,
+                 *args, **kwargs):
+        """
+
+
+        :param type_name: input name of feature type (eg. SIFT). Used for information only.
+        :param dtype: input type of the feature (eg. numpy.float32).
+        :param dsize: input length of the feature (eg. 64 for sift descriptor).
+        :param keypoints_type: type of keypoints, name of the keypoints subfolder
+        :param metric_type: name of the metric used to compare the descriptors, for information only.
+        :param args: anything that can be passed to the set() constructor.
+        :param kwargs: anything that can be passed to the set() constructor.
+        """
+        super().__init__(type_name, dtype, dsize, *args, **kwargs)
+        if not isinstance(keypoints_type, str):
+            raise TypeError('Expect str as keypoints_type')
+        if not isinstance(metric_type, str):
+            raise TypeError('Expect str as metric_type')
+        self._keypoints_type = keypoints_type
+        self._metric_type = metric_type
+
+    @property
+    def keypoints_type(self) -> str:
+        """
+        :return: keypoints_type
+        """
+        return self._keypoints_type
+
+    @property
+    def metric_type(self) -> str:
+        """
+        :return: metric_type
+        """
+        return self._metric_type
+
+    def __repr__(self):
+        representation = f'{self.type_name} {self.keypoints_type} {self.metric_type} ({self.dtype.__name__} x {self.dsize}) = '
+        if len(self) == 0:
+            representation += '[]'
+        else:
+            representation += '[\n' + ',\n'.join(f'\t{i}' for i in self) + '\n]'
+        return representation
+
+    def __copy__(self):
+        result = type(self)(self.type_name, self.dtype, self.dsize, self.keypoints_type, self.metric_type)
+        result.update(self)
+        return result
+
+    def __deepcopy__(self, memo):
+        result = type(self)(self.type_name, self.dtype, self.dsize, self.keypoints_type, self.metric_type)
+        for v in self:
+            result.add(deepcopy(v))
+        return result
 
 
 class GlobalFeatures(ImageFeaturesBase):
     """
     Global features
     """
-    pass
+
+    def __init__(self,
+                 type_name: str,
+                 dtype: Any,
+                 dsize: int,
+                 metric_type: str,
+                 *args, **kwargs):
+        """
+
+
+        :param type_name: input name of feature type (eg. SIFT). Used for information only.
+        :param dtype: input type of the feature (eg. numpy.float32).
+        :param dsize: input length of the feature (eg. 64 for sift descriptor).
+        :param metric_type: name of the metric used to compare the descriptors, for information only.
+        :param args: anything that can be passed to the set() constructor.
+        :param kwargs: anything that can be passed to the set() constructor.
+        """
+        super().__init__(type_name, dtype, dsize, *args, **kwargs)
+        if not isinstance(metric_type, str):
+            raise TypeError('Expect str as metric_type')
+        self._metric_type = metric_type
+
+    @property
+    def metric_type(self) -> str:
+        """
+        :return: metric_type
+        """
+        return self._metric_type
+
+    def __repr__(self):
+        representation = f'{self.type_name} {self.metric_type} ({self.dtype.__name__} x {self.dsize}) = '
+        if len(self) == 0:
+            representation += '[]'
+        else:
+            representation += '[\n' + ',\n'.join(f'\t{i}' for i in self) + '\n]'
+        return representation
+
+    def __copy__(self):
+        result = type(self)(self.type_name, self.dtype, self.dsize, self.metric_type)
+        result.update(self)
+        return result
+
+    def __deepcopy__(self, memo):
+        result = type(self)(self.type_name, self.dtype, self.dsize, self.metric_type)
+        for v in self:
+            result.add(deepcopy(v))
+        return result
diff --git a/kapture/core/Kapture.py b/kapture/core/Kapture.py
index 992702f..b6d28d3 100644
--- a/kapture/core/Kapture.py
+++ b/kapture/core/Kapture.py
@@ -34,10 +34,10 @@ def __init__(
             records_accelerometer: Optional[RecordsAccelerometer] = None,
             records_gyroscope: Optional[RecordsGyroscope] = None,
             records_magnetic: Optional[RecordsMagnetic] = None,
-            keypoints: Optional[Keypoints] = None,
-            descriptors: Optional[Descriptors] = None,
-            global_features: Optional[GlobalFeatures] = None,
-            matches: Optional[Matches] = None,
+            keypoints: Optional[Dict[str, Keypoints]] = None,
+            descriptors: Optional[Dict[str, Descriptors]] = None,
+            global_features: Optional[Dict[str, GlobalFeatures]] = None,
+            matches: Optional[Dict[str, Matches]] = None,
             observations: Optional[Observations] = None,
             points3d: Optional[Points3d] = None,
     ):
@@ -234,55 +234,55 @@ def records_magnetic(self, records_magnetic: Optional[RecordsMagnetic]):
         self._records_magnetic = records_magnetic
 
     @property
-    def keypoints(self) -> Optional[Keypoints]:
+    def keypoints(self) -> Optional[Dict[str, Keypoints]]:
         """
-        :return: the keypoints
+        :return: the keypoints collection
         """
         return self._keypoints
 
     @keypoints.setter
-    def keypoints(self, keypoints: Optional[Keypoints]):
-        if keypoints is not None and not isinstance(keypoints, Keypoints):
-            raise TypeError('Keypoints expected')
+    def keypoints(self, keypoints: Optional[Dict[str, Keypoints]]):
+        if keypoints is not None and not isinstance(keypoints, dict):
+            raise TypeError('dict of Keypoints expected')
         self._keypoints = keypoints
 
     @property
-    def descriptors(self) -> Optional[Descriptors]:
+    def descriptors(self) -> Optional[Dict[str, Descriptors]]:
         """
-        :return: the descriptors
+        :return: the descriptors collection
         """
         return self._descriptors
 
     @descriptors.setter
-    def descriptors(self, descriptors: Optional[Descriptors]):
-        if descriptors is not None and not isinstance(descriptors, Descriptors):
-            raise TypeError('Descriptors expected')
+    def descriptors(self, descriptors: Optional[Dict[str, Descriptors]]):
+        if descriptors is not None and not isinstance(descriptors, dict):
+            raise TypeError('dict of Descriptors expected')
         self._descriptors = descriptors
 
     @property
-    def global_features(self) -> Optional[GlobalFeatures]:
+    def global_features(self) -> Optional[Dict[str, GlobalFeatures]]:
         """
-        :return: the global features
+        :return: the global features collection
         """
         return self._global_features
 
     @global_features.setter
-    def global_features(self, global_features: Optional[GlobalFeatures]):
-        if global_features is not None and not isinstance(global_features, GlobalFeatures):
-            raise TypeError('GlobalFeatures expected')
+    def global_features(self, global_features: Optional[Dict[str, GlobalFeatures]]):
+        if global_features is not None and not isinstance(global_features, dict):
+            raise TypeError('dict of GlobalFeatures expected')
         self._global_features = global_features
 
     @property
-    def matches(self) -> Optional[Matches]:
+    def matches(self) -> Optional[Dict[str, Matches]]:
         """
-        :return: the matches
+        :return: the matches collection
         """
         return self._matches
 
     @matches.setter
-    def matches(self, matches: Optional[Matches]):
-        if matches is not None and not isinstance(matches, Matches):
-            raise TypeError('Matches expected')
+    def matches(self, matches: Optional[Dict[str, Matches]]):
+        if matches is not None and not isinstance(matches, dict):
+            raise TypeError('dict of Matches expected')
         self._matches = matches
 
     @property
@@ -324,10 +324,10 @@ def as_dict(self, keep_none=False) -> Dict[str, Union[
         RecordsAccelerometer,
         RecordsGyroscope,
         RecordsMagnetic,
-        Keypoints,
-        Descriptors,
-        GlobalFeatures,
-        Matches,
+        Optional[Dict[str, Keypoints]],
+        Optional[Dict[str, Descriptors]],
+        Optional[Dict[str, GlobalFeatures]],
+        Optional[Dict[str, Matches]],
         Observations,
         Points3d
     ]]:
diff --git a/kapture/core/Observations.py b/kapture/core/Observations.py
index 5dd027d..d49ef1a 100644
--- a/kapture/core/Observations.py
+++ b/kapture/core/Observations.py
@@ -1,21 +1,22 @@
 # Copyright 2020-present NAVER Corp. Under BSD 3-clause license
 
-from typing import Dict, List, Tuple
+from typing import Dict, List, Tuple, Union
 
 
-class Observations(Dict[int, List[Tuple[str, int]]]):
+class Observations(Dict[int, Dict[str, List[Tuple[str, int]]]]):
     """
     Observations. This can be used like this:
 
-    - observations[point3d_idx]= list( observation )
+    - observations[point3d_idx][keypoints_type] = list( observation )
     - observation = (image_path, keypoint_idx)
     """
 
-    def add(self, point3d_idx: int, image_filename: str, keypoint_idx: int):
+    def add(self, point3d_idx: int, keypoints_type: str, image_filename: str, keypoint_idx: int):
         """
         Adds a 2-D observation (image, keypoint) of a 3D point.
 
         :param point3d_idx: index of the 3D point to add an observation of.
+        :param keypoints_type: type of keypoints, name of the keypoints subfolder
         :param image_filename: name of the image where the 3D points is observed
         :param keypoint_idx: index of the keypoints in the image that correspond to the 3D point.
         :return:
@@ -23,17 +24,65 @@ def add(self, point3d_idx: int, image_filename: str, keypoint_idx: int):
         # enforce type checking
         if not isinstance(point3d_idx, int):
             raise TypeError('invalid type for point3d_idx')
+        if not isinstance(keypoints_type, str):
+            raise TypeError('invalid type for keypoints_type')
         if not isinstance(image_filename, str):
             raise TypeError('invalid type for image_filename')
         if not isinstance(keypoint_idx, int):
             raise TypeError('invalid type for keypoint_idx')
-        self.setdefault(point3d_idx, []).append((image_filename, keypoint_idx))
+        self.setdefault(point3d_idx, {}).setdefault(keypoints_type, []).append((image_filename, keypoint_idx))
 
-    def __repr__(self):
+    def __getitem__(self, key: Union[int, Tuple[int, str]]) -> Union[Dict[str, List[Tuple[str, int]]],
+                                                                     List[Tuple[str, int]]]:
+        if isinstance(key, tuple):
+            # key is a pair of (point3d_idx, keypoints_type)
+            point3d_idx = key[0]
+            keypoints_type = key[1]
+            if not isinstance(point3d_idx, int):
+                raise TypeError('invalid point3d_idx')
+            if not isinstance(keypoints_type, str):
+                raise TypeError('invalid keypoints_type')
+            return super(Observations, self).__getitem__(point3d_idx)[keypoints_type]
+        elif isinstance(key, int):
+            # key is a point3d_idx
+            return super(Observations, self).__getitem__(key)
+        else:
+            raise TypeError('key must be Union[int, Tuple[int, str]]')
+
+    def key_pairs(self) -> List[Tuple[int, str]]:
+        """
+        Returns the list of (point3d_idx, keypoints_type) contained in observations.
+        Those pairs can be used to access a list of observation.
+        :return: list of (point3d_idx, keypoints_type)
+        """
+        return [
+            (point3d_idx, keypoints_type)
+            for point3d_idx, per_feature_observations in self.items()
+            for keypoints_type in per_feature_observations.keys()
+        ]
+
+    def __contains__(self, key: Union[int, Tuple[int, str]]):
+        if isinstance(key, tuple):
+            # key is a pair of (point3d_idx, keypoints_type)
+            point3d_idx = key[0]
+            keypoints_type = key[1]
+            if not isinstance(point3d_idx, int):
+                raise TypeError('invalid point3d_idx')
+            if not isinstance(keypoints_type, str):
+                raise TypeError('invalid keypoints_type')
+            return super(Observations, self).__contains__(point3d_idx) and keypoints_type in self[point3d_idx]
+        elif isinstance(key, int):
+            return super(Observations, self).__contains__(key)
+        else:
+            raise TypeError('key must be Union[int, Tuple[int, str]]')
+
+    def __repr__(self) -> str:
         representation = ''
-        for point3d_idx in sorted(self.keys()):
-            representation += f'[{point3d_idx:05}]: '
-            for image_path, keypoint_idx in self.get(point3d_idx):
+        # [point3d_idx, keypoints_type]:   (image_path, keypoint_idx)   (image_path, keypoint_idx)...
+        for point3d_idx, keypoints_type in sorted(self.key_pairs(), key=lambda x: x[0]):
+            representation += f'[{point3d_idx:05}, {keypoints_type}]: '
+            assert point3d_idx is not None
+            for image_path, keypoint_idx in self.get(point3d_idx)[keypoints_type]:
                 representation += f'\t({image_path}, {keypoint_idx})'
             representation += '\n'
         return representation
diff --git a/kapture/io/binary.py b/kapture/io/binary.py
index 3ea24a2..25ffb39 100644
--- a/kapture/io/binary.py
+++ b/kapture/io/binary.py
@@ -19,7 +19,7 @@
 
 
 # Binary data File IO ##################################################################################################
-def array_from_file(filepath: str, dtype: Type, dsize: int) -> np.array:
+def array_from_file(filepath: str, dtype: Type, dsize: int) -> np.ndarray:
     """
     Reads a binary file of given type(dtype) and columns (dsize) into a numpy array.
 
@@ -39,7 +39,7 @@ def array_from_file(filepath: str, dtype: Type, dsize: int) -> np.array:
     return data_array
 
 
-def array_to_file(filepath: str, data_array: np.array) -> None:
+def array_to_file(filepath: str, data_array: np.ndarray) -> None:
     """
     Writes the numpy array into a binary file.
 
diff --git a/kapture/io/csv.py b/kapture/io/csv.py
index e56782f..b0361cf 100644
--- a/kapture/io/csv.py
+++ b/kapture/io/csv.py
@@ -6,9 +6,12 @@
 
 import datetime
 import io
+from kapture.utils.logging import getLogger
+from kapture.io.tar import KAPTURE_TARABLE_TYPES, TarCollection, TarHandler, get_feature_tar_fullpath, retrieve_tar_handler_from_collection
 import os
 import os.path as path
 import re
+from typing import Any, Dict, List, Optional, Set, Type, Union
 from collections import namedtuple
 from typing import Any, List, Optional, Set, Type, Union
 import numpy as np
@@ -36,12 +39,15 @@
     kapture.RecordsGyroscope: path.join('sensors', 'records_gyroscope.txt'),
     kapture.RecordsMagnetic: path.join('sensors', 'records_magnetic.txt'),
     kapture.Points3d: path.join('reconstruction', 'points3d.txt'),
-    kapture.Keypoints: path.join('reconstruction', 'keypoints', 'keypoints.txt'),
-    kapture.Descriptors: path.join('reconstruction', 'descriptors', 'descriptors.txt'),
-    kapture.GlobalFeatures: path.join('reconstruction', 'global_features', 'global_features.txt'),
     kapture.Observations: path.join('reconstruction', 'observations.txt'),
 }
 
+FEATURES_CSV_FILENAMES = {
+    kapture.Keypoints: lambda x: path.join('reconstruction', 'keypoints', x, 'keypoints.txt'),
+    kapture.Descriptors: lambda x: path.join('reconstruction', 'descriptors', x, 'descriptors.txt'),
+    kapture.GlobalFeatures: lambda x: path.join('reconstruction', 'global_features', x, 'global_features.txt'),
+}
+
 
 def get_csv_fullpath(kapture_type: Any, kapture_dirpath: str = '') -> str:
     """
@@ -52,17 +58,33 @@ def get_csv_fullpath(kapture_type: Any, kapture_dirpath: str = '') -> str:
     :param kapture_dirpath: root kapture path
     :return: full path of csv file for that type of data
     """
+    assert kapture_type in CSV_FILENAMES
     filename = CSV_FILENAMES[kapture_type]
     return path.join(kapture_dirpath, filename)
 
 
+def get_feature_csv_fullpath(kapture_type: Any, feature_name: str, kapture_dirpath: str = '') -> str:
+    """
+    Returns the full path to csv kapture file for a given datastructure and root directory.
+    This path is the concatenation of the kapture root path and subpath into kapture into data structure.
+
+    :param kapture_type: type of kapture data (kapture.RecordsCamera, kapture.Trajectories, ...)
+    :param feature_name: type of keypoints, descriptors, global_features, used to infer the path...
+    :param kapture_dirpath: root kapture path
+    :return: full path of csv file for that type of data
+    """
+    assert kapture_type in FEATURES_CSV_FILENAMES
+    filename = FEATURES_CSV_FILENAMES[kapture_type](feature_name)
+    return path.join(kapture_dirpath, filename)
+
+
 PADDINGS = {
     'timestamp': [8],
     'device_id': [3],
     'pose': [4, 4, 4, 4, 4, 4, 4],
 }
 
-KAPTURE_FORMAT_1 = "# kapture format: 1.0"
+KAPTURE_FORMAT_1 = "# kapture format: 1.1"
 KAPTURE_FORMAT_PARSING_RE = '# kapture format\\:\\s*(?P<version>\\d+\\.\\d+)'
 
 # Line separator for the kapture csv files
@@ -96,7 +118,7 @@ def get_version_from_csv_file(csv_file_path: str) -> Optional[str]:
     return None
 
 
-def current_format_version() -> str:
+def current_format_version() -> Optional[str]:
     """
     Get the current format version
 
@@ -571,7 +593,7 @@ def records_generic_to_file(filepath: str, records: kapture.RecordsBase) -> None
 
         :param filepath: path where to save records file.
         :param records:
-        """
+    """
     assert (isinstance(records, kapture.RecordsBase))
     saving_start = datetime.datetime.now()
     header = '# timestamp, device_id, ' + ', '.join(f.name for f in records.record_type.fields())
@@ -828,29 +850,87 @@ def records_magnetic_from_file(filepath: str, sensor_ids: Optional[Set[str]] = N
 
 ########################################################################################################################
 # features #############################################################################################################
-ImageFeatureConfig = namedtuple('ImageFeatureConfig', ['name', 'dtype', 'dsize'])
+def image_features_set_from_dir(
+        kapture_type: Type[Union[kapture.Keypoints,
+                                 kapture.Descriptors,
+                                 kapture.GlobalFeatures]],
+        feature_type: str,
+        kapture_dirpath: str,
+        image_filenames: Optional[Set[str]]
+) -> Set[str]:
+    """
+    Reads and builds ImageFeatures from images_filenames if given, or directly from actual files in  root_dirpath.
 
+    :param kapture_type: kapture class type.
+    :param feature_type: name of the feature
+    :param kapture_dirpath: input path to kapture root directory.
+    :param image_filenames: None or set of image relative paths.
+    :return: Set
+    """
 
-# config file ##########################################################################################################
-def image_features_config_to_file(config_filepath: str, config: ImageFeatureConfig) -> None:
+    if image_filenames is None:
+        # images_path is empty, so populates all feature files
+        image_filenames_generator = kapture.io.features.image_ids_from_feature_dirpath(kapture_type,
+                                                                                       feature_type,
+                                                                                       kapture_dirpath)
+    else:
+        # filter only existing files
+        image_filenames_generator = (
+            image_name
+            for image_name in image_filenames
+            if path.exists(kapture.io.features.get_features_fullpath(kapture_type,
+                                                                     feature_type,
+                                                                     kapture_dirpath,
+                                                                     image_name)))
+    return set(image_filenames_generator)
+
+
+def image_features_set_from_tar(
+        kapture_type: Type[Union[kapture.Keypoints,
+                                 kapture.Descriptors,
+                                 kapture.GlobalFeatures]],
+        tar_handler: TarHandler,
+        image_filenames: Optional[Set[str]]
+) -> Set[str]:
+    """
+    Reads and builds ImageFeatures from images_filenames if given, or directly from actual files in the tar.
+
+    :param kapture_type: kapture class type.
+    :param tar_handler: opened tar reference
+    :param image_filenames: None or set of image relative paths.
+    :return: Set
+    """
+    image_filenames_generator = kapture.io.features.image_ids_from_feature_tar(kapture_type, tar_handler)
+    if image_filenames is not None:
+        image_filenames_generator = (image_name
+                                     for image_name in image_filenames_generator
+                                     if image_name in image_filenames)
+    return set(image_filenames_generator)
+
+
+########################################################################################################################
+# keypoints ############################################################################################################
+KeypointsConfig = namedtuple('KeypointsConfig', ['name', 'dtype', 'dsize'])
+
+
+def keypoints_to_file(config_filepath: str, keypoints: kapture.Keypoints) -> None:
     """
-    Writes feature config files, ie. name, data type, and data size.
+    Writes keypoints to CSV file.
 
-    :param config_filepath: input path to config file to write.
-    :param config: input config to be written.
+    :param config_filepath:
+    :param keypoints:
     """
     os.makedirs(path.dirname(config_filepath), exist_ok=True)
     header = "# name, dtype, dsize"
-    dtype = str(config.dtype) if isinstance(config.dtype, np.dtype) else config.dtype.__name__
-    line = [config.name, dtype, str(config.dsize)]
+    dtype = str(keypoints.dtype) if isinstance(keypoints.dtype, np.dtype) else keypoints.dtype.__name__
+    line = [keypoints.type_name, dtype, str(keypoints.dsize)]
     with open(config_filepath, 'wt') as file:
         table_to_file(file, [line], header=header)
 
 
-def image_features_config_from_file(config_filepath: str) -> ImageFeatureConfig:
+def keypoints_config_from_file(config_filepath: str) -> KeypointsConfig:
     """
-    Reads feature config files, ie. name, data type, and data size.
-
+    Reads keypoints config files, ie. name, data type, and data size.
     :param config_filepath: input path to config file to read.
     :return: config The read config.
     """
@@ -869,103 +949,128 @@ def image_features_config_from_file(config_filepath: str) -> ImageFeatureConfig:
         dtype = eval(dtype)
     else:
         raise ValueError('Expect data type ')
-    return ImageFeatureConfig(name, dtype, dsize)
+    return KeypointsConfig(name, dtype, dsize)
 
 
-# files #########################################################################################################
-def image_feature_to_file(config_filepath: str,
-                          image_features: Union[kapture.Keypoints, kapture.Descriptors, kapture.GlobalFeatures]
-                          ) -> None:
+def keypoints_from_dir(keypoints_type: str,
+                       kapture_dirpath: str,
+                       images_paths: Optional[Set[str]],
+                       tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> kapture.Keypoints:
     """
-    Writes ImageFeatures config file only.
+    Reads and builds keypoints from images_filenames if given, or directly from actual files in kapture_dirpath.
 
-    :param config_filepath: eg. /path/to/keypoints/keypoints.txt
-    :param image_features: input feature date.
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
+    :param kapture_dirpath: root path of kapture
+    :param images_paths: optional list of image file names
+    :param tar_handler: collection of preloaded tar archives
+    :return: Keypoints
     """
-    config = ImageFeatureConfig(image_features.type_name, image_features.dtype, image_features.dsize)
-    image_features_config_to_file(config_filepath, config)
-
+    # make config_filepath from data_dirpath
+    config_filepath = get_feature_csv_fullpath(kapture.Keypoints, keypoints_type, kapture_dirpath)
+    config = keypoints_config_from_file(config_filepath)
 
-def image_features_from_dir(kapture_type: Type[Union[kapture.Keypoints,
-                                                     kapture.Descriptors,
-                                                     kapture.GlobalFeatures]],
-                            kapture_dirpath: str,
-                            image_filenames: Optional[Set[str]]
-                            ) -> kapture.ImageFeatures:
-    """
-    Reads and builds ImageFeatures from images_filenames if given, or directly from actual files in  root_dirpath.
+    # exist as tar ?
+    tar_local_handler = retrieve_tar_handler_from_collection(kapture.Keypoints, keypoints_type, tar_handler)
 
-    :param kapture_type: kapture class type.
-    :param kapture_dirpath: input path to kapture root directory.
-    :param image_filenames: None or set of image relative paths.
-    :return: Features
-    """
-
-    # make config_filepath from data_dirpath
-    config_filepath = get_csv_fullpath(kapture_type, kapture_dirpath)
-    config = image_features_config_from_file(config_filepath)
-    if image_filenames is None:
-        # images_path is empty, so populates all feature files
-        image_filenames_generator = kapture.io.features.image_ids_from_feature_dirpath(kapture_type, kapture_dirpath)
+    if tar_local_handler is not None:
+        image_filenames = image_features_set_from_tar(kapture.Keypoints, tar_local_handler, images_paths)
     else:
-        # filter only existing files
-        image_filenames_generator = (
-            image_name
-            for image_name in image_filenames
-            if path.exists(kapture.io.features.get_features_fullpath(kapture_type, kapture_dirpath, image_name)))
-
-    image_filenames = set(image_filenames_generator)
-    return kapture_type(config.name, config.dtype, config.dsize, image_filenames)
+        # exist tar ? -> fire warning
+        tar_path = get_feature_tar_fullpath(kapture.Keypoints, keypoints_type, kapture_dirpath)
+        if os.path.isfile(tar_path):
+            getLogger().warning(f'{tar_path} exist but no handler was given so it is ignored and loaded from dir')
+        image_filenames = image_features_set_from_dir(kapture.Keypoints,
+                                                      keypoints_type,
+                                                      kapture_dirpath,
+                                                      images_paths)
+    return kapture.Keypoints(config.name, config.dtype, config.dsize, image_filenames)
 
 
 ########################################################################################################################
-# keypoints ############################################################################################################
-def keypoints_to_file(config_filepath: str, keypoints: kapture.Keypoints) -> None:
-    """
-    Writes keypoints to CSV file.
+# descriptors ##########################################################################################################
+DescriptorsConfig = namedtuple('DescriptorsConfig', ['name', 'dtype', 'dsize', 'keypoints_type', 'metric_type'])
 
+
+def descriptors_to_file(config_filepath: str, descriptors: kapture.Descriptors) -> None:
+    """
+    Writes descriptors to CSV file.
     :param config_filepath:
-    :param keypoints:
+    :param descriptors:
     """
-    return image_feature_to_file(config_filepath, keypoints)
+    os.makedirs(path.dirname(config_filepath), exist_ok=True)
+    header = "# name, dtype, dsize, keypoints_type, metric_type"
+    dtype = str(descriptors.dtype) if isinstance(descriptors.dtype, np.dtype) else descriptors.dtype.__name__
+    line = [descriptors.type_name, dtype, str(descriptors.dsize), descriptors.keypoints_type, descriptors.metric_type]
+    with open(config_filepath, 'wt') as file:
+        table_to_file(file, [line], header=header)
 
 
-def keypoints_from_dir(kapture_dirpath: str, images_paths: Optional[Set[str]]) -> kapture.Keypoints:
+def descriptors_config_from_file(config_filepath: str) -> DescriptorsConfig:
     """
-    Reads and builds keypoints from images_filenames if given, or directly from actual files in kapture_dirpath.
-
-    :param kapture_dirpath: root path of kapture
-    :param images_paths: optional list of image file names
-    :return: Keypoints
+    Reads descriptors config files.
+    :param config_filepath: input path to config file to read.
+    :return: config The read config.
     """
-    return image_features_from_dir(kapture.Keypoints, kapture_dirpath, images_paths)
-
+    if not path.exists(config_filepath):
+        raise FileNotFoundError(f'{path.basename(config_filepath)} file is missing')
 
-########################################################################################################################
-# descriptors ##########################################################################################################
-def descriptors_to_file(config_filepath: str, descriptors: kapture.Descriptors) -> None:
-    """
-    Writes descriptors to CSV file.
+    with open(config_filepath, 'rt') as file:
+        table = table_from_file(file)
+        line = list(table)[0]
+        assert len(line) == 5
+        name, dtype, dsize, keypoints_type, metric_type = line[0], line[1], int(line[2]), line[3], line[4]
 
-    :param config_filepath:
-    :param descriptors:
-    """
-    return image_feature_to_file(config_filepath, descriptors)
+    # try to list all possible type from numpy that can be used in eval(dtype)
+    from numpy import float, float32, float64, int32, uint8  # noqa: F401
+    if isinstance(type(eval(dtype)), type):
+        dtype = eval(dtype)
+    else:
+        raise ValueError('Expect data type ')
+    return DescriptorsConfig(name, dtype, dsize, keypoints_type, metric_type)
 
 
-def descriptors_from_dir(kapture_dirpath: str, images_paths: Set[str]) -> kapture.Descriptors:
+def descriptors_from_dir(descriptors_type: str, kapture_dirpath: str, images_paths: Set[str],
+                         tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> kapture.Descriptors:
     """
     Reads and builds descriptors from images_filenames if given, or directly from actual files in kapture_dirpath.
 
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder
     :param kapture_dirpath: root path of kapture
     :param images_paths: optional list of image file names
+    :param tar_handler: collection of preloaded tar archives
     :return: Descriptors
     """
-    return image_features_from_dir(kapture.Descriptors, kapture_dirpath, images_paths)
+    # make config_filepath from data_dirpath
+    config_filepath = get_feature_csv_fullpath(kapture.Descriptors, descriptors_type, kapture_dirpath)
+    config = descriptors_config_from_file(config_filepath)
+
+    # exist as tar ?
+    tar_local_handler = retrieve_tar_handler_from_collection(kapture.Descriptors, descriptors_type, tar_handler)
+
+    if tar_local_handler is not None:
+        image_filenames = image_features_set_from_tar(kapture.Descriptors, tar_local_handler, images_paths)
+    else:
+        # exist tar ? -> fire warning
+        tar_path = get_feature_tar_fullpath(kapture.Descriptors, descriptors_type, kapture_dirpath)
+        if os.path.isfile(tar_path):
+            getLogger().warning(f'{tar_path} exist but no handler was given so it is ignored and loaded from dir')
+        image_filenames = image_features_set_from_dir(kapture.Descriptors,
+                                                      descriptors_type,
+                                                      kapture_dirpath,
+                                                      images_paths)
+    return kapture.Descriptors(config.name,
+                               config.dtype,
+                               config.dsize,
+                               config.keypoints_type,
+                               config.metric_type,
+                               image_filenames)
 
 
 ########################################################################################################################
 # global_features ######################################################################################################
+GlobalFeaturesConfig = namedtuple('GlobalFeaturesConfig', ['name', 'dtype', 'dsize', 'metric_type'])
+
+
 def global_features_to_file(config_filepath: str, global_features: kapture.GlobalFeatures) -> None:
     """
     Writes global features to CSV file.
@@ -973,54 +1078,131 @@ def global_features_to_file(config_filepath: str, global_features: kapture.Globa
     :param config_filepath:
     :param global_features:
     """
-    return image_feature_to_file(config_filepath, global_features)
+    os.makedirs(path.dirname(config_filepath), exist_ok=True)
+    header = "# name, dtype, dsize, metric_type"
+    if isinstance(global_features.dtype, np.dtype):
+        dtype = str(global_features.dtype)
+    else:
+        dtype = global_features.dtype.__name__
+    line = [global_features.type_name, dtype, str(global_features.dsize), global_features.metric_type]
+    with open(config_filepath, 'wt') as file:
+        table_to_file(file, [line], header=header)
 
 
-def global_features_from_dir(kapture_dirpath: str, images_paths: Set[str]) -> kapture.GlobalFeatures:
+def global_features_config_from_file(config_filepath: str) -> GlobalFeaturesConfig:
+    """
+    Reads global_features config files.
+    :param config_filepath: input path to config file to read.
+    :return: config The read config.
+    """
+    if not path.exists(config_filepath):
+        raise FileNotFoundError(f'{path.basename(config_filepath)} file is missing')
+
+    with open(config_filepath, 'rt') as file:
+        table = table_from_file(file)
+        line = list(table)[0]
+        assert len(line) == 4
+        name, dtype, dsize, metric_type = line[0], line[1], int(line[2]), line[3]
+
+    # try to list all possible type from numpy that can be used in eval(dtype)
+    from numpy import float, float32, float64, int32, uint8  # noqa: F401
+    if isinstance(type(eval(dtype)), type):
+        dtype = eval(dtype)
+    else:
+        raise ValueError('Expect data type ')
+    return GlobalFeaturesConfig(name, dtype, dsize, metric_type)
+
+
+def global_features_from_dir(global_features_type: str,
+                             kapture_dirpath: str,
+                             images_paths: Set[str],
+                             tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> kapture.GlobalFeatures:
     """
     Reads and builds Global features from images_filenames if given, or directly from actual files in kapture_dirpath.
 
+    :param global_features_type: type of global_features, name of the global_features subfolder
     :param kapture_dirpath: root path of kapture
     :param images_paths: optional list of image file names
+    :param tar_handler: collection of preloaded tar archives
     :return: Global features
     """
+    # make config_filepath from data_dirpath
+    config_filepath = get_feature_csv_fullpath(kapture.GlobalFeatures, global_features_type, kapture_dirpath)
+    config = global_features_config_from_file(config_filepath)
+
+    # exist as tar ?
+    tar_local_handler = retrieve_tar_handler_from_collection(kapture.GlobalFeatures, global_features_type, tar_handler)
 
-    return image_features_from_dir(kapture.GlobalFeatures, kapture_dirpath, images_paths)
+    if tar_local_handler is not None:
+        image_filenames = image_features_set_from_tar(kapture.GlobalFeatures, tar_local_handler, images_paths)
+    else:
+        # exist tar ? -> fire warning
+        tar_path = get_feature_tar_fullpath(kapture.GlobalFeatures, global_features_type, kapture_dirpath)
+        if os.path.isfile(tar_path):
+            getLogger().warning(f'{tar_path} exist but no handler was given so it is ignored and loaded from dir')
+        image_filenames = image_features_set_from_dir(kapture.GlobalFeatures,
+                                                      global_features_type,
+                                                      kapture_dirpath,
+                                                      images_paths)
+    return kapture.GlobalFeatures(config.name,
+                                  config.dtype,
+                                  config.dsize,
+                                  config.metric_type,
+                                  image_filenames)
 
 
 ########################################################################################################################
 # matches ##############################################################################################################
-def matches_from_dir(kapture_dirpath: str,
-                     image_filenames: Optional[Set[str]] = None,
-                     matches_pairsfile_path: Optional[str] = None) -> kapture.Matches:
+def matches_from_dir(
+        keypoints_type: str,
+        kapture_dirpath: str,
+        image_filenames: Optional[Set[str]] = None,
+        matches_pairsfile_path: Optional[str] = None,
+        tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> kapture.Matches:
     """
     Reads and builds Matches from images_filenames if given, or directly from actual files in kapture_dirpath.
 
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param kapture_dirpath: root path of kapture
     :param image_filenames: optional list of image file names
     :param matches_pairsfile_path: text file in the csv format; where each line is image_name1, image_name2, score
+    :param tar_handler: collection of preloaded tar archives
     :return: Matches
     """
-
-    if matches_pairsfile_path is None:
-        # populate files from disk
-        match_pairs_generator = kapture.io.features.matching_pairs_from_dirpath(kapture_dirpath)
+    # exist as tar ?
+    tar_local_handler = retrieve_tar_handler_from_collection(kapture.Matches, keypoints_type, tar_handler)
+    loading_start = datetime.datetime.now()
+    if tar_local_handler is not None:
+        match_pairs_generator = kapture.io.features.matching_pairs_from_tar(tar_local_handler)
+        if matches_pairsfile_path is not None:
+            with open(matches_pairsfile_path, 'r') as fid:
+                table = table_from_file(fid)
+                valid_pairs = set((query_name, map_name) if query_name < map_name else (map_name, query_name)
+                                  for query_name, map_name, _ in table)
+                match_pairs_generator = (image_pair
+                                         for image_pair in match_pairs_generator
+                                         if image_pair in valid_pairs)
     else:
-        loading_start = datetime.datetime.now()
-        with open(matches_pairsfile_path, 'r') as fid:
-            table = table_from_file(fid)
-            # get matches list from pairsfile
-            match_pairs_generator = ((query_name, map_name) if query_name < map_name else (map_name, query_name)
-                                     for query_name, map_name, _ in table)
-            # keeps only the one that actually exists on disk
-            match_pairs_generator = (image_pair
-                                     for image_pair in match_pairs_generator
-                                     if path.isfile(kapture.io.features.get_matches_fullpath(image_pair,
-                                                                                             kapture_dirpath))
-                                     )
-            loading_elapsed = datetime.datetime.now() - loading_start
-            logger.debug(f'{len(table)} {kapture.Matches} in {loading_elapsed.total_seconds():.3f} seconds')
-
+        # exist tar ? -> fire warning
+        tar_path = get_feature_tar_fullpath(kapture.Matches, keypoints_type, kapture_dirpath)
+        if os.path.isfile(tar_path):
+            getLogger().warning(f'{tar_path} exist but no handler was given so it is ignored and loaded from dir')
+        if matches_pairsfile_path is None:
+            # populate files from disk
+            match_pairs_generator = kapture.io.features.matching_pairs_from_dirpath(keypoints_type, kapture_dirpath)
+        else:
+            with open(matches_pairsfile_path, 'r') as fid:
+                table = table_from_file(fid)
+                # get matches list from pairsfile
+                match_pairs_generator = ((query_name, map_name) if query_name < map_name else (map_name, query_name)
+                                         for query_name, map_name, _ in table)
+                # keeps only the one that actually exists on disk
+                match_pairs_generator = (image_pair
+                                         for image_pair in match_pairs_generator
+                                         if path.isfile(kapture.io.features.get_matches_fullpath(image_pair,
+                                                                                                 keypoints_type,
+                                                                                                 kapture_dirpath))
+                                         )
     if image_filenames is not None:
         # retains only files that correspond to known images
         match_pairs_generator = (
@@ -1029,6 +1211,8 @@ def matches_from_dir(kapture_dirpath: str,
             if image_pair[0] in image_filenames and image_pair[1] in image_filenames
         )
     match_pairs = set(match_pairs_generator)
+    loading_elapsed = datetime.datetime.now() - loading_start
+    logger.debug(f'{len(match_pairs)} {kapture.Matches} in {loading_elapsed.total_seconds():.3f} seconds')
     return kapture.Matches(match_pairs)
 
 
@@ -1043,7 +1227,7 @@ def points3d_to_file(filepath: str, points3d: kapture.Points3d) -> None:
     """
     assert isinstance(points3d, kapture.Points3d)
     os.makedirs(path.dirname(filepath), exist_ok=True)
-    header = 'X, Y, Z, R, G, B'
+    header = KAPTURE_FORMAT_1[2:] + kapture_linesep + 'X, Y, Z, R, G, B'
     np.savetxt(filepath, points3d.as_array(), delimiter=',', header=header)
 
 
@@ -1076,10 +1260,12 @@ def observations_to_file(observations_filepath: str, observations: kapture.Obser
     assert path.basename(observations_filepath) == 'observations.txt'
     assert isinstance(observations, kapture.Observations)
     saving_start = datetime.datetime.now()
-    header = '# point3d_id, [image_path, feature_id]*'
+    header = '# point3d_id, keypoints_type, [image_path, feature_id]*'
     table = (
-        [str(point3d_idx)] + [str(k) for pair in observations[point3d_idx] for k in pair]
-        for point3d_idx in sorted(observations.keys())
+        [str(point3d_idx), str(keypoints_type)] + [str(k)
+                                                   for pair in observations[point3d_idx, keypoints_type]
+                                                   for k in pair]
+        for point3d_idx, keypoints_type in sorted(observations.key_pairs(), key=lambda x: (x[0], x[1]))
     )
     os.makedirs(path.dirname(observations_filepath), exist_ok=True)
     with open(observations_filepath, 'w') as file:
@@ -1089,8 +1275,10 @@ def observations_to_file(observations_filepath: str, observations: kapture.Obser
                      .replace(',', ' '))
 
 
-def observations_from_file(observations_filepath: str, images_paths_with_keypoints: Optional[Set[str]] = None
-                           ) -> kapture.Observations:
+def observations_from_file(
+        observations_filepath: str,
+        loaded_keypoints: Optional[Dict[str, Set[str]]] = None
+) -> kapture.Observations:
     """
     Reads observations from CSV file.
 
@@ -1101,25 +1289,30 @@ def observations_from_file(observations_filepath: str, images_paths_with_keypoin
     :return: observations
     """
     assert path.basename(observations_filepath) == 'observations.txt'
-    assert images_paths_with_keypoints is None \
-        or (isinstance(images_paths_with_keypoints, set) and len(images_paths_with_keypoints) > 0)
+    assert loaded_keypoints is None \
+        or (isinstance(loaded_keypoints, dict) and len(loaded_keypoints) > 0)
+    assert loaded_keypoints is None or all([isinstance(kpts, set) for kpts in loaded_keypoints.values()])
+
     observations = kapture.Observations()
     loading_start = datetime.datetime.now()
     with open(observations_filepath) as file:
         table = table_from_file(file)
         nb_records = 0
-        # point3d_id, [image_path, feature_id]*
-        for points3d_id_str, *pairs in table:
+        # point3d_id, keypoints_type, [image_path, feature_id]*
+        for points3d_id_str, keypoints_type, *pairs in table:
+            if loaded_keypoints is not None and \
+                    (keypoints_type not in loaded_keypoints or len(loaded_keypoints[keypoints_type]) == 0):
+                continue
             points3d_id = int(points3d_id_str)
             if len(pairs) > 1:
                 image_paths = pairs[0::2]
                 keypoints_ids = pairs[1::2]
                 for image_path, keypoint_id in zip(image_paths, keypoints_ids):
-                    if images_paths_with_keypoints is not None and image_path not in images_paths_with_keypoints:
+                    if loaded_keypoints is not None and image_path not in loaded_keypoints[keypoints_type]:
                         # image_path does not exist in kapture (perhaps it was removed), ignore it
                         continue
-                    observations.add(points3d_id, image_path, int(keypoint_id))
-            nb_records += 1
+                    observations.add(points3d_id, keypoints_type, image_path, int(keypoint_id))
+                    nb_records += 1
     loading_elapsed = datetime.datetime.now() - loading_start
     logger.debug(f'{nb_records:12,d} {kapture.Observations} in {loading_elapsed.total_seconds():.3f} seconds'
                  .replace(',', ' '))
@@ -1182,11 +1375,18 @@ def kapture_to_dir(kapture_dirpath: str, kapture_data: kapture.Kapture) -> None:
     # save each member of kapture data
     for kapture_class, kapture_member_name in KAPTURE_ATTRIBUTE_NAMES.items():
         part_data = kapture_data.__getattribute__(kapture_member_name)
-        if part_data is not None:
+        if part_data is not None and kapture_class in kapture_subtype_to_filepaths:
             # save it
             logger.debug(f'saving {kapture_member_name} ...')
             write_function = KAPTURE_ATTRIBUTE_WRITERS[kapture_class]
             write_function(kapture_subtype_to_filepaths[kapture_class], part_data)
+        elif part_data is not None and kapture_class in FEATURES_CSV_FILENAMES:
+            write_function = KAPTURE_ATTRIBUTE_WRITERS[kapture_class]
+            for feature_type, features in part_data.items():
+                # save it
+                logger.debug(f'saving {kapture_member_name} : {feature_type} ...')
+                filepath = path.join(kapture_dirpath, FEATURES_CSV_FILENAMES[kapture_class](feature_type))
+                write_function(filepath, features)
     saving_elapsed = datetime.datetime.now() - saving_start
     logger.info(f'Saved in {saving_elapsed.total_seconds():.3f} seconds in "{kapture_dirpath}"')
 
@@ -1235,7 +1435,8 @@ def kapture_from_dir(
                                    kapture.Matches,
                                    kapture.Points3d,
                                    kapture.Observations
-                                   ]]] = []
+                                   ]]] = [],
+        tar_handlers: Optional[TarCollection] = None
 ) -> kapture.Kapture:
     """
     Reads and return kapture data from directory.
@@ -1243,6 +1444,7 @@ def kapture_from_dir(
     :param kapture_dir_path: kapture directory root path
     :param matches_pairs_file_path: text file in the csv format; where each line is image_name1, image_name2, score
     :param skip_list: Input option for expert only. Skip the load of specified parts.
+    :param tar_handler: collection of preloaded tar archives
     :return: kapture data read
     """
     if not path.isdir(kapture_dir_path):
@@ -1268,6 +1470,7 @@ def kapture_from_dir(
     if sensors_file_path:
         logger.debug(f'loading sensors {sensors_file_path} ...')
         kapture_data.__version__ = get_version_from_csv_file(sensors_file_path)
+        assert kapture_data.__version__ == current_format_version()
         kapture_data.sensors = sensors_from_file(sensors_file_path)
         sensor_ids = set(kapture_data.sensors.keys()) if kapture_data.sensors is not None else set()
 
@@ -1293,7 +1496,7 @@ def kapture_from_dir(
 
     _load_all_records(csv_file_paths, kapture_loadable_data, kapture_data)
     _load_features_and_desc_and_matches(data_dir_paths, kapture_dir_path, matches_pairs_file_path,
-                                        kapture_loadable_data, kapture_data)
+                                        kapture_loadable_data, kapture_data, tar_handlers)
     _load_points3d_and_observations(csv_file_paths, kapture_loadable_data, kapture_data)
 
     loading_elapsed = datetime.datetime.now() - loading_start
@@ -1404,8 +1607,22 @@ def _load_all_records(csv_file_paths, kapture_loadable_data, kapture_data) -> No
         kapture_data.records_magnetic = records_magnetic_from_file(records_magnetic_file_path, sensor_ids)
 
 
-def _load_features_and_desc_and_matches(data_dir_paths, kapture_dir_path, matches_pairs_file_path,
-                                        kapture_loadable_data, kapture_data) -> None:
+def list_features(kapture_type: Type[Union[kapture.Keypoints,
+                                           kapture.Descriptors,
+                                           kapture.GlobalFeatures]],
+                  kapture_dir_path: str) -> List[str]:
+    subfolders = (
+        name
+        for name in os.listdir(os.path.join(kapture_dir_path, kapture.io.features.FEATURES_DATA_DIRNAMES[kapture_type]))
+        if os.path.isfile(get_feature_csv_fullpath(kapture_type, name, kapture_dir_path))
+    )
+    return list(subfolders)
+
+
+def _load_features_and_desc_and_matches(data_dir_paths: dict, kapture_dir_path: str,
+                                        matches_pairs_file_path: Optional[str],
+                                        kapture_loadable_data: set, kapture_data: kapture.Kapture,
+                                        tar_handlers: Optional[TarCollection] = None) -> None:
     """
     Loads features, descriptors, key points and matches from disk to the kapture in memory
 
@@ -1414,6 +1631,7 @@ def _load_features_and_desc_and_matches(data_dir_paths, kapture_dir_path, matche
     :param matches_pairs_file_path: text file in the csv format; where each line is image_name1, image_name2, score
     :param kapture_loadable_data: the data to load
     :param kapture_data: to the kapture object to load into
+    :param tar_handler: collection of preloaded tar archives
     """
 
     # features
@@ -1425,25 +1643,56 @@ def _load_features_and_desc_and_matches(data_dir_paths, kapture_dir_path, matche
     if kapture.Keypoints in kapture_loadable_data:
         logger.debug(f'loading keypoints {data_dir_paths[kapture.Keypoints]} ...')
         assert kapture_data.records_camera is not None
-        kapture_data.keypoints = keypoints_from_dir(kapture_dir_path, image_filenames)
+        keypoints_list = list_features(kapture.Keypoints, kapture_dir_path)
+        if len(keypoints_list) > 0:
+            kapture_data.keypoints = {}
+            for keypoints_type in keypoints_list:
+                kapture_data.keypoints[keypoints_type] = keypoints_from_dir(keypoints_type,
+                                                                            kapture_dir_path,
+                                                                            image_filenames,
+                                                                            tar_handlers)
     # descriptors
     if kapture.Descriptors in kapture_loadable_data:
         logger.debug(f'loading descriptors {data_dir_paths[kapture.Descriptors]} ...')
         assert kapture_data.records_camera is not None
-        kapture_data.descriptors = descriptors_from_dir(kapture_dir_path, image_filenames)
+        descriptors_list = list_features(kapture.Descriptors, kapture_dir_path)
+        if len(descriptors_list) > 0:
+            kapture_data.descriptors = {}
+            for descriptors_type in descriptors_list:
+                kapture_data.descriptors[descriptors_type] = descriptors_from_dir(descriptors_type,
+                                                                                  kapture_dir_path,
+                                                                                  image_filenames,
+                                                                                  tar_handlers)
     # global_features
     if kapture.GlobalFeatures in kapture_loadable_data:
         logger.debug(f'loading global features {data_dir_paths[kapture.GlobalFeatures]} ...')
         assert kapture_data.records_camera is not None
-        kapture_data.global_features = global_features_from_dir(kapture_dir_path, image_filenames)
+        global_features_list = list_features(kapture.GlobalFeatures, kapture_dir_path)
+        if len(global_features_list) > 0:
+            kapture_data.global_features = {}
+            for global_features_type in global_features_list:
+                kapture_data.global_features[global_features_type] = global_features_from_dir(global_features_type,
+                                                                                              kapture_dir_path,
+                                                                                              image_filenames,
+                                                                                              tar_handlers)
     # matches
     if kapture.Matches in kapture_loadable_data:
         logger.debug(f'loading matches {data_dir_paths[kapture.Matches]} ...')
         assert kapture_data.records_camera is not None
-        kapture_data.matches = matches_from_dir(kapture_dir_path, image_filenames, matches_pairs_file_path)
-
-
-def _load_points3d_and_observations(csv_file_paths, kapture_loadable_data, kapture_data) -> None:
+        keypoints_list = [name
+                          for name in os.listdir(data_dir_paths[kapture.Matches])
+                          if os.path.isdir(os.path.join(data_dir_paths[kapture.Matches], name))]
+        if len(keypoints_list) > 0:
+            kapture_data.matches = {}
+            for keypoints_type in keypoints_list:
+                kapture_data.matches[keypoints_type] = matches_from_dir(keypoints_type,
+                                                                        kapture_dir_path,
+                                                                        image_filenames,
+                                                                        matches_pairs_file_path,
+                                                                        tar_handlers)
+
+
+def _load_points3d_and_observations(csv_file_paths, kapture_loadable_data, kapture_data: kapture.Kapture) -> None:
     # points3d
     if kapture.Points3d in kapture_loadable_data:
         points3d_file_path = csv_file_paths[kapture.Points3d]
@@ -1456,3 +1705,100 @@ def _load_points3d_and_observations(csv_file_paths, kapture_loadable_data, kaptu
         assert kapture_data.keypoints is not None
         assert kapture_data.points3d is not None
         kapture_data.observations = observations_from_file(observations_file_path, kapture_data.keypoints)
+
+
+def get_all_tar_handlers(kapture_dir_path: str,
+                         mode: Union[str, Dict[Type, str]] = 'r',
+                         skip_list: List[Type[Union[
+                             kapture.Keypoints,
+                             kapture.Descriptors,
+                             kapture.GlobalFeatures,
+                             kapture.Matches
+                         ]]] = []) -> TarCollection:
+    """
+    Preloads all tars for the kapture data in kapture_dir_path. can be either read of append.
+
+    :param kapture_dir_path: kapture top directory path
+    :param mode: 'r' or 'a', defaults to 'r'
+    :param skip_list: Input option for expert only. Skip the load of specified parts, defaults to []
+    :return: collection of preloaded tar archives, don't forget to call close() when you're done with it
+    """
+    if isinstance(mode, str):
+        assert mode in {'r', 'a'}
+    else:
+        assert isinstance(mode, dict)
+        for mode_t in mode.values():
+            assert mode_t in {'r', 'a'}
+
+    data_dir_paths = {dtype: path.join(kapture_dir_path, dir_name)
+                      for dtype, dir_name in kapture.io.features.FEATURES_DATA_DIRNAMES.items()}
+    kapture_loadable_data = {
+        kapture_type
+        for kapture_type in KAPTURE_TARABLE_TYPES
+        if kapture_type not in skip_list and path.exists(data_dir_paths[kapture_type])
+    }
+    tar_collection = TarCollection()
+
+    # keypoints
+    if kapture.Keypoints in kapture_loadable_data:
+        logger.debug(f'opening keypoints tars {data_dir_paths[kapture.Keypoints]} ...')
+        keypoints_list = list_features(kapture.Keypoints, kapture_dir_path)
+        if len(keypoints_list) > 0:
+            if isinstance(mode, str):
+                mode_t = mode
+            elif kapture.Keypoints in mode:
+                mode_t = mode[kapture.Keypoints]
+            else:
+                mode_t = 'r'
+            for keypoints_type in keypoints_list:
+                tarfile_path = get_feature_tar_fullpath(kapture.Keypoints, keypoints_type, kapture_dir_path)
+                if path.isfile(tarfile_path):
+                    tar_collection.keypoints[keypoints_type] = TarHandler(tarfile_path, mode_t)
+    # descriptors
+    if kapture.Descriptors in kapture_loadable_data:
+        logger.debug(f'opening descriptors tars {data_dir_paths[kapture.Descriptors]} ...')
+        descriptors_list = list_features(kapture.Descriptors, kapture_dir_path)
+        if len(descriptors_list) > 0:
+            if isinstance(mode, str):
+                mode_t = mode
+            elif kapture.Descriptors in mode:
+                mode_t = mode[kapture.Descriptors]
+            else:
+                mode_t = 'r'
+            for descriptors_type in descriptors_list:
+                tarfile_path = get_feature_tar_fullpath(kapture.Descriptors, descriptors_type, kapture_dir_path)
+                if path.isfile(tarfile_path):
+                    tar_collection.descriptors[descriptors_type] = TarHandler(tarfile_path, mode_t)
+    # global_features
+    if kapture.GlobalFeatures in kapture_loadable_data:
+        logger.debug(f'opening global_features tars {data_dir_paths[kapture.GlobalFeatures]} ...')
+        global_features_list = list_features(kapture.GlobalFeatures, kapture_dir_path)
+        if len(global_features_list) > 0:
+            if isinstance(mode, str):
+                mode_t = mode
+            elif kapture.GlobalFeatures in mode:
+                mode_t = mode[kapture.GlobalFeatures]
+            else:
+                mode_t = 'r'
+            for global_features_type in global_features_list:
+                tarfile_path = get_feature_tar_fullpath(kapture.GlobalFeatures, global_features_type, kapture_dir_path)
+                if path.isfile(tarfile_path):
+                    tar_collection.global_features[global_features_type] = TarHandler(tarfile_path, mode_t)
+    # matches
+    if kapture.Matches in kapture_loadable_data:
+        logger.debug(f'opening matches tars {data_dir_paths[kapture.Matches]} ...')
+        keypoints_list = [name
+                          for name in os.listdir(data_dir_paths[kapture.Matches])
+                          if os.path.isdir(os.path.join(data_dir_paths[kapture.Matches], name))]
+        if len(keypoints_list) > 0:
+            if isinstance(mode, str):
+                mode_t = mode
+            elif kapture.Matches in mode:
+                mode_t = mode[kapture.Matches]
+            else:
+                mode_t = 'r'
+            for keypoints_type in keypoints_list:
+                tarfile_path = get_feature_tar_fullpath(kapture.Matches, keypoints_type, kapture_dir_path)
+                if path.isfile(tarfile_path):
+                    tar_collection.matches[keypoints_type] = TarHandler(tarfile_path, mode_t)
+    return tar_collection
diff --git a/kapture/io/features.py b/kapture/io/features.py
index 8b404d7..afd0d72 100644
--- a/kapture/io/features.py
+++ b/kapture/io/features.py
@@ -7,6 +7,7 @@
 And Matches are features related to a pair of RecordCamera (2 images).
 """
 
+from kapture.io.tar import TarCollection, TarHandler, list_files_in_tar, retrieve_tar_handler_from_collection
 import numpy as np
 import os.path as path
 from typing import Tuple, Any, Dict, Type, Optional, Union, Iterable
@@ -40,58 +41,92 @@
 
 # get file path for binary files in kapture ############################################################################
 def get_features_fullpath(
-        data_type: Any,
-        kapture_dirpath: str = '',
-        image_filename: Optional[str] = None) -> str:
+    data_type: Any,
+    feature_type: str,
+    kapture_dirpath: str = '',
+    image_filename: Optional[str] = None,
+    tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Union[str, Tuple[Optional[str], TarHandler]]:
     """
     Returns full path to subdirectory containing the binary files of the given type.
             Optionally, can give a the image file name, and add the feature file name (with proper extension).
 
     :param data_type:
+    :param feature_type: name of the feature
     :param kapture_dirpath: input path to kapture directory.
     :param image_filename: optional input image filename (id).
+    :param tar_handler: collection of preloaded tar archives
     :return: Feature full path
     """
-    subdir = FEATURES_DATA_DIRNAMES[data_type]
-    feature_filename = image_filename + FEATURE_FILE_EXTENSION[data_type] if image_filename else ''
-    return path_secure(path.join(kapture_dirpath, subdir, feature_filename))
+    tar_local_handler = retrieve_tar_handler_from_collection(data_type, feature_type, tar_handler)
+    if tar_local_handler is None:
+        subdir = FEATURES_DATA_DIRNAMES[data_type]
+        feature_filename = image_filename + FEATURE_FILE_EXTENSION[data_type] if image_filename else ''
+        return path_secure(path.join(kapture_dirpath, subdir, feature_type, feature_filename))
+    else:
+        feature_filename = image_filename + FEATURE_FILE_EXTENSION[data_type] if image_filename else None
+        return (feature_filename, tar_local_handler)
 
 
 def features_to_filepaths(
-        kapture_data: Union[kapture.RecordsCamera,
-                            kapture.Keypoints,
-                            kapture.Descriptors,
-                            kapture.GlobalFeatures],
-        kapture_dirpath: str = '') -> Dict[str, str]:
+    kapture_data: Union[kapture.Keypoints,
+                        kapture.Descriptors,
+                        kapture.GlobalFeatures],
+    feature_type: str,
+    kapture_dirpath: str = '',
+    tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Dict[str, Union[str, Tuple[str, TarHandler]]]:
     """
     Returns a dict mapping image_id to path to feature file.
         Eg.{image_id: full/path/to/feature.jpg.kpt}
+        or
+        {image_id: (feature.jpg.kpt, ref_to_tar)}
 
     :param kapture_data: input kapture data.
+    :param feature_type: name of the feature
     :param kapture_dirpath: input path to kapture directory.
+    :param tar_handler: collection of preloaded tar archives
     :return: image id to image file path dictionary
     """
     data_type = type(kapture_data)
     return {
-        image_filename: get_features_fullpath(data_type, kapture_dirpath, image_filename)
+        image_filename: get_features_fullpath(data_type, feature_type, kapture_dirpath, image_filename, tar_handler)
         for image_filename in kapture_data
     }
 
 
+def image_ids_from_feature_tar(kapture_type: Type[Union[kapture.Keypoints,
+                                                        kapture.Descriptors,
+                                                        kapture.GlobalFeatures]],
+                               tar_handler: TarHandler) -> Iterable[str]:
+    """
+     Populate feature files in tar and returns their corresponding image_filename
+
+    :param kapture_type: kapture class type.
+    :param tar_handler: opened tar reference
+    :return: image file paths
+    """
+    feature_filenames = list_files_in_tar(tar_handler, FEATURE_FILE_EXTENSION[kapture_type])
+    image_filenames = (feature_filename[:-len(FEATURE_FILE_EXTENSION[kapture_type])]
+                       for feature_filename in feature_filenames)
+    return image_filenames
+
+
 def image_ids_from_feature_dirpath(
         kapture_type: Type[Union[kapture.Keypoints,
                                  kapture.Descriptors,
-                                 kapture.GlobalFeatures,
-                                 kapture.Matches]],
-        kapture_dirpath: str = '') -> Dict[str, str]:
+                                 kapture.GlobalFeatures]],
+        feature_type: str,
+        kapture_dirpath: str = '') -> Iterable[str]:
     """
     Populate feature files and returns their corresponding image_filename.
 
-    :param kapture_type:
-    :param kapture_dirpath:
-    :return: image file path
+    :param kapture_type: kapture class type.
+    :param feature_type: name of the feature
+    :param kapture_dirpath: root path of kapture
+    :return: image file paths
     """
-    feature_dirpath = get_features_fullpath(kapture_type, kapture_dirpath)
+    feature_dirpath = get_features_fullpath(kapture_type, feature_type, kapture_dirpath)
     # filter only files with proper extension and
     feature_filenames = populate_files_in_dirpath(feature_dirpath, FEATURE_FILE_EXTENSION[kapture_type])
     # remove file extensions to retrieve image name.
@@ -105,21 +140,31 @@ def features_check_dir(
                             kapture.Descriptors,
                             kapture.GlobalFeatures,
                             kapture.Matches],
-        kapture_dirpath: str) -> bool:
+        feature_type: str,
+        kapture_dirpath: str,
+        tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> bool:
     """
     Makes sure all files actually exists.
 
-    :param kapture_data:
-    :param kapture_dirpath:
+    :param kapture_data: input kapture data
+    :param feature_type: name of the feature
+    :param kapture_dirpath: root path of kapture
+    :param tar_handler: collection of preloaded tar archives
     :return: True only if all exist, false otherwise
     """
-    file_list = features_to_filepaths(kapture_data, kapture_dirpath).values()
-    all_files_exists = all(path.exists(feature_filepath) for feature_filepath in file_list)
+    data_type = type(kapture_data)
+    tar_local_handler = retrieve_tar_handler_from_collection(data_type, feature_type, tar_handler)
+    file_list = features_to_filepaths(kapture_data, feature_type, kapture_dirpath, tar_local_handler).values()
+    if tar_local_handler is None:
+        all_files_exists = all(path.exists(feature_filepath) for feature_filepath in file_list)
+    else:
+        all_files_in_tar = set(list_files_in_tar(tar_local_handler, FEATURE_FILE_EXTENSION[data_type]))
+        all_files_exists = all(feature_filepath[0] in all_files_in_tar for feature_filepath in file_list)
     return all_files_exists
 
 
 # image_keypoints ######################################################################################################
-def image_keypoints_from_file(filepath: str, dtype: Type, dsize: int) -> np.array:
+def image_keypoints_from_file(filepath: Union[str, Tuple[str, TarHandler]], dtype: Type, dsize: int) -> np.ndarray:
     """
     Read the image keypoints
 
@@ -128,54 +173,71 @@ def image_keypoints_from_file(filepath: str, dtype: Type, dsize: int) -> np.arra
     :param dsize: number of data per keypoint
     :return: the image keypoints
     """
-    return array_from_file(filepath, dtype, dsize)
+    if isinstance(filepath, str):
+        return array_from_file(filepath, dtype, dsize)
+    else:
+        return filepath[1].get_array_from_tar(filepath[0], dtype, dsize)
 
 
-def image_keypoints_to_file(filepath: str, image_keypoints: np.array) -> None:
+def image_keypoints_to_file(filepath: Union[str, Tuple[str, TarHandler]], image_keypoints: np.ndarray) -> None:
     """
     Writes the image keypoints to file
 
     :param filepath: file path
     :param image_keypoints: image keypoints
     """
-    array_to_file(filepath, image_keypoints)
+    if isinstance(filepath, str):
+        array_to_file(filepath, image_keypoints)
+    else:
+        filepath[1].add_array_to_tar(filepath[0], image_keypoints)
 
 
-def get_keypoints_fullpath(kapture_dirpath: str, image_filename: Optional[str] = None) -> str:
+def get_keypoints_fullpath(keypoints_type: str, kapture_dirpath: str, image_filename: Optional[str] = None,
+                           tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Union[str, Tuple[Optional[str], TarHandler]]:
     """
     Computes the full path of the keypoints file
 
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param kapture_dirpath: top kapture directory path
     :param image_filename: image file name
+    :param tar_handler: collection of preloaded tar archives
     :return: full path of the keypoints file
     """
-    return get_features_fullpath(kapture.Keypoints, kapture_dirpath, image_filename)
+    return get_features_fullpath(kapture.Keypoints, keypoints_type, kapture_dirpath, image_filename, tar_handler)
 
 
-def keypoints_to_filepaths(keypoints: kapture.Keypoints, kapture_dirpath: str) -> Dict[str, str]:
+def keypoints_to_filepaths(keypoints: kapture.Keypoints, keypoints_type: str, kapture_dirpath: str,
+                           tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Dict[str, Union[str, Tuple[str, TarHandler]]]:
     """
     Computes keypoints files paths
 
     :param keypoints: keypoints
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: keypoint to keypoint file dictionary
     """
-    return features_to_filepaths(keypoints, kapture_dirpath)
+    return features_to_filepaths(keypoints, keypoints_type, kapture_dirpath, tar_handler)
 
 
-def keypoints_check_dir(keypoints: kapture.Keypoints, kapture_dirpath: str) -> bool:
+def keypoints_check_dir(keypoints: kapture.Keypoints, keypoints_type: str, kapture_dirpath: str,
+                        tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> bool:
     """
     Checks that all keypoints file exist.
 
     :param keypoints: keypoints
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: True if they all exist, false otherwise.
     """
-    return features_check_dir(keypoints, kapture_dirpath)
+    return features_check_dir(keypoints, keypoints_type, kapture_dirpath, tar_handler)
 
 
 # image_descriptors ####################################################################################################
-def image_descriptors_from_file(filepath: str, dtype: Type, dsize: int) -> np.array:
+def image_descriptors_from_file(filepath: Union[str, Tuple[str, TarHandler]], dtype: Type, dsize: int) -> np.ndarray:
     """
     Read the image descriptors
 
@@ -184,54 +246,73 @@ def image_descriptors_from_file(filepath: str, dtype: Type, dsize: int) -> np.ar
     :param dsize: number of data per keypoint
     :return: the image descriptors
     """
-    return array_from_file(filepath, dtype, dsize)
+    if isinstance(filepath, str):
+        return array_from_file(filepath, dtype, dsize)
+    else:
+        return filepath[1].get_array_from_tar(filepath[0], dtype, dsize)
 
 
-def image_descriptors_to_file(filepath: str, image_descriptors: np.array) -> None:
+def image_descriptors_to_file(filepath: Union[str, Tuple[str, TarHandler]], image_descriptors: np.ndarray) -> None:
     """
     Writes the image descriptors to file
 
     :param filepath: file path
     :param image_descriptors: image descriptors
     """
-    array_to_file(filepath, image_descriptors)
+    if isinstance(filepath, str):
+        array_to_file(filepath, image_descriptors)
+    else:
+        filepath[1].add_array_to_tar(filepath[0], image_descriptors)
 
 
-def get_descriptors_fullpath(kapture_dirpath: str, image_filename: Optional[str] = None) -> str:
+def get_descriptors_fullpath(descriptors_type: str, kapture_dirpath: str, image_filename: Optional[str] = None,
+                             tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Union[str, Tuple[Optional[str], TarHandler]]:
     """
     Computes the full path of the descriptors file
 
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder
     :param kapture_dirpath: top kapture directory path
     :param image_filename: image file name
+    :param tar_handler: collection of preloaded tar archives
     :return: full path of the descriptors file
     """
-    return get_features_fullpath(kapture.Descriptors, kapture_dirpath, image_filename)
+    return get_features_fullpath(kapture.Descriptors, descriptors_type, kapture_dirpath, image_filename, tar_handler)
 
 
-def descriptors_to_filepaths(descriptors: kapture.Descriptors, kapture_dirpath: str) -> Dict[str, str]:
+def descriptors_to_filepaths(descriptors: kapture.Descriptors,
+                             descriptors_type: str,
+                             kapture_dirpath: str,
+                             tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Dict[str, Union[str, Tuple[str, TarHandler]]]:
     """
     Computes descriptors files paths
 
     :param descriptors: descriptors
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: descriptors to descriptors file dictionary
     """
-    return features_to_filepaths(descriptors, kapture_dirpath)
+    return features_to_filepaths(descriptors, descriptors_type, kapture_dirpath, tar_handler)
 
 
-def descriptors_check_dir(descriptors: kapture.Descriptors, kapture_dirpath: str) -> bool:
+def descriptors_check_dir(descriptors: kapture.Descriptors, descriptors_type: str, kapture_dirpath: str,
+                          tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> bool:
     """
     Checks that all descriptors file exist.
 
     :param descriptors: descriptors
+    :param descriptors_type: type of descriptors to export, name of the descriptors subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: True if they all exist, false otherwise.
     """
-    return features_check_dir(descriptors, kapture_dirpath)
+    return features_check_dir(descriptors, descriptors_type, kapture_dirpath, tar_handler)
 
 
 # global_features ######################################################################################################
-def image_global_features_from_file(filepath: str, dtype: Type, dsize: int) -> np.array:
+def image_global_features_from_file(filepath: Union[str, Tuple[str, TarHandler]], dtype: Type, dsize: int) -> np.ndarray:
     """
     Read the image global features
 
@@ -240,54 +321,79 @@ def image_global_features_from_file(filepath: str, dtype: Type, dsize: int) -> n
     :param dsize: number of data per keypoint
     :return: the global features
     """
-    return array_from_file(filepath, dtype, dsize)
+    if isinstance(filepath, str):
+        return array_from_file(filepath, dtype, dsize)
+    else:
+        return filepath[1].get_array_from_tar(filepath[0], dtype, dsize)
 
 
-def image_global_features_to_file(filepath: str, image_global_descriptor: np.array) -> None:
+def image_global_features_to_file(filepath: Union[str, Tuple[str, TarHandler]],
+                                  image_global_descriptor: np.ndarray) -> None:
     """
     Writes the image global features to file
 
     :param filepath: file path
     :param image_global_descriptor: image global features
     """
-    array_to_file(filepath, image_global_descriptor)
+    if isinstance(filepath, str):
+        array_to_file(filepath, image_global_descriptor)
+    else:
+        filepath[1].add_array_to_tar(filepath[0], image_global_descriptor)
 
 
-def get_global_features_fullpath(kapture_dirpath: str, image_filename: Optional[str] = None) -> str:
+def get_global_features_fullpath(global_features_type: str,
+                                 kapture_dirpath: str,
+                                 image_filename: Optional[str] = None,
+                                 tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Union[str, Tuple[Optional[str], TarHandler]]:
     """
     Computes the full path of the global features file
 
     :param kapture_dirpath: top kapture directory path
+    :param global_features_type: type of global_features, name of the global_features subfolder
     :param image_filename: image file name
+    :param tar_handler: collection of preloaded tar archives
     :return: full path of the global features file
     """
-    return get_features_fullpath(kapture.GlobalFeatures, kapture_dirpath, image_filename)
+    return get_features_fullpath(kapture.GlobalFeatures, global_features_type, kapture_dirpath,
+                                 image_filename, tar_handler)
 
 
-def global_features_to_filepaths(global_features: kapture.GlobalFeatures, kapture_dirpath: str) -> Dict[str, str]:
+def global_features_to_filepaths(global_features: kapture.GlobalFeatures,
+                                 global_features_type: str,
+                                 kapture_dirpath: str,
+                                 tar_handler: Optional[Union[TarCollection, TarHandler]] = None) \
+        -> Dict[str, Union[str, Tuple[str, TarHandler]]]:
     """
     Computes global features files paths
 
     :param global_features: global features
+    :param global_features_type: type of global_features, name of the global_features subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: global features to global features file dictionary
     """
-    return features_to_filepaths(global_features, kapture_dirpath)
+    return features_to_filepaths(global_features, global_features_type, kapture_dirpath, tar_handler)
 
 
-def global_features_check_dir(global_features: kapture.GlobalFeatures, kapture_dirpath: str) -> bool:
+def global_features_check_dir(global_features: kapture.GlobalFeatures,
+                              global_features_type: str,
+                              kapture_dirpath: str,
+                              tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> bool:
     """
     Checks that all keypoints file exist.
 
     :param global_features: global features
+    :param global_features_type: type of global_features, name of the global_features subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: True if they all exist, false otherwise.
     """
-    return features_check_dir(global_features, kapture_dirpath)
+    return features_check_dir(global_features, global_features_type, kapture_dirpath, tar_handler)
 
 
 # matches ##############################################################################################################
-def image_matches_from_file(filepath: str) -> np.array:
+def image_matches_from_file(filepath: Union[str, Tuple[str, TarHandler]]) -> np.ndarray:
     """
     Read the image matches
      [keypoint_id_image1, keypoint_id_image2, score]
@@ -295,62 +401,71 @@ def image_matches_from_file(filepath: str) -> np.array:
     :param filepath: path to the file
     :return: matches
     """
-    return array_from_file(filepath, dtype=np.float64, dsize=3)
+    if isinstance(filepath, str):
+        return array_from_file(filepath, dtype=np.float64, dsize=3)
+    else:
+        return filepath[1].get_array_from_tar(filepath[0], dtype=np.float64, dsize=3)
 
 
-def image_matches_to_file(filepath: str, image_matches: np.array) -> None:
+def image_matches_to_file(filepath: Union[str, Tuple[str, TarHandler]], image_matches: np.ndarray) -> None:
     """
     Writes the image matches to file
 
     :param filepath: file path
     :param image_matches: image matches
     """
-
     assert image_matches.dtype == np.float64
     assert image_matches.shape[1] == 3
-    array_to_file(filepath, image_matches)
+    if isinstance(filepath, str):
+        array_to_file(filepath, image_matches)
+    else:
+        filepath[1].add_array_to_tar(filepath[0], image_matches)
 
 
-def get_matches_fullpath(image_filename_pair: Optional[Tuple[str, str]] = None, kapture_dirpath: str = '') -> str:
+def get_matches_fullpath(
+        image_filename_pair: Optional[Tuple[str, str]] = None,
+        keypoints_type: str = '',
+        kapture_dirpath: str = '',
+        tar_handler: Optional[Union[TarCollection, TarHandler]] = None)  \
+        -> Union[str, Tuple[Optional[str], TarHandler]]:
     """
     Computes the full path of the matches file between two images
 
-    :param kapture_dirpath: top kapture directory path
     :param image_filename_pair: image file names
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
+    :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: full path of the matches file
     """
-
     if image_filename_pair is not None:
-        filename = path.join(image_filename_pair[0] + FEATURE_PAIR_PATH_SEPARATOR[kapture.Matches],
-                             image_filename_pair[1])
+        filename = path_secure(path.join(image_filename_pair[0] + FEATURE_PAIR_PATH_SEPARATOR[kapture.Matches],
+                                         image_filename_pair[1]))
     else:
         filename = None
-    return get_features_fullpath(kapture.Matches, kapture_dirpath, filename)
+    return get_features_fullpath(kapture.Matches, keypoints_type, kapture_dirpath, filename, tar_handler)
 
 
-def matches_to_filepaths(matches: kapture.Matches, kapture_dirpath: str = '') -> Dict[Tuple[str, str], str]:
+def matches_to_filepaths(matches: kapture.Matches,
+                         keypoints_type: str,
+                         kapture_dirpath: str = '',
+                         tar_handler: Optional[Union[TarCollection, TarHandler]] = None)  \
+        -> Dict[Tuple[str, str], Union[str, Tuple[str, TarHandler]]]:
     """
     Computes matches files paths
 
     :param matches: matches
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: file to file matches to matches file dictionary
     """
     return {
-        image_filename_pair: get_matches_fullpath(image_filename_pair, kapture_dirpath)
+        image_filename_pair: get_matches_fullpath(image_filename_pair, keypoints_type, kapture_dirpath, tar_handler)
         for image_filename_pair in matches
     }
 
 
-def matching_pairs_from_dirpath(kapture_dirpath: str) -> Iterable[Tuple[str, str]]:
-    """
-    Read and build Matches from kapture directory tree.
-    """
-    matches_dirpath = get_matches_fullpath(None, kapture_dirpath)
-    # list all files there is
-    # filter only match files (the ones endings with .matches)
-    matches_filenames = populate_files_in_dirpath(matches_dirpath, FEATURE_FILE_EXTENSION[kapture.Matches])
-
+def _matches_filenames_remove_extensions_and_cut(matches_filenames: Iterable[str]) -> Iterable[Tuple[str, str]]:
     # remove the extensions and cut
     matching_pairs = (
         path_secure(matches_filename)[:-len(FEATURE_FILE_EXTENSION[kapture.Matches])
@@ -361,14 +476,41 @@ def matching_pairs_from_dirpath(kapture_dirpath: str) -> Iterable[Tuple[str, str
     return matching_pairs
 
 
-def matches_check_dir(matches: kapture.Matches, kapture_dirpath: str) -> bool:
+def matching_pairs_from_tar(tar_handler: TarHandler) -> Iterable[Tuple[str, str]]:
+    """
+    Read and build Matches from a tar file.
+    """
+    matches_filenames = list_files_in_tar(tar_handler, FEATURE_FILE_EXTENSION[kapture.Matches])
+    return _matches_filenames_remove_extensions_and_cut(matches_filenames)
+
+
+def matching_pairs_from_dirpath(keypoints_type: str, kapture_dirpath: str) -> Iterable[Tuple[str, str]]:
+    """
+    Read and build Matches from kapture directory tree.
+    """
+    matches_dirpath = get_matches_fullpath(None, keypoints_type, kapture_dirpath)
+    # list all files there is
+    # filter only match files (the ones endings with .matches)
+    matches_filenames = populate_files_in_dirpath(matches_dirpath, FEATURE_FILE_EXTENSION[kapture.Matches])
+    return _matches_filenames_remove_extensions_and_cut(matches_filenames)
+
+
+def matches_check_dir(matches: kapture.Matches, keypoints_type: str, kapture_dirpath: str,
+                      tar_handler: Optional[Union[TarCollection, TarHandler]] = None) -> bool:
     """
     Checks that all matches file exist.
 
     :param matches: matches
+    :param keypoints_type: type of keypoints, name of the keypoints subfolder
     :param kapture_dirpath: top kapture directory path
+    :param tar_handler: collection of preloaded tar archives
     :return: True if they all exist, false otherwise.
     """
-    file_list = (get_matches_fullpath(pair, kapture_dirpath) for pair in matches)
-    all_files_exists = all(path.exists(filepath) for filepath in file_list)
+    tar_local_handler = retrieve_tar_handler_from_collection(kapture.Matches, keypoints_type, tar_handler)
+    file_list = (get_matches_fullpath(pair, keypoints_type, kapture_dirpath, tar_local_handler) for pair in matches)
+    if tar_local_handler is None:
+        all_files_exists = all(path.exists(filepath) for filepath in file_list)
+    else:
+        all_files_in_tar = set(list_files_in_tar(tar_local_handler, FEATURE_FILE_EXTENSION[kapture.Matches]))
+        all_files_exists = all(feature_filepath[0] in all_files_in_tar for feature_filepath in file_list)
     return all_files_exists
diff --git a/kapture/io/image.py b/kapture/io/image.py
index 4cdbb7e..53ae3df 100644
--- a/kapture/io/image.py
+++ b/kapture/io/image.py
@@ -11,7 +11,7 @@
 
 def image_keypoints_to_image(
         image: Image,
-        keypoints: np.array,
+        keypoints: np.ndarray,
         radius: int = 2,
         filled: bool = True) -> Image:
     """
diff --git a/kapture/io/ply.py b/kapture/io/ply.py
index 27ec161..32fb591 100644
--- a/kapture/io/ply.py
+++ b/kapture/io/ply.py
@@ -51,7 +51,7 @@ def get_axis_in_world(
         [length, 0, 0],  # X
         [0, length, 0],  # Y
         [0, 0, length],  # Z
-    ])
+    ], dtype=np.float)
     return pose_device_from_world.inverse().transform_points(sensor_axis)
 
 
diff --git a/kapture/io/tar.py b/kapture/io/tar.py
new file mode 100644
index 0000000..4466d9b
--- /dev/null
+++ b/kapture/io/tar.py
@@ -0,0 +1,251 @@
+from kapture.utils.paths import path_secure
+import kapture
+import tarfile
+import numpy as np
+import io
+from typing import Any, Dict, Iterable, List, Optional, Type, Union
+import os.path as path
+
+
+logger = kapture.logger
+
+
+class TarHandler:
+    def __init__(self, tarfile_path: str, mode: str = 'r'):
+        assert mode in {'r', 'a'}
+        self.mode = mode
+        self.fid = tarfile.TarFile(tarfile_path, mode=self.mode)
+        # list all files
+        tarcontent = self.fid.getmembers()
+        # if c.name is found multiple time, the value will correspond to its last occurence, so the most up to data one
+        self.content = {path_secure(c.name): c for c in tarcontent}
+
+    def __enter__(self):
+        return self
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        self.close()
+
+    def flush(self):
+        self.fid.fileobj.flush()
+
+    def close(self):
+        self.fid.close()
+
+    def add_array_to_tar(self, filepath: str, data_array: np.ndarray) -> None:
+        assert self.mode == 'a'
+        filepath = path_secure(filepath)
+        info = tarfile.TarInfo(filepath)
+        data = data_array.tobytes()
+        info.size = len(data)
+        self.fid.addfile(tarinfo=info, fileobj=io.BytesIO(data))
+        self.flush()
+        # self.content[filepath] = info
+        self.content[filepath] = self.fid.getmember(filepath)
+
+    def get_array_from_tar(self, filepath: str, dtype: Type, dsize: int) -> np.ndarray:
+        assert self.mode == 'r'
+        filepath = path_secure(filepath)
+        if filepath not in self.content:
+            print(self.content)
+        info = self.content[filepath]
+        data_array = np.frombuffer(self.fid.extractfile(info).read(), dtype=dtype)
+        data_array = data_array.reshape((-1, dsize))
+        return data_array
+
+
+class TarCollection:
+
+    def __init__(self,
+                 keypoints: Optional[Dict[str, TarHandler]] = None,
+                 descriptors: Optional[Dict[str, TarHandler]] = None,
+                 global_features: Optional[Dict[str, TarHandler]] = None,
+                 matches: Optional[Dict[str, TarHandler]] = None):
+        super().__init__()
+        if keypoints is None:
+            self.keypoints = {}
+        else:
+            self.keypoints = keypoints
+
+        if descriptors is None:
+            self.descriptors = {}
+        else:
+            self.descriptors = descriptors
+
+        if global_features is None:
+            self.global_features = {}
+        else:
+            self.global_features = global_features
+
+        if matches is None:
+            self.matches = {}
+        else:
+            self.matches = matches
+
+    def __enter__(self):
+        return self
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        self.close()
+
+    def close(self):
+        """
+        closes all handlers
+        """
+        for _, handler in self.keypoints.items():
+            handler.close()
+        self.keypoints.clear()
+        for _, handler in self.descriptors.items():
+            handler.close()
+        self.descriptors.clear()
+        for _, handler in self.global_features.items():
+            handler.close()
+        self.global_features.clear()
+        for _, handler in self.matches.items():
+            handler.close()
+        self.matches.clear()
+
+    @property
+    def keypoints(self) -> Dict[str, TarHandler]:
+        """
+        :return: the keypoints tar handlers
+        """
+        return self._keypoints
+
+    @keypoints.setter
+    def keypoints(self, keypoints: Dict[str, TarHandler]):
+        if not isinstance(keypoints, dict):
+            raise TypeError('dict of TarHandler expected')
+        self._keypoints = keypoints
+
+    @property
+    def descriptors(self) -> Dict[str, TarHandler]:
+        """
+        :return: the descriptors tar handlers
+        """
+        return self._descriptors
+
+    @descriptors.setter
+    def descriptors(self, descriptors: Dict[str, TarHandler]):
+        if not isinstance(descriptors, dict):
+            raise TypeError('dict of TarHandler expected')
+        self._descriptors = descriptors
+
+    @property
+    def global_features(self) -> Dict[str, TarHandler]:
+        """
+        :return: the global features tar handlers
+        """
+        return self._global_features
+
+    @global_features.setter
+    def global_features(self, global_features: Dict[str, TarHandler]):
+        if not isinstance(global_features, dict):
+            raise TypeError('dict of TarHandler expected')
+        self._global_features = global_features
+
+    @property
+    def matches(self) -> Dict[str, TarHandler]:
+        """
+        :return: the matches tar handlers
+        """
+        return self._matches
+
+    @matches.setter
+    def matches(self, matches: Dict[str, TarHandler]):
+        if not isinstance(matches, dict):
+            raise TypeError('dict of TarHandler expected')
+        self._matches = matches
+
+
+KAPTURE_TARABLE_TYPES = {
+    kapture.Keypoints,
+    kapture.Descriptors,
+    kapture.GlobalFeatures,
+    kapture.Matches
+}
+
+FEATURES_TAR_FILENAMES = {
+    kapture.Keypoints: lambda x: path.join('reconstruction', 'keypoints', x, 'keypoints.tar'),
+    kapture.Descriptors: lambda x: path.join('reconstruction', 'descriptors', x, 'descriptors.tar'),
+    kapture.GlobalFeatures: lambda x: path.join('reconstruction', 'global_features', x, 'global_features.tar'),
+    kapture.Matches: lambda x: path.join('reconstruction', 'matches', x, 'matches.tar'),
+}
+
+
+def get_feature_tar_fullpath(kapture_type: Any, feature_name: str, kapture_dirpath: str = '') -> str:
+    """
+    Returns the full path to tar kapture file for a given datastructure and root directory.
+    This path is the concatenation of the kapture root path and subpath into kapture into data structure.
+
+    :param kapture_type: type of kapture data (kapture.RecordsCamera, kapture.Trajectories, ...)
+    :param kapture_dirpath: root kapture path
+    :return: full path of tar file for that type of data
+    """
+    assert kapture_type in FEATURES_TAR_FILENAMES
+    filename = FEATURES_TAR_FILENAMES[kapture_type](feature_name)
+    return path.join(kapture_dirpath, filename)
+
+
+def list_files_in_tar(tar_handler: TarHandler,
+                      filename_extensions: Optional[Union[str, List[str]]] = None) -> Iterable[str]:
+    """
+    Returns the list of file path into the given tar.
+    If a list of extensions is given, returns only files with those extensions.
+
+    :param tar_handler: opened tar reference
+    :param filename_extensions: optional file name extensions to filter in
+    :return: list of paths
+    """
+    # list all files
+    file_paths = tar_handler.content.keys()
+
+    # if extensions are given, keep only files that complies.
+    if filename_extensions:
+        if not isinstance(filename_extensions, list):
+            # make sure extensions is a list
+            filename_extensions = [filename_extensions]
+        # make sure given extensions are lower case.
+        filename_extensions = [ext.lower() for ext in filename_extensions]
+        # check the extension is authorized
+        file_paths = (
+            file_path for file_path in file_paths
+            if path.splitext(file_path)[1].lower() in filename_extensions
+        )
+
+    file_paths = (path_secure(file_path)
+                  for file_path in file_paths)
+    return file_paths
+
+
+def retrieve_tar_handler_from_collection(kapture_type: Type[Union[kapture.Keypoints,
+                                                                  kapture.Descriptors,
+                                                                  kapture.GlobalFeatures,
+                                                                  kapture.Matches]],
+                                         feature_type: str,
+                                         tar_handlers: Optional[Union[TarCollection,
+                                                                      TarHandler]] = None) -> Optional[TarHandler]:
+    """
+    get a tar_handler from a collection of tar_handlers. the result will be None if it's not in a Tar
+
+    :param kapture_type: kapture class type.
+    :param feature_type: the name of the features type
+    :param tar_handler: None or collection of preloaded tar archives, defaults to None
+    :return: a TarHandler if the combo kapture_type/feature_type is in a tar, or None if it's in a directory
+    """
+    tar_local_handler = None
+    if tar_handlers is not None:
+        if isinstance(tar_handlers, TarCollection):
+            if kapture_type == kapture.Keypoints and feature_type in tar_handlers.keypoints:
+                tar_local_handler = tar_handlers.keypoints[feature_type]
+            elif kapture_type == kapture.Descriptors and feature_type in tar_handlers.descriptors:
+                tar_local_handler = tar_handlers.descriptors[feature_type]
+            elif kapture_type == kapture.GlobalFeatures and feature_type in tar_handlers.global_features:
+                tar_local_handler = tar_handlers.global_features[feature_type]
+            elif kapture_type == kapture.Matches and feature_type in tar_handlers.matches:
+                tar_local_handler = tar_handlers.matches[feature_type]
+        elif isinstance(tar_handlers, TarHandler):
+            tar_local_handler = tar_handlers
+        else:
+            raise TypeError(f'unknown {tar_handlers}')
+    return tar_local_handler
diff --git a/kapture/utils/Collections.py b/kapture/utils/Collections.py
index 30aa11f..e86adb2 100644
--- a/kapture/utils/Collections.py
+++ b/kapture/utils/Collections.py
@@ -6,7 +6,7 @@
 
 import collections
 from enum import Enum
-from typing import Any
+from typing import Any, Optional
 
 
 class AutoEnum(Enum):
@@ -43,3 +43,17 @@ def get_new_if_not_empty(new_value: Any, old_value: Any) -> Any:
     Return the new value if it is not None
     """
     return new_value if new_value else old_value
+
+
+def try_get_only_key_from_collection(collection: Optional[dict]) -> Optional[str]:
+    """
+    3 scenarios:
+    1 - dict is None or empty -> return None
+    2 - dict has exactly one item, return its key
+    3 - dict has more than one item, raise exception
+    """
+    if collection is None or len(collection) == 0:
+        return None
+    if len(collection) == 1:
+        return next(iter(collection.keys()))
+    raise ValueError(f'{collection} has more than 1 item, cannot decide which to pick')
diff --git a/kapture/utils/upgrade.py b/kapture/utils/upgrade.py
new file mode 100644
index 0000000..69a70f7
--- /dev/null
+++ b/kapture/utils/upgrade.py
@@ -0,0 +1,219 @@
+import os
+import os.path as path
+from typing import Optional
+import shutil
+# import numpy as np like in kapture.io.csv
+# so that types written as "np.float32" are understood by read_old_image_features_csv
+import numpy as np  # noqa: F401
+
+import kapture
+import kapture.utils.logging
+import kapture.io.features
+import kapture.io.csv
+from kapture.utils.paths import populate_files_in_dirpath
+from kapture.utils.logging import getLogger
+
+CSV_FILENAMES_1_0 = [
+    path.join('sensors', 'sensors.txt'),
+    path.join('sensors', 'trajectories.txt'),
+    path.join('sensors', 'rigs.txt'),
+    path.join('sensors', 'records_camera.txt'),
+    path.join('sensors', 'records_depth.txt'),
+    path.join('sensors', 'records_lidar.txt'),
+    path.join('sensors', 'records_wifi.txt'),
+    path.join('sensors', 'records_bluetooth.txt'),
+    path.join('sensors', 'records_gnss.txt'),
+    path.join('sensors', 'records_accelerometer.txt'),
+    path.join('sensors', 'records_gyroscope.txt'),
+    path.join('sensors', 'records_magnetic.txt'),
+    path.join('reconstruction', 'points3d.txt')]
+
+
+def read_old_image_features_csv(csv_filepath):
+    with open(csv_filepath, 'r') as source_file:
+        table = kapture.io.csv.table_from_file(source_file)
+        line = list(table)[0]
+        assert len(line) == 3
+        name, dtype, dsize = line[0], line[1], int(line[2])
+
+    # try to list all possible type from numpy that can be used in eval(dtype)
+    from numpy import float, float32, float64, int32, uint8  # noqa: F401
+    if isinstance(type(eval(dtype)), type):
+        dtype = eval(dtype)
+    else:
+        raise ValueError('Expect data type ')
+    return name, dtype, dsize
+
+
+def upgrade_1_0_to_1_1_inplace(kapture_dirpath: str,
+                               keypoints_type: Optional[str],
+                               descriptors_type: Optional[str],
+                               global_features_type: Optional[str],
+                               descriptors_metric_type: str,
+                               global_features_metric_type: str) -> None:
+    # some text files didn't change, just change their header
+    for csv_filename in CSV_FILENAMES_1_0:
+        csv_fullpath = path.join(kapture_dirpath, csv_filename)
+        if path.isfile(csv_fullpath):
+            getLogger().debug(f'converting {csv_fullpath}...')
+            old_version = kapture.io.csv.get_version_from_csv_file(csv_fullpath)
+            assert (old_version is None or old_version == '1.0')
+            with open(csv_fullpath, 'r') as source_file:
+                if old_version is not None:
+                    source_file.readline()  # read and ignore header
+                # write replacement header
+                lines = source_file.read()
+            with open(csv_fullpath, 'w') as source_file:
+                lines_all = kapture.io.csv.KAPTURE_FORMAT_1 + kapture.io.csv.kapture_linesep + lines
+                source_file.write(lines_all)
+    # keypoints
+    keypoints_dir_path = path.join(kapture_dirpath, 'reconstruction', 'keypoints')
+    keypoints_csv_path = path.join(keypoints_dir_path, 'keypoints.txt')
+    local_features_json_filepath = path.join(keypoints_dir_path, 'extract_local_features.json')
+    if path.isdir(keypoints_dir_path) and path.isfile(keypoints_csv_path):
+        getLogger().debug(f'converting {keypoints_dir_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(keypoints_csv_path)
+        assert old_version is None or old_version == '1.0'
+        name, dtype, dsize = read_old_image_features_csv(keypoints_csv_path)
+        os.remove(keypoints_csv_path)
+        if keypoints_type is None:
+            assert name != ''
+            keypoints_type = name
+        keypoints = kapture.Keypoints(name, dtype, dsize)
+        keypoints_csv_output_path = path.join(kapture_dirpath,
+                                              kapture.io.csv.FEATURES_CSV_FILENAMES[kapture.Keypoints](keypoints_type))
+        keypoints_output_dir = path.dirname(keypoints_csv_output_path)
+        kapture.io.csv.keypoints_to_file(keypoints_csv_output_path, keypoints)
+
+        # json file
+        if path.isfile(local_features_json_filepath):
+            local_features_json_output_file = path.join(keypoints_output_dir, 'extract_local_features.json')
+            shutil.move(local_features_json_filepath, local_features_json_output_file)
+
+        # now copy all .kpt files
+        keypoints_filenames = list(populate_files_in_dirpath(keypoints_dir_path, '.kpt'))
+        # cast to list before enumerating (or moved files will be listed multiple times)
+        for keypoints_filename in keypoints_filenames:
+            keypoints_output_file = path.join(keypoints_output_dir, keypoints_filename)
+            keypoints_inpath = path.join(keypoints_dir_path, keypoints_filename)
+            os.makedirs(path.dirname(keypoints_output_file), exist_ok=True)
+            shutil.move(keypoints_inpath, keypoints_output_file)
+            old_kp_dir = path.dirname(keypoints_inpath)
+            if len(os.listdir(old_kp_dir)) == 0:
+                os.removedirs(old_kp_dir)
+
+    # descriptors
+    descriptors_dir_path = path.join(kapture_dirpath, 'reconstruction', 'descriptors')
+    descriptors_csv_path = path.join(descriptors_dir_path, 'descriptors.txt')
+    if path.isdir(descriptors_dir_path) and path.isfile(descriptors_csv_path):
+        getLogger().debug(f'converting {descriptors_dir_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(descriptors_csv_path)
+        assert old_version is None or old_version == '1.0'
+        assert keypoints_type is not None
+        name, dtype, dsize = read_old_image_features_csv(descriptors_csv_path)
+        os.remove(descriptors_csv_path)
+        if descriptors_type is None:
+            assert name != ''
+            descriptors_type = name
+        descriptors = kapture.Descriptors(name, dtype, dsize, keypoints_type, descriptors_metric_type)
+        descriptors_csv_output_path = path.join(kapture_dirpath,
+                                                kapture.io.csv.FEATURES_CSV_FILENAMES[kapture.Descriptors](
+                                                    descriptors_type)
+                                                )
+        descriptors_output_dir = path.dirname(descriptors_csv_output_path)
+        kapture.io.csv.descriptors_to_file(descriptors_csv_output_path, descriptors)
+        # now copy all .desc files
+        descriptors_filenames = list(populate_files_in_dirpath(descriptors_dir_path, '.desc'))
+        # cast to list before enumerating (or moved files will be listed multiple times)
+        for descriptors_filename in descriptors_filenames:
+            descriptors_output_file = path.join(descriptors_output_dir, descriptors_filename)
+            os.makedirs(path.dirname(descriptors_output_file), exist_ok=True)
+            shutil.move(path.join(descriptors_dir_path, descriptors_filename), descriptors_output_file)
+            old_desc_dir = path.dirname(path.join(descriptors_dir_path, descriptors_filename))
+            if len(os.listdir(old_desc_dir)) == 0:
+                os.removedirs(old_desc_dir)
+
+    # matches
+    matches_dir_path = path.join(kapture_dirpath, 'reconstruction', 'matches')
+    matches_json_filepath = path.join(matches_dir_path, 'run_matching.json')
+    if path.isdir(matches_dir_path):
+        getLogger().debug(f'converting {matches_dir_path}...')
+        assert keypoints_type is not None
+        matches_output_dir = kapture.io.features.get_matches_fullpath(None, keypoints_type, kapture_dirpath)
+        os.makedirs(matches_output_dir, exist_ok=True)
+
+        # json file
+        if path.isfile(matches_json_filepath):
+            matches_json_output_file = path.join(matches_output_dir, 'run_matching.json')
+            shutil.move(matches_json_filepath, matches_json_output_file)
+
+        # now copy all .matches files
+        matches_filenames = list(populate_files_in_dirpath(matches_dir_path, '.matches'))
+        # cast to list before enumerating (or moved files will be listed multiple times)
+        for matches_filename in matches_filenames:
+            matches_output_file = path.join(matches_output_dir, matches_filename)
+            os.makedirs(path.dirname(matches_output_file), exist_ok=True)
+            shutil.move(path.join(matches_dir_path, matches_filename), matches_output_file)
+            old_matches_dir = path.dirname(path.join(matches_dir_path, matches_filename))
+            if len(os.listdir(old_matches_dir)) == 0:
+                os.removedirs(old_matches_dir)
+
+    # global features
+    global_features_dir_path = path.join(kapture_dirpath, 'reconstruction', 'global_features')
+    global_features_csv_path = path.join(global_features_dir_path, 'global_features.txt')
+    global_features_json_filepath = path.join(global_features_dir_path, 'extract_global_features.json')
+    if path.isdir(global_features_dir_path) and path.isfile(global_features_csv_path):
+        getLogger().debug(f'converting {global_features_dir_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(global_features_csv_path)
+        assert old_version is None or old_version == '1.0'
+        assert keypoints_type is not None
+        name, dtype, dsize = read_old_image_features_csv(global_features_csv_path)
+        os.remove(global_features_csv_path)
+        if global_features_type is None:
+            assert name != ''
+            global_features_type = name
+        global_features = kapture.GlobalFeatures(name, dtype, dsize, global_features_metric_type)
+        global_features_csv_output_path = path.join(kapture_dirpath,
+                                                    kapture.io.csv.FEATURES_CSV_FILENAMES[kapture.GlobalFeatures](
+                                                        global_features_type)
+                                                    )
+        global_features_output_dir = path.dirname(global_features_csv_output_path)
+        kapture.io.csv.global_features_to_file(global_features_csv_output_path, global_features)
+
+        # json file
+        if path.isfile(global_features_json_filepath):
+            global_features_json_output_file = path.join(global_features_output_dir, 'extract_global_features.json')
+            shutil.move(global_features_json_filepath, global_features_json_output_file)
+
+        # now copy all .gfeat files
+        global_features_filenames = list(populate_files_in_dirpath(global_features_dir_path, '.gfeat'))
+        # cast to list before enumerating (or moved files will be listed multiple times)
+        for global_features_filename in global_features_filenames:
+            global_features_output_file = path.join(global_features_output_dir, global_features_filename)
+            os.makedirs(path.dirname(global_features_output_file), exist_ok=True)
+            shutil.move(path.join(global_features_dir_path, global_features_filename), global_features_output_file)
+            old_gfeat_dir = path.dirname(path.join(global_features_dir_path, global_features_filename))
+            if len(os.listdir(old_gfeat_dir)) == 0:
+                os.removedirs(old_gfeat_dir)
+
+    # observations
+    observations_csv_filename = path.join('reconstruction', 'observations.txt')
+    observations_csv_path = path.join(kapture_dirpath, observations_csv_filename)
+    if path.isfile(observations_csv_path):
+        getLogger().debug(f'converting {observations_csv_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(observations_csv_path)
+        assert old_version is None or old_version == '1.0'
+        assert keypoints_type is not None
+        observations = kapture.Observations()
+        with open(observations_csv_path, 'r') as source_file:
+            table = kapture.io.csv.table_from_file(source_file)
+            # point3d_id, [image_path, feature_id]*
+            for points3d_id_str, *pairs in table:
+                points3d_id = int(points3d_id_str)
+                if len(pairs) > 1:
+                    image_paths = pairs[0::2]
+                    keypoints_ids = pairs[1::2]
+                    for image_path, keypoint_id in zip(image_paths, keypoints_ids):
+                        observations.add(points3d_id, keypoints_type, image_path, int(keypoint_id))
+        kapture.io.csv.observations_to_file(observations_csv_path, observations)
+    getLogger().debug('all done!')
diff --git a/kapture_format.adoc b/kapture_format.adoc
index 6692c68..e11a1d0 100644
--- a/kapture_format.adoc
+++ b/kapture_format.adoc
@@ -1,4 +1,4 @@
-= image:assets/kapture_logo.svg["KAPTURE", width=64px] kapture:  data format v1.0
+= image:assets/kapture_logo.svg["KAPTURE", width=64px] kapture:  data format v1.1
 :sectnums:
 :sectnumlevels: 1
 :toc:
@@ -32,26 +32,56 @@ my_dataset                          # Data root path
 │     ├─ query/query001.jpg         # example of image path used in records_camera.txt
 │     └─ ...
 └─ reconstruction/
-   ├─ keypoints/                    # 2D keypoints files
-   │  ├─ keypoints.txt              # type of keypoint
-   │  ├─ map/cam_01/00001.jpg.kpt   # example of keypoints for corresponding image
-   │  ├─ query/query001.jpg.kpt     # example of keypoints for corresponding image
-   │  └─ ...
-   ├─ descriptors/                  # keypoint descriptors files
-   │  ├─ descriptors.txt            # type of descriptor
-   │  ├─ map/cam_01/00001.jpg.desc  # example of descriptors for corresponding image
-   │  ├─ query/query001.jpg.desc    # example of descriptors for corresponding image
-   │  └─ ...
-   ├─ global_features/              # global feature files
-   │  ├─ global_features.txt        # type of global feature
-   │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
-   │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
-   │  └─ ...
+   ├─ keypoints/                       # 2D keypoints files
+   │  ├─ r2d2_WASF-N8_20k              # identify the type of keypoints
+   │  │  ├─ keypoints.txt              # type of keypoint (shape and dtype)
+   │  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
+   │  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
+   │  │  ├─ ...
+   │  ├─ d2_tf                         # identify the type of keypoints
+   │  │  ├─ keypoints.txt              # type of keypoint (shape and dtype)
+   │  │  ├─ keypoints.tar              # instead of regular files, you can use an archive
+   │  │  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
+   │  │  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
+   │  │  │  ├─ ...
+   │  ├─ ...
+   ├─ descriptors/                     # keypoint descriptors files
+   │  ├─ r2d2_WASF-N8_20k              # identify the type of descriptors
+   │  │  ├─ descriptors.txt            # type of descriptor (keypoints type, shape and dtype)
+   │  │  ├─ map/cam_01/00001.jpg.desc  # descriptors for corresponding image (example)
+   │  │  ├─ query/query001.jpg.desc    # descriptors for corresponding image (example)
+   │  │  ├─ ...
+   │  ├─ d2_tf                         # identify the type of descriptors
+   │  │  ├─ descriptors.txt            # type of descriptor
+   │  │  ├─ descriptors.tar            # instead of regular files, you can use an archive
+   │  │  │  ├─ map/cam_01/00001.jpg.desc  # descriptors for corresponding image (example)
+   │  │  │  ├─ query/query001.jpg.desc    # descriptors for corresponding image (example)
+   │  │  │  ├─ ...
+   │  ├─ ...
    ├─ points3d.txt                  # 3D points of the reconstruction
    ├─ observations.txt              # 2D/3D points corespondences
-   └─ matches/                      # matches root path.
-      ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example of matching file.
-      └─ ...
+   ├─ matches/                      # matches files.
+   │  ├─ r2d2_WASF-N8_20k           # identify the type of keypoints that are matched
+   │  │  ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example
+   │  │  ├─  ...
+   │  ├─ d2_tf                      # identify the type of keypoints that are matched
+   │  │  ├─ matches.tar             # instead of regular files, you can use an archive
+   │  │  │  ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example
+   │  │  │  ├─  ...
+   │  ├─ ...
+   └─ global_features/                 # global feature files
+      ├─ AP-GeM-LM18                   # identify the type of global_features
+      │  ├─ global_features.txt        # type of global feature
+      │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
+      │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
+      │  └─ ...
+      ├─ DELG                          # identify the type of global_features
+      │  ├─ global_features.txt        # type of global feature
+      │  ├─ global_features.tar        # instead of regular files, you can use an archive
+      │  │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
+      │  │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
+      │  │  └─ ...
+      ├─ ...
 ----
 
 
@@ -101,6 +131,66 @@ Text files must comply the following:
  - for the reconstruction files, the actual data type is described in the corresponding text file
         (eg. `reconstruction/keypoints/keypoints.txt`)
 
+=== Support for tar files
+
+It is possible to put some of the features inside with a tar.
+To be precise, for every subfolders of `keypoints`, `descriptors`, `global_features` and `matches`, the features/matches files can be stored inside a tar named `keypoints.tar`, `descriptors.tar`, `global_features.tar` or `matches.tar`.
+For example :
+```
+reconstruction/
+├─ keypoints/
+│  ├─ r2d2_WASF-N8_20k              # identify the type of keypoints
+│  │  ├─ keypoints.txt              # type of keypoint (shape and dtype)
+│  │  ├─ map/cam_01/00001.jpg.kpt   # keypoints for corresponding image (example)
+│  │  ├─ query/query001.jpg.kpt     # keypoints for corresponding image (example)
+│  │  ├─ ...
+
+become
+
+reconstruction/
+├─ keypoints/ 
+│  ├─ r2d2_WASF-N8_20k                 # identify the type of keypoints
+│  │  ├─ keypoints.txt                 # type of keypoint (shape and dtype)
+│  │  ├─ keypoints.tar                 # instead of regular files, you can use an archive
+│  │  │  ├─ map/cam_01/00001.jpg.kpt   # inside the tar, filename is the same as above
+│  │  │  ├─ query/query001.jpg.kpt     # inside the tar, filename is the same as above
+│  │  │  ├─ ...
+```
+
+The content of the tar file should be identical to the folder it replaces. 
+Read OR Append operations are supported, you have to chose which. It is recommended to start using tar when all features are already computed.
+The advantage of tarfile compared to normal folders is that it's faster to copy/move and estimate size.
+
+Note that overwriting a file within the tar with result in wasted space (the updated file will be appended to the tar file) so be careful.
+
+The scripts in kapture such as import_colmap_py will never create a tar, they will export features to regular files.
+It is up to the user to tar the features if they so desire.
+
+In order to use the tar files, you will have to open them before loading the kapture data:
+```
+# in read mode:
+keypoints_type = 'r2d2_WASF_N8_20k'
+with get_all_tar_handlers(kapture_root_dir) as tar_handlers:
+   kapture_data = kapture_from_dir(kapture_root_dir, tar_handlers=tar_handlers)
+   images = [image_name for _, _, image_name in kapture.flatten(kapture_data.records_camera)]
+   for image_name in images:
+      # if keypoints are not in a tar, keypoints_path will be a string with full path to the file
+      # if keypoints are in a tar, keypoints_path will be a pair (filename, tar_handler)
+      keypoints_path = get_keypoints_fullpath(keypoints_type, kapture_root_dir, image_name, tar_handlers)
+      keypoints = image_keypoints_from_file(keypoints_path, kapture_data.keypoints[keypoints_type].dtype, kapture_data.keypoints[keypoints_type].dsize)
+
+# keypoints and descriptors in append mode
+with get_all_tar_handlers(kapture_root_dir, mode={kapture.Keypoints: 'a', kapture.Descriptors: 'a'}) as tar_handlers:
+   kapture_data = kapture_from_dir(kapture_root_dir, tar_handlers=tar_handlers)
+   images = [image_name for _, _, image_name in kapture.flatten(kapture_data.records_camera)]
+   for image_name in images:
+      # if keypoints are not in a tar, keypoints_path will be a string with full path to the file
+      # if keypoints are in a tar, keypoints_path will be a pair (filename, tar_handler)
+      keypoints_path = get_keypoints_fullpath(keypoints_type, kapture_root_dir, image_name, tar_handlers)
+      keypoints = np.zeros((0, 128), dtype=np.float64)
+      keypoints = image_keypoints_to_file(keypoints_path, keypoints)
+```
+
 == `├─ sensors/`
 
 This folder contains sensor data. Meaning the acquired data as well as the sensors characteristics.
@@ -644,11 +734,13 @@ The `reconstruction` part of __kapture__ contains the result of processing.
 
 This directory contains image key-points related files.
 
+=== `│ │ ├─ keypoints_type/`
 ==== structure
 
-This directory is organised as follow:
+Each subdirectory correspond to a different type of keypoint.
+The subdirectories are organised as follow:
 
- - `keypoints.txt` files describes the type of key-points,
+ - `keypoints.txt` files describes the type of key-points (shape and dtype),
  - a set of binary `.kpt` files describes key-points of images.
    There is one key-points file per image, and the file tree must
   *strictly follow the same path and naming* as `sensors/records_data/`.
@@ -658,14 +750,21 @@ This directory is organised as follow:
 .reconstruction/keypoints/
 ----
 ├─ reconstruction/
-│  ├─ keypoints/                    # 2D keypoints files
-│  │  ├─ keypoints.txt              # type of keypoint
-│  │  ├─ map/cam_01/00001.jpg.kpt   # example of keypoints for corresponding image
-│  │  ├─ query/query001.jpg.kpt     # example of keypoints for corresponding image
+│  ├─ keypoints/                       # 2D keypoints files
+│  │  ├─ r2d2_WASF-N8_20k
+│  │  │  ├─ keypoints.txt              # type of keypoint
+│  │  │  ├─ map/cam_01/00001.jpg.kpt   # example of keypoints for corresponding image
+│  │  │  ├─ query/query001.jpg.kpt     # example of keypoints for corresponding image
+│  │  │  ├─ ...
+│  │  ├─ d2_tf
+│  │  │  ├─ keypoints.txt              # type of keypoint
+│  │  │  ├─ map/cam_01/00001.jpg.kpt   # example of keypoints for corresponding image
+│  │  │  ├─ query/query001.jpg.kpt     # example of keypoints for corresponding image
+│  │  │  ├─ ...
 │  │  ├─ ...
 ----
 
-=== `│ │ ├─ keypoints.txt`
+=== `│ │ │ ├─ keypoints.txt`
 
 This text file describes the type of key-points.
 
@@ -692,14 +791,14 @@ It may also optionally contains some comments (lines starting with `#`) or blank
 
 ==== example
 
-.reconstruction/keypoints/keypoints.txt
+.reconstruction/keypoints/r2d2_WASF-N8_20k/keypoints.txt
 [source,txt]
 ----
 # name, dtype, dsize
 SIFT, float32, 6
 ----
 
-=== `│ │ ├─ *.kpt`
+=== `│ │ │ ├─ *.kpt`
 
 Contains all key-points of a single image using one line per key-point.
 
@@ -715,7 +814,7 @@ The meaning of those values depends on the key-point type (e.g. scale and orient
 
 ==== example
 
-.reconstruction/keypoints/map/cam_01/image000.jpg.kpt (in binary format)
+.reconstruction/keypoints/r2d2_WASF-N8_20k/map/cam_01/image000.jpg.kpt (in binary format)
 [source,txt]
 ----
 #  x,   y, scale, orient.
@@ -728,11 +827,13 @@ The meaning of those values depends on the key-point type (e.g. scale and orient
 
 This directory contains key-points descriptors related files.
 
+=== `│ │ ├─ descriptors_type/`
 ==== structure
 
-This directory is organised as follow:
+Each subdirectory correspond to a different type of descriptors.
+The subdirectories are organised as follow:
 
-- `descriptors.txt` files describes the type of descriptors,
+- `descriptors.txt` files describes the type of descriptors (keypoints type, shape and dtype),
  - a set of binary `.desc` files describes key-point descriptors of images.
    There is one descriptors file per image, and the file tree must
   *strictly follow the same path and naming* as `sensors/records_data/`.
@@ -742,14 +843,21 @@ This directory is organised as follow:
 .reconstruction/descriptors/
 ----
 ├─ reconstruction/
-│  ├─ descriptors/                  # keypoint descriptors files
-│  │  ├─ descriptors.txt            # type of descriptor
-│  │  ├─ map/cam_01/00001.jpg.desc  # example of descriptors for corresponding image
-│  │  ├─ query/query001.jpg.desc    # example of descriptors for corresponding image
+│  ├─ descriptors/                     # keypoint descriptors files
+│  │  ├─ r2d2_WASF-N8_20k
+│  │  │  ├─ descriptors.txt            # type of descriptor
+│  │  │  ├─ map/cam_01/00001.jpg.desc  # example of descriptors for corresponding image
+│  │  │  ├─ query/query001.jpg.desc    # example of descriptors for corresponding image
+│  │  │  ├─ ...
+│  │  ├─ d2_tf
+│  │  │  ├─ descriptors.txt            # type of descriptor
+│  │  │  ├─ map/cam_01/00001.jpg.desc  # example of descriptors for corresponding image
+│  │  │  ├─ query/query001.jpg.desc    # example of descriptors for corresponding image
+│  │  │  ├─ ...
 │  │  ├─ ...
 ----
 
-=== `│ │ ├─ descriptors.txt`
+=== `│ │ │ ├─ descriptors.txt`
 
 This text file describes the type of descriptors.
 
@@ -759,31 +867,33 @@ The file contains a single line, following this syntax:
 
 [source,txt]
 ----
-name, dtype, dsize
+name, dtype, dsize, keypoints_type, metric_type
 ----
 
 with:
 
 [cols=">1m,^1e,4",options="header"]
 |===
-|            field | type   | description
-|             name | string | The name of the descriptor, for information only.
-|            dtype | string | type of data. Can be native python type or numpy type (without the numpy prefix).
-|            dsize | int    | size of a descriptor.
+|            field          | type   | description
+|             name          | string | The name of the descriptor, for information only.
+|            dtype          | string | type of data. Can be native python type or numpy type (without the numpy prefix).
+|            dsize          | int    | size of a descriptor.
+|            keypoints_type | string | The name of the directory which contains the keypoints that are being described.
+|            metric_type    | string | The name of the metric used to compare the descriptors, for information only.
 |===
 
 It may also optionally contains some comments (lines starting with `#`) or blank lines.
 
 ==== example
 
-`reconstruction/descriptors/descriptors.txt`:
+`reconstruction/descriptors/r2d2_WASF-N8_20k/descriptors.txt`:
 [source,txt]
 ----
-# name, dtype, dsize
-SIFT, uint8, 128
+# name, dtype, dsize, keypoints_type, metric_type
+SIFT, uint8, 128, r2d2_WASF-N8_20k, L2
 ----
 
-=== `│ │ ├─ *.desc`
+=== `│ │ │ ├─ *.desc`
 
 Contains all key-points descriptors of a single image using one line per descriptor.
 Descriptors must be stored in same order than their corresponding key-points.
@@ -798,7 +908,7 @@ Descriptors must be stored in same order than their corresponding key-points (`.
 
 ==== example
 
-.reconstruction/descriptors/map/cam_01/00001.jpg.desc (in binary format)
+.reconstruction/descriptors/r2d2_WASF-N8_20k/map/cam_01/00001.jpg.desc (in binary format)
 [source,txt]
 ----
 [5.9, 10.7, ...,  0.6, 30.0,
@@ -810,9 +920,11 @@ Descriptors must be stored in same order than their corresponding key-points (`.
 
 This directory contains global image features related files.
 
+=== `│ │ ├─ global_features_type/`
 ==== structure
 
-This directory is organised as follow:
+Each subdirectory correspond to a different type of keypoint.
+The subdirectories are organised as follow:
 
  - `global_features.txt` files describes the type of global features,
  - a set of binary `.gfeat` files describes global feature of images.
@@ -824,14 +936,21 @@ This directory is organised as follow:
 .reconstruction/global_features/
 ----
 ├─ reconstruction/
-│  ├─ global_features/              # global feature files
-│  │  ├─ global_features.txt        # type of global feature
-│  │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
-│  │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
+│  ├─ global_features/                 # global feature files
+│  │  ├─ AP-GeM-LM18
+│  │  │  ├─ global_features.txt        # type of global feature
+│  │  │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
+│  │  │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
+│  │  │  └─ ...
+│  │  ├─ DELG
+│  │  │  ├─ global_features.txt        # type of global feature
+│  │  │  ├─ map/cam_01/00001.jpg.gfeat # example of global feature for corresponding image
+│  │  │  ├─ query/query001.jpg.gfeat   # example of global feature for corresponding image
+│  │  │  └─ ...
 │  │  ├─ ...
 ----
 
-=== `│ │ ├─ global_features.txt`
+=== `│ │ │ ├─ global_features.txt`
 
 This text file describes the type of global features.
 
@@ -841,32 +960,33 @@ The file contains a single line, following this syntax:
 
 [source,txt]
 ----
-name, dtype, dsize
+name, dtype, dsize, metric_type
 ----
 
 with:
 
 [cols=">1m,^1e,4",options="header"]
 |===
-|            field | type   | description
-|             name | string | The name of the global feature, for information only.
-|            dtype | string | type of data. Can be native python type or numpy type (without the numpy prefix).
-|            dsize | int    | length of a global feature.
+|            field       | type   | description
+|             name       | string | The name of the global feature, for information only.
+|            dtype       | string | type of data. Can be native python type or numpy type (without the numpy prefix).
+|            dsize       | int    | length of a global feature.
+|            metric_type | string | The name of the metric used to compare the global features, for information only.
 |===
 
 It may also optionally contains some comments (lines starting with `#`) or blank lines.
 
 ==== example
 
-.reconstruction/global_features/global_features.txt
+.reconstruction/global_features/AP-GeM-LM18/global_features.txt
 [source,txt]
 ----
-# Deep Image Retrieval - See: https://github.com/almazan/deep-image-retrieval
-# name, dtype, dsize
-dirtorch, float32, 2048
+# Deep Image Retrieval - See: https://github.com/naver/deep-image-retrieval
+# name, dtype, dsize, metric_type
+dirtorch, float32, 2048, L2
 ----
 
-=== `│ │ ├─ *.gfeat`
+=== `│ │ │ ├─ *.gfeat`
 
 Contains all global features of a single image.
 
@@ -878,7 +998,7 @@ The length of the array is specified by `dsize` in `global_features.txt`.
 
 ==== example
 
-.reconstruction/global_features/map/cam_01/image01.jpg.gfeat (in binary format)
+.reconstruction/global_features/AP-GeM-LM18/map/cam_01/image01.jpg.gfeat (in binary format)
 [source,txt]
 ----
 [100, 100, .... 0, 0]
@@ -916,19 +1036,20 @@ Where:
 
 === `│ ├─ observations.txt`
 
-This file contains all 3D points observations, using one line per 3D-point.
+This file contains all 3D points observations, using one line per pair (3D-point, keypoints_type).
 
 ==== syntax
 
 [source,txt]
 ----
-point3d_id, [image_path, feature_id]*
+point3d_id, keypoints_type, [image_path, feature_id]*
 ----
 
 [cols=">1m,^1e,4",options="header"]
 |===
 |            field | type   | description
 |       point3d_id | uint32 | Line number (0-based index) of the 3D point in the `points3d.txt` file.
+|   keypoints_type | string | The name of the directory that contains the keypoints that the feature_id refers to
 |       image_path | path   | Path to the image file. The path is relative to `sensors/records_data/`.
 |       feature_id | uint32 | Index (0-based) of the feature in the corresponding keypoints (.kpt) file.
 |===
@@ -938,9 +1059,11 @@ point3d_id, [image_path, feature_id]*
 .reconstruction/observations.txt
 [source,txt]
 ----
-# point3d_id, [image_path, feature_id]*
-0, cam_01/00002.jpg, 152, cam_01/00005.jpg, 1564
-1, cam_01/00002.jpg, 4551, cam_02/00003.jpg, 5415
+# point3d_id, keypoints_type, [image_path, feature_id]*
+0, r2d2_WASF-N8_20k, cam_01/00002.jpg, 152, cam_01/00005.jpg, 1564
+0, d2_tf, cam_01/00002.jpg, 445, cam_01/00005.jpg, 2543
+1, r2d2_WASF-N8_20k, cam_01/00002.jpg, 4551, cam_02/00003.jpg, 5415
+1, d2_tf, cam_01/00002.jpg, 457, cam_02/00003.jpg, 3568
 ----
 
 === `│ ├─ matches/`
@@ -950,9 +1073,11 @@ This directory contains all 2D matches of all images, using one file per *image
 Note that matches are different than observations, since a match
 has not necessarily a 3-D consistency, and hence 3-D point.
 
+=== `│ │ ├─ keypoints_type/`
+
 ==== syntax
 
-TO BE COMPLETED
+The `.matches` files are binary dump of numpy array of type `np.float64` on 3 columns, where each row is a feature matching, first column is index of feature in first image, second column is the index of the feature in the second image, 3rd column encodes a quality score.
 
 ==== example
 
@@ -972,11 +1097,35 @@ TO BE COMPLETED
             │     └─ 00002.jpg.matches
             └─ query/
                └─ query001.jpg.matches
+   └─ matches/                      # matches files.
+      ├─ r2d2_WASF-N8_20k
+      │  └─ cam_01/
+      │     └─ 00001.jpg.overlapping/
+      │       ├─ map/
+      │       │  ├─ cam_01/
+      │       │  │  ├─ 00002.jpg.matches
+      │       │  │  └─ 00003.jpg.matches
+      │       │  └─ cam_02/
+      │       │     ├─ 00001.jpg.matches
+      │       │     └─ 00002.jpg.matches
+      │       └─ query/
+      │          └─ query001.jpg.matches
+      ├─ d2_tf
+      │     └─ 00001.jpg.overlapping/
+      │       ├─ map/
+      │       │  ├─ cam_01/
+      │       │  │  ├─ 00002.jpg.matches
+      │       │  │  └─ 00003.jpg.matches
+      │       │  └─ cam_02/
+      │       │     ├─ 00001.jpg.matches
+      │       │     └─ 00002.jpg.matches
+      │       └─ query/
+      │          └─ query001.jpg.matches
+      ├─ ...
 ...
 ----
 
-
-=== `│ | ├─ \*.overlapping/*.matches`
+=== `│ │ │ ├─ \*.overlapping/*.matches`
 
 ==== syntax
 
@@ -1003,10 +1152,31 @@ NOTE: by convention `image_path1 < image_path2` (with `<` lexicographic comparat
 .cam1/img000.jpg.overlapping/cam1/img001.jpg.matches (binary dump)
 [source,txt]
 ----
-TO BE COMPLETED
+[17.0, 123.0, 0.7894, .... 1678.0, 3540.0, 0.3214]
 ----
 
-The `.matches` files are binary dump of numpy array of type `np.float64` on 3 columns, where each row is a feature matching, first column is index of feature in first image, second column is the index of the feature in the second image, 3rd column encodes a quality score.
+== Pairsfile
+
+Kapture and Kapture localization can read text files to select/read only relevant matches.
+They are csv files that follow the same rules as the other text files in kapture.
+
+[source,txt]
+----
+query_image, map_image, score
+----
+
+with:
+
+[cols=">1m,^1e,4",options="header"]
+|===
+|            field | type   | description
+|      query_image | string | Path to the image file. The path is relative to `sensors/records_data/`.
+|        map_image | string | Path to the image file. The path is relative to `sensors/records_data/`.
+|            score | float  | Pairing score, depends on which method you use to pair the images, the higher the number the better the pairing.
+|===
+
+It may also optionally contains some comments (lines starting with `#`) or blank lines.
+
 
 == Camera axis
 
@@ -1060,3 +1230,7 @@ pose_kapture = kapture.PoseTransform.compose([matrix_ros_to_kapture, pose_ros, m
 ==== 1.0
 
 Initial version of the format
+
+==== 1.1
+
+Multiple feature support in observations + tarfile support
diff --git a/samples/7scenes/kapture/stairs/both/sensors/records_camera.txt b/samples/7scenes/kapture/stairs/both/sensors/records_camera.txt
index 53bc5de..1c07c5b 100644
--- a/samples/7scenes/kapture/stairs/both/sensors/records_camera.txt
+++ b/samples/7scenes/kapture/stairs/both/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, kinect_rgb, seq-01/frame-000000.color.jpg
 1, kinect_rgb, seq-01/frame-000001.color.jpg
diff --git a/samples/7scenes/kapture/stairs/both/sensors/records_depth.txt b/samples/7scenes/kapture/stairs/both/sensors/records_depth.txt
index de7ea62..2964f83 100644
--- a/samples/7scenes/kapture/stairs/both/sensors/records_depth.txt
+++ b/samples/7scenes/kapture/stairs/both/sensors/records_depth.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, depth_map_path
 0, kinect_depth, seq-01/frame-000000.depth
 0, kinect_depth_reg, seq-01/frame-000000.depth.reg
diff --git a/samples/7scenes/kapture/stairs/both/sensors/rigs.txt b/samples/7scenes/kapture/stairs/both/sensors/rigs.txt
index 3333ebc..fb4afb9 100644
--- a/samples/7scenes/kapture/stairs/both/sensors/rigs.txt
+++ b/samples/7scenes/kapture/stairs/both/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 kinect, kinect_rgb, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
 kinect, kinect_depth_reg, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
diff --git a/samples/7scenes/kapture/stairs/both/sensors/sensors.txt b/samples/7scenes/kapture/stairs/both/sensors/sensors.txt
index ddc4344..04fde05 100644
--- a/samples/7scenes/kapture/stairs/both/sensors/sensors.txt
+++ b/samples/7scenes/kapture/stairs/both/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 kinect_rgb, kinect_rgb, camera, SIMPLE_PINHOLE, 640, 480, 525, 320, 240
 kinect_depth, kinect_depth, depth, SIMPLE_PINHOLE, 640, 480, 585, 320, 240
diff --git a/samples/7scenes/kapture/stairs/both/sensors/trajectories.txt b/samples/7scenes/kapture/stairs/both/sensors/trajectories.txt
index bcaba51..8a6d3d8 100644
--- a/samples/7scenes/kapture/stairs/both/sensors/trajectories.txt
+++ b/samples/7scenes/kapture/stairs/both/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, kinect, 0.9665401515509139, 0.18685280880272245, -0.13466004384707828, -0.11292845466742372, 1.4652781541217295, 0.031529801989331294, 0.5687254320518813
        1, kinect, 0.966589056988121, 0.18692042310929569, -0.13435986392887625, -0.112755387013086, 1.465352943503805, 0.031223161486779567, 0.5677286745629248
diff --git a/samples/7scenes/kapture/stairs/mapping/sensors/records_camera.txt b/samples/7scenes/kapture/stairs/mapping/sensors/records_camera.txt
index e9b8c94..e8e00ec 100644
--- a/samples/7scenes/kapture/stairs/mapping/sensors/records_camera.txt
+++ b/samples/7scenes/kapture/stairs/mapping/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 3, kinect_rgb, seq-02/frame-000000.color.jpg
 4, kinect_rgb, seq-02/frame-000001.color.jpg
diff --git a/samples/7scenes/kapture/stairs/mapping/sensors/records_depth.txt b/samples/7scenes/kapture/stairs/mapping/sensors/records_depth.txt
index 1a0283a..b272f2e 100644
--- a/samples/7scenes/kapture/stairs/mapping/sensors/records_depth.txt
+++ b/samples/7scenes/kapture/stairs/mapping/sensors/records_depth.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, depth_map_path
 3, kinect_depth, seq-02/frame-000000.depth
 3, kinect_depth_reg, seq-02/frame-000000.depth.reg
diff --git a/samples/7scenes/kapture/stairs/mapping/sensors/rigs.txt b/samples/7scenes/kapture/stairs/mapping/sensors/rigs.txt
index 3333ebc..fb4afb9 100644
--- a/samples/7scenes/kapture/stairs/mapping/sensors/rigs.txt
+++ b/samples/7scenes/kapture/stairs/mapping/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 kinect, kinect_rgb, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
 kinect, kinect_depth_reg, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
diff --git a/samples/7scenes/kapture/stairs/mapping/sensors/sensors.txt b/samples/7scenes/kapture/stairs/mapping/sensors/sensors.txt
index ddc4344..04fde05 100644
--- a/samples/7scenes/kapture/stairs/mapping/sensors/sensors.txt
+++ b/samples/7scenes/kapture/stairs/mapping/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 kinect_rgb, kinect_rgb, camera, SIMPLE_PINHOLE, 640, 480, 525, 320, 240
 kinect_depth, kinect_depth, depth, SIMPLE_PINHOLE, 640, 480, 585, 320, 240
diff --git a/samples/7scenes/kapture/stairs/mapping/sensors/trajectories.txt b/samples/7scenes/kapture/stairs/mapping/sensors/trajectories.txt
index be066e1..715c15b 100644
--- a/samples/7scenes/kapture/stairs/mapping/sensors/trajectories.txt
+++ b/samples/7scenes/kapture/stairs/mapping/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        3, kinect, -0.929722647952211, -0.24675440440192828, -0.2324044325538157, -0.14393137782400894, -0.00503863730971317, 0.6972231699126821, 0.5502656723624622
        4, kinect, -0.9299781651923248, -0.24612075890444146, -0.23247393881782705, -0.14325170879380242, -0.00445938636986018, 0.6967736594207402, 0.5495799502873664
diff --git a/samples/7scenes/kapture/stairs/query/sensors/records_camera.txt b/samples/7scenes/kapture/stairs/query/sensors/records_camera.txt
index fb8cfd4..79a1e24 100644
--- a/samples/7scenes/kapture/stairs/query/sensors/records_camera.txt
+++ b/samples/7scenes/kapture/stairs/query/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, kinect_rgb, seq-01/frame-000000.color.jpg
 1, kinect_rgb, seq-01/frame-000001.color.jpg
diff --git a/samples/7scenes/kapture/stairs/query/sensors/records_depth.txt b/samples/7scenes/kapture/stairs/query/sensors/records_depth.txt
index 2656247..078de97 100644
--- a/samples/7scenes/kapture/stairs/query/sensors/records_depth.txt
+++ b/samples/7scenes/kapture/stairs/query/sensors/records_depth.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, depth_map_path
 0, kinect_depth, seq-01/frame-000000.depth
 0, kinect_depth_reg, seq-01/frame-000000.depth.reg
diff --git a/samples/7scenes/kapture/stairs/query/sensors/rigs.txt b/samples/7scenes/kapture/stairs/query/sensors/rigs.txt
index 3333ebc..fb4afb9 100644
--- a/samples/7scenes/kapture/stairs/query/sensors/rigs.txt
+++ b/samples/7scenes/kapture/stairs/query/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 kinect, kinect_rgb, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
 kinect, kinect_depth_reg, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
diff --git a/samples/7scenes/kapture/stairs/query/sensors/sensors.txt b/samples/7scenes/kapture/stairs/query/sensors/sensors.txt
index ddc4344..04fde05 100644
--- a/samples/7scenes/kapture/stairs/query/sensors/sensors.txt
+++ b/samples/7scenes/kapture/stairs/query/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 kinect_rgb, kinect_rgb, camera, SIMPLE_PINHOLE, 640, 480, 525, 320, 240
 kinect_depth, kinect_depth, depth, SIMPLE_PINHOLE, 640, 480, 585, 320, 240
diff --git a/samples/7scenes/kapture/stairs/query/sensors/trajectories.txt b/samples/7scenes/kapture/stairs/query/sensors/trajectories.txt
index 01aec7c..8ecd735 100644
--- a/samples/7scenes/kapture/stairs/query/sensors/trajectories.txt
+++ b/samples/7scenes/kapture/stairs/query/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, kinect, 0.9665401515509139, 0.18685280880272245, -0.13466004384707828, -0.11292845466742372, 1.4652781541217295, 0.031529801989331294, 0.5687254320518813
        1, kinect, 0.966589056988121, 0.18692042310929569, -0.13435986392887625, -0.112755387013086, 1.465352943503805, 0.031223161486779567, 0.5677286745629248
diff --git a/samples/7scenes/kapture/stairs/seq-01/sensors/records_camera.txt b/samples/7scenes/kapture/stairs/seq-01/sensors/records_camera.txt
index dfb0fbc..6e41ade 100644
--- a/samples/7scenes/kapture/stairs/seq-01/sensors/records_camera.txt
+++ b/samples/7scenes/kapture/stairs/seq-01/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, kinect_rgb, frame-000000.color.jpg
 1, kinect_rgb, frame-000001.color.jpg
diff --git a/samples/7scenes/kapture/stairs/seq-01/sensors/records_depth.txt b/samples/7scenes/kapture/stairs/seq-01/sensors/records_depth.txt
index 6bf6fa2..905bb4e 100644
--- a/samples/7scenes/kapture/stairs/seq-01/sensors/records_depth.txt
+++ b/samples/7scenes/kapture/stairs/seq-01/sensors/records_depth.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, depth_map_path
 0, kinect_depth, seq-01/frame-000000.depth
 0, kinect_depth_reg, seq-01/frame-000000.depth.reg
diff --git a/samples/7scenes/kapture/stairs/seq-01/sensors/rigs.txt b/samples/7scenes/kapture/stairs/seq-01/sensors/rigs.txt
index 3333ebc..fb4afb9 100644
--- a/samples/7scenes/kapture/stairs/seq-01/sensors/rigs.txt
+++ b/samples/7scenes/kapture/stairs/seq-01/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 kinect, kinect_rgb, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
 kinect, kinect_depth_reg, -0.9999829690719851, -0.004080640735846227, 0.00394659107519435, 0.0013543840101732576, -0.025558943178152542, 0.00010109636268061706, 0.002031832172948704
diff --git a/samples/7scenes/kapture/stairs/seq-01/sensors/sensors.txt b/samples/7scenes/kapture/stairs/seq-01/sensors/sensors.txt
index ddc4344..04fde05 100644
--- a/samples/7scenes/kapture/stairs/seq-01/sensors/sensors.txt
+++ b/samples/7scenes/kapture/stairs/seq-01/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 kinect_rgb, kinect_rgb, camera, SIMPLE_PINHOLE, 640, 480, 525, 320, 240
 kinect_depth, kinect_depth, depth, SIMPLE_PINHOLE, 640, 480, 585, 320, 240
diff --git a/samples/7scenes/kapture/stairs/seq-01/sensors/trajectories.txt b/samples/7scenes/kapture/stairs/seq-01/sensors/trajectories.txt
index f0b3d59..740ea3c 100644
--- a/samples/7scenes/kapture/stairs/seq-01/sensors/trajectories.txt
+++ b/samples/7scenes/kapture/stairs/seq-01/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, kinect, 0.9665401515509139, 0.18685280880272245, -0.13466004384707828, -0.11292845466742372, 1.4652781541217295, 0.031529801989331294, 0.5687254320518813
        1, kinect, 0.966589056988121, 0.18692042310929569, -0.13435986392887625, -0.112755387013086, 1.465352943503805, 0.031223161486779567, 0.5677286745629248
diff --git a/samples/Aachen-Day-Night/kapture/query/sensors/records_camera.txt b/samples/Aachen-Day-Night/kapture/query/sensors/records_camera.txt
index 7d9c5f9..9dd062d 100644
--- a/samples/Aachen-Day-Night/kapture/query/sensors/records_camera.txt
+++ b/samples/Aachen-Day-Night/kapture/query/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, sensor0, query/day/nexus4/IMG_20140520_182846.jpg
 1, sensor1, query/day/nexus4/IMG_20140520_211432.jpg
diff --git a/samples/Aachen-Day-Night/kapture/query/sensors/sensors.txt b/samples/Aachen-Day-Night/kapture/query/sensors/sensors.txt
index 55b5184..a7701ea 100644
--- a/samples/Aachen-Day-Night/kapture/query/sensors/sensors.txt
+++ b/samples/Aachen-Day-Night/kapture/query/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_device_id, name, sensor_type, [sensor_params]+
 sensor0, , camera, SIMPLE_RADIAL, 1600, 1200, 1469.2, 800, 600, -0.0353019
 sensor1, , camera, SIMPLE_RADIAL, 1600, 1200, 1469.2, 800, 600, -0.0353019
diff --git a/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/db/1045.jpg.kpt b/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/db/1045.jpg.kpt
similarity index 100%
rename from samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/db/1045.jpg.kpt
rename to samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/db/1045.jpg.kpt
diff --git a/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/db/1135.jpg.kpt b/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/db/1135.jpg.kpt
similarity index 100%
rename from samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/db/1135.jpg.kpt
rename to samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/db/1135.jpg.kpt
diff --git a/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/db/4446.jpg.kpt b/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/db/4446.jpg.kpt
similarity index 100%
rename from samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/db/4446.jpg.kpt
rename to samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/db/4446.jpg.kpt
diff --git a/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/keypoints.txt b/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/keypoints.txt
similarity index 63%
rename from samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/keypoints.txt
rename to samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/keypoints.txt
index ccc04ff..478dd2c 100644
--- a/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/keypoints.txt
+++ b/samples/Aachen-Day-Night/kapture/training/reconstruction/keypoints/sift/keypoints.txt
@@ -1,3 +1,3 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # name, dtype, dsize
 sift, float32, 2
diff --git a/samples/Aachen-Day-Night/kapture/training/reconstruction/observations.txt b/samples/Aachen-Day-Night/kapture/training/reconstruction/observations.txt
index aef0d96..7a31ff4 100644
--- a/samples/Aachen-Day-Night/kapture/training/reconstruction/observations.txt
+++ b/samples/Aachen-Day-Night/kapture/training/reconstruction/observations.txt
@@ -1,7 +1,7 @@
-# kapture format: 1.0
-# point3d_id, [image_path, feature_id]*
-0, db/4446.jpg, 0, db/1045.jpg, 0, db/1045.jpg, 1, db/1045.jpg, 2
-1, db/4446.jpg, 1, db/4446.jpg, 2, db/1045.jpg, 3, db/1045.jpg, 4
-2, db/1045.jpg, 5, db/4446.jpg, 3, db/1045.jpg, 6
-3, db/1135.jpg, 0, db/1135.jpg, 1, db/1135.jpg, 2
-4, db/1135.jpg, 3, db/1135.jpg, 4, db/1135.jpg, 5, db/1135.jpg, 6, db/1135.jpg, 7, db/1135.jpg, 8, db/1135.jpg, 9, db/1135.jpg, 10, db/1135.jpg, 11, db/1135.jpg, 12, db/1135.jpg, 13, db/1135.jpg, 14, db/1135.jpg, 15
+# kapture format: 1.1
+# point3d_id, keypoints_type, [image_path, feature_id]*
+0, sift, db/4446.jpg, 0, db/1045.jpg, 0, db/1045.jpg, 1, db/1045.jpg, 2
+1, sift, db/4446.jpg, 1, db/4446.jpg, 2, db/1045.jpg, 3, db/1045.jpg, 4
+2, sift, db/1045.jpg, 5, db/4446.jpg, 3, db/1045.jpg, 6
+3, sift, db/1135.jpg, 0, db/1135.jpg, 1, db/1135.jpg, 2
+4, sift, db/1135.jpg, 3, db/1135.jpg, 4, db/1135.jpg, 5, db/1135.jpg, 6, db/1135.jpg, 7, db/1135.jpg, 8, db/1135.jpg, 9, db/1135.jpg, 10, db/1135.jpg, 11, db/1135.jpg, 12, db/1135.jpg, 13, db/1135.jpg, 14, db/1135.jpg, 15
diff --git a/samples/Aachen-Day-Night/kapture/training/reconstruction/points3d.txt b/samples/Aachen-Day-Night/kapture/training/reconstruction/points3d.txt
index b15b49b..f83ba37 100644
--- a/samples/Aachen-Day-Night/kapture/training/reconstruction/points3d.txt
+++ b/samples/Aachen-Day-Night/kapture/training/reconstruction/points3d.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # X, Y, Z, R, G, B
 7.696069999999999709e+02,1.462410000000000032e+01,1.972619999999999862e+01,6.400000000000000000e+01,5.700000000000000000e+01,5.100000000000000000e+01
 6.508020000000000209e+02,-2.786859999999999893e+00,-2.870179999999999723e+02,8.700000000000000000e+01,8.700000000000000000e+01,8.700000000000000000e+01
diff --git a/samples/Aachen-Day-Night/kapture/training/sensors/records_camera.txt b/samples/Aachen-Day-Night/kapture/training/sensors/records_camera.txt
index cecfaf8..4b07880 100644
--- a/samples/Aachen-Day-Night/kapture/training/sensors/records_camera.txt
+++ b/samples/Aachen-Day-Night/kapture/training/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, sensor0, db/1045.jpg
 1, sensor1, db/4446.jpg
diff --git a/samples/Aachen-Day-Night/kapture/training/sensors/sensors.txt b/samples/Aachen-Day-Night/kapture/training/sensors/sensors.txt
index 984bed7..5ab85b8 100644
--- a/samples/Aachen-Day-Night/kapture/training/sensors/sensors.txt
+++ b/samples/Aachen-Day-Night/kapture/training/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_device_id, name, sensor_type, [sensor_params]+
 sensor0, , camera, SIMPLE_RADIAL, 1600, 1067, 1084.59, 800, 533.5, -0.0810989
 sensor1, , camera, SIMPLE_RADIAL, 1200, 1600, 1556.98, 600, 800, -0.086426
diff --git a/samples/Aachen-Day-Night/kapture/training/sensors/trajectories.txt b/samples/Aachen-Day-Night/kapture/training/sensors/trajectories.txt
index 40202ef..ea623f5 100644
--- a/samples/Aachen-Day-Night/kapture/training/sensors/trajectories.txt
+++ b/samples/Aachen-Day-Night/kapture/training/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
 0, sensor0, -0.0305504, -0.212047, 0.12058, 0.969311, 652.833568325199, 84.70595670766824, 336.3358355014467
 1, sensor1, 0.118007, 0.976976, -0.0385554, -0.173511, -733.8037357565651, 78.4161758381636, 241.29494605063303
diff --git a/samples/berlin/kapture/reconstruction/descriptors/01.jpg.desc b/samples/berlin/kapture/reconstruction/descriptors/HOG/01.jpg.desc
similarity index 100%
rename from samples/berlin/kapture/reconstruction/descriptors/01.jpg.desc
rename to samples/berlin/kapture/reconstruction/descriptors/HOG/01.jpg.desc
diff --git a/samples/berlin/kapture/reconstruction/descriptors/02.jpg.desc b/samples/berlin/kapture/reconstruction/descriptors/HOG/02.jpg.desc
similarity index 100%
rename from samples/berlin/kapture/reconstruction/descriptors/02.jpg.desc
rename to samples/berlin/kapture/reconstruction/descriptors/HOG/02.jpg.desc
diff --git a/samples/berlin/kapture/reconstruction/descriptors/03.jpg.desc b/samples/berlin/kapture/reconstruction/descriptors/HOG/03.jpg.desc
similarity index 100%
rename from samples/berlin/kapture/reconstruction/descriptors/03.jpg.desc
rename to samples/berlin/kapture/reconstruction/descriptors/HOG/03.jpg.desc
diff --git a/samples/berlin/kapture/reconstruction/descriptors/HOG/descriptors.txt b/samples/berlin/kapture/reconstruction/descriptors/HOG/descriptors.txt
new file mode 100644
index 0000000..dd2a008
--- /dev/null
+++ b/samples/berlin/kapture/reconstruction/descriptors/HOG/descriptors.txt
@@ -0,0 +1,3 @@
+# kapture format: 1.1
+# name, dtype, dsize, keypoints_type, metric_type
+HOG, uint8, 128, HessianAffine, L2
diff --git a/samples/berlin/kapture/reconstruction/descriptors/descriptors.txt b/samples/berlin/kapture/reconstruction/descriptors/descriptors.txt
deleted file mode 100644
index afc6c73..0000000
--- a/samples/berlin/kapture/reconstruction/descriptors/descriptors.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# kapture format: 1.0
-# name, dtype, dsize
-HOG, uint8, 128
diff --git a/samples/berlin/kapture/reconstruction/keypoints/01.jpg.kpt b/samples/berlin/kapture/reconstruction/keypoints/HessianAffine/01.jpg.kpt
similarity index 100%
rename from samples/berlin/kapture/reconstruction/keypoints/01.jpg.kpt
rename to samples/berlin/kapture/reconstruction/keypoints/HessianAffine/01.jpg.kpt
diff --git a/samples/berlin/kapture/reconstruction/keypoints/02.jpg.kpt b/samples/berlin/kapture/reconstruction/keypoints/HessianAffine/02.jpg.kpt
similarity index 100%
rename from samples/berlin/kapture/reconstruction/keypoints/02.jpg.kpt
rename to samples/berlin/kapture/reconstruction/keypoints/HessianAffine/02.jpg.kpt
diff --git a/samples/berlin/kapture/reconstruction/keypoints/03.jpg.kpt b/samples/berlin/kapture/reconstruction/keypoints/HessianAffine/03.jpg.kpt
similarity index 100%
rename from samples/berlin/kapture/reconstruction/keypoints/03.jpg.kpt
rename to samples/berlin/kapture/reconstruction/keypoints/HessianAffine/03.jpg.kpt
diff --git a/samples/berlin/kapture/reconstruction/keypoints/keypoints.txt b/samples/berlin/kapture/reconstruction/keypoints/HessianAffine/keypoints.txt
similarity index 68%
rename from samples/berlin/kapture/reconstruction/keypoints/keypoints.txt
rename to samples/berlin/kapture/reconstruction/keypoints/HessianAffine/keypoints.txt
index 980dc7c..2ee4340 100644
--- a/samples/berlin/kapture/reconstruction/keypoints/keypoints.txt
+++ b/samples/berlin/kapture/reconstruction/keypoints/HessianAffine/keypoints.txt
@@ -1,3 +1,3 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # name, dtype, dsize
 HessianAffine, float32, 4
diff --git a/samples/berlin/kapture/reconstruction/matches/01.jpg.overlapping/02.jpg.matches b/samples/berlin/kapture/reconstruction/matches/HessianAffine/01.jpg.overlapping/02.jpg.matches
similarity index 100%
rename from samples/berlin/kapture/reconstruction/matches/01.jpg.overlapping/02.jpg.matches
rename to samples/berlin/kapture/reconstruction/matches/HessianAffine/01.jpg.overlapping/02.jpg.matches
diff --git a/samples/berlin/kapture/reconstruction/matches/01.jpg.overlapping/03.jpg.matches b/samples/berlin/kapture/reconstruction/matches/HessianAffine/01.jpg.overlapping/03.jpg.matches
similarity index 100%
rename from samples/berlin/kapture/reconstruction/matches/01.jpg.overlapping/03.jpg.matches
rename to samples/berlin/kapture/reconstruction/matches/HessianAffine/01.jpg.overlapping/03.jpg.matches
diff --git a/samples/berlin/kapture/reconstruction/matches/03.jpg.overlapping/02.jpg.matches b/samples/berlin/kapture/reconstruction/matches/HessianAffine/03.jpg.overlapping/02.jpg.matches
similarity index 100%
rename from samples/berlin/kapture/reconstruction/matches/03.jpg.overlapping/02.jpg.matches
rename to samples/berlin/kapture/reconstruction/matches/HessianAffine/03.jpg.overlapping/02.jpg.matches
diff --git a/samples/berlin/kapture/reconstruction/points3d.txt b/samples/berlin/kapture/reconstruction/points3d.txt
index 008f619..fa7a82c 100644
--- a/samples/berlin/kapture/reconstruction/points3d.txt
+++ b/samples/berlin/kapture/reconstruction/points3d.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # X, Y, Z, R, G, B
 2.546236239871685569e+01,2.186242231865669794e+01,1.707884565980579339e+01,1.900000000000000000e+01,1.500000000000000000e+01,1.400000000000000000e+01
 2.539937354468105468e+01,2.119712731745250878e+01,8.217488996194116879e+00,1.480000000000000000e+02,1.400000000000000000e+02,1.310000000000000000e+02
diff --git a/samples/berlin/kapture/sensors/records_camera.txt b/samples/berlin/kapture/sensors/records_camera.txt
index d9afa36..19627cb 100644
--- a/samples/berlin/kapture/sensors/records_camera.txt
+++ b/samples/berlin/kapture/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 01.jpg
 1, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 02.jpg
diff --git a/samples/berlin/kapture/sensors/records_gnss.txt b/samples/berlin/kapture/sensors/records_gnss.txt
index d0345b6..2f5e6eb 100644
--- a/samples/berlin/kapture/sensors/records_gnss.txt
+++ b/samples/berlin/kapture/sensors/records_gnss.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, x, y, z, utc, dop
 0, GPS_v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 13.400294444444445, 52.51891666666666, 27.0, 0, 5.0
 1, GPS_v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 13.40038888888889, 52.518924999999996, 30.0, 0, 5.0
diff --git a/samples/berlin/kapture/sensors/sensors.txt b/samples/berlin/kapture/sensors/sensors.txt
index 5af1e75..d8728f7 100644
--- a/samples/berlin/kapture/sensors/sensors.txt
+++ b/samples/berlin/kapture/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, camera, RADIAL, 3264, 2448, 3147.3191028463957, 1632, 1224, 0.022672104712876825, -0.0009966053789495556
 GPS_v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, , gnss, EPSG:4326
diff --git a/samples/berlin/kapture/sensors/trajectories.txt b/samples/berlin/kapture/sensors/trajectories.txt
index 8d5ba02..d445c69 100644
--- a/samples/berlin/kapture/sensors/trajectories.txt
+++ b/samples/berlin/kapture/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 0.7567825047018621, 0.5759378194165659, -0.1844928813510864, 0.24806903368546643, -0.47088726728907015, 6.93176439745662, 7.616922291503473
        1, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 0.7352461122265023, 0.6095523541118448, -0.18545052247828803, 0.2312297250896859, 0.08037300494798838, 4.246637763722639, 0.6961547424631436
diff --git a/samples/berlin/kapture_tar/reconstruction/descriptors/HOG/descriptors.tar b/samples/berlin/kapture_tar/reconstruction/descriptors/HOG/descriptors.tar
new file mode 100644
index 0000000..2de3734
Binary files /dev/null and b/samples/berlin/kapture_tar/reconstruction/descriptors/HOG/descriptors.tar differ
diff --git a/samples/berlin/kapture_tar/reconstruction/descriptors/HOG/descriptors.txt b/samples/berlin/kapture_tar/reconstruction/descriptors/HOG/descriptors.txt
new file mode 100644
index 0000000..dd2a008
--- /dev/null
+++ b/samples/berlin/kapture_tar/reconstruction/descriptors/HOG/descriptors.txt
@@ -0,0 +1,3 @@
+# kapture format: 1.1
+# name, dtype, dsize, keypoints_type, metric_type
+HOG, uint8, 128, HessianAffine, L2
diff --git a/samples/berlin/kapture_tar/reconstruction/keypoints/HessianAffine/keypoints.tar b/samples/berlin/kapture_tar/reconstruction/keypoints/HessianAffine/keypoints.tar
new file mode 100644
index 0000000..cf8f4f8
Binary files /dev/null and b/samples/berlin/kapture_tar/reconstruction/keypoints/HessianAffine/keypoints.tar differ
diff --git a/samples/berlin/kapture_tar/reconstruction/keypoints/HessianAffine/keypoints.txt b/samples/berlin/kapture_tar/reconstruction/keypoints/HessianAffine/keypoints.txt
new file mode 100644
index 0000000..2ee4340
--- /dev/null
+++ b/samples/berlin/kapture_tar/reconstruction/keypoints/HessianAffine/keypoints.txt
@@ -0,0 +1,3 @@
+# kapture format: 1.1
+# name, dtype, dsize
+HessianAffine, float32, 4
diff --git a/samples/berlin/kapture_tar/reconstruction/matches/HessianAffine/matches.tar b/samples/berlin/kapture_tar/reconstruction/matches/HessianAffine/matches.tar
new file mode 100644
index 0000000..2df982c
Binary files /dev/null and b/samples/berlin/kapture_tar/reconstruction/matches/HessianAffine/matches.tar differ
diff --git a/samples/berlin/kapture_tar/reconstruction/points3d.txt b/samples/berlin/kapture_tar/reconstruction/points3d.txt
new file mode 100644
index 0000000..fa7a82c
--- /dev/null
+++ b/samples/berlin/kapture_tar/reconstruction/points3d.txt
@@ -0,0 +1,1704 @@
+# kapture format: 1.1
+# X, Y, Z, R, G, B
+2.546236239871685569e+01,2.186242231865669794e+01,1.707884565980579339e+01,1.900000000000000000e+01,1.500000000000000000e+01,1.400000000000000000e+01
+2.539937354468105468e+01,2.119712731745250878e+01,8.217488996194116879e+00,1.480000000000000000e+02,1.400000000000000000e+02,1.310000000000000000e+02
+2.634819692968951088e+01,3.522220196624233779e+01,7.657132777257529277e+00,5.900000000000000000e+01,5.400000000000000000e+01,4.900000000000000000e+01
+2.844512403081141372e+01,3.338293154565760545e+01,1.693956834682427370e+01,7.300000000000000000e+01,6.500000000000000000e+01,6.300000000000000000e+01
+2.627588650113219870e+01,1.794006433351680130e+01,5.238476175013972558e+00,2.700000000000000000e+01,2.500000000000000000e+01,2.700000000000000000e+01
+2.575482470501869514e+01,1.695185777578004860e+01,4.534934135978347491e+00,6.100000000000000000e+01,4.900000000000000000e+01,3.500000000000000000e+01
+6.377695714919070724e+00,2.805426821791630587e+01,8.450856575751524602e+00,1.120000000000000000e+02,9.600000000000000000e+01,8.500000000000000000e+01
+1.346622529614295871e+01,3.243777498877437182e+01,5.525184725556202103e+00,4.500000000000000000e+01,3.700000000000000000e+01,3.200000000000000000e+01
+2.598263906947843083e+01,1.428101976240511561e+01,1.145692104044202964e+01,1.920000000000000000e+02,2.070000000000000000e+02,1.910000000000000000e+02
+2.494869003229548454e+01,1.933887865020349039e+01,6.701594159230758407e+00,3.200000000000000000e+01,2.800000000000000000e+01,2.800000000000000000e+01
+2.047300868911579030e+01,3.726157271104298019e+01,1.096993300914477132e+01,2.550000000000000000e+02,2.550000000000000000e+02,2.440000000000000000e+02
+9.471394367322190533e+00,2.905202724200213282e+01,1.283144746917381518e+01,8.300000000000000000e+01,7.000000000000000000e+01,7.000000000000000000e+01
+9.802393592358653152e+00,3.155996470110880026e+01,1.559367696006089332e+01,8.800000000000000000e+01,7.200000000000000000e+01,6.500000000000000000e+01
+2.890309199235856852e+01,3.231244757140807877e+01,8.810930955171459189e+00,2.050000000000000000e+02,1.890000000000000000e+02,1.720000000000000000e+02
+2.972035224865215852e+01,3.339101058275196010e+01,2.337978476376668269e+01,7.600000000000000000e+01,5.300000000000000000e+01,3.500000000000000000e+01
+2.449321725774634473e+01,2.025211850537262492e+01,4.108010109314719216e+00,2.280000000000000000e+02,2.170000000000000000e+02,1.850000000000000000e+02
+2.088184367174726219e+01,3.927943306545245861e+01,2.197191489315411062e+01,2.500000000000000000e+01,2.100000000000000000e+01,2.500000000000000000e+01
+7.941761640422875246e+00,2.952188336068364904e+01,3.049101878521356390e+00,7.100000000000000000e+01,6.200000000000000000e+01,5.300000000000000000e+01
+2.861523174925819646e+01,3.429318804983270041e+01,1.758310948358356640e+01,1.230000000000000000e+02,1.160000000000000000e+02,1.060000000000000000e+02
+2.840751353184864669e+01,3.226160909672371702e+01,1.621304177100293842e+01,4.900000000000000000e+01,3.900000000000000000e+01,3.800000000000000000e+01
+5.656825661222873336e+00,2.774031429461219389e+01,1.075413026170250319e+01,2.100000000000000000e+01,1.600000000000000000e+01,2.000000000000000000e+01
+2.429088364357478369e+01,2.943826166396823751e+01,6.995317987111064006e+00,1.070000000000000000e+02,1.000000000000000000e+02,9.400000000000000000e+01
+7.117063020965126441e+00,2.805749388737241290e+01,4.536914544548202421e+00,1.040000000000000000e+02,9.200000000000000000e+01,7.600000000000000000e+01
+3.080857995693389917e+00,3.036592102968717555e+01,1.534657985613957720e+01,2.100000000000000000e+01,2.700000000000000000e+01,2.600000000000000000e+01
+3.055960753743131519e+01,3.350423540934309585e+01,8.797376061450751905e+00,2.000000000000000000e+01,1.700000000000000000e+01,1.800000000000000000e+01
+2.796434756025423951e+01,3.450518585605748001e+01,2.326311770602560713e+01,8.700000000000000000e+01,6.700000000000000000e+01,5.900000000000000000e+01
+4.483986671966191828e+00,2.729255062072291693e+01,5.166796547781753901e+00,1.420000000000000000e+02,1.420000000000000000e+02,1.340000000000000000e+02
+2.526103343301858217e+01,2.050054699791055413e+01,2.288393075114343134e+01,1.980000000000000000e+02,1.810000000000000000e+02,1.620000000000000000e+02
+3.576143390001819800e+00,2.800739010974590215e+01,4.980733991211977241e+00,8.100000000000000000e+01,7.400000000000000000e+01,6.600000000000000000e+01
+1.110834132839966060e+01,2.936348747196423759e+01,1.159555150728583861e+01,1.200000000000000000e+02,1.070000000000000000e+02,9.500000000000000000e+01
+1.268428518549139206e+01,3.088854097488308525e+01,5.571137624355073648e+00,4.300000000000000000e+01,3.500000000000000000e+01,3.000000000000000000e+01
+2.639437592471954730e+01,1.484405433741221536e+01,1.369738599700657566e+01,1.400000000000000000e+01,1.200000000000000000e+01,1.300000000000000000e+01
+2.474442940730316565e+01,1.468144281677590079e+01,1.118247009214827159e+01,2.000000000000000000e+01,1.600000000000000000e+01,1.500000000000000000e+01
+5.071653651283937414e+00,2.793714301540800093e+01,3.180423264043761300e+00,9.000000000000000000e+01,8.300000000000000000e+01,7.200000000000000000e+01
+2.541494925608396116e+01,1.549472401945512168e+01,7.747577332438231323e+00,3.000000000000000000e+01,2.500000000000000000e+01,2.200000000000000000e+01
+1.737810952546786325e+01,1.673066232212285698e+01,2.086191995876118366e+00,2.030000000000000000e+02,1.890000000000000000e+02,1.600000000000000000e+02
+3.069002597939520172e+01,3.066466788659947795e+01,1.925928568889126780e+01,6.300000000000000000e+01,4.900000000000000000e+01,4.000000000000000000e+01
+1.133569749143281946e+01,2.985670491647304203e+01,2.366740420339731088e+01,6.500000000000000000e+01,5.000000000000000000e+01,4.400000000000000000e+01
+4.253497595490765448e+00,2.959041877776039087e+01,1.221321767481392939e+01,2.100000000000000000e+01,1.900000000000000000e+01,1.800000000000000000e+01
+2.175408655038534533e+01,3.744534097026029684e+01,1.924260298553478776e+01,6.700000000000000000e+01,5.400000000000000000e+01,4.800000000000000000e+01
+1.016989406784306382e+01,2.842467200322922594e+01,1.779304123530739901e+01,2.470000000000000000e+02,2.390000000000000000e+02,2.220000000000000000e+02
+2.073661184580949524e+01,3.835861007686251156e+01,8.422370489760345080e+00,3.100000000000000000e+01,2.800000000000000000e+01,2.600000000000000000e+01
+3.771706463743860649e+00,2.776598252642068587e+01,4.211287977001126670e+00,1.230000000000000000e+02,1.230000000000000000e+02,1.230000000000000000e+02
+2.332813399881954552e+01,3.741778502273766094e+01,2.464974715690463114e+01,1.000000000000000000e+02,8.500000000000000000e+01,6.600000000000000000e+01
+5.119523750517113392e+00,2.780967479367110684e+01,2.924293790853745634e+00,1.570000000000000000e+02,1.440000000000000000e+02,1.310000000000000000e+02
+2.541380619259938811e+01,2.095715915060805656e+01,1.975386457144125885e+01,7.100000000000000000e+01,5.400000000000000000e+01,4.600000000000000000e+01
+2.730024674734512402e+01,1.724169535458691271e+01,1.407545175191870257e+01,5.900000000000000000e+01,5.300000000000000000e+01,5.200000000000000000e+01
+2.469609101236445881e+01,3.481483157801437756e+01,1.662204573086506443e+01,5.200000000000000000e+01,4.400000000000000000e+01,4.000000000000000000e+01
+5.227610396444486440e+00,2.876618275631268773e+01,9.029007663538878958e+00,1.290000000000000000e+02,1.150000000000000000e+02,1.030000000000000000e+02
+2.170894155002606141e+01,3.802949349028277481e+01,1.728378260491834340e+01,1.390000000000000000e+02,1.320000000000000000e+02,1.210000000000000000e+02
+3.219132714463088973e+01,1.659415880800023757e+01,2.250037825792887958e+01,2.340000000000000000e+02,2.210000000000000000e+02,2.000000000000000000e+02
+9.547374602614270955e+00,2.935672547208609018e+01,1.059033174376363640e+01,1.080000000000000000e+02,9.600000000000000000e+01,9.100000000000000000e+01
+2.497148037771501805e+01,1.498982696967390815e+01,5.998786981531854856e+00,3.000000000000000000e+01,2.000000000000000000e+01,1.600000000000000000e+01
+8.230829709363160163e+00,3.061766239803510814e+01,2.271140351162620874e+01,6.800000000000000000e+01,5.400000000000000000e+01,5.200000000000000000e+01
+3.693535510118903797e+00,2.855166836379890682e+01,9.549764584856978544e+00,2.490000000000000000e+02,2.350000000000000000e+02,2.060000000000000000e+02
+1.208059412391522791e+01,2.867784240799188566e+01,1.996453329568317159e+01,7.500000000000000000e+01,6.500000000000000000e+01,6.500000000000000000e+01
+2.718957052037214339e+01,1.933393686771806941e+01,1.221741672413137536e+01,7.600000000000000000e+01,6.200000000000000000e+01,5.100000000000000000e+01
+2.621720221226902936e+01,1.556866350385938702e+01,1.937446258547993949e+01,1.110000000000000000e+02,1.040000000000000000e+02,1.010000000000000000e+02
+2.361352674335841328e+01,3.715017352205073564e+01,2.340791281713205052e+01,9.300000000000000000e+01,7.300000000000000000e+01,5.900000000000000000e+01
+1.970712070416293926e+01,3.880206054435418395e+01,1.764324397830400315e+01,1.180000000000000000e+02,1.080000000000000000e+02,9.900000000000000000e+01
+9.026678471784896018e+00,2.866951140797652897e+01,1.947707226746917542e+01,8.100000000000000000e+01,5.500000000000000000e+01,3.900000000000000000e+01
+4.163180401409050546e+00,2.962794881124699842e+01,1.618015433901299716e+01,3.400000000000000000e+01,3.600000000000000000e+01,3.600000000000000000e+01
+1.530223629833994181e+01,3.560400711452582811e+01,1.204198354172159746e+01,6.700000000000000000e+01,5.900000000000000000e+01,5.600000000000000000e+01
+9.329316577948155498e+00,2.960925809725727120e+01,5.659183708730589402e+00,3.100000000000000000e+01,2.200000000000000000e+01,2.300000000000000000e+01
+4.710925855303012888e+00,2.801082056158841738e+01,9.883195635993093475e+00,5.900000000000000000e+01,5.200000000000000000e+01,4.800000000000000000e+01
+9.355992609560239259e+00,2.888943545805295798e+01,1.775783597557570559e+01,2.520000000000000000e+02,2.400000000000000000e+02,2.200000000000000000e+02
+3.309653400972838000e+01,1.665653858964606826e+01,2.487414169355566429e+01,1.040000000000000000e+02,9.200000000000000000e+01,8.900000000000000000e+01
+1.700246931442624643e+01,2.792277568757110373e+01,7.756624341247816190e+00,2.130000000000000000e+02,2.030000000000000000e+02,1.900000000000000000e+02
+3.763118919067727663e+00,2.475831674824274842e+01,1.845243711490107019e+00,1.820000000000000000e+02,1.660000000000000000e+02,1.400000000000000000e+02
+2.480906402373625852e+01,3.427911859335327449e+01,1.436709421549134902e+01,2.460000000000000000e+02,2.330000000000000000e+02,2.170000000000000000e+02
+2.566360809023834832e+01,2.250785332651759063e+01,4.855894286079073474e+00,4.200000000000000000e+01,3.500000000000000000e+01,3.400000000000000000e+01
+2.384467707101689982e+01,3.722117230487809536e+01,2.557799102469679298e+01,2.600000000000000000e+01,1.600000000000000000e+01,1.500000000000000000e+01
+9.681277641474052231e+00,2.843635628481298028e+01,1.805243251568298390e+01,2.270000000000000000e+02,2.100000000000000000e+02,1.910000000000000000e+02
+4.369076606457189982e+00,3.589230976785924554e+01,2.365788476236144078e+01,1.020000000000000000e+02,8.900000000000000000e+01,8.100000000000000000e+01
+5.857647490868758133e+00,2.938985683200908383e+01,1.975531660091608188e+01,1.460000000000000000e+02,1.320000000000000000e+02,1.230000000000000000e+02
+1.619999439288229581e+01,3.656012554202703058e+01,5.619710231870601369e+00,2.320000000000000000e+02,2.220000000000000000e+02,2.040000000000000000e+02
+2.532432204308917534e+01,2.024245064335964273e+01,6.272305276852113920e+00,1.080000000000000000e+02,9.900000000000000000e+01,9.200000000000000000e+01
+2.912128495101143955e+01,3.297602584251188063e+01,9.928485132369894828e+00,9.600000000000000000e+01,8.400000000000000000e+01,7.700000000000000000e+01
+2.460672877117155721e+01,1.815210655508994364e+01,4.540705315327421943e+00,1.250000000000000000e+02,1.170000000000000000e+02,1.050000000000000000e+02
+1.189623450902283075e+01,3.089715009913779653e+01,8.917443985526491090e+00,1.820000000000000000e+02,1.650000000000000000e+02,1.470000000000000000e+02
+3.123010394674776791e+01,3.202872774663050848e+01,1.308159358515409743e+01,6.100000000000000000e+01,5.800000000000000000e+01,5.700000000000000000e+01
+1.189857261906875507e+01,2.979582703595535165e+01,4.787907007012432103e+00,2.010000000000000000e+02,1.870000000000000000e+02,1.680000000000000000e+02
+5.547551374324634743e+00,2.849611347265080852e+01,9.967535297364076285e+00,2.380000000000000000e+02,2.260000000000000000e+02,1.990000000000000000e+02
+2.257262768942011988e+01,3.849363596215090411e+01,2.150888979043717697e+01,6.100000000000000000e+01,6.400000000000000000e+01,5.500000000000000000e+01
+2.559178598797854320e+01,2.432587059209735969e+01,4.980863144704358092e+00,4.400000000000000000e+01,3.800000000000000000e+01,3.800000000000000000e+01
+1.384915992318834377e+01,3.239846079341738516e+01,1.232390761938223989e+01,1.720000000000000000e+02,1.630000000000000000e+02,1.530000000000000000e+02
+4.946777536643361728e+00,2.851217687612488305e+01,9.696828589920130526e+00,1.350000000000000000e+02,1.210000000000000000e+02,1.040000000000000000e+02
+1.499768787290120464e+01,3.263093868298089717e+01,4.935255043855458545e+00,7.100000000000000000e+01,6.900000000000000000e+01,7.100000000000000000e+01
+4.258578372114861565e+00,2.638342368577325914e+01,2.320580808596361511e+00,2.060000000000000000e+02,1.960000000000000000e+02,1.710000000000000000e+02
+1.043719804939042106e+01,2.899112890651374741e+01,1.271454698957220941e+01,1.170000000000000000e+02,1.040000000000000000e+02,9.300000000000000000e+01
+3.330656416800184427e+00,2.897026867616444790e+01,1.104451696494692392e+01,1.220000000000000000e+02,1.110000000000000000e+02,9.700000000000000000e+01
+2.395494600906654981e+01,2.110216737641511031e+01,2.033840386303799619e+01,1.320000000000000000e+02,1.160000000000000000e+02,1.000000000000000000e+02
+9.352886573179649332e+00,3.188199729188287534e+01,5.369892837232032257e+00,1.780000000000000000e+02,1.650000000000000000e+02,1.480000000000000000e+02
+2.594458773517425243e+01,1.456795622123273226e+01,9.398254348851063256e+00,1.230000000000000000e+02,1.140000000000000000e+02,1.060000000000000000e+02
+2.568990896445072636e+01,1.718517580869211514e+01,4.882094601767839492e+00,1.230000000000000000e+02,1.190000000000000000e+02,1.080000000000000000e+02
+1.935093420750606086e+01,1.622234403665249758e+01,2.564619878630125971e+00,1.520000000000000000e+02,1.370000000000000000e+02,1.150000000000000000e+02
+9.657526600104672454e+00,3.118206480470576381e+01,5.995865494740661106e+00,2.200000000000000000e+02,2.050000000000000000e+02,1.790000000000000000e+02
+2.522622756852070225e+01,2.203172454825454096e+01,2.305191192517716914e+01,3.800000000000000000e+01,3.000000000000000000e+01,3.100000000000000000e+01
+2.770433620648116246e+01,1.899475319995811162e+01,1.228975599668791396e+01,4.200000000000000000e+01,2.900000000000000000e+01,2.100000000000000000e+01
+1.853152037050222134e+01,1.501139097778892229e+01,1.956988680713169781e+00,2.180000000000000000e+02,2.050000000000000000e+02,1.770000000000000000e+02
+3.372190186577264992e+00,3.013502112352029982e+01,1.536947563771788161e+01,2.800000000000000000e+01,3.400000000000000000e+01,3.200000000000000000e+01
+2.777349595449565811e+01,3.303699309820441954e+01,1.598215786076726808e+01,7.000000000000000000e+01,6.000000000000000000e+01,5.500000000000000000e+01
+2.735293295456243001e+01,1.925461394666571024e+01,1.160790457289250099e+01,1.740000000000000000e+02,1.590000000000000000e+02,1.380000000000000000e+02
+3.392295068815241343e+00,2.932063898632173604e+01,7.698678025500678146e+00,8.900000000000000000e+01,9.800000000000000000e+01,8.900000000000000000e+01
+9.741609406884837341e+00,3.157507460135033028e+01,1.651692582752608729e+01,1.100000000000000000e+02,1.050000000000000000e+02,1.020000000000000000e+02
+4.372715330983356630e+00,2.748252444759171453e+01,5.271524294488039608e+00,3.100000000000000000e+01,3.000000000000000000e+01,3.100000000000000000e+01
+4.550153931465620971e+00,2.793756944381501484e+01,1.009870318643904064e+01,7.700000000000000000e+01,6.300000000000000000e+01,5.100000000000000000e+01
+9.832304679247082291e+00,3.116569128023972368e+01,1.050202038104652402e+01,1.740000000000000000e+02,1.590000000000000000e+02,1.420000000000000000e+02
+9.583927430922265955e+00,3.171930782764215095e+01,1.135164129524909704e+01,2.260000000000000000e+02,2.100000000000000000e+02,1.870000000000000000e+02
+2.460672877117155721e+01,1.815210655508994364e+01,4.540705315327421943e+00,1.250000000000000000e+02,1.170000000000000000e+02,1.050000000000000000e+02
+9.270873572049859845e+00,3.192213523057584013e+01,1.005293188403140192e+01,7.000000000000000000e+01,5.600000000000000000e+01,4.500000000000000000e+01
+8.514017926687525772e+00,3.163925010219381306e+01,1.634408862273200924e+01,1.350000000000000000e+02,1.230000000000000000e+02,1.110000000000000000e+02
+2.917542106359066878e+01,3.157122376689350673e+01,1.923767215229358385e+01,6.900000000000000000e+01,5.600000000000000000e+01,5.100000000000000000e+01
+1.904542641348468734e+01,3.817288828656231914e+01,6.832931249370273186e+00,2.510000000000000000e+02,2.390000000000000000e+02,2.220000000000000000e+02
+2.601814709137551418e+01,1.453973000126917192e+01,1.023075861723733837e+01,5.000000000000000000e+01,3.800000000000000000e+01,3.100000000000000000e+01
+5.403768092222343000e+00,2.827816473674736386e+01,1.102735373779417216e+01,1.880000000000000000e+02,1.970000000000000000e+02,1.850000000000000000e+02
+5.022503033437883069e+00,3.659362075171699757e+01,2.520614162568995908e+01,2.500000000000000000e+02,2.340000000000000000e+02,2.120000000000000000e+02
+3.920984396396489657e+00,2.798463434788021686e+01,6.055315120520639027e+00,6.000000000000000000e+01,4.600000000000000000e+01,3.600000000000000000e+01
+9.897415746692358240e+00,2.855833092270826867e+01,2.262825995745395247e+01,2.000000000000000000e+01,2.200000000000000000e+01,2.700000000000000000e+01
+9.712107060364610689e+00,3.130332877528866220e+01,1.581878170086071478e+01,1.030000000000000000e+02,9.700000000000000000e+01,9.400000000000000000e+01
+7.245928508160345061e+00,2.932531670750672603e+01,1.157471643135595762e+01,1.000000000000000000e+02,9.800000000000000000e+01,1.000000000000000000e+02
+2.574537873728878523e+01,1.459382907694757137e+01,5.859235237726098333e+00,1.350000000000000000e+02,1.210000000000000000e+02,1.060000000000000000e+02
+1.196972017355271944e+01,2.995544872938794612e+01,4.416344822848211393e+00,2.370000000000000000e+02,2.260000000000000000e+02,2.060000000000000000e+02
+2.694445417145426092e+01,3.567249521759216435e+01,1.134472824545553493e+01,2.530000000000000000e+02,2.530000000000000000e+02,2.430000000000000000e+02
+2.197288867541044866e+01,3.597569523287354798e+01,1.625702367613524046e+01,6.000000000000000000e+01,5.000000000000000000e+01,5.100000000000000000e+01
+1.780720826839592874e+01,3.081511716993953343e+01,5.502880857575629392e+00,2.020000000000000000e+02,1.860000000000000000e+02,1.640000000000000000e+02
+2.848552628484984339e+01,3.277452130054873436e+01,2.614289455438063925e+01,5.700000000000000000e+01,5.400000000000000000e+01,4.900000000000000000e+01
+2.513080887299709687e+01,1.512808958024201900e+01,1.017298963028799008e+01,5.700000000000000000e+01,4.400000000000000000e+01,3.300000000000000000e+01
+9.073431471075155130e+00,3.143687233205970699e+01,1.232890551876806917e+01,2.040000000000000000e+02,1.870000000000000000e+02,1.680000000000000000e+02
+9.418353057690337593e+00,2.837616354192736523e+01,2.068204944386082644e+01,2.410000000000000000e+02,2.150000000000000000e+02,1.900000000000000000e+02
+2.460415603679004448e+01,1.497363998259897144e+01,3.978903442379035926e+00,9.900000000000000000e+01,9.400000000000000000e+01,9.000000000000000000e+01
+3.286111669360292087e+00,2.959708906182945398e+01,7.423525153333800475e+00,1.940000000000000000e+02,1.930000000000000000e+02,1.670000000000000000e+02
+3.382556451913434614e+01,3.232365090237541949e+01,2.358763967175924137e+01,1.070000000000000000e+02,9.000000000000000000e+01,7.300000000000000000e+01
+2.992064095692079206e+01,3.266999974751975344e+01,1.467037106893283216e+01,7.700000000000000000e+01,6.100000000000000000e+01,5.200000000000000000e+01
+2.621479981325334663e+01,1.418722424289840767e+01,5.881990008915513712e+00,1.340000000000000000e+02,1.220000000000000000e+02,1.090000000000000000e+02
+3.254041412314614945e+01,3.195082902694291960e+01,1.539315040389640998e+01,1.090000000000000000e+02,1.020000000000000000e+02,9.600000000000000000e+01
+1.967096909221470469e+01,3.589685501137182655e+01,7.567639782477299626e+00,1.380000000000000000e+02,1.360000000000000000e+02,1.270000000000000000e+02
+2.076414826174820760e+01,3.138331989434122704e+01,9.686360051047017805e+00,2.500000000000000000e+02,2.410000000000000000e+02,2.310000000000000000e+02
+2.494594542147223848e+01,1.522477315926547092e+01,4.519513721587572697e+00,9.200000000000000000e+01,8.300000000000000000e+01,7.100000000000000000e+01
+8.018085950736947964e+00,3.131549221237899516e+01,1.973070488311024917e+01,2.200000000000000000e+02,2.080000000000000000e+02,1.930000000000000000e+02
+8.525979514826612871e+00,3.131106827070277276e+01,1.980717119572669560e+01,5.700000000000000000e+01,4.700000000000000000e+01,4.500000000000000000e+01
+2.454473002383429048e+01,1.887550692042823997e+01,4.095867461590578351e+00,2.120000000000000000e+02,2.090000000000000000e+02,1.990000000000000000e+02
+7.968356673983378435e+00,2.928994326848651752e+01,2.890275987654350232e+00,2.070000000000000000e+02,1.940000000000000000e+02,1.800000000000000000e+02
+1.005988948069864009e+01,2.887933611179645865e+01,1.420927262077377584e+01,1.430000000000000000e+02,1.270000000000000000e+02,1.120000000000000000e+02
+2.513033089019806354e+01,1.849187180357616711e+01,6.969009891274487778e+00,2.300000000000000000e+02,2.160000000000000000e+02,1.900000000000000000e+02
+2.799544166990677141e+01,1.916697541817367423e+01,2.301207874475924342e+01,1.100000000000000000e+02,1.010000000000000000e+02,9.900000000000000000e+01
+2.443193810145804434e+01,3.654795886907000835e+01,2.338240973883036844e+01,7.200000000000000000e+01,7.600000000000000000e+01,8.600000000000000000e+01
+9.418353057690344698e+00,2.837616354192737589e+01,2.068204944386083355e+01,2.410000000000000000e+02,2.150000000000000000e+02,1.900000000000000000e+02
+2.330522254571188867e+01,2.971228776637914848e+01,8.897916608772225899e+00,2.380000000000000000e+02,2.310000000000000000e+02,2.200000000000000000e+02
+2.783544355217750521e+01,1.875086210220324645e+01,1.862566181748777083e+01,9.000000000000000000e+01,7.700000000000000000e+01,6.800000000000000000e+01
+2.636636380430169169e+01,1.450047838488718277e+01,1.262959192455640078e+01,2.500000000000000000e+01,2.300000000000000000e+01,2.100000000000000000e+01
+1.054615567260956865e+01,2.852430807439282034e+01,1.615493433980106630e+01,4.700000000000000000e+01,4.100000000000000000e+01,4.300000000000000000e+01
+4.615303314628262932e+00,2.707638529445091891e+01,4.958177369653183675e+00,4.000000000000000000e+01,3.500000000000000000e+01,3.800000000000000000e+01
+1.746649615726659022e+01,2.900321393108842472e+01,5.086541774171288388e+00,7.500000000000000000e+01,7.700000000000000000e+01,7.600000000000000000e+01
+3.904736923344835464e+00,2.803152593263697767e+01,9.507559479866714014e+00,4.100000000000000000e+01,3.300000000000000000e+01,2.700000000000000000e+01
+1.937416949626159379e+01,3.866351547680476131e+01,1.908980212325423764e+01,5.200000000000000000e+01,3.800000000000000000e+01,2.900000000000000000e+01
+9.540622811659780211e+00,2.932144336177432464e+01,1.213754549920748183e+01,7.200000000000000000e+01,6.200000000000000000e+01,5.900000000000000000e+01
+2.501028824705783293e+01,3.460672897349495969e+01,9.926345368507595524e+00,1.100000000000000000e+02,1.080000000000000000e+02,1.090000000000000000e+02
+2.565465957848509149e+01,1.551807144273993266e+01,6.716195852152187840e+00,2.900000000000000000e+01,2.700000000000000000e+01,2.300000000000000000e+01
+2.115555450673387128e+01,3.859817447133502810e+01,2.344324425036840864e+01,8.200000000000000000e+01,6.100000000000000000e+01,3.400000000000000000e+01
+1.210129660823422881e+01,2.874261227850515610e+01,2.010796407271580577e+01,9.100000000000000000e+01,7.200000000000000000e+01,6.300000000000000000e+01
+5.343323356105511124e+00,2.867699405630362719e+01,9.804760438981503512e+00,8.600000000000000000e+01,7.000000000000000000e+01,5.300000000000000000e+01
+2.500889553656542930e+01,1.741980961259532990e+01,4.842064657717198628e+00,2.370000000000000000e+02,2.340000000000000000e+02,2.170000000000000000e+02
+4.558441010584492581e+00,2.733591093922985138e+01,3.045649405750564753e+00,1.420000000000000000e+02,1.330000000000000000e+02,1.140000000000000000e+02
+3.664136042945580041e+00,2.834390930052125768e+01,1.101528929008802571e+01,4.600000000000000000e+01,3.500000000000000000e+01,3.100000000000000000e+01
+2.496093602539379219e+01,2.106470507459646058e+01,4.481491988857893460e+00,2.320000000000000000e+02,2.220000000000000000e+02,1.970000000000000000e+02
+2.733660138293717878e+01,1.934572834967707067e+01,1.588947359490378020e+01,2.060000000000000000e+02,1.860000000000000000e+02,1.590000000000000000e+02
+2.723350339269013176e+01,1.906126125275252647e+01,1.732243083852375420e+01,2.360000000000000000e+02,2.170000000000000000e+02,1.930000000000000000e+02
+2.795232665178917131e+01,3.304052612378027476e+01,1.538439484061632356e+01,1.300000000000000000e+02,1.230000000000000000e+02,1.170000000000000000e+02
+2.010297267358920337e+01,3.788606179548600039e+01,7.038451011911250887e+00,1.120000000000000000e+02,1.150000000000000000e+02,1.100000000000000000e+02
+1.755986060165342977e+01,3.851871939367919140e+01,1.538350701576864132e+01,1.040000000000000000e+02,9.700000000000000000e+01,9.100000000000000000e+01
+1.231745685151237168e+01,2.947225478632971729e+01,4.964744855626769926e+00,1.810000000000000000e+02,1.750000000000000000e+02,1.630000000000000000e+02
+8.444330345950827876e+00,3.155903874116704699e+01,1.465731568550761388e+01,1.430000000000000000e+02,1.290000000000000000e+02,1.200000000000000000e+02
+1.163610475313491932e+01,3.064077791488822200e+01,1.223561757454641885e+01,1.190000000000000000e+02,1.050000000000000000e+02,9.400000000000000000e+01
+3.511449247727223444e+00,2.912549958535304029e+01,6.135103275543738022e+00,1.480000000000000000e+02,1.360000000000000000e+02,1.180000000000000000e+02
+2.981333772823026607e+01,3.685229535202701356e+01,1.260078125003132854e+01,1.030000000000000000e+02,8.500000000000000000e+01,7.500000000000000000e+01
+2.753825692234138245e+01,3.490668761072785742e+01,1.153746651877563423e+01,1.420000000000000000e+02,1.270000000000000000e+02,1.170000000000000000e+02
+6.186666958487454515e+00,2.777978057790153699e+01,5.536804310959436926e+00,1.010000000000000000e+02,9.500000000000000000e+01,9.400000000000000000e+01
+2.489762707144528520e+01,3.586241136730510704e+01,7.609523436327119583e+00,4.400000000000000000e+01,3.900000000000000000e+01,3.500000000000000000e+01
+6.279434851202794654e+00,2.779979281074948005e+01,1.057903731862102248e+01,3.700000000000000000e+01,2.900000000000000000e+01,2.600000000000000000e+01
+8.187214867959186293e+00,3.143778557714699673e+01,2.149175506269710567e+01,2.020000000000000000e+02,1.900000000000000000e+02,1.810000000000000000e+02
+3.113335456378163890e+00,2.970704850278222509e+01,8.820922641276638387e+00,1.680000000000000000e+02,1.870000000000000000e+02,1.680000000000000000e+02
+2.594981078765124849e+01,2.112241317358903814e+01,2.333750246226059488e+01,1.980000000000000000e+02,1.810000000000000000e+02,1.620000000000000000e+02
+9.313831857748576581e+00,3.213599177994682776e+01,6.768530652838469663e+00,2.350000000000000000e+02,2.200000000000000000e+02,1.940000000000000000e+02
+2.570847610284987539e+01,2.293584087316399689e+01,4.611781945450339038e+00,2.390000000000000000e+02,2.250000000000000000e+02,1.980000000000000000e+02
+2.503945689227121463e+01,2.183244078142303124e+01,1.778267751440027666e+01,1.050000000000000000e+02,8.500000000000000000e+01,7.000000000000000000e+01
+2.497475772795504412e+01,1.444743847853037266e+01,4.790996367401366918e+00,8.700000000000000000e+01,7.300000000000000000e+01,5.800000000000000000e+01
+5.652363617899542447e+00,2.913142605001029040e+01,1.388931983438062190e+01,1.380000000000000000e+02,1.260000000000000000e+02,1.140000000000000000e+02
+2.663604618595726237e+01,3.644314830580492526e+01,1.614356886790771028e+01,4.100000000000000000e+01,3.200000000000000000e+01,3.300000000000000000e+01
+9.306149411322907739e+00,3.163834741746457979e+01,1.650173521019156908e+01,1.200000000000000000e+02,1.100000000000000000e+02,1.080000000000000000e+02
+1.100175352099124204e+01,2.944070729901507733e+01,6.493280056443567538e+00,1.200000000000000000e+02,1.060000000000000000e+02,9.500000000000000000e+01
+3.446983190220682669e+00,2.993934605325967269e+01,1.575673220868050883e+01,2.120000000000000000e+02,2.440000000000000000e+02,2.330000000000000000e+02
+2.620007179960264310e+01,1.443709508125936836e+01,9.005192454706357097e+00,2.140000000000000000e+02,1.990000000000000000e+02,1.750000000000000000e+02
+2.505786205827268631e+01,1.776533755503347933e+01,5.138826837178334550e+00,2.420000000000000000e+02,2.340000000000000000e+02,2.160000000000000000e+02
+1.072705313206552447e+01,2.842248872265934168e+01,4.619692265448547275e+00,1.050000000000000000e+02,9.400000000000000000e+01,7.800000000000000000e+01
+2.226405182350126211e+01,3.860243410495256455e+01,1.099703920552569336e+01,2.550000000000000000e+02,2.540000000000000000e+02,2.430000000000000000e+02
+3.709173544102597475e+00,2.895517668510422027e+01,6.704169879917759367e+00,1.310000000000000000e+02,1.300000000000000000e+02,1.160000000000000000e+02
+9.781383165817450376e+00,3.051788060410231651e+01,1.374588312656001321e+01,1.950000000000000000e+02,1.800000000000000000e+02,1.590000000000000000e+02
+3.039490006948730993e+01,3.343606493899231680e+01,1.184531571804841299e+01,8.000000000000000000e+01,6.600000000000000000e+01,5.300000000000000000e+01
+2.209031342308364998e+01,3.614045341941648815e+01,1.424564106749425818e+01,2.540000000000000000e+02,2.470000000000000000e+02,2.290000000000000000e+02
+9.968480803337383733e+00,2.848846989037176769e+01,1.617712038127969620e+01,8.200000000000000000e+01,7.100000000000000000e+01,6.700000000000000000e+01
+3.291589589537692007e+01,3.242007244235639263e+01,1.258675225483789539e+01,1.150000000000000000e+02,1.070000000000000000e+02,1.040000000000000000e+02
+2.486249093522223674e+01,1.843823757967163246e+01,1.363737485362107726e+01,1.930000000000000000e+02,1.790000000000000000e+02,1.620000000000000000e+02
+3.700181476891262644e+00,2.770633391799625400e+01,3.020587720052870573e+00,1.810000000000000000e+02,1.690000000000000000e+02,1.460000000000000000e+02
+1.962111198527411204e+01,2.946568483136713468e+01,8.608150469735447174e+00,2.480000000000000000e+02,2.400000000000000000e+02,2.270000000000000000e+02
+3.980742549613541126e+00,2.974376930543948916e+01,1.625966386636219241e+01,2.480000000000000000e+02,2.540000000000000000e+02,2.490000000000000000e+02
+1.950672379724196404e+01,3.859074753931695767e+01,1.125691837167969389e+01,1.460000000000000000e+02,1.320000000000000000e+02,1.160000000000000000e+02
+3.598484757153485258e+00,2.750848506436384966e+01,4.756368500265857335e+00,2.230000000000000000e+02,2.190000000000000000e+02,2.000000000000000000e+02
+2.744043826401939157e+01,1.930295790925551103e+01,1.273498847318963278e+01,1.870000000000000000e+02,1.700000000000000000e+02,1.500000000000000000e+02
+5.191348680626494350e+00,2.871157171346782278e+01,6.908417998249190894e+00,2.510000000000000000e+02,2.390000000000000000e+02,2.170000000000000000e+02
+2.572225328470723937e+01,3.602613947296837438e+01,2.600816366459912032e+01,3.600000000000000000e+01,2.500000000000000000e+01,1.900000000000000000e+01
+3.973529572608138771e+00,2.847756318327935077e+01,8.631218220408726438e+00,2.190000000000000000e+02,2.020000000000000000e+02,1.760000000000000000e+02
+5.827224915492928758e+00,2.818499841022804731e+01,9.612264123943816685e+00,2.520000000000000000e+02,2.380000000000000000e+02,2.120000000000000000e+02
+7.721175288141460591e+00,3.125177460769947757e+01,1.840565132874518994e+01,5.000000000000000000e+01,4.300000000000000000e+01,4.500000000000000000e+01
+2.874494434590598146e+01,3.385556140721357110e+01,1.683232520345798733e+01,4.900000000000000000e+01,4.000000000000000000e+01,3.900000000000000000e+01
+2.494090511793587694e+01,1.859934372879637365e+01,1.863608517476371773e+01,2.330000000000000000e+02,2.180000000000000000e+02,1.990000000000000000e+02
+2.587211643287943019e+01,2.119539850212566634e+01,6.631317255065344973e+00,4.600000000000000000e+01,3.800000000000000000e+01,3.600000000000000000e+01
+2.645497704876996536e+01,1.431627186354313075e+01,7.979571154315264536e+00,1.080000000000000000e+02,9.400000000000000000e+01,8.300000000000000000e+01
+1.178241748288008139e+01,3.036462487703661139e+01,4.874305796915854749e+00,2.410000000000000000e+02,2.330000000000000000e+02,2.160000000000000000e+02
+2.702379356568391700e+01,1.418321401920305824e+01,1.257865992614727624e+01,4.700000000000000000e+01,4.400000000000000000e+01,3.500000000000000000e+01
+9.048436772874536516e+00,2.914486798200283602e+01,1.881543676714195357e+01,1.900000000000000000e+01,1.100000000000000000e+01,9.000000000000000000e+00
+1.989465857447223129e+01,3.923921649555500579e+01,2.172366232400112906e+01,5.700000000000000000e+01,6.100000000000000000e+01,6.500000000000000000e+01
+2.906301871091917732e+00,3.076638251545523062e+01,1.422370160525912830e+01,7.500000000000000000e+01,8.200000000000000000e+01,8.100000000000000000e+01
+2.666798824879710494e+01,2.415074895314594983e+01,4.961097670380804736e+00,4.300000000000000000e+01,4.200000000000000000e+01,4.100000000000000000e+01
+2.553131371064244703e+01,1.847129142238272337e+01,1.095704968530172252e+01,1.280000000000000000e+02,1.160000000000000000e+02,1.040000000000000000e+02
+3.748071322269909800e+00,2.785320415910449299e+01,5.095585005122124755e+00,9.600000000000000000e+01,8.900000000000000000e+01,8.400000000000000000e+01
+3.124232160318963114e+00,2.877434552160105241e+01,5.752326408586826645e+00,5.000000000000000000e+01,4.100000000000000000e+01,3.400000000000000000e+01
+6.271514672751601793e+00,2.785565206189108522e+01,6.234373300050925160e+00,9.100000000000000000e+01,7.500000000000000000e+01,6.200000000000000000e+01
+6.115891285256377152e+00,2.821961685591082869e+01,1.169092203265445384e+01,1.220000000000000000e+02,1.130000000000000000e+02,1.010000000000000000e+02
+2.450016365606757418e+01,1.876911826378348280e+01,5.072240557415515383e+00,2.270000000000000000e+02,2.170000000000000000e+02,1.950000000000000000e+02
+6.288451332869520627e+00,2.747802483754695757e+01,1.076829666264022478e+01,2.500000000000000000e+01,2.100000000000000000e+01,2.000000000000000000e+01
+1.720838303447294138e+01,3.807790159187082679e+01,1.037020502220622475e+01,1.140000000000000000e+02,9.900000000000000000e+01,8.800000000000000000e+01
+3.081035575780281022e+01,3.104444040833772789e+01,1.783689015183266591e+01,9.700000000000000000e+01,8.100000000000000000e+01,7.200000000000000000e+01
+8.013316948017243035e+00,3.121009246557888872e+01,1.734550436489109515e+01,1.870000000000000000e+02,1.700000000000000000e+02,1.500000000000000000e+02
+3.833847664020359591e+00,3.578287472821200765e+01,2.224310673158813856e+01,2.000000000000000000e+02,1.910000000000000000e+02,1.760000000000000000e+02
+2.407746789234443341e+01,2.914864255298583728e+01,8.871361803077205010e+00,1.350000000000000000e+02,1.290000000000000000e+02,1.260000000000000000e+02
+1.536806806942945158e+01,3.368317245520408676e+01,1.665900421570959011e+01,1.070000000000000000e+02,9.100000000000000000e+01,7.700000000000000000e+01
+9.823045952665786729e+00,3.145723494357475758e+01,1.189283110267141730e+01,9.100000000000000000e+01,7.300000000000000000e+01,6.000000000000000000e+01
+2.553046947340251727e+00,3.077686804055482384e+01,1.569525036977259447e+01,2.320000000000000000e+02,2.540000000000000000e+02,2.400000000000000000e+02
+3.613882840441016597e+00,2.913050861185374885e+01,8.736269381550059165e+00,2.060000000000000000e+02,2.050000000000000000e+02,1.830000000000000000e+02
+5.465308016270513214e+00,2.877692748437003090e+01,1.225920204570111416e+01,2.000000000000000000e+01,1.600000000000000000e+01,1.700000000000000000e+01
+8.967176525369120910e+00,3.040894333244446202e+01,1.904634635977064860e+01,4.000000000000000000e+01,3.000000000000000000e+01,2.800000000000000000e+01
+2.844448147463874221e+01,1.893967274368837295e+01,1.841725015640582086e+01,6.000000000000000000e+01,4.700000000000000000e+01,4.200000000000000000e+01
+2.621446174907111626e+01,3.348594833398738757e+01,1.284812260797238181e+01,1.400000000000000000e+02,1.260000000000000000e+02,1.170000000000000000e+02
+6.026330995117092471e+00,2.832082406911910510e+01,1.110662898992499770e+01,1.660000000000000000e+02,1.640000000000000000e+02,1.650000000000000000e+02
+2.474884252824347186e+01,1.781129116021931580e+01,1.937519348622811322e+01,1.270000000000000000e+02,1.110000000000000000e+02,1.000000000000000000e+02
+1.450600292044777895e+01,3.356805293337339435e+01,1.312546997974456175e+01,7.100000000000000000e+01,6.100000000000000000e+01,6.000000000000000000e+01
+3.030961399674981038e+01,3.316725184440951324e+01,2.156477654097761842e+01,2.600000000000000000e+01,2.200000000000000000e+01,2.200000000000000000e+01
+1.113091431942085485e+01,3.002664253745158263e+01,1.483772557869920838e+01,8.000000000000000000e+01,7.000000000000000000e+01,6.800000000000000000e+01
+4.332677064874730810e+00,2.990725199582553273e+01,1.572128237514411708e+01,3.100000000000000000e+01,3.200000000000000000e+01,2.900000000000000000e+01
+2.383561407602534388e+01,3.689039552327918159e+01,1.261248292508676272e+01,2.530000000000000000e+02,2.490000000000000000e+02,2.320000000000000000e+02
+1.175454688466661679e+01,2.999567692867518076e+01,4.544952983436361116e+00,1.080000000000000000e+02,9.500000000000000000e+01,8.100000000000000000e+01
+8.143173937037621712e+00,2.944014850081960688e+01,3.461943117951881366e+00,2.150000000000000000e+02,2.080000000000000000e+02,1.960000000000000000e+02
+2.587523057738229681e+01,1.661432890038783938e+01,4.296996963985483475e+00,1.130000000000000000e+02,1.060000000000000000e+02,8.700000000000000000e+01
+2.917991866229351317e+01,3.379915058800577299e+01,2.344788941689195028e+01,5.500000000000000000e+01,3.500000000000000000e+01,2.800000000000000000e+01
+3.159758179444289894e+01,3.204216434205013542e+01,1.067403414026399666e+01,5.100000000000000000e+01,4.200000000000000000e+01,3.700000000000000000e+01
+4.200350128356476809e+00,3.546612368486147204e+01,2.162925164764752139e+01,7.900000000000000000e+01,6.800000000000000000e+01,6.600000000000000000e+01
+8.753312294661181880e+00,3.205812918417281310e+01,1.726537825342989407e+01,1.300000000000000000e+02,1.150000000000000000e+02,1.040000000000000000e+02
+1.933100055968193587e+01,1.590497349582775399e+01,2.697354104612470493e+00,2.250000000000000000e+02,2.180000000000000000e+02,2.000000000000000000e+02
+2.436102097347219697e+01,1.826878414915491433e+01,1.707931054994547537e+01,5.700000000000000000e+01,4.700000000000000000e+01,4.200000000000000000e+01
+6.292740481750919379e+00,2.744760607701337918e+01,1.151356276315715910e+01,3.400000000000000000e+01,3.100000000000000000e+01,3.200000000000000000e+01
+5.845477740942860656e+00,2.828418182156336158e+01,9.285823162694875066e+00,2.490000000000000000e+02,2.320000000000000000e+02,2.060000000000000000e+02
+3.200148567487684392e+00,2.917390893148273179e+01,6.375695502956930660e+00,2.230000000000000000e+02,2.070000000000000000e+02,1.800000000000000000e+02
+2.698121028971888080e+01,1.473216844976873041e+01,1.792083879322536433e+01,9.100000000000000000e+01,8.000000000000000000e+01,7.400000000000000000e+01
+2.002404800713481947e+01,3.845094165153862775e+01,1.640695833009747062e+01,4.300000000000000000e+01,3.400000000000000000e+01,3.300000000000000000e+01
+1.151259613796520753e+01,2.978202088187396512e+01,1.371713472928500899e+01,2.280000000000000000e+02,2.070000000000000000e+02,1.810000000000000000e+02
+2.483051274403473485e+01,1.809137665207907730e+01,4.803855760050598001e+00,2.410000000000000000e+02,2.350000000000000000e+02,2.210000000000000000e+02
+2.529195639531944195e+01,3.607728394074629819e+01,1.482637623911197444e+01,2.270000000000000000e+02,2.140000000000000000e+02,1.960000000000000000e+02
+2.497896433966915808e+01,1.809342769537614615e+01,5.291013443351157974e+00,2.470000000000000000e+02,2.390000000000000000e+02,2.160000000000000000e+02
+1.942725800832258543e+01,3.932628273322639956e+01,1.730142532499417030e+01,1.110000000000000000e+02,1.000000000000000000e+02,8.700000000000000000e+01
+7.600061100586198215e+00,2.888915311387264140e+01,2.682204813095441676e+00,7.900000000000000000e+01,6.900000000000000000e+01,6.200000000000000000e+01
+1.988977784141244953e+01,3.353268557139301009e+01,2.759619471156475612e+01,7.800000000000000000e+01,6.200000000000000000e+01,5.100000000000000000e+01
+4.124173635963700235e+00,2.739921317344527196e+01,2.504800842560320540e+00,1.510000000000000000e+02,1.430000000000000000e+02,1.240000000000000000e+02
+2.515285266632527339e+01,3.374160337231044338e+01,5.856381520866667856e+00,1.080000000000000000e+02,1.040000000000000000e+02,9.500000000000000000e+01
+2.522173039567023167e+01,3.682825527145826072e+01,2.217595954731219976e+01,8.900000000000000000e+01,9.700000000000000000e+01,9.800000000000000000e+01
+1.268428518549140804e+01,3.088854097488312789e+01,5.571137624355077200e+00,4.300000000000000000e+01,3.500000000000000000e+01,3.000000000000000000e+01
+2.164959614974057800e+01,3.636442220296783034e+01,1.629703600829246213e+01,4.400000000000000000e+01,3.800000000000000000e+01,3.500000000000000000e+01
+3.116303876720148747e+00,2.970428156665311903e+01,8.120464438425212705e+00,1.790000000000000000e+02,1.820000000000000000e+02,1.600000000000000000e+02
+9.166711278196800095e+00,2.856022461741990170e+01,1.903070404175087305e+01,1.070000000000000000e+02,9.700000000000000000e+01,8.600000000000000000e+01
+2.533704534027584643e+01,2.094244246913364549e+01,4.476657679675740908e+00,4.500000000000000000e+01,3.400000000000000000e+01,3.200000000000000000e+01
+2.846348234415260858e+00,2.983404977364653732e+01,9.603030794312706675e+00,2.520000000000000000e+02,2.420000000000000000e+02,2.190000000000000000e+02
+2.519184417604068571e+01,1.808742285908616765e+01,1.529161053168486895e+01,2.090000000000000000e+02,1.930000000000000000e+02,1.730000000000000000e+02
+6.465094756719360625e+00,2.776142694140537159e+01,1.220483521534967153e+01,2.000000000000000000e+01,1.800000000000000000e+01,1.900000000000000000e+01
+2.548620323724567882e+01,1.516958816967772350e+01,1.367210852080669170e+01,3.200000000000000000e+01,3.000000000000000000e+01,3.200000000000000000e+01
+2.534522866118446416e+01,1.549679835008866924e+01,6.085248307313904093e+00,1.800000000000000000e+01,1.600000000000000000e+01,1.700000000000000000e+01
+1.005346151386832609e+01,2.823695183650231044e+01,1.835846641260240375e+01,2.520000000000000000e+02,2.400000000000000000e+02,2.200000000000000000e+02
+3.201786626904468580e+00,2.909080551448710494e+01,1.141444753699341774e+01,2.600000000000000000e+01,2.100000000000000000e+01,1.800000000000000000e+01
+1.182432448841502470e+01,2.993633993592888842e+01,1.619090763769566266e+01,6.700000000000000000e+01,5.700000000000000000e+01,5.600000000000000000e+01
+2.660293373487284185e+01,1.483231711455735891e+01,1.571241934995507705e+01,7.600000000000000000e+01,6.600000000000000000e+01,6.500000000000000000e+01
+2.511238814359354521e+01,1.469487347026394630e+01,5.443382043182984908e+00,6.000000000000000000e+01,5.500000000000000000e+01,5.600000000000000000e+01
+9.699528623728221888e+00,2.885740646320416758e+01,1.151602597774403591e+01,2.080000000000000000e+02,1.930000000000000000e+02,1.740000000000000000e+02
+3.710382021643108708e+00,2.899065592479422193e+01,7.792480086992103594e+00,1.050000000000000000e+02,1.050000000000000000e+02,9.700000000000000000e+01
+3.298740184346102389e+00,2.941244937774939672e+01,9.382614729698024902e+00,5.000000000000000000e+01,4.800000000000000000e+01,4.400000000000000000e+01
+2.428033002629019776e+01,1.863615961929744813e+01,3.697521831712133444e+00,2.320000000000000000e+02,2.290000000000000000e+02,2.130000000000000000e+02
+1.371794186755358602e+01,3.256648672094893016e+01,1.549624741372639392e+01,4.500000000000000000e+01,3.700000000000000000e+01,3.600000000000000000e+01
+2.748760059863888472e+01,1.900733273858834593e+01,1.537501636662712379e+01,8.600000000000000000e+01,7.000000000000000000e+01,6.700000000000000000e+01
+2.542550256463675495e+01,3.451440644150040526e+01,1.666853473786876805e+01,5.400000000000000000e+01,4.600000000000000000e+01,4.300000000000000000e+01
+6.361049635758743825e+00,2.747038135598094755e+01,1.040984116350073485e+01,1.320000000000000000e+02,1.100000000000000000e+02,8.900000000000000000e+01
+1.116214653447446814e+01,3.048320018065827597e+01,1.203694512410534223e+01,1.000000000000000000e+02,8.700000000000000000e+01,8.100000000000000000e+01
+2.474884252824347186e+01,1.781129116021931580e+01,1.937519348622811322e+01,1.270000000000000000e+02,1.110000000000000000e+02,1.000000000000000000e+02
+1.029252410352784430e+01,2.829637786740534011e+01,1.802876222029239983e+01,8.500000000000000000e+01,7.200000000000000000e+01,6.000000000000000000e+01
+5.153429793730132324e+00,2.899449595610260033e+01,1.249682318118500746e+01,1.730000000000000000e+02,1.630000000000000000e+02,1.530000000000000000e+02
+2.604419042670221174e+01,3.649468167200091528e+01,1.608184817184808324e+01,4.500000000000000000e+01,3.500000000000000000e+01,3.600000000000000000e+01
+1.939168288330668943e+01,3.866501663211751350e+01,1.643731840878795936e+01,4.100000000000000000e+01,3.200000000000000000e+01,2.900000000000000000e+01
+1.287405474806849348e+01,3.023379553481753490e+01,2.251066557712302085e+01,8.600000000000000000e+01,7.300000000000000000e+01,7.000000000000000000e+01
+2.535725908923187788e+01,1.514706773159564612e+01,8.646182425812661165e+00,4.500000000000000000e+01,3.800000000000000000e+01,3.300000000000000000e+01
+2.280775243185138024e+01,3.837593080027898651e+01,2.176231362204146791e+01,9.800000000000000000e+01,9.500000000000000000e+01,8.700000000000000000e+01
+1.004446457428288575e+01,2.825587918282130673e+01,1.679665928027604238e+01,6.200000000000000000e+01,5.100000000000000000e+01,4.300000000000000000e+01
+1.902377547966527871e+01,3.982745686608773639e+01,1.211893042155944933e+01,2.450000000000000000e+02,2.310000000000000000e+02,2.110000000000000000e+02
+1.827467477076752900e+01,2.874097897612663388e+01,5.353760515481102544e+00,2.400000000000000000e+02,2.320000000000000000e+02,2.190000000000000000e+02
+5.605919303390031416e+00,2.832794204158434326e+01,6.817641981460074163e+00,2.260000000000000000e+02,2.100000000000000000e+02,1.840000000000000000e+02
+5.676224831194430998e+00,2.914965290484643390e+01,1.506675050907786151e+01,1.420000000000000000e+02,1.320000000000000000e+02,1.230000000000000000e+02
+9.594178940170358771e+00,2.958699773238824449e+01,1.097081808968651195e+01,7.700000000000000000e+01,6.600000000000000000e+01,6.100000000000000000e+01
+9.629153519745836221e+00,2.900772238396969627e+01,9.763490891769192714e+00,1.990000000000000000e+02,1.840000000000000000e+02,1.650000000000000000e+02
+2.252305187968836009e+01,3.802882601004099428e+01,1.631066023513900731e+01,4.500000000000000000e+01,3.400000000000000000e+01,3.000000000000000000e+01
+1.105347780919944789e+01,2.968371150275421400e+01,1.583057467258992901e+01,4.700000000000000000e+01,4.200000000000000000e+01,4.300000000000000000e+01
+9.796772504824557970e+00,3.061696150592196020e+01,9.415459897321168725e+00,1.830000000000000000e+02,1.700000000000000000e+02,1.500000000000000000e+02
+2.535218330772145734e+01,3.301865775260851876e+01,1.383518163772530940e+01,2.310000000000000000e+02,2.140000000000000000e+02,1.970000000000000000e+02
+2.645866496112904898e+01,3.522122849634303776e+01,7.927632843779027105e+00,1.460000000000000000e+02,1.410000000000000000e+02,1.270000000000000000e+02
+2.838581820914975751e+01,1.815203498582173225e+01,1.985102283179973170e+01,1.020000000000000000e+02,9.700000000000000000e+01,9.300000000000000000e+01
+2.139158053339772891e+01,3.692056880246222050e+01,1.608042764013121584e+01,5.700000000000000000e+01,4.800000000000000000e+01,4.300000000000000000e+01
+1.652428377914661795e+01,2.586097318227824360e+01,4.558741200078901379e+00,2.290000000000000000e+02,2.220000000000000000e+02,1.940000000000000000e+02
+8.011526570119999135e+00,3.146886084867380973e+01,1.821290643439596479e+01,1.720000000000000000e+02,1.560000000000000000e+02,1.360000000000000000e+02
+1.975985439137885180e+01,3.536227932002199736e+01,2.813663315604476978e+01,4.300000000000000000e+01,3.000000000000000000e+01,2.200000000000000000e+01
+1.771056381912679356e+01,3.673918976810946191e+01,2.458777721996026244e+01,6.100000000000000000e+01,5.100000000000000000e+01,4.200000000000000000e+01
+1.210832938773722489e+01,2.936145174470511776e+01,1.923942528495807025e+01,1.180000000000000000e+02,1.060000000000000000e+02,9.200000000000000000e+01
+2.827639550661764645e+01,3.495170579112066633e+01,2.618611964543473292e+01,7.100000000000000000e+01,4.900000000000000000e+01,3.300000000000000000e+01
+3.054942060409786819e+01,3.047127160573321092e+01,1.955203126776015310e+01,1.180000000000000000e+02,1.050000000000000000e+02,9.600000000000000000e+01
+3.053913239994057349e+01,3.195107063099822398e+01,1.349209992808974867e+01,1.230000000000000000e+02,1.170000000000000000e+02,1.120000000000000000e+02
+2.927486278987492696e+01,3.341908334072279985e+01,1.585824786944636600e+01,7.200000000000000000e+01,6.300000000000000000e+01,6.000000000000000000e+01
+1.907145153606344579e+01,3.726847884578160830e+01,1.909836472365241633e+01,1.200000000000000000e+02,1.120000000000000000e+02,1.050000000000000000e+02
+3.023008280813246174e+01,3.200152319742558404e+01,1.173050680580091942e+01,1.360000000000000000e+02,1.310000000000000000e+02,1.280000000000000000e+02
+3.052699764624474810e+01,3.315092936697176640e+01,2.386862647693487816e+01,2.300000000000000000e+01,1.800000000000000000e+01,2.000000000000000000e+01
+3.213175308501480743e+01,3.122031971220486213e+01,1.607278881314232066e+01,8.400000000000000000e+01,7.100000000000000000e+01,6.200000000000000000e+01
+2.528646245304246065e+01,3.300453097706828487e+01,1.359638175583314457e+01,1.660000000000000000e+02,1.550000000000000000e+02,1.470000000000000000e+02
+3.147044662054526043e+01,3.009514904884331088e+01,1.181229685014543662e+01,1.080000000000000000e+02,9.800000000000000000e+01,8.300000000000000000e+01
+3.029668597127377083e+01,3.308104091021018434e+01,2.355789918518333437e+01,3.100000000000000000e+01,2.300000000000000000e+01,2.200000000000000000e+01
+1.872360048585121817e+01,3.812702765441906649e+01,1.329165436289894409e+01,1.410000000000000000e+02,1.350000000000000000e+02,1.350000000000000000e+02
+2.119692908455930436e+01,3.531002991880391306e+01,2.873383541821262099e+01,4.800000000000000000e+01,3.500000000000000000e+01,2.600000000000000000e+01
+2.741255992234212968e+01,3.265367826906227577e+01,1.606543174362381166e+01,1.090000000000000000e+02,1.000000000000000000e+02,9.400000000000000000e+01
+2.583622868133992512e+01,3.558858401753392542e+01,2.156477899937136655e+01,7.000000000000000000e+01,5.700000000000000000e+01,5.000000000000000000e+01
+2.559857998280463676e+01,3.364936818412132169e+01,1.415849620297879774e+01,2.030000000000000000e+02,1.870000000000000000e+02,1.730000000000000000e+02
+2.502395467588376832e+01,1.955899333206685853e+01,9.445526672071395069e+00,2.500000000000000000e+01,2.100000000000000000e+01,2.000000000000000000e+01
+2.537462867684428147e+01,3.673702346040408884e+01,6.460315143479546052e+00,1.630000000000000000e+02,1.570000000000000000e+02,1.460000000000000000e+02
+2.498183409597824323e+01,2.127206214284449004e+01,1.986090196901549021e+01,1.180000000000000000e+02,1.050000000000000000e+02,8.600000000000000000e+01
+2.833381319317077640e+01,1.830605505126198906e+01,1.793309672233514718e+01,3.700000000000000000e+01,2.900000000000000000e+01,2.600000000000000000e+01
+1.082755977980535889e+01,2.908374941214464826e+01,1.121057377626156537e+01,1.510000000000000000e+02,1.380000000000000000e+02,1.250000000000000000e+02
+2.639270885964743485e+01,3.448121342521276489e+01,1.681834409730391400e+01,5.700000000000000000e+01,4.600000000000000000e+01,3.600000000000000000e+01
+2.680643537258969999e+01,3.430232876748431892e+01,8.359424319524727309e+00,2.450000000000000000e+02,2.420000000000000000e+02,2.310000000000000000e+02
+2.627063357501661756e+01,3.297997443701370912e+01,1.212539078811842153e+01,1.060000000000000000e+02,8.900000000000000000e+01,7.200000000000000000e+01
+2.446767649345967399e+01,1.869062413191185001e+01,6.445486100506405691e+00,7.700000000000000000e+01,6.800000000000000000e+01,6.000000000000000000e+01
+2.402031976688501302e+01,3.399716508204342347e+01,1.911096286590717597e+01,1.510000000000000000e+02,1.400000000000000000e+02,1.290000000000000000e+02
+2.583095528954969566e+01,3.400246311611367389e+01,1.370425996344092923e+01,2.440000000000000000e+02,2.360000000000000000e+02,2.270000000000000000e+02
+2.439985821790305565e+01,3.416240806979860878e+01,1.584274220247136000e+01,1.380000000000000000e+02,1.330000000000000000e+02,1.290000000000000000e+02
+3.061146677654581794e+01,2.998039109845590389e+01,9.616884886428939794e+00,4.400000000000000000e+01,3.300000000000000000e+01,2.800000000000000000e+01
+2.823290770678807604e+01,3.264147993506984591e+01,1.816224684847513515e+01,1.630000000000000000e+02,1.540000000000000000e+02,1.460000000000000000e+02
+2.788770294684161044e+01,3.426865390773915721e+01,2.166966214355425890e+01,8.800000000000000000e+01,7.400000000000000000e+01,6.200000000000000000e+01
+2.178292472606961283e+01,2.825140425034672731e+01,4.896630650161478471e+00,5.500000000000000000e+01,4.400000000000000000e+01,3.900000000000000000e+01
+2.459333104899867450e+01,3.643447644013945563e+01,2.374733020959132546e+01,9.000000000000000000e+01,9.700000000000000000e+01,9.600000000000000000e+01
+2.830169670055782305e+01,1.810953450119959030e+01,1.829033352194127104e+01,1.010000000000000000e+02,9.800000000000000000e+01,9.300000000000000000e+01
+2.501273235973842546e+01,1.842747292805889359e+01,1.024889671452600304e+01,1.810000000000000000e+02,1.680000000000000000e+02,1.490000000000000000e+02
+2.657022136741906948e+01,3.520825157525056426e+01,7.425711235129912602e+00,1.220000000000000000e+02,1.150000000000000000e+02,1.050000000000000000e+02
+2.175602766589373260e+01,3.519217870872216025e+01,2.920241535341183692e+01,8.800000000000000000e+01,7.100000000000000000e+01,5.800000000000000000e+01
+2.544391842429910611e+01,2.138073087469383537e+01,8.614025317339454091e+00,1.010000000000000000e+02,8.600000000000000000e+01,8.100000000000000000e+01
+2.293704940730806641e+01,3.790083321134001437e+01,2.523225466911527448e+01,5.900000000000000000e+01,3.500000000000000000e+01,2.800000000000000000e+01
+3.063742518660134451e+01,3.188403901552132780e+01,1.381968101822076989e+01,1.150000000000000000e+02,1.110000000000000000e+02,1.020000000000000000e+02
+2.396617085080783838e+01,3.386290168069112383e+01,2.980211178914834491e+01,8.700000000000000000e+01,6.900000000000000000e+01,5.600000000000000000e+01
+1.882929707147909326e+01,3.837343554650052369e+01,1.568783894655197386e+01,1.140000000000000000e+02,1.080000000000000000e+02,1.100000000000000000e+02
+2.289881528556311707e+01,3.587301621649194772e+01,1.577588255976699649e+01,1.230000000000000000e+02,1.170000000000000000e+02,1.180000000000000000e+02
+1.796979059542590562e+01,3.754360184716871629e+01,1.590149442274261560e+01,3.400000000000000000e+01,2.600000000000000000e+01,2.300000000000000000e+01
+2.747906908045280616e+01,3.215773281524923988e+01,1.935253365389707980e+01,1.570000000000000000e+02,1.470000000000000000e+02,1.410000000000000000e+02
+2.714620341052684083e+01,2.384274311056777762e+01,1.612154335740516942e+01,9.600000000000000000e+01,7.900000000000000000e+01,6.100000000000000000e+01
+2.575221187136563827e+01,2.115699090205246691e+01,1.777763938041398717e+01,6.500000000000000000e+01,5.300000000000000000e+01,4.800000000000000000e+01
+2.677367143547738237e+01,3.622485262803252937e+01,2.918290860804271247e+01,1.500000000000000000e+01,1.300000000000000000e+01,1.400000000000000000e+01
+1.182432448841502470e+01,2.993633993592888842e+01,1.619090763769566266e+01,6.700000000000000000e+01,5.700000000000000000e+01,5.600000000000000000e+01
+8.381198675043757262e+00,3.200024544519720848e+01,2.372777407232418412e+01,2.110000000000000000e+02,2.000000000000000000e+02,1.790000000000000000e+02
+2.508797020217921414e+01,3.432028873394964563e+01,1.546165950722701687e+01,4.800000000000000000e+01,4.000000000000000000e+01,3.800000000000000000e+01
+2.815571819769122186e+01,3.240460028554517891e+01,1.645743928378389853e+01,5.000000000000000000e+01,3.800000000000000000e+01,3.100000000000000000e+01
+2.483328432281299314e+01,3.394378792886796958e+01,1.587514272982369512e+01,1.240000000000000000e+02,1.190000000000000000e+02,1.160000000000000000e+02
+1.217058748136055613e+01,2.977497919949986738e+01,1.875828515240914030e+01,1.120000000000000000e+02,9.700000000000000000e+01,8.800000000000000000e+01
+1.143975223636760852e+01,2.901268117302751293e+01,8.876727609459734936e+00,1.400000000000000000e+02,1.240000000000000000e+02,1.090000000000000000e+02
+1.089078005669895965e+01,2.888810101091072013e+01,8.925468906763185828e+00,1.080000000000000000e+02,9.500000000000000000e+01,8.600000000000000000e+01
+2.682968541158037112e+01,3.506705137320706456e+01,2.273855634638424661e+01,9.000000000000000000e+01,9.100000000000000000e+01,9.500000000000000000e+01
+1.151998051698382675e+01,2.883704277339405309e+01,5.441454388748805826e+00,1.400000000000000000e+02,1.290000000000000000e+02,1.160000000000000000e+02
+2.921128389988682628e+01,3.171662837105595756e+01,1.846568252597576887e+01,9.900000000000000000e+01,8.700000000000000000e+01,7.800000000000000000e+01
+1.120724597805517675e+01,2.962054920613373099e+01,1.113045836189314031e+01,1.330000000000000000e+02,1.180000000000000000e+02,1.050000000000000000e+02
+2.369566508314538567e+01,3.449688304230916458e+01,1.888821981734470157e+01,8.900000000000000000e+01,6.900000000000000000e+01,5.500000000000000000e+01
+2.226996847807085800e+01,3.755390120863341252e+01,2.812921734863665435e+01,8.100000000000000000e+01,6.600000000000000000e+01,5.900000000000000000e+01
+1.219985676568129129e+01,3.036468618859910151e+01,2.229591113104768141e+01,1.410000000000000000e+02,1.310000000000000000e+02,1.250000000000000000e+02
+2.562416773982090490e+01,2.169863933747100404e+01,1.676760953779239216e+01,4.000000000000000000e+01,3.200000000000000000e+01,2.900000000000000000e+01
+1.009788274781779194e+01,2.840511652122944497e+01,1.579911973014893256e+01,7.900000000000000000e+01,6.400000000000000000e+01,5.700000000000000000e+01
+2.917803233405031804e+01,3.348866405197604479e+01,2.858026705634877374e+01,7.500000000000000000e+01,6.200000000000000000e+01,5.000000000000000000e+01
+2.734793712040684710e+01,2.642877094921747627e+01,2.696529120977979588e+01,1.110000000000000000e+02,1.020000000000000000e+02,8.700000000000000000e+01
+2.480930487327375289e+01,3.577499590251895256e+01,1.027087769204119994e+01,2.200000000000000000e+01,1.600000000000000000e+01,1.800000000000000000e+01
+1.143975223636760852e+01,2.901268117302751293e+01,8.876727609459734936e+00,1.400000000000000000e+02,1.240000000000000000e+02,1.090000000000000000e+02
+2.051632085626971147e+01,3.602409374129872788e+01,1.906835636581323357e+01,1.280000000000000000e+02,1.130000000000000000e+02,1.060000000000000000e+02
+1.196256528146389542e+01,2.970133589968744658e+01,1.671222171057200967e+01,5.200000000000000000e+01,4.100000000000000000e+01,3.900000000000000000e+01
+2.709663748614694967e+01,3.371396897456354935e+01,1.636591222194068251e+01,7.000000000000000000e+01,6.100000000000000000e+01,5.700000000000000000e+01
+2.649040300875328668e+01,3.267369883013195420e+01,2.078957698905346163e+01,4.200000000000000000e+01,3.700000000000000000e+01,3.500000000000000000e+01
+2.937255076504223794e+01,3.405784504220716258e+01,2.516512570954523653e+01,1.070000000000000000e+02,9.100000000000000000e+01,6.700000000000000000e+01
+2.470234533843408897e+01,1.845774526295445384e+01,7.838762087629730146e+00,1.270000000000000000e+02,1.180000000000000000e+02,1.030000000000000000e+02
+2.783290869176722993e+01,3.199135010001323209e+01,1.943681691537023326e+01,1.500000000000000000e+02,1.420000000000000000e+02,1.380000000000000000e+02
+1.180354516046392277e+01,2.856039269258373281e+01,5.138707123224713236e+00,4.900000000000000000e+01,4.200000000000000000e+01,3.900000000000000000e+01
+2.873504640392241427e+01,1.917670442526338448e+01,1.836161327410372834e+01,8.900000000000000000e+01,7.900000000000000000e+01,6.900000000000000000e+01
+2.378950655801476799e+01,1.835802056463161591e+01,5.234599827020970153e+00,2.540000000000000000e+02,2.550000000000000000e+02,2.500000000000000000e+02
+1.133432599154628129e+01,2.896700658960587660e+01,6.997800465510819024e+00,1.550000000000000000e+02,1.390000000000000000e+02,1.220000000000000000e+02
+2.360266296123099750e+01,3.708427631230621557e+01,2.609724404244448337e+01,6.700000000000000000e+01,6.600000000000000000e+01,6.700000000000000000e+01
+2.441099630342148785e+01,3.437677616943150127e+01,1.402257338718316682e+01,1.550000000000000000e+02,1.380000000000000000e+02,1.310000000000000000e+02
+1.793736983929936812e+01,3.717580383569002578e+01,2.417395976590039552e+01,1.030000000000000000e+02,9.400000000000000000e+01,8.800000000000000000e+01
+2.952655593085836827e+01,3.470668542701042725e+01,2.861859111827882174e+01,2.400000000000000000e+01,1.800000000000000000e+01,1.500000000000000000e+01
+1.779567657134586867e+01,3.619900679605893146e+01,2.538733024453301823e+01,1.070000000000000000e+02,9.500000000000000000e+01,8.700000000000000000e+01
+1.138178528940331802e+01,2.890691986767170363e+01,8.919031160180848516e+00,1.480000000000000000e+02,1.320000000000000000e+02,1.160000000000000000e+02
+3.138260874067580986e+01,3.075566817221744031e+01,1.729930432727377365e+01,1.170000000000000000e+02,1.060000000000000000e+02,9.700000000000000000e+01
+3.105559278506675724e+01,2.846891398868212164e+01,1.381631014593443219e+01,9.900000000000000000e+01,8.700000000000000000e+01,7.700000000000000000e+01
+3.054603027209252630e+01,3.002139041838003664e+01,1.943550323434113380e+01,7.400000000000000000e+01,5.900000000000000000e+01,4.600000000000000000e+01
+1.987896643105635519e+01,3.763193329143438604e+01,7.103525775411179133e+00,1.180000000000000000e+02,1.140000000000000000e+02,1.040000000000000000e+02
+2.890332004107886732e+01,3.481523603433373637e+01,2.570020541646926304e+01,9.900000000000000000e+01,8.200000000000000000e+01,6.200000000000000000e+01
+1.113666912241816398e+01,2.904552529073297507e+01,7.347108283204007328e+00,1.970000000000000000e+02,1.820000000000000000e+02,1.570000000000000000e+02
+1.136962480850076851e+01,2.959012546779446851e+01,1.140305012532131990e+01,2.180000000000000000e+02,1.990000000000000000e+02,1.740000000000000000e+02
+1.269628898832609565e+01,3.065586394652306623e+01,1.565209868326387799e+01,3.000000000000000000e+01,2.400000000000000000e+01,2.300000000000000000e+01
+1.749183929144235350e+01,3.492780408158105843e+01,2.628643737644488709e+01,1.080000000000000000e+02,9.900000000000000000e+01,8.500000000000000000e+01
+1.742274828795010677e+01,2.702980615164780431e+01,4.902672814824976300e+00,1.010000000000000000e+02,1.020000000000000000e+02,1.060000000000000000e+02
+9.889956058232698410e+00,2.846715491565688794e+01,1.665862209298354912e+01,1.760000000000000000e+02,1.660000000000000000e+02,1.540000000000000000e+02
+2.161780810106889206e+01,3.826578478805008388e+01,2.254597165234158496e+01,2.800000000000000000e+01,1.800000000000000000e+01,1.600000000000000000e+01
+2.555851096537978862e+01,2.242080356082619375e+01,1.771337482950607267e+01,1.120000000000000000e+02,9.600000000000000000e+01,7.300000000000000000e+01
+2.678763519822864581e+01,2.395017851187100177e+01,1.761039161067886383e+01,4.300000000000000000e+01,3.300000000000000000e+01,2.900000000000000000e+01
+2.266151363392264528e+01,3.442228587151539898e+01,1.302907072130300214e+01,1.470000000000000000e+02,1.250000000000000000e+02,1.100000000000000000e+02
+1.771056381912679356e+01,3.673918976810945480e+01,2.458777721996026244e+01,6.100000000000000000e+01,5.100000000000000000e+01,4.200000000000000000e+01
+2.866605055754943265e+01,3.291008128752398676e+01,1.240748485737217344e+01,1.040000000000000000e+02,9.500000000000000000e+01,9.300000000000000000e+01
+2.508463912907618010e+01,1.953583092585599701e+01,1.254372613174089857e+01,3.900000000000000000e+01,3.300000000000000000e+01,3.700000000000000000e+01
+2.334745391694023553e+01,3.685548189858160129e+01,2.145728546046987262e+01,5.500000000000000000e+01,5.000000000000000000e+01,5.100000000000000000e+01
+1.660549676830707355e+01,3.526834731688186508e+01,2.538602553577944221e+01,8.600000000000000000e+01,8.600000000000000000e+01,7.800000000000000000e+01
+2.318877036316105844e+01,3.753621943907695879e+01,2.342944838290125276e+01,1.250000000000000000e+02,1.140000000000000000e+02,9.900000000000000000e+01
+2.091248489037096547e+01,3.887985248833832941e+01,2.578886722635852280e+01,2.100000000000000000e+01,1.700000000000000000e+01,1.400000000000000000e+01
+2.626963695563288326e+01,2.291136448584791552e+01,1.715477352308867864e+01,1.600000000000000000e+01,1.200000000000000000e+01,1.300000000000000000e+01
+2.539420276137256494e+01,3.402441863592112270e+01,6.821954101139835025e+00,1.060000000000000000e+02,1.030000000000000000e+02,9.600000000000000000e+01
+2.845216539745863216e+01,3.519933471609505204e+01,2.834783625171407451e+01,6.800000000000000000e+01,5.000000000000000000e+01,3.700000000000000000e+01
+2.858209662463112366e+01,1.838774959090878980e+01,2.406256515841360866e+01,1.080000000000000000e+02,1.050000000000000000e+02,9.800000000000000000e+01
+2.502269522368678878e+01,1.883976653806614010e+01,1.655483903335432316e+01,1.290000000000000000e+02,1.190000000000000000e+02,1.090000000000000000e+02
+1.852769938455733367e+01,3.770638202821684359e+01,1.661016339813164322e+01,1.290000000000000000e+02,1.240000000000000000e+02,1.180000000000000000e+02
+1.946017061688159799e+01,3.762018664658766909e+01,1.863703703147784552e+01,1.080000000000000000e+02,9.400000000000000000e+01,8.400000000000000000e+01
+2.533256268382746512e+01,2.116296117160528922e+01,6.199127783117591051e+00,1.660000000000000000e+02,1.590000000000000000e+02,1.490000000000000000e+02
+2.292855784625548665e+01,3.794173752655689924e+01,2.492590363913368634e+01,8.500000000000000000e+01,8.200000000000000000e+01,7.300000000000000000e+01
+2.417959460447519504e+01,3.649971044194985126e+01,2.170880086675792597e+01,4.700000000000000000e+01,5.900000000000000000e+01,5.100000000000000000e+01
+3.105251147449485316e+01,3.030164620829487632e+01,1.917385546648850081e+01,7.300000000000000000e+01,5.400000000000000000e+01,3.900000000000000000e+01
+2.461340000556942442e+01,3.714422862742765830e+01,2.518948417304272169e+01,7.700000000000000000e+01,7.700000000000000000e+01,7.700000000000000000e+01
+2.852852114281377283e+01,3.400603093858981651e+01,2.192021428089134716e+01,8.900000000000000000e+01,8.500000000000000000e+01,7.300000000000000000e+01
+2.533659185316451712e+01,3.361461477654075480e+01,1.470927053649484151e+01,5.800000000000000000e+01,4.700000000000000000e+01,4.300000000000000000e+01
+8.126151227230765883e+00,3.174722295757163337e+01,2.090865858376497499e+01,1.610000000000000000e+02,1.470000000000000000e+02,1.320000000000000000e+02
+3.017833564903418520e+01,3.223885497581807158e+01,1.383498271057702667e+01,1.150000000000000000e+02,1.110000000000000000e+02,1.020000000000000000e+02
+2.551022240202003744e+01,2.115406519080929115e+01,1.391024052150721069e+01,4.300000000000000000e+01,3.600000000000000000e+01,3.600000000000000000e+01
+2.428618365000218660e+01,3.511458632396656299e+01,1.621795218460851373e+01,7.300000000000000000e+01,6.300000000000000000e+01,6.100000000000000000e+01
+2.554458065722047166e+01,3.605504768303298135e+01,2.406187409362424745e+01,1.030000000000000000e+02,7.800000000000000000e+01,5.200000000000000000e+01
+2.706344175241232364e+01,3.574403492396896098e+01,6.361780702221973449e+00,1.400000000000000000e+02,1.390000000000000000e+02,1.270000000000000000e+02
+1.007227109921482366e+01,2.855648444879074788e+01,1.524585867470804601e+01,1.380000000000000000e+02,1.220000000000000000e+02,1.080000000000000000e+02
+2.338718862212337868e+01,3.438396958803532755e+01,1.199528101059765106e+01,1.200000000000000000e+02,9.800000000000000000e+01,7.600000000000000000e+01
+9.515378952893520648e+00,2.849318775018890193e+01,1.473543043428166577e+01,2.330000000000000000e+02,2.180000000000000000e+02,1.970000000000000000e+02
+2.454650573834170757e+01,3.739452514979099362e+01,2.550227826454268509e+01,6.900000000000000000e+01,7.100000000000000000e+01,7.000000000000000000e+01
+2.966971072655464425e+01,3.381517001554254165e+01,2.427513997156621528e+01,4.300000000000000000e+01,2.800000000000000000e+01,2.400000000000000000e+01
+2.866745287492206629e+01,1.928367306268094339e+01,1.644737848531289615e+01,1.210000000000000000e+02,1.160000000000000000e+02,1.100000000000000000e+02
+2.393308047463894894e+01,3.710238148617303011e+01,2.354907827610797000e+01,6.600000000000000000e+01,5.800000000000000000e+01,4.900000000000000000e+01
+2.687253856999513957e+01,3.564854194446623126e+01,2.465506065455182139e+01,4.400000000000000000e+01,3.000000000000000000e+01,2.900000000000000000e+01
+2.381189407687044124e+01,3.364383722269315768e+01,1.904639779165834312e+01,1.330000000000000000e+02,1.210000000000000000e+02,1.080000000000000000e+02
+2.032442362710997585e+01,3.831155808424693987e+01,1.597703933840471890e+01,1.120000000000000000e+02,1.060000000000000000e+02,1.070000000000000000e+02
+2.719150445607202116e+01,3.485997441950362941e+01,2.201260878319331127e+01,9.600000000000000000e+01,1.000000000000000000e+02,1.040000000000000000e+02
+2.219254462220105850e+01,3.547037464492184000e+01,1.611125294694864962e+01,5.400000000000000000e+01,4.300000000000000000e+01,3.900000000000000000e+01
+1.646347518843889191e+01,3.443553378511030161e+01,1.028302591068531058e+01,2.460000000000000000e+02,2.320000000000000000e+02,2.050000000000000000e+02
+1.195226719544059080e+01,2.917956236752891286e+01,1.945029740669045282e+01,6.000000000000000000e+01,4.900000000000000000e+01,3.900000000000000000e+01
+2.664919007112699845e+01,3.480937897352112742e+01,8.374633552066887532e+00,1.600000000000000000e+02,1.540000000000000000e+02,1.400000000000000000e+02
+2.405105682986083337e+01,3.489029266314305744e+01,1.149640056903847096e+01,1.500000000000000000e+02,1.390000000000000000e+02,1.320000000000000000e+02
+2.912280975324815913e+01,3.395167743131357696e+01,2.301674539483163784e+01,9.900000000000000000e+01,8.300000000000000000e+01,5.900000000000000000e+01
+2.111858354231762291e+01,3.691669886513697207e+01,1.592969506115520062e+01,1.110000000000000000e+02,1.030000000000000000e+02,9.400000000000000000e+01
+1.091750584941014601e+01,2.932428061349019544e+01,1.403011963850693533e+01,2.320000000000000000e+02,2.150000000000000000e+02,1.920000000000000000e+02
+2.131501017701624789e+01,2.620710836994733128e+01,4.976292434899120209e+00,1.000000000000000000e+02,9.900000000000000000e+01,1.040000000000000000e+02
+2.736368439257229213e+01,3.236217046974086031e+01,1.920084830990859004e+01,7.600000000000000000e+01,6.100000000000000000e+01,5.300000000000000000e+01
+2.560898353842456032e+01,2.150102142764944446e+01,1.686597985982470504e+01,1.190000000000000000e+02,1.120000000000000000e+02,1.020000000000000000e+02
+2.021808573928339214e+01,3.707614167346091705e+01,1.288084662420472881e+01,1.090000000000000000e+02,1.100000000000000000e+02,1.200000000000000000e+02
+2.360731413079493279e+01,1.879574757403495511e+01,2.059518588787669557e+01,1.620000000000000000e+02,1.550000000000000000e+02,1.450000000000000000e+02
+2.687498772562530647e+01,3.240323433077723081e+01,1.944833983837403224e+01,1.370000000000000000e+02,1.250000000000000000e+02,1.170000000000000000e+02
+3.037663469538528460e+01,3.203052882224024245e+01,1.374193675495443934e+01,9.100000000000000000e+01,5.600000000000000000e+01,5.200000000000000000e+01
+1.289682521853413633e+01,3.070280594749908332e+01,2.301477635697452229e+01,1.340000000000000000e+02,1.260000000000000000e+02,1.240000000000000000e+02
+1.089810684095425763e+01,2.893578294626274428e+01,8.599021741298404464e+00,1.090000000000000000e+02,9.900000000000000000e+01,9.000000000000000000e+01
+2.546917155146508449e+01,1.953152006077911906e+01,1.236684879522081104e+01,6.200000000000000000e+01,5.400000000000000000e+01,5.200000000000000000e+01
+2.539180738574991381e+01,2.136813104440487976e+01,1.717800302848700511e+01,5.100000000000000000e+01,3.900000000000000000e+01,3.700000000000000000e+01
+1.008919609635216119e+01,2.795132752682054900e+01,7.923434817599947166e+00,1.650000000000000000e+02,1.560000000000000000e+02,1.450000000000000000e+02
+2.905280937315635725e+01,3.317461630011519702e+01,1.198017095451294445e+01,7.400000000000000000e+01,6.600000000000000000e+01,6.300000000000000000e+01
+2.673208543864551245e+01,3.465172773223807923e+01,8.650278143257750685e+00,6.100000000000000000e+01,5.100000000000000000e+01,4.900000000000000000e+01
+2.374681209486765709e+01,3.750244811056151661e+01,2.560294825419388332e+01,5.200000000000000000e+01,4.400000000000000000e+01,3.300000000000000000e+01
+2.847813117045517473e+01,3.428076999354166077e+01,2.315794082689406963e+01,7.000000000000000000e+01,5.700000000000000000e+01,4.700000000000000000e+01
+1.719720057935417401e+01,3.664800616255154608e+01,1.505417320799143610e+01,1.120000000000000000e+02,1.010000000000000000e+02,9.100000000000000000e+01
+2.842564908026843895e+01,1.836531219622661837e+01,1.975054621277796230e+01,1.500000000000000000e+01,1.300000000000000000e+01,1.100000000000000000e+01
+2.234142552672773263e+01,3.516434206065027723e+01,1.872270160873827294e+01,9.800000000000000000e+01,8.200000000000000000e+01,7.100000000000000000e+01
+1.026415590736814565e+01,2.820269969499703677e+01,1.681942609022110346e+01,1.170000000000000000e+02,1.090000000000000000e+02,1.000000000000000000e+02
+2.703341906390526717e+01,3.586905000495409013e+01,2.772900568589246006e+01,7.100000000000000000e+01,5.700000000000000000e+01,4.400000000000000000e+01
+1.969332006879788821e+01,3.737572362152705097e+01,1.272123784429069637e+01,9.500000000000000000e+01,1.060000000000000000e+02,1.210000000000000000e+02
+2.687878063078666102e+01,3.136989029257650330e+01,2.914415247373244355e+01,8.800000000000000000e+01,7.400000000000000000e+01,6.100000000000000000e+01
+9.029454320756496344e+00,3.128763005073737347e+01,1.205561770304118951e+01,5.300000000000000000e+01,4.200000000000000000e+01,3.600000000000000000e+01
+3.083032629662917046e+01,3.190675754655965690e+01,1.438053647381225630e+01,7.000000000000000000e+01,7.700000000000000000e+01,9.000000000000000000e+01
+1.796979059542590562e+01,3.754360184716871629e+01,1.590149442274261560e+01,3.400000000000000000e+01,2.600000000000000000e+01,2.300000000000000000e+01
+1.000275848199964024e+01,2.935196980089037666e+01,2.234960336463852215e+01,4.400000000000000000e+01,4.400000000000000000e+01,4.400000000000000000e+01
+1.175768822646255174e+01,2.976878010531353169e+01,1.567425354790446335e+01,1.100000000000000000e+02,1.010000000000000000e+02,9.900000000000000000e+01
+2.795428623324646722e+01,3.448421879390112821e+01,2.293937567481671280e+01,9.800000000000000000e+01,6.900000000000000000e+01,5.600000000000000000e+01
+3.147650191793075081e+01,3.087844543194872315e+01,2.383481623888007306e+01,7.700000000000000000e+01,6.400000000000000000e+01,5.500000000000000000e+01
+3.022775321504724744e+01,3.322040967030829961e+01,2.178623414020686511e+01,3.400000000000000000e+01,3.000000000000000000e+01,2.900000000000000000e+01
+2.396580336054370619e+01,3.425812650044797181e+01,1.892704516604801768e+01,8.500000000000000000e+01,6.600000000000000000e+01,5.300000000000000000e+01
+2.092271826977075477e+01,3.670765382463916637e+01,1.192793175165867225e+01,2.160000000000000000e+02,1.940000000000000000e+02,1.750000000000000000e+02
+2.633276474239208298e+01,3.235021177100518486e+01,1.606050505076780155e+01,8.800000000000000000e+01,7.700000000000000000e+01,6.900000000000000000e+01
+3.024079586338803693e+01,3.077328724142748584e+01,9.317189876903270829e+00,1.280000000000000000e+02,1.230000000000000000e+02,1.200000000000000000e+02
+1.159918639154032682e+01,2.968795967678628500e+01,1.681903965017582081e+01,1.190000000000000000e+02,1.100000000000000000e+02,1.130000000000000000e+02
+1.022315401242743604e+01,2.780955644798841675e+01,1.964816511517274478e+01,8.300000000000000000e+01,6.500000000000000000e+01,5.100000000000000000e+01
+2.935510666236220700e+01,3.383297045475330123e+01,2.380476456650644224e+01,1.090000000000000000e+02,9.300000000000000000e+01,7.500000000000000000e+01
+9.659002773453257973e+00,2.840451612054442165e+01,1.694379610144133963e+01,1.680000000000000000e+02,1.580000000000000000e+02,1.460000000000000000e+02
+9.098138227628137287e+00,3.161413238553446803e+01,1.549668193281773654e+01,1.320000000000000000e+02,1.210000000000000000e+02,1.110000000000000000e+02
+2.827639550661764645e+01,3.495170579112066633e+01,2.618611964543473292e+01,7.100000000000000000e+01,4.900000000000000000e+01,3.300000000000000000e+01
+2.633529609404486038e+01,3.614638253524331901e+01,2.883122072606565922e+01,1.700000000000000000e+01,1.500000000000000000e+01,1.100000000000000000e+01
+1.003062707745718640e+01,2.837260094523912102e+01,1.654961414236080586e+01,7.300000000000000000e+01,5.900000000000000000e+01,4.800000000000000000e+01
+2.633529609404485328e+01,3.614638253524331191e+01,2.883122072606565212e+01,1.700000000000000000e+01,1.500000000000000000e+01,1.100000000000000000e+01
+2.508873904256256893e+01,3.608326518632760838e+01,2.202282915527035811e+01,4.900000000000000000e+01,3.500000000000000000e+01,3.900000000000000000e+01
+2.187562144005414311e+01,3.832999355330718316e+01,2.588736224677810327e+01,5.300000000000000000e+01,5.300000000000000000e+01,5.400000000000000000e+01
+8.807095581345716795e+00,3.156689757556210552e+01,1.297453807634248157e+01,6.800000000000000000e+01,4.900000000000000000e+01,4.000000000000000000e+01
+1.843186600859529278e+01,3.546569407403759300e+01,2.675885395427531677e+01,6.200000000000000000e+01,4.900000000000000000e+01,4.000000000000000000e+01
+2.410417036957342063e+01,1.939054323888916898e+01,2.006428350983815889e+01,5.900000000000000000e+01,4.300000000000000000e+01,3.200000000000000000e+01
+2.672859013162155151e+01,3.501326659694858279e+01,2.196696042136566618e+01,1.010000000000000000e+02,1.030000000000000000e+02,1.070000000000000000e+02
+8.654632908105352129e+00,3.177803355268597585e+01,1.873803663322153312e+01,1.340000000000000000e+02,1.180000000000000000e+02,1.020000000000000000e+02
+1.152914690170137746e+01,2.926060497194171006e+01,1.155608004841004544e+01,1.570000000000000000e+02,1.390000000000000000e+02,1.190000000000000000e+02
+2.131760093413915058e+01,3.574381077288309427e+01,1.460609567561524713e+01,1.090000000000000000e+02,9.900000000000000000e+01,9.200000000000000000e+01
+1.752856795916492771e+01,3.634165382921426612e+01,2.479530522163260997e+01,1.100000000000000000e+02,1.000000000000000000e+02,9.100000000000000000e+01
+3.158476008442429261e+01,3.290058824662059322e+01,2.386237969068108455e+01,2.000000000000000000e+01,2.000000000000000000e+01,2.000000000000000000e+01
+2.635024003916324986e+01,3.627060764187095998e+01,2.787168774543996363e+01,6.900000000000000000e+01,5.300000000000000000e+01,4.300000000000000000e+01
+2.679839165560995795e+01,3.296323132271617595e+01,1.921616980312099088e+01,7.600000000000000000e+01,6.600000000000000000e+01,5.900000000000000000e+01
+2.745320624522091180e+01,3.483998729423841212e+01,2.223104344580635328e+01,4.100000000000000000e+01,5.600000000000000000e+01,5.000000000000000000e+01
+2.900650568005885788e+01,3.400229339204312851e+01,2.254369238474533788e+01,6.600000000000000000e+01,5.800000000000000000e+01,4.700000000000000000e+01
+2.900650568005885788e+01,3.400229339204312851e+01,2.254369238474533788e+01,6.600000000000000000e+01,5.800000000000000000e+01,4.700000000000000000e+01
+9.260529989262190398e+00,2.891388965190780524e+01,1.735005009496319772e+01,6.300000000000000000e+01,5.300000000000000000e+01,4.900000000000000000e+01
+2.861526518161698363e+01,1.891478744089672404e+01,2.004023831606285810e+01,2.000000000000000000e+01,1.500000000000000000e+01,9.000000000000000000e+00
+2.491133424997019929e+01,1.991913496210863244e+01,1.985391602406890499e+01,1.250000000000000000e+02,1.130000000000000000e+02,9.500000000000000000e+01
+2.666416192945800390e+01,2.705824159604641821e+01,2.765751816158413234e+01,8.800000000000000000e+01,7.400000000000000000e+01,6.100000000000000000e+01
+2.915814205437024142e+01,3.275026819746913276e+01,1.608449195233834317e+01,7.100000000000000000e+01,6.000000000000000000e+01,5.400000000000000000e+01
+2.532916861905103190e+01,3.577500038973220597e+01,2.141744823231886485e+01,7.100000000000000000e+01,5.500000000000000000e+01,5.800000000000000000e+01
+2.757128364869853598e+01,3.450474335347560384e+01,2.195421873890786912e+01,9.900000000000000000e+01,9.900000000000000000e+01,1.040000000000000000e+02
+1.672970892700110568e+01,3.399624437375537411e+01,2.616733119632464977e+01,3.300000000000000000e+01,3.100000000000000000e+01,3.700000000000000000e+01
+2.480800627007374359e+01,1.821308827771014194e+01,2.018992931060337881e+01,9.300000000000000000e+01,8.000000000000000000e+01,6.600000000000000000e+01
+1.625500888838123359e+01,3.341548261445358037e+01,2.635332836813571333e+01,1.070000000000000000e+02,9.400000000000000000e+01,8.500000000000000000e+01
+2.494328092207034686e+01,1.992000992437971618e+01,6.210522893373942033e+00,1.200000000000000000e+02,1.100000000000000000e+02,1.000000000000000000e+02
+3.101595757723129765e+01,2.875221003391514074e+01,1.631667051782216404e+01,6.200000000000000000e+01,5.200000000000000000e+01,4.800000000000000000e+01
+2.270168893696354218e+01,3.522488237916319775e+01,1.676802306609049964e+01,1.710000000000000000e+02,1.600000000000000000e+02,1.530000000000000000e+02
+2.485100998526885618e+01,1.962453340639764576e+01,1.889911316885713077e+01,1.200000000000000000e+02,1.080000000000000000e+02,9.500000000000000000e+01
+2.452691750197205423e+01,3.353171053723264805e+01,2.962660983303059226e+01,5.500000000000000000e+01,4.300000000000000000e+01,3.300000000000000000e+01
+1.949036945364363405e+01,3.776761191402469109e+01,1.358317144818383682e+01,8.300000000000000000e+01,9.500000000000000000e+01,1.120000000000000000e+02
+2.940295882527928839e+01,3.277186195844823402e+01,1.329176281210887289e+01,1.250000000000000000e+02,1.180000000000000000e+02,1.120000000000000000e+02
+1.174665988822393281e+01,2.847739121614335644e+01,4.891547054616552259e+00,1.050000000000000000e+02,9.600000000000000000e+01,8.100000000000000000e+01
+2.102273948976985807e+01,3.874992815082492825e+01,2.396791375844590632e+01,1.700000000000000000e+01,1.700000000000000000e+01,1.700000000000000000e+01
+3.034797423863482990e+01,3.238285265634438304e+01,1.535926366096300377e+01,8.200000000000000000e+01,6.800000000000000000e+01,5.900000000000000000e+01
+2.928518544520828470e+01,3.393312023962459989e+01,2.585013240709134053e+01,9.500000000000000000e+01,8.000000000000000000e+01,5.700000000000000000e+01
+2.889388051135285096e+01,3.400515551352813759e+01,2.285760040924128944e+01,1.240000000000000000e+02,1.120000000000000000e+02,9.700000000000000000e+01
+2.304942415599675343e+01,3.452217895129544445e+01,1.301722130016034917e+01,2.540000000000000000e+02,2.500000000000000000e+02,2.410000000000000000e+02
+2.358844775855282094e+01,3.735317193693160931e+01,2.406005976933525048e+01,5.700000000000000000e+01,3.900000000000000000e+01,2.700000000000000000e+01
+9.889956058232698410e+00,2.846715491565688794e+01,1.665862209298354912e+01,1.760000000000000000e+02,1.660000000000000000e+02,1.540000000000000000e+02
+2.336597378972150096e+01,3.438441534369699326e+01,1.354370386753165967e+01,1.710000000000000000e+02,1.560000000000000000e+02,1.470000000000000000e+02
+2.788363418574708419e+01,3.039484210723166058e+01,2.857344958037771576e+01,3.800000000000000000e+01,2.500000000000000000e+01,1.700000000000000000e+01
+2.367720393713760529e+01,3.752197930089801048e+01,2.527169673470599420e+01,5.200000000000000000e+01,4.000000000000000000e+01,3.300000000000000000e+01
+2.746973529919454293e+01,3.069335229198624759e+01,2.872747973892857942e+01,1.000000000000000000e+02,8.000000000000000000e+01,6.900000000000000000e+01
+2.327891807526533441e+01,3.468337780969820727e+01,1.890010498053254651e+01,8.800000000000000000e+01,7.100000000000000000e+01,5.600000000000000000e+01
+2.051115857049650870e+01,3.766369457125626496e+01,1.227563683824028296e+01,1.970000000000000000e+02,1.810000000000000000e+02,1.650000000000000000e+02
+3.200622095170250958e+01,3.136657601709868004e+01,1.631157993307365572e+01,1.020000000000000000e+02,9.600000000000000000e+01,9.400000000000000000e+01
+1.992504809824212941e+01,3.772367117693728034e+01,1.381003401472511882e+01,7.500000000000000000e+01,8.800000000000000000e+01,1.020000000000000000e+02
+2.837854065252921387e+01,1.919046046387109428e+01,1.461374191180683191e+01,1.060000000000000000e+02,9.900000000000000000e+01,8.300000000000000000e+01
+1.996439935995934789e+01,3.718721753647081840e+01,1.194948723671634028e+01,1.230000000000000000e+02,1.070000000000000000e+02,9.400000000000000000e+01
+1.132374085032149758e+01,2.895702365309728066e+01,6.598128210741002420e+00,2.020000000000000000e+02,1.890000000000000000e+02,1.670000000000000000e+02
+2.498385098908517321e+01,3.330115631563829481e+01,1.376961577959630745e+01,1.640000000000000000e+02,1.490000000000000000e+02,1.400000000000000000e+02
+2.415111383403207412e+01,1.825978441549877829e+01,5.422430216968158412e+00,1.780000000000000000e+02,1.580000000000000000e+02,1.250000000000000000e+02
+1.086297358581336070e+01,2.902922595661944882e+01,6.069463244902016719e+00,9.300000000000000000e+01,8.100000000000000000e+01,6.900000000000000000e+01
+2.381355776423775339e+01,3.565624118444101498e+01,8.809282002015732971e+00,2.550000000000000000e+02,2.540000000000000000e+02,2.420000000000000000e+02
+2.543319629058324338e+01,2.122404564611062128e+01,1.138586756851464088e+01,9.300000000000000000e+01,7.900000000000000000e+01,7.100000000000000000e+01
+2.889309769849769083e+01,3.414975054321086390e+01,2.626070314297475861e+01,3.900000000000000000e+01,2.200000000000000000e+01,1.700000000000000000e+01
+3.057209358759395812e+01,3.181098874293385492e+01,1.257327337546617052e+01,1.120000000000000000e+02,1.020000000000000000e+02,1.000000000000000000e+02
+2.415144075117702371e+01,3.376635146525082831e+01,2.960404231248273277e+01,5.400000000000000000e+01,4.300000000000000000e+01,3.200000000000000000e+01
+2.970317642466361718e+01,3.243473403007670441e+01,1.456979355887805205e+01,9.600000000000000000e+01,8.200000000000000000e+01,7.500000000000000000e+01
+3.092184855923224873e+01,2.919877073148041191e+01,1.710400395498718851e+01,2.700000000000000000e+01,1.900000000000000000e+01,1.500000000000000000e+01
+2.513258640115882869e+01,2.046355875330857899e+01,1.999705627430641286e+01,8.800000000000000000e+01,7.400000000000000000e+01,6.100000000000000000e+01
+2.715058069344484082e+01,2.396916873979717977e+01,1.930570995391869360e+01,8.600000000000000000e+01,6.600000000000000000e+01,5.200000000000000000e+01
+2.197397974590504077e+01,3.804424326545323964e+01,2.273241081959493926e+01,4.200000000000000000e+01,2.700000000000000000e+01,2.700000000000000000e+01
+9.288914544174252441e+00,2.884680422008085898e+01,1.642896728505144921e+01,3.900000000000000000e+01,3.000000000000000000e+01,2.300000000000000000e+01
+2.999653829410126349e+01,2.839678276002397439e+01,2.487241706416844522e+01,1.020000000000000000e+02,8.800000000000000000e+01,7.900000000000000000e+01
+1.062110706898633694e+01,2.891720345663960146e+01,1.133159261153556940e+01,3.400000000000000000e+01,2.800000000000000000e+01,2.800000000000000000e+01
+2.452106035672971274e+01,3.677581462369304433e+01,2.409678721739746265e+01,6.900000000000000000e+01,5.100000000000000000e+01,4.900000000000000000e+01
+2.437683408589956713e+01,1.913682828842047456e+01,1.770759934210078512e+01,2.700000000000000000e+01,2.400000000000000000e+01,2.000000000000000000e+01
+2.727105707910378030e+01,3.147644079663137262e+01,1.264771497727741512e+01,1.180000000000000000e+02,1.110000000000000000e+02,1.050000000000000000e+02
+2.410417036957342063e+01,1.939054323888916898e+01,2.006428350983815889e+01,5.900000000000000000e+01,4.300000000000000000e+01,3.200000000000000000e+01
+2.409690597916329580e+01,3.558907025939462443e+01,8.564826872602615992e+00,9.400000000000000000e+01,8.600000000000000000e+01,7.700000000000000000e+01
+2.532916861905103190e+01,3.577500038973220597e+01,2.141744823231886485e+01,7.100000000000000000e+01,5.500000000000000000e+01,5.800000000000000000e+01
+2.550840186881033134e+01,3.556792726647385194e+01,2.366313630267048751e+01,9.300000000000000000e+01,7.300000000000000000e+01,4.400000000000000000e+01
+1.904551903837928606e+01,3.858190899371026461e+01,1.404823352948447912e+01,1.400000000000000000e+02,1.340000000000000000e+02,1.310000000000000000e+02
+2.543934670254524377e+01,3.510809172193400940e+01,7.951219182962831589e+00,1.060000000000000000e+02,1.020000000000000000e+02,9.200000000000000000e+01
+2.881710172562134176e+01,1.911132141947851792e+01,1.820006699661118432e+01,4.700000000000000000e+01,3.600000000000000000e+01,2.900000000000000000e+01
+2.089800712616862910e+01,3.690625282026356047e+01,1.478813624945561855e+01,9.700000000000000000e+01,8.400000000000000000e+01,7.100000000000000000e+01
+2.486005139104497630e+01,1.869956476977659321e+01,1.919628259829659811e+01,1.220000000000000000e+02,1.130000000000000000e+02,1.040000000000000000e+02
+2.495636798756193286e+01,3.371663595120310219e+01,1.927888298645048337e+01,1.530000000000000000e+02,1.480000000000000000e+02,1.450000000000000000e+02
+2.879757155350068487e+01,1.918610215469488978e+01,1.636037666614181774e+01,1.170000000000000000e+02,1.080000000000000000e+02,1.030000000000000000e+02
+2.932931429106387000e+01,3.410340105612420558e+01,2.420424143302457054e+01,1.030000000000000000e+02,8.800000000000000000e+01,6.500000000000000000e+01
+2.843274048607236892e+01,3.487400429980849026e+01,2.594906064086800157e+01,3.600000000000000000e+01,2.000000000000000000e+01,2.000000000000000000e+01
+2.719707773940250206e+01,3.109374684973110448e+01,2.893635644724579237e+01,8.700000000000000000e+01,7.000000000000000000e+01,6.000000000000000000e+01
+2.242980749979928135e+01,3.644231271353751822e+01,2.852529059107072484e+01,5.600000000000000000e+01,4.200000000000000000e+01,3.400000000000000000e+01
+3.154846326529785117e+01,3.283849690024939605e+01,2.459026927785505379e+01,6.200000000000000000e+01,5.900000000000000000e+01,5.500000000000000000e+01
+2.071861099520046068e+01,3.644212884196767277e+01,1.849981569273919391e+01,1.360000000000000000e+02,1.260000000000000000e+02,1.190000000000000000e+02
+2.435467588209098722e+01,3.609188174592166831e+01,6.936360453148475713e+00,1.190000000000000000e+02,1.100000000000000000e+02,1.060000000000000000e+02
+3.164354473154777025e+01,3.096342651270171942e+01,1.307799733514595353e+01,1.280000000000000000e+02,1.180000000000000000e+02,1.160000000000000000e+02
+2.497364468596742526e+01,3.583580313691069819e+01,7.878877696298541622e+00,1.370000000000000000e+02,1.310000000000000000e+02,1.190000000000000000e+02
+8.946674886941291760e+00,3.194433400446459359e+01,1.706433598619229031e+01,2.460000000000000000e+02,2.300000000000000000e+02,2.040000000000000000e+02
+2.938320575186698846e+01,2.782774136522549924e+01,1.951375945088350861e+01,7.900000000000000000e+01,6.000000000000000000e+01,4.600000000000000000e+01
+2.823290770678807604e+01,3.264147993506984591e+01,1.816224684847513515e+01,1.630000000000000000e+02,1.540000000000000000e+02,1.460000000000000000e+02
+1.638952636042774103e+01,3.606038472441551335e+01,1.673585903602239000e+01,1.030000000000000000e+02,8.100000000000000000e+01,5.700000000000000000e+01
+2.260709316613740683e+01,3.780074241401771218e+01,2.357955460094937195e+01,9.100000000000000000e+01,7.900000000000000000e+01,5.600000000000000000e+01
+2.815571819769122186e+01,3.240460028554517891e+01,1.645743928378389853e+01,5.000000000000000000e+01,3.800000000000000000e+01,3.100000000000000000e+01
+2.908144874828642656e+01,3.213126403351181182e+01,1.907730698866039631e+01,1.290000000000000000e+02,1.190000000000000000e+02,1.110000000000000000e+02
+2.666416192945800390e+01,2.705824159604641821e+01,2.765751816158413234e+01,8.800000000000000000e+01,7.400000000000000000e+01,6.100000000000000000e+01
+1.950370318260492297e+01,3.816728501455313705e+01,9.061009089561425256e+00,2.150000000000000000e+02,1.920000000000000000e+02,1.800000000000000000e+02
+1.295659219025011311e+01,2.998496737320447281e+01,1.937039316322708160e+01,7.400000000000000000e+01,5.700000000000000000e+01,4.700000000000000000e+01
+2.619999211774286962e+01,3.492099201367243921e+01,9.355726108723104062e+00,1.460000000000000000e+02,1.510000000000000000e+02,1.540000000000000000e+02
+3.179070964312552761e+01,3.172653062077263542e+01,1.698576653691276306e+01,4.700000000000000000e+01,3.900000000000000000e+01,3.300000000000000000e+01
+2.162497263328837960e+01,3.831368139836308728e+01,2.314183071741336306e+01,3.700000000000000000e+01,2.400000000000000000e+01,1.900000000000000000e+01
+2.396580336054370619e+01,3.425812650044797181e+01,1.892704516604801768e+01,8.500000000000000000e+01,6.600000000000000000e+01,5.300000000000000000e+01
+2.219254462220105850e+01,3.547037464492184000e+01,1.611125294694864962e+01,5.400000000000000000e+01,4.300000000000000000e+01,3.900000000000000000e+01
+3.158476008442429261e+01,3.290058824662059322e+01,2.386237969068108455e+01,2.000000000000000000e+01,2.000000000000000000e+01,2.000000000000000000e+01
+2.546402350818713600e+01,2.124966392970489082e+01,1.339253615818990006e+01,8.400000000000000000e+01,7.000000000000000000e+01,6.500000000000000000e+01
+2.979891672467327979e+01,3.346794386486808293e+01,2.207127580848474935e+01,5.900000000000000000e+01,4.100000000000000000e+01,2.900000000000000000e+01
+2.968425355644240682e+01,3.338876195703157634e+01,2.168221317508306356e+01,4.600000000000000000e+01,3.300000000000000000e+01,3.000000000000000000e+01
+2.550840186881033134e+01,3.556792726647385194e+01,2.366313630267048751e+01,9.300000000000000000e+01,7.300000000000000000e+01,4.400000000000000000e+01
+2.981163693554151806e+01,3.246564794347330007e+01,1.405099326162156892e+01,7.800000000000000000e+01,9.300000000000000000e+01,1.080000000000000000e+02
+2.758368030850873609e+01,2.695726996052381708e+01,2.660631712853918529e+01,3.800000000000000000e+01,3.500000000000000000e+01,3.600000000000000000e+01
+2.914676259439380246e+01,3.277435080956323077e+01,1.405731244224974041e+01,1.430000000000000000e+02,1.350000000000000000e+02,1.320000000000000000e+02
+1.965493464443094496e+01,3.783476913394886765e+01,6.706832675449534875e+00,1.080000000000000000e+02,1.010000000000000000e+02,9.200000000000000000e+01
+2.830481916564486511e+01,1.820710896649988086e+01,1.603678451318448239e+01,4.700000000000000000e+01,4.000000000000000000e+01,3.700000000000000000e+01
+2.789037683787539379e+01,3.273702523951171628e+01,2.904501537667838207e+01,9.500000000000000000e+01,8.000000000000000000e+01,6.800000000000000000e+01
+2.685544776597980743e+01,3.313986500315485273e+01,1.830870985291939235e+01,1.210000000000000000e+02,1.070000000000000000e+02,9.700000000000000000e+01
+2.385173947731305333e+01,3.431121802703716384e+01,1.465553055238927982e+01,7.700000000000000000e+01,6.700000000000000000e+01,6.100000000000000000e+01
+2.954280045358682116e+01,3.242773089731716141e+01,1.183659155935688467e+01,1.190000000000000000e+02,1.060000000000000000e+02,9.900000000000000000e+01
+2.219240453687769232e+01,3.397555009067693987e+01,1.494741194166045517e+01,8.500000000000000000e+01,7.700000000000000000e+01,7.400000000000000000e+01
+2.761748430780683705e+01,1.900942356532699407e+01,1.076894425848806058e+01,5.100000000000000000e+01,3.900000000000000000e+01,2.700000000000000000e+01
+2.735176500908125519e+01,3.280630077303146663e+01,1.685619025146072048e+01,1.460000000000000000e+02,1.370000000000000000e+02,1.310000000000000000e+02
+2.828182651318377694e+01,3.272507789888465624e+01,1.450034317701510922e+01,8.500000000000000000e+01,7.300000000000000000e+01,6.500000000000000000e+01
+2.746973529919454293e+01,3.069335229198624759e+01,2.872747973892857942e+01,1.000000000000000000e+02,8.000000000000000000e+01,6.900000000000000000e+01
+2.337486943788693239e+01,3.443189916415430218e+01,1.380438799482612211e+01,2.250000000000000000e+02,2.070000000000000000e+02,1.890000000000000000e+02
+2.871062560573410849e+01,3.141726175267787369e+01,6.078118479040401034e+00,2.800000000000000000e+01,2.400000000000000000e+01,2.500000000000000000e+01
+1.872360048585121817e+01,3.812702765441906649e+01,1.329165436289894409e+01,1.410000000000000000e+02,1.350000000000000000e+02,1.350000000000000000e+02
+2.906111895000138290e+01,3.284751115487968320e+01,1.402025923416046993e+01,1.390000000000000000e+02,1.310000000000000000e+02,1.290000000000000000e+02
+2.498385098908517321e+01,3.330115631563829481e+01,1.376961577959630745e+01,1.640000000000000000e+02,1.490000000000000000e+02,1.400000000000000000e+02
+1.222371638475382127e+01,2.880715966889942337e+01,1.966141960180034687e+01,1.110000000000000000e+02,1.010000000000000000e+02,9.200000000000000000e+01
+2.472863893078123354e+01,2.165239951516353756e+01,2.004533549446568585e+01,9.900000000000000000e+01,8.500000000000000000e+01,6.900000000000000000e+01
+2.940058706280046508e+01,3.380287724454417742e+01,2.182164251158613766e+01,1.040000000000000000e+02,1.000000000000000000e+02,8.800000000000000000e+01
+9.078120731842618696e+00,3.187332251639202241e+01,1.719030882686513806e+01,1.210000000000000000e+02,1.040000000000000000e+02,9.300000000000000000e+01
+2.988362745743865645e+01,3.109565508180100224e+01,1.928101884038670377e+01,4.900000000000000000e+01,3.800000000000000000e+01,3.200000000000000000e+01
+1.724832070948054863e+01,3.330028866577863766e+01,2.736881018671452637e+01,1.010000000000000000e+02,8.900000000000000000e+01,7.300000000000000000e+01
+2.551389225879652400e+01,3.326016342841304407e+01,1.205342763744044099e+01,1.280000000000000000e+02,1.100000000000000000e+02,9.300000000000000000e+01
+2.446063676585266933e+01,3.383813631654550846e+01,1.341368052844316949e+01,1.380000000000000000e+02,1.220000000000000000e+02,1.110000000000000000e+02
+3.050755630783296368e+01,3.211518375064355268e+01,1.247257593287239708e+01,1.070000000000000000e+02,9.400000000000000000e+01,8.800000000000000000e+01
+1.139591207498012793e+01,2.905589426723766167e+01,7.763470638092316634e+00,1.360000000000000000e+02,1.230000000000000000e+02,1.070000000000000000e+02
+2.433432298293875462e+01,3.747048976518931340e+01,1.318232488153096327e+01,1.820000000000000000e+02,1.570000000000000000e+02,1.340000000000000000e+02
+3.058769773263532343e+01,3.222797202237659064e+01,1.570673923932719873e+01,9.500000000000000000e+01,8.500000000000000000e+01,8.200000000000000000e+01
+2.256987091983793547e+01,3.507561197604282199e+01,1.882576090905271116e+01,8.300000000000000000e+01,6.700000000000000000e+01,4.900000000000000000e+01
+2.828229313271881296e+01,3.228350575611374751e+01,2.854438309132772744e+01,9.000000000000000000e+01,7.600000000000000000e+01,6.300000000000000000e+01
+2.140895768055916903e+01,3.631402695169096262e+01,2.801203695103222913e+01,8.800000000000000000e+01,7.400000000000000000e+01,6.300000000000000000e+01
+2.773265179827145843e+01,3.248468221976742853e+01,1.915043647698232832e+01,6.700000000000000000e+01,5.300000000000000000e+01,4.400000000000000000e+01
+2.393904385697988602e+01,3.488125966091650554e+01,1.475673305477780595e+01,2.500000000000000000e+02,2.380000000000000000e+02,2.290000000000000000e+02
+1.071602422671917587e+01,2.884095859929574956e+01,6.679689667192195479e+00,1.730000000000000000e+02,1.610000000000000000e+02,1.440000000000000000e+02
+2.954280045358682116e+01,3.242773089731716141e+01,1.183659155935688467e+01,1.190000000000000000e+02,1.060000000000000000e+02,9.900000000000000000e+01
+2.872827752713827820e+01,2.705638210315811776e+01,2.599259875188740310e+01,8.200000000000000000e+01,8.100000000000000000e+01,7.600000000000000000e+01
+2.369846061743413301e+01,3.707183451960843712e+01,2.475531024353879772e+01,7.900000000000000000e+01,5.600000000000000000e+01,3.800000000000000000e+01
+2.637054644428953409e+01,3.332187801947806349e+01,1.156770876956219318e+01,2.170000000000000000e+02,1.960000000000000000e+02,1.750000000000000000e+02
+3.127596785860613693e+01,3.198477459880573548e+01,1.409063659745326724e+01,6.600000000000000000e+01,7.700000000000000000e+01,9.400000000000000000e+01
+1.035850507094045625e+01,2.827580291447808136e+01,1.920834471289536438e+01,1.310000000000000000e+02,1.190000000000000000e+02,1.020000000000000000e+02
+9.565704272630600968e+00,2.861273986645706202e+01,1.593747707142093262e+01,1.790000000000000000e+02,1.650000000000000000e+02,1.540000000000000000e+02
+1.697708270451706625e+01,3.630526993428240701e+01,1.620286925751007345e+01,5.000000000000000000e+01,4.000000000000000000e+01,3.500000000000000000e+01
+2.984528378967907258e+01,3.281164822420991811e+01,1.569972155975012207e+01,1.000000000000000000e+02,9.300000000000000000e+01,8.700000000000000000e+01
+2.977106476496283349e+01,3.300227645152089195e+01,1.248030765012043730e+01,7.000000000000000000e+01,5.800000000000000000e+01,5.000000000000000000e+01
+2.625358064445019579e+01,3.580560330180538386e+01,2.428175532441738227e+01,1.050000000000000000e+02,8.200000000000000000e+01,4.900000000000000000e+01
+9.055946180532369993e+00,3.180885927586299289e+01,1.679568541597196329e+01,2.180000000000000000e+02,1.980000000000000000e+02,1.710000000000000000e+02
+3.080249986028406894e+01,3.198987536270565357e+01,1.496929366634459591e+01,1.410000000000000000e+02,1.330000000000000000e+02,1.300000000000000000e+02
+2.417959460447519504e+01,3.649971044194985126e+01,2.170880086675792597e+01,4.700000000000000000e+01,5.900000000000000000e+01,5.100000000000000000e+01
+1.050491523078081180e+01,2.871085348562045780e+01,1.212473365127030966e+01,4.700000000000000000e+01,3.800000000000000000e+01,3.700000000000000000e+01
+1.973520704230505274e+01,3.745263632174790303e+01,1.316503205955531008e+01,1.050000000000000000e+02,1.020000000000000000e+02,9.500000000000000000e+01
+2.230450907798301330e+01,3.566951900081478044e+01,1.223781475397102625e+01,2.520000000000000000e+02,2.420000000000000000e+02,2.250000000000000000e+02
+1.056064908982392758e+01,2.738226139965010120e+01,1.988546702020427404e+01,1.060000000000000000e+02,9.200000000000000000e+01,7.600000000000000000e+01
+3.195871288686836920e+01,3.102549249506117945e+01,1.193909893586320869e+01,8.800000000000000000e+01,7.900000000000000000e+01,7.400000000000000000e+01
+2.706344175241237693e+01,3.574403492396903204e+01,6.361780702221978778e+00,1.400000000000000000e+02,1.390000000000000000e+02,1.270000000000000000e+02
+2.934742881646977253e+01,3.364514942876597559e+01,2.463217643717460348e+01,3.900000000000000000e+01,2.500000000000000000e+01,2.200000000000000000e+01
+1.882187397877021340e+01,3.832845340905345211e+01,1.407746994945521735e+01,1.390000000000000000e+02,1.330000000000000000e+02,1.310000000000000000e+02
+3.023480135817228742e+01,2.914828010616765397e+01,2.535067641958864471e+01,5.700000000000000000e+01,4.300000000000000000e+01,3.200000000000000000e+01
+1.890008456194823339e+01,3.777909726515498079e+01,9.149308590509150463e+00,1.790000000000000000e+02,1.630000000000000000e+02,1.430000000000000000e+02
+2.543934670254522956e+01,3.510809172193399519e+01,7.951219182962830700e+00,1.060000000000000000e+02,1.020000000000000000e+02,9.200000000000000000e+01
+9.515817007289822271e+00,2.773084068797228952e+01,8.780477049990578209e+00,1.510000000000000000e+02,1.370000000000000000e+02,1.240000000000000000e+02
+2.563949952342905547e+01,2.103567236117469008e+01,1.242775603429649678e+01,4.600000000000000000e+01,3.800000000000000000e+01,3.600000000000000000e+01
+2.321668126402329690e+01,3.706760328498651802e+01,2.175622756031876293e+01,1.260000000000000000e+02,1.180000000000000000e+02,1.050000000000000000e+02
+2.924209601954269999e+01,3.286903867955355452e+01,1.651283364827702371e+01,5.300000000000000000e+01,4.300000000000000000e+01,4.100000000000000000e+01
+2.701900706098329152e+01,3.491061223242404310e+01,7.556181018831255258e+00,4.100000000000000000e+01,3.400000000000000000e+01,3.100000000000000000e+01
+2.810575886531557188e+01,1.932771165902910582e+01,1.326137625150570365e+01,7.300000000000000000e+01,6.400000000000000000e+01,5.700000000000000000e+01
+3.133081119048692642e+01,3.220555430703768707e+01,1.456838576921429151e+01,6.300000000000000000e+01,6.900000000000000000e+01,8.400000000000000000e+01
+9.331721037648938122e+00,3.135647289435680563e+01,1.538221782903557688e+01,1.180000000000000000e+02,1.060000000000000000e+02,9.400000000000000000e+01
+1.173574481485445276e+01,2.851430556331295563e+01,5.347585526909534259e+00,1.320000000000000000e+02,1.240000000000000000e+02,1.130000000000000000e+02
+1.061859445449360706e+01,2.845277650515275170e+01,1.687615150145024145e+01,1.610000000000000000e+02,1.530000000000000000e+02,1.440000000000000000e+02
+1.650283305468899897e+01,2.470543089682415427e+01,4.879071325401072023e+00,2.540000000000000000e+02,2.530000000000000000e+02,2.410000000000000000e+02
+1.215580211221497997e+01,2.927664706082251911e+01,1.717399217602086026e+01,4.400000000000000000e+01,3.000000000000000000e+01,2.900000000000000000e+01
+2.618272909671765092e+01,2.977491146893585139e+01,6.025882558294409996e+00,2.500000000000000000e+02,2.450000000000000000e+02,2.260000000000000000e+02
+1.103562076588439744e+01,2.895838202283882978e+01,1.598652086879198464e+01,1.080000000000000000e+02,1.050000000000000000e+02,1.060000000000000000e+02
+1.842297929624935904e+01,3.489996810131817284e+01,2.721430688831344114e+01,6.400000000000000000e+01,5.300000000000000000e+01,4.400000000000000000e+01
+2.097603441879459396e+01,3.654321304825675298e+01,1.323977499492093912e+01,1.440000000000000000e+02,1.350000000000000000e+02,1.300000000000000000e+02
+3.084192846970763568e+01,2.955764070147519718e+01,1.911740355949289949e+01,1.080000000000000000e+02,9.200000000000000000e+01,7.600000000000000000e+01
+2.577175916588699778e+01,3.562301444028017983e+01,2.188961369554177239e+01,1.060000000000000000e+02,9.100000000000000000e+01,6.600000000000000000e+01
+2.257830243500417211e+01,3.476849491429958050e+01,1.900557402922088457e+01,1.590000000000000000e+02,1.500000000000000000e+02,1.410000000000000000e+02
+2.304942415599675343e+01,3.452217895129544445e+01,1.301722130016034917e+01,2.540000000000000000e+02,2.500000000000000000e+02,2.410000000000000000e+02
+1.116596971658121085e+01,2.918002329827411501e+01,8.744671423057976511e+00,2.000000000000000000e+02,1.840000000000000000e+02,1.610000000000000000e+02
+2.712161964943595649e+01,3.529214085087320996e+01,2.412932993794704828e+01,7.700000000000000000e+01,7.500000000000000000e+01,7.800000000000000000e+01
+2.508873903837586994e+01,3.608326518953747808e+01,2.202282915532558505e+01,4.900000000000000000e+01,3.500000000000000000e+01,3.900000000000000000e+01
+1.035645412780465158e+01,2.837974955351974771e+01,9.309273896764500122e+00,4.900000000000000000e+01,4.100000000000000000e+01,3.900000000000000000e+01
+2.548397228493959332e+01,3.572977613708085443e+01,2.227943386575339701e+01,8.400000000000000000e+01,7.100000000000000000e+01,5.300000000000000000e+01
+2.970255979342494257e+01,3.230065559237574035e+01,1.335577009259328740e+01,8.400000000000000000e+01,9.400000000000000000e+01,1.100000000000000000e+02
+2.497361584837925719e+01,1.878672807917382315e+01,1.872555005066732647e+01,2.350000000000000000e+02,2.250000000000000000e+02,2.050000000000000000e+02
+3.151220729990282621e+01,3.262480712343639055e+01,2.203316047698140423e+01,6.900000000000000000e+01,5.700000000000000000e+01,5.000000000000000000e+01
+2.577175916588699778e+01,3.562301444028017983e+01,2.188961369554177239e+01,1.060000000000000000e+02,9.100000000000000000e+01,6.600000000000000000e+01
+2.521886866896213419e+01,1.843700989606913154e+01,1.200173038413137760e+01,2.190000000000000000e+02,2.060000000000000000e+02,1.870000000000000000e+02
+2.784874485664821009e+01,3.255779772022648899e+01,1.740039737713274448e+01,1.470000000000000000e+02,1.380000000000000000e+02,1.290000000000000000e+02
+2.528646245304246065e+01,3.300453097706828487e+01,1.359638175583314457e+01,1.660000000000000000e+02,1.550000000000000000e+02,1.470000000000000000e+02
+1.202997649239768130e+01,2.895248764212280079e+01,1.989233342549744066e+01,1.390000000000000000e+02,1.310000000000000000e+02,1.200000000000000000e+02
+1.088976012948034366e+01,2.897416600903476080e+01,6.864393194738898529e+00,1.120000000000000000e+02,1.000000000000000000e+02,8.900000000000000000e+01
+2.167689409340067286e+01,3.558396945645654341e+01,1.536632242341925370e+01,1.140000000000000000e+02,1.060000000000000000e+02,1.040000000000000000e+02
+2.140895768055916903e+01,3.631402695169096262e+01,2.801203695103222913e+01,8.800000000000000000e+01,7.400000000000000000e+01,6.300000000000000000e+01
+2.383892268538366110e+01,1.867777956978774867e+01,5.020707222239521705e+00,1.090000000000000000e+02,1.000000000000000000e+02,8.500000000000000000e+01
+1.995417397375249280e+01,3.914742652694116032e+01,2.202283003057635469e+01,6.700000000000000000e+01,6.900000000000000000e+01,7.500000000000000000e+01
+2.337833768665742085e+01,1.826842617261150181e+01,4.716500243033946660e+00,2.430000000000000000e+02,2.410000000000000000e+02,2.290000000000000000e+02
+2.129117818024936426e+01,3.740443198956274529e+01,1.213200707479252038e+01,1.890000000000000000e+02,1.680000000000000000e+02,1.500000000000000000e+02
+1.084854508685949526e+01,2.918428861752231640e+01,1.340711861987414011e+01,2.120000000000000000e+02,1.950000000000000000e+02,1.750000000000000000e+02
+3.011336077775661835e+01,2.793185513072208437e+01,2.393016431369008146e+01,6.300000000000000000e+01,5.000000000000000000e+01,4.400000000000000000e+01
+2.719707773940250206e+01,3.109374684973110448e+01,2.893635644724579237e+01,8.700000000000000000e+01,7.000000000000000000e+01,6.000000000000000000e+01
+2.575999410365145437e+01,2.200144483893633307e+01,1.663962564419333390e+01,2.800000000000000000e+01,1.900000000000000000e+01,1.400000000000000000e+01
+2.627213162872948615e+01,3.603185190773034918e+01,2.529347337941426233e+01,8.900000000000000000e+01,6.800000000000000000e+01,3.900000000000000000e+01
+1.014091654273297216e+01,2.862434970624383368e+01,1.912201114581854711e+01,1.500000000000000000e+02,1.420000000000000000e+02,1.350000000000000000e+02
+2.774948168519993885e+01,3.276919142545092711e+01,1.844577223057972759e+01,1.160000000000000000e+02,1.040000000000000000e+02,9.100000000000000000e+01
+2.687253856999516088e+01,3.564854194446625968e+01,2.465506065455183915e+01,4.400000000000000000e+01,3.000000000000000000e+01,2.900000000000000000e+01
+3.080558942815667578e+01,3.044179211076791347e+01,1.927691101798226114e+01,7.100000000000000000e+01,5.400000000000000000e+01,3.800000000000000000e+01
+9.341802291777142386e+00,3.158958461900060755e+01,1.747234678145851916e+01,7.900000000000000000e+01,6.700000000000000000e+01,5.200000000000000000e+01
+1.965156204372980397e+01,3.715674971972682528e+01,1.879537169753378834e+01,5.200000000000000000e+01,4.300000000000000000e+01,3.900000000000000000e+01
+8.819594684273639018e+00,3.195586854951753253e+01,1.746014353148451903e+01,1.100000000000000000e+02,9.300000000000000000e+01,7.900000000000000000e+01
+9.055946180532369993e+00,3.180885927586299289e+01,1.679568541597196329e+01,2.180000000000000000e+02,1.980000000000000000e+02,1.710000000000000000e+02
+1.071137281266667429e+01,2.885112607362475501e+01,8.785667323908070259e+00,1.950000000000000000e+02,1.830000000000000000e+02,1.670000000000000000e+02
+2.460144202532405799e+01,3.667002420867689949e+01,2.444038529890039868e+01,9.300000000000000000e+01,9.300000000000000000e+01,9.700000000000000000e+01
+2.062851320729353333e+01,2.385352029746782421e+01,4.407045408088035465e+00,2.260000000000000000e+02,2.170000000000000000e+02,1.880000000000000000e+02
+1.151998051698382675e+01,2.883704277339405309e+01,5.441454388748805826e+00,1.400000000000000000e+02,1.290000000000000000e+02,1.160000000000000000e+02
+1.026415590736814565e+01,2.820269969499703677e+01,1.681942609022110346e+01,1.170000000000000000e+02,1.090000000000000000e+02,1.000000000000000000e+02
+2.425097397195009918e+01,3.411808865583475381e+01,1.216981192530299793e+01,2.460000000000000000e+02,2.340000000000000000e+02,2.200000000000000000e+02
+2.649484023886988382e+01,3.439134372362273950e+01,9.320126834100346258e+00,3.500000000000000000e+01,3.000000000000000000e+01,3.000000000000000000e+01
+2.087911488731115384e+01,3.333350698802949097e+01,2.912655925983956706e+01,9.300000000000000000e+01,8.000000000000000000e+01,6.500000000000000000e+01
+2.531132669802056867e+01,2.131785919776264393e+01,1.883020381962331768e+01,1.250000000000000000e+02,1.160000000000000000e+02,1.070000000000000000e+02
+2.324113764760757306e+01,3.748074480895501637e+01,2.425547075459530433e+01,1.110000000000000000e+02,9.800000000000000000e+01,7.500000000000000000e+01
+3.130404291929088600e+01,2.953733820944803767e+01,1.587978729889275442e+01,1.020000000000000000e+02,8.700000000000000000e+01,7.400000000000000000e+01
+2.289881528556311707e+01,3.587301621649194772e+01,1.577588255976699649e+01,1.230000000000000000e+02,1.170000000000000000e+02,1.180000000000000000e+02
+2.292855784625548665e+01,3.794173752655689924e+01,2.492590363913368634e+01,8.500000000000000000e+01,8.200000000000000000e+01,7.300000000000000000e+01
+2.481918638470273208e+01,3.375237118358470667e+01,1.217508148013236635e+01,2.530000000000000000e+02,2.510000000000000000e+02,2.320000000000000000e+02
+2.106950775504069640e+01,3.882247078035634047e+01,2.466882485344404330e+01,2.300000000000000000e+01,2.500000000000000000e+01,2.000000000000000000e+01
+8.570818006992285021e+00,3.196437427086710059e+01,2.366119244911210373e+01,6.300000000000000000e+01,5.600000000000000000e+01,5.300000000000000000e+01
+1.922045730512724759e+01,3.919323615919138604e+01,2.195076833358421808e+01,2.900000000000000000e+01,2.000000000000000000e+01,1.700000000000000000e+01
+2.318059653726123059e+01,3.468957086407500867e+01,1.524947084424832866e+01,1.270000000000000000e+02,1.190000000000000000e+02,1.120000000000000000e+02
+3.237306356140094010e+01,3.220135450318948500e+01,2.430426439688278606e+01,2.200000000000000000e+01,1.800000000000000000e+01,1.500000000000000000e+01
+1.156548164847281690e+01,2.992754435182879647e+01,1.575734980388777018e+01,7.200000000000000000e+01,6.600000000000000000e+01,7.000000000000000000e+01
+2.296916155444652929e+01,3.576940341237709475e+01,1.576285654311428175e+01,1.040000000000000000e+02,9.600000000000000000e+01,9.900000000000000000e+01
+2.103222045296645604e+01,3.752998091766136923e+01,1.653191034046915320e+01,5.400000000000000000e+01,4.100000000000000000e+01,3.200000000000000000e+01
+9.242971602134526066e+00,3.159633283216582100e+01,1.799673427974544637e+01,1.320000000000000000e+02,1.200000000000000000e+02,9.800000000000000000e+01
+2.988312626642522218e+01,3.375645258784454938e+01,2.406575955659142352e+01,5.700000000000000000e+01,5.100000000000000000e+01,5.100000000000000000e+01
+2.798739355592037015e+01,3.513273154558046230e+01,2.559352897285603845e+01,2.600000000000000000e+01,2.700000000000000000e+01,2.100000000000000000e+01
+2.544303828171194581e+01,3.612153300298655978e+01,6.552845109715452310e+00,1.130000000000000000e+02,1.060000000000000000e+02,9.800000000000000000e+01
+1.158353852276836449e+01,2.901589918500902954e+01,8.473956346736017053e+00,1.330000000000000000e+02,1.200000000000000000e+02,1.040000000000000000e+02
+2.526133383820450362e+01,2.151685647950092317e+01,1.966465384500876823e+01,1.050000000000000000e+02,9.200000000000000000e+01,7.200000000000000000e+01
+2.842795687011551209e+01,1.849412967206639635e+01,2.042309166358469597e+01,2.200000000000000000e+01,1.900000000000000000e+01,1.700000000000000000e+01
+2.706139337202531436e+01,2.540760276195284106e+01,2.613510191407971917e+01,6.300000000000000000e+01,5.200000000000000000e+01,4.200000000000000000e+01
+2.555331624333583918e+01,2.079113597344738196e+01,7.228429251442363146e+00,4.700000000000000000e+01,3.900000000000000000e+01,3.700000000000000000e+01
+8.924354921327621426e+00,3.188606329788772697e+01,1.786347317081872887e+01,8.800000000000000000e+01,6.900000000000000000e+01,6.200000000000000000e+01
+3.100853212112956214e+01,2.834413300585492479e+01,1.726950096941018131e+01,4.600000000000000000e+01,3.500000000000000000e+01,2.800000000000000000e+01
+2.533659185316451712e+01,3.361461477654075480e+01,1.470927053649484151e+01,5.800000000000000000e+01,4.700000000000000000e+01,4.300000000000000000e+01
+2.862058578608405313e+01,3.278326279596952730e+01,1.576623416134284916e+01,4.100000000000000000e+01,3.200000000000000000e+01,2.900000000000000000e+01
+1.139453031098570079e+01,2.892808855535821522e+01,5.579840565541872799e+00,5.300000000000000000e+01,4.400000000000000000e+01,3.700000000000000000e+01
+3.046550804534698642e+01,3.355167006804121854e+01,2.496425210959700181e+01,5.300000000000000000e+01,4.600000000000000000e+01,3.800000000000000000e+01
+2.516334291145990676e+01,1.878465142569137214e+01,1.644724031410419940e+01,1.150000000000000000e+02,1.020000000000000000e+02,8.800000000000000000e+01
+2.460590685773306774e+01,3.639181288950221216e+01,7.488967338327161549e+00,8.700000000000000000e+01,7.800000000000000000e+01,6.900000000000000000e+01
+2.357408625068644170e+01,3.764658993132685083e+01,2.590445936643200753e+01,4.000000000000000000e+01,2.500000000000000000e+01,2.200000000000000000e+01
+2.574220545951198602e+01,2.238567166688417487e+01,1.976678530653960664e+01,1.130000000000000000e+02,9.800000000000000000e+01,7.800000000000000000e+01
+2.345364565026438797e+01,3.440266298928959543e+01,1.251128043621891273e+01,2.520000000000000000e+02,2.540000000000000000e+02,2.550000000000000000e+02
+3.074224646287295926e+01,3.244013403061088496e+01,1.483700591875025054e+01,6.500000000000000000e+01,5.500000000000000000e+01,5.400000000000000000e+01
+2.556708986921759674e+01,2.122360017529206644e+01,1.075112810000745256e+01,9.500000000000000000e+01,8.200000000000000000e+01,7.300000000000000000e+01
+2.893941586848673353e+01,3.262167148853271215e+01,1.168137612085332577e+01,1.410000000000000000e+02,1.350000000000000000e+02,1.330000000000000000e+02
+1.118276071168193120e+01,2.911698254705714461e+01,7.883389718172506555e+00,2.050000000000000000e+02,1.890000000000000000e+02,1.640000000000000000e+02
+2.399096330510950992e+01,1.884829618990536559e+01,2.020258260979382925e+01,7.800000000000000000e+01,6.300000000000000000e+01,4.400000000000000000e+01
+1.052934262316632541e+01,2.802420415672262166e+01,1.936397034242539661e+01,1.060000000000000000e+02,9.300000000000000000e+01,7.600000000000000000e+01
+2.717190556259457068e+01,3.273484865360732243e+01,1.633789281650203407e+01,5.500000000000000000e+01,4.400000000000000000e+01,3.800000000000000000e+01
+1.956860724296421949e+01,3.859923210136553706e+01,1.494124136732618169e+01,7.000000000000000000e+01,5.700000000000000000e+01,4.900000000000000000e+01
+1.221808156579477611e+01,2.954162958813627071e+01,1.898118304147304514e+01,1.100000000000000000e+02,9.600000000000000000e+01,8.500000000000000000e+01
+2.229042847044630449e+01,3.580239902311190292e+01,1.685992820576322515e+01,1.240000000000000000e+02,1.190000000000000000e+02,1.150000000000000000e+02
+2.942478052387383514e+01,3.121648716945602686e+01,1.960293994874352563e+01,1.090000000000000000e+02,1.000000000000000000e+02,9.100000000000000000e+01
+2.461010238053492927e+01,2.092939383301476752e+01,1.985473990829801139e+01,6.600000000000000000e+01,5.500000000000000000e+01,4.600000000000000000e+01
+2.983372224210672385e+01,3.290892176977048678e+01,1.631611836873597809e+01,7.300000000000000000e+01,6.300000000000000000e+01,6.000000000000000000e+01
+2.056332954912577904e+01,3.890752570425753021e+01,2.387963721778451998e+01,5.100000000000000000e+01,5.100000000000000000e+01,5.300000000000000000e+01
+2.446449079367615909e+01,1.909453565545564047e+01,1.932198399499407060e+01,8.500000000000000000e+01,6.400000000000000000e+01,5.300000000000000000e+01
+2.501479662457159847e+01,3.459569073185439692e+01,1.603709849481993288e+01,8.000000000000000000e+01,6.900000000000000000e+01,6.600000000000000000e+01
+2.983382197160006655e+01,3.357347439266852973e+01,2.524249536170732000e+01,1.800000000000000000e+01,1.700000000000000000e+01,1.500000000000000000e+01
+2.232381064209045363e+01,3.695749921689802875e+01,2.239671409971896665e+01,1.170000000000000000e+02,1.080000000000000000e+02,9.300000000000000000e+01
+2.828626036803137822e+01,3.246994833246481704e+01,1.904780866412870566e+01,1.190000000000000000e+02,1.040000000000000000e+02,9.200000000000000000e+01
+2.480763305842376809e+01,3.505868242845726712e+01,1.117458457632080382e+01,2.540000000000000000e+02,2.540000000000000000e+02,2.500000000000000000e+02
+2.719104974577255618e+01,3.485273465999517839e+01,2.250247714497819018e+01,8.300000000000000000e+01,8.600000000000000000e+01,9.100000000000000000e+01
+2.840493455021299596e+01,3.421646433863661940e+01,2.352063249540755052e+01,1.060000000000000000e+02,9.100000000000000000e+01,7.500000000000000000e+01
+2.712969320172322440e+01,3.533875616185220281e+01,2.605771302062017014e+01,5.900000000000000000e+01,5.900000000000000000e+01,5.900000000000000000e+01
+2.081667622775067272e+01,3.799161519254384700e+01,1.468828626257343650e+01,1.440000000000000000e+02,1.380000000000000000e+02,1.350000000000000000e+02
+2.347784455764718814e+01,3.500819560531303409e+01,1.229511121377179350e+01,1.900000000000000000e+02,1.680000000000000000e+02,1.500000000000000000e+02
+2.262245891392770858e+01,3.553628558029325291e+01,1.276049059041086409e+01,2.540000000000000000e+02,2.420000000000000000e+02,2.260000000000000000e+02
+2.504988689448114769e+01,3.416192199640922667e+01,1.462591216593194332e+01,7.500000000000000000e+01,6.500000000000000000e+01,6.400000000000000000e+01
+2.006324421847578066e+01,3.800538107744043259e+01,1.226168462954039562e+01,2.190000000000000000e+02,2.010000000000000000e+02,1.790000000000000000e+02
+2.168337518361073180e+01,3.736905220512721115e+01,1.497614711033865831e+01,1.360000000000000000e+02,1.280000000000000000e+02,1.240000000000000000e+02
+2.121301463418454603e+01,3.868783364885877063e+01,2.432406046041394987e+01,5.400000000000000000e+01,5.000000000000000000e+01,4.900000000000000000e+01
+2.192300555974588150e+01,3.806544742411379900e+01,2.300985786377749065e+01,4.300000000000000000e+01,3.100000000000000000e+01,3.600000000000000000e+01
+2.815410498901980674e+01,3.441432826574616399e+01,2.241241964047518209e+01,4.300000000000000000e+01,4.100000000000000000e+01,4.300000000000000000e+01
+2.494899098147309147e+01,1.874955994430598238e+01,6.658517518251301226e+00,1.240000000000000000e+02,1.100000000000000000e+02,9.700000000000000000e+01
+2.483731461557483655e+01,3.683411931968628750e+01,2.387379951154242264e+01,8.200000000000000000e+01,8.500000000000000000e+01,9.200000000000000000e+01
+2.159002801778793668e+01,3.632159822151820805e+01,1.871816724862632242e+01,1.100000000000000000e+02,1.010000000000000000e+02,9.500000000000000000e+01
+1.979734482977110588e+01,3.823815141928574945e+01,1.187834540338689848e+01,2.540000000000000000e+02,2.530000000000000000e+02,2.370000000000000000e+02
+2.849628247584062635e+01,1.918049404655177881e+01,1.752452475362180451e+01,1.130000000000000000e+02,1.010000000000000000e+02,9.200000000000000000e+01
+2.973293111359973651e+01,3.157951580998804531e+01,1.903387907821474556e+01,1.140000000000000000e+02,1.030000000000000000e+02,9.400000000000000000e+01
+2.534630349384044479e+01,3.589492123010447244e+01,2.179707148152046869e+01,1.110000000000000000e+02,9.600000000000000000e+01,7.100000000000000000e+01
+3.017660965567221965e+01,3.272471898618869801e+01,1.230328433061523619e+01,1.330000000000000000e+02,1.250000000000000000e+02,1.220000000000000000e+02
+2.840751353184864669e+01,3.226160909672371702e+01,1.621304177100293842e+01,4.900000000000000000e+01,3.900000000000000000e+01,3.800000000000000000e+01
+1.811863224519655802e+01,3.815821058438920232e+01,1.264563927941442500e+01,1.170000000000000000e+02,1.090000000000000000e+02,1.010000000000000000e+02
+2.472773446444759671e+01,1.852983460441792118e+01,7.497259950906549619e+00,1.220000000000000000e+02,1.090000000000000000e+02,1.000000000000000000e+02
+2.042053961550372776e+01,3.775657954396990590e+01,1.163693504636565024e+01,2.520000000000000000e+02,2.450000000000000000e+02,2.270000000000000000e+02
+2.407155856755108303e+01,3.470761923108431546e+01,1.898780072268300501e+01,1.060000000000000000e+02,8.900000000000000000e+01,8.100000000000000000e+01
+3.125550124134156249e+01,3.197781589025689897e+01,1.230431763629126962e+01,1.170000000000000000e+02,1.120000000000000000e+02,1.090000000000000000e+02
+3.047438296573846372e+01,3.068328887401750649e+01,1.969552432163125744e+01,1.010000000000000000e+02,8.600000000000000000e+01,7.400000000000000000e+01
+2.442202021079600627e+01,3.623841213932014682e+01,1.666443883372104295e+01,4.600000000000000000e+01,3.700000000000000000e+01,3.600000000000000000e+01
+2.846956444169378742e+01,3.414509619877699720e+01,2.629481739984678157e+01,6.000000000000000000e+01,6.000000000000000000e+01,6.200000000000000000e+01
+2.408316308472896239e+01,3.479292881333327614e+01,1.439576177403262847e+01,2.370000000000000000e+02,2.260000000000000000e+02,2.120000000000000000e+02
+2.618369030306743284e+01,3.333988849427827006e+01,1.905585870613062482e+01,8.200000000000000000e+01,7.200000000000000000e+01,6.300000000000000000e+01
+1.988161930720204040e+01,3.823877477719818074e+01,7.752415642479412838e+00,1.240000000000000000e+02,1.260000000000000000e+02,1.230000000000000000e+02
+1.837899887950763755e+01,3.717108803900530489e+01,1.981971476436917712e+01,1.180000000000000000e+02,1.020000000000000000e+02,8.700000000000000000e+01
+2.442263444031384978e+01,3.463963437496173015e+01,1.501563675945440224e+01,3.400000000000000000e+01,2.600000000000000000e+01,2.400000000000000000e+01
+2.942741116973830984e+01,3.311881923050034970e+01,1.525226779038488090e+01,1.240000000000000000e+02,1.170000000000000000e+02,1.110000000000000000e+02
+2.815410498901980674e+01,3.441432826574616399e+01,2.241241964047518209e+01,4.300000000000000000e+01,4.100000000000000000e+01,4.300000000000000000e+01
+2.455553350310661642e+01,3.469199400493879892e+01,1.885522726899791479e+01,1.210000000000000000e+02,1.120000000000000000e+02,1.110000000000000000e+02
+2.228920992305071280e+01,3.582482786541861941e+01,1.868371221255538472e+01,1.310000000000000000e+02,1.220000000000000000e+02,1.150000000000000000e+02
+2.309580081280682506e+01,3.734155422703179994e+01,2.439120726459428212e+01,8.500000000000000000e+01,6.900000000000000000e+01,5.200000000000000000e+01
+9.263150602592768124e+00,3.168203594511737009e+01,1.765988468412135859e+01,2.050000000000000000e+02,1.880000000000000000e+02,1.610000000000000000e+02
+2.585636531533088700e+01,2.196915558046909567e+01,1.619310053643603808e+01,1.280000000000000000e+02,1.190000000000000000e+02,1.110000000000000000e+02
+3.163225105578840868e+01,3.059723943082963160e+01,1.867025173013753303e+01,4.000000000000000000e+01,2.800000000000000000e+01,2.300000000000000000e+01
+2.776549634098524066e+01,3.460954286163709526e+01,2.489292536181108417e+01,2.500000000000000000e+01,2.700000000000000000e+01,2.300000000000000000e+01
+3.111776939075432935e+01,3.086574390741785123e+01,8.842483785364247950e+00,1.100000000000000000e+02,1.010000000000000000e+02,9.200000000000000000e+01
+2.576005766876852832e+01,3.348654384503184644e+01,1.185138119355713648e+01,1.280000000000000000e+02,1.120000000000000000e+02,1.050000000000000000e+02
+2.494893695739449768e+01,1.869217988682711251e+01,1.250919502979570908e+01,1.170000000000000000e+02,1.070000000000000000e+02,9.800000000000000000e+01
+1.151259613796520753e+01,2.978202088187396512e+01,1.371713472928500899e+01,2.280000000000000000e+02,2.070000000000000000e+02,1.810000000000000000e+02
+1.252600420188978525e+01,2.917850137524583332e+01,1.939444934174575863e+01,7.400000000000000000e+01,6.100000000000000000e+01,5.300000000000000000e+01
+2.634819692968947891e+01,3.522220196624229516e+01,7.657132777257526612e+00,5.900000000000000000e+01,5.400000000000000000e+01,4.900000000000000000e+01
+9.298561684865379817e+00,2.855574242932427254e+01,1.271436606667981373e+01,8.300000000000000000e+01,7.000000000000000000e+01,7.000000000000000000e+01
+2.795444467444368897e+01,3.288292528955687288e+01,1.585843575242573422e+01,1.010000000000000000e+02,9.200000000000000000e+01,8.700000000000000000e+01
+1.157395004135323902e+01,2.987968218953331601e+01,1.666578173428088405e+01,3.300000000000000000e+01,2.500000000000000000e+01,2.400000000000000000e+01
+2.773014682456227931e+01,1.934431784549415312e+01,1.192280573689450129e+01,1.930000000000000000e+02,1.760000000000000000e+02,1.520000000000000000e+02
+2.454922019223555196e+01,3.531054960951251331e+01,9.259076710610477434e+00,1.430000000000000000e+02,1.460000000000000000e+02,1.450000000000000000e+02
+2.198530220649426070e+01,3.804456120244896766e+01,2.160467956634573738e+01,7.600000000000000000e+01,7.300000000000000000e+01,6.600000000000000000e+01
+3.118137249561579338e+01,2.988973961418190228e+01,2.300742607648374616e+01,4.400000000000000000e+01,3.500000000000000000e+01,3.300000000000000000e+01
+2.210246975512503909e+01,3.808911008342886362e+01,2.355538710290095850e+01,3.700000000000000000e+01,2.600000000000000000e+01,2.200000000000000000e+01
+2.161052736374373495e+01,3.638832306134803929e+01,1.671917974203242352e+01,1.360000000000000000e+02,1.310000000000000000e+02,1.280000000000000000e+02
+2.404246016532162855e+01,3.699310222530871073e+01,2.457177647958767963e+01,4.400000000000000000e+01,3.600000000000000000e+01,3.100000000000000000e+01
+3.058803483392955158e+01,3.194315347115328407e+01,1.286318992569069586e+01,8.800000000000000000e+01,7.600000000000000000e+01,7.300000000000000000e+01
+1.934960119677369050e+01,3.916939374358100423e+01,2.230145212097777829e+01,2.300000000000000000e+01,2.100000000000000000e+01,2.000000000000000000e+01
+3.085072227039021087e+01,3.274016243342811094e+01,2.454926501519002358e+01,3.000000000000000000e+01,3.200000000000000000e+01,2.300000000000000000e+01
+2.016718987972457100e+01,3.721050278082522311e+01,1.862030307016592090e+01,1.210000000000000000e+02,1.120000000000000000e+02,1.030000000000000000e+02
+1.168834037209475163e+01,2.954195981499447399e+01,1.233707952766581073e+01,1.560000000000000000e+02,1.370000000000000000e+02,1.200000000000000000e+02
+2.182630847077365388e+01,3.692746737094537934e+01,1.558066429757645821e+01,5.100000000000000000e+01,4.100000000000000000e+01,3.800000000000000000e+01
+2.598443434718505785e+01,3.381632869354114490e+01,1.893097443603411278e+01,1.190000000000000000e+02,1.090000000000000000e+02,1.050000000000000000e+02
+2.187562144005414311e+01,3.832999355330718316e+01,2.588736224677810327e+01,5.300000000000000000e+01,5.300000000000000000e+01,5.400000000000000000e+01
+2.297333104571498552e+01,3.619019273641008994e+01,1.331437417987336502e+01,1.520000000000000000e+02,1.380000000000000000e+02,1.360000000000000000e+02
+2.512539783819546813e+01,3.415115055192647020e+01,1.409987672124238856e+01,1.480000000000000000e+02,1.350000000000000000e+02,1.270000000000000000e+02
+3.032976772321760706e+01,3.314343145783261946e+01,2.267308288945719141e+01,7.500000000000000000e+01,5.600000000000000000e+01,3.900000000000000000e+01
+2.755435089494514145e+01,3.493921780400125243e+01,2.595788179494113024e+01,3.200000000000000000e+01,2.300000000000000000e+01,1.800000000000000000e+01
+3.116611507193490027e+01,3.216462409967068226e+01,1.511328509551025334e+01,1.230000000000000000e+02,1.140000000000000000e+02,1.120000000000000000e+02
+2.309580081280682506e+01,3.734155422703179994e+01,2.439120726459428212e+01,8.500000000000000000e+01,6.900000000000000000e+01,5.200000000000000000e+01
+2.471741058808047597e+01,2.081239439885964160e+01,2.008325748269865940e+01,1.060000000000000000e+02,9.700000000000000000e+01,8.200000000000000000e+01
+2.556051280247211110e+01,2.141776428107373320e+01,2.430633204570742478e+01,1.070000000000000000e+02,9.300000000000000000e+01,8.400000000000000000e+01
+2.796434756025423951e+01,3.450518585605748001e+01,2.326311770602560713e+01,8.700000000000000000e+01,6.700000000000000000e+01,5.900000000000000000e+01
+2.932682393134790644e+01,3.365854245930402300e+01,2.339679195267898137e+01,5.300000000000000000e+01,3.500000000000000000e+01,2.900000000000000000e+01
+2.927654972953108370e+01,3.372463707375244724e+01,2.313626284074034345e+01,1.030000000000000000e+02,8.800000000000000000e+01,7.300000000000000000e+01
+2.496566746904128919e+01,3.568988940169609947e+01,7.325801499865185029e+00,1.070000000000000000e+02,1.000000000000000000e+02,9.500000000000000000e+01
+3.163225105578840868e+01,3.059723943082963160e+01,1.867025173013753303e+01,4.000000000000000000e+01,2.800000000000000000e+01,2.300000000000000000e+01
+2.484254824353971358e+01,3.489243241223198311e+01,1.192867132067905267e+01,1.220000000000000000e+02,1.060000000000000000e+02,9.800000000000000000e+01
+2.920891118770921935e+01,3.375728964164018464e+01,2.422858954226678918e+01,1.000000000000000000e+02,8.400000000000000000e+01,6.700000000000000000e+01
+3.022495507440459406e+01,3.319270974056522761e+01,2.208868491021152991e+01,7.100000000000000000e+01,4.800000000000000000e+01,3.100000000000000000e+01
+2.646678780091442107e+01,3.520553079195948243e+01,2.173129316050660265e+01,4.800000000000000000e+01,3.700000000000000000e+01,4.200000000000000000e+01
+2.566413891123625390e+01,3.624352686026347214e+01,2.879644141930735302e+01,1.100000000000000000e+01,7.000000000000000000e+00,8.000000000000000000e+00
+2.382691700795833611e+01,3.538137340566708389e+01,1.451964289477029446e+01,8.500000000000000000e+01,7.300000000000000000e+01,6.900000000000000000e+01
+3.085821637463084599e+01,3.255706418686682468e+01,1.711436359935108698e+01,4.000000000000000000e+01,3.000000000000000000e+01,2.300000000000000000e+01
+1.964576519026268997e+01,3.816707385101255312e+01,1.270206962890509672e+01,8.400000000000000000e+01,9.800000000000000000e+01,1.090000000000000000e+02
+9.266260135108460361e+00,2.886033432262414777e+01,1.915420891515186952e+01,1.070000000000000000e+02,9.700000000000000000e+01,8.600000000000000000e+01
+2.564714294625611046e+01,3.440977978141668103e+01,1.509903113796633889e+01,5.000000000000000000e+01,4.100000000000000000e+01,4.000000000000000000e+01
+2.260148718193187634e+01,3.605568002330255695e+01,1.493820202851569690e+01,1.240000000000000000e+02,1.190000000000000000e+02,1.140000000000000000e+02
+9.364545001625531384e+00,3.162925289468139667e+01,1.721555112678107946e+01,6.000000000000000000e+01,5.000000000000000000e+01,4.200000000000000000e+01
+2.165381174862513802e+01,3.694370246755153175e+01,1.307673186144195121e+01,2.530000000000000000e+02,2.460000000000000000e+02,2.330000000000000000e+02
+1.849889169593268790e+01,3.833078391707055488e+01,1.815948943253693315e+01,5.200000000000000000e+01,4.100000000000000000e+01,3.500000000000000000e+01
+2.508878133516966358e+01,3.608908552253919311e+01,2.166998104556296667e+01,5.500000000000000000e+01,5.100000000000000000e+01,5.500000000000000000e+01
+2.369337587897814501e+01,3.647545265211628873e+01,1.298865056329752399e+01,2.080000000000000000e+02,1.920000000000000000e+02,1.760000000000000000e+02
+2.036897685838430760e+01,3.797018456306211931e+01,1.387735878205272222e+01,1.220000000000000000e+02,1.210000000000000000e+02,1.190000000000000000e+02
+3.074224646287294149e+01,3.244013403061087075e+01,1.483700591875024521e+01,6.500000000000000000e+01,5.500000000000000000e+01,5.400000000000000000e+01
+2.451752993212879872e+01,3.469921791031682545e+01,1.183890889554152892e+01,1.240000000000000000e+02,1.080000000000000000e+02,9.600000000000000000e+01
+9.357068794966794556e+00,3.152249925937777419e+01,1.783648860845839934e+01,6.600000000000000000e+01,5.500000000000000000e+01,4.600000000000000000e+01
+2.122314687033288294e+01,3.727425085975406915e+01,1.207931017469696044e+01,1.890000000000000000e+02,1.680000000000000000e+02,1.500000000000000000e+02
+2.012912476364471104e+01,3.826726429465401935e+01,1.547014701199658226e+01,1.240000000000000000e+02,1.220000000000000000e+02,1.250000000000000000e+02
+2.226690542422445773e+01,3.602185850374171139e+01,1.601927023972804065e+01,1.250000000000000000e+02,1.160000000000000000e+02,1.170000000000000000e+02
+2.108672092148532329e+01,3.769048117464235759e+01,1.432789187250908292e+01,1.060000000000000000e+02,9.500000000000000000e+01,9.300000000000000000e+01
+2.699793733728569478e+01,3.298154268353606966e+01,1.912994280193997909e+01,9.200000000000000000e+01,7.800000000000000000e+01,6.900000000000000000e+01
+8.948172121968177350e+00,3.159442434316070347e+01,1.278740066156272803e+01,2.080000000000000000e+02,1.910000000000000000e+02,1.710000000000000000e+02
+2.027833798379823094e+01,3.775899573323996350e+01,1.522786460814660892e+01,1.080000000000000000e+02,1.020000000000000000e+02,1.020000000000000000e+02
+3.033547865788127851e+01,3.264184537259524888e+01,1.509065083037394928e+01,1.320000000000000000e+02,1.250000000000000000e+02,1.190000000000000000e+02
+2.971159817508253553e+01,3.350787083493770524e+01,2.628427704782752627e+01,1.800000000000000000e+01,1.100000000000000000e+01,1.300000000000000000e+01
+2.973385112495166993e+01,3.185444146385234276e+01,1.788821984455571368e+01,8.200000000000000000e+01,6.800000000000000000e+01,5.800000000000000000e+01
+2.982147950593486030e+01,3.275556099459183912e+01,1.170355430837777355e+01,8.000000000000000000e+01,6.600000000000000000e+01,5.300000000000000000e+01
+2.927486278987492696e+01,3.341908334072279985e+01,1.585824786944636600e+01,7.200000000000000000e+01,6.300000000000000000e+01,6.000000000000000000e+01
+1.926565168640981085e+01,3.842497837739672661e+01,1.208972460649815872e+01,1.150000000000000000e+02,1.030000000000000000e+02,9.400000000000000000e+01
+2.131619469127951305e+01,3.717568143494474242e+01,1.286022852705060693e+01,2.480000000000000000e+02,2.370000000000000000e+02,2.210000000000000000e+02
+2.006248120306239713e+01,3.835540085993871884e+01,1.576345695177517925e+01,6.800000000000000000e+01,5.700000000000000000e+01,5.600000000000000000e+01
+9.382151921447984932e+00,2.894983397681856729e+01,1.842723536601705092e+01,2.550000000000000000e+02,2.460000000000000000e+02,2.250000000000000000e+02
+2.773100614672218356e+01,3.475227078122382096e+01,2.316614813329584521e+01,4.200000000000000000e+01,3.500000000000000000e+01,3.800000000000000000e+01
+1.921332109997805304e+01,3.334472530725911099e+01,2.822025317908383002e+01,9.300000000000000000e+01,7.900000000000000000e+01,6.700000000000000000e+01
+2.399144613573157869e+01,3.486396610189728307e+01,1.360024805868742526e+01,2.490000000000000000e+02,2.400000000000000000e+02,2.320000000000000000e+02
+2.844246048121404158e+01,3.202808918556448958e+01,1.918541510174044618e+01,7.500000000000000000e+01,5.900000000000000000e+01,4.900000000000000000e+01
+2.998855198203294137e+01,3.333861273157865668e+01,2.178289691748971180e+01,8.700000000000000000e+01,6.900000000000000000e+01,4.900000000000000000e+01
+3.172872723260383054e+01,3.182350639841074624e+01,1.249300608160590897e+01,6.300000000000000000e+01,5.500000000000000000e+01,5.000000000000000000e+01
+2.526135603957463971e+01,2.137452047248695663e+01,1.921688398121294128e+01,6.100000000000000000e+01,4.800000000000000000e+01,4.000000000000000000e+01
+2.456571584219784299e+01,1.867459639003740790e+01,6.798309663242535272e+00,1.730000000000000000e+02,1.630000000000000000e+02,1.510000000000000000e+02
+2.245519925622893354e+01,3.537287022414297866e+01,1.245467853080604392e+01,1.370000000000000000e+02,1.200000000000000000e+02,1.060000000000000000e+02
+3.003906618268739948e+01,3.269783418511900663e+01,1.299677701506152872e+01,8.300000000000000000e+01,7.000000000000000000e+01,6.400000000000000000e+01
+2.347964150166936292e+01,3.520222923684843863e+01,1.284874215884135218e+01,1.430000000000000000e+02,1.290000000000000000e+02,1.200000000000000000e+02
+2.582948425194251740e+01,3.579072733837812592e+01,2.217185189009447654e+01,1.070000000000000000e+02,8.900000000000000000e+01,6.500000000000000000e+01
+2.061800630865679196e+01,3.827297047385128081e+01,1.664208495994859405e+01,4.200000000000000000e+01,3.200000000000000000e+01,2.700000000000000000e+01
+2.719104974577255618e+01,3.485273465999517839e+01,2.250247714497819018e+01,8.300000000000000000e+01,8.600000000000000000e+01,9.100000000000000000e+01
+2.764474659240431365e+01,3.460143722365901198e+01,2.241085900495348326e+01,8.200000000000000000e+01,8.400000000000000000e+01,9.100000000000000000e+01
+2.572225328470724293e+01,3.602613947296838148e+01,2.600816366459912388e+01,3.600000000000000000e+01,2.500000000000000000e+01,1.900000000000000000e+01
+2.134174928458097398e+01,3.729352849642943823e+01,1.242252963886173767e+01,2.400000000000000000e+02,2.270000000000000000e+02,2.090000000000000000e+02
+2.719104974577255618e+01,3.485273465999517839e+01,2.250247714497819018e+01,8.300000000000000000e+01,8.600000000000000000e+01,9.100000000000000000e+01
+2.342444216327882245e+01,3.639618522975856507e+01,1.506895469392876130e+01,1.460000000000000000e+02,1.390000000000000000e+02,1.330000000000000000e+02
+2.954730891499664835e+01,3.362224292405864645e+01,2.369694216931931763e+01,3.000000000000000000e+01,2.800000000000000000e+01,3.500000000000000000e+01
+2.764524693243706821e+01,3.469356012135597922e+01,2.349621616729930906e+01,7.300000000000000000e+01,7.200000000000000000e+01,7.700000000000000000e+01
+1.222706817442596972e+01,3.033788417968106543e+01,2.386288209552393624e+01,1.080000000000000000e+02,9.400000000000000000e+01,8.500000000000000000e+01
+2.432565317186214315e+01,2.134120070607722397e+01,1.971610272185230173e+01,6.400000000000000000e+01,5.400000000000000000e+01,4.500000000000000000e+01
+2.034362824800519576e+01,3.672961223459968494e+01,1.880924886651618522e+01,7.200000000000000000e+01,5.500000000000000000e+01,4.600000000000000000e+01
+3.150432168143861489e+01,3.025276579919989572e+01,1.666941452522347333e+01,2.000000000000000000e+01,1.200000000000000000e+01,1.100000000000000000e+01
+2.475301371503865155e+01,1.985552083427840842e+01,5.612973368121020989e+00,5.500000000000000000e+01,4.800000000000000000e+01,4.300000000000000000e+01
+2.501547162961688286e+01,2.133932598607155384e+01,1.947848446851974913e+01,1.070000000000000000e+02,9.200000000000000000e+01,7.500000000000000000e+01
+6.473487048588270731e+00,2.286380220470312707e+01,2.072678307072870041e+00,1.830000000000000000e+02,1.710000000000000000e+02,1.470000000000000000e+02
+1.135985495688067104e+01,2.960861574409535990e+01,1.212516017852783179e+01,2.210000000000000000e+02,1.960000000000000000e+02,1.700000000000000000e+02
+9.673037691180848441e+00,3.049409386260336419e+01,1.263394136921466249e+01,2.060000000000000000e+02,1.890000000000000000e+02,1.690000000000000000e+02
+3.889609250089520298e+00,2.729438067353169117e+01,4.475504107034755208e+00,8.600000000000000000e+01,7.500000000000000000e+01,5.800000000000000000e+01
+2.429597088210617883e+01,1.951194194360827439e+01,3.713966702420942401e+00,1.370000000000000000e+02,1.290000000000000000e+02,1.110000000000000000e+02
+2.509170400620019592e+01,1.848303306109997735e+01,9.342634322837557903e+00,2.140000000000000000e+02,2.020000000000000000e+02,1.800000000000000000e+02
+2.639437592471954730e+01,1.484405433741221536e+01,1.369738599700657566e+01,1.400000000000000000e+01,1.200000000000000000e+01,1.300000000000000000e+01
+2.942741116973830984e+01,3.311881923050034970e+01,1.525226779038488090e+01,1.240000000000000000e+02,1.170000000000000000e+02,1.110000000000000000e+02
+2.553489078490447994e+01,1.462713573611401330e+01,6.102826136791859035e+00,3.700000000000000000e+01,2.700000000000000000e+01,2.500000000000000000e+01
+9.796772504824561523e+00,3.061696150592196730e+01,9.415459897321168725e+00,1.830000000000000000e+02,1.700000000000000000e+02,1.500000000000000000e+02
+2.525682796277819264e+01,2.054164772900108460e+01,1.699056160085510570e+01,1.900000000000000000e+01,1.400000000000000000e+01,1.100000000000000000e+01
+2.546509750464372246e+01,1.493707016627723938e+01,1.296442006405658631e+01,7.000000000000000000e+01,6.300000000000000000e+01,6.300000000000000000e+01
+2.685488610569754186e+01,3.470229539504655492e+01,9.168759914574353687e+00,3.600000000000000000e+01,3.100000000000000000e+01,2.900000000000000000e+01
+2.375195928896490116e+01,3.461629971989759724e+01,1.928507541444622220e+01,1.490000000000000000e+02,1.400000000000000000e+02,1.300000000000000000e+02
+3.191744772777062256e+00,2.979775163409721017e+01,8.814025523790713024e+00,1.760000000000000000e+02,1.950000000000000000e+02,1.750000000000000000e+02
+4.079850253319448505e+00,2.774989591387181065e+01,1.074685675911789140e+01,1.840000000000000000e+02,1.580000000000000000e+02,1.270000000000000000e+02
+2.750987263308903508e+01,3.251693746335456581e+01,1.219525822132247583e+01,2.520000000000000000e+02,2.410000000000000000e+02,2.230000000000000000e+02
+3.345492384552064546e+00,3.083643857716078784e+01,1.467997851709016466e+01,6.600000000000000000e+01,7.200000000000000000e+01,6.000000000000000000e+01
+3.017067687388875186e+01,3.316104437418376705e+01,2.618044554181716776e+01,5.500000000000000000e+01,5.200000000000000000e+01,5.100000000000000000e+01
+4.659808407261956553e+00,2.945588497481520562e+01,1.220049020585422639e+01,3.000000000000000000e+01,2.600000000000000000e+01,2.400000000000000000e+01
+2.430826600256775549e+01,3.741768811574670650e+01,2.217202854080557017e+01,8.700000000000000000e+01,9.300000000000000000e+01,1.010000000000000000e+02
+2.453312808856395932e+01,1.686999339419795163e+01,3.908812879711796029e+00,2.310000000000000000e+02,2.190000000000000000e+02,1.910000000000000000e+02
+1.378441882332276869e+01,3.118418777853139190e+01,4.429032922596732647e+00,2.400000000000000000e+02,2.330000000000000000e+02,2.040000000000000000e+02
+9.680681645321682183e+00,2.907097847460332929e+01,6.160298070382346225e+00,1.980000000000000000e+02,1.830000000000000000e+02,1.620000000000000000e+02
+3.348728397961884262e+00,2.936698284648516477e+01,9.037926965839728766e+00,1.480000000000000000e+02,1.650000000000000000e+02,1.460000000000000000e+02
+3.145827588923728158e+01,3.307823070268219823e+01,1.182477990525657852e+01,5.300000000000000000e+01,4.400000000000000000e+01,4.300000000000000000e+01
+2.553152150260163822e+01,1.866791884610797325e+01,7.785190761385753611e+00,2.420000000000000000e+02,2.280000000000000000e+02,2.020000000000000000e+02
+2.043546943288248841e+01,3.815971213378490035e+01,1.125272714993028700e+01,1.740000000000000000e+02,1.600000000000000000e+02,1.490000000000000000e+02
+2.743895850452926055e+01,1.921083683849566981e+01,1.462289986286502064e+01,2.090000000000000000e+02,1.860000000000000000e+02,1.640000000000000000e+02
+2.350042955076677487e+01,3.009486782664745519e+01,2.946886711028638572e+01,3.200000000000000000e+01,3.200000000000000000e+01,3.500000000000000000e+01
+3.106163564452655734e+00,2.945087396827290860e+01,6.454008893663107038e+00,2.190000000000000000e+02,2.100000000000000000e+02,1.840000000000000000e+02
+8.095676382033792251e+00,2.903265164725608827e+01,4.520809894088447578e+00,1.160000000000000000e+02,1.110000000000000000e+02,1.050000000000000000e+02
+2.054114297585981319e+01,4.047608637721344849e+01,1.538658797520042931e+01,7.000000000000000000e+01,5.700000000000000000e+01,4.900000000000000000e+01
+2.266369093862557449e+01,3.850005067672953629e+01,1.157468607294541840e+01,1.100000000000000000e+02,9.000000000000000000e+01,7.600000000000000000e+01
+1.031891279756332480e+01,2.719392685057332670e+01,1.916452585208401516e+01,6.400000000000000000e+01,5.100000000000000000e+01,4.200000000000000000e+01
+2.560124661759207854e+01,1.486331022045688499e+01,9.793595895457293921e+00,2.470000000000000000e+02,2.320000000000000000e+02,2.030000000000000000e+02
+5.218873799303361594e+00,2.886557309585255382e+01,9.935316795307441495e+00,6.600000000000000000e+01,5.300000000000000000e+01,4.600000000000000000e+01
+1.031891279756332480e+01,2.719392685057332670e+01,1.916452585208401516e+01,6.400000000000000000e+01,5.100000000000000000e+01,4.200000000000000000e+01
+2.713780486166352190e+01,1.414458659353170411e+01,1.239861222040108579e+01,2.360000000000000000e+02,2.260000000000000000e+02,2.040000000000000000e+02
+2.785512018821824043e+01,3.492401782949829681e+01,1.122479456610494353e+01,2.540000000000000000e+02,2.540000000000000000e+02,2.430000000000000000e+02
+2.526135603957463971e+01,2.137452047248695663e+01,1.921688398121294128e+01,6.100000000000000000e+01,4.800000000000000000e+01,4.000000000000000000e+01
+8.648616741430149801e+00,3.186633132632614362e+01,1.781449513396834661e+01,1.300000000000000000e+02,1.150000000000000000e+02,1.030000000000000000e+02
+9.770175046159550902e+00,3.049748241063943155e+01,8.556965732613596387e+00,1.120000000000000000e+02,9.900000000000000000e+01,8.500000000000000000e+01
+2.397239041364382928e+01,1.893785592258126727e+01,1.736818466411746087e+01,5.200000000000000000e+01,4.700000000000000000e+01,4.700000000000000000e+01
+9.394630248687196428e+00,3.180843886726580649e+01,1.573333747235793467e+01,1.280000000000000000e+02,1.210000000000000000e+02,1.190000000000000000e+02
+3.893928068879701332e+00,2.805993561323136376e+01,1.072276713804372861e+01,2.290000000000000000e+02,2.060000000000000000e+02,1.750000000000000000e+02
+2.685612264980623820e+01,3.222961277464650465e+01,1.838844669463684767e+01,1.080000000000000000e+02,9.700000000000000000e+01,9.300000000000000000e+01
+2.428691654849531290e+01,1.886969322755669509e+01,1.682038693809595387e+01,6.100000000000000000e+01,5.300000000000000000e+01,5.000000000000000000e+01
+3.670362617341063505e+00,2.975532842968135938e+01,1.317394531900963273e+01,2.190000000000000000e+02,2.540000000000000000e+02,2.380000000000000000e+02
+2.539937354468105823e+01,2.119712731745251233e+01,8.217488996194116879e+00,1.480000000000000000e+02,1.400000000000000000e+02,1.310000000000000000e+02
+6.286146957603546248e+00,2.802795980980798873e+01,9.996245036226163450e+00,2.430000000000000000e+02,2.290000000000000000e+02,2.030000000000000000e+02
+2.931373880494941631e+01,3.304744707781484436e+01,1.231639158864681072e+01,1.300000000000000000e+02,1.250000000000000000e+02,1.220000000000000000e+02
+2.525260623171760344e+01,1.514723256421422271e+01,9.753975475537318474e+00,4.500000000000000000e+01,3.500000000000000000e+01,3.300000000000000000e+01
+1.853274172482057836e+01,2.808832483705606364e+01,5.475806437724839881e+00,2.480000000000000000e+02,2.400000000000000000e+02,2.210000000000000000e+02
+9.483270554130008634e+00,2.932594064299060577e+01,1.008868051607285210e+01,9.200000000000000000e+01,8.100000000000000000e+01,7.500000000000000000e+01
+9.712232877803264941e+00,2.858626411494628883e+01,1.604351929693212497e+01,1.910000000000000000e+02,1.790000000000000000e+02,1.670000000000000000e+02
+2.597072482265652482e+01,1.882843108920468111e+01,8.560827686695983374e+00,1.960000000000000000e+02,1.820000000000000000e+02,1.650000000000000000e+02
+9.629153519745836221e+00,2.900772238396969627e+01,9.763490891769192714e+00,1.990000000000000000e+02,1.840000000000000000e+02,1.650000000000000000e+02
+4.859075104706187531e+00,2.747285072473401257e+01,5.098902317485347169e+00,3.800000000000000000e+01,3.600000000000000000e+01,3.700000000000000000e+01
+5.628283022718648887e+00,2.843639678990967568e+01,6.143968805868021299e+00,1.810000000000000000e+02,1.690000000000000000e+02,1.470000000000000000e+02
+9.620035167811312959e+00,3.032300334070152203e+01,1.835388887479567543e+01,3.800000000000000000e+01,2.900000000000000000e+01,2.500000000000000000e+01
+2.474866860866772811e+01,1.844020487877902426e+01,1.588749432797957617e+01,2.390000000000000000e+02,2.220000000000000000e+02,2.020000000000000000e+02
+2.477025878964818517e+01,1.919386856036918587e+01,1.578298651116210927e+01,3.900000000000000000e+01,3.400000000000000000e+01,3.500000000000000000e+01
+8.165440012553183635e+00,3.147583735245003211e+01,2.124344107793636383e+01,1.970000000000000000e+02,1.840000000000000000e+02,1.760000000000000000e+02
+2.677306910537830476e+01,2.446396543440073756e+01,6.736169378931834650e+00,1.600000000000000000e+01,1.300000000000000000e+01,1.600000000000000000e+01
+8.753312294661181880e+00,3.205812918417281310e+01,1.726537825342989407e+01,1.300000000000000000e+02,1.150000000000000000e+02,1.040000000000000000e+02
+4.248270638326082427e+00,2.787664482059561877e+01,9.494358090666302985e+00,3.700000000000000000e+01,3.200000000000000000e+01,2.800000000000000000e+01
+2.535026687181973415e+01,1.439673805932723027e+01,1.138880954755193109e+01,1.070000000000000000e+02,1.070000000000000000e+02,1.090000000000000000e+02
+1.971578407399755051e+01,3.147479002201855991e+01,5.609649321596980265e+00,1.420000000000000000e+02,1.300000000000000000e+02,1.160000000000000000e+02
+8.367724213474701855e+00,3.100308097942398078e+01,1.155173683447861421e+01,9.600000000000000000e+01,9.300000000000000000e+01,9.200000000000000000e+01
+2.553152150260163822e+01,1.866791884610797325e+01,7.785190761385753611e+00,2.420000000000000000e+02,2.280000000000000000e+02,2.020000000000000000e+02
+2.549579535531049501e+01,1.842574547761465809e+01,1.045944216218388512e+01,1.250000000000000000e+02,1.150000000000000000e+02,1.030000000000000000e+02
+2.272057597226129033e+01,3.758065839281135823e+01,2.249776632333351145e+01,1.210000000000000000e+02,1.120000000000000000e+02,1.030000000000000000e+02
+3.165493869115103820e+01,1.603057910485760118e+01,2.016272539905980565e+01,1.390000000000000000e+02,1.280000000000000000e+02,1.190000000000000000e+02
+2.444099603681843291e+01,1.473360354709748066e+01,1.239697393152357918e+01,1.400000000000000000e+01,1.100000000000000000e+01,1.100000000000000000e+01
+8.640061282009007471e+00,2.866296547711574050e+01,5.192012440617683744e+00,7.500000000000000000e+01,6.700000000000000000e+01,6.500000000000000000e+01
+1.224324496685414765e+01,3.008532234139627448e+01,4.976151113627848233e+00,1.920000000000000000e+02,1.810000000000000000e+02,1.610000000000000000e+02
+2.551144563052868008e+01,1.494330420080058452e+01,7.916897657759211171e+00,2.420000000000000000e+02,2.330000000000000000e+02,2.150000000000000000e+02
+3.607069771440889028e+00,2.800996940530728097e+01,5.241567877458997771e+00,5.800000000000000000e+01,5.500000000000000000e+01,5.400000000000000000e+01
+8.070315265203177546e+00,3.124570139526287349e+01,1.880124947758282161e+01,1.950000000000000000e+02,1.800000000000000000e+02,1.610000000000000000e+02
+2.458928241278820082e+01,1.467679219280804936e+01,1.130404908709330414e+01,1.050000000000000000e+02,1.000000000000000000e+02,1.020000000000000000e+02
+2.993318977165013450e+01,2.765818637928769519e+01,1.018346412457634642e+01,9.800000000000000000e+01,8.800000000000000000e+01,8.100000000000000000e+01
+2.393904499464655089e+01,3.488126126205143152e+01,1.475673369444048788e+01,2.500000000000000000e+02,2.380000000000000000e+02,2.290000000000000000e+02
+3.140638524213853344e+01,2.901295103888441318e+01,1.568412404601863841e+01,7.800000000000000000e+01,6.700000000000000000e+01,6.300000000000000000e+01
+2.694027427446964396e+01,1.917400803388348152e+01,1.624160627345543517e+01,2.360000000000000000e+02,2.210000000000000000e+02,2.030000000000000000e+02
+1.172052042392222759e+01,3.052230441168217467e+01,8.029636743692735834e+00,2.000000000000000000e+02,1.840000000000000000e+02,1.590000000000000000e+02
+1.017788840209622947e+01,2.870841422495895401e+01,2.217313033419927493e+01,2.000000000000000000e+01,2.500000000000000000e+01,2.400000000000000000e+01
+4.359465790222532000e+00,2.740790318810067916e+01,4.934141523953358366e+00,8.400000000000000000e+01,6.900000000000000000e+01,6.900000000000000000e+01
+2.745226874749078050e+01,1.887884892153865835e+01,1.816969915451507944e+01,4.700000000000000000e+01,3.500000000000000000e+01,2.700000000000000000e+01
+8.133292402080861905e+00,3.172372952376541377e+01,2.134626133391165581e+01,1.690000000000000000e+02,1.540000000000000000e+02,1.470000000000000000e+02
+1.128704974279327544e+01,2.925106268469005144e+01,5.672549368734102870e+00,1.650000000000000000e+02,1.500000000000000000e+02,1.260000000000000000e+02
+2.846348234415260858e+00,2.983404977364653732e+01,9.603030794312706675e+00,2.520000000000000000e+02,2.420000000000000000e+02,2.190000000000000000e+02
+6.418276458169066778e+00,2.784485382276573162e+01,9.775245110473495203e+00,8.200000000000000000e+01,6.200000000000000000e+01,4.900000000000000000e+01
+2.795232679116368857e+01,3.304052628724964080e+01,1.538439488743561867e+01,1.300000000000000000e+02,1.230000000000000000e+02,1.170000000000000000e+02
+2.318436658769214986e+01,3.757821561721017645e+01,2.537163043871444046e+01,6.900000000000000000e+01,6.200000000000000000e+01,5.900000000000000000e+01
+2.592087761119832479e+01,1.469272128900765217e+01,1.253666528242377254e+01,6.600000000000000000e+01,5.700000000000000000e+01,4.200000000000000000e+01
+1.252600420188978525e+01,2.917850137524583332e+01,1.939444934174575863e+01,7.400000000000000000e+01,6.100000000000000000e+01,5.300000000000000000e+01
+2.504529025029797396e+01,1.847998630159418099e+01,1.113689217989858804e+01,2.000000000000000000e+02,1.850000000000000000e+02,1.640000000000000000e+02
+9.260041679501711087e+00,3.059746883187420963e+01,6.997018469280701147e+00,2.310000000000000000e+02,2.170000000000000000e+02,1.920000000000000000e+02
+5.714640085175986428e+00,3.611134728733420474e+01,2.396697422276998068e+01,1.570000000000000000e+02,1.380000000000000000e+02,1.170000000000000000e+02
+3.133548537478304752e+01,3.205191772220626234e+01,1.217943448114221283e+01,1.100000000000000000e+02,1.020000000000000000e+02,1.000000000000000000e+02
+2.534139026546014861e+01,1.834427866312031696e+01,1.251167400636395755e+01,1.060000000000000000e+02,8.900000000000000000e+01,8.300000000000000000e+01
+2.528453520391683185e+01,1.825400977281182335e+01,1.967123438908716437e+01,1.270000000000000000e+02,1.110000000000000000e+02,1.000000000000000000e+02
+1.974413318995189925e+01,3.434493347722694523e+01,8.389087994640442858e+00,2.470000000000000000e+02,2.300000000000000000e+02,2.090000000000000000e+02
+7.744771487264189069e+00,3.150524487077001012e+01,1.633068946148891598e+01,4.400000000000000000e+01,3.800000000000000000e+01,3.800000000000000000e+01
+2.553532290763304857e+01,2.126332744176101386e+01,2.324720407800008104e+01,3.400000000000000000e+01,2.900000000000000000e+01,2.800000000000000000e+01
+2.568442042848156603e+01,1.520367928499455168e+01,1.317714413431776421e+01,7.100000000000000000e+01,6.800000000000000000e+01,6.700000000000000000e+01
+5.959275285467589001e+00,2.870186187407566436e+01,1.003705015478952411e+01,2.480000000000000000e+02,2.340000000000000000e+02,2.080000000000000000e+02
+2.618553488925232742e+01,1.392790902232499661e+01,1.080364331153947965e+01,7.100000000000000000e+01,5.300000000000000000e+01,3.200000000000000000e+01
+1.185029706979184816e+01,3.001905486775655874e+01,1.510337599086400040e+01,2.240000000000000000e+02,2.060000000000000000e+02,1.830000000000000000e+02
+2.230405622607226235e+01,3.835516475605384557e+01,1.712048368396764175e+01,5.700000000000000000e+01,4.400000000000000000e+01,3.300000000000000000e+01
+1.140490294097285151e+01,3.003895156306623093e+01,1.487736809094715618e+01,1.320000000000000000e+02,1.150000000000000000e+02,1.010000000000000000e+02
+2.054318058532324187e+01,3.462836932532449907e+01,2.824519195938507821e+01,7.800000000000000000e+01,6.200000000000000000e+01,5.100000000000000000e+01
+2.537173814644632941e+01,3.384055623918432332e+01,5.521497048408551045e+00,6.800000000000000000e+01,6.300000000000000000e+01,5.700000000000000000e+01
+1.977328829672906352e+01,3.611567527795872223e+01,5.584756812973103557e+00,9.200000000000000000e+01,8.900000000000000000e+01,8.000000000000000000e+01
+1.853152037050222134e+01,1.501139097778892229e+01,1.956988680713169781e+00,2.180000000000000000e+02,2.050000000000000000e+02,1.770000000000000000e+02
+2.861745718114965342e+01,3.163856207228607076e+01,1.950630655997957419e+01,1.240000000000000000e+02,1.140000000000000000e+02,1.120000000000000000e+02
+2.502485989003238132e+01,1.894504894067227241e+01,7.108260990664666323e+00,1.900000000000000000e+02,1.770000000000000000e+02,1.600000000000000000e+02
+2.111551856048071230e+01,3.774541891226749613e+01,5.840244387198483267e+00,9.200000000000000000e+01,9.000000000000000000e+01,8.200000000000000000e+01
+2.088184367174726219e+01,3.927943306545245861e+01,2.197191489315411062e+01,2.500000000000000000e+01,2.100000000000000000e+01,2.500000000000000000e+01
+3.348319719849757625e+00,3.002608472972808684e+01,1.552362543988896881e+01,9.900000000000000000e+01,1.180000000000000000e+02,1.090000000000000000e+02
+9.760624898467051835e+00,3.099564864751737048e+01,1.218546705446560452e+01,1.880000000000000000e+02,1.730000000000000000e+02,1.540000000000000000e+02
+9.872629822993406634e+00,3.055059081062163884e+01,1.178427579081366261e+01,6.700000000000000000e+01,5.800000000000000000e+01,5.200000000000000000e+01
+2.553131371064244703e+01,1.847129142238272337e+01,1.095704968530172252e+01,1.280000000000000000e+02,1.160000000000000000e+02,1.040000000000000000e+02
+3.241872956357255475e+00,3.080371780040819729e+01,1.453324544760568315e+01,3.200000000000000000e+01,3.800000000000000000e+01,3.300000000000000000e+01
+1.175454688466663633e+01,2.999567692867522339e+01,4.544952983436362892e+00,1.080000000000000000e+02,9.500000000000000000e+01,8.100000000000000000e+01
+9.064397808404274670e+00,2.886159571719979411e+01,1.695793838954390864e+01,1.910000000000000000e+02,1.790000000000000000e+02,1.690000000000000000e+02
+3.017067687388875186e+01,3.316104437418376705e+01,2.618044554181716776e+01,5.500000000000000000e+01,5.200000000000000000e+01,5.100000000000000000e+01
+2.951794911399086274e+01,3.323755948550830652e+01,1.724601982988042437e+01,5.600000000000000000e+01,4.300000000000000000e+01,3.700000000000000000e+01
+2.394361881816952575e+01,1.888383920911819658e+01,1.689944254312899119e+01,2.600000000000000000e+01,2.000000000000000000e+01,2.000000000000000000e+01
+2.563354476162670181e+01,1.464540940970614180e+01,1.034016192375615795e+01,1.800000000000000000e+02,1.640000000000000000e+02,1.400000000000000000e+02
+2.632723317160326815e+01,1.443242587688622791e+01,9.942041160297952374e+00,1.130000000000000000e+02,1.040000000000000000e+02,9.200000000000000000e+01
+4.435751061018820884e+00,2.729912186680458319e+01,4.761458866904656695e+00,1.370000000000000000e+02,1.250000000000000000e+02,1.070000000000000000e+02
+2.632723317160326459e+01,1.443242587688622613e+01,9.942041160297950597e+00,1.130000000000000000e+02,1.040000000000000000e+02,9.200000000000000000e+01
+1.780720826839592874e+01,3.081511716993953343e+01,5.502880857575629392e+00,2.020000000000000000e+02,1.860000000000000000e+02,1.640000000000000000e+02
+2.761593967750066980e+01,3.536968722997559667e+01,1.080430977128714787e+01,2.550000000000000000e+02,2.540000000000000000e+02,2.480000000000000000e+02
+1.054469409178250672e+01,2.878436375854811402e+01,1.592652613072196743e+01,5.700000000000000000e+01,4.800000000000000000e+01,4.700000000000000000e+01
+2.782062427131354454e+01,1.897275615810148253e+01,1.039976520748556865e+01,4.200000000000000000e+01,3.300000000000000000e+01,2.200000000000000000e+01
+3.184602698538018117e+01,3.210988123971706187e+01,2.229425682033778955e+01,5.400000000000000000e+01,5.100000000000000000e+01,5.100000000000000000e+01
+2.671151061976349084e+01,3.289291567470704791e+01,1.183271649474953868e+01,1.030000000000000000e+02,8.500000000000000000e+01,7.500000000000000000e+01
+2.363166364938168229e+01,3.715278452147248345e+01,2.218939284769417597e+01,4.800000000000000000e+01,4.600000000000000000e+01,4.500000000000000000e+01
+2.619382181153300593e+01,1.573294519768158928e+01,1.994144635604027016e+01,3.800000000000000000e+01,3.200000000000000000e+01,3.400000000000000000e+01
+2.087177667766392375e+01,3.862601009885812431e+01,2.516236678481595135e+01,2.600000000000000000e+01,2.600000000000000000e+01,2.400000000000000000e+01
+2.817188776816554707e+01,3.313916262071858654e+01,2.359120768202392782e+01,9.500000000000000000e+01,8.000000000000000000e+01,6.200000000000000000e+01
+2.621431697754829671e+01,1.577837545410142006e+01,2.089396444465709379e+01,3.600000000000000000e+01,3.200000000000000000e+01,3.400000000000000000e+01
+3.980900167590294192e+00,2.833896471592907673e+01,8.919928981144490621e+00,2.310000000000000000e+02,2.170000000000000000e+02,1.900000000000000000e+02
+2.517161992347027777e+01,1.817774841166912481e+01,5.550893612418381196e+00,1.140000000000000000e+02,1.080000000000000000e+02,1.040000000000000000e+02
+4.300596348670009839e+00,3.583431709536721144e+01,2.418250237633053601e+01,9.400000000000000000e+01,7.900000000000000000e+01,7.600000000000000000e+01
+1.418343067908736010e+01,3.251409916221881247e+01,1.674442435639864257e+01,3.500000000000000000e+01,2.600000000000000000e+01,2.500000000000000000e+01
+3.090477402624125247e+01,3.188626469082338843e+01,1.665262188199002225e+01,4.700000000000000000e+01,3.900000000000000000e+01,3.600000000000000000e+01
+2.111700249715767441e+01,2.911971841722049348e+01,5.729907778893325698e+00,9.600000000000000000e+01,9.300000000000000000e+01,8.600000000000000000e+01
+6.418276458169066778e+00,2.784485382276573162e+01,9.775245110473495203e+00,8.200000000000000000e+01,6.200000000000000000e+01,4.900000000000000000e+01
+9.902781339791847159e+00,2.804249008051479208e+01,4.970168361076907182e+00,2.260000000000000000e+02,2.140000000000000000e+02,1.900000000000000000e+02
+3.372190186577264992e+00,3.013502112352029982e+01,1.536947563771788161e+01,2.800000000000000000e+01,3.400000000000000000e+01,3.200000000000000000e+01
+1.124637871596034699e+01,2.947116069949754191e+01,6.006866924762333859e+00,1.900000000000000000e+02,1.760000000000000000e+02,1.590000000000000000e+02
+6.122371797377312852e+00,2.814303029241938603e+01,8.176446231026201161e+00,2.470000000000000000e+02,2.310000000000000000e+02,2.050000000000000000e+02
+2.737760948521839666e+01,3.279299373043043175e+01,1.889400277249623628e+01,1.270000000000000000e+02,1.160000000000000000e+02,1.070000000000000000e+02
+1.597533057963988057e+01,1.770274183536549728e+01,1.922295107114159851e+00,1.740000000000000000e+02,1.580000000000000000e+02,1.330000000000000000e+02
+2.560124661759207854e+01,1.486331022045688499e+01,9.793595895457293921e+00,2.470000000000000000e+02,2.320000000000000000e+02,2.030000000000000000e+02
+2.464778022566113336e+01,1.455102061735108521e+01,4.899887662984432346e+00,2.190000000000000000e+02,2.050000000000000000e+02,1.820000000000000000e+02
+3.090477402624126313e+01,3.188626469082339909e+01,1.665262188199002935e+01,4.700000000000000000e+01,3.900000000000000000e+01,3.600000000000000000e+01
+3.271879515116731341e+01,1.640366308233108583e+01,2.271659919811770934e+01,2.010000000000000000e+02,1.850000000000000000e+02,1.700000000000000000e+02
+2.737994399342788654e+01,1.395148327082985418e+01,1.242095436458492230e+01,2.200000000000000000e+02,2.080000000000000000e+02,1.840000000000000000e+02
+9.960307153160467664e+00,2.897794399464556392e+01,1.560031786602758608e+01,2.470000000000000000e+02,2.320000000000000000e+02,2.120000000000000000e+02
+7.698595622082875956e+00,3.137866392513218727e+01,1.468600595277125720e+01,4.600000000000000000e+01,4.200000000000000000e+01,4.300000000000000000e+01
+2.563139785052224795e+01,1.791984484520502718e+01,1.958307224028096627e+01,3.500000000000000000e+01,2.500000000000000000e+01,2.100000000000000000e+01
+1.157799042479946650e+01,2.948743268074056090e+01,7.594837200671260113e+00,1.360000000000000000e+02,1.200000000000000000e+02,1.060000000000000000e+02
+6.839944345227952027e+00,2.943450124327680228e+01,1.520357597458519550e+01,6.000000000000000000e+01,5.400000000000000000e+01,5.400000000000000000e+01
+2.609825469079315496e+01,3.451796408780586489e+01,1.114583330045675957e+01,2.530000000000000000e+02,2.530000000000000000e+02,2.430000000000000000e+02
+2.889130628286056712e+00,3.041389213521780022e+01,1.318892163644210491e+01,2.290000000000000000e+02,2.500000000000000000e+02,2.100000000000000000e+02
+2.518739315569708381e+01,3.422924225903069129e+01,1.383751342061352752e+01,1.980000000000000000e+02,1.820000000000000000e+02,1.710000000000000000e+02
+2.612767277964533363e+01,3.629986792019697361e+01,1.168581135309697672e+01,1.140000000000000000e+02,1.000000000000000000e+02,9.100000000000000000e+01
+5.998016009618472033e+00,2.896711165190042081e+01,1.462191499651259541e+01,9.200000000000000000e+01,7.800000000000000000e+01,7.500000000000000000e+01
+2.649803905169813945e+01,1.435180177595165674e+01,1.297681078975543834e+01,8.700000000000000000e+01,7.800000000000000000e+01,7.600000000000000000e+01
+2.589983205794931465e+01,2.997419224989127073e+01,2.784736026939194176e+01,4.500000000000000000e+01,3.500000000000000000e+01,2.600000000000000000e+01
+2.063672358308140176e+01,3.991551182274250920e+01,1.201934432156455479e+01,2.540000000000000000e+02,2.530000000000000000e+02,2.390000000000000000e+02
+1.180314419029202888e+01,2.935506232425625583e+01,1.927130327689895140e+01,7.300000000000000000e+01,5.800000000000000000e+01,5.100000000000000000e+01
+9.593416807079755415e+00,3.196593794367149499e+01,8.949307404509113439e+00,2.460000000000000000e+02,2.300000000000000000e+02,2.040000000000000000e+02
+8.911815286832501570e+00,3.126711736313543000e+01,2.046748409198560736e+01,2.390000000000000000e+02,2.210000000000000000e+02,1.990000000000000000e+02
+1.984320624205056660e+01,3.975749852084095437e+01,8.696110451638737970e+00,2.480000000000000000e+02,2.360000000000000000e+02,2.200000000000000000e+02
+3.620264103620255636e+00,2.899125293708906526e+01,6.543447789962476335e+00,2.340000000000000000e+02,2.180000000000000000e+02,1.920000000000000000e+02
+2.803185200742839811e+01,3.449542896267445258e+01,2.382104720259431119e+01,2.900000000000000000e+01,3.000000000000000000e+01,2.500000000000000000e+01
+2.486983375101766569e+01,1.843663396787121656e+01,1.477823926243977404e+01,2.280000000000000000e+02,2.130000000000000000e+02,1.920000000000000000e+02
+3.949959162886923281e+00,3.009288420928251995e+01,1.379800621581782138e+01,2.000000000000000000e+01,2.600000000000000000e+01,2.500000000000000000e+01
+7.917184636057526426e+00,2.907617075718259159e+01,4.255093835444936801e+00,5.800000000000000000e+01,4.500000000000000000e+01,3.700000000000000000e+01
+2.533363311082366920e+01,1.788273891597688348e+01,1.916537209462049773e+01,2.200000000000000000e+01,1.300000000000000000e+01,8.000000000000000000e+00
+5.242256559255173087e+00,2.862932534360087544e+01,5.506592874939316928e+00,9.300000000000000000e+01,9.100000000000000000e+01,8.900000000000000000e+01
+2.756237620964740387e+01,1.825802434188923939e+01,1.196499962874841394e+01,8.000000000000000000e+01,6.700000000000000000e+01,6.100000000000000000e+01
+1.796093918936308853e+01,2.777931594739928656e+01,8.363932206320329854e+00,1.300000000000000000e+02,1.220000000000000000e+02,1.180000000000000000e+02
+8.116547431299782289e+00,3.122434912132595386e+01,1.591910903185104686e+01,1.900000000000000000e+02,1.770000000000000000e+02,1.610000000000000000e+02
+3.828257085247074087e+00,2.878950730193475138e+01,7.521545210446899610e+00,2.520000000000000000e+02,2.410000000000000000e+02,2.150000000000000000e+02
+2.738673059932647202e+00,3.045867050759164130e+01,1.269598142275696695e+01,8.200000000000000000e+01,8.100000000000000000e+01,7.700000000000000000e+01
+2.739650537116730433e+01,3.405145188114013877e+01,1.507659335451640636e+01,1.450000000000000000e+02,1.350000000000000000e+02,1.330000000000000000e+02
+8.648616741430149801e+00,3.186633132632613652e+01,1.781449513396834661e+01,1.300000000000000000e+02,1.150000000000000000e+02,1.030000000000000000e+02
+2.526716564425452205e+01,1.413649591136538319e+01,4.906045717176698240e+00,1.280000000000000000e+02,1.190000000000000000e+02,1.100000000000000000e+02
+1.171092456051087716e+01,3.047274297719317460e+01,8.549521473923176629e+00,1.840000000000000000e+02,1.680000000000000000e+02,1.450000000000000000e+02
+4.329095232036748619e+00,2.995772273271574093e+01,1.551399389572931220e+01,2.100000000000000000e+02,2.360000000000000000e+02,2.080000000000000000e+02
+8.047508043108940967e+00,3.146797252474625850e+01,1.523594019636613872e+01,1.810000000000000000e+02,1.680000000000000000e+02,1.520000000000000000e+02
+8.263310273325993549e+00,3.137514845408352926e+01,2.213443492614221597e+01,2.010000000000000000e+02,1.900000000000000000e+02,1.790000000000000000e+02
+3.507370465257625192e+00,2.781606962906520053e+01,2.487080812772035632e+00,1.630000000000000000e+02,1.510000000000000000e+02,1.290000000000000000e+02
+2.542235325467572338e+01,1.501664497514634533e+01,5.876995952345563268e+00,1.110000000000000000e+02,9.900000000000000000e+01,8.700000000000000000e+01
+4.290340939373303186e+00,2.774082951429417676e+01,5.825794872089890220e+00,6.800000000000000000e+01,6.200000000000000000e+01,5.900000000000000000e+01
+2.444259764061682105e+01,1.870493619380209083e+01,1.623558037833445766e+01,5.000000000000000000e+01,4.400000000000000000e+01,4.400000000000000000e+01
+3.168217119648229030e+01,3.210673261281647228e+01,2.311502903595534875e+01,5.500000000000000000e+01,5.000000000000000000e+01,4.700000000000000000e+01
+2.312182307165563344e+01,3.557150847163010354e+01,1.882112066671137285e+01,1.220000000000000000e+02,1.130000000000000000e+02,1.050000000000000000e+02
+2.848552628484982918e+01,3.277452130054871304e+01,2.614289455438062504e+01,5.700000000000000000e+01,5.400000000000000000e+01,4.900000000000000000e+01
+3.759894266636834459e+00,2.795304066099711449e+01,9.815600599923982372e+00,1.480000000000000000e+02,1.380000000000000000e+02,1.260000000000000000e+02
+2.630170720392606754e+01,3.558667571673925778e+01,1.396831480109811174e+01,1.170000000000000000e+02,9.800000000000000000e+01,8.300000000000000000e+01
+2.549833978389751721e+01,2.129235913692137316e+01,5.760212311962600751e+00,1.800000000000000000e+01,1.700000000000000000e+01,1.800000000000000000e+01
+2.066189913133704437e+01,3.406973645502006320e+01,2.848622452293897567e+01,3.400000000000000000e+01,2.300000000000000000e+01,1.900000000000000000e+01
+2.888131301095617776e+00,2.919920913110771465e+01,1.147291032952108836e+01,4.700000000000000000e+01,3.900000000000000000e+01,3.600000000000000000e+01
+2.720764444160626283e+01,2.465576581918208277e+01,1.713674920580511341e+01,1.040000000000000000e+02,8.400000000000000000e+01,6.600000000000000000e+01
+3.313071360941493015e+00,3.023057686381897824e+01,1.502914838744546877e+01,3.000000000000000000e+01,3.400000000000000000e+01,3.400000000000000000e+01
+3.219132714463088973e+01,1.659415880800023757e+01,2.250037825792887958e+01,2.340000000000000000e+02,2.210000000000000000e+02,2.000000000000000000e+02
+3.145827588923728158e+01,3.307823070268219823e+01,1.182477990525657852e+01,5.300000000000000000e+01,4.400000000000000000e+01,4.300000000000000000e+01
+3.046366373103837333e+01,3.111848903640978037e+01,1.905512103579571104e+01,1.120000000000000000e+02,9.600000000000000000e+01,8.300000000000000000e+01
+1.639410818047267426e+01,3.517045901796199558e+01,2.471611528904675836e+01,4.100000000000000000e+01,4.100000000000000000e+01,4.200000000000000000e+01
+2.535462338966959805e+01,1.504216858130891943e+01,1.038122482291618276e+01,1.980000000000000000e+02,1.790000000000000000e+02,1.530000000000000000e+02
+2.905682466244082462e+01,3.354892648744139905e+01,2.203324184755253512e+01,9.800000000000000000e+01,9.300000000000000000e+01,8.200000000000000000e+01
+1.983678909597377071e+01,3.975262935639872097e+01,2.161924457877696071e+01,3.500000000000000000e+01,3.300000000000000000e+01,3.400000000000000000e+01
+2.365087391677433004e+01,2.067241500527129361e+01,1.983867170418784553e+01,1.260000000000000000e+02,1.140000000000000000e+02,1.020000000000000000e+02
+2.399862899508160652e+01,3.686350363471917291e+01,1.105667702392474361e+01,2.530000000000000000e+02,2.550000000000000000e+02,2.480000000000000000e+02
+2.581447659011416462e+01,2.111121441846079705e+01,9.568223284580096077e+00,3.400000000000000000e+01,3.000000000000000000e+01,3.100000000000000000e+01
+2.788564408926680116e+01,1.899182893868320932e+01,1.548850735890186847e+01,8.000000000000000000e+01,6.900000000000000000e+01,6.400000000000000000e+01
+1.873728127508517005e+01,3.776815496574484854e+01,1.878853574407247606e+01,6.600000000000000000e+01,5.200000000000000000e+01,4.300000000000000000e+01
+1.329973745462451440e+01,3.121441797467663548e+01,1.670296708322748813e+01,2.900000000000000000e+01,2.000000000000000000e+01,2.200000000000000000e+01
+2.547471010061065044e+01,3.382090230243040452e+01,1.904463485343848816e+01,8.400000000000000000e+01,7.200000000000000000e+01,6.300000000000000000e+01
+3.658836773980379320e+00,2.865912576412650736e+01,6.298145689552034909e+00,2.240000000000000000e+02,2.070000000000000000e+02,1.780000000000000000e+02
+1.112967509478000316e+01,2.934546351186600077e+01,1.605205452244750219e+01,1.200000000000000000e+02,1.130000000000000000e+02,1.160000000000000000e+02
+1.454884202131968429e+01,2.635624510741800819e+01,4.479073104205999023e+00,2.420000000000000000e+02,2.320000000000000000e+02,2.050000000000000000e+02
+2.451787798308950883e+01,1.812011606338453973e+01,3.552836403056737868e+00,2.120000000000000000e+02,2.070000000000000000e+02,1.900000000000000000e+02
+9.272080741953105942e+00,2.856680177141477017e+01,1.197787308204078549e+01,7.200000000000000000e+01,6.200000000000000000e+01,5.900000000000000000e+01
+2.489702244994480296e+01,2.117755153568335658e+01,1.771519231007061990e+01,3.000000000000000000e+01,2.300000000000000000e+01,2.400000000000000000e+01
+9.889873752808602703e+00,2.790838496400207447e+01,1.945877611007893293e+01,8.600000000000000000e+01,6.500000000000000000e+01,4.600000000000000000e+01
+1.986746381231705882e+01,4.083142842438755338e+01,1.211224062042235694e+01,1.430000000000000000e+02,1.340000000000000000e+02,1.320000000000000000e+02
+2.031432507085151329e+01,4.031016068462427882e+01,1.585382158689004939e+01,6.400000000000000000e+01,5.400000000000000000e+01,5.500000000000000000e+01
+4.644819844086794269e+00,2.809165532816272304e+01,7.805769475362578369e+00,8.100000000000000000e+01,6.800000000000000000e+01,6.100000000000000000e+01
+1.038345628816002808e+01,2.846048976429545618e+01,1.887432656001371001e+01,8.300000000000000000e+01,6.800000000000000000e+01,5.500000000000000000e+01
+8.319512287455046007e+00,3.116843698741374880e+01,1.916147558544401619e+01,9.200000000000000000e+01,7.900000000000000000e+01,7.000000000000000000e+01
+2.529077259176779080e+01,2.071030932663246205e+01,5.250889596914330326e+00,1.860000000000000000e+02,1.740000000000000000e+02,1.560000000000000000e+02
+2.605036448376718994e+01,3.600312566732735320e+01,2.205463724331986697e+01,1.060000000000000000e+02,9.100000000000000000e+01,6.600000000000000000e+01
+1.029248825282106772e+01,2.879525723994480302e+01,5.660137268293926383e+00,2.500000000000000000e+01,2.100000000000000000e+01,2.200000000000000000e+01
+1.987011161001307968e+01,3.969011471070874109e+01,5.098310118959205717e+00,2.230000000000000000e+02,2.110000000000000000e+02,1.890000000000000000e+02
+2.764225630281116253e+01,1.766950478219719400e+01,1.840125056383021729e+01,9.900000000000000000e+01,9.200000000000000000e+01,8.900000000000000000e+01
+1.170023844511899114e+01,2.994494298994987602e+01,4.237322533607764008e+00,5.600000000000000000e+01,4.500000000000000000e+01,3.400000000000000000e+01
+2.577028880621296381e+01,1.481065399526422333e+01,6.860936976206506444e+00,2.420000000000000000e+02,2.240000000000000000e+02,1.940000000000000000e+02
+2.642043704400620285e+01,1.511770279479218004e+01,1.812671763482151732e+01,1.120000000000000000e+02,1.020000000000000000e+02,9.800000000000000000e+01
+3.289861780590967300e+01,3.219066023169147428e+01,1.162262616776957813e+01,1.160000000000000000e+02,1.100000000000000000e+02,1.040000000000000000e+02
+2.646678780091442107e+01,3.520553079195948243e+01,2.173129316050660265e+01,4.800000000000000000e+01,3.700000000000000000e+01,4.200000000000000000e+01
+2.763422416000723025e+00,3.067721570366769868e+01,1.445011005465941700e+01,6.900000000000000000e+01,7.100000000000000000e+01,7.200000000000000000e+01
+2.828252396636320221e+00,3.008269444448357888e+01,9.366828761747438392e+00,4.000000000000000000e+01,4.400000000000000000e+01,3.800000000000000000e+01
+3.095601338071497466e+01,3.247831310926756743e+01,1.053345355673048367e+01,1.020000000000000000e+02,9.600000000000000000e+01,9.200000000000000000e+01
+2.619112157837718158e+01,1.522585984676410042e+01,1.780051390452501536e+01,4.600000000000000000e+01,4.000000000000000000e+01,4.200000000000000000e+01
+9.916629335824572067e+00,2.828128800347916183e+01,1.913380641739044563e+01,1.400000000000000000e+02,1.280000000000000000e+02,1.180000000000000000e+02
+9.832304679247082291e+00,3.116569128023972368e+01,1.050202038104652402e+01,1.740000000000000000e+02,1.590000000000000000e+02,1.420000000000000000e+02
+5.656825661222872448e+00,2.774031429461220100e+01,1.075413026170250497e+01,2.100000000000000000e+01,1.600000000000000000e+01,2.000000000000000000e+01
+2.795333555811707527e+01,1.944754486104072910e+01,1.073226287696998504e+01,4.000000000000000000e+01,2.700000000000000000e+01,1.900000000000000000e+01
+2.569301460936295101e+01,2.858050104439021410e+01,7.262356203388342202e+00,2.290000000000000000e+02,2.120000000000000000e+02,1.940000000000000000e+02
+2.172531523349664795e+01,3.918947669815918999e+01,1.204311106211688731e+01,2.540000000000000000e+02,2.500000000000000000e+02,2.350000000000000000e+02
+2.674105917132833099e+01,3.329302738741115064e+01,1.258288201594492861e+01,1.930000000000000000e+02,1.730000000000000000e+02,1.640000000000000000e+02
+3.081035575780281022e+01,3.104444040833772789e+01,1.783689015183266591e+01,9.700000000000000000e+01,8.100000000000000000e+01,7.200000000000000000e+01
+1.627841502171985510e+01,3.374929882651245094e+01,5.526545657401527478e+00,2.310000000000000000e+02,2.180000000000000000e+02,1.990000000000000000e+02
+5.467163659176791590e+00,3.374508007949773969e+01,1.899998740487426119e+01,8.600000000000000000e+01,8.000000000000000000e+01,7.600000000000000000e+01
+7.996708461575390281e+00,2.921007492444457299e+01,2.217385883076881559e+00,2.130000000000000000e+02,1.960000000000000000e+02,1.780000000000000000e+02
+3.172872723260383054e+01,3.182350639841074624e+01,1.249300608160590897e+01,6.300000000000000000e+01,5.500000000000000000e+01,5.000000000000000000e+01
+2.603221593731079864e+01,3.608843396261654135e+01,1.199747281216969874e+01,2.200000000000000000e+02,2.040000000000000000e+02,1.890000000000000000e+02
+6.197578652451823267e+00,2.806030351884708907e+01,8.645305873747705760e+00,2.410000000000000000e+02,2.270000000000000000e+02,2.010000000000000000e+02
+2.627278976836180036e+01,1.514347362486603288e+01,1.546074973359134042e+01,9.300000000000000000e+01,8.400000000000000000e+01,8.200000000000000000e+01
+2.456187608348630036e+01,1.938189582405635036e+01,1.905053518790235145e+01,7.600000000000000000e+01,6.000000000000000000e+01,4.700000000000000000e+01
+6.344845009422925841e+00,2.782237175805469320e+01,7.247660994570117587e+00,7.900000000000000000e+01,6.500000000000000000e+01,5.700000000000000000e+01
+2.262245891392770858e+01,3.553628558029325291e+01,1.276049059041086409e+01,2.540000000000000000e+02,2.420000000000000000e+02,2.260000000000000000e+02
+3.843186482369417956e+00,2.838076017043783494e+01,1.059374622395653098e+01,5.500000000000000000e+01,3.700000000000000000e+01,2.600000000000000000e+01
+2.724271580862746234e+01,1.401639227009112609e+01,1.259123108007245051e+01,4.100000000000000000e+01,3.500000000000000000e+01,3.000000000000000000e+01
+3.573096735987711270e+00,2.914335040615677030e+01,7.887082207534005462e+00,1.290000000000000000e+02,1.540000000000000000e+02,1.350000000000000000e+02
+9.760624898467048283e+00,3.099564864751735982e+01,1.218546705446560274e+01,1.880000000000000000e+02,1.730000000000000000e+02,1.540000000000000000e+02
+2.233673713104025182e+01,3.808848802062902195e+01,2.587871206240957633e+01,1.600000000000000000e+01,1.200000000000000000e+01,1.400000000000000000e+01
+6.624753509802847162e+00,2.844661673433780891e+01,1.213868837330187667e+01,4.400000000000000000e+01,3.600000000000000000e+01,3.200000000000000000e+01
+7.560645227017237957e+00,2.945964636116964996e+01,5.572473201304600998e+00,2.600000000000000000e+01,2.000000000000000000e+01,2.000000000000000000e+01
+6.105362988971525517e+00,2.834602648197795105e+01,6.972962765264858476e+00,2.330000000000000000e+02,2.210000000000000000e+02,1.970000000000000000e+02
+3.040176706531775075e+00,2.882041840893628049e+01,1.072607508133302723e+01,2.260000000000000000e+02,2.110000000000000000e+02,1.860000000000000000e+02
+1.029248825282106772e+01,2.879525723994480302e+01,5.660137268293926383e+00,2.500000000000000000e+01,2.100000000000000000e+01,2.200000000000000000e+01
+1.897684241488705226e+01,3.794773310654436216e+01,6.127402608580525545e+00,2.420000000000000000e+02,2.290000000000000000e+02,2.100000000000000000e+02
+4.410534097621410687e+00,3.575987915367489478e+01,2.151006348817858083e+01,1.060000000000000000e+02,9.700000000000000000e+01,8.900000000000000000e+01
+2.812750111751409676e+01,2.659018695453749714e+01,2.439439334476529453e+01,9.300000000000000000e+01,7.900000000000000000e+01,6.900000000000000000e+01
+5.634034197962730417e+00,2.817080237724151459e+01,1.160698101497724544e+01,1.920000000000000000e+02,1.820000000000000000e+02,1.640000000000000000e+02
+9.788359100833243787e+00,3.190657810623284618e+01,9.220859224229492668e+00,2.500000000000000000e+02,2.330000000000000000e+02,2.070000000000000000e+02
+1.586239363460428287e+01,1.784524457247277240e+01,1.835931854934137242e+00,2.000000000000000000e+02,1.880000000000000000e+02,1.580000000000000000e+02
+3.200207417985751590e+01,3.139601777051391807e+01,1.689260813918485127e+01,6.000000000000000000e+01,5.200000000000000000e+01,4.600000000000000000e+01
+6.184760186832146012e+00,2.804712857981802898e+01,6.123555364598775697e+00,1.890000000000000000e+02,1.740000000000000000e+02,1.540000000000000000e+02
+3.201786626904468580e+00,2.909080551448710494e+01,1.141444753699341774e+01,2.600000000000000000e+01,2.100000000000000000e+01,1.800000000000000000e+01
+2.542235325467574114e+01,1.501664497514635421e+01,5.876995952345563268e+00,1.110000000000000000e+02,9.900000000000000000e+01,8.700000000000000000e+01
+2.950974275817017300e+01,3.299325630841268264e+01,1.036914157151194260e+01,1.890000000000000000e+02,1.780000000000000000e+02,1.600000000000000000e+02
+1.202201201806629172e+01,3.050747640421990781e+01,2.372166934833369822e+01,2.130000000000000000e+02,1.960000000000000000e+02,1.740000000000000000e+02
+3.302296091424785640e+00,3.020760024400783905e+01,1.323918820383166128e+01,2.340000000000000000e+02,2.540000000000000000e+02,2.340000000000000000e+02
+3.985587251699613809e+00,2.752840130195435364e+01,5.094330489534438122e+00,7.500000000000000000e+01,7.000000000000000000e+01,6.700000000000000000e+01
+8.862659888047549117e+00,3.178231291334015296e+01,7.769398886080241873e+00,1.110000000000000000e+02,1.010000000000000000e+02,9.200000000000000000e+01
+2.443804060100256947e+01,1.883373443115541335e+01,1.965158556834475689e+01,1.340000000000000000e+02,1.210000000000000000e+02,1.070000000000000000e+02
+3.101330393404472030e+00,2.930853916962907135e+01,1.058026722361445593e+01,4.300000000000000000e+01,2.700000000000000000e+01,1.900000000000000000e+01
+2.456796551908243487e+01,1.981836603908934435e+01,1.931582352849258655e+01,1.260000000000000000e+02,1.080000000000000000e+02,9.400000000000000000e+01
+6.149763815025768743e+00,2.904198607962194956e+01,1.378467625771125604e+01,6.300000000000000000e+01,5.300000000000000000e+01,5.200000000000000000e+01
+9.743361564473252301e+00,2.892482621553844879e+01,1.449855994211568699e+01,2.440000000000000000e+02,2.260000000000000000e+02,2.060000000000000000e+02
+8.116683574331391426e+00,3.029634642571565806e+01,5.362002653107044381e+00,1.240000000000000000e+02,1.170000000000000000e+02,1.120000000000000000e+02
+1.996949915615289584e+01,3.826969206433496140e+01,1.464274411892956707e+01,1.420000000000000000e+02,1.380000000000000000e+02,1.370000000000000000e+02
+2.113853240948306578e+01,3.857148375828438702e+01,2.343075541540290985e+01,8.200000000000000000e+01,6.100000000000000000e+01,3.400000000000000000e+01
+1.156814073561018397e+01,2.932206957730897301e+01,6.308227523373060031e+00,1.240000000000000000e+02,1.100000000000000000e+02,9.700000000000000000e+01
+3.772742488753868528e+00,2.850165244457581082e+01,8.380179347074438567e+00,2.540000000000000000e+02,2.490000000000000000e+02,2.250000000000000000e+02
+9.695178828180100794e+00,2.849647456153200764e+01,5.039284890099562375e+00,2.190000000000000000e+02,2.060000000000000000e+02,1.870000000000000000e+02
+2.766579006590322365e+01,1.848309263278020964e+01,2.029597682160394001e+01,5.400000000000000000e+01,4.500000000000000000e+01,3.800000000000000000e+01
+9.807933008799295749e+00,2.905336248805142674e+01,1.239108067928547641e+01,2.190000000000000000e+02,2.030000000000000000e+02,1.800000000000000000e+02
+3.240560894820999405e+00,2.963513001900742694e+01,9.326203767855353988e+00,5.500000000000000000e+01,6.200000000000000000e+01,5.400000000000000000e+01
+4.605261364396844748e+00,2.803174786704427746e+01,8.411969286554707992e+00,8.100000000000000000e+01,6.400000000000000000e+01,5.500000000000000000e+01
+5.191348680626494350e+00,2.871157171346782278e+01,6.908417998249190894e+00,2.510000000000000000e+02,2.390000000000000000e+02,2.170000000000000000e+02
+8.084096588882010437e+00,3.152326584852763247e+01,1.687867451191840473e+01,1.850000000000000000e+02,1.680000000000000000e+02,1.500000000000000000e+02
+2.021113634190681552e+01,3.864896272024796531e+01,1.641742767262977765e+01,5.500000000000000000e+01,4.600000000000000000e+01,4.500000000000000000e+01
+2.535750424502744593e+01,1.842312498334964843e+01,1.893412479460294762e+01,2.540000000000000000e+02,2.470000000000000000e+02,2.310000000000000000e+02
+2.552961134214207206e+01,1.488559526587135373e+01,8.626843028218518228e+00,2.310000000000000000e+02,2.160000000000000000e+02,1.880000000000000000e+02
+3.607069771440885919e+00,2.800996940530726675e+01,5.241567877458995994e+00,5.800000000000000000e+01,5.500000000000000000e+01,5.400000000000000000e+01
+2.634050912419916557e+01,1.439956737474410708e+01,6.698659184594115246e+00,2.170000000000000000e+02,2.040000000000000000e+02,1.800000000000000000e+02
+1.241301522457817974e+01,3.028152231682097550e+01,2.325255805857505820e+01,1.810000000000000000e+02,1.690000000000000000e+02,1.570000000000000000e+02
+2.368096871208489418e+01,1.788832178299545816e+01,1.981684495239734289e+01,1.800000000000000000e+02,1.690000000000000000e+02,1.630000000000000000e+02
+9.506369310829596131e+00,2.853793816586162535e+01,1.798256085962708184e+01,1.540000000000000000e+02,1.370000000000000000e+02,1.220000000000000000e+02
+8.069418030922367535e+00,3.131594472617552682e+01,1.924900719257695414e+01,2.250000000000000000e+02,2.080000000000000000e+02,1.870000000000000000e+02
+2.618602183231803338e+01,1.442027044153665472e+01,8.573611769279164463e+00,2.210000000000000000e+02,2.020000000000000000e+02,1.710000000000000000e+02
+1.818577602664753456e+01,3.001918606167503256e+01,7.092906098132314874e+00,2.210000000000000000e+02,2.170000000000000000e+02,2.000000000000000000e+02
+1.860915389442267198e+01,2.890258006010786929e+01,5.942541901122999626e+00,2.340000000000000000e+02,2.270000000000000000e+02,2.140000000000000000e+02
+2.678262863830325458e+01,3.244918982578677458e+01,1.298276449731833360e+01,1.020000000000000000e+02,9.200000000000000000e+01,9.000000000000000000e+01
+3.032478643619662506e+01,3.059033714085279243e+01,2.014633736515007811e+01,1.700000000000000000e+01,1.500000000000000000e+01,1.900000000000000000e+01
+2.354027608343632494e+01,3.390404748074644203e+01,5.475406724771325173e+00,7.800000000000000000e+01,7.300000000000000000e+01,6.700000000000000000e+01
+9.884098247295977302e+00,2.845187496041812381e+01,1.641355844865524460e+01,1.870000000000000000e+02,1.740000000000000000e+02,1.660000000000000000e+02
+2.500889553656542930e+01,1.741980961259532990e+01,4.842064657717198628e+00,2.370000000000000000e+02,2.340000000000000000e+02,2.170000000000000000e+02
+4.644610946218827863e+00,3.595305741848272874e+01,2.149516887086874206e+01,8.300000000000000000e+01,6.800000000000000000e+01,6.000000000000000000e+01
+4.653391941492285966e+00,2.813565518332208981e+01,6.760241679381355340e+00,9.300000000000000000e+01,8.300000000000000000e+01,7.300000000000000000e+01
+4.253497595490765448e+00,2.959041877776039087e+01,1.221321767481392939e+01,2.100000000000000000e+01,1.900000000000000000e+01,1.800000000000000000e+01
+2.683313003563539567e+01,3.474003220860663532e+01,1.615373084919743718e+01,7.300000000000000000e+01,6.300000000000000000e+01,6.300000000000000000e+01
+2.469492151463438390e+01,1.843806643894156494e+01,5.577606724843882091e+00,7.000000000000000000e+01,6.300000000000000000e+01,6.100000000000000000e+01
+2.447561080777049725e+01,1.847417903038274645e+01,1.502871727774294719e+01,1.100000000000000000e+02,9.900000000000000000e+01,9.000000000000000000e+01
+2.674105917132833099e+01,3.329302738741115064e+01,1.258288201594492861e+01,1.930000000000000000e+02,1.730000000000000000e+02,1.640000000000000000e+02
+5.480346933859912006e+00,2.853151623276676574e+01,8.801508470030871223e+00,2.440000000000000000e+02,2.250000000000000000e+02,1.930000000000000000e+02
+3.201114553265988594e+00,2.949538130577172623e+01,7.747206336038469310e+00,3.300000000000000000e+01,3.700000000000000000e+01,3.300000000000000000e+01
+5.184215511210007676e+00,2.880745275757240265e+01,7.583900944253723964e+00,2.240000000000000000e+02,2.060000000000000000e+02,1.820000000000000000e+02
+2.781797531743487539e+01,1.865216590372134320e+01,1.131449330594244707e+01,2.000000000000000000e+01,1.700000000000000000e+01,1.800000000000000000e+01
+1.849209357766261874e+01,1.635078524816441359e+01,2.313486718793592800e+00,2.170000000000000000e+02,2.030000000000000000e+02,1.790000000000000000e+02
+2.774477468659270940e+01,1.891414632978994703e+01,1.248139818590480665e+01,2.600000000000000000e+01,2.100000000000000000e+01,2.000000000000000000e+01
+2.633841018963620684e+01,3.039864688959308836e+01,7.832873258262223359e+00,6.300000000000000000e+01,4.500000000000000000e+01,4.500000000000000000e+01
+6.299836750558712950e+00,2.811130110169530383e+01,1.245709619658787126e+01,9.200000000000000000e+01,8.600000000000000000e+01,8.600000000000000000e+01
+1.072696392718776082e+01,2.954787316828379673e+01,7.010186091161092925e+00,1.030000000000000000e+02,9.000000000000000000e+01,8.000000000000000000e+01
+1.707868549054411389e+01,3.675425195519741806e+01,1.153185472074388151e+01,2.340000000000000000e+02,2.190000000000000000e+02,1.950000000000000000e+02
+2.356296906022073756e+01,3.716647338058401573e+01,2.288297868397706480e+01,1.110000000000000000e+02,8.900000000000000000e+01,7.700000000000000000e+01
+2.673043255746162217e+01,1.907496828769182784e+01,7.383462890338130080e+00,8.300000000000000000e+01,7.200000000000000000e+01,6.800000000000000000e+01
+1.796093918936308853e+01,2.777931594739928656e+01,8.363932206320329854e+00,1.300000000000000000e+02,1.220000000000000000e+02,1.180000000000000000e+02
+2.498908561569843911e+01,1.499205731482989101e+01,7.170356626412091927e+00,4.800000000000000000e+01,4.000000000000000000e+01,3.800000000000000000e+01
+3.843186482369421508e+00,2.838076017043786337e+01,1.059374622395653631e+01,5.500000000000000000e+01,3.700000000000000000e+01,2.600000000000000000e+01
+1.916891969310069754e+01,1.510909570372246513e+01,2.123760327163915829e+00,2.380000000000000000e+02,2.290000000000000000e+02,2.030000000000000000e+02
+4.404715945754703377e+00,2.967085675972456116e+01,1.607501287640413423e+01,4.700000000000000000e+01,5.500000000000000000e+01,5.100000000000000000e+01
+1.879179116222653789e+01,3.061927464935151733e+01,9.448205116947994142e+00,2.540000000000000000e+02,2.550000000000000000e+02,2.460000000000000000e+02
+3.209467050593033832e+00,2.958150026517141029e+01,9.782451598294313655e+00,1.290000000000000000e+02,1.100000000000000000e+02,8.900000000000000000e+01
+8.069418030922367535e+00,3.131594472617552682e+01,1.924900719257695414e+01,2.250000000000000000e+02,2.080000000000000000e+02,1.870000000000000000e+02
+2.547455594979400217e+01,1.486130755130542447e+01,6.064936797864683982e+00,3.900000000000000000e+01,3.000000000000000000e+01,2.600000000000000000e+01
+2.679839165560995795e+01,3.296323132271617595e+01,1.921616980312099088e+01,7.600000000000000000e+01,6.600000000000000000e+01,5.900000000000000000e+01
+2.986710493365840158e+00,3.082369429600694843e+01,1.495305467485613171e+01,4.100000000000000000e+01,4.300000000000000000e+01,3.900000000000000000e+01
+2.574393756744098738e+01,1.314542237136049785e+01,1.114413234865545022e+01,1.780000000000000000e+02,1.590000000000000000e+02,1.350000000000000000e+02
+2.544116666005333016e+01,2.156143807474985508e+01,5.586839914941899465e+00,1.410000000000000000e+02,1.350000000000000000e+02,1.350000000000000000e+02
+1.799309679468488454e+01,2.854642027882317734e+01,6.893352007524048197e+00,2.440000000000000000e+02,2.370000000000000000e+02,2.240000000000000000e+02
+2.520739199418155252e+01,2.098877876503071960e+01,1.802534442216995458e+01,1.090000000000000000e+02,1.010000000000000000e+02,9.200000000000000000e+01
+1.991347314413807723e+01,3.911431290129718974e+01,5.845507962538556868e+00,9.600000000000000000e+01,8.600000000000000000e+01,7.600000000000000000e+01
+7.998300142284257674e+00,3.132290361007060042e+01,1.431013025987499354e+01,1.440000000000000000e+02,1.310000000000000000e+02,1.230000000000000000e+02
+2.484208750663342968e+01,1.481398035156727033e+01,5.119586633686658672e+00,1.530000000000000000e+02,1.380000000000000000e+02,1.180000000000000000e+02
+5.874707889660897742e+00,2.840885067902686600e+01,1.192522405987483580e+01,2.240000000000000000e+02,2.130000000000000000e+02,1.950000000000000000e+02
+3.442614925968776163e+01,3.338021574805804903e+01,2.307828927316283085e+01,1.020000000000000000e+02,8.400000000000000000e+01,7.100000000000000000e+01
+2.443804060100256947e+01,1.883373443115541335e+01,1.965158556834475689e+01,1.340000000000000000e+02,1.210000000000000000e+02,1.070000000000000000e+02
+2.596039292793286890e+01,1.621958372605672238e+01,9.893252472726436153e+00,1.180000000000000000e+02,1.020000000000000000e+02,8.300000000000000000e+01
+3.193139593991557845e+01,3.221610728422278669e+01,1.552597189189470583e+01,5.100000000000000000e+01,4.000000000000000000e+01,3.500000000000000000e+01
+1.916352738141863554e+01,3.911613160219895491e+01,1.479975741723750460e+01,1.290000000000000000e+02,1.240000000000000000e+02,1.230000000000000000e+02
+2.641391786873818504e+01,3.564488574822674849e+01,1.086444380927440712e+01,2.540000000000000000e+02,2.500000000000000000e+02,2.370000000000000000e+02
+8.967176525369120910e+00,3.040894333244446202e+01,1.904634635977064860e+01,4.000000000000000000e+01,3.000000000000000000e+01,2.800000000000000000e+01
+6.258960075049017746e+00,2.815341713367922338e+01,1.194601563380835607e+01,2.440000000000000000e+02,2.360000000000000000e+02,2.210000000000000000e+02
+1.277750094713676532e+01,2.997088856226959663e+01,4.642482290445715698e+00,8.500000000000000000e+01,7.500000000000000000e+01,6.500000000000000000e+01
+3.024596221778774741e+00,3.026805555821015759e+01,1.569977526664893830e+01,6.500000000000000000e+01,7.600000000000000000e+01,7.100000000000000000e+01
+2.465279565758983438e+01,1.804687645006863761e+01,1.733156436265515410e+01,1.100000000000000000e+02,9.700000000000000000e+01,8.800000000000000000e+01
+8.232790837043957310e+00,2.896285780431238521e+01,2.452046241160954043e+00,1.670000000000000000e+02,1.580000000000000000e+02,1.400000000000000000e+02
+3.149958762991658290e+01,3.025362693464501618e+01,1.666798420165930494e+01,2.000000000000000000e+01,1.200000000000000000e+01,1.100000000000000000e+01
+8.983571865262415912e+00,3.130028229776234028e+01,4.972810451294978229e+00,6.400000000000000000e+01,5.600000000000000000e+01,5.500000000000000000e+01
+2.600002510454426030e+01,1.543148909008796998e+01,1.609931618419369670e+01,3.000000000000000000e+01,2.800000000000000000e+01,2.900000000000000000e+01
+2.329970253500996336e+01,2.819200575868287828e+01,8.539592975941427966e+00,8.200000000000000000e+01,7.100000000000000000e+01,7.000000000000000000e+01
+2.375519537706685469e+01,3.609443137545206071e+01,1.937304979688189022e+01,7.600000000000000000e+01,5.800000000000000000e+01,4.400000000000000000e+01
+1.310187369856793005e+01,2.864474729124163588e+01,4.439522209233675021e+00,2.370000000000000000e+02,2.270000000000000000e+02,2.020000000000000000e+02
+9.746268774157915260e+00,2.907712402727332091e+01,1.071377497859523586e+01,1.960000000000000000e+02,1.830000000000000000e+02,1.670000000000000000e+02
+4.563664713538319262e+00,2.804192021275136781e+01,7.026139481873611814e+00,8.500000000000000000e+01,7.200000000000000000e+01,6.400000000000000000e+01
+4.169116686086036694e+00,2.803998208443251272e+01,8.439802300504386068e+00,2.180000000000000000e+02,2.010000000000000000e+02,1.760000000000000000e+02
+7.859035866209531207e+00,3.025911419811479064e+01,9.438863358943240911e+00,1.330000000000000000e+02,1.220000000000000000e+02,1.160000000000000000e+02
+1.019388933326314373e+01,2.787246058742326937e+01,4.805943601563917866e+00,1.310000000000000000e+02,1.180000000000000000e+02,1.020000000000000000e+02
+2.409320811108481664e+01,3.534619773844239887e+01,1.124652971625785547e+01,2.430000000000000000e+02,2.400000000000000000e+02,2.260000000000000000e+02
+2.396927123251650471e+01,1.865008404734159697e+01,1.826203279854717820e+01,6.400000000000000000e+01,4.800000000000000000e+01,4.000000000000000000e+01
+5.380763032614324537e+00,2.942965955429463065e+01,1.532234466755431157e+01,8.000000000000000000e+01,7.100000000000000000e+01,6.700000000000000000e+01
+9.304881225663582001e+00,2.939377352224395423e+01,1.647619478734021570e+01,3.000000000000000000e+01,2.400000000000000000e+01,2.400000000000000000e+01
+5.598806813673313343e+00,3.513221188113920590e+01,2.196016161403679590e+01,2.380000000000000000e+02,2.230000000000000000e+02,2.020000000000000000e+02
+1.204337444948596492e+01,2.877499637529400189e+01,1.946087463421541486e+01,2.150000000000000000e+02,2.020000000000000000e+02,1.910000000000000000e+02
+2.609849169808133240e+01,3.041269949470657252e+01,2.871423275055271063e+01,3.500000000000000000e+01,2.400000000000000000e+01,1.900000000000000000e+01
+9.892561515022572749e+00,2.846424829284532976e+01,5.186498878072171692e+00,7.500000000000000000e+01,6.500000000000000000e+01,6.300000000000000000e+01
+2.415981414166107655e+01,3.757243723798359980e+01,1.213817942021169927e+01,8.500000000000000000e+01,6.800000000000000000e+01,5.700000000000000000e+01
+4.300694368197130579e+00,2.787959061264911398e+01,9.197482026880880568e+00,5.700000000000000000e+01,4.700000000000000000e+01,4.200000000000000000e+01
+2.840809533637318651e+01,3.254776295412516163e+01,1.699917435239182240e+01,1.300000000000000000e+02,1.230000000000000000e+02,1.160000000000000000e+02
+2.399282741814565512e+01,3.642643803776613964e+01,1.388061722713082879e+01,1.420000000000000000e+02,1.320000000000000000e+02,1.280000000000000000e+02
+2.395506899327594397e+01,1.767446664802163880e+01,1.995840514309360003e+01,1.740000000000000000e+02,1.630000000000000000e+02,1.580000000000000000e+02
+2.508754764067793275e+01,1.844939277287932811e+01,1.267727880543977648e+01,2.170000000000000000e+02,2.040000000000000000e+02,1.870000000000000000e+02
+2.575371765394395140e+01,1.477368773151695791e+01,1.170323886907990030e+01,8.400000000000000000e+01,7.900000000000000000e+01,8.100000000000000000e+01
+2.597072482265652482e+01,1.882843108920468111e+01,8.560827686695983374e+00,1.960000000000000000e+02,1.820000000000000000e+02,1.650000000000000000e+02
+2.745798143859914120e+01,1.896631836312470654e+01,1.752363199778050884e+01,5.800000000000000000e+01,4.800000000000000000e+01,4.300000000000000000e+01
+4.859075104706187531e+00,2.747285072473401257e+01,5.098902317485347169e+00,3.800000000000000000e+01,3.600000000000000000e+01,3.700000000000000000e+01
+1.916891969310070820e+01,1.510909570372247757e+01,2.123760327163915829e+00,2.380000000000000000e+02,2.290000000000000000e+02,2.030000000000000000e+02
+2.629676054179601152e+01,1.563678150003624090e+01,2.048141751692062940e+01,1.280000000000000000e+02,1.190000000000000000e+02,1.140000000000000000e+02
+4.783577848366610930e+00,3.561937198247066050e+01,2.094069003238760729e+01,2.350000000000000000e+02,2.220000000000000000e+02,2.050000000000000000e+02
+2.414720756981955319e+01,3.576215938119591442e+01,6.421060746713551204e+00,9.700000000000000000e+01,9.300000000000000000e+01,8.400000000000000000e+01
+3.463823436042087867e+00,2.936866593527632219e+01,8.629855945439857123e+00,1.700000000000000000e+02,1.680000000000000000e+02,1.460000000000000000e+02
+2.445391627659182276e+01,1.823916998565349701e+01,1.684518312209168656e+01,6.700000000000000000e+01,5.500000000000000000e+01,5.300000000000000000e+01
+2.451241956133798894e+01,2.045552529671521214e+01,1.952766554041742708e+01,7.000000000000000000e+01,5.600000000000000000e+01,4.500000000000000000e+01
+9.923771798777192288e+00,3.058122528556695485e+01,1.520285885931854253e+01,6.300000000000000000e+01,5.400000000000000000e+01,5.300000000000000000e+01
+3.786363523472668025e+00,3.564431856245059294e+01,2.164424405078466762e+01,1.550000000000000000e+02,1.420000000000000000e+02,1.310000000000000000e+02
+2.424101872665344359e+01,1.743713856760213332e+01,2.004093286495490744e+01,1.290000000000000000e+02,1.160000000000000000e+02,1.070000000000000000e+02
+9.174870588914426861e+00,3.212605937794975830e+01,5.514888009368513089e+00,4.400000000000000000e+01,3.100000000000000000e+01,2.600000000000000000e+01
+2.517811818696819515e+01,1.852919501848151995e+01,9.933677179768219290e+00,1.930000000000000000e+02,1.800000000000000000e+02,1.630000000000000000e+02
+3.507370465257625192e+00,2.781606962906520053e+01,2.487080812772035632e+00,1.630000000000000000e+02,1.510000000000000000e+02,1.290000000000000000e+02
+1.179807413939481187e+01,3.062636861131711186e+01,1.271293159606649503e+01,2.120000000000000000e+02,1.920000000000000000e+02,1.660000000000000000e+02
+2.473735901179045271e+01,3.422191187372717991e+01,1.900033813873546151e+01,8.700000000000000000e+01,7.000000000000000000e+01,6.200000000000000000e+01
+2.953558663968326314e+01,3.364540643772594564e+01,2.565882609589298724e+01,1.600000000000000000e+01,1.600000000000000000e+01,1.500000000000000000e+01
+2.655567109381601298e+01,1.482342497404831505e+01,1.414861030856389235e+01,6.600000000000000000e+01,5.800000000000000000e+01,5.500000000000000000e+01
+1.731249969062056593e+01,1.823416317593681057e+01,2.503363637116049922e+00,1.670000000000000000e+02,1.510000000000000000e+02,1.290000000000000000e+02
+4.428659563593914328e+00,2.806562081580642243e+01,7.518828798588727658e+00,1.830000000000000000e+02,1.720000000000000000e+02,1.450000000000000000e+02
+3.309653400972838000e+01,1.665653858964606826e+01,2.487414169355566429e+01,1.040000000000000000e+02,9.200000000000000000e+01,8.900000000000000000e+01
+1.739652681973114667e+01,2.907138867574066410e+01,6.623501754875869452e+00,7.800000000000000000e+01,6.900000000000000000e+01,6.300000000000000000e+01
+3.303144207856779957e+01,1.630254727227872991e+01,2.257587809946147317e+01,6.900000000000000000e+01,5.900000000000000000e+01,5.800000000000000000e+01
+2.475164461906214797e+01,2.091571885951641008e+01,1.759913501948636139e+01,4.200000000000000000e+01,3.600000000000000000e+01,3.400000000000000000e+01
+3.209009151139787352e+00,2.944699538786884574e+01,7.902426974012796812e+00,3.100000000000000000e+01,3.400000000000000000e+01,2.700000000000000000e+01
+3.677371718453683602e+00,2.842531087828973213e+01,1.063468897955135617e+01,5.500000000000000000e+01,4.300000000000000000e+01,3.100000000000000000e+01
+1.824006436828535271e+01,3.887458516820078103e+01,1.198800290385565859e+01,2.170000000000000000e+02,2.020000000000000000e+02,1.810000000000000000e+02
+2.633196556269347255e+01,3.518395410580789218e+01,7.649673044721827964e+00,5.900000000000000000e+01,5.400000000000000000e+01,4.900000000000000000e+01
+2.411992708311349531e+01,2.215970353413307947e+01,4.630065124479259886e+00,2.360000000000000000e+02,2.210000000000000000e+02,1.890000000000000000e+02
+2.689952078086473364e+01,1.888366823852203424e+01,1.622184234177725770e+01,2.420000000000000000e+02,2.270000000000000000e+02,2.080000000000000000e+02
+1.165158187380489530e+01,2.999327612735595494e+01,1.866490900315676527e+01,5.900000000000000000e+01,5.000000000000000000e+01,4.500000000000000000e+01
+2.704463464870582712e+01,1.800680762978249305e+01,1.996036438584721751e+01,5.400000000000000000e+01,4.500000000000000000e+01,3.800000000000000000e+01
+1.638783162537016125e+01,3.289136401254555864e+01,2.651726323647181971e+01,7.200000000000000000e+01,5.900000000000000000e+01,5.100000000000000000e+01
+3.281381878572936728e+01,3.225558401931722585e+01,2.298683681799370504e+01,2.100000000000000000e+01,1.500000000000000000e+01,1.500000000000000000e+01
+3.712490016694111272e+00,3.024075741409636109e+01,1.383933940719401612e+01,2.300000000000000000e+01,2.500000000000000000e+01,2.600000000000000000e+01
+5.156569066562798120e+00,3.622615311104826219e+01,2.295285100495637920e+01,2.500000000000000000e+02,2.230000000000000000e+02,1.830000000000000000e+02
+2.299778849405221592e+01,3.398637192737896839e+01,5.968556547333263573e+00,1.030000000000000000e+02,9.500000000000000000e+01,8.500000000000000000e+01
+2.710647635328475857e+01,2.425053359315412038e+01,1.717906835165973689e+01,2.800000000000000000e+01,2.300000000000000000e+01,2.100000000000000000e+01
+2.685012589662897398e+01,3.461325103346212018e+01,1.675200279574577067e+01,4.900000000000000000e+01,4.000000000000000000e+01,3.900000000000000000e+01
+3.011574233236656184e+00,2.873267010303635161e+01,1.184313828656145873e+01,4.100000000000000000e+01,3.600000000000000000e+01,3.300000000000000000e+01
+1.973202877308316516e+01,3.837971176651498695e+01,8.338712209719165713e+00,2.700000000000000000e+01,2.300000000000000000e+01,2.400000000000000000e+01
+2.631572036686560168e+01,1.567296126948687629e+01,1.436147237370575702e+01,3.100000000000000000e+01,2.600000000000000000e+01,3.000000000000000000e+01
+2.511238814359354521e+01,1.469487347026394630e+01,5.443382043182984908e+00,6.000000000000000000e+01,5.500000000000000000e+01,5.600000000000000000e+01
+2.552123596742393019e+01,1.494730844148439175e+01,1.222684823276910571e+01,1.970000000000000000e+02,1.820000000000000000e+02,1.600000000000000000e+02
+3.049339908214590888e+00,3.099083259713601990e+01,1.472286789056389722e+01,1.600000000000000000e+02,1.590000000000000000e+02,1.390000000000000000e+02
+9.438606120140331512e+00,2.879159749031729021e+01,5.225570067355170600e+00,1.630000000000000000e+02,1.550000000000000000e+02,1.370000000000000000e+02
+3.302296091424778979e+00,3.020760024400779997e+01,1.323918820383165240e+01,2.340000000000000000e+02,2.540000000000000000e+02,2.340000000000000000e+02
+1.943386336572741513e+01,3.713503017327711575e+01,8.362564349402349606e+00,2.200000000000000000e+01,2.000000000000000000e+01,1.800000000000000000e+01
+2.646370448168244138e+01,1.428439088109020183e+01,8.560057197035268572e+00,9.000000000000000000e+01,7.600000000000000000e+01,6.600000000000000000e+01
+1.949594784411791082e+01,3.825062978314550577e+01,7.347308763391334985e+00,7.000000000000000000e+01,6.100000000000000000e+01,5.400000000000000000e+01
+6.471488387110002627e+00,2.791505253353558302e+01,9.035828710443182032e+00,8.500000000000000000e+01,7.500000000000000000e+01,6.500000000000000000e+01
+2.506545755340952653e+01,2.200142363017993219e+01,1.892348202115690370e+01,1.230000000000000000e+02,1.070000000000000000e+02,8.400000000000000000e+01
+9.670697659186004103e+00,2.896539665047357914e+01,1.361276896367275846e+01,2.260000000000000000e+02,2.110000000000000000e+02,1.900000000000000000e+02
+3.903941730102167718e+00,2.730016263271742005e+01,2.675984206789045583e+00,2.030000000000000000e+02,1.910000000000000000e+02,1.670000000000000000e+02
+4.796281024429128514e+00,3.589975391218383294e+01,2.206235423872851698e+01,2.340000000000000000e+02,2.220000000000000000e+02,2.060000000000000000e+02
+2.485560208648891845e+01,1.715462990562306089e+01,1.996920302452015505e+01,1.730000000000000000e+02,1.600000000000000000e+02,1.500000000000000000e+02
+1.749012258447234558e+01,3.809722640192492094e+01,1.065320798410532888e+01,2.490000000000000000e+02,2.360000000000000000e+02,2.160000000000000000e+02
+2.558361754501100904e+01,1.618215878973982669e+01,4.476989417361677326e+00,7.500000000000000000e+01,6.900000000000000000e+01,5.700000000000000000e+01
+2.463741909390753548e+01,1.898934712659804092e+01,1.827058913482087021e+01,2.540000000000000000e+02,2.450000000000000000e+02,2.270000000000000000e+02
+2.756402373108700132e+01,1.898589645219067634e+01,1.409619326774244819e+01,5.400000000000000000e+01,4.600000000000000000e+01,3.900000000000000000e+01
+2.614858334140834373e+01,3.357198843961079149e+01,1.238633473117872974e+01,2.530000000000000000e+02,2.420000000000000000e+02,2.330000000000000000e+02
+2.543627693081764818e+01,1.486183720640071471e+01,9.150009734389341176e+00,2.310000000000000000e+02,2.190000000000000000e+02,1.950000000000000000e+02
+5.548168339109921021e+00,3.390527846656324584e+01,2.000379635544775780e+01,9.000000000000000000e+01,8.100000000000000000e+01,7.300000000000000000e+01
+7.727565545374406319e+00,3.130864989001361920e+01,1.699548218985803771e+01,5.700000000000000000e+01,5.300000000000000000e+01,5.000000000000000000e+01
+2.968523513523361856e+00,2.993478495860163235e+01,8.836388369559356804e+00,2.070000000000000000e+02,2.010000000000000000e+02,1.780000000000000000e+02
+2.632422386468723374e+01,1.391399337408043024e+01,9.514195986617741241e+00,1.080000000000000000e+02,9.800000000000000000e+01,8.800000000000000000e+01
+8.976650570686937058e+00,3.200839015160954659e+01,1.575272017185359452e+01,2.510000000000000000e+02,2.380000000000000000e+02,2.210000000000000000e+02
+2.542188071365136892e+01,1.461730142325830428e+01,1.091886317123236694e+01,2.100000000000000000e+01,1.500000000000000000e+01,1.100000000000000000e+01
+2.471216820572078987e+01,2.292807556001100266e+01,4.581903933336612056e+00,2.400000000000000000e+02,2.250000000000000000e+02,1.950000000000000000e+02
+4.550153931465620971e+00,2.793756944381501484e+01,1.009870318643904064e+01,7.700000000000000000e+01,6.300000000000000000e+01,5.100000000000000000e+01
+4.264140114069856935e+00,2.770405697505925247e+01,9.951314804834662908e+00,5.100000000000000000e+01,4.100000000000000000e+01,3.900000000000000000e+01
+2.562570625351299825e+01,2.070323115023709448e+01,9.156035009082438947e+00,7.800000000000000000e+01,6.900000000000000000e+01,6.500000000000000000e+01
+2.649040438770590455e+01,1.719531152985091182e+01,1.024663601068756513e+01,1.030000000000000000e+02,9.100000000000000000e+01,7.500000000000000000e+01
+2.469871803350169515e+01,1.751493527622045576e+01,1.969902132110096105e+01,9.400000000000000000e+01,7.700000000000000000e+01,6.100000000000000000e+01
+3.095601338071497466e+01,3.247831310926756743e+01,1.053345355673048367e+01,1.020000000000000000e+02,9.600000000000000000e+01,9.200000000000000000e+01
+2.592017859703563332e+01,3.504867320596091673e+01,1.584667625857777828e+01,5.100000000000000000e+01,4.500000000000000000e+01,4.500000000000000000e+01
+6.297866384779728044e+00,2.762720710952564573e+01,1.099742565265215077e+01,1.750000000000000000e+02,1.730000000000000000e+02,1.730000000000000000e+02
+1.257832267683181016e+01,3.020225507329676518e+01,2.387361700014437105e+01,2.170000000000000000e+02,2.010000000000000000e+02,1.850000000000000000e+02
+2.527837100116545344e+01,2.256230584495390445e+01,2.352165325118984285e+01,1.120000000000000000e+02,1.010000000000000000e+02,9.400000000000000000e+01
+4.055550290532583979e+00,2.794772993729583632e+01,1.099935861177118746e+01,2.400000000000000000e+02,2.160000000000000000e+02,1.780000000000000000e+02
+2.547781291146415938e+01,1.843568189040141903e+01,1.829960381036499939e+01,2.530000000000000000e+02,2.420000000000000000e+02,2.210000000000000000e+02
+3.236387076685738151e+01,3.197037466542608897e+01,1.054092883378614864e+01,9.600000000000000000e+01,8.700000000000000000e+01,8.200000000000000000e+01
+1.037493623932060594e+01,2.880957165925649122e+01,1.506866405076266169e+01,1.140000000000000000e+02,1.010000000000000000e+02,9.500000000000000000e+01
+2.251173354987824027e+01,1.792099284884357857e+01,2.982009608416884117e+00,2.240000000000000000e+02,2.130000000000000000e+02,1.850000000000000000e+02
+9.310140770596985860e+00,3.226256181045097549e+01,1.201469017436755671e+01,5.900000000000000000e+01,4.500000000000000000e+01,3.700000000000000000e+01
+1.116757561345245087e+01,2.925808626899098286e+01,6.448919808233837259e+00,2.290000000000000000e+02,2.130000000000000000e+02,1.900000000000000000e+02
+2.474319109156390439e+01,1.829125883515758844e+01,5.305771077074433073e+00,2.380000000000000000e+02,2.270000000000000000e+02,2.070000000000000000e+02
+2.564945487289807602e+01,3.235239609669113747e+01,1.019134952264846739e+01,2.420000000000000000e+02,2.300000000000000000e+02,2.110000000000000000e+02
+1.789091205429699727e+01,1.769591980793957475e+01,2.540087637437128176e+00,1.750000000000000000e+02,1.590000000000000000e+02,1.350000000000000000e+02
+2.530221666618404441e+01,1.457145274315536732e+01,5.806555180107244141e+00,1.910000000000000000e+02,1.750000000000000000e+02,1.540000000000000000e+02
+1.152042851587968819e+01,3.017178235856154345e+01,5.999002820529979019e+00,1.900000000000000000e+02,1.760000000000000000e+02,1.590000000000000000e+02
+1.130686440348503830e+01,2.991067814165759131e+01,5.563944970193721140e+00,4.600000000000000000e+01,3.200000000000000000e+01,2.900000000000000000e+01
+5.110198316544841468e+00,3.506624470277341032e+01,2.154918801684560137e+01,2.390000000000000000e+02,2.270000000000000000e+02,2.120000000000000000e+02
+2.521316864061416751e+01,3.656095018938672325e+01,2.453214097026289053e+01,4.300000000000000000e+01,3.100000000000000000e+01,3.500000000000000000e+01
+2.226545776067055726e+01,3.691571199566877937e+01,1.928774960325266363e+01,6.500000000000000000e+01,5.300000000000000000e+01,4.000000000000000000e+01
+2.476524708735532343e+01,1.849866667198389436e+01,9.143895910434562069e+00,1.250000000000000000e+02,1.110000000000000000e+02,1.010000000000000000e+02
+2.478802100345815163e+01,3.628929667389429881e+01,1.132939391139589524e+01,2.530000000000000000e+02,2.470000000000000000e+02,2.340000000000000000e+02
+1.043719804939040685e+01,2.899112890651370833e+01,1.271454698957220053e+01,1.170000000000000000e+02,1.040000000000000000e+02,9.300000000000000000e+01
+2.783544355217750521e+01,1.875086210220324645e+01,1.862566181748777083e+01,9.000000000000000000e+01,7.700000000000000000e+01,6.800000000000000000e+01
+8.263310273326009536e+00,3.137514845408357544e+01,2.213443492614223373e+01,2.010000000000000000e+02,1.900000000000000000e+02,1.790000000000000000e+02
+4.688899688336004346e+00,2.820894225936969235e+01,9.496941066818049393e+00,6.100000000000000000e+01,5.100000000000000000e+01,4.200000000000000000e+01
+9.432082532256488960e+00,2.922565928241622402e+01,7.740826145308043138e+00,1.630000000000000000e+02,1.540000000000000000e+02,1.440000000000000000e+02
+9.529116534163877716e+00,3.153167565605860645e+01,1.526502122594569855e+01,2.180000000000000000e+02,1.990000000000000000e+02,1.730000000000000000e+02
+2.029941392502028208e+01,3.752706495706751610e+01,1.941278625916323719e+01,1.240000000000000000e+02,1.110000000000000000e+02,1.040000000000000000e+02
+2.621446174907111626e+01,3.348594833398738757e+01,1.284812260797238181e+01,1.400000000000000000e+02,1.260000000000000000e+02,1.170000000000000000e+02
+2.036183929645071444e+01,3.768216221657296217e+01,1.274216897288844130e+01,1.860000000000000000e+02,1.940000000000000000e+02,1.960000000000000000e+02
+2.960482013632714882e+01,3.317631657847912408e+01,1.710750586940444151e+01,5.500000000000000000e+01,4.200000000000000000e+01,3.600000000000000000e+01
+2.802540448208860369e+01,2.580291381250147609e+01,1.718322956396203338e+01,9.800000000000000000e+01,7.900000000000000000e+01,6.400000000000000000e+01
+1.811835776259771080e+01,1.766387540258913802e+01,2.413530687939045904e+00,2.180000000000000000e+02,2.060000000000000000e+02,1.800000000000000000e+02
+8.780562692620641485e+00,3.204905274129004766e+01,2.296621529481856783e+01,8.000000000000000000e+01,6.900000000000000000e+01,6.700000000000000000e+01
+9.037449244343713772e+00,3.151247173254740375e+01,1.417564882394209924e+01,2.250000000000000000e+02,2.040000000000000000e+02,1.750000000000000000e+02
+8.068113191587460875e+00,3.059670747322087436e+01,1.182219309028842424e+01,9.000000000000000000e+01,8.400000000000000000e+01,8.400000000000000000e+01
+2.748385224879027433e+01,1.914202617817458574e+01,1.095002333973601871e+01,2.500000000000000000e+01,1.700000000000000000e+01,1.500000000000000000e+01
+2.537551316668962897e+01,3.672762031704934316e+01,1.638221005254604989e+01,1.080000000000000000e+02,1.020000000000000000e+02,1.060000000000000000e+02
+2.308709024423606948e+01,3.828717327811226312e+01,2.154630950470163597e+01,5.400000000000000000e+01,4.500000000000000000e+01,4.200000000000000000e+01
+2.521316864061416751e+01,3.656095018938672325e+01,2.453214097026289053e+01,4.300000000000000000e+01,3.100000000000000000e+01,3.500000000000000000e+01
+9.326830402792197106e+00,2.884164270806934383e+01,1.683727592197744727e+01,4.600000000000000000e+01,3.500000000000000000e+01,3.000000000000000000e+01
+2.536275424323487826e+01,3.648530047228821616e+01,2.183724384371686966e+01,5.500000000000000000e+01,5.100000000000000000e+01,5.500000000000000000e+01
+1.996537028352663157e+01,2.524210015173977695e+01,4.810808846320532517e+00,2.540000000000000000e+02,2.460000000000000000e+02,2.290000000000000000e+02
+2.937959174775498994e+01,3.360235838701182587e+01,2.258983252216150106e+01,1.010000000000000000e+02,8.800000000000000000e+01,7.200000000000000000e+01
+3.201114553265979268e+00,2.949538130577165518e+01,7.747206336038463093e+00,3.300000000000000000e+01,3.700000000000000000e+01,3.300000000000000000e+01
+3.390302449308145061e+00,3.081296036275845296e+01,1.680932170376548385e+01,1.720000000000000000e+02,1.990000000000000000e+02,1.770000000000000000e+02
+2.663312351022443636e+01,1.707876969591487182e+01,6.516456562364718152e+00,8.700000000000000000e+01,7.400000000000000000e+01,6.700000000000000000e+01
+2.553667335852036757e+01,2.126919009691335560e+01,1.607586744134397350e+01,1.290000000000000000e+02,1.190000000000000000e+02,1.110000000000000000e+02
+3.571423697601822767e+00,2.996582005524332359e+01,1.439031091795069628e+01,4.300000000000000000e+01,4.700000000000000000e+01,4.800000000000000000e+01
+2.579191320529915643e+01,1.743303641655471026e+01,4.593554069584646626e+00,9.500000000000000000e+01,8.400000000000000000e+01,6.400000000000000000e+01
+3.086733892064178519e+01,2.860951347027784308e+01,1.223268536703950282e+01,6.700000000000000000e+01,5.900000000000000000e+01,5.600000000000000000e+01
+2.674105917132833099e+01,3.329302738741115064e+01,1.258288201594492861e+01,1.930000000000000000e+02,1.730000000000000000e+02,1.640000000000000000e+02
+2.558716944676497818e+01,3.605488318222953836e+01,1.418894325168946757e+01,2.510000000000000000e+02,2.460000000000000000e+02,2.390000000000000000e+02
+3.072066052177990159e+01,3.193603372858311928e+01,2.208845457057017470e+01,1.500000000000000000e+01,1.500000000000000000e+01,1.500000000000000000e+01
+2.196239247747135792e+01,3.441072215287328362e+01,1.800768404361522812e+01,1.120000000000000000e+02,1.020000000000000000e+02,9.200000000000000000e+01
+2.767711828129482399e+01,3.402837041892891534e+01,1.711556439979428390e+01,5.200000000000000000e+01,3.800000000000000000e+01,3.200000000000000000e+01
+2.478849260563544732e+01,1.485384296773493951e+01,5.430704755900062963e+00,1.820000000000000000e+02,1.640000000000000000e+02,1.390000000000000000e+02
+9.781508220132900888e+00,2.854104088429851060e+01,1.544584336803553981e+01,2.470000000000000000e+02,2.320000000000000000e+02,2.120000000000000000e+02
+2.581191211937520080e+01,1.446739868975620169e+01,1.160797014776700031e+01,2.800000000000000000e+01,2.400000000000000000e+01,2.500000000000000000e+01
+6.572663976136756681e+00,2.804038059003834604e+01,1.024585593092204050e+01,1.150000000000000000e+02,1.000000000000000000e+02,7.700000000000000000e+01
+1.171092456051087716e+01,3.047274297719317460e+01,8.549521473923176629e+00,1.840000000000000000e+02,1.680000000000000000e+02,1.450000000000000000e+02
+4.408056753611253598e+00,2.801636923065047924e+01,7.202283337280860565e+00,2.110000000000000000e+02,1.970000000000000000e+02,1.710000000000000000e+02
+3.152414516997732719e+01,3.176657000561390731e+01,1.538489668265475530e+01,5.100000000000000000e+01,4.000000000000000000e+01,3.500000000000000000e+01
+2.431970450360469371e+01,1.824231688680530539e+01,4.808186330699632194e+00,2.460000000000000000e+02,2.410000000000000000e+02,2.270000000000000000e+02
+2.882066004094352252e+01,3.314759751584102787e+01,1.295495813050751366e+01,9.000000000000000000e+01,8.300000000000000000e+01,7.700000000000000000e+01
+9.743361564473262959e+00,2.892482621553848432e+01,1.449855994211569765e+01,2.440000000000000000e+02,2.260000000000000000e+02,2.060000000000000000e+02
+9.594178940170355219e+00,2.958699773238823738e+01,1.097081808968651018e+01,7.700000000000000000e+01,6.600000000000000000e+01,6.100000000000000000e+01
+2.480047327997458595e+01,1.952637110222622141e+01,1.676475065347657889e+01,3.200000000000000000e+01,2.500000000000000000e+01,2.400000000000000000e+01
+2.758399732827588480e+01,1.941640043934560111e+01,1.046098218947678937e+01,6.300000000000000000e+01,4.900000000000000000e+01,3.600000000000000000e+01
+8.462797624468349156e+00,3.110246349321108994e+01,1.219692566206214757e+01,1.700000000000000000e+01,1.400000000000000000e+01,1.500000000000000000e+01
+1.019388933326315616e+01,2.787246058742330490e+01,4.805943601563918754e+00,1.310000000000000000e+02,1.180000000000000000e+02,1.020000000000000000e+02
+4.129271463391631869e+00,2.727800081577125013e+01,3.079158044749958023e+00,1.770000000000000000e+02,1.660000000000000000e+02,1.440000000000000000e+02
+2.577652715614761902e+01,3.379664428972193946e+01,5.851056147995949530e+00,1.120000000000000000e+02,1.090000000000000000e+02,1.000000000000000000e+02
+2.139626035355543010e+01,3.665317109228578119e+01,1.594078604915651098e+01,6.500000000000000000e+01,5.500000000000000000e+01,5.300000000000000000e+01
+2.655567109381601298e+01,1.482342497404831505e+01,1.414861030856389235e+01,6.600000000000000000e+01,5.800000000000000000e+01,5.500000000000000000e+01
+2.501176766547834518e+01,2.076087371086684996e+01,5.062989216062301345e+00,1.440000000000000000e+02,1.310000000000000000e+02,1.130000000000000000e+02
+5.270952454868152337e+00,2.699546758298358995e+01,4.671863781887611644e+00,1.080000000000000000e+02,9.900000000000000000e+01,9.200000000000000000e+01
+5.412366375624119819e+00,2.785225844757705715e+01,3.903723456182101259e+00,2.210000000000000000e+02,2.090000000000000000e+02,1.830000000000000000e+02
+9.897395114754843348e+00,3.196101506011369864e+01,9.879186812693951936e+00,2.500000000000000000e+02,2.360000000000000000e+02,2.100000000000000000e+02
+3.670362617341063505e+00,2.975532842968135938e+01,1.317394531900963273e+01,2.190000000000000000e+02,2.540000000000000000e+02,2.380000000000000000e+02
+2.573393571376265854e+01,3.210704183544540768e+01,6.084364432174856674e+00,2.240000000000000000e+02,2.120000000000000000e+02,2.010000000000000000e+02
+7.134294654622137521e+00,2.860157199273518458e+01,5.159086228446752465e+00,4.200000000000000000e+01,3.800000000000000000e+01,3.800000000000000000e+01
+9.166711278196792989e+00,2.856022461741987328e+01,1.903070404175086239e+01,1.070000000000000000e+02,9.700000000000000000e+01,8.600000000000000000e+01
+1.115171184628098899e+01,2.997170476154837004e+01,2.302141327333244547e+01,3.600000000000000000e+01,3.100000000000000000e+01,2.800000000000000000e+01
+2.543322893962880826e+01,3.432015165675684898e+01,1.277017326349317017e+01,2.540000000000000000e+02,2.550000000000000000e+02,2.490000000000000000e+02
+2.459183454466677077e+01,1.895606312623907996e+01,1.894120363634932502e+01,2.540000000000000000e+02,2.520000000000000000e+02,2.390000000000000000e+02
+2.518384007527122392e+01,1.531377332361192956e+01,8.731006482247792633e+00,6.100000000000000000e+01,5.100000000000000000e+01,4.900000000000000000e+01
+7.984818152738942132e+00,3.142182379324501795e+01,1.354341699926756171e+01,1.330000000000000000e+02,1.230000000000000000e+02,1.140000000000000000e+02
+3.561332469736088413e+00,2.781150376555784121e+01,4.058164493090163027e+00,2.350000000000000000e+02,2.350000000000000000e+02,2.300000000000000000e+02
+2.414418402708763267e+01,3.620974725251121384e+01,2.228703144723681717e+01,7.800000000000000000e+01,8.500000000000000000e+01,9.500000000000000000e+01
+2.767553184204405881e+01,1.850945220190750717e+01,8.035549543885284862e+00,4.400000000000000000e+01,3.700000000000000000e+01,3.100000000000000000e+01
+4.861467359076198314e+00,2.841557822331987992e+01,9.117330976919427954e+00,1.690000000000000000e+02,1.570000000000000000e+02,1.400000000000000000e+02
+2.670210000958861585e+01,1.410041386929229112e+01,1.269731825203510489e+01,1.700000000000000000e+01,1.300000000000000000e+01,1.400000000000000000e+01
+4.225995274834461135e+00,2.787412031726174177e+01,1.035995803158554729e+01,1.500000000000000000e+02,1.380000000000000000e+02,1.170000000000000000e+02
+2.674771234821822929e+01,3.334184730488463089e+01,1.900095496313589294e+01,1.180000000000000000e+02,1.080000000000000000e+02,9.800000000000000000e+01
+1.512582883951111157e+01,3.164825299826177130e+01,2.528222622716196000e+01,9.000000000000000000e+01,7.500000000000000000e+01,6.700000000000000000e+01
+5.049996536661677915e+00,2.925208392003465718e+01,1.181659480662225548e+01,2.220000000000000000e+02,2.150000000000000000e+02,1.980000000000000000e+02
+2.466479109524493296e+01,2.101472228858205327e+01,1.834026797665415032e+01,1.160000000000000000e+02,1.040000000000000000e+02,9.200000000000000000e+01
+2.557139096670935530e+01,2.142418684109337335e+01,9.234012775152933727e+00,1.280000000000000000e+02,1.150000000000000000e+02,1.060000000000000000e+02
+8.206247556197705961e+00,3.124360972500009126e+01,1.992000718709804730e+01,1.880000000000000000e+02,1.760000000000000000e+02,1.610000000000000000e+02
+5.634034197962730417e+00,2.817080237724151459e+01,1.160698101497724544e+01,1.920000000000000000e+02,1.820000000000000000e+02,1.640000000000000000e+02
+2.003283315290220656e+01,3.921725267910280621e+01,6.862628256533849225e+00,8.100000000000000000e+01,7.200000000000000000e+01,6.000000000000000000e+01
+3.943729495987297717e+00,2.834365259881492349e+01,6.859613271691378245e+00,1.950000000000000000e+02,1.790000000000000000e+02,1.530000000000000000e+02
+6.115891285256377152e+00,2.821961685591082869e+01,1.169092203265445384e+01,1.220000000000000000e+02,1.130000000000000000e+02,1.010000000000000000e+02
+2.440979098197043129e+01,1.888548737788875087e+01,1.756911525633042359e+01,1.510000000000000000e+02,1.370000000000000000e+02,1.270000000000000000e+02
+2.597635432451684601e+00,3.120087433708463820e+01,1.708402293572041231e+01,3.100000000000000000e+01,4.100000000000000000e+01,3.400000000000000000e+01
+2.453068782053427910e+01,1.816222722987950888e+01,1.876356468047704595e+01,2.550000000000000000e+02,2.520000000000000000e+02,2.370000000000000000e+02
+2.144735521117093313e+01,3.833485464976330803e+01,2.196586833156105101e+01,7.600000000000000000e+01,6.300000000000000000e+01,4.700000000000000000e+01
+2.619968813873539304e+01,1.429892704469551923e+01,6.909826716450170103e+00,2.290000000000000000e+02,2.130000000000000000e+02,1.860000000000000000e+02
+3.240560894820995408e+00,2.963513001900741273e+01,9.326203767855350435e+00,5.500000000000000000e+01,6.200000000000000000e+01,5.400000000000000000e+01
+3.590587047497756590e+00,2.974468066357331608e+01,1.259270368339032586e+01,1.050000000000000000e+02,1.030000000000000000e+02,9.900000000000000000e+01
+2.486195537538490896e+01,1.806593052891291862e+01,3.728598845422446129e+00,2.500000000000000000e+02,2.430000000000000000e+02,2.170000000000000000e+02
+3.293652061952789367e+00,2.665463431425983742e+01,2.398850905065580630e+00,2.120000000000000000e+02,2.040000000000000000e+02,1.830000000000000000e+02
+9.342214785181935710e+00,2.933968509077587328e+01,7.836701803737492256e+00,1.190000000000000000e+02,1.060000000000000000e+02,9.500000000000000000e+01
+2.740146104545741323e+01,1.911680668686402385e+01,1.384990358554986756e+01,2.090000000000000000e+02,1.890000000000000000e+02,1.640000000000000000e+02
+1.886632902634021391e+01,3.768892110621125369e+01,1.875933911041633451e+01,5.200000000000000000e+01,3.800000000000000000e+01,2.900000000000000000e+01
+2.812229214398726640e+01,2.624227389639714048e+01,2.510734872000804785e+01,4.600000000000000000e+01,2.800000000000000000e+01,2.100000000000000000e+01
+1.927079455088117754e+01,3.845959681650213469e+01,1.168846875800168306e+01,2.520000000000000000e+02,2.450000000000000000e+02,2.290000000000000000e+02
+7.740243442555271081e+00,2.999447595205786854e+01,6.122319352302496576e+00,1.550000000000000000e+02,1.450000000000000000e+02,1.350000000000000000e+02
+3.712490016694111272e+00,3.024075741409636109e+01,1.383933940719401612e+01,2.300000000000000000e+01,2.500000000000000000e+01,2.600000000000000000e+01
+2.988350004994935638e+00,3.020377016566720840e+01,1.293141172776551429e+01,7.600000000000000000e+01,7.700000000000000000e+01,7.200000000000000000e+01
+3.256565945083135016e+00,2.814046270457112087e+01,5.257104877811439536e+00,5.800000000000000000e+01,5.300000000000000000e+01,5.300000000000000000e+01
+2.564050827599812621e+01,1.675015465513608248e+01,4.898365084861591612e+00,1.330000000000000000e+02,1.270000000000000000e+02,1.150000000000000000e+02
+2.432081768462718330e+01,2.098010880650064536e+01,4.179971983375656563e+00,2.400000000000000000e+02,2.270000000000000000e+02,1.930000000000000000e+02
+1.030068303963660803e+01,2.804652976976433720e+01,1.738200394923788394e+01,2.700000000000000000e+01,2.200000000000000000e+01,2.400000000000000000e+01
+9.506369310829596131e+00,2.853793816586162535e+01,1.798256085962708184e+01,1.540000000000000000e+02,1.370000000000000000e+02,1.220000000000000000e+02
+3.014027420452496742e+01,3.262720687423468746e+01,1.601806744003530980e+01,7.900000000000000000e+01,7.000000000000000000e+01,6.700000000000000000e+01
+2.481897586947624390e+01,1.924185223914475529e+01,6.008427350912727505e+00,5.000000000000000000e+01,4.600000000000000000e+01,4.600000000000000000e+01
+3.759894266636827798e+00,2.795304066099707185e+01,9.815600599923975267e+00,1.480000000000000000e+02,1.380000000000000000e+02,1.260000000000000000e+02
+4.110243645809468660e+00,2.821620584336683635e+01,6.937263059550568656e+00,1.810000000000000000e+02,1.650000000000000000e+02,1.420000000000000000e+02
+9.712107060364616018e+00,3.130332877528868352e+01,1.581878170086072011e+01,1.030000000000000000e+02,9.700000000000000000e+01,9.400000000000000000e+01
+1.950672379724200667e+01,3.859074753931703583e+01,1.125691837167970988e+01,1.460000000000000000e+02,1.320000000000000000e+02,1.160000000000000000e+02
+7.008561478907577857e+00,2.815808490871663494e+01,8.087805030879955837e+00,9.500000000000000000e+01,8.400000000000000000e+01,8.000000000000000000e+01
+2.524637626912964805e+01,2.104357831487351049e+01,5.416896967753713987e+00,6.400000000000000000e+01,5.600000000000000000e+01,5.400000000000000000e+01
+2.812750111751406834e+01,2.659018695453746872e+01,2.439439334476527677e+01,9.300000000000000000e+01,7.900000000000000000e+01,6.900000000000000000e+01
+4.529592068304564734e+00,3.004038055401318275e+01,1.187599341702645717e+01,8.000000000000000000e+01,7.200000000000000000e+01,6.900000000000000000e+01
+2.582948425194251740e+01,3.579072733837812592e+01,2.217185189009447654e+01,1.070000000000000000e+02,8.900000000000000000e+01,6.500000000000000000e+01
+2.176038083735284090e+01,3.701723579000047692e+01,1.353879528717660463e+01,1.290000000000000000e+02,1.180000000000000000e+02,1.150000000000000000e+02
+2.276985531573333432e+01,3.923553246583271914e+01,1.210347180628147967e+01,2.480000000000000000e+02,2.380000000000000000e+02,2.200000000000000000e+02
+5.823031674911802291e+00,2.827415897909780540e+01,7.225930843450409036e+00,2.060000000000000000e+02,1.870000000000000000e+02,1.580000000000000000e+02
+9.749927904686089164e+00,2.905717621273879203e+01,9.169853575616551566e+00,2.070000000000000000e+02,1.900000000000000000e+02,1.700000000000000000e+02
+1.232166934894725330e+01,2.824200147640023673e+01,1.969228760556879010e+01,1.290000000000000000e+02,1.200000000000000000e+02,1.100000000000000000e+02
+9.882104189898104352e+00,3.131497813011766596e+01,1.025669095649132068e+01,1.800000000000000000e+02,1.640000000000000000e+02,1.480000000000000000e+02
+1.480871784566360994e+01,3.350330435446476685e+01,6.380431186935713761e+00,2.490000000000000000e+02,2.390000000000000000e+02,2.180000000000000000e+02
+2.539753109648565754e+01,1.527755124535669751e+01,9.264822395189106885e+00,3.700000000000000000e+01,3.200000000000000000e+01,2.900000000000000000e+01
+1.185809607431560231e+01,3.005024123013471993e+01,2.242219325551692677e+01,3.700000000000000000e+01,3.300000000000000000e+01,3.300000000000000000e+01
+2.487209500476190982e+01,1.869581054471944626e+01,1.287428685827751984e+01,1.090000000000000000e+02,9.400000000000000000e+01,8.700000000000000000e+01
+1.597533057963988057e+01,1.770274183536549728e+01,1.922295107114159851e+00,1.740000000000000000e+02,1.580000000000000000e+02,1.330000000000000000e+02
+2.381956389958520859e+01,3.509275541236378615e+01,1.883218221515405588e+01,1.170000000000000000e+02,1.070000000000000000e+02,1.030000000000000000e+02
+8.021504778087193088e+00,3.138457779418731164e+01,1.583485560013937210e+01,1.630000000000000000e+02,1.480000000000000000e+02,1.320000000000000000e+02
+3.893928068879700000e+00,2.805993561323134955e+01,1.072276713804372505e+01,2.290000000000000000e+02,2.060000000000000000e+02,1.750000000000000000e+02
+7.262647667975969945e+00,3.052772975034103098e+01,1.354711510455282131e+01,1.400000000000000000e+01,1.100000000000000000e+01,1.400000000000000000e+01
+7.334673751600671032e+00,2.939817707223662779e+01,1.167734312919082917e+01,7.500000000000000000e+01,7.200000000000000000e+01,7.000000000000000000e+01
+5.674305117596507131e+00,2.831290067393774379e+01,1.119671725869922163e+01,4.500000000000000000e+01,3.900000000000000000e+01,3.900000000000000000e+01
+3.831513044878121832e+00,2.848249097406730357e+01,8.607495607152030104e+00,2.510000000000000000e+02,2.430000000000000000e+02,2.170000000000000000e+02
+2.544037476234990436e+01,2.205850933024531102e+01,1.763576192188430625e+01,3.400000000000000000e+01,3.100000000000000000e+01,3.100000000000000000e+01
+3.947246758763469199e+00,2.834759086840068321e+01,9.173848402686479275e+00,1.000000000000000000e+02,8.600000000000000000e+01,6.900000000000000000e+01
+4.771847664277197865e+00,2.853912995186571067e+01,6.179159937667733082e+00,1.510000000000000000e+02,1.370000000000000000e+02,1.180000000000000000e+02
+9.400110070316127775e+00,3.212141750385509908e+01,1.042722661057487521e+01,5.600000000000000000e+01,4.000000000000000000e+01,2.800000000000000000e+01
+2.501479662457159847e+01,3.459569073185439692e+01,1.603709849481993288e+01,8.000000000000000000e+01,6.900000000000000000e+01,6.600000000000000000e+01
+3.085072227039022863e+01,3.274016243342812515e+01,2.454926501519003068e+01,3.000000000000000000e+01,3.200000000000000000e+01,2.300000000000000000e+01
+3.656829440956075317e+00,2.834157495381753833e+01,5.776552916422052597e+00,5.100000000000000000e+01,4.200000000000000000e+01,3.400000000000000000e+01
+8.342274221377920185e+00,3.173490143633081928e+01,1.283674291244136612e+01,3.600000000000000000e+01,3.500000000000000000e+01,3.700000000000000000e+01
+1.897982913488555567e+01,3.989475259902567927e+01,1.297248280018215461e+01,1.170000000000000000e+02,1.090000000000000000e+02,1.010000000000000000e+02
+2.574393756744098738e+01,1.314542237136049785e+01,1.114413234865545022e+01,1.780000000000000000e+02,1.590000000000000000e+02,1.350000000000000000e+02
+2.567557919885973661e+01,1.473692131757646351e+01,9.335659917309550693e+00,2.370000000000000000e+02,2.220000000000000000e+02,1.960000000000000000e+02
+2.568075802059900425e+01,1.491125667982922209e+01,1.194679363143491457e+01,1.250000000000000000e+02,1.150000000000000000e+02,1.030000000000000000e+02
+4.175646769185950902e+00,3.548135040242540583e+01,2.367143005534684974e+01,9.600000000000000000e+01,8.300000000000000000e+01,7.600000000000000000e+01
+3.664136042945580485e+00,2.834390930052125768e+01,1.101528929008802571e+01,4.600000000000000000e+01,3.500000000000000000e+01,3.100000000000000000e+01
+6.184760186832146012e+00,2.804712857981802898e+01,6.123555364598775697e+00,1.890000000000000000e+02,1.740000000000000000e+02,1.540000000000000000e+02
+2.201791094673400195e+01,1.902155057946860239e+01,3.000116654222578116e+00,2.480000000000000000e+02,2.360000000000000000e+02,2.010000000000000000e+02
+2.347964150166936292e+01,3.520222923684843863e+01,1.284874215884135218e+01,1.430000000000000000e+02,1.290000000000000000e+02,1.200000000000000000e+02
+2.601919174246719635e+01,1.462268671478420679e+01,6.477063094700104884e+00,1.750000000000000000e+02,1.600000000000000000e+02,1.420000000000000000e+02
+6.401640414656747602e+00,2.812573125054375112e+01,6.695131560838990303e+00,8.900000000000000000e+01,7.500000000000000000e+01,6.700000000000000000e+01
+8.167235250931142332e+00,3.073170417215924033e+01,1.295485100815853485e+01,2.900000000000000000e+01,2.400000000000000000e+01,2.400000000000000000e+01
+3.296485825529565972e+01,1.668087413795478824e+01,2.450193176916396709e+01,1.540000000000000000e+02,1.380000000000000000e+02,1.220000000000000000e+02
+2.546276807125990516e+01,1.485840356005261675e+01,7.261012100882488163e+00,2.290000000000000000e+02,2.080000000000000000e+02,1.740000000000000000e+02
+4.106974640576508406e+00,2.986629624469096100e+01,1.516573088104052403e+01,1.950000000000000000e+02,2.300000000000000000e+02,2.080000000000000000e+02
+9.507243216666521946e+00,3.216652488143226662e+01,9.627009879915192414e+00,9.300000000000000000e+01,7.500000000000000000e+01,6.300000000000000000e+01
+1.735270510769645469e+01,1.628620855509592857e+01,1.891242761366891401e+00,2.330000000000000000e+02,2.210000000000000000e+02,1.950000000000000000e+02
+9.877041102597635458e+00,3.128609799408574688e+01,1.510697690372219348e+01,2.190000000000000000e+02,2.010000000000000000e+02,1.760000000000000000e+02
+1.801038923290337124e+01,3.658384437831756486e+01,4.414467045019635272e+00,2.280000000000000000e+02,2.140000000000000000e+02,1.880000000000000000e+02
+3.068959594320022433e+01,3.274033097645619250e+01,2.351039974721480874e+01,5.400000000000000000e+01,4.400000000000000000e+01,3.500000000000000000e+01
+9.208780018722132255e+00,2.827558005107004746e+01,1.941343813819728226e+01,8.200000000000000000e+01,5.800000000000000000e+01,4.200000000000000000e+01
+1.978384813541768494e+01,3.883224680576827836e+01,2.020406088704765679e+01,2.000000000000000000e+01,1.600000000000000000e+01,1.600000000000000000e+01
+9.153482590316935230e+00,3.208984226420872687e+01,1.677548893294594023e+01,2.490000000000000000e+02,2.320000000000000000e+02,2.150000000000000000e+02
+3.130896725165290562e+01,3.191724946323156686e+01,2.136814198187881786e+01,1.900000000000000000e+01,1.700000000000000000e+01,1.800000000000000000e+01
+1.978384813541768494e+01,3.883224680576827836e+01,2.020406088704765679e+01,2.000000000000000000e+01,1.600000000000000000e+01,1.600000000000000000e+01
+2.396274073306084773e+01,1.868905986561037125e+01,1.775182666185641622e+01,8.100000000000000000e+01,7.600000000000000000e+01,7.300000000000000000e+01
+9.153482590316935230e+00,3.208984226420872687e+01,1.677548893294594023e+01,2.490000000000000000e+02,2.320000000000000000e+02,2.150000000000000000e+02
+3.215380678948661597e+01,3.221262449707887043e+01,1.608261509085836494e+01,4.000000000000000000e+01,3.400000000000000000e+01,3.500000000000000000e+01
+3.714801179451326263e+00,2.910482884526958358e+01,9.344457123085415873e+00,5.600000000000000000e+01,5.800000000000000000e+01,5.100000000000000000e+01
+1.627841502171985510e+01,3.374929882651245094e+01,5.526545657401527478e+00,2.310000000000000000e+02,2.180000000000000000e+02,1.990000000000000000e+02
+3.068959594320022433e+01,3.274033097645619250e+01,2.351039974721480874e+01,5.400000000000000000e+01,4.400000000000000000e+01,3.500000000000000000e+01
+2.266369093862557449e+01,3.850005067672953629e+01,1.157468607294541840e+01,1.100000000000000000e+02,9.000000000000000000e+01,7.600000000000000000e+01
+1.071423991479073479e+01,2.816903350348272994e+01,1.923660254221420018e+01,6.700000000000000000e+01,4.800000000000000000e+01,3.100000000000000000e+01
+1.083359872608744823e+01,2.951299602921496046e+01,6.438567860794124798e+00,1.230000000000000000e+02,1.080000000000000000e+02,9.500000000000000000e+01
+2.795020518258440134e+01,3.407659131762092386e+01,1.647870533603385113e+01,6.100000000000000000e+01,5.000000000000000000e+01,4.700000000000000000e+01
+5.004016623554043974e+00,2.826881724612016100e+01,5.000370412556928379e+00,3.600000000000000000e+01,3.400000000000000000e+01,3.500000000000000000e+01
+4.201039346604497737e+00,2.800512518737983214e+01,8.596900385555963808e+00,2.150000000000000000e+02,2.020000000000000000e+02,1.760000000000000000e+02
+2.170392519127996778e+01,3.961665571535269237e+01,1.506729853644087669e+01,1.440000000000000000e+02,1.380000000000000000e+02,1.350000000000000000e+02
+1.008877671558073352e+01,3.125685940504530080e+01,1.616998154333290572e+01,5.000000000000000000e+01,4.500000000000000000e+01,4.200000000000000000e+01
+2.478802100345815163e+01,3.628929667389429881e+01,1.132939391139589524e+01,2.530000000000000000e+02,2.470000000000000000e+02,2.340000000000000000e+02
+2.602852706393612436e+01,3.504702084209704793e+01,2.426686949464490795e+01,3.800000000000000000e+01,2.400000000000000000e+01,3.000000000000000000e+01
+2.464273271043564861e+01,1.861032582732120133e+01,6.303139347577252138e+00,1.780000000000000000e+02,1.680000000000000000e+02,1.530000000000000000e+02
+1.020602190472178883e+01,2.746318776226700109e+01,1.937807682747748217e+01,7.000000000000000000e+01,5.100000000000000000e+01,3.700000000000000000e+01
+7.052884095771677408e+00,2.225597283371924462e+01,1.996777294523013557e+00,2.040000000000000000e+02,1.940000000000000000e+02,1.670000000000000000e+02
+4.397990796615821374e+00,2.812852218030954177e+01,9.692648828520390225e+00,4.200000000000000000e+01,3.200000000000000000e+01,3.300000000000000000e+01
+2.276260508434920382e+01,3.864118707014518606e+01,2.335088900895553365e+01,1.120000000000000000e+02,1.000000000000000000e+02,8.200000000000000000e+01
+4.519418706159529009e+00,2.778281048001246489e+01,1.047775916441326061e+01,5.700000000000000000e+01,4.800000000000000000e+01,4.000000000000000000e+01
+2.147458207772134031e+01,1.929561650681364426e+01,2.969628514736775582e+00,2.330000000000000000e+02,2.200000000000000000e+02,1.910000000000000000e+02
+2.525682796277819264e+01,2.054164772900108460e+01,1.699056160085510570e+01,1.900000000000000000e+01,1.400000000000000000e+01,1.100000000000000000e+01
+2.675162902341226001e+00,2.921499158147936370e+01,1.183155589192450208e+01,1.410000000000000000e+02,1.320000000000000000e+02,1.240000000000000000e+02
+3.182647698677005366e+00,2.966443305655160856e+01,8.211582768056775450e+00,1.400000000000000000e+02,1.420000000000000000e+02,1.210000000000000000e+02
+7.245928508160361048e+00,2.932531670750678998e+01,1.157471643135597006e+01,1.000000000000000000e+02,9.800000000000000000e+01,1.000000000000000000e+02
+1.891223923720093580e+01,3.785061667965209153e+01,7.184680645066633176e+00,2.540000000000000000e+02,2.470000000000000000e+02,2.310000000000000000e+02
+7.052884095771677408e+00,2.225597283371924462e+01,1.996777294523013113e+00,2.040000000000000000e+02,1.940000000000000000e+02,1.670000000000000000e+02
+1.799309679468488099e+01,2.854642027882317024e+01,6.893352007524049085e+00,2.440000000000000000e+02,2.370000000000000000e+02,2.240000000000000000e+02
+2.858124726740937405e+01,3.405040866885615003e+01,2.194358991529764324e+01,8.000000000000000000e+01,7.700000000000000000e+01,7.000000000000000000e+01
+2.202854922764008805e+01,3.929252462052780714e+01,2.153000431225644817e+01,3.400000000000000000e+01,2.900000000000000000e+01,3.200000000000000000e+01
+1.962639513902367838e+01,3.949492600646292573e+01,1.015701394481140873e+01,1.740000000000000000e+02,1.620000000000000000e+02,1.460000000000000000e+02
+1.530223629833994181e+01,3.560400711452582811e+01,1.204198354172159746e+01,6.700000000000000000e+01,5.900000000000000000e+01,5.600000000000000000e+01
+1.586239363460428287e+01,1.784524457247277240e+01,1.835931854934137242e+00,2.000000000000000000e+02,1.880000000000000000e+02,1.580000000000000000e+02
+4.319627855587672371e+00,2.802195644063420943e+01,6.800744112982063605e+00,1.180000000000000000e+02,1.040000000000000000e+02,8.700000000000000000e+01
+2.569235072963640576e+01,1.562021416844488009e+01,7.463213261451906000e+00,9.300000000000000000e+01,8.600000000000000000e+01,8.000000000000000000e+01
+9.794672572831888857e+00,3.149592951599807478e+01,1.010375982595608235e+01,1.020000000000000000e+02,8.400000000000000000e+01,6.800000000000000000e+01
+3.068959594320022433e+01,3.274033097645619250e+01,2.351039974721480874e+01,5.400000000000000000e+01,4.400000000000000000e+01,3.500000000000000000e+01
+2.600977734384145990e+01,3.698107783012012817e+01,1.029710796395102257e+01,2.800000000000000000e+01,2.600000000000000000e+01,2.700000000000000000e+01
+1.888747142421816250e+01,3.650569668565733394e+01,8.874813340153952623e+00,2.240000000000000000e+02,2.160000000000000000e+02,1.960000000000000000e+02
+2.419860446636897677e+01,1.847558817183872648e+01,2.117248834678801828e+01,2.450000000000000000e+02,2.210000000000000000e+02,1.980000000000000000e+02
+2.570400790631648036e+01,2.182700713882787014e+01,1.612935901417366580e+01,1.280000000000000000e+02,1.190000000000000000e+02,1.110000000000000000e+02
+6.534024442268760779e+00,2.957745943409416611e+01,1.335239191357432453e+01,5.000000000000000000e+01,4.800000000000000000e+01,4.900000000000000000e+01
+2.454473002383427982e+01,1.887550692042822931e+01,4.095867461590579239e+00,2.120000000000000000e+02,2.090000000000000000e+02,1.990000000000000000e+02
+3.279768182228782791e+01,3.253168800411442874e+01,1.132134659286296596e+01,1.020000000000000000e+02,9.800000000000000000e+01,9.500000000000000000e+01
+8.090821381724024874e+00,3.141751400591905607e+01,2.028598630797494096e+01,2.010000000000000000e+02,1.900000000000000000e+02,1.810000000000000000e+02
+2.899412472820899112e+01,3.305326340687240361e+01,1.159225369944629236e+01,6.900000000000000000e+01,5.700000000000000000e+01,5.000000000000000000e+01
+2.676479721890127905e+01,1.483221040891983300e+01,1.776788756550337922e+01,8.600000000000000000e+01,7.800000000000000000e+01,7.500000000000000000e+01
+2.089561020873729547e+01,3.737596672786443719e+01,1.325824305185012975e+01,9.500000000000000000e+01,1.050000000000000000e+02,1.200000000000000000e+02
+4.975751107654176053e+00,3.557120700030893801e+01,2.078068417682787938e+01,2.320000000000000000e+02,2.190000000000000000e+02,2.000000000000000000e+02
+1.360168203250842467e+01,3.209529156311010922e+01,9.615543127245812727e+00,7.500000000000000000e+01,6.500000000000000000e+01,6.600000000000000000e+01
+1.783394685522605272e+01,1.546324778734632233e+01,1.919403286874968195e+00,2.370000000000000000e+02,2.210000000000000000e+02,1.950000000000000000e+02
+3.493906636549577893e+00,3.017928750074752031e+01,1.342593387361162094e+01,2.600000000000000000e+01,2.600000000000000000e+01,2.500000000000000000e+01
+2.533760605752979345e+01,1.514525444394098663e+01,8.332253880271975888e+00,3.100000000000000000e+01,2.600000000000000000e+01,2.200000000000000000e+01
+7.370767337753086679e+00,2.892570136168350814e+01,1.017879839527373953e+01,1.130000000000000000e+02,9.700000000000000000e+01,7.400000000000000000e+01
+6.059951602745156762e+00,2.832202624701803728e+01,1.213783725132698521e+01,3.700000000000000000e+01,3.300000000000000000e+01,3.100000000000000000e+01
+1.074909454169814182e+01,2.903149569838907240e+01,1.669277091455991879e+01,6.400000000000000000e+01,5.400000000000000000e+01,5.200000000000000000e+01
+2.876053351535384550e+01,3.329182819748513111e+01,2.232842384896753529e+01,9.900000000000000000e+01,8.500000000000000000e+01,7.300000000000000000e+01
+9.394630248687196428e+00,3.180843886726580649e+01,1.573333747235793467e+01,1.280000000000000000e+02,1.210000000000000000e+02,1.190000000000000000e+02
+1.198071000061996827e+01,2.978826030571051220e+01,1.543437195973221776e+01,2.390000000000000000e+02,2.220000000000000000e+02,2.060000000000000000e+02
+1.782552777258727872e+01,1.706699246632059896e+01,2.318941185686401951e+00,1.990000000000000000e+02,1.850000000000000000e+02,1.590000000000000000e+02
+4.116380989027612181e+00,2.805379158957465791e+01,9.455846316687829045e+00,5.500000000000000000e+01,5.100000000000000000e+01,4.600000000000000000e+01
+2.753904748405909331e+01,1.922603642737388085e+01,1.274406579584870158e+01,1.900000000000000000e+02,1.750000000000000000e+02,1.550000000000000000e+02
+5.420725827046289247e+00,2.867548311983199838e+01,1.131787935960445601e+01,7.400000000000000000e+01,6.500000000000000000e+01,6.300000000000000000e+01
+8.608777663314057804e+00,3.182015278227776278e+01,1.546572309038802473e+01,1.370000000000000000e+02,1.230000000000000000e+02,1.120000000000000000e+02
+2.450415126894837670e+01,3.598433828711095117e+01,2.559618014977444034e+01,5.900000000000000000e+01,5.900000000000000000e+01,6.100000000000000000e+01
+3.040176706531775075e+00,2.882041840893628049e+01,1.072607508133302723e+01,2.260000000000000000e+02,2.110000000000000000e+02,1.860000000000000000e+02
+2.534139026546014861e+01,1.834427866312031696e+01,1.251167400636395755e+01,1.060000000000000000e+02,8.900000000000000000e+01,8.300000000000000000e+01
+2.575471307302346347e+01,3.609396756004958462e+01,9.812545756891609017e+00,5.600000000000000000e+01,5.700000000000000000e+01,5.600000000000000000e+01
+2.409906015616665798e+01,1.852594764463074384e+01,1.867469440147886672e+01,2.540000000000000000e+02,2.520000000000000000e+02,2.390000000000000000e+02
+9.228395801646847474e+00,3.175060988119951944e+01,1.705246718969479147e+01,2.470000000000000000e+02,2.290000000000000000e+02,2.050000000000000000e+02
+3.713714494545283351e+00,2.900180374516856929e+01,8.243506457466708071e+00,6.700000000000000000e+01,6.500000000000000000e+01,5.300000000000000000e+01
+2.789038956984115192e+00,3.069436497673387265e+01,1.350111779932082889e+01,7.600000000000000000e+01,7.800000000000000000e+01,6.700000000000000000e+01
+3.709173544102603692e+00,2.895517668510424514e+01,6.704169879917762032e+00,1.310000000000000000e+02,1.300000000000000000e+02,1.160000000000000000e+02
+9.409732222143867730e+00,2.879918150649359987e+01,5.058243815221169726e+00,2.000000000000000000e+02,1.890000000000000000e+02,1.710000000000000000e+02
+2.951505385959998407e+01,2.855458319402643497e+01,1.941366769539382631e+01,2.800000000000000000e+01,1.800000000000000000e+01,1.400000000000000000e+01
+7.334673751600671032e+00,2.939817707223662779e+01,1.167734312919082917e+01,7.500000000000000000e+01,7.200000000000000000e+01,7.000000000000000000e+01
+2.319526723008015523e+01,1.911024565298660605e+01,1.961870949851705248e+01,1.120000000000000000e+02,1.000000000000000000e+02,8.400000000000000000e+01
+2.446988871862296833e+01,1.494139298918933534e+01,4.635472098680494035e+00,8.900000000000000000e+01,7.700000000000000000e+01,6.000000000000000000e+01
+2.549297381765383008e+01,2.078458821322042382e+01,5.470017554450879338e+00,2.700000000000000000e+01,2.200000000000000000e+01,2.000000000000000000e+01
+7.293436726353871968e+00,2.914096540395020440e+01,7.998527022064545910e+00,8.500000000000000000e+01,7.400000000000000000e+01,6.900000000000000000e+01
diff --git a/samples/berlin/kapture_tar/sensors/records_camera.txt b/samples/berlin/kapture_tar/sensors/records_camera.txt
new file mode 100644
index 0000000..19627cb
--- /dev/null
+++ b/samples/berlin/kapture_tar/sensors/records_camera.txt
@@ -0,0 +1,5 @@
+# kapture format: 1.1
+# timestamp, device_id, image_path
+0, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 01.jpg
+1, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 02.jpg
+2, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 03.jpg
diff --git a/samples/m1x/reconstruction/keypoints/22970285/1555399760779869.jpg.kpt b/samples/berlin/kapture_tar/sensors/records_data/01.jpg
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970285/1555399760779869.jpg.kpt
rename to samples/berlin/kapture_tar/sensors/records_data/01.jpg
diff --git a/samples/m1x/reconstruction/keypoints/22970285/1555399761779869.jpg.kpt b/samples/berlin/kapture_tar/sensors/records_data/02.jpg
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970285/1555399761779869.jpg.kpt
rename to samples/berlin/kapture_tar/sensors/records_data/02.jpg
diff --git a/samples/m1x/reconstruction/keypoints/22970286/1555399760779869.jpg.kpt b/samples/berlin/kapture_tar/sensors/records_data/03.jpg
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970286/1555399760779869.jpg.kpt
rename to samples/berlin/kapture_tar/sensors/records_data/03.jpg
diff --git a/samples/berlin/kapture_tar/sensors/records_gnss.txt b/samples/berlin/kapture_tar/sensors/records_gnss.txt
new file mode 100644
index 0000000..2f5e6eb
--- /dev/null
+++ b/samples/berlin/kapture_tar/sensors/records_gnss.txt
@@ -0,0 +1,5 @@
+# kapture format: 1.1
+# timestamp, device_id, x, y, z, utc, dop
+0, GPS_v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 13.400294444444445, 52.51891666666666, 27.0, 0, 5.0
+1, GPS_v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 13.40038888888889, 52.518924999999996, 30.0, 0, 5.0
+2, GPS_v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 13.400447222222223, 52.51904722222222, 39.0, 0, 5.0
diff --git a/samples/berlin/kapture_tar/sensors/sensors.txt b/samples/berlin/kapture_tar/sensors/sensors.txt
new file mode 100644
index 0000000..d8728f7
--- /dev/null
+++ b/samples/berlin/kapture_tar/sensors/sensors.txt
@@ -0,0 +1,4 @@
+# kapture format: 1.1
+# sensor_id, name, sensor_type, [sensor_params]+
+v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, camera, RADIAL, 3264, 2448, 3147.3191028463957, 1632, 1224, 0.022672104712876825, -0.0009966053789495556
+GPS_v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, , gnss, EPSG:4326
diff --git a/samples/berlin/kapture_tar/sensors/trajectories.txt b/samples/berlin/kapture_tar/sensors/trajectories.txt
new file mode 100644
index 0000000..d445c69
--- /dev/null
+++ b/samples/berlin/kapture_tar/sensors/trajectories.txt
@@ -0,0 +1,5 @@
+# kapture format: 1.1
+# timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
+       0, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 0.7567825047018621, 0.5759378194165659, -0.1844928813510864, 0.24806903368546643, -0.47088726728907015, 6.93176439745662, 7.616922291503473
+       1, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 0.7352461122265023, 0.6095523541118448, -0.18545052247828803, 0.2312297250896859, 0.08037300494798838, 4.246637763722639, 0.6961547424631436
+       2, v2 apple iphone 4s back camera 4.28mm f/2.4 3264 2448 perspective 0.9722, 0.794645097276721, 0.5219801938450587, -0.1808358160647794, 0.2517424363029222, 0.3467528326429017, -0.5909112144078564, -10.426282903168904
diff --git a/samples/m1x/reconstruction/keypoints/22970288/1555399760779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970285/1555399760779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970288/1555399760779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970285/1555399760779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970286/1555399761779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970285/1555399761779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970286/1555399761779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970285/1555399761779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970289/1555399760779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970286/1555399760779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970289/1555399760779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970286/1555399760779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970288/1555399761779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970286/1555399761779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970288/1555399761779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970286/1555399761779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970290/1555399760779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970288/1555399760779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970290/1555399760779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970288/1555399760779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970289/1555399761779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970288/1555399761779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970289/1555399761779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970288/1555399761779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970291/1555399760779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970289/1555399760779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970291/1555399760779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970289/1555399760779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970290/1555399761779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970289/1555399761779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970290/1555399761779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970289/1555399761779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/22970291/1555399761779869.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970290/1555399760779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/22970291/1555399761779869.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970290/1555399760779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/AC01324954/AC01324954_1555399760151000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970290/1555399761779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/AC01324954/AC01324954_1555399760151000.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970290/1555399761779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/AC01324954/AC01324954_1555399761168000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970291/1555399760779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/AC01324954/AC01324954_1555399761168000.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970291/1555399760779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/AC01324955/AC01324955_1555399760214000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/22970291/1555399761779869.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/AC01324955/AC01324955_1555399760214000.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/22970291/1555399761779869.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/AC01324955/AC01324955_1555399761216000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/AC01324954/AC01324954_1555399760151000.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/AC01324955/AC01324955_1555399761216000.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/AC01324954/AC01324954_1555399760151000.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/AC01324969/AC01324969_1555399760178000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/AC01324954/AC01324954_1555399761168000.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/AC01324969/AC01324969_1555399760178000.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/AC01324954/AC01324954_1555399761168000.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/AC01324969/AC01324969_1555399761151000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/AC01324955/AC01324955_1555399760214000.jpg.kpt
similarity index 100%
rename from samples/m1x/reconstruction/keypoints/AC01324969/AC01324969_1555399761151000.jpg.kpt
rename to samples/m1x/reconstruction/keypoints/SIFT/AC01324955/AC01324955_1555399760214000.jpg.kpt
diff --git a/samples/m1x/reconstruction/keypoints/SIFT/AC01324955/AC01324955_1555399761216000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/AC01324955/AC01324955_1555399761216000.jpg.kpt
new file mode 100644
index 0000000..e69de29
diff --git a/samples/m1x/reconstruction/keypoints/SIFT/AC01324969/AC01324969_1555399760178000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/AC01324969/AC01324969_1555399760178000.jpg.kpt
new file mode 100644
index 0000000..e69de29
diff --git a/samples/m1x/reconstruction/keypoints/SIFT/AC01324969/AC01324969_1555399761151000.jpg.kpt b/samples/m1x/reconstruction/keypoints/SIFT/AC01324969/AC01324969_1555399761151000.jpg.kpt
new file mode 100644
index 0000000..e69de29
diff --git a/samples/m1x/reconstruction/keypoints/SIFT/keypoints.txt b/samples/m1x/reconstruction/keypoints/SIFT/keypoints.txt
new file mode 100644
index 0000000..02c7dbf
--- /dev/null
+++ b/samples/m1x/reconstruction/keypoints/SIFT/keypoints.txt
@@ -0,0 +1,2 @@
+# kapture format: 1.1
+SIFT, float, 4
\ No newline at end of file
diff --git a/samples/m1x/reconstruction/keypoints/keypoints.txt b/samples/m1x/reconstruction/keypoints/keypoints.txt
deleted file mode 100644
index c6203ee..0000000
--- a/samples/m1x/reconstruction/keypoints/keypoints.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-# kapture format: 1.0
-SIFT, float, 4
\ No newline at end of file
diff --git a/samples/m1x/reconstruction/points3d.txt b/samples/m1x/reconstruction/points3d.txt
index f2bdda8..3b40172 100644
--- a/samples/m1x/reconstruction/points3d.txt
+++ b/samples/m1x/reconstruction/points3d.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 4.836340000000000146e+02,9.867639999999999745e-01,4.847610000000000241e+02,1.600000000000000000e+01,2.100000000000000000e+01,3.000000000000000000e+00
 4.867130000000000223e+02,2.313190000000000079e+00,4.823480000000000132e+02,2.300000000000000000e+01,1.800000000000000000e+01,1.300000000000000000e+01
 4.781120000000000232e+02,4.673309999999999853e+00,4.881159999999999854e+02,2.900000000000000000e+01,3.300000000000000000e+01,2.500000000000000000e+01
diff --git a/samples/m1x/sensors/records_bluetooth.txt b/samples/m1x/sensors/records_bluetooth.txt
index 1a0474b..9f2ec30 100644
--- a/samples/m1x/sensors/records_bluetooth.txt
+++ b/samples/m1x/sensors/records_bluetooth.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp  , device_id           , Address          , RSSI, name
 1555398770307, AC01324954_bluetooth, 35:A8:4B:D9:95:06, -73 ,
 1555398770307, AC01324954_bluetooth, 6F:80:17:51:5C:16, -88 ,MyPhone
diff --git a/samples/m1x/sensors/records_camera.txt b/samples/m1x/sensors/records_camera.txt
index 1de1406..1293bdb 100644
--- a/samples/m1x/sensors/records_camera.txt
+++ b/samples/m1x/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 1555399760151000, AC01324954, AC01324954/AC01324954_1555399760151000.jpg
 1555399760178000, AC01324969, AC01324969/AC01324969_1555399760178000.jpg
diff --git a/samples/m1x/sensors/records_lidar.txt b/samples/m1x/sensors/records_lidar.txt
index af89f64..6425d73 100644
--- a/samples/m1x/sensors/records_lidar.txt
+++ b/samples/m1x/sensors/records_lidar.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, pcd_path
 1555399760777612, lidar0, lidar0/1555399760777612.pcd
 1555399760777612, lidar1, lidar1/1555399760777612.pcd
diff --git a/samples/m1x/sensors/records_wifi.txt b/samples/m1x/sensors/records_wifi.txt
index 7cf76cf..e4e60e6 100644
--- a/samples/m1x/sensors/records_wifi.txt
+++ b/samples/m1x/sensors/records_wifi.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp  , device_id      , BSSID            , frequency, RSSI, SSID          , scan_time_start, scan_time_end
 1555398770307, AC01324954_wifi, 68:72:51:80:52:df, 2417     ,-33.0, M1X_PicoM2    , 0              , 0
 1555398770307, AC01324954_wifi, 68:9c:e2:e1:b0:60, 5765     ,-49.0, @HYUNDAI-WiFi , 0              , 0
diff --git a/samples/m1x/sensors/rigs.txt b/samples/m1x/sensors/rigs.txt
index 4897f0d..9c35c8a 100644
--- a/samples/m1x/sensors/rigs.txt
+++ b/samples/m1x/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 rig, lidar0, 2.7755575615628914e-17, -0.7071065623731627, 2.775557561562891e-17, -0.7071065623731627, -2.2204460492503132e-17, -0.4, 4.4408920985006264e-17
 rig, lidar1, 0.5078526485994854, -0.5016236529095393, -0.4956696570293116, -0.4947426576707339, 0.8530451821650661, 0.023947487894147017, -0.014078157497652352
diff --git a/samples/m1x/sensors/sensors.txt b/samples/m1x/sensors/sensors.txt
index 07cc3fd..25ce620 100644
--- a/samples/m1x/sensors/sensors.txt
+++ b/samples/m1x/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 lidar0, vertical, lidar
 lidar1, horizontal, lidar
diff --git a/samples/m1x/sensors/trajectories.txt b/samples/m1x/sensors/trajectories.txt
index 007b2d8..820b141 100644
--- a/samples/m1x/sensors/trajectories.txt
+++ b/samples/m1x/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
 1555399760151000, rig, -0.03998314727387317, 0.000810622029022933, 0.9991982250752731, 0.0020501074914821946, 488.0082384493067, -8.29482066055861, 457.6611476035122
 1555399760178000, rig, -0.0403977475520256, 0.0009024696008818978, 0.9991815093653242, 0.0020308394266697095, 488.38791687237347, -8.362012332349787, 457.24215267960625
diff --git a/samples/maupertuis/kapture/reconstruction/descriptors/00.jpg.desc b/samples/maupertuis/kapture/reconstruction/descriptors/SIFT/00.jpg.desc
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/descriptors/00.jpg.desc
rename to samples/maupertuis/kapture/reconstruction/descriptors/SIFT/00.jpg.desc
diff --git a/samples/maupertuis/kapture/reconstruction/descriptors/01.jpg.desc b/samples/maupertuis/kapture/reconstruction/descriptors/SIFT/01.jpg.desc
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/descriptors/01.jpg.desc
rename to samples/maupertuis/kapture/reconstruction/descriptors/SIFT/01.jpg.desc
diff --git a/samples/maupertuis/kapture/reconstruction/descriptors/02.jpg.desc b/samples/maupertuis/kapture/reconstruction/descriptors/SIFT/02.jpg.desc
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/descriptors/02.jpg.desc
rename to samples/maupertuis/kapture/reconstruction/descriptors/SIFT/02.jpg.desc
diff --git a/samples/maupertuis/kapture/reconstruction/descriptors/03.jpg.desc b/samples/maupertuis/kapture/reconstruction/descriptors/SIFT/03.jpg.desc
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/descriptors/03.jpg.desc
rename to samples/maupertuis/kapture/reconstruction/descriptors/SIFT/03.jpg.desc
diff --git a/samples/maupertuis/kapture/reconstruction/descriptors/SIFT/descriptors.txt b/samples/maupertuis/kapture/reconstruction/descriptors/SIFT/descriptors.txt
new file mode 100644
index 0000000..0bbcc12
--- /dev/null
+++ b/samples/maupertuis/kapture/reconstruction/descriptors/SIFT/descriptors.txt
@@ -0,0 +1,3 @@
+# kapture format: 1.0
+# name, dtype, dsize, keypoints_type, metric_type
+SIFT, uint8, 128, SIFT, L2
diff --git a/samples/maupertuis/kapture/reconstruction/descriptors/descriptors.txt b/samples/maupertuis/kapture/reconstruction/descriptors/descriptors.txt
deleted file mode 100644
index 459afc8..0000000
--- a/samples/maupertuis/kapture/reconstruction/descriptors/descriptors.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# kapture format: 1.0
-# name, dtype, dsize
-SIFT, uint8, 128
diff --git a/samples/maupertuis/kapture/reconstruction/keypoints/00.jpg.kpt b/samples/maupertuis/kapture/reconstruction/keypoints/SIFT/00.jpg.kpt
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/keypoints/00.jpg.kpt
rename to samples/maupertuis/kapture/reconstruction/keypoints/SIFT/00.jpg.kpt
diff --git a/samples/maupertuis/kapture/reconstruction/keypoints/01.jpg.kpt b/samples/maupertuis/kapture/reconstruction/keypoints/SIFT/01.jpg.kpt
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/keypoints/01.jpg.kpt
rename to samples/maupertuis/kapture/reconstruction/keypoints/SIFT/01.jpg.kpt
diff --git a/samples/maupertuis/kapture/reconstruction/keypoints/02.jpg.kpt b/samples/maupertuis/kapture/reconstruction/keypoints/SIFT/02.jpg.kpt
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/keypoints/02.jpg.kpt
rename to samples/maupertuis/kapture/reconstruction/keypoints/SIFT/02.jpg.kpt
diff --git a/samples/maupertuis/kapture/reconstruction/keypoints/03.jpg.kpt b/samples/maupertuis/kapture/reconstruction/keypoints/SIFT/03.jpg.kpt
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/keypoints/03.jpg.kpt
rename to samples/maupertuis/kapture/reconstruction/keypoints/SIFT/03.jpg.kpt
diff --git a/samples/maupertuis/kapture/reconstruction/keypoints/keypoints.txt b/samples/maupertuis/kapture/reconstruction/keypoints/SIFT/keypoints.txt
similarity index 63%
rename from samples/maupertuis/kapture/reconstruction/keypoints/keypoints.txt
rename to samples/maupertuis/kapture/reconstruction/keypoints/SIFT/keypoints.txt
index caa6474..7408dde 100644
--- a/samples/maupertuis/kapture/reconstruction/keypoints/keypoints.txt
+++ b/samples/maupertuis/kapture/reconstruction/keypoints/SIFT/keypoints.txt
@@ -1,3 +1,3 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # name, dtype, dsize
 SIFT, float32, 6
diff --git a/samples/maupertuis/kapture/reconstruction/matches/00.jpg.overlapping/01.jpg.matches b/samples/maupertuis/kapture/reconstruction/matches/SIFT/00.jpg.overlapping/01.jpg.matches
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/matches/00.jpg.overlapping/01.jpg.matches
rename to samples/maupertuis/kapture/reconstruction/matches/SIFT/00.jpg.overlapping/01.jpg.matches
diff --git a/samples/maupertuis/kapture/reconstruction/matches/00.jpg.overlapping/02.jpg.matches b/samples/maupertuis/kapture/reconstruction/matches/SIFT/00.jpg.overlapping/02.jpg.matches
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/matches/00.jpg.overlapping/02.jpg.matches
rename to samples/maupertuis/kapture/reconstruction/matches/SIFT/00.jpg.overlapping/02.jpg.matches
diff --git a/samples/maupertuis/kapture/reconstruction/matches/00.jpg.overlapping/03.jpg.matches b/samples/maupertuis/kapture/reconstruction/matches/SIFT/00.jpg.overlapping/03.jpg.matches
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/matches/00.jpg.overlapping/03.jpg.matches
rename to samples/maupertuis/kapture/reconstruction/matches/SIFT/00.jpg.overlapping/03.jpg.matches
diff --git a/samples/maupertuis/kapture/reconstruction/matches/01.jpg.overlapping/02.jpg.matches b/samples/maupertuis/kapture/reconstruction/matches/SIFT/01.jpg.overlapping/02.jpg.matches
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/matches/01.jpg.overlapping/02.jpg.matches
rename to samples/maupertuis/kapture/reconstruction/matches/SIFT/01.jpg.overlapping/02.jpg.matches
diff --git a/samples/maupertuis/kapture/reconstruction/matches/01.jpg.overlapping/03.jpg.matches b/samples/maupertuis/kapture/reconstruction/matches/SIFT/01.jpg.overlapping/03.jpg.matches
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/matches/01.jpg.overlapping/03.jpg.matches
rename to samples/maupertuis/kapture/reconstruction/matches/SIFT/01.jpg.overlapping/03.jpg.matches
diff --git a/samples/maupertuis/kapture/reconstruction/matches/02.jpg.overlapping/03.jpg.matches b/samples/maupertuis/kapture/reconstruction/matches/SIFT/02.jpg.overlapping/03.jpg.matches
similarity index 100%
rename from samples/maupertuis/kapture/reconstruction/matches/02.jpg.overlapping/03.jpg.matches
rename to samples/maupertuis/kapture/reconstruction/matches/SIFT/02.jpg.overlapping/03.jpg.matches
diff --git a/samples/maupertuis/kapture/reconstruction/observations.txt b/samples/maupertuis/kapture/reconstruction/observations.txt
index 4be9c7c..ceb5cfc 100644
--- a/samples/maupertuis/kapture/reconstruction/observations.txt
+++ b/samples/maupertuis/kapture/reconstruction/observations.txt
@@ -1,1041 +1,1041 @@
-# kapture format: 1.0
-# point3d_id, [image_path, feature_id]*
-0, 01.jpg, 4561, 02.jpg, 3389, 00.jpg, 4975, 03.jpg, 3472
-1, 01.jpg, 4557, 02.jpg, 4128, 00.jpg, 4970
-2, 01.jpg, 4554, 02.jpg, 3466, 00.jpg, 4958, 03.jpg, 3556
-3, 01.jpg, 4553, 02.jpg, 3465, 00.jpg, 4957, 03.jpg, 3555
-4, 01.jpg, 4548, 02.jpg, 4224, 00.jpg, 4954
-5, 01.jpg, 4543, 02.jpg, 4103, 00.jpg, 4960, 03.jpg, 3435
-6, 01.jpg, 4541, 02.jpg, 3509, 00.jpg, 4950, 03.jpg, 3644
-7, 01.jpg, 4533, 02.jpg, 4222, 00.jpg, 4105, 03.jpg, 3692
-8, 01.jpg, 4531, 02.jpg, 3423, 00.jpg, 4953, 03.jpg, 3525
-9, 01.jpg, 4530, 02.jpg, 3568, 00.jpg, 4939, 03.jpg, 3725
-10, 01.jpg, 4521, 02.jpg, 4204, 00.jpg, 4928, 03.jpg, 3696
-11, 01.jpg, 4517, 02.jpg, 3303, 00.jpg, 4936, 03.jpg, 1166
-12, 01.jpg, 4514, 02.jpg, 4190
-13, 01.jpg, 4507, 02.jpg, 4171, 00.jpg, 4031, 03.jpg, 3640
-14, 01.jpg, 4506, 02.jpg, 4184, 00.jpg, 5349
-15, 01.jpg, 4504, 02.jpg, 4125, 00.jpg, 4902, 03.jpg, 3528
-16, 01.jpg, 4503, 02.jpg, 4083, 00.jpg, 5355, 03.jpg, 4414
-17, 01.jpg, 4501, 02.jpg, 4164, 00.jpg, 4003, 03.jpg, 3628
-18, 01.jpg, 4500, 02.jpg, 4180, 00.jpg, 3988
-19, 01.jpg, 4499, 02.jpg, 4220, 00.jpg, 4883, 03.jpg, 4586
-20, 01.jpg, 4498, 02.jpg, 4165, 00.jpg, 3986, 03.jpg, 3642
-21, 01.jpg, 4497, 02.jpg, 3337, 03.jpg, 3469
-22, 01.jpg, 4495, 02.jpg, 3274, 03.jpg, 3386
-23, 01.jpg, 4492, 02.jpg, 4579, 00.jpg, 4886
-24, 01.jpg, 4482, 02.jpg, 4151, 00.jpg, 4877, 03.jpg, 4514
-25, 01.jpg, 4474, 02.jpg, 4170, 00.jpg, 4866, 03.jpg, 4546
-26, 01.jpg, 4472, 02.jpg, 4218, 00.jpg, 4858, 03.jpg, 4598
-27, 01.jpg, 4466, 02.jpg, 3234, 03.jpg, 3304
-28, 01.jpg, 4465, 02.jpg, 3235, 00.jpg, 4885, 03.jpg, 3303
-29, 01.jpg, 4464, 02.jpg, 4212, 00.jpg, 4851
-30, 01.jpg, 4459, 02.jpg, 4109, 00.jpg, 4859
-31, 01.jpg, 4456, 02.jpg, 4059, 00.jpg, 4868, 03.jpg, 3418
-32, 01.jpg, 4448, 02.jpg, 4047, 00.jpg, 4867, 03.jpg, 3371
-33, 01.jpg, 4445, 02.jpg, 3258, 03.jpg, 3405
-34, 01.jpg, 4443, 02.jpg, 4030, 03.jpg, 3269
-35, 01.jpg, 4435, 02.jpg, 3228, 03.jpg, 3320
-36, 01.jpg, 4434, 02.jpg, 3227, 03.jpg, 3319
-37, 01.jpg, 4428, 02.jpg, 4261, 00.jpg, 4827
-38, 01.jpg, 4421, 02.jpg, 3191, 00.jpg, 4853
-39, 01.jpg, 4410, 02.jpg, 4622, 00.jpg, 4805, 03.jpg, 5644
-40, 01.jpg, 4409, 02.jpg, 4618
-41, 01.jpg, 4403, 02.jpg, 4064, 00.jpg, 3844, 03.jpg, 3491
-42, 01.jpg, 4388, 02.jpg, 4124, 00.jpg, 3808, 03.jpg, 4555
-43, 01.jpg, 4387, 02.jpg, 4123, 00.jpg, 3807, 03.jpg, 4554
-44, 01.jpg, 4382, 02.jpg, 4596, 00.jpg, 3795, 03.jpg, 5070
-45, 01.jpg, 4374, 02.jpg, 4111, 00.jpg, 4775, 03.jpg, 4533
-46, 01.jpg, 4371, 02.jpg, 4585, 00.jpg, 4761, 03.jpg, 5071
-47, 01.jpg, 4367, 02.jpg, 4611, 00.jpg, 4741, 03.jpg, 5459
-48, 01.jpg, 4361, 02.jpg, 4578, 03.jpg, 5074
-49, 01.jpg, 4333, 02.jpg, 3950
-50, 01.jpg, 4331, 02.jpg, 4054, 00.jpg, 4701, 03.jpg, 5027
-51, 01.jpg, 4329, 02.jpg, 4082, 00.jpg, 4692
-52, 01.jpg, 4325, 02.jpg, 2905, 00.jpg, 4762
-53, 01.jpg, 4312, 02.jpg, 3074, 00.jpg, 4699, 03.jpg, 3195
-54, 01.jpg, 4309, 02.jpg, 2824, 00.jpg, 4742
-55, 01.jpg, 4308, 02.jpg, 4007, 00.jpg, 3568, 03.jpg, 4424
-56, 01.jpg, 4307, 02.jpg, 4513, 00.jpg, 4677, 03.jpg, 5359
-57, 01.jpg, 4306, 02.jpg, 4515
-58, 01.jpg, 4295, 02.jpg, 2814, 00.jpg, 5258
-59, 01.jpg, 4294, 02.jpg, 4518, 00.jpg, 4654, 03.jpg, 4995
-60, 01.jpg, 4287, 02.jpg, 2837, 03.jpg, 4158
-61, 01.jpg, 4286, 02.jpg, 2788
-62, 01.jpg, 4284, 02.jpg, 2784
-63, 01.jpg, 4283, 02.jpg, 3926
-64, 01.jpg, 4269, 02.jpg, 2778, 03.jpg, 2863
-65, 01.jpg, 4266, 02.jpg, 2733
-66, 01.jpg, 4261, 02.jpg, 3897, 00.jpg, 4632
-67, 01.jpg, 4256, 02.jpg, 2768, 00.jpg, 4684, 03.jpg, 2873
-68, 01.jpg, 4243, 02.jpg, 2725, 00.jpg, 4661
-69, 01.jpg, 4197, 02.jpg, 4479
-70, 01.jpg, 4196, 02.jpg, 4478, 03.jpg, 5363
-71, 01.jpg, 4168, 02.jpg, 3758, 00.jpg, 4567
-72, 01.jpg, 4163, 02.jpg, 2716, 00.jpg, 4561
-73, 01.jpg, 4150, 02.jpg, 2700, 00.jpg, 4548
-74, 01.jpg, 4131, 02.jpg, 3805, 00.jpg, 4520
-75, 01.jpg, 4118, 02.jpg, 3794, 00.jpg, 4507
-76, 01.jpg, 4113, 02.jpg, 3798, 00.jpg, 4499
-77, 01.jpg, 4098, 02.jpg, 3786, 00.jpg, 4485
-78, 01.jpg, 4060, 02.jpg, 3593, 00.jpg, 4430, 03.jpg, 1746
-79, 01.jpg, 4054, 02.jpg, 1916, 00.jpg, 4466
-80, 01.jpg, 4045, 02.jpg, 2004, 00.jpg, 4441
-81, 01.jpg, 4035, 02.jpg, 1905, 00.jpg, 4426
-82, 01.jpg, 4027, 02.jpg, 2298, 00.jpg, 4380, 03.jpg, 1836
-83, 01.jpg, 4026, 02.jpg, 1718, 00.jpg, 4429
-84, 01.jpg, 4025, 02.jpg, 1717, 00.jpg, 4428
-85, 01.jpg, 4022, 02.jpg, 1851, 00.jpg, 4409, 03.jpg, 1401
-86, 01.jpg, 4014, 02.jpg, 1528, 00.jpg, 4438
-87, 01.jpg, 4003, 02.jpg, 1520, 00.jpg, 5069
-88, 01.jpg, 3992, 02.jpg, 1754, 00.jpg, 4375
-89, 01.jpg, 3991, 02.jpg, 3544, 03.jpg, 1674
-90, 01.jpg, 3988, 02.jpg, 2196, 00.jpg, 4333, 03.jpg, 1789
-91, 01.jpg, 3979, 02.jpg, 2231, 03.jpg, 1843
-92, 01.jpg, 3978, 02.jpg, 2128, 03.jpg, 1726
-93, 01.jpg, 3967, 02.jpg, 3572, 00.jpg, 4313, 03.jpg, 1797
-94, 01.jpg, 3964, 02.jpg, 3579, 03.jpg, 3655
-95, 01.jpg, 3963, 02.jpg, 3580
-96, 01.jpg, 3958, 02.jpg, 3433
-97, 01.jpg, 3957, 02.jpg, 3432
-98, 01.jpg, 3955, 02.jpg, 3513, 03.jpg, 1577
-99, 01.jpg, 3954, 02.jpg, 2302, 00.jpg, 4296, 03.jpg, 1951
-100, 01.jpg, 3941, 02.jpg, 1664, 00.jpg, 4324
-101, 01.jpg, 3938, 02.jpg, 2017, 00.jpg, 4298
-102, 01.jpg, 3937, 02.jpg, 3416, 00.jpg, 4316
-103, 01.jpg, 3931, 02.jpg, 1891, 00.jpg, 4299
-104, 01.jpg, 3927, 02.jpg, 2056, 00.jpg, 2738
-105, 01.jpg, 3926, 02.jpg, 1953
-106, 01.jpg, 3921, 02.jpg, 1593, 00.jpg, 4305
-107, 01.jpg, 3920, 02.jpg, 2020, 00.jpg, 4269, 03.jpg, 1664
-108, 01.jpg, 3919, 02.jpg, 2021, 00.jpg, 4268
-109, 01.jpg, 3916, 02.jpg, 3554, 00.jpg, 4259
-110, 01.jpg, 3914, 02.jpg, 3583, 00.jpg, 4241, 03.jpg, 1910
-111, 01.jpg, 3911, 02.jpg, 1965
-112, 01.jpg, 3910, 02.jpg, 1615, 00.jpg, 2764
-113, 01.jpg, 3906, 02.jpg, 3604, 00.jpg, 4221
-114, 01.jpg, 3903, 02.jpg, 3538, 00.jpg, 4237
-115, 01.jpg, 3902, 02.jpg, 3537, 00.jpg, 4236
-116, 01.jpg, 3900, 02.jpg, 2166, 00.jpg, 2596, 03.jpg, 1867
-117, 01.jpg, 3899, 02.jpg, 1594, 00.jpg, 4267, 03.jpg, 1320
-118, 01.jpg, 3891, 02.jpg, 2048, 00.jpg, 4226, 03.jpg, 1748
-119, 01.jpg, 3888, 02.jpg, 3496, 00.jpg, 4233, 03.jpg, 1622
-120, 01.jpg, 3887, 02.jpg, 3495, 03.jpg, 1621
-121, 01.jpg, 3884, 02.jpg, 3439
-122, 01.jpg, 3880, 02.jpg, 3570, 03.jpg, 1918
-123, 01.jpg, 3878, 02.jpg, 2239, 00.jpg, 4178, 03.jpg, 2009
-124, 01.jpg, 3852, 02.jpg, 1646, 03.jpg, 1402
-125, 01.jpg, 3848, 02.jpg, 1575, 00.jpg, 4208
-126, 01.jpg, 3844, 02.jpg, 3560, 00.jpg, 4155, 03.jpg, 1907
-127, 01.jpg, 3836, 02.jpg, 1494, 00.jpg, 4203, 03.jpg, 1270
-128, 01.jpg, 3834, 02.jpg, 2175, 00.jpg, 4145, 03.jpg, 3708
-129, 01.jpg, 3833, 02.jpg, 2174, 00.jpg, 4146
-130, 01.jpg, 3831, 02.jpg, 1587, 00.jpg, 4185, 03.jpg, 1374
-131, 01.jpg, 3830, 02.jpg, 1588, 00.jpg, 4186, 03.jpg, 1373
-132, 01.jpg, 3826, 02.jpg, 1918, 03.jpg, 1693
-133, 01.jpg, 3825, 02.jpg, 1917, 00.jpg, 4150, 03.jpg, 1692
-134, 01.jpg, 3824, 02.jpg, 3475, 00.jpg, 4158, 03.jpg, 3565
-135, 01.jpg, 3823, 02.jpg, 3564, 00.jpg, 4139, 03.jpg, 3695
-136, 01.jpg, 3822, 02.jpg, 3363, 00.jpg, 4177, 03.jpg, 1326
-137, 01.jpg, 3820, 02.jpg, 3566, 00.jpg, 4134, 03.jpg, 3703
-138, 01.jpg, 3819, 02.jpg, 3567, 00.jpg, 4133, 03.jpg, 3702
-139, 01.jpg, 3816, 02.jpg, 3246
-140, 01.jpg, 3802, 02.jpg, 1501, 00.jpg, 4164, 03.jpg, 1300
-141, 01.jpg, 3800, 02.jpg, 3581, 00.jpg, 4115, 03.jpg, 3734
-142, 01.jpg, 3799, 02.jpg, 3425, 00.jpg, 4141, 03.jpg, 1491
-143, 01.jpg, 3796, 02.jpg, 1719, 00.jpg, 4138, 03.jpg, 1510
-144, 01.jpg, 3795, 02.jpg, 3565
-145, 01.jpg, 3791, 02.jpg, 3582, 00.jpg, 2182
-146, 01.jpg, 3787, 02.jpg, 1444, 00.jpg, 4144
-147, 01.jpg, 3784, 02.jpg, 3473, 00.jpg, 4119, 03.jpg, 3594
-148, 01.jpg, 3783, 02.jpg, 3402, 00.jpg, 4127
-149, 01.jpg, 3782, 02.jpg, 1972, 00.jpg, 4109, 03.jpg, 1812
-150, 01.jpg, 3777, 02.jpg, 3531, 00.jpg, 4098
-151, 01.jpg, 3775, 02.jpg, 3461, 00.jpg, 4104, 03.jpg, 3586
-152, 01.jpg, 3773, 02.jpg, 3448, 00.jpg, 4945, 03.jpg, 3568
-153, 01.jpg, 3764, 02.jpg, 3424
-154, 01.jpg, 3762, 02.jpg, 3545, 00.jpg, 4078, 03.jpg, 3716
-155, 01.jpg, 3756, 02.jpg, 3552, 00.jpg, 4072
-156, 01.jpg, 3754, 02.jpg, 3492, 00.jpg, 4074, 03.jpg, 1833
-157, 01.jpg, 3753, 02.jpg, 1522, 00.jpg, 4087, 03.jpg, 1392
-158, 01.jpg, 3746, 02.jpg, 1967, 03.jpg, 1903
-159, 01.jpg, 3742, 02.jpg, 3401, 00.jpg, 4070, 03.jpg, 3538
-160, 01.jpg, 3735, 02.jpg, 1564, 00.jpg, 4063, 03.jpg, 1483
-161, 01.jpg, 3733, 02.jpg, 1211, 00.jpg, 4082
-162, 01.jpg, 3730, 02.jpg, 1553, 00.jpg, 4055, 03.jpg, 1478
-163, 01.jpg, 3723, 02.jpg, 1332, 00.jpg, 4061
-164, 01.jpg, 3721, 02.jpg, 3494, 00.jpg, 4022
-165, 01.jpg, 3720, 02.jpg, 3493, 00.jpg, 4021, 03.jpg, 3688
-166, 01.jpg, 3713, 02.jpg, 3435, 00.jpg, 4018
-167, 01.jpg, 3712, 02.jpg, 3429, 00.jpg, 4017, 03.jpg, 3609
-168, 01.jpg, 3710, 02.jpg, 3452, 00.jpg, 4013, 03.jpg, 3650
-169, 01.jpg, 3706, 02.jpg, 3440, 00.jpg, 4012, 03.jpg, 3624
-170, 01.jpg, 3695, 02.jpg, 3272, 00.jpg, 4026, 03.jpg, 1176
-171, 01.jpg, 3691, 02.jpg, 3478, 00.jpg, 3976, 03.jpg, 3700
-172, 01.jpg, 3688, 02.jpg, 3481, 00.jpg, 3973, 03.jpg, 3706
-173, 01.jpg, 3687, 02.jpg, 3480, 00.jpg, 3972, 03.jpg, 3707
-174, 01.jpg, 3686, 02.jpg, 3357, 00.jpg, 3994
-175, 01.jpg, 3685, 02.jpg, 4199, 00.jpg, 3962, 03.jpg, 3750
-176, 01.jpg, 3682, 02.jpg, 4186, 00.jpg, 3964, 03.jpg, 4559
-177, 01.jpg, 3670, 02.jpg, 4156, 00.jpg, 3959
-178, 01.jpg, 3665, 02.jpg, 3486, 00.jpg, 1641, 03.jpg, 2055
-179, 01.jpg, 3657, 02.jpg, 1186, 00.jpg, 1752
-180, 01.jpg, 3651, 02.jpg, 3254, 00.jpg, 3971
-181, 01.jpg, 3650, 02.jpg, 3474, 00.jpg, 3932, 03.jpg, 3718
-182, 01.jpg, 3649, 02.jpg, 3278
-183, 01.jpg, 3643, 02.jpg, 3365, 00.jpg, 3940, 03.jpg, 1651
-184, 01.jpg, 3642, 02.jpg, 3366, 00.jpg, 3941, 03.jpg, 1650
-185, 01.jpg, 3641, 02.jpg, 3277, 00.jpg, 3958, 03.jpg, 1264
-186, 01.jpg, 3637, 02.jpg, 3526, 00.jpg, 3902, 03.jpg, 3805
-187, 01.jpg, 3631, 02.jpg, 4308
-188, 01.jpg, 3625, 02.jpg, 3240, 00.jpg, 3945, 03.jpg, 3349
-189, 01.jpg, 3624, 02.jpg, 3198, 00.jpg, 3957, 03.jpg, 3237
-190, 01.jpg, 3616, 02.jpg, 1108, 00.jpg, 3942
-191, 01.jpg, 3614, 02.jpg, 4202, 00.jpg, 3888, 03.jpg, 4609
-192, 01.jpg, 3611, 02.jpg, 3521, 03.jpg, 3820
-193, 01.jpg, 3610, 02.jpg, 3522, 00.jpg, 1443
-194, 01.jpg, 3607, 02.jpg, 1775, 00.jpg, 3892, 03.jpg, 3720
-195, 01.jpg, 3605, 02.jpg, 1149, 00.jpg, 3917, 03.jpg, 1129
-196, 01.jpg, 3604, 02.jpg, 1150, 00.jpg, 3916, 03.jpg, 1130
-197, 01.jpg, 3597, 02.jpg, 3225, 03.jpg, 3315
-198, 01.jpg, 3596, 02.jpg, 1034, 00.jpg, 4856
-199, 01.jpg, 3591, 02.jpg, 4146, 00.jpg, 3877, 03.jpg, 4530
-200, 01.jpg, 3590, 02.jpg, 4145, 00.jpg, 3876, 03.jpg, 4531
-201, 01.jpg, 3582, 02.jpg, 3517, 00.jpg, 3855, 03.jpg, 3827
-202, 01.jpg, 3576, 02.jpg, 3386, 00.jpg, 3861, 03.jpg, 3670
-203, 01.jpg, 3568, 02.jpg, 4279
-204, 01.jpg, 3561, 02.jpg, 4178, 00.jpg, 1282
-205, 01.jpg, 3556, 02.jpg, 3472, 00.jpg, 3823, 03.jpg, 3806
-206, 01.jpg, 3554, 02.jpg, 4140
-207, 01.jpg, 3544, 02.jpg, 4118, 00.jpg, 3825
-208, 01.jpg, 3541, 02.jpg, 3346, 00.jpg, 3820, 03.jpg, 3638
-209, 01.jpg, 3536, 02.jpg, 4097, 00.jpg, 3818
-210, 01.jpg, 3535, 02.jpg, 3332, 03.jpg, 3589
-211, 01.jpg, 3529, 02.jpg, 4185, 00.jpg, 3783, 03.jpg, 4626
-212, 01.jpg, 3521, 02.jpg, 4136, 00.jpg, 1123
-213, 01.jpg, 3517, 02.jpg, 4101, 00.jpg, 3781, 03.jpg, 4520
-214, 01.jpg, 3516, 02.jpg, 4096, 00.jpg, 1152, 03.jpg, 3617
-215, 01.jpg, 3510, 02.jpg, 4102, 00.jpg, 3772, 03.jpg, 4529
-216, 01.jpg, 3500, 02.jpg, 4114, 03.jpg, 5067
-217, 01.jpg, 3493, 02.jpg, 3411, 00.jpg, 3734
-218, 01.jpg, 3489, 02.jpg, 4119, 00.jpg, 3743, 03.jpg, 4572
-219, 01.jpg, 3488, 02.jpg, 4075, 00.jpg, 3749, 03.jpg, 4499
-220, 01.jpg, 3484, 02.jpg, 3317, 00.jpg, 3746, 03.jpg, 3626
-221, 01.jpg, 3480, 02.jpg, 3295, 00.jpg, 3745, 03.jpg, 4502
-222, 01.jpg, 3472, 02.jpg, 3262, 00.jpg, 3736, 03.jpg, 3526
-223, 01.jpg, 3463, 02.jpg, 3231, 03.jpg, 1382
-224, 01.jpg, 3462, 02.jpg, 4071, 00.jpg, 3713
-225, 01.jpg, 3455, 02.jpg, 4032, 00.jpg, 3725, 03.jpg, 4430
-226, 01.jpg, 3442, 02.jpg, 4090, 00.jpg, 3676
-227, 01.jpg, 3441, 02.jpg, 4098, 00.jpg, 856, 03.jpg, 4556
-228, 01.jpg, 3440, 02.jpg, 3232, 00.jpg, 3694
-229, 01.jpg, 3438, 02.jpg, 4166
-230, 01.jpg, 3435, 02.jpg, 4073
-231, 01.jpg, 3427, 02.jpg, 4067, 00.jpg, 3662, 03.jpg, 4510
-232, 01.jpg, 3426, 02.jpg, 4060, 00.jpg, 3664, 03.jpg, 4497
-233, 01.jpg, 3417, 02.jpg, 3311, 00.jpg, 769, 03.jpg, 4532
-234, 01.jpg, 3415, 02.jpg, 4538, 00.jpg, 3655
-235, 01.jpg, 3409, 02.jpg, 3108, 00.jpg, 3681, 03.jpg, 3224
-236, 01.jpg, 3408, 02.jpg, 3109, 00.jpg, 3682, 03.jpg, 3223
-237, 01.jpg, 3402, 02.jpg, 3242, 03.jpg, 3541
-238, 01.jpg, 3394, 02.jpg, 573, 00.jpg, 3689, 03.jpg, 459
-239, 01.jpg, 3389, 02.jpg, 415, 00.jpg, 4759
-240, 01.jpg, 3384, 02.jpg, 3111, 03.jpg, 3248
-241, 01.jpg, 3383, 02.jpg, 3110, 00.jpg, 3650, 03.jpg, 3247
-242, 01.jpg, 3380, 02.jpg, 3182, 00.jpg, 744, 03.jpg, 3431
-243, 01.jpg, 3378, 02.jpg, 3230, 00.jpg, 3609, 03.jpg, 3523
-244, 01.jpg, 3377, 02.jpg, 3035, 00.jpg, 3661, 03.jpg, 640
-245, 01.jpg, 3376, 02.jpg, 3034, 00.jpg, 3660, 03.jpg, 641
-246, 01.jpg, 3373, 02.jpg, 327, 00.jpg, 3758
-247, 01.jpg, 3371, 02.jpg, 3243, 03.jpg, 3560
-248, 01.jpg, 3367, 02.jpg, 3222, 00.jpg, 3577, 03.jpg, 3521
-249, 01.jpg, 3363, 02.jpg, 2998
-250, 01.jpg, 3361, 02.jpg, 4011, 00.jpg, 3589, 03.jpg, 4433
-251, 01.jpg, 3359, 02.jpg, 805, 00.jpg, 3611, 03.jpg, 985
-252, 01.jpg, 3354, 02.jpg, 280, 00.jpg, 3750
-253, 01.jpg, 3346, 02.jpg, 3107, 03.jpg, 3280
-254, 01.jpg, 3337, 02.jpg, 691, 00.jpg, 3603
-255, 01.jpg, 3336, 02.jpg, 3061
-256, 01.jpg, 3332, 02.jpg, 662, 00.jpg, 3594
-257, 01.jpg, 3331, 02.jpg, 2847
-258, 01.jpg, 3324, 02.jpg, 4001, 00.jpg, 4663, 03.jpg, 4415
-259, 01.jpg, 3323, 02.jpg, 2989, 00.jpg, 3598, 03.jpg, 3027
-260, 01.jpg, 3303, 02.jpg, 3015, 00.jpg, 636
-261, 01.jpg, 3300, 02.jpg, 3070, 00.jpg, 3551, 03.jpg, 3207
-262, 01.jpg, 3294, 02.jpg, 295, 00.jpg, 3677, 03.jpg, 345
-263, 01.jpg, 3292, 02.jpg, 3179, 00.jpg, 537, 03.jpg, 4448
-264, 01.jpg, 3291, 02.jpg, 3129, 00.jpg, 550, 03.jpg, 3384
-265, 01.jpg, 3286, 02.jpg, 3096, 00.jpg, 561, 03.jpg, 3278
-266, 01.jpg, 3285, 02.jpg, 3095, 00.jpg, 560, 03.jpg, 3277
-267, 01.jpg, 3282, 02.jpg, 141
-268, 01.jpg, 3277, 02.jpg, 2815, 03.jpg, 2894
-269, 01.jpg, 3275, 02.jpg, 240, 00.jpg, 4722, 03.jpg, 255
-270, 01.jpg, 3262, 02.jpg, 3954, 00.jpg, 3515, 03.jpg, 4309
-271, 01.jpg, 3256, 02.jpg, 210, 00.jpg, 3648, 03.jpg, 238
-272, 01.jpg, 3236, 02.jpg, 226, 00.jpg, 3619, 03.jpg, 2895
-273, 01.jpg, 3230, 02.jpg, 3977, 00.jpg, 3457
-274, 01.jpg, 3209, 02.jpg, 475
-275, 01.jpg, 3208, 02.jpg, 473, 00.jpg, 4613
-276, 01.jpg, 3204, 02.jpg, 50
-277, 01.jpg, 3200, 02.jpg, 450, 00.jpg, 4609
-278, 01.jpg, 3185, 02.jpg, 279, 00.jpg, 4636
-279, 01.jpg, 3162, 02.jpg, 2785, 00.jpg, 3451
-280, 01.jpg, 3161, 02.jpg, 2762, 00.jpg, 3456, 03.jpg, 2952
-281, 01.jpg, 3157, 02.jpg, 2755, 00.jpg, 3454, 03.jpg, 2919
-282, 01.jpg, 3125, 02.jpg, 2724, 00.jpg, 3425
-283, 01.jpg, 3105, 02.jpg, 2732, 00.jpg, 3413
-284, 01.jpg, 3092, 02.jpg, 534, 00.jpg, 3293
-285, 01.jpg, 3034, 02.jpg, 2698
-286, 01.jpg, 2992, 02.jpg, 2780, 00.jpg, 3263
-287, 01.jpg, 2949, 02.jpg, 2325, 00.jpg, 3187
-288, 01.jpg, 2941, 02.jpg, 2253
-289, 01.jpg, 2940, 02.jpg, 2252, 00.jpg, 3194
-290, 01.jpg, 2937, 02.jpg, 1978
-291, 01.jpg, 2932, 02.jpg, 2255, 00.jpg, 3178
-292, 01.jpg, 2926, 02.jpg, 2074
-293, 01.jpg, 2858, 02.jpg, 2623
-294, 01.jpg, 2853, 02.jpg, 2230, 00.jpg, 3075
-295, 01.jpg, 2815, 02.jpg, 2628
-296, 01.jpg, 2774, 02.jpg, 2219, 00.jpg, 2969
-297, 01.jpg, 2758, 02.jpg, 2213, 00.jpg, 4357, 03.jpg, 1779
-298, 01.jpg, 2736, 02.jpg, 2161
-299, 01.jpg, 2729, 02.jpg, 2127, 00.jpg, 2910
-300, 01.jpg, 2722, 02.jpg, 1740, 00.jpg, 2976
-301, 01.jpg, 2718, 02.jpg, 2605, 00.jpg, 2830, 03.jpg, 2490
-302, 01.jpg, 2710, 02.jpg, 2119
-303, 01.jpg, 2709, 02.jpg, 2118, 00.jpg, 2882
-304, 01.jpg, 2696, 02.jpg, 1731, 00.jpg, 4362
-305, 01.jpg, 2691, 02.jpg, 2208, 00.jpg, 2851
-306, 01.jpg, 2688, 02.jpg, 2155
-307, 01.jpg, 2687, 02.jpg, 2156, 00.jpg, 4326
-308, 01.jpg, 2670, 02.jpg, 1680
-309, 01.jpg, 2663, 02.jpg, 2016, 00.jpg, 2859
-310, 01.jpg, 2662, 02.jpg, 2015, 00.jpg, 2858
-311, 01.jpg, 2661, 02.jpg, 2286, 00.jpg, 2801
-312, 01.jpg, 2660, 02.jpg, 2190
-313, 01.jpg, 2651, 02.jpg, 1964
-314, 01.jpg, 2647, 02.jpg, 1998, 00.jpg, 2842
-315, 01.jpg, 2636, 02.jpg, 2197, 00.jpg, 2791
-316, 01.jpg, 2634, 02.jpg, 2130, 00.jpg, 2806
-317, 01.jpg, 2629, 02.jpg, 2075, 00.jpg, 2816
-318, 01.jpg, 2625, 02.jpg, 2082, 00.jpg, 2798
-319, 01.jpg, 2621, 02.jpg, 2145, 00.jpg, 2775
-320, 01.jpg, 2616, 02.jpg, 2291, 00.jpg, 4276
-321, 01.jpg, 2614, 02.jpg, 2321, 03.jpg, 2007
-322, 01.jpg, 2612, 02.jpg, 2113, 00.jpg, 2771
-323, 01.jpg, 2587, 02.jpg, 2582, 00.jpg, 2674
-324, 01.jpg, 2578, 02.jpg, 2282
-325, 01.jpg, 2560, 02.jpg, 1638, 00.jpg, 2809
-326, 01.jpg, 2556, 02.jpg, 2000, 00.jpg, 2724, 03.jpg, 1642
-327, 01.jpg, 2555, 02.jpg, 1999, 00.jpg, 2723, 03.jpg, 1641
-328, 01.jpg, 2518, 02.jpg, 2114
-329, 01.jpg, 2512, 02.jpg, 2238
-330, 01.jpg, 2510, 02.jpg, 1909, 00.jpg, 2702
-331, 01.jpg, 4562, 02.jpg, 4149
-332, 01.jpg, 4570, 02.jpg, 3406, 00.jpg, 4214
-333, 01.jpg, 44, 02.jpg, 111
-334, 01.jpg, 4571, 02.jpg, 4191
-335, 01.jpg, 79, 02.jpg, 2757
-336, 01.jpg, 4576, 02.jpg, 3378, 03.jpg, 1330
-337, 01.jpg, 148, 02.jpg, 202
-338, 01.jpg, 4580, 02.jpg, 3417, 00.jpg, 4990, 03.jpg, 3477
-339, 01.jpg, 161, 02.jpg, 346, 00.jpg, 121
-340, 01.jpg, 4591, 02.jpg, 4181, 00.jpg, 5018
-341, 01.jpg, 207, 02.jpg, 56
-342, 01.jpg, 4594, 02.jpg, 4196, 00.jpg, 5019, 03.jpg, 3571
-343, 01.jpg, 238, 02.jpg, 650
-344, 01.jpg, 4599, 02.jpg, 4211, 00.jpg, 5020, 03.jpg, 3596
-345, 01.jpg, 255, 02.jpg, 106
-346, 01.jpg, 4614, 02.jpg, 3549, 03.jpg, 1706
-347, 01.jpg, 298, 02.jpg, 505
-348, 01.jpg, 4621, 02.jpg, 1513, 00.jpg, 5487
-349, 01.jpg, 366, 02.jpg, 570
-350, 01.jpg, 4625, 02.jpg, 3561, 00.jpg, 4338
-351, 01.jpg, 393, 02.jpg, 563, 00.jpg, 306
-352, 01.jpg, 4643, 02.jpg, 1243
-353, 01.jpg, 405, 02.jpg, 2811, 03.jpg, 2994
-354, 01.jpg, 4665, 02.jpg, 4242, 03.jpg, 4507
-355, 01.jpg, 407, 02.jpg, 264, 00.jpg, 3483, 03.jpg, 3008
-356, 01.jpg, 4721, 02.jpg, 4453
-357, 01.jpg, 421, 02.jpg, 267, 00.jpg, 479, 03.jpg, 3001
-358, 01.jpg, 4726, 02.jpg, 4466
-359, 01.jpg, 428, 02.jpg, 83
-360, 01.jpg, 4748, 02.jpg, 4353, 00.jpg, 5593
-361, 01.jpg, 502, 02.jpg, 30
-362, 01.jpg, 4757, 02.jpg, 4440, 00.jpg, 5154, 03.jpg, 4889
-363, 01.jpg, 524, 02.jpg, 3020, 03.jpg, 3171
-364, 01.jpg, 4764, 02.jpg, 3765
-365, 01.jpg, 555, 02.jpg, 3051, 00.jpg, 3488, 03.jpg, 3221
-366, 01.jpg, 4776, 02.jpg, 3898, 00.jpg, 5181, 03.jpg, 3044
-367, 01.jpg, 556, 02.jpg, 3052, 00.jpg, 3489
-368, 01.jpg, 4783, 02.jpg, 4850, 00.jpg, 4615, 03.jpg, 5371
-369, 01.jpg, 566, 02.jpg, 3166, 03.jpg, 3476
-370, 01.jpg, 4788, 02.jpg, 4857, 00.jpg, 5178, 03.jpg, 5594
-371, 01.jpg, 588, 02.jpg, 668, 00.jpg, 535
-372, 01.jpg, 4795, 02.jpg, 4837, 00.jpg, 5200, 03.jpg, 5319
-373, 01.jpg, 596, 02.jpg, 854, 03.jpg, 3407
-374, 01.jpg, 4804, 02.jpg, 4835, 00.jpg, 5616, 03.jpg, 5315
-375, 01.jpg, 602, 02.jpg, 690, 03.jpg, 840
-376, 01.jpg, 4805, 02.jpg, 4494, 00.jpg, 5216, 03.jpg, 4927
-377, 01.jpg, 610, 02.jpg, 626
-378, 01.jpg, 4806, 02.jpg, 4849, 00.jpg, 5213, 03.jpg, 5353
-379, 01.jpg, 612, 02.jpg, 694, 00.jpg, 570, 03.jpg, 857
-380, 01.jpg, 4808, 02.jpg, 4395
-381, 01.jpg, 641, 02.jpg, 3017, 00.jpg, 3567, 03.jpg, 644
-382, 01.jpg, 4817, 02.jpg, 4860, 03.jpg, 5368
-383, 01.jpg, 642, 02.jpg, 3039
-384, 01.jpg, 4824, 02.jpg, 4548, 00.jpg, 4683, 03.jpg, 5048
-385, 01.jpg, 645, 02.jpg, 1010, 03.jpg, 1413
-386, 01.jpg, 4825, 02.jpg, 4463, 00.jpg, 5644, 03.jpg, 4854
-387, 01.jpg, 648, 02.jpg, 718, 00.jpg, 631
-388, 01.jpg, 4827, 02.jpg, 4847, 00.jpg, 5638, 03.jpg, 4929
-389, 01.jpg, 649, 02.jpg, 761, 03.jpg, 937
-390, 01.jpg, 4831, 02.jpg, 3876, 00.jpg, 5278
-391, 01.jpg, 650, 02.jpg, 762, 03.jpg, 938
-392, 01.jpg, 4832, 02.jpg, 4500, 03.jpg, 4924
-393, 01.jpg, 657, 02.jpg, 680, 00.jpg, 668
-394, 01.jpg, 4833, 02.jpg, 3988, 00.jpg, 5241, 03.jpg, 4354
-395, 01.jpg, 670, 02.jpg, 763, 03.jpg, 931
-396, 01.jpg, 4849, 02.jpg, 4604, 00.jpg, 4712, 03.jpg, 5122
-397, 01.jpg, 677, 02.jpg, 822, 00.jpg, 641, 03.jpg, 1073
-398, 01.jpg, 4850, 02.jpg, 4571, 00.jpg, 4718
-399, 01.jpg, 678, 02.jpg, 843, 00.jpg, 642, 03.jpg, 1103
-400, 01.jpg, 4856, 02.jpg, 4540, 00.jpg, 5272, 03.jpg, 4999
-401, 01.jpg, 687, 02.jpg, 981, 00.jpg, 617, 03.jpg, 1342
-402, 01.jpg, 4858, 02.jpg, 5117, 03.jpg, 5630
-403, 01.jpg, 690, 02.jpg, 3132, 00.jpg, 3569, 03.jpg, 3357
-404, 01.jpg, 4866, 02.jpg, 4024
-405, 01.jpg, 692, 02.jpg, 316
-406, 01.jpg, 4869, 02.jpg, 4928
-407, 01.jpg, 696, 02.jpg, 1004, 03.jpg, 1367
-408, 01.jpg, 4881, 02.jpg, 4542, 03.jpg, 4992
-409, 01.jpg, 697, 02.jpg, 1005
-410, 01.jpg, 4895, 02.jpg, 4942, 00.jpg, 5296, 03.jpg, 5649
-411, 01.jpg, 699, 02.jpg, 1237, 03.jpg, 3675
-412, 01.jpg, 4897, 02.jpg, 4550, 00.jpg, 5308, 03.jpg, 4460
-413, 01.jpg, 706, 02.jpg, 655, 00.jpg, 713, 03.jpg, 693
-414, 01.jpg, 4901, 02.jpg, 4576, 00.jpg, 5312
-415, 01.jpg, 707, 02.jpg, 1069, 00.jpg, 624, 03.jpg, 1462
-416, 01.jpg, 4905, 02.jpg, 4541, 00.jpg, 5319, 03.jpg, 4951
-417, 01.jpg, 715, 02.jpg, 1051
-418, 01.jpg, 4906, 02.jpg, 4023, 00.jpg, 5325
-419, 01.jpg, 725, 02.jpg, 1003, 00.jpg, 660, 03.jpg, 3458
-420, 01.jpg, 4916, 02.jpg, 4549, 00.jpg, 5341, 03.jpg, 4416
-421, 01.jpg, 727, 02.jpg, 3266, 00.jpg, 613, 03.jpg, 3656
-422, 01.jpg, 4917, 02.jpg, 4606, 00.jpg, 5334, 03.jpg, 5039
-423, 01.jpg, 732, 02.jpg, 913, 00.jpg, 688
-424, 01.jpg, 4921, 02.jpg, 4583
-425, 01.jpg, 743, 02.jpg, 3044, 03.jpg, 3133
-426, 01.jpg, 4925, 02.jpg, 4570, 00.jpg, 5346, 03.jpg, 4453
-427, 01.jpg, 745, 02.jpg, 891, 00.jpg, 698, 03.jpg, 1157
-428, 01.jpg, 4926, 02.jpg, 4946, 00.jpg, 5342
-429, 01.jpg, 756, 02.jpg, 575
-430, 01.jpg, 4927, 02.jpg, 4602, 00.jpg, 5348
-431, 01.jpg, 757, 02.jpg, 816
-432, 01.jpg, 4932, 02.jpg, 4626, 00.jpg, 5357
-433, 01.jpg, 765, 02.jpg, 1029, 00.jpg, 701
-434, 01.jpg, 4986, 02.jpg, 4182
-435, 01.jpg, 767, 02.jpg, 3128, 00.jpg, 743
-436, 01.jpg, 4987, 02.jpg, 4162, 00.jpg, 5423, 03.jpg, 4464
-437, 01.jpg, 773, 02.jpg, 769, 00.jpg, 775
-438, 01.jpg, 4992, 02.jpg, 4623, 00.jpg, 5416, 03.jpg, 4498
-439, 01.jpg, 780, 02.jpg, 3220, 00.jpg, 703, 03.jpg, 3511
-440, 01.jpg, 5169, 02.jpg, 5079, 00.jpg, 5620, 03.jpg, 5588
-441, 01.jpg, 787, 02.jpg, 1073, 00.jpg, 725, 03.jpg, 1416
-442, 01.jpg, 5170, 02.jpg, 5080, 00.jpg, 5621
-443, 01.jpg, 788, 02.jpg, 3216, 00.jpg, 3617, 03.jpg, 3498
-444, 01.jpg, 5172, 02.jpg, 5085, 00.jpg, 5624, 03.jpg, 5593
-445, 01.jpg, 797, 02.jpg, 855, 00.jpg, 781, 03.jpg, 1049
-446, 01.jpg, 5181, 02.jpg, 4848
-447, 01.jpg, 799, 02.jpg, 1139, 00.jpg, 717, 03.jpg, 1534
-448, 01.jpg, 5183, 02.jpg, 4554, 00.jpg, 5637
-449, 01.jpg, 804, 02.jpg, 819, 03.jpg, 961
-450, 01.jpg, 5184, 02.jpg, 5084
-451, 01.jpg, 806, 02.jpg, 649, 00.jpg, 846
-452, 01.jpg, 5192, 02.jpg, 4874, 00.jpg, 5658, 03.jpg, 5367
-453, 01.jpg, 807, 02.jpg, 1035, 00.jpg, 745
-454, 01.jpg, 5194, 02.jpg, 4506, 00.jpg, 5661, 03.jpg, 4918
-455, 01.jpg, 811, 02.jpg, 603
-456, 01.jpg, 5195, 02.jpg, 4890, 03.jpg, 5388
-457, 01.jpg, 812, 02.jpg, 604
-458, 01.jpg, 5197, 02.jpg, 4863, 00.jpg, 5664, 03.jpg, 5343
-459, 01.jpg, 827, 02.jpg, 1106, 03.jpg, 1452
-460, 01.jpg, 5201, 02.jpg, 4888
-461, 01.jpg, 828, 02.jpg, 1107, 03.jpg, 1453
-462, 01.jpg, 5205, 02.jpg, 4895, 03.jpg, 5395
-463, 01.jpg, 831, 02.jpg, 720, 00.jpg, 853
-464, 01.jpg, 5206, 02.jpg, 5112, 00.jpg, 5273, 03.jpg, 5627
-465, 01.jpg, 841, 02.jpg, 3305, 00.jpg, 722, 03.jpg, 1934
-466, 01.jpg, 5215, 02.jpg, 4897, 00.jpg, 5671
-467, 01.jpg, 842, 02.jpg, 1117, 00.jpg, 765, 03.jpg, 1472
-468, 01.jpg, 5231, 02.jpg, 5111, 03.jpg, 5607
-469, 01.jpg, 844, 02.jpg, 887, 00.jpg, 3658
-470, 01.jpg, 5236, 02.jpg, 5116, 00.jpg, 5703, 03.jpg, 5612
-471, 01.jpg, 848, 02.jpg, 3148, 00.jpg, 837, 03.jpg, 3334
-472, 01.jpg, 5240, 02.jpg, 4514, 00.jpg, 5712
-473, 01.jpg, 851, 02.jpg, 1042, 00.jpg, 808, 03.jpg, 1335
-474, 01.jpg, 5241, 02.jpg, 4907, 00.jpg, 5706, 03.jpg, 5396
-475, 01.jpg, 862, 02.jpg, 710, 00.jpg, 906
-476, 01.jpg, 5245, 02.jpg, 4916, 00.jpg, 5320, 03.jpg, 5030
-477, 01.jpg, 873, 02.jpg, 1048, 03.jpg, 1336
-478, 01.jpg, 5246, 02.jpg, 4931, 03.jpg, 5421
-479, 01.jpg, 874, 02.jpg, 1085, 00.jpg, 823
-480, 01.jpg, 5247, 02.jpg, 4886, 00.jpg, 5717, 03.jpg, 5337
-481, 01.jpg, 903, 02.jpg, 811, 00.jpg, 928
-482, 01.jpg, 5248, 02.jpg, 4879, 00.jpg, 5719, 03.jpg, 4932
-483, 01.jpg, 905, 02.jpg, 1236, 00.jpg, 816, 03.jpg, 1694
-484, 01.jpg, 5250, 02.jpg, 4876, 00.jpg, 5721
-485, 01.jpg, 914, 02.jpg, 909, 00.jpg, 913
-486, 01.jpg, 5254, 02.jpg, 4881, 03.jpg, 4930
-487, 01.jpg, 915, 02.jpg, 1041, 00.jpg, 886, 03.jpg, 1302
-488, 01.jpg, 5255, 02.jpg, 4896, 00.jpg, 5957, 03.jpg, 5354
-489, 01.jpg, 923, 02.jpg, 814, 00.jpg, 963
-490, 01.jpg, 5260, 02.jpg, 4929, 00.jpg, 5728, 03.jpg, 5038
-491, 01.jpg, 924, 02.jpg, 815, 00.jpg, 964
-492, 01.jpg, 5261, 02.jpg, 4930
-493, 01.jpg, 925, 02.jpg, 836, 03.jpg, 925
-494, 01.jpg, 5262, 02.jpg, 5128, 00.jpg, 5730
-495, 01.jpg, 926, 02.jpg, 837, 03.jpg, 924
-496, 01.jpg, 5267, 02.jpg, 4940, 00.jpg, 5731, 03.jpg, 5065
-497, 01.jpg, 932, 02.jpg, 905, 00.jpg, 938, 03.jpg, 1064
-498, 01.jpg, 5270, 02.jpg, 4913, 00.jpg, 5741, 03.jpg, 5377
-499, 01.jpg, 937, 02.jpg, 1100, 00.jpg, 898, 03.jpg, 1383
-500, 01.jpg, 5272, 02.jpg, 4933, 03.jpg, 5402
-501, 01.jpg, 954, 02.jpg, 949, 00.jpg, 966
-502, 01.jpg, 5276, 02.jpg, 4903
-503, 01.jpg, 955, 02.jpg, 1071, 00.jpg, 929, 03.jpg, 1331
-504, 01.jpg, 5277, 02.jpg, 4610, 03.jpg, 5022
-505, 01.jpg, 961, 02.jpg, 1281, 00.jpg, 878
-506, 01.jpg, 5285, 02.jpg, 4918, 00.jpg, 5979, 03.jpg, 5370
-507, 01.jpg, 978, 02.jpg, 1299, 00.jpg, 908, 03.jpg, 1751
-508, 01.jpg, 5287, 02.jpg, 4593, 00.jpg, 5761
-509, 01.jpg, 986, 02.jpg, 1317, 00.jpg, 914, 03.jpg, 1785
-510, 01.jpg, 5298, 02.jpg, 4600, 00.jpg, 5777, 03.jpg, 4439
-511, 01.jpg, 989, 02.jpg, 911, 00.jpg, 1035, 03.jpg, 1032
-512, 01.jpg, 5315, 02.jpg, 4647, 00.jpg, 5804, 03.jpg, 5034
-513, 01.jpg, 990, 02.jpg, 959, 00.jpg, 1019, 03.jpg, 1098
-514, 01.jpg, 5414, 02.jpg, 5261, 00.jpg, 5603, 03.jpg, 5770
-515, 01.jpg, 993, 02.jpg, 900
-516, 01.jpg, 5416, 02.jpg, 4830, 00.jpg, 5900
-517, 01.jpg, 994, 02.jpg, 1201, 00.jpg, 968
-518, 01.jpg, 5422, 02.jpg, 5244, 00.jpg, 5909, 03.jpg, 5569
-519, 01.jpg, 997, 02.jpg, 3450
-520, 01.jpg, 5426, 02.jpg, 5076, 00.jpg, 5917, 03.jpg, 5573
-521, 01.jpg, 1000, 02.jpg, 886, 00.jpg, 1059, 03.jpg, 959
-522, 01.jpg, 5437, 02.jpg, 5265, 00.jpg, 5919, 03.jpg, 5762
-523, 01.jpg, 1008, 02.jpg, 3312, 03.jpg, 3633
-524, 01.jpg, 5459, 02.jpg, 5090, 00.jpg, 5943, 03.jpg, 5334
-525, 01.jpg, 1021, 02.jpg, 1228, 00.jpg, 995, 03.jpg, 1555
-526, 01.jpg, 5463, 02.jpg, 5095, 00.jpg, 5949, 03.jpg, 5351
-527, 01.jpg, 1029, 02.jpg, 3291, 00.jpg, 992, 03.jpg, 3602
-528, 01.jpg, 5464, 02.jpg, 5125, 00.jpg, 5947, 03.jpg, 5615
-529, 01.jpg, 1031, 02.jpg, 1099, 00.jpg, 1047, 03.jpg, 1323
-530, 01.jpg, 5467, 02.jpg, 4915, 00.jpg, 5948, 03.jpg, 5397
-531, 01.jpg, 1039, 02.jpg, 3255, 00.jpg, 1028, 03.jpg, 3516
-532, 01.jpg, 5469, 02.jpg, 4880, 00.jpg, 5956, 03.jpg, 5326
-533, 01.jpg, 1041, 02.jpg, 1262, 03.jpg, 1606
-534, 01.jpg, 5472, 02.jpg, 5106, 00.jpg, 5960
-535, 01.jpg, 1044, 02.jpg, 1081, 00.jpg, 1067
-536, 01.jpg, 5478, 02.jpg, 5137, 00.jpg, 5961, 03.jpg, 5622
-537, 01.jpg, 1046, 02.jpg, 1289, 00.jpg, 3728, 03.jpg, 1671
-538, 01.jpg, 5479, 02.jpg, 5119, 00.jpg, 5733, 03.jpg, 5378
-539, 01.jpg, 1052, 02.jpg, 3267, 00.jpg, 1029
-540, 01.jpg, 5480, 02.jpg, 3202, 00.jpg, 5971
-541, 01.jpg, 1065, 02.jpg, 1370, 00.jpg, 1014, 03.jpg, 3646
-542, 01.jpg, 5482, 02.jpg, 4919, 00.jpg, 5737, 03.jpg, 5386
-543, 01.jpg, 1073, 02.jpg, 1198, 03.jpg, 1471
-544, 01.jpg, 5483, 02.jpg, 5132, 00.jpg, 5735, 03.jpg, 5400
-545, 01.jpg, 1074, 02.jpg, 1400, 00.jpg, 1020, 03.jpg, 1856
-546, 01.jpg, 5484, 02.jpg, 5133, 00.jpg, 5734, 03.jpg, 5399
-547, 01.jpg, 1075, 02.jpg, 3454, 00.jpg, 957, 03.jpg, 4634
-548, 01.jpg, 5485, 02.jpg, 5141, 00.jpg, 5966, 03.jpg, 5619
-549, 01.jpg, 1084, 02.jpg, 1469, 00.jpg, 1017
-550, 01.jpg, 5486, 02.jpg, 5142, 00.jpg, 5967
-551, 01.jpg, 1092, 02.jpg, 1061, 00.jpg, 1109, 03.jpg, 1232
-552, 01.jpg, 5488, 02.jpg, 5115, 00.jpg, 5973, 03.jpg, 5366
-553, 01.jpg, 1100, 02.jpg, 904, 00.jpg, 1149
-554, 01.jpg, 5494, 02.jpg, 5152
-555, 01.jpg, 1115, 02.jpg, 3300, 00.jpg, 3756, 03.jpg, 3587
-556, 01.jpg, 5499, 02.jpg, 5143, 00.jpg, 5975, 03.jpg, 5407
-557, 01.jpg, 1121, 02.jpg, 3341, 00.jpg, 1062, 03.jpg, 3672
-558, 01.jpg, 5500, 02.jpg, 5113, 00.jpg, 5981, 03.jpg, 5355
-559, 01.jpg, 1124, 02.jpg, 1024, 03.jpg, 1145
-560, 01.jpg, 5504, 02.jpg, 4921
-561, 01.jpg, 1137, 02.jpg, 3313, 00.jpg, 1104, 03.jpg, 3599
-562, 01.jpg, 5514, 02.jpg, 5158, 00.jpg, 5998, 03.jpg, 5618
-563, 01.jpg, 1151, 02.jpg, 3343, 00.jpg, 1103, 03.jpg, 1859
-564, 01.jpg, 5520, 02.jpg, 5131, 00.jpg, 6007, 03.jpg, 4978
-565, 01.jpg, 1152, 02.jpg, 3360, 00.jpg, 1090, 03.jpg, 3713
-566, 01.jpg, 5557, 02.jpg, 5021, 00.jpg, 6054
-567, 01.jpg, 1160, 02.jpg, 3280, 03.jpg, 1537
-568, 01.jpg, 5560, 02.jpg, 5020
-569, 01.jpg, 1162, 02.jpg, 1398, 00.jpg, 1114
-570, 01.jpg, 5571, 02.jpg, 5356, 03.jpg, 5879
-571, 01.jpg, 1172, 02.jpg, 1122, 00.jpg, 1177
-572, 01.jpg, 5578, 02.jpg, 5251, 00.jpg, 6055, 03.jpg, 5754
-573, 01.jpg, 1184, 02.jpg, 1812, 00.jpg, 1076, 03.jpg, 3850
-574, 01.jpg, 5579, 02.jpg, 5437, 00.jpg, 6057, 03.jpg, 5957
-575, 01.jpg, 1201, 02.jpg, 1251, 00.jpg, 1182
-576, 01.jpg, 5583, 02.jpg, 5355, 00.jpg, 6062, 03.jpg, 5875
-577, 01.jpg, 1204, 02.jpg, 985, 00.jpg, 1256
-578, 01.jpg, 5584, 02.jpg, 5242, 00.jpg, 6064, 03.jpg, 5733
-579, 01.jpg, 1210, 02.jpg, 1308, 03.jpg, 1569
-580, 01.jpg, 5585, 02.jpg, 5243, 00.jpg, 6065, 03.jpg, 5734
-581, 01.jpg, 1211, 02.jpg, 1274, 03.jpg, 1520
-582, 01.jpg, 5587, 02.jpg, 5259, 00.jpg, 5901, 03.jpg, 5758
-583, 01.jpg, 1212, 02.jpg, 1288, 00.jpg, 1203, 03.jpg, 1533
-584, 01.jpg, 5589, 02.jpg, 5245, 00.jpg, 6066, 03.jpg, 5732
-585, 01.jpg, 1213, 02.jpg, 1323
-586, 01.jpg, 5596, 02.jpg, 5250, 00.jpg, 6071, 03.jpg, 5743
-587, 01.jpg, 1215, 02.jpg, 3356, 00.jpg, 1160, 03.jpg, 3687
-588, 01.jpg, 5597, 02.jpg, 5369, 00.jpg, 6070, 03.jpg, 5889
-589, 01.jpg, 1217, 02.jpg, 1472, 03.jpg, 1858
-590, 01.jpg, 5600, 02.jpg, 5257, 03.jpg, 5744
-591, 01.jpg, 1229, 02.jpg, 1115
-592, 01.jpg, 5603, 02.jpg, 5360, 00.jpg, 6080
-593, 01.jpg, 1232, 02.jpg, 3319, 03.jpg, 3563
-594, 01.jpg, 5606, 02.jpg, 5263, 00.jpg, 5930, 03.jpg, 5751
-595, 01.jpg, 1236, 02.jpg, 1268
-596, 01.jpg, 5612, 02.jpg, 5284, 00.jpg, 6093, 03.jpg, 5780
-597, 01.jpg, 1248, 02.jpg, 3438, 00.jpg, 1227, 03.jpg, 3772
-598, 01.jpg, 5615, 02.jpg, 5275, 00.jpg, 6102, 03.jpg, 5763
-599, 01.jpg, 1249, 02.jpg, 1036, 00.jpg, 1326
-600, 01.jpg, 5621, 02.jpg, 5279, 00.jpg, 6105, 03.jpg, 5768
-601, 01.jpg, 1250, 02.jpg, 3447, 00.jpg, 1219, 03.jpg, 3795
-602, 01.jpg, 5625, 02.jpg, 5289, 00.jpg, 6110, 03.jpg, 5778
-603, 01.jpg, 1264, 02.jpg, 3485, 00.jpg, 1232
-604, 01.jpg, 5627, 02.jpg, 5278, 00.jpg, 6119, 03.jpg, 5591
-605, 01.jpg, 1265, 02.jpg, 1001, 00.jpg, 1362
-606, 01.jpg, 5633, 02.jpg, 5108, 00.jpg, 6124, 03.jpg, 5584
-607, 01.jpg, 1266, 02.jpg, 1002
-608, 01.jpg, 5638, 02.jpg, 5382, 00.jpg, 6126, 03.jpg, 5888
-609, 01.jpg, 1280, 02.jpg, 1928, 03.jpg, 2342
-610, 01.jpg, 5641, 02.jpg, 5136, 00.jpg, 6127
-611, 01.jpg, 1316, 02.jpg, 1571, 03.jpg, 1876
-612, 01.jpg, 5646, 02.jpg, 5299, 00.jpg, 6134, 03.jpg, 5781
-613, 01.jpg, 1319, 02.jpg, 1026
-614, 02.jpg, 5196, 00.jpg, 6174
-615, 01.jpg, 1333, 02.jpg, 1355, 00.jpg, 1389, 03.jpg, 1499
-616, 01.jpg, 5691, 02.jpg, 5345, 03.jpg, 5864
-617, 01.jpg, 1335, 02.jpg, 1584, 00.jpg, 1357, 03.jpg, 1864
-618, 01.jpg, 5694, 02.jpg, 5446, 00.jpg, 6197, 03.jpg, 5963
-619, 01.jpg, 1339, 02.jpg, 1096, 00.jpg, 1459, 03.jpg, 1089
-620, 01.jpg, 5696, 02.jpg, 5361, 00.jpg, 6200, 03.jpg, 5880
-621, 01.jpg, 1340, 02.jpg, 1097
-622, 01.jpg, 5711, 02.jpg, 5282, 00.jpg, 6221
-623, 01.jpg, 1342, 02.jpg, 1566
-624, 01.jpg, 5717, 02.jpg, 5285, 00.jpg, 6225, 03.jpg, 5759
-625, 01.jpg, 1344, 02.jpg, 1369, 00.jpg, 1406, 03.jpg, 1519
-626, 01.jpg, 5720, 02.jpg, 5375, 00.jpg, 6228, 03.jpg, 5764
-627, 01.jpg, 1348, 02.jpg, 2178, 03.jpg, 3992
-628, 01.jpg, 5754, 02.jpg, 5428, 00.jpg, 6260, 03.jpg, 5941
-629, 01.jpg, 1355, 02.jpg, 1413, 03.jpg, 1566
-630, 01.jpg, 5755, 02.jpg, 5485, 00.jpg, 6193, 03.jpg, 5947
-631, 01.jpg, 1357, 02.jpg, 1894, 00.jpg, 1354, 03.jpg, 2223
-632, 01.jpg, 5763, 02.jpg, 5436, 00.jpg, 6270, 03.jpg, 5946
-633, 01.jpg, 1364, 02.jpg, 1854, 00.jpg, 1368, 03.jpg, 2175
-634, 01.jpg, 5765, 02.jpg, 5445, 00.jpg, 6272, 03.jpg, 5955
-635, 01.jpg, 1369, 02.jpg, 1173
-636, 01.jpg, 5770, 02.jpg, 5444, 00.jpg, 6274
-637, 01.jpg, 1400, 02.jpg, 1485, 00.jpg, 1461
-638, 01.jpg, 5771, 02.jpg, 5443, 00.jpg, 6275, 03.jpg, 5950
-639, 01.jpg, 1404, 02.jpg, 1865, 03.jpg, 2157
-640, 01.jpg, 5775, 02.jpg, 5442, 00.jpg, 6281
-641, 01.jpg, 1407, 02.jpg, 1914, 00.jpg, 1414, 03.jpg, 2208
-642, 01.jpg, 5777, 02.jpg, 5455, 03.jpg, 5884
-643, 01.jpg, 1416, 02.jpg, 1489, 00.jpg, 1474, 03.jpg, 1636
-644, 01.jpg, 5779, 02.jpg, 5372, 00.jpg, 6288, 03.jpg, 5752
-645, 01.jpg, 1418, 02.jpg, 1975, 00.jpg, 1415, 03.jpg, 2251
-646, 01.jpg, 5780, 02.jpg, 5380, 00.jpg, 6286, 03.jpg, 5885
-647, 01.jpg, 1434, 02.jpg, 1172, 00.jpg, 1554
-648, 01.jpg, 5781, 02.jpg, 5456, 00.jpg, 6289, 03.jpg, 5881
-649, 01.jpg, 1435, 02.jpg, 1171, 00.jpg, 1555
-650, 01.jpg, 5821, 02.jpg, 5359, 00.jpg, 6321
-651, 01.jpg, 1437, 02.jpg, 1136
-652, 01.jpg, 5828, 02.jpg, 5440, 00.jpg, 6327
-653, 01.jpg, 1442, 02.jpg, 1043, 00.jpg, 1634
-654, 01.jpg, 5831, 02.jpg, 5452, 03.jpg, 5952
-655, 01.jpg, 1443, 02.jpg, 1170, 00.jpg, 1573
-656, 02.jpg, 5510, 00.jpg, 6341
-657, 01.jpg, 1448, 02.jpg, 1443
-658, 01.jpg, 5845, 02.jpg, 5546, 00.jpg, 6342
-659, 01.jpg, 1449, 02.jpg, 1442
-660, 01.jpg, 5849, 02.jpg, 5519, 00.jpg, 6345
-661, 01.jpg, 1455, 02.jpg, 1832, 00.jpg, 1470, 03.jpg, 2096
-662, 01.jpg, 5857, 02.jpg, 5524, 00.jpg, 6355, 03.jpg, 6038
-663, 01.jpg, 1456, 02.jpg, 1126, 00.jpg, 1613
-664, 01.jpg, 3813, 00.jpg, 4124, 03.jpg, 3731
-665, 01.jpg, 1834, 02.jpg, 1721, 03.jpg, 1675
-666, 02.jpg, 3426, 00.jpg, 4142, 03.jpg, 1492
-667, 01.jpg, 1835, 02.jpg, 1720, 03.jpg, 1676
-668, 01.jpg, 4558, 00.jpg, 4162, 03.jpg, 1549
-669, 01.jpg, 1841, 02.jpg, 3532, 00.jpg, 1875, 03.jpg, 2087
-670, 01.jpg, 3876, 02.jpg, 2132, 00.jpg, 4187
-671, 01.jpg, 1843, 02.jpg, 2496
-672, 01.jpg, 3883, 00.jpg, 4248, 03.jpg, 1334
-673, 01.jpg, 1844, 02.jpg, 1257, 00.jpg, 2049
-674, 01.jpg, 3918, 00.jpg, 4266, 03.jpg, 1627
-675, 01.jpg, 1845, 02.jpg, 1391, 00.jpg, 2015
-676, 02.jpg, 3587, 00.jpg, 4339, 03.jpg, 1818
-677, 01.jpg, 1847, 02.jpg, 1920, 00.jpg, 1914
-678, 01.jpg, 3994, 02.jpg, 2203, 00.jpg, 4346
-679, 01.jpg, 1848, 02.jpg, 1921, 00.jpg, 1915
-680, 01.jpg, 4009, 00.jpg, 4363, 03.jpg, 1796
-681, 01.jpg, 1857, 02.jpg, 1383, 03.jpg, 1296
-682, 01.jpg, 4153, 00.jpg, 4531, 03.jpg, 4294
-683, 01.jpg, 1859, 02.jpg, 1477, 00.jpg, 1997
-684, 01.jpg, 4311, 00.jpg, 4669, 03.jpg, 5405
-685, 01.jpg, 1863, 02.jpg, 1906, 00.jpg, 1927, 03.jpg, 1879
-686, 01.jpg, 4274, 00.jpg, 4703, 03.jpg, 2922
-687, 01.jpg, 1865, 02.jpg, 2501, 00.jpg, 1866
-688, 02.jpg, 4079, 00.jpg, 4733, 03.jpg, 4515
-689, 01.jpg, 1866, 02.jpg, 1550, 00.jpg, 1987
-690, 01.jpg, 4347, 00.jpg, 4735, 03.jpg, 4454
-691, 01.jpg, 1871, 02.jpg, 1735, 00.jpg, 1967, 03.jpg, 1683
-692, 01.jpg, 3360, 02.jpg, 2864, 00.jpg, 4744
-693, 01.jpg, 1888, 02.jpg, 1438
-694, 01.jpg, 4363, 00.jpg, 4765, 03.jpg, 4406
-695, 01.jpg, 1896, 02.jpg, 1428, 00.jpg, 2067
-696, 01.jpg, 4362, 00.jpg, 4766, 03.jpg, 4389
-697, 01.jpg, 1909, 02.jpg, 1626, 00.jpg, 2032, 03.jpg, 1523
-698, 02.jpg, 4595, 00.jpg, 4791, 03.jpg, 5416
-699, 01.jpg, 1911, 02.jpg, 3373, 00.jpg, 4075
-700, 01.jpg, 4493, 00.jpg, 4880, 03.jpg, 4535, 02.jpg, 4612
-701, 01.jpg, 1916, 02.jpg, 1598
-702, 01.jpg, 4494, 00.jpg, 4881, 03.jpg, 4536
-703, 01.jpg, 1919, 02.jpg, 1396
-704, 02.jpg, 4615, 00.jpg, 4887, 03.jpg, 4534
-705, 01.jpg, 1922, 02.jpg, 1462, 00.jpg, 2098, 03.jpg, 1355
-706, 02.jpg, 4223, 00.jpg, 4892, 03.jpg, 4582
-707, 01.jpg, 1923, 02.jpg, 1463, 00.jpg, 2099, 03.jpg, 1356
-708, 02.jpg, 4092, 00.jpg, 4895, 03.jpg, 4442
-709, 01.jpg, 1926, 02.jpg, 1322, 00.jpg, 4090
-710, 02.jpg, 3508, 00.jpg, 4951, 03.jpg, 3645
-711, 01.jpg, 1932, 02.jpg, 1955, 00.jpg, 2004
-712, 01.jpg, 4552, 00.jpg, 4956, 03.jpg, 3534
-713, 01.jpg, 1933, 02.jpg, 2500
-714, 02.jpg, 3585, 00.jpg, 5036, 03.jpg, 1809
-715, 01.jpg, 1941, 02.jpg, 1436
-716, 02.jpg, 4861, 00.jpg, 5187, 03.jpg, 5379
-717, 01.jpg, 1943, 02.jpg, 1497, 00.jpg, 2115
-718, 02.jpg, 4522, 00.jpg, 5197, 03.jpg, 5008
-719, 01.jpg, 1944, 02.jpg, 1496, 00.jpg, 2116
-720, 02.jpg, 4523, 00.jpg, 5198, 03.jpg, 5009
-721, 01.jpg, 1952, 02.jpg, 1471, 00.jpg, 2128
-722, 02.jpg, 4503, 00.jpg, 5236, 03.jpg, 4928
-723, 01.jpg, 1953, 02.jpg, 1960, 00.jpg, 2026, 03.jpg, 1878
-724, 01.jpg, 4844, 00.jpg, 5246, 03.jpg, 5012
-725, 01.jpg, 1958, 02.jpg, 2529, 03.jpg, 2697
-726, 01.jpg, 4845, 00.jpg, 5247, 03.jpg, 5013
-727, 01.jpg, 1960, 02.jpg, 2036, 00.jpg, 2022, 03.jpg, 1970
-728, 02.jpg, 4875, 00.jpg, 5255, 03.jpg, 5375
-729, 01.jpg, 1975, 02.jpg, 1459, 00.jpg, 4091
-730, 01.jpg, 4941, 00.jpg, 5373, 03.jpg, 4420
-731, 01.jpg, 1976, 02.jpg, 1994, 03.jpg, 1901
-732, 02.jpg, 4126, 00.jpg, 5382, 03.jpg, 4455
-733, 01.jpg, 1977, 02.jpg, 1993, 03.jpg, 1902
-734, 02.jpg, 4157, 00.jpg, 5409, 03.jpg, 3497
-735, 01.jpg, 1978, 02.jpg, 2019, 00.jpg, 2041, 03.jpg, 1944
-736, 01.jpg, 4973, 02.jpg, 3271, 00.jpg, 5427
-737, 01.jpg, 1979, 02.jpg, 2521
-738, 01.jpg, 5025, 00.jpg, 5454, 03.jpg, 4547
-739, 01.jpg, 1985, 02.jpg, 1530
-740, 01.jpg, 5030, 00.jpg, 5467, 03.jpg, 5056
-741, 01.jpg, 1986, 02.jpg, 2046, 00.jpg, 2044, 03.jpg, 1980
-742, 01.jpg, 4758, 00.jpg, 5592, 03.jpg, 4797
-743, 01.jpg, 1990, 02.jpg, 1367, 00.jpg, 4100
-744, 01.jpg, 5433, 00.jpg, 5647
-745, 01.jpg, 1991, 02.jpg, 1368
-746, 01.jpg, 5188, 00.jpg, 5650, 03.jpg, 5362
-747, 01.jpg, 1992, 02.jpg, 1401, 00.jpg, 2178
-748, 01.jpg, 5817, 00.jpg, 6316, 03.jpg, 6007
-749, 01.jpg, 2111, 02.jpg, 2088
-750, 01.jpg, 3247, 00.jpg, 3502
-751, 01.jpg, 2112, 02.jpg, 2089
-752, 00.jpg, 4174, 01.jpg, 4555, 03.jpg, 1313
-753, 01.jpg, 2117, 02.jpg, 1665, 00.jpg, 2249
-754, 01.jpg, 1017, 02.jpg, 1316, 03.jpg, 1764
-755, 01.jpg, 2118, 02.jpg, 1666, 00.jpg, 2248
-756, 00.jpg, 2045, 01.jpg, 1994, 03.jpg, 2034
-757, 01.jpg, 2122, 02.jpg, 1458, 00.jpg, 2323
-758, 01.jpg, 1599, 02.jpg, 1986, 03.jpg, 2163
-759, 01.jpg, 2125, 02.jpg, 2142, 00.jpg, 4095, 03.jpg, 2020
-760, 02.jpg, 3011, 03.jpg, 3121
-761, 01.jpg, 2129, 02.jpg, 2049, 00.jpg, 4099
-762, 00.jpg, 3678, 02.jpg, 912, 03.jpg, 3347
-763, 01.jpg, 2141, 02.jpg, 2162, 00.jpg, 2168
-764, 00.jpg, 4961, 02.jpg, 4104, 03.jpg, 3436
-765, 01.jpg, 2154, 02.jpg, 1578, 00.jpg, 4131
-766, 00.jpg, 3819, 01.jpg, 1246, 03.jpg, 3709
-767, 01.jpg, 2155, 02.jpg, 1734, 00.jpg, 2263
-768, 01.jpg, 4818, 02.jpg, 4475, 00.jpg, 5226, 03.jpg, 4304, 01.jpg, 4310, 02.jpg, 3964
-769, 01.jpg, 2167, 02.jpg, 1807, 00.jpg, 2274
-770, 01.jpg, 5407, 02.jpg, 4811
-771, 01.jpg, 2180, 02.jpg, 1880, 00.jpg, 2276
-772, 01.jpg, 5239, 02.jpg, 5094, 03.jpg, 5349
-773, 01.jpg, 2166, 02.jpg, 1714, 00.jpg, 2311, 03.jpg, 1512
-774, 01.jpg, 4826, 02.jpg, 4464, 03.jpg, 4853
-775, 01.jpg, 2165, 02.jpg, 1701, 00.jpg, 2310
-776, 01.jpg, 868, 02.jpg, 1556, 03.jpg, 3825
-777, 01.jpg, 2159, 02.jpg, 2008, 00.jpg, 2225
-778, 01.jpg, 3766, 02.jpg, 3557, 03.jpg, 3723
-779, 01.jpg, 2156, 02.jpg, 1514, 00.jpg, 2343
-780, 01.jpg, 5810, 00.jpg, 6308, 03.jpg, 6032
-781, 01.jpg, 2102, 02.jpg, 2110, 00.jpg, 2153
-782, 01.jpg, 5640, 00.jpg, 6129, 03.jpg, 5595
-783, 01.jpg, 2101, 02.jpg, 1380, 00.jpg, 4137
-784, 02.jpg, 5099, 00.jpg, 6125, 03.jpg, 5327
-785, 01.jpg, 2077, 02.jpg, 2041, 00.jpg, 2146, 03.jpg, 1908
-786, 01.jpg, 5613, 00.jpg, 6094, 03.jpg, 5895
-787, 01.jpg, 2076, 02.jpg, 2023, 00.jpg, 2151, 03.jpg, 1875
-788, 02.jpg, 5239, 00.jpg, 6058, 03.jpg, 5731
-789, 01.jpg, 2063, 02.jpg, 2065, 00.jpg, 2124
-790, 01.jpg, 5544, 02.jpg, 4796, 00.jpg, 6026
-791, 01.jpg, 2054, 02.jpg, 1483, 00.jpg, 4117
-792, 01.jpg, 5521, 00.jpg, 6005, 03.jpg, 5403
-793, 01.jpg, 2053, 02.jpg, 1482, 00.jpg, 4116
-794, 01.jpg, 5512, 00.jpg, 6002, 03.jpg, 4955
-795, 01.jpg, 2042, 02.jpg, 1992, 00.jpg, 2105
-796, 02.jpg, 5150, 00.jpg, 5992, 03.jpg, 5035
-797, 01.jpg, 2041, 02.jpg, 1991, 00.jpg, 2104
-798, 01.jpg, 5493, 00.jpg, 5977, 03.jpg, 5348
-799, 01.jpg, 2033, 02.jpg, 1399, 00.jpg, 2236, 03.jpg, 1256
-800, 01.jpg, 5462, 02.jpg, 5082, 00.jpg, 5952, 03.jpg, 5309
-801, 01.jpg, 2032, 02.jpg, 3264
-802, 02.jpg, 5255, 00.jpg, 5927, 03.jpg, 5742
-803, 01.jpg, 2024, 02.jpg, 1547, 00.jpg, 2173
-804, 01.jpg, 5432, 00.jpg, 5913, 03.jpg, 5891
-805, 01.jpg, 2020, 02.jpg, 1616, 00.jpg, 2150
-806, 01.jpg, 4935, 00.jpg, 5749, 03.jpg, 4385, 03.jpg, 4933
-807, 01.jpg, 2012, 02.jpg, 1570, 00.jpg, 2156
-808, 01.jpg, 5481, 00.jpg, 5736, 03.jpg, 5387
-809, 01.jpg, 2008, 02.jpg, 2066
-810, 01.jpg, 4884, 00.jpg, 5701
-811, 01.jpg, 2007, 02.jpg, 1339, 00.jpg, 2216
-812, 02.jpg, 4917, 00.jpg, 5687, 03.jpg, 5409
-813, 01.jpg, 2003, 02.jpg, 1973, 03.jpg, 1869
-814, 01.jpg, 2196, 02.jpg, 1596, 00.jpg, 2392
-815, 02.jpg, 4873, 00.jpg, 5684, 03.jpg, 5333
-816, 01.jpg, 2001, 02.jpg, 1828, 03.jpg, 1727
-817, 01.jpg, 2185, 02.jpg, 2104, 00.jpg, 2237
-818, 02.jpg, 5100, 00.jpg, 5666, 03.jpg, 5605
-819, 01.jpg, 2000, 02.jpg, 1755, 03.jpg, 1634
-820, 01.jpg, 5196, 00.jpg, 5663, 03.jpg, 5342
-821, 01.jpg, 1998, 02.jpg, 1411, 00.jpg, 2187
-822, 01.jpg, 3801, 00.jpg, 4122, 03.jpg, 1953
-823, 01.jpg, 1830, 02.jpg, 1385
-824, 01.jpg, 3793, 00.jpg, 4106, 03.jpg, 2068, 02.jpg, 2187
-825, 01.jpg, 1812, 02.jpg, 2083, 00.jpg, 1832, 03.jpg, 2126
-826, 01.jpg, 3758, 00.jpg, 4080, 03.jpg, 1893
-827, 01.jpg, 1808, 02.jpg, 1541, 00.jpg, 1923
-828, 01.jpg, 3751, 00.jpg, 4073, 03.jpg, 1771
-829, 01.jpg, 1807, 02.jpg, 1540, 00.jpg, 1922
-830, 01.jpg, 3731, 00.jpg, 4056, 03.jpg, 1479
-831, 01.jpg, 1799, 02.jpg, 1693, 00.jpg, 1873, 03.jpg, 1679
-832, 01.jpg, 3718, 00.jpg, 4030, 03.jpg, 3592
-833, 01.jpg, 1798, 02.jpg, 1595, 00.jpg, 1899, 03.jpg, 1545
-834, 01.jpg, 3684, 00.jpg, 4000, 03.jpg, 1341
-835, 01.jpg, 1789, 02.jpg, 1340, 00.jpg, 1957
-836, 02.jpg, 4194, 00.jpg, 3949, 03.jpg, 3746
-837, 01.jpg, 1786, 02.jpg, 1516, 00.jpg, 1907, 03.jpg, 1449
-838, 01.jpg, 3635, 00.jpg, 3922, 03.jpg, 3620
-839, 01.jpg, 1785, 02.jpg, 1515, 00.jpg, 1906, 03.jpg, 1448
-840, 01.jpg, 3617, 00.jpg, 3914, 03.jpg, 1550, 02.jpg, 1456
-841, 01.jpg, 1775, 02.jpg, 2492
-842, 01.jpg, 4453, 00.jpg, 3913, 03.jpg, 3712, 02.jpg, 4169
-843, 01.jpg, 1768, 02.jpg, 1794
-844, 02.jpg, 1065, 00.jpg, 3875, 03.jpg, 1056
-845, 01.jpg, 1760, 02.jpg, 1295, 03.jpg, 1224
-846, 02.jpg, 3358, 00.jpg, 3851, 03.jpg, 3643
-847, 01.jpg, 1759, 02.jpg, 3489, 03.jpg, 1981
-848, 01.jpg, 3522, 02.jpg, 4150, 00.jpg, 3774, 03.jpg, 3770, 02.jpg, 3414
-849, 01.jpg, 1757, 02.jpg, 3453, 03.jpg, 1841
-850, 01.jpg, 3506, 00.jpg, 3764, 03.jpg, 4564
-851, 01.jpg, 1756, 02.jpg, 1756, 00.jpg, 1808, 03.jpg, 1790
-852, 02.jpg, 3143, 00.jpg, 3722, 03.jpg, 3289
-853, 01.jpg, 1755, 02.jpg, 1464, 00.jpg, 1864, 03.jpg, 1427
-854, 01.jpg, 3340, 00.jpg, 3712, 03.jpg, 476
-855, 01.jpg, 1749, 02.jpg, 1845
-856, 01.jpg, 3429, 00.jpg, 3699, 03.jpg, 3331
-857, 01.jpg, 1745, 02.jpg, 2069, 00.jpg, 1745, 03.jpg, 3759
-858, 01.jpg, 3391, 00.jpg, 3639, 03.jpg, 3381
-859, 01.jpg, 1742, 02.jpg, 1210
-860, 01.jpg, 3390, 00.jpg, 3638, 03.jpg, 3380
-861, 01.jpg, 1741, 02.jpg, 1209, 00.jpg, 1909
-862, 01.jpg, 3401, 02.jpg, 3241, 00.jpg, 3634, 03.jpg, 3542
-863, 01.jpg, 1739, 02.jpg, 1968, 00.jpg, 1749, 03.jpg, 2060
-864, 01.jpg, 742, 02.jpg, 3045, 00.jpg, 3633, 03.jpg, 3134
-865, 01.jpg, 1736, 02.jpg, 1667, 00.jpg, 1783
-866, 02.jpg, 4521, 00.jpg, 3629, 03.jpg, 4437, 03.jpg, 4981
-867, 01.jpg, 1735, 02.jpg, 1412, 00.jpg, 1830
-868, 01.jpg, 3235, 00.jpg, 3618, 03.jpg, 214
-869, 01.jpg, 1734, 02.jpg, 1279
-870, 02.jpg, 3080, 00.jpg, 3616, 03.jpg, 3199
-871, 01.jpg, 1722, 02.jpg, 2051, 00.jpg, 1700, 03.jpg, 2160
-872, 01.jpg, 3330, 02.jpg, 2993, 00.jpg, 3615
-873, 01.jpg, 1721, 02.jpg, 1961, 00.jpg, 1721, 03.jpg, 2067
-874, 02.jpg, 806, 00.jpg, 3612, 03.jpg, 986
-875, 01.jpg, 1718, 02.jpg, 3275
-876, 01.jpg, 723, 02.jpg, 3092, 00.jpg, 3605
-877, 01.jpg, 1715, 02.jpg, 1658, 03.jpg, 1712
-878, 01.jpg, 3231, 00.jpg, 3599, 03.jpg, 2868
-879, 01.jpg, 1713, 02.jpg, 1738, 00.jpg, 1743, 03.jpg, 1805
-880, 01.jpg, 3347, 00.jpg, 3588, 03.jpg, 3311, 02.jpg, 3123
-881, 01.jpg, 1708, 02.jpg, 3520, 00.jpg, 1687, 03.jpg, 3753
-882, 02.jpg, 3987, 00.jpg, 3540, 03.jpg, 4399
-883, 01.jpg, 1704, 02.jpg, 1304, 00.jpg, 1814
-884, 01.jpg, 3181, 00.jpg, 3492, 03.jpg, 343
-885, 01.jpg, 1700, 02.jpg, 1619, 03.jpg, 1670
-886, 01.jpg, 3177, 00.jpg, 3486, 03.jpg, 306
-887, 01.jpg, 1697, 02.jpg, 1893, 03.jpg, 2010
-888, 01.jpg, 3168, 00.jpg, 3470, 03.jpg, 2935
-889, 01.jpg, 1689, 02.jpg, 1779, 00.jpg, 1705, 03.jpg, 1870
-890, 01.jpg, 2842, 02.jpg, 1940, 00.jpg, 3098
-891, 01.jpg, 1684, 02.jpg, 1873, 00.jpg, 1686
-892, 01.jpg, 2613, 00.jpg, 2737, 03.jpg, 1924
-893, 01.jpg, 1681, 02.jpg, 1430, 00.jpg, 1763
-894, 02.jpg, 2214, 00.jpg, 2616, 03.jpg, 1931
-895, 01.jpg, 1680, 02.jpg, 1429, 00.jpg, 1764
-896, 02.jpg, 2215, 00.jpg, 2615, 03.jpg, 1930
-897, 01.jpg, 1677, 02.jpg, 1181, 00.jpg, 1820
-898, 01.jpg, 2503, 02.jpg, 2259, 00.jpg, 2608
-899, 01.jpg, 1662, 02.jpg, 3652, 00.jpg, 1604
-900, 01.jpg, 3901, 02.jpg, 2256, 00.jpg, 2577, 03.jpg, 1994
-901, 01.jpg, 1655, 02.jpg, 1970, 00.jpg, 1642, 03.jpg, 2124
-902, 02.jpg, 2182, 00.jpg, 2417, 03.jpg, 1987
-903, 01.jpg, 1654, 02.jpg, 1874, 00.jpg, 1658, 03.jpg, 2018
-904, 02.jpg, 2211, 00.jpg, 2355, 03.jpg, 2037
-905, 01.jpg, 1652, 02.jpg, 1341
-906, 01.jpg, 1961, 00.jpg, 2023, 03.jpg, 1971
-907, 01.jpg, 1650, 02.jpg, 1817
-908, 01.jpg, 1912, 02.jpg, 1789, 00.jpg, 2016, 03.jpg, 1718
-909, 01.jpg, 1649, 02.jpg, 3543, 00.jpg, 1617, 03.jpg, 3799
-910, 01.jpg, 1914, 00.jpg, 1989, 03.jpg, 1861
-911, 01.jpg, 1648, 02.jpg, 1829, 00.jpg, 1660
-912, 01.jpg, 1915, 00.jpg, 1988, 03.jpg, 1860
-913, 01.jpg, 1647, 02.jpg, 1148
-914, 01.jpg, 1875, 02.jpg, 1631, 00.jpg, 1982
-915, 01.jpg, 1645, 02.jpg, 1249, 00.jpg, 1761
-916, 01.jpg, 1840, 00.jpg, 1874, 03.jpg, 2088
-917, 01.jpg, 1642, 02.jpg, 1434
-918, 01.jpg, 1690, 00.jpg, 1706, 03.jpg, 1871
-919, 01.jpg, 1641, 02.jpg, 1433
-920, 02.jpg, 1853, 00.jpg, 1649, 03.jpg, 1997
-921, 01.jpg, 1637, 02.jpg, 1682
-922, 01.jpg, 3654, 02.jpg, 1627, 00.jpg, 1648
-923, 01.jpg, 1631, 02.jpg, 1095, 00.jpg, 1794
-924, 01.jpg, 1629, 00.jpg, 1601, 03.jpg, 2212, 02.jpg, 2054
-925, 01.jpg, 1626, 02.jpg, 1129, 00.jpg, 1782
-926, 01.jpg, 1555, 00.jpg, 1567, 03.jpg, 1933
-927, 01.jpg, 1622, 02.jpg, 1761, 00.jpg, 1640, 03.jpg, 1895
-928, 01.jpg, 1470, 00.jpg, 1535, 03.jpg, 1513
-929, 01.jpg, 1618, 02.jpg, 3539, 00.jpg, 1577, 03.jpg, 3804
-930, 02.jpg, 1498, 00.jpg, 1531, 03.jpg, 1591
-931, 01.jpg, 1617, 02.jpg, 1392, 00.jpg, 3963
-932, 02.jpg, 1536, 00.jpg, 1528, 03.jpg, 1685
-933, 01.jpg, 1610, 02.jpg, 1124
-934, 01.jpg, 1514, 00.jpg, 1505, 03.jpg, 2197, 02.jpg, 1974
-935, 01.jpg, 1591, 02.jpg, 2043, 03.jpg, 2222
-936, 02.jpg, 1466, 00.jpg, 1455, 03.jpg, 1630
-937, 01.jpg, 1590, 02.jpg, 1195, 00.jpg, 1719
-938, 01.jpg, 1436, 00.jpg, 1431, 03.jpg, 2262
-939, 01.jpg, 1580, 02.jpg, 1871, 03.jpg, 2065
-940, 01.jpg, 1315, 00.jpg, 1417, 03.jpg, 1142
-941, 01.jpg, 1575, 02.jpg, 1748, 00.jpg, 1585, 03.jpg, 1920
-942, 01.jpg, 1297, 00.jpg, 1347, 03.jpg, 1415
-943, 01.jpg, 1569, 02.jpg, 1064
-944, 02.jpg, 1450, 00.jpg, 1224, 03.jpg, 1798
-945, 01.jpg, 1566, 02.jpg, 1704, 00.jpg, 1599, 03.jpg, 1838
-946, 01.jpg, 1182, 00.jpg, 1211, 03.jpg, 1163
-947, 01.jpg, 1561, 02.jpg, 1962, 03.jpg, 2152
-948, 01.jpg, 3534, 02.jpg, 1527, 00.jpg, 1192, 03.jpg, 3694
-949, 01.jpg, 1556, 02.jpg, 2009
-950, 02.jpg, 1502, 00.jpg, 1147, 03.jpg, 1921
-951, 01.jpg, 1554, 02.jpg, 1750, 00.jpg, 1566
-952, 01.jpg, 1147, 00.jpg, 1126, 03.jpg, 1480
-953, 01.jpg, 1548, 02.jpg, 1260, 00.jpg, 3956, 03.jpg, 1271
-954, 02.jpg, 991, 00.jpg, 1086, 03.jpg, 1121
-955, 01.jpg, 1542, 02.jpg, 3482, 00.jpg, 1536, 03.jpg, 2095
-956, 01.jpg, 1146, 00.jpg, 1037, 03.jpg, 3879, 02.jpg, 1858
-957, 01.jpg, 1539, 02.jpg, 1629, 00.jpg, 3928, 03.jpg, 1773
-958, 01.jpg, 959, 00.jpg, 952, 03.jpg, 1203
-959, 01.jpg, 1530, 02.jpg, 3503, 00.jpg, 1530, 03.jpg, 3767
-960, 01.jpg, 3304, 00.jpg, 887, 03.jpg, 342
-961, 01.jpg, 1524, 02.jpg, 1094, 00.jpg, 1692
-962, 01.jpg, 879, 00.jpg, 867, 03.jpg, 1107
-963, 01.jpg, 1515, 02.jpg, 1517, 00.jpg, 1574
-964, 01.jpg, 935, 00.jpg, 855, 03.jpg, 3611
-965, 01.jpg, 1513, 02.jpg, 1877
-966, 02.jpg, 1206, 00.jpg, 849, 03.jpg, 1607
-967, 01.jpg, 1512, 02.jpg, 1542
-968, 01.jpg, 894, 02.jpg, 1072, 00.jpg, 848
-969, 01.jpg, 1508, 02.jpg, 2388, 00.jpg, 1482
-970, 01.jpg, 866, 00.jpg, 844, 03.jpg, 1164
-971, 01.jpg, 1506, 02.jpg, 1221, 00.jpg, 1643
-972, 02.jpg, 723, 00.jpg, 697, 03.jpg, 833
-973, 01.jpg, 1505, 02.jpg, 1196, 00.jpg, 1654, 03.jpg, 1191
-974, 01.jpg, 682, 00.jpg, 675, 03.jpg, 839
-975, 01.jpg, 1500, 02.jpg, 1995, 00.jpg, 1483, 03.jpg, 2220
-976, 00.jpg, 669, 03.jpg, 783
-977, 01.jpg, 1499, 02.jpg, 1245, 00.jpg, 1626
-978, 01.jpg, 3269, 00.jpg, 544, 03.jpg, 939, 02.jpg, 734
-979, 01.jpg, 1492, 02.jpg, 1250, 00.jpg, 1608, 03.jpg, 1282
-980, 01.jpg, 617, 00.jpg, 519, 03.jpg, 3478
-981, 01.jpg, 1486, 02.jpg, 1187, 00.jpg, 1636, 03.jpg, 1167
-982, 01.jpg, 375, 00.jpg, 440, 03.jpg, 276
-983, 01.jpg, 1485, 02.jpg, 1143, 00.jpg, 1646, 03.jpg, 1088
-984, 02.jpg, 322, 00.jpg, 397, 03.jpg, 600
-985, 01.jpg, 1484, 02.jpg, 1774, 03.jpg, 2012
-986, 01.jpg, 221, 00.jpg, 203, 03.jpg, 807
-987, 01.jpg, 1483, 02.jpg, 3377
-988, 01.jpg, 5910, 02.jpg, 5562
-989, 01.jpg, 1482, 02.jpg, 1535, 03.jpg, 1684
-990, 01.jpg, 5908, 02.jpg, 5561
-991, 01.jpg, 1479, 02.jpg, 1790, 00.jpg, 1489, 03.jpg, 2031
-992, 01.jpg, 5892, 02.jpg, 5525, 00.jpg, 6399, 03.jpg, 6033
-993, 01.jpg, 1473, 02.jpg, 3236, 00.jpg, 1625, 03.jpg, 1085
-994, 01.jpg, 5879, 02.jpg, 5554
-995, 01.jpg, 1466, 02.jpg, 1690, 00.jpg, 1491
-996, 01.jpg, 5859, 02.jpg, 5491, 00.jpg, 6361, 03.jpg, 5990
-997, 01.jpg, 1458, 02.jpg, 1240, 00.jpg, 1570
-998, 01.jpg, 644, 02.jpg, 1011, 03.jpg, 1412
-999, 01.jpg, 992, 02.jpg, 899
-1000, 01.jpg, 2197, 02.jpg, 1597, 00.jpg, 2393
-1001, 01.jpg, 2200, 02.jpg, 1689, 00.jpg, 2367
-1002, 01.jpg, 2214, 02.jpg, 1806, 00.jpg, 2358
-1003, 01.jpg, 2219, 02.jpg, 2157, 00.jpg, 2270, 03.jpg, 2001
-1004, 01.jpg, 2221, 02.jpg, 1839, 00.jpg, 2359, 03.jpg, 1616
-1005, 01.jpg, 2232, 02.jpg, 2045, 00.jpg, 2321
-1006, 01.jpg, 2234, 02.jpg, 2152
-1007, 01.jpg, 2246, 02.jpg, 2554, 00.jpg, 2254, 03.jpg, 2592
-1008, 01.jpg, 2251, 02.jpg, 1811, 00.jpg, 2413
-1009, 01.jpg, 2252, 02.jpg, 2007, 03.jpg, 1783
-1010, 01.jpg, 2277, 02.jpg, 1814, 00.jpg, 2438
-1011, 01.jpg, 2278, 02.jpg, 1815, 00.jpg, 2439
-1012, 01.jpg, 2286, 02.jpg, 1624
-1013, 01.jpg, 2287, 02.jpg, 1625, 00.jpg, 4182
-1014, 01.jpg, 2290, 02.jpg, 2064, 00.jpg, 2404
-1015, 01.jpg, 2305, 02.jpg, 1870, 00.jpg, 2460
-1016, 01.jpg, 2318, 02.jpg, 3525, 00.jpg, 2440
-1017, 01.jpg, 2323, 02.jpg, 1681, 00.jpg, 2516
-1018, 01.jpg, 2329, 02.jpg, 1476, 00.jpg, 4222
-1019, 01.jpg, 2339, 02.jpg, 1838, 00.jpg, 2511
-1020, 01.jpg, 2346, 02.jpg, 2098, 00.jpg, 4169, 03.jpg, 1844
-1021, 01.jpg, 2349, 02.jpg, 2123, 00.jpg, 2468, 03.jpg, 1868
-1022, 01.jpg, 2356, 02.jpg, 1642, 00.jpg, 2575
-1023, 01.jpg, 2357, 02.jpg, 1983, 00.jpg, 2497
-1024, 01.jpg, 2361, 02.jpg, 1583, 00.jpg, 2602
-1025, 01.jpg, 2372, 02.jpg, 1712, 00.jpg, 2576, 03.jpg, 1431
-1026, 01.jpg, 2373, 02.jpg, 1929, 00.jpg, 2517
-1027, 01.jpg, 2384, 02.jpg, 2569, 00.jpg, 2422, 03.jpg, 2564
-1028, 01.jpg, 2392, 02.jpg, 1692, 00.jpg, 2606
-1029, 01.jpg, 2402, 02.jpg, 1982, 00.jpg, 2545
-1030, 01.jpg, 2409, 02.jpg, 1898, 00.jpg, 2567
-1031, 01.jpg, 2420, 02.jpg, 1786, 00.jpg, 2612
-1032, 01.jpg, 2421, 02.jpg, 1785
-1033, 01.jpg, 2448, 02.jpg, 2173, 00.jpg, 2542, 03.jpg, 1906
-1034, 01.jpg, 2454, 02.jpg, 1837, 00.jpg, 2641
-1035, 01.jpg, 2456, 02.jpg, 2226, 00.jpg, 2546
-1036, 01.jpg, 2484, 02.jpg, 3702, 00.jpg, 2527, 03.jpg, 3944
-1037, 01.jpg, 2498, 02.jpg, 2191, 00.jpg, 2621
-1038, 01.jpg, 2507, 02.jpg, 1941, 00.jpg, 2696
+# kapture format: 1.1
+# point3d_id, keypoints_type, [image_path, feature_id]*
+0, SIFT, 01.jpg, 4561, 02.jpg, 3389, 00.jpg, 4975, 03.jpg, 3472
+1, SIFT, 01.jpg, 4557, 02.jpg, 4128, 00.jpg, 4970
+2, SIFT, 01.jpg, 4554, 02.jpg, 3466, 00.jpg, 4958, 03.jpg, 3556
+3, SIFT, 01.jpg, 4553, 02.jpg, 3465, 00.jpg, 4957, 03.jpg, 3555
+4, SIFT, 01.jpg, 4548, 02.jpg, 4224, 00.jpg, 4954
+5, SIFT, 01.jpg, 4543, 02.jpg, 4103, 00.jpg, 4960, 03.jpg, 3435
+6, SIFT, 01.jpg, 4541, 02.jpg, 3509, 00.jpg, 4950, 03.jpg, 3644
+7, SIFT, 01.jpg, 4533, 02.jpg, 4222, 00.jpg, 4105, 03.jpg, 3692
+8, SIFT, 01.jpg, 4531, 02.jpg, 3423, 00.jpg, 4953, 03.jpg, 3525
+9, SIFT, 01.jpg, 4530, 02.jpg, 3568, 00.jpg, 4939, 03.jpg, 3725
+10, SIFT, 01.jpg, 4521, 02.jpg, 4204, 00.jpg, 4928, 03.jpg, 3696
+11, SIFT, 01.jpg, 4517, 02.jpg, 3303, 00.jpg, 4936, 03.jpg, 1166
+12, SIFT, 01.jpg, 4514, 02.jpg, 4190
+13, SIFT, 01.jpg, 4507, 02.jpg, 4171, 00.jpg, 4031, 03.jpg, 3640
+14, SIFT, 01.jpg, 4506, 02.jpg, 4184, 00.jpg, 5349
+15, SIFT, 01.jpg, 4504, 02.jpg, 4125, 00.jpg, 4902, 03.jpg, 3528
+16, SIFT, 01.jpg, 4503, 02.jpg, 4083, 00.jpg, 5355, 03.jpg, 4414
+17, SIFT, 01.jpg, 4501, 02.jpg, 4164, 00.jpg, 4003, 03.jpg, 3628
+18, SIFT, 01.jpg, 4500, 02.jpg, 4180, 00.jpg, 3988
+19, SIFT, 01.jpg, 4499, 02.jpg, 4220, 00.jpg, 4883, 03.jpg, 4586
+20, SIFT, 01.jpg, 4498, 02.jpg, 4165, 00.jpg, 3986, 03.jpg, 3642
+21, SIFT, 01.jpg, 4497, 02.jpg, 3337, 03.jpg, 3469
+22, SIFT, 01.jpg, 4495, 02.jpg, 3274, 03.jpg, 3386
+23, SIFT, 01.jpg, 4492, 02.jpg, 4579, 00.jpg, 4886
+24, SIFT, 01.jpg, 4482, 02.jpg, 4151, 00.jpg, 4877, 03.jpg, 4514
+25, SIFT, 01.jpg, 4474, 02.jpg, 4170, 00.jpg, 4866, 03.jpg, 4546
+26, SIFT, 01.jpg, 4472, 02.jpg, 4218, 00.jpg, 4858, 03.jpg, 4598
+27, SIFT, 01.jpg, 4466, 02.jpg, 3234, 03.jpg, 3304
+28, SIFT, 01.jpg, 4465, 02.jpg, 3235, 00.jpg, 4885, 03.jpg, 3303
+29, SIFT, 01.jpg, 4464, 02.jpg, 4212, 00.jpg, 4851
+30, SIFT, 01.jpg, 4459, 02.jpg, 4109, 00.jpg, 4859
+31, SIFT, 01.jpg, 4456, 02.jpg, 4059, 00.jpg, 4868, 03.jpg, 3418
+32, SIFT, 01.jpg, 4448, 02.jpg, 4047, 00.jpg, 4867, 03.jpg, 3371
+33, SIFT, 01.jpg, 4445, 02.jpg, 3258, 03.jpg, 3405
+34, SIFT, 01.jpg, 4443, 02.jpg, 4030, 03.jpg, 3269
+35, SIFT, 01.jpg, 4435, 02.jpg, 3228, 03.jpg, 3320
+36, SIFT, 01.jpg, 4434, 02.jpg, 3227, 03.jpg, 3319
+37, SIFT, 01.jpg, 4428, 02.jpg, 4261, 00.jpg, 4827
+38, SIFT, 01.jpg, 4421, 02.jpg, 3191, 00.jpg, 4853
+39, SIFT, 01.jpg, 4410, 02.jpg, 4622, 00.jpg, 4805, 03.jpg, 5644
+40, SIFT, 01.jpg, 4409, 02.jpg, 4618
+41, SIFT, 01.jpg, 4403, 02.jpg, 4064, 00.jpg, 3844, 03.jpg, 3491
+42, SIFT, 01.jpg, 4388, 02.jpg, 4124, 00.jpg, 3808, 03.jpg, 4555
+43, SIFT, 01.jpg, 4387, 02.jpg, 4123, 00.jpg, 3807, 03.jpg, 4554
+44, SIFT, 01.jpg, 4382, 02.jpg, 4596, 00.jpg, 3795, 03.jpg, 5070
+45, SIFT, 01.jpg, 4374, 02.jpg, 4111, 00.jpg, 4775, 03.jpg, 4533
+46, SIFT, 01.jpg, 4371, 02.jpg, 4585, 00.jpg, 4761, 03.jpg, 5071
+47, SIFT, 01.jpg, 4367, 02.jpg, 4611, 00.jpg, 4741, 03.jpg, 5459
+48, SIFT, 01.jpg, 4361, 02.jpg, 4578, 03.jpg, 5074
+49, SIFT, 01.jpg, 4333, 02.jpg, 3950
+50, SIFT, 01.jpg, 4331, 02.jpg, 4054, 00.jpg, 4701, 03.jpg, 5027
+51, SIFT, 01.jpg, 4329, 02.jpg, 4082, 00.jpg, 4692
+52, SIFT, 01.jpg, 4325, 02.jpg, 2905, 00.jpg, 4762
+53, SIFT, 01.jpg, 4312, 02.jpg, 3074, 00.jpg, 4699, 03.jpg, 3195
+54, SIFT, 01.jpg, 4309, 02.jpg, 2824, 00.jpg, 4742
+55, SIFT, 01.jpg, 4308, 02.jpg, 4007, 00.jpg, 3568, 03.jpg, 4424
+56, SIFT, 01.jpg, 4307, 02.jpg, 4513, 00.jpg, 4677, 03.jpg, 5359
+57, SIFT, 01.jpg, 4306, 02.jpg, 4515
+58, SIFT, 01.jpg, 4295, 02.jpg, 2814, 00.jpg, 5258
+59, SIFT, 01.jpg, 4294, 02.jpg, 4518, 00.jpg, 4654, 03.jpg, 4995
+60, SIFT, 01.jpg, 4287, 02.jpg, 2837, 03.jpg, 4158
+61, SIFT, 01.jpg, 4286, 02.jpg, 2788
+62, SIFT, 01.jpg, 4284, 02.jpg, 2784
+63, SIFT, 01.jpg, 4283, 02.jpg, 3926
+64, SIFT, 01.jpg, 4269, 02.jpg, 2778, 03.jpg, 2863
+65, SIFT, 01.jpg, 4266, 02.jpg, 2733
+66, SIFT, 01.jpg, 4261, 02.jpg, 3897, 00.jpg, 4632
+67, SIFT, 01.jpg, 4256, 02.jpg, 2768, 00.jpg, 4684, 03.jpg, 2873
+68, SIFT, 01.jpg, 4243, 02.jpg, 2725, 00.jpg, 4661
+69, SIFT, 01.jpg, 4197, 02.jpg, 4479
+70, SIFT, 01.jpg, 4196, 02.jpg, 4478, 03.jpg, 5363
+71, SIFT, 01.jpg, 4168, 02.jpg, 3758, 00.jpg, 4567
+72, SIFT, 01.jpg, 4163, 02.jpg, 2716, 00.jpg, 4561
+73, SIFT, 01.jpg, 4150, 02.jpg, 2700, 00.jpg, 4548
+74, SIFT, 01.jpg, 4131, 02.jpg, 3805, 00.jpg, 4520
+75, SIFT, 01.jpg, 4118, 02.jpg, 3794, 00.jpg, 4507
+76, SIFT, 01.jpg, 4113, 02.jpg, 3798, 00.jpg, 4499
+77, SIFT, 01.jpg, 4098, 02.jpg, 3786, 00.jpg, 4485
+78, SIFT, 01.jpg, 4060, 02.jpg, 3593, 00.jpg, 4430, 03.jpg, 1746
+79, SIFT, 01.jpg, 4054, 02.jpg, 1916, 00.jpg, 4466
+80, SIFT, 01.jpg, 4045, 02.jpg, 2004, 00.jpg, 4441
+81, SIFT, 01.jpg, 4035, 02.jpg, 1905, 00.jpg, 4426
+82, SIFT, 01.jpg, 4027, 02.jpg, 2298, 00.jpg, 4380, 03.jpg, 1836
+83, SIFT, 01.jpg, 4026, 02.jpg, 1718, 00.jpg, 4429
+84, SIFT, 01.jpg, 4025, 02.jpg, 1717, 00.jpg, 4428
+85, SIFT, 01.jpg, 4022, 02.jpg, 1851, 00.jpg, 4409, 03.jpg, 1401
+86, SIFT, 01.jpg, 4014, 02.jpg, 1528, 00.jpg, 4438
+87, SIFT, 01.jpg, 4003, 02.jpg, 1520, 00.jpg, 5069
+88, SIFT, 01.jpg, 3992, 02.jpg, 1754, 00.jpg, 4375
+89, SIFT, 01.jpg, 3991, 02.jpg, 3544, 03.jpg, 1674
+90, SIFT, 01.jpg, 3988, 02.jpg, 2196, 00.jpg, 4333, 03.jpg, 1789
+91, SIFT, 01.jpg, 3979, 02.jpg, 2231, 03.jpg, 1843
+92, SIFT, 01.jpg, 3978, 02.jpg, 2128, 03.jpg, 1726
+93, SIFT, 01.jpg, 3967, 02.jpg, 3572, 00.jpg, 4313, 03.jpg, 1797
+94, SIFT, 01.jpg, 3964, 02.jpg, 3579, 03.jpg, 3655
+95, SIFT, 01.jpg, 3963, 02.jpg, 3580
+96, SIFT, 01.jpg, 3958, 02.jpg, 3433
+97, SIFT, 01.jpg, 3957, 02.jpg, 3432
+98, SIFT, 01.jpg, 3955, 02.jpg, 3513, 03.jpg, 1577
+99, SIFT, 01.jpg, 3954, 02.jpg, 2302, 00.jpg, 4296, 03.jpg, 1951
+100, SIFT, 01.jpg, 3941, 02.jpg, 1664, 00.jpg, 4324
+101, SIFT, 01.jpg, 3938, 02.jpg, 2017, 00.jpg, 4298
+102, SIFT, 01.jpg, 3937, 02.jpg, 3416, 00.jpg, 4316
+103, SIFT, 01.jpg, 3931, 02.jpg, 1891, 00.jpg, 4299
+104, SIFT, 01.jpg, 3927, 02.jpg, 2056, 00.jpg, 2738
+105, SIFT, 01.jpg, 3926, 02.jpg, 1953
+106, SIFT, 01.jpg, 3921, 02.jpg, 1593, 00.jpg, 4305
+107, SIFT, 01.jpg, 3920, 02.jpg, 2020, 00.jpg, 4269, 03.jpg, 1664
+108, SIFT, 01.jpg, 3919, 02.jpg, 2021, 00.jpg, 4268
+109, SIFT, 01.jpg, 3916, 02.jpg, 3554, 00.jpg, 4259
+110, SIFT, 01.jpg, 3914, 02.jpg, 3583, 00.jpg, 4241, 03.jpg, 1910
+111, SIFT, 01.jpg, 3911, 02.jpg, 1965
+112, SIFT, 01.jpg, 3910, 02.jpg, 1615, 00.jpg, 2764
+113, SIFT, 01.jpg, 3906, 02.jpg, 3604, 00.jpg, 4221
+114, SIFT, 01.jpg, 3903, 02.jpg, 3538, 00.jpg, 4237
+115, SIFT, 01.jpg, 3902, 02.jpg, 3537, 00.jpg, 4236
+116, SIFT, 01.jpg, 3900, 02.jpg, 2166, 00.jpg, 2596, 03.jpg, 1867
+117, SIFT, 01.jpg, 3899, 02.jpg, 1594, 00.jpg, 4267, 03.jpg, 1320
+118, SIFT, 01.jpg, 3891, 02.jpg, 2048, 00.jpg, 4226, 03.jpg, 1748
+119, SIFT, 01.jpg, 3888, 02.jpg, 3496, 00.jpg, 4233, 03.jpg, 1622
+120, SIFT, 01.jpg, 3887, 02.jpg, 3495, 03.jpg, 1621
+121, SIFT, 01.jpg, 3884, 02.jpg, 3439
+122, SIFT, 01.jpg, 3880, 02.jpg, 3570, 03.jpg, 1918
+123, SIFT, 01.jpg, 3878, 02.jpg, 2239, 00.jpg, 4178, 03.jpg, 2009
+124, SIFT, 01.jpg, 3852, 02.jpg, 1646, 03.jpg, 1402
+125, SIFT, 01.jpg, 3848, 02.jpg, 1575, 00.jpg, 4208
+126, SIFT, 01.jpg, 3844, 02.jpg, 3560, 00.jpg, 4155, 03.jpg, 1907
+127, SIFT, 01.jpg, 3836, 02.jpg, 1494, 00.jpg, 4203, 03.jpg, 1270
+128, SIFT, 01.jpg, 3834, 02.jpg, 2175, 00.jpg, 4145, 03.jpg, 3708
+129, SIFT, 01.jpg, 3833, 02.jpg, 2174, 00.jpg, 4146
+130, SIFT, 01.jpg, 3831, 02.jpg, 1587, 00.jpg, 4185, 03.jpg, 1374
+131, SIFT, 01.jpg, 3830, 02.jpg, 1588, 00.jpg, 4186, 03.jpg, 1373
+132, SIFT, 01.jpg, 3826, 02.jpg, 1918, 03.jpg, 1693
+133, SIFT, 01.jpg, 3825, 02.jpg, 1917, 00.jpg, 4150, 03.jpg, 1692
+134, SIFT, 01.jpg, 3824, 02.jpg, 3475, 00.jpg, 4158, 03.jpg, 3565
+135, SIFT, 01.jpg, 3823, 02.jpg, 3564, 00.jpg, 4139, 03.jpg, 3695
+136, SIFT, 01.jpg, 3822, 02.jpg, 3363, 00.jpg, 4177, 03.jpg, 1326
+137, SIFT, 01.jpg, 3820, 02.jpg, 3566, 00.jpg, 4134, 03.jpg, 3703
+138, SIFT, 01.jpg, 3819, 02.jpg, 3567, 00.jpg, 4133, 03.jpg, 3702
+139, SIFT, 01.jpg, 3816, 02.jpg, 3246
+140, SIFT, 01.jpg, 3802, 02.jpg, 1501, 00.jpg, 4164, 03.jpg, 1300
+141, SIFT, 01.jpg, 3800, 02.jpg, 3581, 00.jpg, 4115, 03.jpg, 3734
+142, SIFT, 01.jpg, 3799, 02.jpg, 3425, 00.jpg, 4141, 03.jpg, 1491
+143, SIFT, 01.jpg, 3796, 02.jpg, 1719, 00.jpg, 4138, 03.jpg, 1510
+144, SIFT, 01.jpg, 3795, 02.jpg, 3565
+145, SIFT, 01.jpg, 3791, 02.jpg, 3582, 00.jpg, 2182
+146, SIFT, 01.jpg, 3787, 02.jpg, 1444, 00.jpg, 4144
+147, SIFT, 01.jpg, 3784, 02.jpg, 3473, 00.jpg, 4119, 03.jpg, 3594
+148, SIFT, 01.jpg, 3783, 02.jpg, 3402, 00.jpg, 4127
+149, SIFT, 01.jpg, 3782, 02.jpg, 1972, 00.jpg, 4109, 03.jpg, 1812
+150, SIFT, 01.jpg, 3777, 02.jpg, 3531, 00.jpg, 4098
+151, SIFT, 01.jpg, 3775, 02.jpg, 3461, 00.jpg, 4104, 03.jpg, 3586
+152, SIFT, 01.jpg, 3773, 02.jpg, 3448, 00.jpg, 4945, 03.jpg, 3568
+153, SIFT, 01.jpg, 3764, 02.jpg, 3424
+154, SIFT, 01.jpg, 3762, 02.jpg, 3545, 00.jpg, 4078, 03.jpg, 3716
+155, SIFT, 01.jpg, 3756, 02.jpg, 3552, 00.jpg, 4072
+156, SIFT, 01.jpg, 3754, 02.jpg, 3492, 00.jpg, 4074, 03.jpg, 1833
+157, SIFT, 01.jpg, 3753, 02.jpg, 1522, 00.jpg, 4087, 03.jpg, 1392
+158, SIFT, 01.jpg, 3746, 02.jpg, 1967, 03.jpg, 1903
+159, SIFT, 01.jpg, 3742, 02.jpg, 3401, 00.jpg, 4070, 03.jpg, 3538
+160, SIFT, 01.jpg, 3735, 02.jpg, 1564, 00.jpg, 4063, 03.jpg, 1483
+161, SIFT, 01.jpg, 3733, 02.jpg, 1211, 00.jpg, 4082
+162, SIFT, 01.jpg, 3730, 02.jpg, 1553, 00.jpg, 4055, 03.jpg, 1478
+163, SIFT, 01.jpg, 3723, 02.jpg, 1332, 00.jpg, 4061
+164, SIFT, 01.jpg, 3721, 02.jpg, 3494, 00.jpg, 4022
+165, SIFT, 01.jpg, 3720, 02.jpg, 3493, 00.jpg, 4021, 03.jpg, 3688
+166, SIFT, 01.jpg, 3713, 02.jpg, 3435, 00.jpg, 4018
+167, SIFT, 01.jpg, 3712, 02.jpg, 3429, 00.jpg, 4017, 03.jpg, 3609
+168, SIFT, 01.jpg, 3710, 02.jpg, 3452, 00.jpg, 4013, 03.jpg, 3650
+169, SIFT, 01.jpg, 3706, 02.jpg, 3440, 00.jpg, 4012, 03.jpg, 3624
+170, SIFT, 01.jpg, 3695, 02.jpg, 3272, 00.jpg, 4026, 03.jpg, 1176
+171, SIFT, 01.jpg, 3691, 02.jpg, 3478, 00.jpg, 3976, 03.jpg, 3700
+172, SIFT, 01.jpg, 3688, 02.jpg, 3481, 00.jpg, 3973, 03.jpg, 3706
+173, SIFT, 01.jpg, 3687, 02.jpg, 3480, 00.jpg, 3972, 03.jpg, 3707
+174, SIFT, 01.jpg, 3686, 02.jpg, 3357, 00.jpg, 3994
+175, SIFT, 01.jpg, 3685, 02.jpg, 4199, 00.jpg, 3962, 03.jpg, 3750
+176, SIFT, 01.jpg, 3682, 02.jpg, 4186, 00.jpg, 3964, 03.jpg, 4559
+177, SIFT, 01.jpg, 3670, 02.jpg, 4156, 00.jpg, 3959
+178, SIFT, 01.jpg, 3665, 02.jpg, 3486, 00.jpg, 1641, 03.jpg, 2055
+179, SIFT, 01.jpg, 3657, 02.jpg, 1186, 00.jpg, 1752
+180, SIFT, 01.jpg, 3651, 02.jpg, 3254, 00.jpg, 3971
+181, SIFT, 01.jpg, 3650, 02.jpg, 3474, 00.jpg, 3932, 03.jpg, 3718
+182, SIFT, 01.jpg, 3649, 02.jpg, 3278
+183, SIFT, 01.jpg, 3643, 02.jpg, 3365, 00.jpg, 3940, 03.jpg, 1651
+184, SIFT, 01.jpg, 3642, 02.jpg, 3366, 00.jpg, 3941, 03.jpg, 1650
+185, SIFT, 01.jpg, 3641, 02.jpg, 3277, 00.jpg, 3958, 03.jpg, 1264
+186, SIFT, 01.jpg, 3637, 02.jpg, 3526, 00.jpg, 3902, 03.jpg, 3805
+187, SIFT, 01.jpg, 3631, 02.jpg, 4308
+188, SIFT, 01.jpg, 3625, 02.jpg, 3240, 00.jpg, 3945, 03.jpg, 3349
+189, SIFT, 01.jpg, 3624, 02.jpg, 3198, 00.jpg, 3957, 03.jpg, 3237
+190, SIFT, 01.jpg, 3616, 02.jpg, 1108, 00.jpg, 3942
+191, SIFT, 01.jpg, 3614, 02.jpg, 4202, 00.jpg, 3888, 03.jpg, 4609
+192, SIFT, 01.jpg, 3611, 02.jpg, 3521, 03.jpg, 3820
+193, SIFT, 01.jpg, 3610, 02.jpg, 3522, 00.jpg, 1443
+194, SIFT, 01.jpg, 3607, 02.jpg, 1775, 00.jpg, 3892, 03.jpg, 3720
+195, SIFT, 01.jpg, 3605, 02.jpg, 1149, 00.jpg, 3917, 03.jpg, 1129
+196, SIFT, 01.jpg, 3604, 02.jpg, 1150, 00.jpg, 3916, 03.jpg, 1130
+197, SIFT, 01.jpg, 3597, 02.jpg, 3225, 03.jpg, 3315
+198, SIFT, 01.jpg, 3596, 02.jpg, 1034, 00.jpg, 4856
+199, SIFT, 01.jpg, 3591, 02.jpg, 4146, 00.jpg, 3877, 03.jpg, 4530
+200, SIFT, 01.jpg, 3590, 02.jpg, 4145, 00.jpg, 3876, 03.jpg, 4531
+201, SIFT, 01.jpg, 3582, 02.jpg, 3517, 00.jpg, 3855, 03.jpg, 3827
+202, SIFT, 01.jpg, 3576, 02.jpg, 3386, 00.jpg, 3861, 03.jpg, 3670
+203, SIFT, 01.jpg, 3568, 02.jpg, 4279
+204, SIFT, 01.jpg, 3561, 02.jpg, 4178, 00.jpg, 1282
+205, SIFT, 01.jpg, 3556, 02.jpg, 3472, 00.jpg, 3823, 03.jpg, 3806
+206, SIFT, 01.jpg, 3554, 02.jpg, 4140
+207, SIFT, 01.jpg, 3544, 02.jpg, 4118, 00.jpg, 3825
+208, SIFT, 01.jpg, 3541, 02.jpg, 3346, 00.jpg, 3820, 03.jpg, 3638
+209, SIFT, 01.jpg, 3536, 02.jpg, 4097, 00.jpg, 3818
+210, SIFT, 01.jpg, 3535, 02.jpg, 3332, 03.jpg, 3589
+211, SIFT, 01.jpg, 3529, 02.jpg, 4185, 00.jpg, 3783, 03.jpg, 4626
+212, SIFT, 01.jpg, 3521, 02.jpg, 4136, 00.jpg, 1123
+213, SIFT, 01.jpg, 3517, 02.jpg, 4101, 00.jpg, 3781, 03.jpg, 4520
+214, SIFT, 01.jpg, 3516, 02.jpg, 4096, 00.jpg, 1152, 03.jpg, 3617
+215, SIFT, 01.jpg, 3510, 02.jpg, 4102, 00.jpg, 3772, 03.jpg, 4529
+216, SIFT, 01.jpg, 3500, 02.jpg, 4114, 03.jpg, 5067
+217, SIFT, 01.jpg, 3493, 02.jpg, 3411, 00.jpg, 3734
+218, SIFT, 01.jpg, 3489, 02.jpg, 4119, 00.jpg, 3743, 03.jpg, 4572
+219, SIFT, 01.jpg, 3488, 02.jpg, 4075, 00.jpg, 3749, 03.jpg, 4499
+220, SIFT, 01.jpg, 3484, 02.jpg, 3317, 00.jpg, 3746, 03.jpg, 3626
+221, SIFT, 01.jpg, 3480, 02.jpg, 3295, 00.jpg, 3745, 03.jpg, 4502
+222, SIFT, 01.jpg, 3472, 02.jpg, 3262, 00.jpg, 3736, 03.jpg, 3526
+223, SIFT, 01.jpg, 3463, 02.jpg, 3231, 03.jpg, 1382
+224, SIFT, 01.jpg, 3462, 02.jpg, 4071, 00.jpg, 3713
+225, SIFT, 01.jpg, 3455, 02.jpg, 4032, 00.jpg, 3725, 03.jpg, 4430
+226, SIFT, 01.jpg, 3442, 02.jpg, 4090, 00.jpg, 3676
+227, SIFT, 01.jpg, 3441, 02.jpg, 4098, 00.jpg, 856, 03.jpg, 4556
+228, SIFT, 01.jpg, 3440, 02.jpg, 3232, 00.jpg, 3694
+229, SIFT, 01.jpg, 3438, 02.jpg, 4166
+230, SIFT, 01.jpg, 3435, 02.jpg, 4073
+231, SIFT, 01.jpg, 3427, 02.jpg, 4067, 00.jpg, 3662, 03.jpg, 4510
+232, SIFT, 01.jpg, 3426, 02.jpg, 4060, 00.jpg, 3664, 03.jpg, 4497
+233, SIFT, 01.jpg, 3417, 02.jpg, 3311, 00.jpg, 769, 03.jpg, 4532
+234, SIFT, 01.jpg, 3415, 02.jpg, 4538, 00.jpg, 3655
+235, SIFT, 01.jpg, 3409, 02.jpg, 3108, 00.jpg, 3681, 03.jpg, 3224
+236, SIFT, 01.jpg, 3408, 02.jpg, 3109, 00.jpg, 3682, 03.jpg, 3223
+237, SIFT, 01.jpg, 3402, 02.jpg, 3242, 03.jpg, 3541
+238, SIFT, 01.jpg, 3394, 02.jpg, 573, 00.jpg, 3689, 03.jpg, 459
+239, SIFT, 01.jpg, 3389, 02.jpg, 415, 00.jpg, 4759
+240, SIFT, 01.jpg, 3384, 02.jpg, 3111, 03.jpg, 3248
+241, SIFT, 01.jpg, 3383, 02.jpg, 3110, 00.jpg, 3650, 03.jpg, 3247
+242, SIFT, 01.jpg, 3380, 02.jpg, 3182, 00.jpg, 744, 03.jpg, 3431
+243, SIFT, 01.jpg, 3378, 02.jpg, 3230, 00.jpg, 3609, 03.jpg, 3523
+244, SIFT, 01.jpg, 3377, 02.jpg, 3035, 00.jpg, 3661, 03.jpg, 640
+245, SIFT, 01.jpg, 3376, 02.jpg, 3034, 00.jpg, 3660, 03.jpg, 641
+246, SIFT, 01.jpg, 3373, 02.jpg, 327, 00.jpg, 3758
+247, SIFT, 01.jpg, 3371, 02.jpg, 3243, 03.jpg, 3560
+248, SIFT, 01.jpg, 3367, 02.jpg, 3222, 00.jpg, 3577, 03.jpg, 3521
+249, SIFT, 01.jpg, 3363, 02.jpg, 2998
+250, SIFT, 01.jpg, 3361, 02.jpg, 4011, 00.jpg, 3589, 03.jpg, 4433
+251, SIFT, 01.jpg, 3359, 02.jpg, 805, 00.jpg, 3611, 03.jpg, 985
+252, SIFT, 01.jpg, 3354, 02.jpg, 280, 00.jpg, 3750
+253, SIFT, 01.jpg, 3346, 02.jpg, 3107, 03.jpg, 3280
+254, SIFT, 01.jpg, 3337, 02.jpg, 691, 00.jpg, 3603
+255, SIFT, 01.jpg, 3336, 02.jpg, 3061
+256, SIFT, 01.jpg, 3332, 02.jpg, 662, 00.jpg, 3594
+257, SIFT, 01.jpg, 3331, 02.jpg, 2847
+258, SIFT, 01.jpg, 3324, 02.jpg, 4001, 00.jpg, 4663, 03.jpg, 4415
+259, SIFT, 01.jpg, 3323, 02.jpg, 2989, 00.jpg, 3598, 03.jpg, 3027
+260, SIFT, 01.jpg, 3303, 02.jpg, 3015, 00.jpg, 636
+261, SIFT, 01.jpg, 3300, 02.jpg, 3070, 00.jpg, 3551, 03.jpg, 3207
+262, SIFT, 01.jpg, 3294, 02.jpg, 295, 00.jpg, 3677, 03.jpg, 345
+263, SIFT, 01.jpg, 3292, 02.jpg, 3179, 00.jpg, 537, 03.jpg, 4448
+264, SIFT, 01.jpg, 3291, 02.jpg, 3129, 00.jpg, 550, 03.jpg, 3384
+265, SIFT, 01.jpg, 3286, 02.jpg, 3096, 00.jpg, 561, 03.jpg, 3278
+266, SIFT, 01.jpg, 3285, 02.jpg, 3095, 00.jpg, 560, 03.jpg, 3277
+267, SIFT, 01.jpg, 3282, 02.jpg, 141
+268, SIFT, 01.jpg, 3277, 02.jpg, 2815, 03.jpg, 2894
+269, SIFT, 01.jpg, 3275, 02.jpg, 240, 00.jpg, 4722, 03.jpg, 255
+270, SIFT, 01.jpg, 3262, 02.jpg, 3954, 00.jpg, 3515, 03.jpg, 4309
+271, SIFT, 01.jpg, 3256, 02.jpg, 210, 00.jpg, 3648, 03.jpg, 238
+272, SIFT, 01.jpg, 3236, 02.jpg, 226, 00.jpg, 3619, 03.jpg, 2895
+273, SIFT, 01.jpg, 3230, 02.jpg, 3977, 00.jpg, 3457
+274, SIFT, 01.jpg, 3209, 02.jpg, 475
+275, SIFT, 01.jpg, 3208, 02.jpg, 473, 00.jpg, 4613
+276, SIFT, 01.jpg, 3204, 02.jpg, 50
+277, SIFT, 01.jpg, 3200, 02.jpg, 450, 00.jpg, 4609
+278, SIFT, 01.jpg, 3185, 02.jpg, 279, 00.jpg, 4636
+279, SIFT, 01.jpg, 3162, 02.jpg, 2785, 00.jpg, 3451
+280, SIFT, 01.jpg, 3161, 02.jpg, 2762, 00.jpg, 3456, 03.jpg, 2952
+281, SIFT, 01.jpg, 3157, 02.jpg, 2755, 00.jpg, 3454, 03.jpg, 2919
+282, SIFT, 01.jpg, 3125, 02.jpg, 2724, 00.jpg, 3425
+283, SIFT, 01.jpg, 3105, 02.jpg, 2732, 00.jpg, 3413
+284, SIFT, 01.jpg, 3092, 02.jpg, 534, 00.jpg, 3293
+285, SIFT, 01.jpg, 3034, 02.jpg, 2698
+286, SIFT, 01.jpg, 2992, 02.jpg, 2780, 00.jpg, 3263
+287, SIFT, 01.jpg, 2949, 02.jpg, 2325, 00.jpg, 3187
+288, SIFT, 01.jpg, 2941, 02.jpg, 2253
+289, SIFT, 01.jpg, 2940, 02.jpg, 2252, 00.jpg, 3194
+290, SIFT, 01.jpg, 2937, 02.jpg, 1978
+291, SIFT, 01.jpg, 2932, 02.jpg, 2255, 00.jpg, 3178
+292, SIFT, 01.jpg, 2926, 02.jpg, 2074
+293, SIFT, 01.jpg, 2858, 02.jpg, 2623
+294, SIFT, 01.jpg, 2853, 02.jpg, 2230, 00.jpg, 3075
+295, SIFT, 01.jpg, 2815, 02.jpg, 2628
+296, SIFT, 01.jpg, 2774, 02.jpg, 2219, 00.jpg, 2969
+297, SIFT, 01.jpg, 2758, 02.jpg, 2213, 00.jpg, 4357, 03.jpg, 1779
+298, SIFT, 01.jpg, 2736, 02.jpg, 2161
+299, SIFT, 01.jpg, 2729, 02.jpg, 2127, 00.jpg, 2910
+300, SIFT, 01.jpg, 2722, 02.jpg, 1740, 00.jpg, 2976
+301, SIFT, 01.jpg, 2718, 02.jpg, 2605, 00.jpg, 2830, 03.jpg, 2490
+302, SIFT, 01.jpg, 2710, 02.jpg, 2119
+303, SIFT, 01.jpg, 2709, 02.jpg, 2118, 00.jpg, 2882
+304, SIFT, 01.jpg, 2696, 02.jpg, 1731, 00.jpg, 4362
+305, SIFT, 01.jpg, 2691, 02.jpg, 2208, 00.jpg, 2851
+306, SIFT, 01.jpg, 2688, 02.jpg, 2155
+307, SIFT, 01.jpg, 2687, 02.jpg, 2156, 00.jpg, 4326
+308, SIFT, 01.jpg, 2670, 02.jpg, 1680
+309, SIFT, 01.jpg, 2663, 02.jpg, 2016, 00.jpg, 2859
+310, SIFT, 01.jpg, 2662, 02.jpg, 2015, 00.jpg, 2858
+311, SIFT, 01.jpg, 2661, 02.jpg, 2286, 00.jpg, 2801
+312, SIFT, 01.jpg, 2660, 02.jpg, 2190
+313, SIFT, 01.jpg, 2651, 02.jpg, 1964
+314, SIFT, 01.jpg, 2647, 02.jpg, 1998, 00.jpg, 2842
+315, SIFT, 01.jpg, 2636, 02.jpg, 2197, 00.jpg, 2791
+316, SIFT, 01.jpg, 2634, 02.jpg, 2130, 00.jpg, 2806
+317, SIFT, 01.jpg, 2629, 02.jpg, 2075, 00.jpg, 2816
+318, SIFT, 01.jpg, 2625, 02.jpg, 2082, 00.jpg, 2798
+319, SIFT, 01.jpg, 2621, 02.jpg, 2145, 00.jpg, 2775
+320, SIFT, 01.jpg, 2616, 02.jpg, 2291, 00.jpg, 4276
+321, SIFT, 01.jpg, 2614, 02.jpg, 2321, 03.jpg, 2007
+322, SIFT, 01.jpg, 2612, 02.jpg, 2113, 00.jpg, 2771
+323, SIFT, 01.jpg, 2587, 02.jpg, 2582, 00.jpg, 2674
+324, SIFT, 01.jpg, 2578, 02.jpg, 2282
+325, SIFT, 01.jpg, 2560, 02.jpg, 1638, 00.jpg, 2809
+326, SIFT, 01.jpg, 2556, 02.jpg, 2000, 00.jpg, 2724, 03.jpg, 1642
+327, SIFT, 01.jpg, 2555, 02.jpg, 1999, 00.jpg, 2723, 03.jpg, 1641
+328, SIFT, 01.jpg, 2518, 02.jpg, 2114
+329, SIFT, 01.jpg, 2512, 02.jpg, 2238
+330, SIFT, 01.jpg, 2510, 02.jpg, 1909, 00.jpg, 2702
+331, SIFT, 01.jpg, 4562, 02.jpg, 4149
+332, SIFT, 01.jpg, 4570, 02.jpg, 3406, 00.jpg, 4214
+333, SIFT, 01.jpg, 44, 02.jpg, 111
+334, SIFT, 01.jpg, 4571, 02.jpg, 4191
+335, SIFT, 01.jpg, 79, 02.jpg, 2757
+336, SIFT, 01.jpg, 4576, 02.jpg, 3378, 03.jpg, 1330
+337, SIFT, 01.jpg, 148, 02.jpg, 202
+338, SIFT, 01.jpg, 4580, 02.jpg, 3417, 00.jpg, 4990, 03.jpg, 3477
+339, SIFT, 01.jpg, 161, 02.jpg, 346, 00.jpg, 121
+340, SIFT, 01.jpg, 4591, 02.jpg, 4181, 00.jpg, 5018
+341, SIFT, 01.jpg, 207, 02.jpg, 56
+342, SIFT, 01.jpg, 4594, 02.jpg, 4196, 00.jpg, 5019, 03.jpg, 3571
+343, SIFT, 01.jpg, 238, 02.jpg, 650
+344, SIFT, 01.jpg, 4599, 02.jpg, 4211, 00.jpg, 5020, 03.jpg, 3596
+345, SIFT, 01.jpg, 255, 02.jpg, 106
+346, SIFT, 01.jpg, 4614, 02.jpg, 3549, 03.jpg, 1706
+347, SIFT, 01.jpg, 298, 02.jpg, 505
+348, SIFT, 01.jpg, 4621, 02.jpg, 1513, 00.jpg, 5487
+349, SIFT, 01.jpg, 366, 02.jpg, 570
+350, SIFT, 01.jpg, 4625, 02.jpg, 3561, 00.jpg, 4338
+351, SIFT, 01.jpg, 393, 02.jpg, 563, 00.jpg, 306
+352, SIFT, 01.jpg, 4643, 02.jpg, 1243
+353, SIFT, 01.jpg, 405, 02.jpg, 2811, 03.jpg, 2994
+354, SIFT, 01.jpg, 4665, 02.jpg, 4242, 03.jpg, 4507
+355, SIFT, 01.jpg, 407, 02.jpg, 264, 00.jpg, 3483, 03.jpg, 3008
+356, SIFT, 01.jpg, 4721, 02.jpg, 4453
+357, SIFT, 01.jpg, 421, 02.jpg, 267, 00.jpg, 479, 03.jpg, 3001
+358, SIFT, 01.jpg, 4726, 02.jpg, 4466
+359, SIFT, 01.jpg, 428, 02.jpg, 83
+360, SIFT, 01.jpg, 4748, 02.jpg, 4353, 00.jpg, 5593
+361, SIFT, 01.jpg, 502, 02.jpg, 30
+362, SIFT, 01.jpg, 4757, 02.jpg, 4440, 00.jpg, 5154, 03.jpg, 4889
+363, SIFT, 01.jpg, 524, 02.jpg, 3020, 03.jpg, 3171
+364, SIFT, 01.jpg, 4764, 02.jpg, 3765
+365, SIFT, 01.jpg, 555, 02.jpg, 3051, 00.jpg, 3488, 03.jpg, 3221
+366, SIFT, 01.jpg, 4776, 02.jpg, 3898, 00.jpg, 5181, 03.jpg, 3044
+367, SIFT, 01.jpg, 556, 02.jpg, 3052, 00.jpg, 3489
+368, SIFT, 01.jpg, 4783, 02.jpg, 4850, 00.jpg, 4615, 03.jpg, 5371
+369, SIFT, 01.jpg, 566, 02.jpg, 3166, 03.jpg, 3476
+370, SIFT, 01.jpg, 4788, 02.jpg, 4857, 00.jpg, 5178, 03.jpg, 5594
+371, SIFT, 01.jpg, 588, 02.jpg, 668, 00.jpg, 535
+372, SIFT, 01.jpg, 4795, 02.jpg, 4837, 00.jpg, 5200, 03.jpg, 5319
+373, SIFT, 01.jpg, 596, 02.jpg, 854, 03.jpg, 3407
+374, SIFT, 01.jpg, 4804, 02.jpg, 4835, 00.jpg, 5616, 03.jpg, 5315
+375, SIFT, 01.jpg, 602, 02.jpg, 690, 03.jpg, 840
+376, SIFT, 01.jpg, 4805, 02.jpg, 4494, 00.jpg, 5216, 03.jpg, 4927
+377, SIFT, 01.jpg, 610, 02.jpg, 626
+378, SIFT, 01.jpg, 4806, 02.jpg, 4849, 00.jpg, 5213, 03.jpg, 5353
+379, SIFT, 01.jpg, 612, 02.jpg, 694, 00.jpg, 570, 03.jpg, 857
+380, SIFT, 01.jpg, 4808, 02.jpg, 4395
+381, SIFT, 01.jpg, 641, 02.jpg, 3017, 00.jpg, 3567, 03.jpg, 644
+382, SIFT, 01.jpg, 4817, 02.jpg, 4860, 03.jpg, 5368
+383, SIFT, 01.jpg, 642, 02.jpg, 3039
+384, SIFT, 01.jpg, 4824, 02.jpg, 4548, 00.jpg, 4683, 03.jpg, 5048
+385, SIFT, 01.jpg, 645, 02.jpg, 1010, 03.jpg, 1413
+386, SIFT, 01.jpg, 4825, 02.jpg, 4463, 00.jpg, 5644, 03.jpg, 4854
+387, SIFT, 01.jpg, 648, 02.jpg, 718, 00.jpg, 631
+388, SIFT, 01.jpg, 4827, 02.jpg, 4847, 00.jpg, 5638, 03.jpg, 4929
+389, SIFT, 01.jpg, 649, 02.jpg, 761, 03.jpg, 937
+390, SIFT, 01.jpg, 4831, 02.jpg, 3876, 00.jpg, 5278
+391, SIFT, 01.jpg, 650, 02.jpg, 762, 03.jpg, 938
+392, SIFT, 01.jpg, 4832, 02.jpg, 4500, 03.jpg, 4924
+393, SIFT, 01.jpg, 657, 02.jpg, 680, 00.jpg, 668
+394, SIFT, 01.jpg, 4833, 02.jpg, 3988, 00.jpg, 5241, 03.jpg, 4354
+395, SIFT, 01.jpg, 670, 02.jpg, 763, 03.jpg, 931
+396, SIFT, 01.jpg, 4849, 02.jpg, 4604, 00.jpg, 4712, 03.jpg, 5122
+397, SIFT, 01.jpg, 677, 02.jpg, 822, 00.jpg, 641, 03.jpg, 1073
+398, SIFT, 01.jpg, 4850, 02.jpg, 4571, 00.jpg, 4718
+399, SIFT, 01.jpg, 678, 02.jpg, 843, 00.jpg, 642, 03.jpg, 1103
+400, SIFT, 01.jpg, 4856, 02.jpg, 4540, 00.jpg, 5272, 03.jpg, 4999
+401, SIFT, 01.jpg, 687, 02.jpg, 981, 00.jpg, 617, 03.jpg, 1342
+402, SIFT, 01.jpg, 4858, 02.jpg, 5117, 03.jpg, 5630
+403, SIFT, 01.jpg, 690, 02.jpg, 3132, 00.jpg, 3569, 03.jpg, 3357
+404, SIFT, 01.jpg, 4866, 02.jpg, 4024
+405, SIFT, 01.jpg, 692, 02.jpg, 316
+406, SIFT, 01.jpg, 4869, 02.jpg, 4928
+407, SIFT, 01.jpg, 696, 02.jpg, 1004, 03.jpg, 1367
+408, SIFT, 01.jpg, 4881, 02.jpg, 4542, 03.jpg, 4992
+409, SIFT, 01.jpg, 697, 02.jpg, 1005
+410, SIFT, 01.jpg, 4895, 02.jpg, 4942, 00.jpg, 5296, 03.jpg, 5649
+411, SIFT, 01.jpg, 699, 02.jpg, 1237, 03.jpg, 3675
+412, SIFT, 01.jpg, 4897, 02.jpg, 4550, 00.jpg, 5308, 03.jpg, 4460
+413, SIFT, 01.jpg, 706, 02.jpg, 655, 00.jpg, 713, 03.jpg, 693
+414, SIFT, 01.jpg, 4901, 02.jpg, 4576, 00.jpg, 5312
+415, SIFT, 01.jpg, 707, 02.jpg, 1069, 00.jpg, 624, 03.jpg, 1462
+416, SIFT, 01.jpg, 4905, 02.jpg, 4541, 00.jpg, 5319, 03.jpg, 4951
+417, SIFT, 01.jpg, 715, 02.jpg, 1051
+418, SIFT, 01.jpg, 4906, 02.jpg, 4023, 00.jpg, 5325
+419, SIFT, 01.jpg, 725, 02.jpg, 1003, 00.jpg, 660, 03.jpg, 3458
+420, SIFT, 01.jpg, 4916, 02.jpg, 4549, 00.jpg, 5341, 03.jpg, 4416
+421, SIFT, 01.jpg, 727, 02.jpg, 3266, 00.jpg, 613, 03.jpg, 3656
+422, SIFT, 01.jpg, 4917, 02.jpg, 4606, 00.jpg, 5334, 03.jpg, 5039
+423, SIFT, 01.jpg, 732, 02.jpg, 913, 00.jpg, 688
+424, SIFT, 01.jpg, 4921, 02.jpg, 4583
+425, SIFT, 01.jpg, 743, 02.jpg, 3044, 03.jpg, 3133
+426, SIFT, 01.jpg, 4925, 02.jpg, 4570, 00.jpg, 5346, 03.jpg, 4453
+427, SIFT, 01.jpg, 745, 02.jpg, 891, 00.jpg, 698, 03.jpg, 1157
+428, SIFT, 01.jpg, 4926, 02.jpg, 4946, 00.jpg, 5342
+429, SIFT, 01.jpg, 756, 02.jpg, 575
+430, SIFT, 01.jpg, 4927, 02.jpg, 4602, 00.jpg, 5348
+431, SIFT, 01.jpg, 757, 02.jpg, 816
+432, SIFT, 01.jpg, 4932, 02.jpg, 4626, 00.jpg, 5357
+433, SIFT, 01.jpg, 765, 02.jpg, 1029, 00.jpg, 701
+434, SIFT, 01.jpg, 4986, 02.jpg, 4182
+435, SIFT, 01.jpg, 767, 02.jpg, 3128, 00.jpg, 743
+436, SIFT, 01.jpg, 4987, 02.jpg, 4162, 00.jpg, 5423, 03.jpg, 4464
+437, SIFT, 01.jpg, 773, 02.jpg, 769, 00.jpg, 775
+438, SIFT, 01.jpg, 4992, 02.jpg, 4623, 00.jpg, 5416, 03.jpg, 4498
+439, SIFT, 01.jpg, 780, 02.jpg, 3220, 00.jpg, 703, 03.jpg, 3511
+440, SIFT, 01.jpg, 5169, 02.jpg, 5079, 00.jpg, 5620, 03.jpg, 5588
+441, SIFT, 01.jpg, 787, 02.jpg, 1073, 00.jpg, 725, 03.jpg, 1416
+442, SIFT, 01.jpg, 5170, 02.jpg, 5080, 00.jpg, 5621
+443, SIFT, 01.jpg, 788, 02.jpg, 3216, 00.jpg, 3617, 03.jpg, 3498
+444, SIFT, 01.jpg, 5172, 02.jpg, 5085, 00.jpg, 5624, 03.jpg, 5593
+445, SIFT, 01.jpg, 797, 02.jpg, 855, 00.jpg, 781, 03.jpg, 1049
+446, SIFT, 01.jpg, 5181, 02.jpg, 4848
+447, SIFT, 01.jpg, 799, 02.jpg, 1139, 00.jpg, 717, 03.jpg, 1534
+448, SIFT, 01.jpg, 5183, 02.jpg, 4554, 00.jpg, 5637
+449, SIFT, 01.jpg, 804, 02.jpg, 819, 03.jpg, 961
+450, SIFT, 01.jpg, 5184, 02.jpg, 5084
+451, SIFT, 01.jpg, 806, 02.jpg, 649, 00.jpg, 846
+452, SIFT, 01.jpg, 5192, 02.jpg, 4874, 00.jpg, 5658, 03.jpg, 5367
+453, SIFT, 01.jpg, 807, 02.jpg, 1035, 00.jpg, 745
+454, SIFT, 01.jpg, 5194, 02.jpg, 4506, 00.jpg, 5661, 03.jpg, 4918
+455, SIFT, 01.jpg, 811, 02.jpg, 603
+456, SIFT, 01.jpg, 5195, 02.jpg, 4890, 03.jpg, 5388
+457, SIFT, 01.jpg, 812, 02.jpg, 604
+458, SIFT, 01.jpg, 5197, 02.jpg, 4863, 00.jpg, 5664, 03.jpg, 5343
+459, SIFT, 01.jpg, 827, 02.jpg, 1106, 03.jpg, 1452
+460, SIFT, 01.jpg, 5201, 02.jpg, 4888
+461, SIFT, 01.jpg, 828, 02.jpg, 1107, 03.jpg, 1453
+462, SIFT, 01.jpg, 5205, 02.jpg, 4895, 03.jpg, 5395
+463, SIFT, 01.jpg, 831, 02.jpg, 720, 00.jpg, 853
+464, SIFT, 01.jpg, 5206, 02.jpg, 5112, 00.jpg, 5273, 03.jpg, 5627
+465, SIFT, 01.jpg, 841, 02.jpg, 3305, 00.jpg, 722, 03.jpg, 1934
+466, SIFT, 01.jpg, 5215, 02.jpg, 4897, 00.jpg, 5671
+467, SIFT, 01.jpg, 842, 02.jpg, 1117, 00.jpg, 765, 03.jpg, 1472
+468, SIFT, 01.jpg, 5231, 02.jpg, 5111, 03.jpg, 5607
+469, SIFT, 01.jpg, 844, 02.jpg, 887, 00.jpg, 3658
+470, SIFT, 01.jpg, 5236, 02.jpg, 5116, 00.jpg, 5703, 03.jpg, 5612
+471, SIFT, 01.jpg, 848, 02.jpg, 3148, 00.jpg, 837, 03.jpg, 3334
+472, SIFT, 01.jpg, 5240, 02.jpg, 4514, 00.jpg, 5712
+473, SIFT, 01.jpg, 851, 02.jpg, 1042, 00.jpg, 808, 03.jpg, 1335
+474, SIFT, 01.jpg, 5241, 02.jpg, 4907, 00.jpg, 5706, 03.jpg, 5396
+475, SIFT, 01.jpg, 862, 02.jpg, 710, 00.jpg, 906
+476, SIFT, 01.jpg, 5245, 02.jpg, 4916, 00.jpg, 5320, 03.jpg, 5030
+477, SIFT, 01.jpg, 873, 02.jpg, 1048, 03.jpg, 1336
+478, SIFT, 01.jpg, 5246, 02.jpg, 4931, 03.jpg, 5421
+479, SIFT, 01.jpg, 874, 02.jpg, 1085, 00.jpg, 823
+480, SIFT, 01.jpg, 5247, 02.jpg, 4886, 00.jpg, 5717, 03.jpg, 5337
+481, SIFT, 01.jpg, 903, 02.jpg, 811, 00.jpg, 928
+482, SIFT, 01.jpg, 5248, 02.jpg, 4879, 00.jpg, 5719, 03.jpg, 4932
+483, SIFT, 01.jpg, 905, 02.jpg, 1236, 00.jpg, 816, 03.jpg, 1694
+484, SIFT, 01.jpg, 5250, 02.jpg, 4876, 00.jpg, 5721
+485, SIFT, 01.jpg, 914, 02.jpg, 909, 00.jpg, 913
+486, SIFT, 01.jpg, 5254, 02.jpg, 4881, 03.jpg, 4930
+487, SIFT, 01.jpg, 915, 02.jpg, 1041, 00.jpg, 886, 03.jpg, 1302
+488, SIFT, 01.jpg, 5255, 02.jpg, 4896, 00.jpg, 5957, 03.jpg, 5354
+489, SIFT, 01.jpg, 923, 02.jpg, 814, 00.jpg, 963
+490, SIFT, 01.jpg, 5260, 02.jpg, 4929, 00.jpg, 5728, 03.jpg, 5038
+491, SIFT, 01.jpg, 924, 02.jpg, 815, 00.jpg, 964
+492, SIFT, 01.jpg, 5261, 02.jpg, 4930
+493, SIFT, 01.jpg, 925, 02.jpg, 836, 03.jpg, 925
+494, SIFT, 01.jpg, 5262, 02.jpg, 5128, 00.jpg, 5730
+495, SIFT, 01.jpg, 926, 02.jpg, 837, 03.jpg, 924
+496, SIFT, 01.jpg, 5267, 02.jpg, 4940, 00.jpg, 5731, 03.jpg, 5065
+497, SIFT, 01.jpg, 932, 02.jpg, 905, 00.jpg, 938, 03.jpg, 1064
+498, SIFT, 01.jpg, 5270, 02.jpg, 4913, 00.jpg, 5741, 03.jpg, 5377
+499, SIFT, 01.jpg, 937, 02.jpg, 1100, 00.jpg, 898, 03.jpg, 1383
+500, SIFT, 01.jpg, 5272, 02.jpg, 4933, 03.jpg, 5402
+501, SIFT, 01.jpg, 954, 02.jpg, 949, 00.jpg, 966
+502, SIFT, 01.jpg, 5276, 02.jpg, 4903
+503, SIFT, 01.jpg, 955, 02.jpg, 1071, 00.jpg, 929, 03.jpg, 1331
+504, SIFT, 01.jpg, 5277, 02.jpg, 4610, 03.jpg, 5022
+505, SIFT, 01.jpg, 961, 02.jpg, 1281, 00.jpg, 878
+506, SIFT, 01.jpg, 5285, 02.jpg, 4918, 00.jpg, 5979, 03.jpg, 5370
+507, SIFT, 01.jpg, 978, 02.jpg, 1299, 00.jpg, 908, 03.jpg, 1751
+508, SIFT, 01.jpg, 5287, 02.jpg, 4593, 00.jpg, 5761
+509, SIFT, 01.jpg, 986, 02.jpg, 1317, 00.jpg, 914, 03.jpg, 1785
+510, SIFT, 01.jpg, 5298, 02.jpg, 4600, 00.jpg, 5777, 03.jpg, 4439
+511, SIFT, 01.jpg, 989, 02.jpg, 911, 00.jpg, 1035, 03.jpg, 1032
+512, SIFT, 01.jpg, 5315, 02.jpg, 4647, 00.jpg, 5804, 03.jpg, 5034
+513, SIFT, 01.jpg, 990, 02.jpg, 959, 00.jpg, 1019, 03.jpg, 1098
+514, SIFT, 01.jpg, 5414, 02.jpg, 5261, 00.jpg, 5603, 03.jpg, 5770
+515, SIFT, 01.jpg, 993, 02.jpg, 900
+516, SIFT, 01.jpg, 5416, 02.jpg, 4830, 00.jpg, 5900
+517, SIFT, 01.jpg, 994, 02.jpg, 1201, 00.jpg, 968
+518, SIFT, 01.jpg, 5422, 02.jpg, 5244, 00.jpg, 5909, 03.jpg, 5569
+519, SIFT, 01.jpg, 997, 02.jpg, 3450
+520, SIFT, 01.jpg, 5426, 02.jpg, 5076, 00.jpg, 5917, 03.jpg, 5573
+521, SIFT, 01.jpg, 1000, 02.jpg, 886, 00.jpg, 1059, 03.jpg, 959
+522, SIFT, 01.jpg, 5437, 02.jpg, 5265, 00.jpg, 5919, 03.jpg, 5762
+523, SIFT, 01.jpg, 1008, 02.jpg, 3312, 03.jpg, 3633
+524, SIFT, 01.jpg, 5459, 02.jpg, 5090, 00.jpg, 5943, 03.jpg, 5334
+525, SIFT, 01.jpg, 1021, 02.jpg, 1228, 00.jpg, 995, 03.jpg, 1555
+526, SIFT, 01.jpg, 5463, 02.jpg, 5095, 00.jpg, 5949, 03.jpg, 5351
+527, SIFT, 01.jpg, 1029, 02.jpg, 3291, 00.jpg, 992, 03.jpg, 3602
+528, SIFT, 01.jpg, 5464, 02.jpg, 5125, 00.jpg, 5947, 03.jpg, 5615
+529, SIFT, 01.jpg, 1031, 02.jpg, 1099, 00.jpg, 1047, 03.jpg, 1323
+530, SIFT, 01.jpg, 5467, 02.jpg, 4915, 00.jpg, 5948, 03.jpg, 5397
+531, SIFT, 01.jpg, 1039, 02.jpg, 3255, 00.jpg, 1028, 03.jpg, 3516
+532, SIFT, 01.jpg, 5469, 02.jpg, 4880, 00.jpg, 5956, 03.jpg, 5326
+533, SIFT, 01.jpg, 1041, 02.jpg, 1262, 03.jpg, 1606
+534, SIFT, 01.jpg, 5472, 02.jpg, 5106, 00.jpg, 5960
+535, SIFT, 01.jpg, 1044, 02.jpg, 1081, 00.jpg, 1067
+536, SIFT, 01.jpg, 5478, 02.jpg, 5137, 00.jpg, 5961, 03.jpg, 5622
+537, SIFT, 01.jpg, 1046, 02.jpg, 1289, 00.jpg, 3728, 03.jpg, 1671
+538, SIFT, 01.jpg, 5479, 02.jpg, 5119, 00.jpg, 5733, 03.jpg, 5378
+539, SIFT, 01.jpg, 1052, 02.jpg, 3267, 00.jpg, 1029
+540, SIFT, 01.jpg, 5480, 02.jpg, 3202, 00.jpg, 5971
+541, SIFT, 01.jpg, 1065, 02.jpg, 1370, 00.jpg, 1014, 03.jpg, 3646
+542, SIFT, 01.jpg, 5482, 02.jpg, 4919, 00.jpg, 5737, 03.jpg, 5386
+543, SIFT, 01.jpg, 1073, 02.jpg, 1198, 03.jpg, 1471
+544, SIFT, 01.jpg, 5483, 02.jpg, 5132, 00.jpg, 5735, 03.jpg, 5400
+545, SIFT, 01.jpg, 1074, 02.jpg, 1400, 00.jpg, 1020, 03.jpg, 1856
+546, SIFT, 01.jpg, 5484, 02.jpg, 5133, 00.jpg, 5734, 03.jpg, 5399
+547, SIFT, 01.jpg, 1075, 02.jpg, 3454, 00.jpg, 957, 03.jpg, 4634
+548, SIFT, 01.jpg, 5485, 02.jpg, 5141, 00.jpg, 5966, 03.jpg, 5619
+549, SIFT, 01.jpg, 1084, 02.jpg, 1469, 00.jpg, 1017
+550, SIFT, 01.jpg, 5486, 02.jpg, 5142, 00.jpg, 5967
+551, SIFT, 01.jpg, 1092, 02.jpg, 1061, 00.jpg, 1109, 03.jpg, 1232
+552, SIFT, 01.jpg, 5488, 02.jpg, 5115, 00.jpg, 5973, 03.jpg, 5366
+553, SIFT, 01.jpg, 1100, 02.jpg, 904, 00.jpg, 1149
+554, SIFT, 01.jpg, 5494, 02.jpg, 5152
+555, SIFT, 01.jpg, 1115, 02.jpg, 3300, 00.jpg, 3756, 03.jpg, 3587
+556, SIFT, 01.jpg, 5499, 02.jpg, 5143, 00.jpg, 5975, 03.jpg, 5407
+557, SIFT, 01.jpg, 1121, 02.jpg, 3341, 00.jpg, 1062, 03.jpg, 3672
+558, SIFT, 01.jpg, 5500, 02.jpg, 5113, 00.jpg, 5981, 03.jpg, 5355
+559, SIFT, 01.jpg, 1124, 02.jpg, 1024, 03.jpg, 1145
+560, SIFT, 01.jpg, 5504, 02.jpg, 4921
+561, SIFT, 01.jpg, 1137, 02.jpg, 3313, 00.jpg, 1104, 03.jpg, 3599
+562, SIFT, 01.jpg, 5514, 02.jpg, 5158, 00.jpg, 5998, 03.jpg, 5618
+563, SIFT, 01.jpg, 1151, 02.jpg, 3343, 00.jpg, 1103, 03.jpg, 1859
+564, SIFT, 01.jpg, 5520, 02.jpg, 5131, 00.jpg, 6007, 03.jpg, 4978
+565, SIFT, 01.jpg, 1152, 02.jpg, 3360, 00.jpg, 1090, 03.jpg, 3713
+566, SIFT, 01.jpg, 5557, 02.jpg, 5021, 00.jpg, 6054
+567, SIFT, 01.jpg, 1160, 02.jpg, 3280, 03.jpg, 1537
+568, SIFT, 01.jpg, 5560, 02.jpg, 5020
+569, SIFT, 01.jpg, 1162, 02.jpg, 1398, 00.jpg, 1114
+570, SIFT, 01.jpg, 5571, 02.jpg, 5356, 03.jpg, 5879
+571, SIFT, 01.jpg, 1172, 02.jpg, 1122, 00.jpg, 1177
+572, SIFT, 01.jpg, 5578, 02.jpg, 5251, 00.jpg, 6055, 03.jpg, 5754
+573, SIFT, 01.jpg, 1184, 02.jpg, 1812, 00.jpg, 1076, 03.jpg, 3850
+574, SIFT, 01.jpg, 5579, 02.jpg, 5437, 00.jpg, 6057, 03.jpg, 5957
+575, SIFT, 01.jpg, 1201, 02.jpg, 1251, 00.jpg, 1182
+576, SIFT, 01.jpg, 5583, 02.jpg, 5355, 00.jpg, 6062, 03.jpg, 5875
+577, SIFT, 01.jpg, 1204, 02.jpg, 985, 00.jpg, 1256
+578, SIFT, 01.jpg, 5584, 02.jpg, 5242, 00.jpg, 6064, 03.jpg, 5733
+579, SIFT, 01.jpg, 1210, 02.jpg, 1308, 03.jpg, 1569
+580, SIFT, 01.jpg, 5585, 02.jpg, 5243, 00.jpg, 6065, 03.jpg, 5734
+581, SIFT, 01.jpg, 1211, 02.jpg, 1274, 03.jpg, 1520
+582, SIFT, 01.jpg, 5587, 02.jpg, 5259, 00.jpg, 5901, 03.jpg, 5758
+583, SIFT, 01.jpg, 1212, 02.jpg, 1288, 00.jpg, 1203, 03.jpg, 1533
+584, SIFT, 01.jpg, 5589, 02.jpg, 5245, 00.jpg, 6066, 03.jpg, 5732
+585, SIFT, 01.jpg, 1213, 02.jpg, 1323
+586, SIFT, 01.jpg, 5596, 02.jpg, 5250, 00.jpg, 6071, 03.jpg, 5743
+587, SIFT, 01.jpg, 1215, 02.jpg, 3356, 00.jpg, 1160, 03.jpg, 3687
+588, SIFT, 01.jpg, 5597, 02.jpg, 5369, 00.jpg, 6070, 03.jpg, 5889
+589, SIFT, 01.jpg, 1217, 02.jpg, 1472, 03.jpg, 1858
+590, SIFT, 01.jpg, 5600, 02.jpg, 5257, 03.jpg, 5744
+591, SIFT, 01.jpg, 1229, 02.jpg, 1115
+592, SIFT, 01.jpg, 5603, 02.jpg, 5360, 00.jpg, 6080
+593, SIFT, 01.jpg, 1232, 02.jpg, 3319, 03.jpg, 3563
+594, SIFT, 01.jpg, 5606, 02.jpg, 5263, 00.jpg, 5930, 03.jpg, 5751
+595, SIFT, 01.jpg, 1236, 02.jpg, 1268
+596, SIFT, 01.jpg, 5612, 02.jpg, 5284, 00.jpg, 6093, 03.jpg, 5780
+597, SIFT, 01.jpg, 1248, 02.jpg, 3438, 00.jpg, 1227, 03.jpg, 3772
+598, SIFT, 01.jpg, 5615, 02.jpg, 5275, 00.jpg, 6102, 03.jpg, 5763
+599, SIFT, 01.jpg, 1249, 02.jpg, 1036, 00.jpg, 1326
+600, SIFT, 01.jpg, 5621, 02.jpg, 5279, 00.jpg, 6105, 03.jpg, 5768
+601, SIFT, 01.jpg, 1250, 02.jpg, 3447, 00.jpg, 1219, 03.jpg, 3795
+602, SIFT, 01.jpg, 5625, 02.jpg, 5289, 00.jpg, 6110, 03.jpg, 5778
+603, SIFT, 01.jpg, 1264, 02.jpg, 3485, 00.jpg, 1232
+604, SIFT, 01.jpg, 5627, 02.jpg, 5278, 00.jpg, 6119, 03.jpg, 5591
+605, SIFT, 01.jpg, 1265, 02.jpg, 1001, 00.jpg, 1362
+606, SIFT, 01.jpg, 5633, 02.jpg, 5108, 00.jpg, 6124, 03.jpg, 5584
+607, SIFT, 01.jpg, 1266, 02.jpg, 1002
+608, SIFT, 01.jpg, 5638, 02.jpg, 5382, 00.jpg, 6126, 03.jpg, 5888
+609, SIFT, 01.jpg, 1280, 02.jpg, 1928, 03.jpg, 2342
+610, SIFT, 01.jpg, 5641, 02.jpg, 5136, 00.jpg, 6127
+611, SIFT, 01.jpg, 1316, 02.jpg, 1571, 03.jpg, 1876
+612, SIFT, 01.jpg, 5646, 02.jpg, 5299, 00.jpg, 6134, 03.jpg, 5781
+613, SIFT, 01.jpg, 1319, 02.jpg, 1026
+614, SIFT, 02.jpg, 5196, 00.jpg, 6174
+615, SIFT, 01.jpg, 1333, 02.jpg, 1355, 00.jpg, 1389, 03.jpg, 1499
+616, SIFT, 01.jpg, 5691, 02.jpg, 5345, 03.jpg, 5864
+617, SIFT, 01.jpg, 1335, 02.jpg, 1584, 00.jpg, 1357, 03.jpg, 1864
+618, SIFT, 01.jpg, 5694, 02.jpg, 5446, 00.jpg, 6197, 03.jpg, 5963
+619, SIFT, 01.jpg, 1339, 02.jpg, 1096, 00.jpg, 1459, 03.jpg, 1089
+620, SIFT, 01.jpg, 5696, 02.jpg, 5361, 00.jpg, 6200, 03.jpg, 5880
+621, SIFT, 01.jpg, 1340, 02.jpg, 1097
+622, SIFT, 01.jpg, 5711, 02.jpg, 5282, 00.jpg, 6221
+623, SIFT, 01.jpg, 1342, 02.jpg, 1566
+624, SIFT, 01.jpg, 5717, 02.jpg, 5285, 00.jpg, 6225, 03.jpg, 5759
+625, SIFT, 01.jpg, 1344, 02.jpg, 1369, 00.jpg, 1406, 03.jpg, 1519
+626, SIFT, 01.jpg, 5720, 02.jpg, 5375, 00.jpg, 6228, 03.jpg, 5764
+627, SIFT, 01.jpg, 1348, 02.jpg, 2178, 03.jpg, 3992
+628, SIFT, 01.jpg, 5754, 02.jpg, 5428, 00.jpg, 6260, 03.jpg, 5941
+629, SIFT, 01.jpg, 1355, 02.jpg, 1413, 03.jpg, 1566
+630, SIFT, 01.jpg, 5755, 02.jpg, 5485, 00.jpg, 6193, 03.jpg, 5947
+631, SIFT, 01.jpg, 1357, 02.jpg, 1894, 00.jpg, 1354, 03.jpg, 2223
+632, SIFT, 01.jpg, 5763, 02.jpg, 5436, 00.jpg, 6270, 03.jpg, 5946
+633, SIFT, 01.jpg, 1364, 02.jpg, 1854, 00.jpg, 1368, 03.jpg, 2175
+634, SIFT, 01.jpg, 5765, 02.jpg, 5445, 00.jpg, 6272, 03.jpg, 5955
+635, SIFT, 01.jpg, 1369, 02.jpg, 1173
+636, SIFT, 01.jpg, 5770, 02.jpg, 5444, 00.jpg, 6274
+637, SIFT, 01.jpg, 1400, 02.jpg, 1485, 00.jpg, 1461
+638, SIFT, 01.jpg, 5771, 02.jpg, 5443, 00.jpg, 6275, 03.jpg, 5950
+639, SIFT, 01.jpg, 1404, 02.jpg, 1865, 03.jpg, 2157
+640, SIFT, 01.jpg, 5775, 02.jpg, 5442, 00.jpg, 6281
+641, SIFT, 01.jpg, 1407, 02.jpg, 1914, 00.jpg, 1414, 03.jpg, 2208
+642, SIFT, 01.jpg, 5777, 02.jpg, 5455, 03.jpg, 5884
+643, SIFT, 01.jpg, 1416, 02.jpg, 1489, 00.jpg, 1474, 03.jpg, 1636
+644, SIFT, 01.jpg, 5779, 02.jpg, 5372, 00.jpg, 6288, 03.jpg, 5752
+645, SIFT, 01.jpg, 1418, 02.jpg, 1975, 00.jpg, 1415, 03.jpg, 2251
+646, SIFT, 01.jpg, 5780, 02.jpg, 5380, 00.jpg, 6286, 03.jpg, 5885
+647, SIFT, 01.jpg, 1434, 02.jpg, 1172, 00.jpg, 1554
+648, SIFT, 01.jpg, 5781, 02.jpg, 5456, 00.jpg, 6289, 03.jpg, 5881
+649, SIFT, 01.jpg, 1435, 02.jpg, 1171, 00.jpg, 1555
+650, SIFT, 01.jpg, 5821, 02.jpg, 5359, 00.jpg, 6321
+651, SIFT, 01.jpg, 1437, 02.jpg, 1136
+652, SIFT, 01.jpg, 5828, 02.jpg, 5440, 00.jpg, 6327
+653, SIFT, 01.jpg, 1442, 02.jpg, 1043, 00.jpg, 1634
+654, SIFT, 01.jpg, 5831, 02.jpg, 5452, 03.jpg, 5952
+655, SIFT, 01.jpg, 1443, 02.jpg, 1170, 00.jpg, 1573
+656, SIFT, 02.jpg, 5510, 00.jpg, 6341
+657, SIFT, 01.jpg, 1448, 02.jpg, 1443
+658, SIFT, 01.jpg, 5845, 02.jpg, 5546, 00.jpg, 6342
+659, SIFT, 01.jpg, 1449, 02.jpg, 1442
+660, SIFT, 01.jpg, 5849, 02.jpg, 5519, 00.jpg, 6345
+661, SIFT, 01.jpg, 1455, 02.jpg, 1832, 00.jpg, 1470, 03.jpg, 2096
+662, SIFT, 01.jpg, 5857, 02.jpg, 5524, 00.jpg, 6355, 03.jpg, 6038
+663, SIFT, 01.jpg, 1456, 02.jpg, 1126, 00.jpg, 1613
+664, SIFT, 01.jpg, 3813, 00.jpg, 4124, 03.jpg, 3731
+665, SIFT, 01.jpg, 1834, 02.jpg, 1721, 03.jpg, 1675
+666, SIFT, 02.jpg, 3426, 00.jpg, 4142, 03.jpg, 1492
+667, SIFT, 01.jpg, 1835, 02.jpg, 1720, 03.jpg, 1676
+668, SIFT, 01.jpg, 4558, 00.jpg, 4162, 03.jpg, 1549
+669, SIFT, 01.jpg, 1841, 02.jpg, 3532, 00.jpg, 1875, 03.jpg, 2087
+670, SIFT, 01.jpg, 3876, 02.jpg, 2132, 00.jpg, 4187
+671, SIFT, 01.jpg, 1843, 02.jpg, 2496
+672, SIFT, 01.jpg, 3883, 00.jpg, 4248, 03.jpg, 1334
+673, SIFT, 01.jpg, 1844, 02.jpg, 1257, 00.jpg, 2049
+674, SIFT, 01.jpg, 3918, 00.jpg, 4266, 03.jpg, 1627
+675, SIFT, 01.jpg, 1845, 02.jpg, 1391, 00.jpg, 2015
+676, SIFT, 02.jpg, 3587, 00.jpg, 4339, 03.jpg, 1818
+677, SIFT, 01.jpg, 1847, 02.jpg, 1920, 00.jpg, 1914
+678, SIFT, 01.jpg, 3994, 02.jpg, 2203, 00.jpg, 4346
+679, SIFT, 01.jpg, 1848, 02.jpg, 1921, 00.jpg, 1915
+680, SIFT, 01.jpg, 4009, 00.jpg, 4363, 03.jpg, 1796
+681, SIFT, 01.jpg, 1857, 02.jpg, 1383, 03.jpg, 1296
+682, SIFT, 01.jpg, 4153, 00.jpg, 4531, 03.jpg, 4294
+683, SIFT, 01.jpg, 1859, 02.jpg, 1477, 00.jpg, 1997
+684, SIFT, 01.jpg, 4311, 00.jpg, 4669, 03.jpg, 5405
+685, SIFT, 01.jpg, 1863, 02.jpg, 1906, 00.jpg, 1927, 03.jpg, 1879
+686, SIFT, 01.jpg, 4274, 00.jpg, 4703, 03.jpg, 2922
+687, SIFT, 01.jpg, 1865, 02.jpg, 2501, 00.jpg, 1866
+688, SIFT, 02.jpg, 4079, 00.jpg, 4733, 03.jpg, 4515
+689, SIFT, 01.jpg, 1866, 02.jpg, 1550, 00.jpg, 1987
+690, SIFT, 01.jpg, 4347, 00.jpg, 4735, 03.jpg, 4454
+691, SIFT, 01.jpg, 1871, 02.jpg, 1735, 00.jpg, 1967, 03.jpg, 1683
+692, SIFT, 01.jpg, 3360, 02.jpg, 2864, 00.jpg, 4744
+693, SIFT, 01.jpg, 1888, 02.jpg, 1438
+694, SIFT, 01.jpg, 4363, 00.jpg, 4765, 03.jpg, 4406
+695, SIFT, 01.jpg, 1896, 02.jpg, 1428, 00.jpg, 2067
+696, SIFT, 01.jpg, 4362, 00.jpg, 4766, 03.jpg, 4389
+697, SIFT, 01.jpg, 1909, 02.jpg, 1626, 00.jpg, 2032, 03.jpg, 1523
+698, SIFT, 02.jpg, 4595, 00.jpg, 4791, 03.jpg, 5416
+699, SIFT, 01.jpg, 1911, 02.jpg, 3373, 00.jpg, 4075
+700, SIFT, 01.jpg, 4493, 00.jpg, 4880, 03.jpg, 4535, 02.jpg, 4612
+701, SIFT, 01.jpg, 1916, 02.jpg, 1598
+702, SIFT, 01.jpg, 4494, 00.jpg, 4881, 03.jpg, 4536
+703, SIFT, 01.jpg, 1919, 02.jpg, 1396
+704, SIFT, 02.jpg, 4615, 00.jpg, 4887, 03.jpg, 4534
+705, SIFT, 01.jpg, 1922, 02.jpg, 1462, 00.jpg, 2098, 03.jpg, 1355
+706, SIFT, 02.jpg, 4223, 00.jpg, 4892, 03.jpg, 4582
+707, SIFT, 01.jpg, 1923, 02.jpg, 1463, 00.jpg, 2099, 03.jpg, 1356
+708, SIFT, 02.jpg, 4092, 00.jpg, 4895, 03.jpg, 4442
+709, SIFT, 01.jpg, 1926, 02.jpg, 1322, 00.jpg, 4090
+710, SIFT, 02.jpg, 3508, 00.jpg, 4951, 03.jpg, 3645
+711, SIFT, 01.jpg, 1932, 02.jpg, 1955, 00.jpg, 2004
+712, SIFT, 01.jpg, 4552, 00.jpg, 4956, 03.jpg, 3534
+713, SIFT, 01.jpg, 1933, 02.jpg, 2500
+714, SIFT, 02.jpg, 3585, 00.jpg, 5036, 03.jpg, 1809
+715, SIFT, 01.jpg, 1941, 02.jpg, 1436
+716, SIFT, 02.jpg, 4861, 00.jpg, 5187, 03.jpg, 5379
+717, SIFT, 01.jpg, 1943, 02.jpg, 1497, 00.jpg, 2115
+718, SIFT, 02.jpg, 4522, 00.jpg, 5197, 03.jpg, 5008
+719, SIFT, 01.jpg, 1944, 02.jpg, 1496, 00.jpg, 2116
+720, SIFT, 02.jpg, 4523, 00.jpg, 5198, 03.jpg, 5009
+721, SIFT, 01.jpg, 1952, 02.jpg, 1471, 00.jpg, 2128
+722, SIFT, 02.jpg, 4503, 00.jpg, 5236, 03.jpg, 4928
+723, SIFT, 01.jpg, 1953, 02.jpg, 1960, 00.jpg, 2026, 03.jpg, 1878
+724, SIFT, 01.jpg, 4844, 00.jpg, 5246, 03.jpg, 5012
+725, SIFT, 01.jpg, 1958, 02.jpg, 2529, 03.jpg, 2697
+726, SIFT, 01.jpg, 4845, 00.jpg, 5247, 03.jpg, 5013
+727, SIFT, 01.jpg, 1960, 02.jpg, 2036, 00.jpg, 2022, 03.jpg, 1970
+728, SIFT, 02.jpg, 4875, 00.jpg, 5255, 03.jpg, 5375
+729, SIFT, 01.jpg, 1975, 02.jpg, 1459, 00.jpg, 4091
+730, SIFT, 01.jpg, 4941, 00.jpg, 5373, 03.jpg, 4420
+731, SIFT, 01.jpg, 1976, 02.jpg, 1994, 03.jpg, 1901
+732, SIFT, 02.jpg, 4126, 00.jpg, 5382, 03.jpg, 4455
+733, SIFT, 01.jpg, 1977, 02.jpg, 1993, 03.jpg, 1902
+734, SIFT, 02.jpg, 4157, 00.jpg, 5409, 03.jpg, 3497
+735, SIFT, 01.jpg, 1978, 02.jpg, 2019, 00.jpg, 2041, 03.jpg, 1944
+736, SIFT, 01.jpg, 4973, 02.jpg, 3271, 00.jpg, 5427
+737, SIFT, 01.jpg, 1979, 02.jpg, 2521
+738, SIFT, 01.jpg, 5025, 00.jpg, 5454, 03.jpg, 4547
+739, SIFT, 01.jpg, 1985, 02.jpg, 1530
+740, SIFT, 01.jpg, 5030, 00.jpg, 5467, 03.jpg, 5056
+741, SIFT, 01.jpg, 1986, 02.jpg, 2046, 00.jpg, 2044, 03.jpg, 1980
+742, SIFT, 01.jpg, 4758, 00.jpg, 5592, 03.jpg, 4797
+743, SIFT, 01.jpg, 1990, 02.jpg, 1367, 00.jpg, 4100
+744, SIFT, 01.jpg, 5433, 00.jpg, 5647
+745, SIFT, 01.jpg, 1991, 02.jpg, 1368
+746, SIFT, 01.jpg, 5188, 00.jpg, 5650, 03.jpg, 5362
+747, SIFT, 01.jpg, 1992, 02.jpg, 1401, 00.jpg, 2178
+748, SIFT, 01.jpg, 5817, 00.jpg, 6316, 03.jpg, 6007
+749, SIFT, 01.jpg, 2111, 02.jpg, 2088
+750, SIFT, 01.jpg, 3247, 00.jpg, 3502
+751, SIFT, 01.jpg, 2112, 02.jpg, 2089
+752, SIFT, 00.jpg, 4174, 01.jpg, 4555, 03.jpg, 1313
+753, SIFT, 01.jpg, 2117, 02.jpg, 1665, 00.jpg, 2249
+754, SIFT, 01.jpg, 1017, 02.jpg, 1316, 03.jpg, 1764
+755, SIFT, 01.jpg, 2118, 02.jpg, 1666, 00.jpg, 2248
+756, SIFT, 00.jpg, 2045, 01.jpg, 1994, 03.jpg, 2034
+757, SIFT, 01.jpg, 2122, 02.jpg, 1458, 00.jpg, 2323
+758, SIFT, 01.jpg, 1599, 02.jpg, 1986, 03.jpg, 2163
+759, SIFT, 01.jpg, 2125, 02.jpg, 2142, 00.jpg, 4095, 03.jpg, 2020
+760, SIFT, 02.jpg, 3011, 03.jpg, 3121
+761, SIFT, 01.jpg, 2129, 02.jpg, 2049, 00.jpg, 4099
+762, SIFT, 00.jpg, 3678, 02.jpg, 912, 03.jpg, 3347
+763, SIFT, 01.jpg, 2141, 02.jpg, 2162, 00.jpg, 2168
+764, SIFT, 00.jpg, 4961, 02.jpg, 4104, 03.jpg, 3436
+765, SIFT, 01.jpg, 2154, 02.jpg, 1578, 00.jpg, 4131
+766, SIFT, 00.jpg, 3819, 01.jpg, 1246, 03.jpg, 3709
+767, SIFT, 01.jpg, 2155, 02.jpg, 1734, 00.jpg, 2263
+768, SIFT, 01.jpg, 4818, 02.jpg, 4475, 00.jpg, 5226, 03.jpg, 4304, 01.jpg, 4310, 02.jpg, 3964
+769, SIFT, 01.jpg, 2167, 02.jpg, 1807, 00.jpg, 2274
+770, SIFT, 01.jpg, 5407, 02.jpg, 4811
+771, SIFT, 01.jpg, 2180, 02.jpg, 1880, 00.jpg, 2276
+772, SIFT, 01.jpg, 5239, 02.jpg, 5094, 03.jpg, 5349
+773, SIFT, 01.jpg, 2166, 02.jpg, 1714, 00.jpg, 2311, 03.jpg, 1512
+774, SIFT, 01.jpg, 4826, 02.jpg, 4464, 03.jpg, 4853
+775, SIFT, 01.jpg, 2165, 02.jpg, 1701, 00.jpg, 2310
+776, SIFT, 01.jpg, 868, 02.jpg, 1556, 03.jpg, 3825
+777, SIFT, 01.jpg, 2159, 02.jpg, 2008, 00.jpg, 2225
+778, SIFT, 01.jpg, 3766, 02.jpg, 3557, 03.jpg, 3723
+779, SIFT, 01.jpg, 2156, 02.jpg, 1514, 00.jpg, 2343
+780, SIFT, 01.jpg, 5810, 00.jpg, 6308, 03.jpg, 6032
+781, SIFT, 01.jpg, 2102, 02.jpg, 2110, 00.jpg, 2153
+782, SIFT, 01.jpg, 5640, 00.jpg, 6129, 03.jpg, 5595
+783, SIFT, 01.jpg, 2101, 02.jpg, 1380, 00.jpg, 4137
+784, SIFT, 02.jpg, 5099, 00.jpg, 6125, 03.jpg, 5327
+785, SIFT, 01.jpg, 2077, 02.jpg, 2041, 00.jpg, 2146, 03.jpg, 1908
+786, SIFT, 01.jpg, 5613, 00.jpg, 6094, 03.jpg, 5895
+787, SIFT, 01.jpg, 2076, 02.jpg, 2023, 00.jpg, 2151, 03.jpg, 1875
+788, SIFT, 02.jpg, 5239, 00.jpg, 6058, 03.jpg, 5731
+789, SIFT, 01.jpg, 2063, 02.jpg, 2065, 00.jpg, 2124
+790, SIFT, 01.jpg, 5544, 02.jpg, 4796, 00.jpg, 6026
+791, SIFT, 01.jpg, 2054, 02.jpg, 1483, 00.jpg, 4117
+792, SIFT, 01.jpg, 5521, 00.jpg, 6005, 03.jpg, 5403
+793, SIFT, 01.jpg, 2053, 02.jpg, 1482, 00.jpg, 4116
+794, SIFT, 01.jpg, 5512, 00.jpg, 6002, 03.jpg, 4955
+795, SIFT, 01.jpg, 2042, 02.jpg, 1992, 00.jpg, 2105
+796, SIFT, 02.jpg, 5150, 00.jpg, 5992, 03.jpg, 5035
+797, SIFT, 01.jpg, 2041, 02.jpg, 1991, 00.jpg, 2104
+798, SIFT, 01.jpg, 5493, 00.jpg, 5977, 03.jpg, 5348
+799, SIFT, 01.jpg, 2033, 02.jpg, 1399, 00.jpg, 2236, 03.jpg, 1256
+800, SIFT, 01.jpg, 5462, 02.jpg, 5082, 00.jpg, 5952, 03.jpg, 5309
+801, SIFT, 01.jpg, 2032, 02.jpg, 3264
+802, SIFT, 02.jpg, 5255, 00.jpg, 5927, 03.jpg, 5742
+803, SIFT, 01.jpg, 2024, 02.jpg, 1547, 00.jpg, 2173
+804, SIFT, 01.jpg, 5432, 00.jpg, 5913, 03.jpg, 5891
+805, SIFT, 01.jpg, 2020, 02.jpg, 1616, 00.jpg, 2150
+806, SIFT, 01.jpg, 4935, 00.jpg, 5749, 03.jpg, 4385, 03.jpg, 4933
+807, SIFT, 01.jpg, 2012, 02.jpg, 1570, 00.jpg, 2156
+808, SIFT, 01.jpg, 5481, 00.jpg, 5736, 03.jpg, 5387
+809, SIFT, 01.jpg, 2008, 02.jpg, 2066
+810, SIFT, 01.jpg, 4884, 00.jpg, 5701
+811, SIFT, 01.jpg, 2007, 02.jpg, 1339, 00.jpg, 2216
+812, SIFT, 02.jpg, 4917, 00.jpg, 5687, 03.jpg, 5409
+813, SIFT, 01.jpg, 2003, 02.jpg, 1973, 03.jpg, 1869
+814, SIFT, 01.jpg, 2196, 02.jpg, 1596, 00.jpg, 2392
+815, SIFT, 02.jpg, 4873, 00.jpg, 5684, 03.jpg, 5333
+816, SIFT, 01.jpg, 2001, 02.jpg, 1828, 03.jpg, 1727
+817, SIFT, 01.jpg, 2185, 02.jpg, 2104, 00.jpg, 2237
+818, SIFT, 02.jpg, 5100, 00.jpg, 5666, 03.jpg, 5605
+819, SIFT, 01.jpg, 2000, 02.jpg, 1755, 03.jpg, 1634
+820, SIFT, 01.jpg, 5196, 00.jpg, 5663, 03.jpg, 5342
+821, SIFT, 01.jpg, 1998, 02.jpg, 1411, 00.jpg, 2187
+822, SIFT, 01.jpg, 3801, 00.jpg, 4122, 03.jpg, 1953
+823, SIFT, 01.jpg, 1830, 02.jpg, 1385
+824, SIFT, 01.jpg, 3793, 00.jpg, 4106, 03.jpg, 2068, 02.jpg, 2187
+825, SIFT, 01.jpg, 1812, 02.jpg, 2083, 00.jpg, 1832, 03.jpg, 2126
+826, SIFT, 01.jpg, 3758, 00.jpg, 4080, 03.jpg, 1893
+827, SIFT, 01.jpg, 1808, 02.jpg, 1541, 00.jpg, 1923
+828, SIFT, 01.jpg, 3751, 00.jpg, 4073, 03.jpg, 1771
+829, SIFT, 01.jpg, 1807, 02.jpg, 1540, 00.jpg, 1922
+830, SIFT, 01.jpg, 3731, 00.jpg, 4056, 03.jpg, 1479
+831, SIFT, 01.jpg, 1799, 02.jpg, 1693, 00.jpg, 1873, 03.jpg, 1679
+832, SIFT, 01.jpg, 3718, 00.jpg, 4030, 03.jpg, 3592
+833, SIFT, 01.jpg, 1798, 02.jpg, 1595, 00.jpg, 1899, 03.jpg, 1545
+834, SIFT, 01.jpg, 3684, 00.jpg, 4000, 03.jpg, 1341
+835, SIFT, 01.jpg, 1789, 02.jpg, 1340, 00.jpg, 1957
+836, SIFT, 02.jpg, 4194, 00.jpg, 3949, 03.jpg, 3746
+837, SIFT, 01.jpg, 1786, 02.jpg, 1516, 00.jpg, 1907, 03.jpg, 1449
+838, SIFT, 01.jpg, 3635, 00.jpg, 3922, 03.jpg, 3620
+839, SIFT, 01.jpg, 1785, 02.jpg, 1515, 00.jpg, 1906, 03.jpg, 1448
+840, SIFT, 01.jpg, 3617, 00.jpg, 3914, 03.jpg, 1550, 02.jpg, 1456
+841, SIFT, 01.jpg, 1775, 02.jpg, 2492
+842, SIFT, 01.jpg, 4453, 00.jpg, 3913, 03.jpg, 3712, 02.jpg, 4169
+843, SIFT, 01.jpg, 1768, 02.jpg, 1794
+844, SIFT, 02.jpg, 1065, 00.jpg, 3875, 03.jpg, 1056
+845, SIFT, 01.jpg, 1760, 02.jpg, 1295, 03.jpg, 1224
+846, SIFT, 02.jpg, 3358, 00.jpg, 3851, 03.jpg, 3643
+847, SIFT, 01.jpg, 1759, 02.jpg, 3489, 03.jpg, 1981
+848, SIFT, 01.jpg, 3522, 02.jpg, 4150, 00.jpg, 3774, 03.jpg, 3770, 02.jpg, 3414
+849, SIFT, 01.jpg, 1757, 02.jpg, 3453, 03.jpg, 1841
+850, SIFT, 01.jpg, 3506, 00.jpg, 3764, 03.jpg, 4564
+851, SIFT, 01.jpg, 1756, 02.jpg, 1756, 00.jpg, 1808, 03.jpg, 1790
+852, SIFT, 02.jpg, 3143, 00.jpg, 3722, 03.jpg, 3289
+853, SIFT, 01.jpg, 1755, 02.jpg, 1464, 00.jpg, 1864, 03.jpg, 1427
+854, SIFT, 01.jpg, 3340, 00.jpg, 3712, 03.jpg, 476
+855, SIFT, 01.jpg, 1749, 02.jpg, 1845
+856, SIFT, 01.jpg, 3429, 00.jpg, 3699, 03.jpg, 3331
+857, SIFT, 01.jpg, 1745, 02.jpg, 2069, 00.jpg, 1745, 03.jpg, 3759
+858, SIFT, 01.jpg, 3391, 00.jpg, 3639, 03.jpg, 3381
+859, SIFT, 01.jpg, 1742, 02.jpg, 1210
+860, SIFT, 01.jpg, 3390, 00.jpg, 3638, 03.jpg, 3380
+861, SIFT, 01.jpg, 1741, 02.jpg, 1209, 00.jpg, 1909
+862, SIFT, 01.jpg, 3401, 02.jpg, 3241, 00.jpg, 3634, 03.jpg, 3542
+863, SIFT, 01.jpg, 1739, 02.jpg, 1968, 00.jpg, 1749, 03.jpg, 2060
+864, SIFT, 01.jpg, 742, 02.jpg, 3045, 00.jpg, 3633, 03.jpg, 3134
+865, SIFT, 01.jpg, 1736, 02.jpg, 1667, 00.jpg, 1783
+866, SIFT, 02.jpg, 4521, 00.jpg, 3629, 03.jpg, 4437, 03.jpg, 4981
+867, SIFT, 01.jpg, 1735, 02.jpg, 1412, 00.jpg, 1830
+868, SIFT, 01.jpg, 3235, 00.jpg, 3618, 03.jpg, 214
+869, SIFT, 01.jpg, 1734, 02.jpg, 1279
+870, SIFT, 02.jpg, 3080, 00.jpg, 3616, 03.jpg, 3199
+871, SIFT, 01.jpg, 1722, 02.jpg, 2051, 00.jpg, 1700, 03.jpg, 2160
+872, SIFT, 01.jpg, 3330, 02.jpg, 2993, 00.jpg, 3615
+873, SIFT, 01.jpg, 1721, 02.jpg, 1961, 00.jpg, 1721, 03.jpg, 2067
+874, SIFT, 02.jpg, 806, 00.jpg, 3612, 03.jpg, 986
+875, SIFT, 01.jpg, 1718, 02.jpg, 3275
+876, SIFT, 01.jpg, 723, 02.jpg, 3092, 00.jpg, 3605
+877, SIFT, 01.jpg, 1715, 02.jpg, 1658, 03.jpg, 1712
+878, SIFT, 01.jpg, 3231, 00.jpg, 3599, 03.jpg, 2868
+879, SIFT, 01.jpg, 1713, 02.jpg, 1738, 00.jpg, 1743, 03.jpg, 1805
+880, SIFT, 01.jpg, 3347, 00.jpg, 3588, 03.jpg, 3311, 02.jpg, 3123
+881, SIFT, 01.jpg, 1708, 02.jpg, 3520, 00.jpg, 1687, 03.jpg, 3753
+882, SIFT, 02.jpg, 3987, 00.jpg, 3540, 03.jpg, 4399
+883, SIFT, 01.jpg, 1704, 02.jpg, 1304, 00.jpg, 1814
+884, SIFT, 01.jpg, 3181, 00.jpg, 3492, 03.jpg, 343
+885, SIFT, 01.jpg, 1700, 02.jpg, 1619, 03.jpg, 1670
+886, SIFT, 01.jpg, 3177, 00.jpg, 3486, 03.jpg, 306
+887, SIFT, 01.jpg, 1697, 02.jpg, 1893, 03.jpg, 2010
+888, SIFT, 01.jpg, 3168, 00.jpg, 3470, 03.jpg, 2935
+889, SIFT, 01.jpg, 1689, 02.jpg, 1779, 00.jpg, 1705, 03.jpg, 1870
+890, SIFT, 01.jpg, 2842, 02.jpg, 1940, 00.jpg, 3098
+891, SIFT, 01.jpg, 1684, 02.jpg, 1873, 00.jpg, 1686
+892, SIFT, 01.jpg, 2613, 00.jpg, 2737, 03.jpg, 1924
+893, SIFT, 01.jpg, 1681, 02.jpg, 1430, 00.jpg, 1763
+894, SIFT, 02.jpg, 2214, 00.jpg, 2616, 03.jpg, 1931
+895, SIFT, 01.jpg, 1680, 02.jpg, 1429, 00.jpg, 1764
+896, SIFT, 02.jpg, 2215, 00.jpg, 2615, 03.jpg, 1930
+897, SIFT, 01.jpg, 1677, 02.jpg, 1181, 00.jpg, 1820
+898, SIFT, 01.jpg, 2503, 02.jpg, 2259, 00.jpg, 2608
+899, SIFT, 01.jpg, 1662, 02.jpg, 3652, 00.jpg, 1604
+900, SIFT, 01.jpg, 3901, 02.jpg, 2256, 00.jpg, 2577, 03.jpg, 1994
+901, SIFT, 01.jpg, 1655, 02.jpg, 1970, 00.jpg, 1642, 03.jpg, 2124
+902, SIFT, 02.jpg, 2182, 00.jpg, 2417, 03.jpg, 1987
+903, SIFT, 01.jpg, 1654, 02.jpg, 1874, 00.jpg, 1658, 03.jpg, 2018
+904, SIFT, 02.jpg, 2211, 00.jpg, 2355, 03.jpg, 2037
+905, SIFT, 01.jpg, 1652, 02.jpg, 1341
+906, SIFT, 01.jpg, 1961, 00.jpg, 2023, 03.jpg, 1971
+907, SIFT, 01.jpg, 1650, 02.jpg, 1817
+908, SIFT, 01.jpg, 1912, 02.jpg, 1789, 00.jpg, 2016, 03.jpg, 1718
+909, SIFT, 01.jpg, 1649, 02.jpg, 3543, 00.jpg, 1617, 03.jpg, 3799
+910, SIFT, 01.jpg, 1914, 00.jpg, 1989, 03.jpg, 1861
+911, SIFT, 01.jpg, 1648, 02.jpg, 1829, 00.jpg, 1660
+912, SIFT, 01.jpg, 1915, 00.jpg, 1988, 03.jpg, 1860
+913, SIFT, 01.jpg, 1647, 02.jpg, 1148
+914, SIFT, 01.jpg, 1875, 02.jpg, 1631, 00.jpg, 1982
+915, SIFT, 01.jpg, 1645, 02.jpg, 1249, 00.jpg, 1761
+916, SIFT, 01.jpg, 1840, 00.jpg, 1874, 03.jpg, 2088
+917, SIFT, 01.jpg, 1642, 02.jpg, 1434
+918, SIFT, 01.jpg, 1690, 00.jpg, 1706, 03.jpg, 1871
+919, SIFT, 01.jpg, 1641, 02.jpg, 1433
+920, SIFT, 02.jpg, 1853, 00.jpg, 1649, 03.jpg, 1997
+921, SIFT, 01.jpg, 1637, 02.jpg, 1682
+922, SIFT, 01.jpg, 3654, 02.jpg, 1627, 00.jpg, 1648
+923, SIFT, 01.jpg, 1631, 02.jpg, 1095, 00.jpg, 1794
+924, SIFT, 01.jpg, 1629, 00.jpg, 1601, 03.jpg, 2212, 02.jpg, 2054
+925, SIFT, 01.jpg, 1626, 02.jpg, 1129, 00.jpg, 1782
+926, SIFT, 01.jpg, 1555, 00.jpg, 1567, 03.jpg, 1933
+927, SIFT, 01.jpg, 1622, 02.jpg, 1761, 00.jpg, 1640, 03.jpg, 1895
+928, SIFT, 01.jpg, 1470, 00.jpg, 1535, 03.jpg, 1513
+929, SIFT, 01.jpg, 1618, 02.jpg, 3539, 00.jpg, 1577, 03.jpg, 3804
+930, SIFT, 02.jpg, 1498, 00.jpg, 1531, 03.jpg, 1591
+931, SIFT, 01.jpg, 1617, 02.jpg, 1392, 00.jpg, 3963
+932, SIFT, 02.jpg, 1536, 00.jpg, 1528, 03.jpg, 1685
+933, SIFT, 01.jpg, 1610, 02.jpg, 1124
+934, SIFT, 01.jpg, 1514, 00.jpg, 1505, 03.jpg, 2197, 02.jpg, 1974
+935, SIFT, 01.jpg, 1591, 02.jpg, 2043, 03.jpg, 2222
+936, SIFT, 02.jpg, 1466, 00.jpg, 1455, 03.jpg, 1630
+937, SIFT, 01.jpg, 1590, 02.jpg, 1195, 00.jpg, 1719
+938, SIFT, 01.jpg, 1436, 00.jpg, 1431, 03.jpg, 2262
+939, SIFT, 01.jpg, 1580, 02.jpg, 1871, 03.jpg, 2065
+940, SIFT, 01.jpg, 1315, 00.jpg, 1417, 03.jpg, 1142
+941, SIFT, 01.jpg, 1575, 02.jpg, 1748, 00.jpg, 1585, 03.jpg, 1920
+942, SIFT, 01.jpg, 1297, 00.jpg, 1347, 03.jpg, 1415
+943, SIFT, 01.jpg, 1569, 02.jpg, 1064
+944, SIFT, 02.jpg, 1450, 00.jpg, 1224, 03.jpg, 1798
+945, SIFT, 01.jpg, 1566, 02.jpg, 1704, 00.jpg, 1599, 03.jpg, 1838
+946, SIFT, 01.jpg, 1182, 00.jpg, 1211, 03.jpg, 1163
+947, SIFT, 01.jpg, 1561, 02.jpg, 1962, 03.jpg, 2152
+948, SIFT, 01.jpg, 3534, 02.jpg, 1527, 00.jpg, 1192, 03.jpg, 3694
+949, SIFT, 01.jpg, 1556, 02.jpg, 2009
+950, SIFT, 02.jpg, 1502, 00.jpg, 1147, 03.jpg, 1921
+951, SIFT, 01.jpg, 1554, 02.jpg, 1750, 00.jpg, 1566
+952, SIFT, 01.jpg, 1147, 00.jpg, 1126, 03.jpg, 1480
+953, SIFT, 01.jpg, 1548, 02.jpg, 1260, 00.jpg, 3956, 03.jpg, 1271
+954, SIFT, 02.jpg, 991, 00.jpg, 1086, 03.jpg, 1121
+955, SIFT, 01.jpg, 1542, 02.jpg, 3482, 00.jpg, 1536, 03.jpg, 2095
+956, SIFT, 01.jpg, 1146, 00.jpg, 1037, 03.jpg, 3879, 02.jpg, 1858
+957, SIFT, 01.jpg, 1539, 02.jpg, 1629, 00.jpg, 3928, 03.jpg, 1773
+958, SIFT, 01.jpg, 959, 00.jpg, 952, 03.jpg, 1203
+959, SIFT, 01.jpg, 1530, 02.jpg, 3503, 00.jpg, 1530, 03.jpg, 3767
+960, SIFT, 01.jpg, 3304, 00.jpg, 887, 03.jpg, 342
+961, SIFT, 01.jpg, 1524, 02.jpg, 1094, 00.jpg, 1692
+962, SIFT, 01.jpg, 879, 00.jpg, 867, 03.jpg, 1107
+963, SIFT, 01.jpg, 1515, 02.jpg, 1517, 00.jpg, 1574
+964, SIFT, 01.jpg, 935, 00.jpg, 855, 03.jpg, 3611
+965, SIFT, 01.jpg, 1513, 02.jpg, 1877
+966, SIFT, 02.jpg, 1206, 00.jpg, 849, 03.jpg, 1607
+967, SIFT, 01.jpg, 1512, 02.jpg, 1542
+968, SIFT, 01.jpg, 894, 02.jpg, 1072, 00.jpg, 848
+969, SIFT, 01.jpg, 1508, 02.jpg, 2388, 00.jpg, 1482
+970, SIFT, 01.jpg, 866, 00.jpg, 844, 03.jpg, 1164
+971, SIFT, 01.jpg, 1506, 02.jpg, 1221, 00.jpg, 1643
+972, SIFT, 02.jpg, 723, 00.jpg, 697, 03.jpg, 833
+973, SIFT, 01.jpg, 1505, 02.jpg, 1196, 00.jpg, 1654, 03.jpg, 1191
+974, SIFT, 01.jpg, 682, 00.jpg, 675, 03.jpg, 839
+975, SIFT, 01.jpg, 1500, 02.jpg, 1995, 00.jpg, 1483, 03.jpg, 2220
+976, SIFT, 00.jpg, 669, 03.jpg, 783
+977, SIFT, 01.jpg, 1499, 02.jpg, 1245, 00.jpg, 1626
+978, SIFT, 01.jpg, 3269, 00.jpg, 544, 03.jpg, 939, 02.jpg, 734
+979, SIFT, 01.jpg, 1492, 02.jpg, 1250, 00.jpg, 1608, 03.jpg, 1282
+980, SIFT, 01.jpg, 617, 00.jpg, 519, 03.jpg, 3478
+981, SIFT, 01.jpg, 1486, 02.jpg, 1187, 00.jpg, 1636, 03.jpg, 1167
+982, SIFT, 01.jpg, 375, 00.jpg, 440, 03.jpg, 276
+983, SIFT, 01.jpg, 1485, 02.jpg, 1143, 00.jpg, 1646, 03.jpg, 1088
+984, SIFT, 02.jpg, 322, 00.jpg, 397, 03.jpg, 600
+985, SIFT, 01.jpg, 1484, 02.jpg, 1774, 03.jpg, 2012
+986, SIFT, 01.jpg, 221, 00.jpg, 203, 03.jpg, 807
+987, SIFT, 01.jpg, 1483, 02.jpg, 3377
+988, SIFT, 01.jpg, 5910, 02.jpg, 5562
+989, SIFT, 01.jpg, 1482, 02.jpg, 1535, 03.jpg, 1684
+990, SIFT, 01.jpg, 5908, 02.jpg, 5561
+991, SIFT, 01.jpg, 1479, 02.jpg, 1790, 00.jpg, 1489, 03.jpg, 2031
+992, SIFT, 01.jpg, 5892, 02.jpg, 5525, 00.jpg, 6399, 03.jpg, 6033
+993, SIFT, 01.jpg, 1473, 02.jpg, 3236, 00.jpg, 1625, 03.jpg, 1085
+994, SIFT, 01.jpg, 5879, 02.jpg, 5554
+995, SIFT, 01.jpg, 1466, 02.jpg, 1690, 00.jpg, 1491
+996, SIFT, 01.jpg, 5859, 02.jpg, 5491, 00.jpg, 6361, 03.jpg, 5990
+997, SIFT, 01.jpg, 1458, 02.jpg, 1240, 00.jpg, 1570
+998, SIFT, 01.jpg, 644, 02.jpg, 1011, 03.jpg, 1412
+999, SIFT, 01.jpg, 992, 02.jpg, 899
+1000, SIFT, 01.jpg, 2197, 02.jpg, 1597, 00.jpg, 2393
+1001, SIFT, 01.jpg, 2200, 02.jpg, 1689, 00.jpg, 2367
+1002, SIFT, 01.jpg, 2214, 02.jpg, 1806, 00.jpg, 2358
+1003, SIFT, 01.jpg, 2219, 02.jpg, 2157, 00.jpg, 2270, 03.jpg, 2001
+1004, SIFT, 01.jpg, 2221, 02.jpg, 1839, 00.jpg, 2359, 03.jpg, 1616
+1005, SIFT, 01.jpg, 2232, 02.jpg, 2045, 00.jpg, 2321
+1006, SIFT, 01.jpg, 2234, 02.jpg, 2152
+1007, SIFT, 01.jpg, 2246, 02.jpg, 2554, 00.jpg, 2254, 03.jpg, 2592
+1008, SIFT, 01.jpg, 2251, 02.jpg, 1811, 00.jpg, 2413
+1009, SIFT, 01.jpg, 2252, 02.jpg, 2007, 03.jpg, 1783
+1010, SIFT, 01.jpg, 2277, 02.jpg, 1814, 00.jpg, 2438
+1011, SIFT, 01.jpg, 2278, 02.jpg, 1815, 00.jpg, 2439
+1012, SIFT, 01.jpg, 2286, 02.jpg, 1624
+1013, SIFT, 01.jpg, 2287, 02.jpg, 1625, 00.jpg, 4182
+1014, SIFT, 01.jpg, 2290, 02.jpg, 2064, 00.jpg, 2404
+1015, SIFT, 01.jpg, 2305, 02.jpg, 1870, 00.jpg, 2460
+1016, SIFT, 01.jpg, 2318, 02.jpg, 3525, 00.jpg, 2440
+1017, SIFT, 01.jpg, 2323, 02.jpg, 1681, 00.jpg, 2516
+1018, SIFT, 01.jpg, 2329, 02.jpg, 1476, 00.jpg, 4222
+1019, SIFT, 01.jpg, 2339, 02.jpg, 1838, 00.jpg, 2511
+1020, SIFT, 01.jpg, 2346, 02.jpg, 2098, 00.jpg, 4169, 03.jpg, 1844
+1021, SIFT, 01.jpg, 2349, 02.jpg, 2123, 00.jpg, 2468, 03.jpg, 1868
+1022, SIFT, 01.jpg, 2356, 02.jpg, 1642, 00.jpg, 2575
+1023, SIFT, 01.jpg, 2357, 02.jpg, 1983, 00.jpg, 2497
+1024, SIFT, 01.jpg, 2361, 02.jpg, 1583, 00.jpg, 2602
+1025, SIFT, 01.jpg, 2372, 02.jpg, 1712, 00.jpg, 2576, 03.jpg, 1431
+1026, SIFT, 01.jpg, 2373, 02.jpg, 1929, 00.jpg, 2517
+1027, SIFT, 01.jpg, 2384, 02.jpg, 2569, 00.jpg, 2422, 03.jpg, 2564
+1028, SIFT, 01.jpg, 2392, 02.jpg, 1692, 00.jpg, 2606
+1029, SIFT, 01.jpg, 2402, 02.jpg, 1982, 00.jpg, 2545
+1030, SIFT, 01.jpg, 2409, 02.jpg, 1898, 00.jpg, 2567
+1031, SIFT, 01.jpg, 2420, 02.jpg, 1786, 00.jpg, 2612
+1032, SIFT, 01.jpg, 2421, 02.jpg, 1785
+1033, SIFT, 01.jpg, 2448, 02.jpg, 2173, 00.jpg, 2542, 03.jpg, 1906
+1034, SIFT, 01.jpg, 2454, 02.jpg, 1837, 00.jpg, 2641
+1035, SIFT, 01.jpg, 2456, 02.jpg, 2226, 00.jpg, 2546
+1036, SIFT, 01.jpg, 2484, 02.jpg, 3702, 00.jpg, 2527, 03.jpg, 3944
+1037, SIFT, 01.jpg, 2498, 02.jpg, 2191, 00.jpg, 2621
+1038, SIFT, 01.jpg, 2507, 02.jpg, 1941, 00.jpg, 2696
diff --git a/samples/maupertuis/kapture/reconstruction/points3d.txt b/samples/maupertuis/kapture/reconstruction/points3d.txt
index 6f055c6..f2d61f7 100644
--- a/samples/maupertuis/kapture/reconstruction/points3d.txt
+++ b/samples/maupertuis/kapture/reconstruction/points3d.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # X, Y, Z, R, G, B
 -2.396749999999999936e+00,4.622779999999999667e+00,1.327590000000000003e+01,5.700000000000000000e+01,5.700000000000000000e+01,4.900000000000000000e+01
 -2.344209999999999905e+00,4.530700000000000394e+00,1.334479999999999933e+01,6.300000000000000000e+01,6.500000000000000000e+01,6.200000000000000000e+01
diff --git a/samples/maupertuis/kapture/sensors/records_camera.txt b/samples/maupertuis/kapture/sensors/records_camera.txt
index ec4f226..098d114 100644
--- a/samples/maupertuis/kapture/sensors/records_camera.txt
+++ b/samples/maupertuis/kapture/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 1, cam_00001, 00.jpg
 2, cam_00001, 01.jpg
diff --git a/samples/maupertuis/kapture/sensors/records_gnss.txt b/samples/maupertuis/kapture/sensors/records_gnss.txt
index 57fd448..996db73 100644
--- a/samples/maupertuis/kapture/sensors/records_gnss.txt
+++ b/samples/maupertuis/kapture/sensors/records_gnss.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, x, y, z, utc, dop
 1, gps_00001, 5.793155, 45.216783, 280.0, 514850400, 10.0
 2, gps_00001, 5.793155, 45.216783, 280.0, 514850400, 10.0
diff --git a/samples/maupertuis/kapture/sensors/sensors.txt b/samples/maupertuis/kapture/sensors/sensors.txt
index de65fe1..6a2e2f8 100644
--- a/samples/maupertuis/kapture/sensors/sensors.txt
+++ b/samples/maupertuis/kapture/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 cam_00001, , camera, SIMPLE_PINHOLE, 1919, 1079, 1847.53, 959.5, 539.5
 gps_00001, gps, gnss, EPSG:4326
\ No newline at end of file
diff --git a/samples/maupertuis/kapture/sensors/trajectories.txt b/samples/maupertuis/kapture/sensors/trajectories.txt
index 5c1abe8..cc68805 100644
--- a/samples/maupertuis/kapture/sensors/trajectories.txt
+++ b/samples/maupertuis/kapture/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        1, cam_00001, 0.998245, -0.000889039, -0.0384732, -0.045019, 3.24777, -2.58119, -0.0457181
        2, cam_00001, 0.999999, 0.000422996, 0.0013778, 8.68136e-05, 1.79477, -2.18007, 0.314238
diff --git a/samples/t265/kapture/sensors/records_camera.txt b/samples/t265/kapture/sensors/records_camera.txt
index e1c8e1d..98dc049 100644
--- a/samples/t265/kapture/sensors/records_camera.txt
+++ b/samples/t265/kapture/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, 001, leftraw/frame_000000001.jpg
 0, 002, rightraw/frame_000000001.jpg
diff --git a/samples/t265/kapture/sensors/rigs.txt b/samples/t265/kapture/sensors/rigs.txt
index f5fd913..24505fb 100644
--- a/samples/t265/kapture/sensors/rigs.txt
+++ b/samples/t265/kapture/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
  rig0,   001,     ,     ,     ,     ,     ,     ,     
  rig0,   002,     ,     ,     ,     ,     ,     ,     
diff --git a/samples/t265/kapture/sensors/sensors.txt b/samples/t265/kapture/sensors/sensors.txt
index df7b98e..ed6f3b2 100644
--- a/samples/t265/kapture/sensors/sensors.txt
+++ b/samples/t265/kapture/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 001, , camera, OPENCV_FISHEYE, 848, 800, 284.468, 285.51, 424.355, 393.742, 0.0008, 0.031, -0.03, 0.005
 002, , camera, OPENCV_FISHEYE, 848, 800, 283.999, 285.266, 417.246, 400.402, -0.002, 0.039, -0.038, 0.007
diff --git a/samples/t265/kapture/sensors/trajectories.txt b/samples/t265/kapture/sensors/trajectories.txt
index c69ea2e..7252599 100644
--- a/samples/t265/kapture/sensors/trajectories.txt
+++ b/samples/t265/kapture/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0,   001, 0.9540331248716523, -0.03768128483784883, -0.2972570621910482, -0.0062565444214723875, 2.7749402281860904, 0.13236653865769618, -2.868626176500939
        0,   002, 0.9540331248716523, -0.03768128483784883, -0.2972570621910482, -0.0062565444214723875, 2.7109402281860904, 0.13236653865769618, -2.868626176500939
diff --git a/samples/t265/rigs_only_kapture/sensors/rigs.txt b/samples/t265/rigs_only_kapture/sensors/rigs.txt
index a4e8880..bd5d263 100644
--- a/samples/t265/rigs_only_kapture/sensors/rigs.txt
+++ b/samples/t265/rigs_only_kapture/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 t265, cam001,  1.0, -0.0, -0.0, -0.0, 0.032,  0.0,  0.0
 t265, cam002,  1.0, -0.0, -0.0, -0.0, -0.032,  0.0,  0.0
diff --git a/samples/t265/rigs_only_kapture/sensors/sensors.txt b/samples/t265/rigs_only_kapture/sensors/sensors.txt
index d8598ba..1a6947e 100644
--- a/samples/t265/rigs_only_kapture/sensors/sensors.txt
+++ b/samples/t265/rigs_only_kapture/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 cam001,  left fisheye, camera, OPENCV_FISHEYE, 848, 800, 284.468, 285.51, 424.355, 393.742, 0.0008, 0.031, -0.03, 0.005
 cam002, right fisheye, camera, OPENCV_FISHEYE, 848, 800, 283.999, 285.266, 417.246, 400.402, -0.002, 0.039, -0.038, 0.007
diff --git a/samples/t265/ros_kapture/sensors/records_camera.txt b/samples/t265/ros_kapture/sensors/records_camera.txt
index a04a848..ebded52 100644
--- a/samples/t265/ros_kapture/sensors/records_camera.txt
+++ b/samples/t265/ros_kapture/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 1553180224360915899, cam001, cam001/frame_000000001.jpg
 1553180224360915899, cam002, cam002/frame_000000001.jpg
diff --git a/samples/t265/ros_kapture/sensors/rigs.txt b/samples/t265/ros_kapture/sensors/rigs.txt
index a4e8880..bd5d263 100644
--- a/samples/t265/ros_kapture/sensors/rigs.txt
+++ b/samples/t265/ros_kapture/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 t265, cam001,  1.0, -0.0, -0.0, -0.0, 0.032,  0.0,  0.0
 t265, cam002,  1.0, -0.0, -0.0, -0.0, -0.032,  0.0,  0.0
diff --git a/samples/t265/ros_kapture/sensors/sensors.txt b/samples/t265/ros_kapture/sensors/sensors.txt
index 38d71ca..9d08051 100644
--- a/samples/t265/ros_kapture/sensors/sensors.txt
+++ b/samples/t265/ros_kapture/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 cam001, left fisheye, camera, OPENCV_FISHEYE, 848, 800, 284.468, 285.51, 424.355, 393.742, 0.0008, 0.031, -0.03, 0.005
 cam002, right fisheye, camera, OPENCV_FISHEYE, 848, 800, 283.999, 285.266, 417.246, 400.402, -0.002, 0.039, -0.038, 0.007
diff --git a/samples/t265/ros_kapture/sensors/trajectories.txt b/samples/t265/ros_kapture/sensors/trajectories.txt
index aa1019c..3c0eebc 100644
--- a/samples/t265/ros_kapture/sensors/trajectories.txt
+++ b/samples/t265/ros_kapture/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
 1553180224360915899, t265, 0.9540331248716523, -0.03768128483784883, -0.2972570621910482, -0.0062565444214723875, 2.7429402281860904, 0.13236653865769618, -2.868626176500939
 1553180224394249439, t265, 0.9538392426506648, -0.03767831996842963, -0.2978817523126402, -0.006124150940520545, 2.746130169011789, 0.1326022155674856, -2.865672078562964
diff --git a/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/records_camera.txt b/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/records_camera.txt
index c8d2a22..9d0205f 100644
--- a/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/records_camera.txt
+++ b/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 1531487840875078949, bb2_left, bb2_left/frame_000000001.jpg
 1531487840875078949, bb2_right, bb2_right/frame_000000001.jpg
diff --git a/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/sensors.txt b/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/sensors.txt
index 9d25726..92eff11 100644
--- a/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/sensors.txt
+++ b/samples/utbm/2018-07-13-15-17-20_1_first10_bb2_kapture/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 bb2_left, bb2_left, camera, OPENCV, 1024, 768, 831.560994, 833.679423, 510.610429, 391.521463, -0.357402, 0.143604, 0.000354, 0.00073
 bb2_right, bb2_right, camera, OPENCV, 1024, 768, 827.54768, 829.216633, 493.502053, 401.443004, -0.356822, 0.143812, 0.000179, 0.000154
diff --git a/samples/virtual_gallery/kapture/all/sensors/records_camera.txt b/samples/virtual_gallery/kapture/all/sensors/records_camera.txt
index 2d4700f..02536b9 100644
--- a/samples/virtual_gallery/kapture/all/sensors/records_camera.txt
+++ b/samples/virtual_gallery/kapture/all/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, training_camera_0, training/gallery_light1_loop1/frames/rgb/camera_0/rgb_00000.jpg
 0, training_camera_1, training/gallery_light1_loop1/frames/rgb/camera_1/rgb_00000.jpg
diff --git a/samples/virtual_gallery/kapture/all/sensors/rigs.txt b/samples/virtual_gallery/kapture/all/sensors/rigs.txt
index 80d3ade..e8ceda4 100644
--- a/samples/virtual_gallery/kapture/all/sensors/rigs.txt
+++ b/samples/virtual_gallery/kapture/all/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 training_rig, training_camera_0,  1.0,  0.0,  0.0,  0.0,  0.0,  0.0, -0.1
 training_rig, training_camera_1, -0.8660254037844386,  0.0,  0.5,  0.0,  0.0,  0.0, -0.1
diff --git a/samples/virtual_gallery/kapture/all/sensors/sensors.txt b/samples/virtual_gallery/kapture/all/sensors/sensors.txt
index 62ce048..a75953c 100644
--- a/samples/virtual_gallery/kapture/all/sensors/sensors.txt
+++ b/samples/virtual_gallery/kapture/all/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 training_camera_0, , camera, PINHOLE, 1920, 1080, 1371.022, 1371.022, 959.5, 539.5
 training_camera_1, , camera, PINHOLE, 1920, 1080, 1371.022, 1371.022, 959.5, 539.5
diff --git a/samples/virtual_gallery/kapture/all/sensors/trajectories.txt b/samples/virtual_gallery/kapture/all/sensors/trajectories.txt
index a699bdf..aa18faa 100644
--- a/samples/virtual_gallery/kapture/all/sensors/trajectories.txt
+++ b/samples/virtual_gallery/kapture/all/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, training_camera_0, 0.9821781959143432, -0.0, 0.1879520988721492, -0.0, 2.798107, 1.65, 1.618328
        0, training_camera_1, -0.9445673294926769, -0.0, 0.32831777298080134, -2.220446049250313e-16, -0.08906257, 1.65, 3.182396
diff --git a/samples/virtual_gallery/kapture/reduced/sensors/records_camera.txt b/samples/virtual_gallery/kapture/reduced/sensors/records_camera.txt
index bd58b5a..fb1a363 100644
--- a/samples/virtual_gallery/kapture/reduced/sensors/records_camera.txt
+++ b/samples/virtual_gallery/kapture/reduced/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, training_camera_2, training/gallery_light4_loop1/frames/rgb/camera_2/rgb_00000.jpg
 1, training_camera_2, training/gallery_light4_loop1/frames/rgb/camera_2/rgb_00001.jpg
diff --git a/samples/virtual_gallery/kapture/reduced/sensors/rigs.txt b/samples/virtual_gallery/kapture/reduced/sensors/rigs.txt
index 80d3ade..e8ceda4 100644
--- a/samples/virtual_gallery/kapture/reduced/sensors/rigs.txt
+++ b/samples/virtual_gallery/kapture/reduced/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 training_rig, training_camera_0,  1.0,  0.0,  0.0,  0.0,  0.0,  0.0, -0.1
 training_rig, training_camera_1, -0.8660254037844386,  0.0,  0.5,  0.0,  0.0,  0.0, -0.1
diff --git a/samples/virtual_gallery/kapture/reduced/sensors/sensors.txt b/samples/virtual_gallery/kapture/reduced/sensors/sensors.txt
index 404290f..4a716d1 100644
--- a/samples/virtual_gallery/kapture/reduced/sensors/sensors.txt
+++ b/samples/virtual_gallery/kapture/reduced/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 training_camera_2, , camera, PINHOLE, 1920, 1080, 1371.022, 1371.022, 959.5, 539.5
 testing_light_4_occlusion_3_frame_0, , camera, PINHOLE, 1920, 1080, 1339.994, 1339.994, 959.5, 539.5
diff --git a/samples/virtual_gallery/kapture/reduced/sensors/trajectories.txt b/samples/virtual_gallery/kapture/reduced/sensors/trajectories.txt
index 0b25ada..8355024 100644
--- a/samples/virtual_gallery/kapture/reduced/sensors/trajectories.txt
+++ b/samples/virtual_gallery/kapture/reduced/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, training_camera_2, 0.6538603483885627, -0.0, -0.7566152554668637, -0.0, -2.88717, 1.65, 1.464067
        1, training_camera_2, 0.6356313421492913, -0.0, -0.77199274405754, -0.0, -2.797724, 1.65, 1.427949
diff --git a/samples/virtual_gallery/kapture/training/sensors/records_camera.txt b/samples/virtual_gallery/kapture/training/sensors/records_camera.txt
index aefdf5e..eb69d6e 100644
--- a/samples/virtual_gallery/kapture/training/sensors/records_camera.txt
+++ b/samples/virtual_gallery/kapture/training/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, training_camera_0, training/gallery_light1_loop1/frames/rgb/camera_0/rgb_00000.jpg
 0, training_camera_1, training/gallery_light1_loop1/frames/rgb/camera_1/rgb_00000.jpg
diff --git a/samples/virtual_gallery/kapture/training/sensors/rigs.txt b/samples/virtual_gallery/kapture/training/sensors/rigs.txt
index 80d3ade..e8ceda4 100644
--- a/samples/virtual_gallery/kapture/training/sensors/rigs.txt
+++ b/samples/virtual_gallery/kapture/training/sensors/rigs.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # rig_id, sensor_id, qw, qx, qy, qz, tx, ty, tz
 training_rig, training_camera_0,  1.0,  0.0,  0.0,  0.0,  0.0,  0.0, -0.1
 training_rig, training_camera_1, -0.8660254037844386,  0.0,  0.5,  0.0,  0.0,  0.0, -0.1
diff --git a/samples/virtual_gallery/kapture/training/sensors/sensors.txt b/samples/virtual_gallery/kapture/training/sensors/sensors.txt
index 2b1004e..18edaba 100644
--- a/samples/virtual_gallery/kapture/training/sensors/sensors.txt
+++ b/samples/virtual_gallery/kapture/training/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 training_camera_0, , camera, PINHOLE, 1920, 1080, 1371.022, 1371.022, 959.5, 539.5
 training_camera_1, , camera, PINHOLE, 1920, 1080, 1371.022, 1371.022, 959.5, 539.5
diff --git a/samples/virtual_gallery/kapture/training/sensors/trajectories.txt b/samples/virtual_gallery/kapture/training/sensors/trajectories.txt
index cc728ed..19fe25e 100644
--- a/samples/virtual_gallery/kapture/training/sensors/trajectories.txt
+++ b/samples/virtual_gallery/kapture/training/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, training_camera_0, 0.9821781959143432, -0.0, 0.1879520988721492, -0.0, 2.798107, 1.65, 1.618328
        0, training_camera_1, -0.9445673294926769, -0.0, 0.32831777298080134, -2.220446049250313e-16, -0.08906257, 1.65, 3.182396
diff --git a/tools/kapture_download_dataset.py b/tools/kapture_download_dataset.py
index 45440a7..58191f3 100755
--- a/tools/kapture_download_dataset.py
+++ b/tools/kapture_download_dataset.py
@@ -20,6 +20,8 @@
 import kapture.utils.logging
 from kapture.converter.downloader.download import download_file, get_remote_file_size
 from kapture.converter.downloader.archives import untar_file, compute_sha256sum
+from kapture.io.csv import get_version_from_csv_file
+from kapture.utils.upgrade import upgrade_1_0_to_1_1_inplace
 
 logger = logging.getLogger('downloader')
 logging.basicConfig(format='%(levelname)-8s::%(name)s: %(message)s')
@@ -262,10 +264,37 @@ def install(self,
 
         # done
         self.mark_as_installed()
+        self.upgrade()
         logger.debug(f'done installing {self._name}')
         status = self.prob_status()
         return status
 
+    def upgrade(self):
+        # upgrade ?
+        status = self.prob_status()
+        if status == 'installed':
+            # list all sensors.txt files
+            filelist = [os.path.join(dp, f) for dp, dn, filenames in os.walk(self._install_local_path)
+                        for f in filenames if f == 'sensors.txt']
+            upgrade_sucessful = False
+            # check version
+            for filename in filelist:
+                version = get_version_from_csv_file(filename)
+                if version is None or version == '1.0':
+                    logger.debug(f'upgrading {filename} from version {version} to 1.1')
+                    kapture_path = path.dirname(path.dirname(filename))
+                    # run inplace upgrade script
+                    upgrade_1_0_to_1_1_inplace(kapture_path, None, None, None, 'L2', 'L2')
+                    logger.info(f'{kapture_path} - successfully upgraded to 1.1')
+                elif version == '1.1':
+                    logger.info(f'{filename} already in 1.1, no need to upgrade')
+                else:
+                    logger.warning(f'{filename} - version {version} is unknown')
+            return upgrade_sucessful
+        else:
+            logger.warning('dataset not yet installed, cannot attempt upgrade')
+            return False
+
 
 def load_datasets_from_index(
         index_filepath: str,
@@ -360,6 +389,11 @@ def kapture_download_dataset_cli():
     parser_download.add_argument('dataset', nargs='*', default=[],
                                  help='name of the dataset to download. Can use unix-like wildcard.')
     ####################################################################################################################
+    parser_install = subparsers.add_parser('upgrade', help='upgrade dataset to 1.1')
+    parser_install.set_defaults(cmd='upgrade')
+    parser_install.add_argument('dataset', nargs='*', default=[],
+                                help='name of the dataset to download. Can use unix-like wildcard.')
+    ####################################################################################################################
 
     args = parser.parse_args()
 
@@ -420,6 +454,20 @@ def kapture_download_dataset_cli():
                 status = dataset.install(force_overwrite=args.force, no_cleaning=args.no_cleaning)
                 logger.info(f'{name} install: ' + 'successful' if status == 'installed' else 'failed')
 
+        elif args.cmd == 'upgrade':
+            logger.debug(f'will install dataset: {args.dataset} ...')
+            dataset_index = load_datasets_from_index(index_filepath=index_filepath,
+                                                     install_path=args.install_path,
+                                                     filter_patterns=args.dataset)
+            if len(dataset_index) == 0:
+                raise ValueError('There is no matching dataset.'
+                                 ' Make sure you used quotes (") to prevent shell interpreting * wildcard.')
+
+            logger.info(f'{len(dataset_index)} dataset will be installed.')
+            for name, dataset in dataset_index.items():
+                logger.info(f'{name}: starting installation  ...')
+                dataset.upgrade()
+
         elif args.cmd == 'download':
             logger.debug(f'will download dataset: {args.dataset} ...')
             dataset_index = load_datasets_from_index(index_filepath=index_filepath,
diff --git a/tools/kapture_export_colmap.py b/tools/kapture_export_colmap.py
index b1a7c91..25bb7aa 100755
--- a/tools/kapture_export_colmap.py
+++ b/tools/kapture_export_colmap.py
@@ -37,6 +37,8 @@ def colmap_command_line():
     parser.add_argument('--pairsfile-path', default=None, type=str,
                         help=('text file in the csv format; where each line is image_name1, image_name2, score '
                               'which contains the matches to export'))
+    parser.add_argument('-kpt', '--keypoints-type', default=None, help='kapture keypoints type.')
+    parser.add_argument('-desc', '--descriptors-type', default=None, help='kapture descriptors type.')
     parser.add_argument('-db', '--database', required=True,
                         help='database output path.')
     parser.add_argument('-txt', '--reconstruction',
@@ -56,7 +58,9 @@ def colmap_command_line():
         for k, v in vars(args).items()))
 
     logger.info('exporting colmap ...')
-    export_colmap(args.kapture, args.database, args.reconstruction, args.rig, args.force, args.pairsfile_path)
+    export_colmap(args.kapture, args.database, args.reconstruction,
+                  args.keypoints_type, args.descriptors_type,
+                  args.rig, args.force, args.pairsfile_path)
     logger.info('done.')
 
 
diff --git a/tools/kapture_export_image_list.py b/tools/kapture_export_image_list.py
index 0c103fa..5c473e0 100755
--- a/tools/kapture_export_image_list.py
+++ b/tools/kapture_export_image_list.py
@@ -5,6 +5,7 @@
 Export the list of images of a kapture into a file listing the image files, and optionally their camera parameters.
 """
 
+from kapture.core.Records import RecordBluetooth, RecordGnss, RecordGyroscope, RecordsAccelerometer, RecordsDepth, RecordsMagnetic
 import logging
 import os
 import argparse
@@ -30,8 +31,14 @@ def export_image_list(kapture_path: str, output_path: str, export_camera_params:
     """
     os.makedirs(os.path.dirname(output_path), exist_ok=True)
     safe_remove_file(output_path, force)
-
-    kapture_to_export = kapture_from_dir(kapture_path)
+    skip_heavy_useless = [kapture.Trajectories,
+                          kapture.RecordsLidar, kapture.RecordsWifi,
+                          kapture.RecordsAccelerometer, kapture.RecordBluetooth,
+                          kapture.RecordGnss, kapture.RecordGyroscope,
+                          kapture.RecordsDepth, kapture.RecordsMagnetic,
+                          kapture.Keypoints, kapture.Descriptors, kapture.GlobalFeatures,
+                          kapture.Matches, kapture.Points3d, kapture.Observations]
+    kapture_to_export = kapture_from_dir(kapture_path, skip_list=skip_heavy_useless)
     output_content = []
     logger.info('starting conversion...')
     for _, sensor_id, filename in kapture.flatten(kapture_to_export.records_camera, is_sorted=True):
diff --git a/tools/kapture_export_openmvg.py b/tools/kapture_export_openmvg.py
index 141445c..3720089 100755
--- a/tools/kapture_export_openmvg.py
+++ b/tools/kapture_export_openmvg.py
@@ -56,7 +56,8 @@ def export_openmvg_command_line():
                                       ''')
     parser.add_argument('--image_path_flatten', action='store_true',
                         help='flatten image subpath, to make sure there is no collision in image names.')
-
+    parser.add_argument('-kpt', '--keypoints-type', default=None, help='kapture keypoints type.')
+    parser.add_argument('-desc', '--descriptors-type', default=None, help='kapture descriptors type.')
     args = parser.parse_args()
     logger.setLevel(args.verbose)
 
@@ -102,7 +103,9 @@ def export_openmvg_command_line():
         openmvg_matches_file_path=args.matches,
         image_action=args.image_action,
         image_path_flatten=args.image_path_flatten,
-        force=args.force
+        force=args.force,
+        keypoints_type=args.keypoints_type,
+        descriptors_type=args.descriptors_type
     )
 
 
diff --git a/tools/kapture_export_opensfm.py b/tools/kapture_export_opensfm.py
index a11bfb6..c71b409 100755
--- a/tools/kapture_export_opensfm.py
+++ b/tools/kapture_export_opensfm.py
@@ -36,6 +36,8 @@ def export_opensfm_command_line():
                              f'{", ".join(a.name for a in TransferAction)}')
     parser.add_argument('-f', '-y', '--force', action='store_true', default=False,
                         help='Force delete opensfm data if already exists.')
+    parser.add_argument('-kpt', '--keypoints-type', default=None, help='kapture keypoints type.')
+    parser.add_argument('-desc', '--descriptors-type', default=None, help='kapture descriptors type.')
     args = parser.parse_args()
     ####################################################################################################################
     logger.setLevel(args.verbose)
@@ -50,7 +52,7 @@ def export_opensfm_command_line():
 
     args.kapture = path.normpath(path.abspath(args.kapture))
     args.opensfm = path.normpath(path.abspath(args.opensfm))
-    export_opensfm(args.kapture, args.opensfm, args.force, args.transfer)
+    export_opensfm(args.kapture, args.opensfm, args.force, args.transfer, args.keypoints_type, args.descriptors_type)
 
 
 if __name__ == '__main__':
diff --git a/tools/kapture_export_ply.py b/tools/kapture_export_ply.py
index 24fd03f..dfe27f1 100755
--- a/tools/kapture_export_ply.py
+++ b/tools/kapture_export_ply.py
@@ -27,6 +27,7 @@
 
 def plot_ply(kapture_path: str,  # noqa: C901
              ply_path: str,
+             keypoints_type: Optional[str],
              axis_length: float,
              only: Optional[list] = None,
              skip: Optional[list] = None
@@ -44,66 +45,78 @@ def plot_ply(kapture_path: str,  # noqa: C901
         os.makedirs(ply_path, exist_ok=True)
 
         logger.info('loading data ...')
-        kapture_data = csv.kapture_from_dir(kapture_path)
-
-        def _should_do(choice: str) -> bool:
-            ok_only = only is None or choice in only
-            ok_skip = skip is None or choice not in skip
-            return ok_only or ok_skip
-
-        logger.info('plotting  ...')
-        if _should_do('rigs') and kapture_data.rigs:
-            logger.info(f'creating {len(kapture_data.rigs)} rigs.')
-            for rig_id, rig in kapture_data.rigs.items():
-                rig_ply_filepath = path.join(ply_path, f'rig_{rig_id}.ply')
-                logger.info(f'creating rig file : {rig_ply_filepath}.')
-                logger.debug(rig_ply_filepath)
-                ply.rig_to_ply(rig_ply_filepath, rig, axis_length)
-
-        if _should_do('trajectories') and kapture_data.trajectories:
-            trajectories_ply_filepath = path.join(ply_path, 'trajectories.ply')
-            logger.info(f'creating trajectories file : {trajectories_ply_filepath}')
-            ply.trajectories_to_ply(trajectories_ply_filepath, kapture_data.trajectories, axis_length)
-
-        if _should_do('points3d') and kapture_data.points3d:
-            points3d_ply_filepath = path.join(ply_path, 'points3d.ply')
-            logger.info(f'creating 3D points file : {points3d_ply_filepath}')
-            ply.points3d_to_ply(points3d_ply_filepath, kapture_data.points3d)
-
-        if _should_do('keypoints') and kapture_data.keypoints:
-            logger.info(f'creating keypoints in 3D : {kapture.io.features.get_keypoints_fullpath(ply_path)}')
-            keypoints_dsize = kapture_data.keypoints.dsize
-            keypoints_dtype = kapture_data.keypoints.dtype
-            keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(kapture_data.keypoints, kapture_path)
-            for image_filename, keypoints_filepath in tqdm(keypoints_filepaths.items(),
-                                                           disable=logger.level >= logging.CRITICAL):
-                image_filepath = kapture.io.records.get_image_fullpath(kapture_path, image_filename)
-                image_keypoints_filepath = kapture.io.features.get_keypoints_fullpath(ply_path, image_filename) + '.jpg'
-                image.image_keypoints_to_image_file(
-                    image_keypoints_filepath, image_filepath, keypoints_filepath, keypoints_dtype, keypoints_dsize)
-
-        if _should_do('depth') and kapture_data.records_depth:
-            logger.info('creating depth maps in 3D.')
-            depth_records_filepaths = kapture.io.records.depth_maps_to_filepaths(kapture_data.records_depth,
-                                                                                 kapture_path)
-            map_depth_to_sensor = {depth_map_name: sensor_id
-                                   for _, sensor_id, depth_map_name in kapture.flatten(kapture_data.records_depth)}
-            for depth_map_name, depth_map_filepath in tqdm(depth_records_filepaths.items(),
-                                                           disable=logger.level >= logging.CRITICAL):
-                depth_png_filepath = path.join(ply_path, f'depth_images/{depth_map_name}.png')
-                logger.debug(f'creating depth map file {depth_png_filepath}')
-                os.makedirs(path.dirname(depth_png_filepath), exist_ok=True)
-                depth_sensor_id = map_depth_to_sensor[depth_map_name]
-                depth_map_sizes = tuple(int(x) for x in kapture_data.sensors[depth_sensor_id].sensor_params[1:3])
-                depth_map = records_depth_from_file(depth_map_filepath, depth_map_sizes)
-                # min max scaling
-                depth_map = (depth_map - depth_map.min()) / (depth_map.max() - depth_map.min())
-                depth_map = (depth_map * 255.).astype(np.uint8)
-                depth_image = Image.fromarray(depth_map)
-                depth_image.save(depth_png_filepath)
-
-        logger.info('done.')
-
+        with csv.get_all_tar_handlers(kapture_path) as tar_handlers:
+            kapture_data = csv.kapture_from_dir(kapture_path, tar_handlers=tar_handlers)
+
+            def _should_do(choice: str) -> bool:
+                ok_only = only is None or choice in only
+                ok_skip = skip is None or choice not in skip
+                return ok_only or ok_skip
+
+            logger.info('plotting  ...')
+            if _should_do('rigs') and kapture_data.rigs:
+                logger.info(f'creating {len(kapture_data.rigs)} rigs.')
+                for rig_id, rig in kapture_data.rigs.items():
+                    rig_ply_filepath = path.join(ply_path, f'rig_{rig_id}.ply')
+                    logger.info(f'creating rig file : {rig_ply_filepath}.')
+                    logger.debug(rig_ply_filepath)
+                    ply.rig_to_ply(rig_ply_filepath, rig, axis_length)
+
+            if _should_do('trajectories') and kapture_data.trajectories:
+                trajectories_ply_filepath = path.join(ply_path, 'trajectories.ply')
+                logger.info(f'creating trajectories file : {trajectories_ply_filepath}')
+                ply.trajectories_to_ply(trajectories_ply_filepath, kapture_data.trajectories, axis_length)
+
+            if _should_do('points3d') and kapture_data.points3d:
+                points3d_ply_filepath = path.join(ply_path, 'points3d.ply')
+                logger.info(f'creating 3D points file : {points3d_ply_filepath}')
+                ply.points3d_to_ply(points3d_ply_filepath, kapture_data.points3d)
+
+            if _should_do('keypoints') and kapture_data.keypoints:
+                if keypoints_type is None:
+                    if len(kapture_data.keypoints) == 1:
+                        keypoints_type = next(iter(kapture_data.keypoints.keys()))
+                    else:
+                        raise ValueError('should_do(keypoints) is true but keypoints_type '
+                                         'is None and could be multiple values, please specify')
+
+                logger.info('creating keypoints in 3D : '
+                            f'{kapture.io.features.get_keypoints_fullpath(keypoints_type, ply_path)}')
+                keypoints_dsize = kapture_data.keypoints[keypoints_type].dsize
+                keypoints_dtype = kapture_data.keypoints[keypoints_type].dtype
+                keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(kapture_data.keypoints[keypoints_type],
+                                                                                 keypoints_type,
+                                                                                 kapture_path,
+                                                                                 tar_handlers)
+                for image_filename, keypoints_filepath in tqdm(keypoints_filepaths.items(),
+                                                               disable=logger.level >= logging.CRITICAL):
+                    image_filepath = kapture.io.records.get_image_fullpath(kapture_path, image_filename)
+                    image_keypoints_filepath = kapture.io.features.get_keypoints_fullpath(keypoints_type,
+                                                                                          ply_path,
+                                                                                          image_filename) + '.jpg'
+                    image.image_keypoints_to_image_file(
+                        image_keypoints_filepath, image_filepath, keypoints_filepath, keypoints_dtype, keypoints_dsize)
+
+            if _should_do('depth') and kapture_data.records_depth:
+                logger.info('creating depth maps in 3D.')
+                depth_records_filepaths = kapture.io.records.depth_maps_to_filepaths(kapture_data.records_depth,
+                                                                                     kapture_path)
+                map_depth_to_sensor = {depth_map_name: sensor_id
+                                       for _, sensor_id, depth_map_name in kapture.flatten(kapture_data.records_depth)}
+                for depth_map_name, depth_map_filepath in tqdm(depth_records_filepaths.items(),
+                                                               disable=logger.level >= logging.CRITICAL):
+                    depth_png_filepath = path.join(ply_path, f'depth_images/{depth_map_name}.png')
+                    logger.debug(f'creating depth map file {depth_png_filepath}')
+                    os.makedirs(path.dirname(depth_png_filepath), exist_ok=True)
+                    depth_sensor_id = map_depth_to_sensor[depth_map_name]
+                    depth_map_sizes = tuple(int(x) for x in kapture_data.sensors[depth_sensor_id].sensor_params[1:3])
+                    depth_map = records_depth_from_file(depth_map_filepath, depth_map_sizes)
+                    # min max scaling
+                    depth_map = (depth_map - depth_map.min()) / (depth_map.max() - depth_map.min())
+                    depth_map = (depth_map * 255.).astype(np.uint8)
+                    depth_image = Image.fromarray(depth_map)
+                    depth_image.save(depth_png_filepath)
+            logger.info('done.')
     except Exception as e:
         logging.critical(e)
         raise
@@ -137,6 +150,7 @@ def export_ply_command_line() -> None:
                         help='output directory (PLY file format).')
     parser.add_argument('--only', nargs='+', choices=plot_choices.keys(), default=[],
                         help='things to plot : ' + ' // '.join('{}: {}'.format(k, v) for k, v in plot_choices.items()))
+    parser.add_argument('--keypoints-type', default=None, help='types of keypoints.')
     parser.add_argument('--skip', nargs='+', choices=plot_choices.keys(), default=['keypoints'],
                         help='things to not plot : ' + ' // '.join(plot_choices.keys()))
     parser.add_argument('--axis_length', type=float, default=0.1,
@@ -154,7 +168,7 @@ def export_ply_command_line() -> None:
     if args.only:
         args.skip = []
     logger.debug(''.join(['\n\t{:13} = {}'.format(k, v) for k, v in vars(args).items()]))
-    plot_ply(args.input, args.output, args.axis_length, args.only, args.skip)
+    plot_ply(args.input, args.output, args.keypoints_type, args.axis_length, args.only, args.skip)
 
 
 if __name__ == '__main__':
diff --git a/tools/kapture_import_RobotCar_Seasons.py b/tools/kapture_import_RobotCar_Seasons.py
index f1af7b8..2b4410c 100755
--- a/tools/kapture_import_RobotCar_Seasons.py
+++ b/tools/kapture_import_RobotCar_Seasons.py
@@ -56,6 +56,7 @@
 from kapture.converter.colmap.import_colmap import import_colmap
 
 logger = logging.getLogger('RobotCar_Seasons')
+LOCAL_FEATURE_TYPE = 'SIFT'
 
 
 def import_robotcar_cameras(intrinsics_dir_path: str) -> kapture.Sensors:
@@ -134,6 +135,8 @@ def import_robotcar_colmap_location(robotcar_path: str,  # noqa: C901: function
     kapture_data = import_colmap(kapture_dir_path=kapture_path,
                                  colmap_reconstruction_dir_path=colmap_reconstruction_fullpath,
                                  colmap_images_dir_path=path.join(robotcar_path, "images"),
+                                 keypoints_type=LOCAL_FEATURE_TYPE,
+                                 descriptors_type=LOCAL_FEATURE_TYPE,
                                  skip_reconstruction=skip_reconstruction,
                                  images_import_strategy=TransferAction.skip)  # since filenames are incorrect
 
@@ -165,8 +168,9 @@ def import_robotcar_colmap_location(robotcar_path: str,  # noqa: C901: function
         # observations.txt: png -> jpg
         new_observations = kapture.Observations()
         for point3d_idx in kapture_data.observations:
-            for image_path, keypoint_id in kapture_data.observations[point3d_idx]:
-                new_observations.add(point3d_idx, image_path.replace(".png", ".jpg"), int(keypoint_id))
+            for image_path, keypoint_id in kapture_data.observations[point3d_idx, LOCAL_FEATURE_TYPE]:
+                new_observations.add(point3d_idx, LOCAL_FEATURE_TYPE,
+                                     image_path.replace(".png", ".jpg"), int(keypoint_id))
         kapture_data.observations = new_observations
 
     # records_camera.txt
@@ -378,6 +382,8 @@ def _import_colmap_overcast_reference(robotcar_path, kapture_path, force_overwri
             colmap_database_filepath=colmap_db_path,
             colmap_reconstruction_dir_path='',
             colmap_images_dir_path=path.join(robotcar_path, "images"),
+            keypoints_type=LOCAL_FEATURE_TYPE,
+            descriptors_type=LOCAL_FEATURE_TYPE,
             no_geometric_filtering=True,
             force_overwrite_existing=force_overwrite_existing,
             images_import_strategy=TransferAction.skip
diff --git a/tools/kapture_import_bundler.py b/tools/kapture_import_bundler.py
index b2c843b..e84f5a2 100755
--- a/tools/kapture_import_bundler.py
+++ b/tools/kapture_import_bundler.py
@@ -55,6 +55,7 @@
 
 logger = logging.getLogger('bundler')
 MODEL = kapture.CameraType.RADIAL
+LOCAL_FEATURE_TYPE = 'sift'
 
 
 def import_bundler(bundler_path: str,
@@ -103,7 +104,7 @@ def import_bundler(bundler_path: str,
     images = kapture.RecordsCamera()
     trajectories = kapture.Trajectories() if not ignore_trajectories else None
     points3d = [] if add_reconstruction else None
-    keypoints = kapture.Keypoints('sift', np.float32, 2) if add_reconstruction else None
+    keypoints = None
     observations = kapture.Observations() if add_reconstruction else None
     image_mapping = []  # bundler camera_id -> (name, width, height)
     for i in range(0, number_of_cameras):
@@ -148,7 +149,6 @@ def import_bundler(bundler_path: str,
             trajectories[(i, camera_id)] = kapture.PoseTransform.compose([transformation, pose, transformation])
 
     if points3d is not None and number_of_points > 0:
-        assert keypoints is not None
         assert observations is not None
         offset += number_of_cameras * number_of_lines_per_camera
         number_of_lines_per_point = 3  # position color viewlist
@@ -189,18 +189,20 @@ def import_bundler(bundler_path: str,
                     known_keypoints[(file_name, keypoint_id)] = len(local_keypoints[file_name])
                     local_keypoints[file_name].append([x, y])
                 keypoint_idx = known_keypoints[(file_name, keypoint_id)]
-                observations.add(i, file_name, keypoint_idx)
+                observations.add(i, LOCAL_FEATURE_TYPE, file_name, keypoint_idx)
             points3d.append(position + color)
         points3d = np.array(points3d)
 
         # finally, convert local_keypoints to np.ndarray and add them to the global keypoints variable
-        keypoints = kapture.Keypoints('sift', np.float32, 2)
+        sift_keypoints = kapture.Keypoints(LOCAL_FEATURE_TYPE, np.float32, 2)
         for image_filename, keypoints_array in local_keypoints.items():
-            keypoints_np_array = np.array(keypoints_array).astype(np.float32)
-            keypoints_out_path = kapture.io.features.get_keypoints_fullpath(kapture_dir_path, image_filename)
+            keypoints_np_array = np.array(keypoints_array, dtype=np.float32)
+            keypoints_out_path = kapture.io.features.get_keypoints_fullpath(LOCAL_FEATURE_TYPE,
+                                                                            kapture_dir_path,
+                                                                            image_filename)
             kapture.io.features.image_keypoints_to_file(keypoints_out_path, keypoints_np_array)
-            keypoints.add(image_filename)
-
+            sift_keypoints.add(image_filename)
+        keypoints = {LOCAL_FEATURE_TYPE: sift_keypoints}
     if points3d is not None:
         points3d = kapture.Points3d(points3d)
 
diff --git a/tools/kapture_import_colmap.py b/tools/kapture_import_colmap.py
index b6c8b99..94ac46f 100755
--- a/tools/kapture_import_colmap.py
+++ b/tools/kapture_import_colmap.py
@@ -52,6 +52,8 @@ def colmap_command_line() -> None:
                         help='path to COLMAP rig json file.')
     parser.add_argument('-o', '-k', '--kapture', required=True,
                         help='output directory where to save kapture files.')
+    parser.add_argument('-kpt', '--keypoints-type', default='SIFT', help='kapture keypoints type.')
+    parser.add_argument('-desc', '--descriptors-type', default='SIFT', help='kapture descriptors type.')
     parser.add_argument('--skip_reconstruction', action='store_true', default=False,
                         help='skip the import of the kapture/reconstruction,'
                              'ie. Keypoints, Descriptors, Matches, Points3d, Observations.')
@@ -82,6 +84,8 @@ def colmap_command_line() -> None:
                                  args.reconstruction,
                                  args.images,
                                  args.rig,
+                                 args.keypoints_type,
+                                 args.descriptors_type,
                                  args.no_geometric_filtering,
                                  args.skip_reconstruction,
                                  args.force,
diff --git a/tools/kapture_import_nvm.py b/tools/kapture_import_nvm.py
index 6b92fbb..5163040 100755
--- a/tools/kapture_import_nvm.py
+++ b/tools/kapture_import_nvm.py
@@ -49,6 +49,7 @@
 
 logger = logging.getLogger('nvm')
 MODEL = kapture.CameraType.SIMPLE_RADIAL
+LOCAL_FEATURE_TYPE = 'sift'
 
 
 def import_nvm(nvm_file_path: str,
@@ -105,9 +106,14 @@ def import_nvm(nvm_file_path: str,
     cameras = kapture.Sensors()
     images = kapture.RecordsCamera()
     trajectories = kapture.Trajectories() if not ignore_trajectories else None
-    observations = kapture.Observations() if add_reconstruction else None if add_reconstruction else None
-    keypoints = kapture.Keypoints('sift', np.float32, 2) if add_reconstruction else None
-    points3d = [] if add_reconstruction else None
+    if add_reconstruction:
+        observations = kapture.Observations()
+        keypoints = {LOCAL_FEATURE_TYPE: kapture.Keypoints(LOCAL_FEATURE_TYPE, np.float32, 2)}
+        points3d = []
+    else:
+        observations = None
+        keypoints = None
+        points3d = None
 
     # break if number of cameras == 0 or reached end of file
     while True:
@@ -154,7 +160,7 @@ def import_nvm(nvm_file_path: str,
                            image_idx_to_image_name,
                            filter_list,
                            points3d,
-                           keypoints,
+                           keypoints[LOCAL_FEATURE_TYPE],
                            observations)
 
         point_id_offset += number_of_points
@@ -300,12 +306,14 @@ def parse_points3d(kapture_path: str,
                 local_keypoints[file_name].append([x, y])
             keypoint_idx = known_keypoints[(file_name, feature_index)]
             point3d_idx = i + point_id_offset
-            observations.add(point3d_idx, file_name, keypoint_idx)
+            observations.add(point3d_idx, LOCAL_FEATURE_TYPE, file_name, keypoint_idx)
 
     # finally, convert local_keypoints to np.ndarray and add them to the global keypoints variable
     for image_filename, keypoints_array in local_keypoints.items():
         keypoints_np_array = np.array(keypoints_array, dtype=np.float32)
-        keypoints_filepath = kapture.io.features.get_keypoints_fullpath(kapture_path, image_filename)
+        keypoints_filepath = kapture.io.features.get_keypoints_fullpath(LOCAL_FEATURE_TYPE,
+                                                                        kapture_path,
+                                                                        image_filename)
         kapture.io.features.image_keypoints_to_file(keypoints_filepath, keypoints_np_array)
         keypoints.add(image_filename)
 
diff --git a/tools/kapture_import_openmvg.py b/tools/kapture_import_openmvg.py
index 65562c3..dd9783c 100755
--- a/tools/kapture_import_openmvg.py
+++ b/tools/kapture_import_openmvg.py
@@ -43,7 +43,7 @@ def import_openmvg_command_line() -> None:
     parser.add_argument('-r', '--regions',
                         help='path to openMVG directory containing region files (feat, desc).')
     parser.add_argument('-m', '--matches',
-                        help='path to openMVG matches file (eg. matches.f.bin')
+                        help='path to openMVG matches file (eg. matches.f.txt')
     parser.add_argument('-o', '-k', '--kapture', required=True,
                         help='top directory where to save Kapture files.')
     parser.add_argument('--image_action', default='root_link', type=TransferAction,
@@ -75,7 +75,7 @@ def import_openmvg_command_line() -> None:
         if args.regions is None:
             args.regions = args.openmvg
         if args.matches is None:
-            args.matches = next((path.join(args.openmvg, fn) for fn in ['matches.f.bin', 'matches.putative.bin']))
+            args.matches = next((path.join(args.openmvg, fn) for fn in ['matches.f.txt', 'matches.putative.txt']))
 
     # normalizes paths
     if args.sfm_data is not None:
@@ -84,6 +84,7 @@ def import_openmvg_command_line() -> None:
         args.regions = path.normpath(path.abspath(args.regions))
     if args.matches is not None:
         args.matches = path.normpath(path.abspath(args.matches))
+        assert args.matches.endswith('.txt')
 
     # sanity check
     if all(i is None for i in [args.sfm_data, args.regions, args.matches]):
diff --git a/tools/kapture_import_opensfm.py b/tools/kapture_import_opensfm.py
index 3a95d26..18c2303 100755
--- a/tools/kapture_import_opensfm.py
+++ b/tools/kapture_import_opensfm.py
@@ -35,6 +35,8 @@ def import_opensfm_command_line():
                              f'{", ".join(a.name for a in TransferAction)}')
     parser.add_argument('-f', '-y', '--force', action='store_true', default=False,
                         help='Force delete kapture if already exists.')
+    parser.add_argument('--keypoints-type', default='HessianAffine', help='kapture keypoints type.')
+    parser.add_argument('--descriptors-type', default='HOG', help='kapture descriptors type.')
     args = parser.parse_args()
     ####################################################################################################################
     logger.setLevel(args.verbose)
@@ -50,7 +52,7 @@ def import_opensfm_command_line():
     args.input = path.normpath(path.abspath(args.input))
     args.output = path.normpath(path.abspath(args.output))
 
-    import_opensfm(args.input, args.output, args.force, args.transfer)
+    import_opensfm(args.input, args.output, args.force, args.transfer, args.keypoints_type, args.descriptors_type)
 
 
 if __name__ == '__main__':
diff --git a/tools/kapture_merge.py b/tools/kapture_merge.py
index bad0675..c9c497b 100755
--- a/tools/kapture_merge.py
+++ b/tools/kapture_merge.py
@@ -16,7 +16,7 @@
 
 from kapture.algo.merge_keep_ids import merge_keep_ids
 from kapture.algo.merge_remap import merge_remap
-from kapture.io.csv import kapture_from_dir, kapture_to_dir
+from kapture.io.csv import get_all_tar_handlers, kapture_from_dir, kapture_to_dir
 from kapture.io.records import get_image_fullpath
 from kapture.io.structure import delete_existing_kapture_files
 from kapture.io.records import TransferAction
@@ -77,17 +77,26 @@ def merge_kaptures(kapture_path_list: List[str],  # noqa: C901: function really
         skip_list.append(kapture.Observations)
 
     kapture_data_list = []
-    for kapture_path in kapture_path_list:
-        logger.info(f'Loading {kapture_path}')
-        kapture_data = kapture_from_dir(kapture_path)
-        kapture_data_list.append(kapture_data)
-
-    if keep_sensor_ids:
-        merged_kapture = merge_keep_ids(kapture_data_list, skip_list, kapture_path_list,
-                                        merged_path, images_import_strategy)
-    else:
-        merged_kapture = merge_remap(kapture_data_list, skip_list, kapture_path_list,
-                                     merged_path, images_import_strategy)
+    kapture_tarcollection_list = []
+    try:
+        for kapture_path in kapture_path_list:
+            logger.info(f'Loading {kapture_path}')
+            tar_handlers = get_all_tar_handlers(kapture_path)
+            kapture_data = kapture_from_dir(kapture_path, tar_handlers=tar_handlers)
+            kapture_data_list.append(kapture_data)
+            kapture_tarcollection_list.append(tar_handlers)
+
+        if keep_sensor_ids:
+            merged_kapture = merge_keep_ids(kapture_data_list, skip_list,
+                                            kapture_path_list, kapture_tarcollection_list,
+                                            merged_path, images_import_strategy)
+        else:
+            merged_kapture = merge_remap(kapture_data_list, skip_list,
+                                         kapture_path_list, kapture_tarcollection_list,
+                                         merged_path, images_import_strategy)
+    finally:
+        for tar_handlers in kapture_tarcollection_list:
+            tar_handlers.close()
 
     logger.info('Writing merged kapture data...')
     kapture_to_dir(merged_path, merged_kapture)
diff --git a/tools/kapture_print.py b/tools/kapture_print.py
index 9518013..87d6350 100755
--- a/tools/kapture_print.py
+++ b/tools/kapture_print.py
@@ -224,18 +224,28 @@ def print_features(kapture_data, output_stream, show_detail, show_all) -> None:
     """
     # image features
     for feature_name in ['keypoints', 'descriptors', 'global_features']:
-        feature = getattr(kapture_data, feature_name)
-        nb_feature = None if feature is None else len(list(feature))
+        feature_collection = getattr(kapture_data, feature_name)
+        nb_feature_types = None if feature_collection is None else len(list(feature_collection.keys()))
         if not show_detail:
-            print_key_value(f'nb {feature_name}', nb_feature, file=output_stream, show_none=show_all)
-        elif feature is not None or show_all:
+            print_key_value(f'nb types {feature_name}', nb_feature_types, file=output_stream, show_none=show_all)
+            for feature_type, features in feature_collection.items():
+                print_key_value(f' └─ nb images {feature_type} ', len(features), file=output_stream, show_none=show_all)
+        elif feature_collection is not None or show_all:
             print_title(feature_name, file=output_stream)
-            if feature is not None:
-                print_key_value(' ├─ kind ', feature.type_name, file=output_stream, show_none=show_all)
-                print_key_value(' ├─ data type', feature.dtype.__name__, file=output_stream, show_none=show_all)
-                print_key_value(' ├─ data size', feature.dsize, file=output_stream, show_none=show_all)
-            nb_images = len(feature) if feature is not None else None
-            print_key_value(' └─ nb images', nb_images, file=output_stream, show_none=show_all)
+            if feature_collection is not None:
+                for feature_type, features in feature_collection.items():
+                    print_key_value(' ├─ feature_type ', feature_type, file=output_stream, show_none=show_all)
+                    print_key_value(' | ├─ kind ', features.type_name, file=output_stream, show_none=show_all)
+                    print_key_value(' | ├─ data type', features.dtype.__name__, file=output_stream, show_none=show_all)
+                    print_key_value(' | ├─ data size', features.dsize, file=output_stream, show_none=show_all)
+                    if feature_name == 'descriptors':
+                        print_key_value(' | ├─ keypoints_type', features.keypoints_type,
+                                        file=output_stream, show_none=show_all)
+                    if feature_name != 'keypoints':
+                        print_key_value(' | ├─ metric_type', features.metric_type,
+                                        file=output_stream, show_none=show_all)
+                    print_key_value(' | └─ nb images ', len(list(features)), file=output_stream, show_none=show_all)
+            print_key_value(f'nb types {feature_name}', nb_feature_types, file=output_stream, show_none=show_all)
 
 
 def print_matches(kapture_data, output_stream, show_detail, show_all) -> None:
@@ -243,12 +253,19 @@ def print_matches(kapture_data, output_stream, show_detail, show_all) -> None:
     Prints the matches to the output stream
     """
     # matches
-    nb_matches = None if kapture_data.matches is None else len(list(kapture_data.matches))
+    nb_kpts_types = None if kapture_data.matches is None else len(list(kapture_data.matches.keys()))
     if not show_detail:
-        print_key_value('nb matching pairs', nb_matches, file=output_stream, show_none=show_all)
+        print_key_value(f'nb types ', nb_kpts_types, file=output_stream, show_none=show_all)
+        for kpt_type, matches in kapture_data.matches.items():
+            print_key_value(f' └─ nb matching pairs {kpt_type} ', len(list(matches)),
+                            file=output_stream, show_none=show_all)
     elif kapture_data.matches is not None or show_all:
         print_title('matches', file=output_stream)
-        print_key_value(' └─ nb pairs', nb_matches, file=output_stream, show_none=show_all)
+        if kapture_data.matches is not None:
+            for kpt_type, matches in kapture_data.matches.items():
+                print_key_value(' ├─ keypoints_type ', kpt_type, file=output_stream, show_none=show_all)
+                print_key_value(' | └─ nb pairs ', len(list(matches)), file=output_stream, show_none=show_all)
+            print_key_value(f'nb types ', nb_kpts_types, file=output_stream, show_none=show_all)
 
 
 def print_points(kapture_data, output_stream, show_detail, show_all) -> None:
@@ -265,7 +282,8 @@ def print_points(kapture_data, output_stream, show_detail, show_all) -> None:
     # observations
     nb_observations_3d = len(kapture_data.observations) if kapture_data.observations is not None else None
     nb_observations_2d = len([feat
-                              for feats in kapture_data.observations.values()
+                              for observations in kapture_data.observations.values()
+                              for feats in observations.values()
                               for feat in feats]) if kapture_data.observations is not None else None
     if not show_detail:
         print_key_value('nb observed 3-D points', nb_observations_3d, file=output_stream, show_none=show_all)
@@ -313,9 +331,10 @@ def print_command_line() -> None:
 
     args.input = path.abspath(args.input)
     # load
-    kapture_data = kapture.io.csv.kapture_from_dir(args.input)
-    do_print(kapture_data, args.input, args.output, args.detail, args.all,
-             args.timestamp_unit, args.timestamp_formatting)
+    with kapture.io.csv.get_all_tar_handlers(args.input) as tar_handlers:
+        kapture_data = kapture.io.csv.kapture_from_dir(args.input, tar_handlers=tar_handlers)
+        do_print(kapture_data, args.input, args.output, args.detail, args.all,
+                 args.timestamp_unit, args.timestamp_formatting)
 
 
 def do_print(
diff --git a/tools/kapture_upgrade_1_0_to_1_1.py b/tools/kapture_upgrade_1_0_to_1_1.py
new file mode 100644
index 0000000..671e938
--- /dev/null
+++ b/tools/kapture_upgrade_1_0_to_1_1.py
@@ -0,0 +1,226 @@
+#!/usr/bin/env python3
+# Copyright 2020-present NAVER Corp. Under BSD 3-clause license
+
+"""
+Convert kapture data in version 1.0 to version 1.1
+"""
+
+import logging
+import os
+import os.path as path
+import argparse
+from typing import Optional
+import shutil
+# import numpy as np like in kapture.io.csv
+# so that types written as "np.float32" are understood by read_old_image_features_csv
+import numpy as np  # noqa: F401
+
+import path_to_kapture  # noqa: F401
+import kapture
+import kapture.utils.logging
+from kapture.io.structure import delete_existing_kapture_files
+import kapture.io.features
+import kapture.io.csv
+from kapture.io.records import import_record_data_from_dir_auto
+from kapture.utils.paths import populate_files_in_dirpath
+from kapture.io.binary import TransferAction
+from kapture.utils.upgrade import CSV_FILENAMES_1_0, read_old_image_features_csv
+
+logger = logging.getLogger('upgrade_1_0_to_1_1')
+
+
+def upgrade_1_0_to_1_1(kapture_dirpath: str,
+                       output_path: str,
+                       keypoints_type: Optional[str],
+                       descriptors_type: Optional[str],
+                       global_features_type: Optional[str],
+                       descriptors_metric_type: str,
+                       global_features_metric_type: str,
+                       images_import_strategy: TransferAction,
+                       force_overwrite_existing: bool) -> None:
+    os.makedirs(output_path, exist_ok=True)
+    delete_existing_kapture_files(output_path, force_erase=force_overwrite_existing)
+    # some text files didn't change, just change their header
+    os.makedirs(path.join(output_path, 'sensors'), exist_ok=True)
+    os.makedirs(path.join(output_path, 'reconstruction'), exist_ok=True)
+    for csv_filename in CSV_FILENAMES_1_0:
+        csv_fullpath = path.join(kapture_dirpath, csv_filename)
+        if path.isfile(csv_fullpath):
+            logger.debug(f'converting {csv_fullpath}...')
+            old_version = kapture.io.csv.get_version_from_csv_file(csv_fullpath)
+            if 'points3d' not in csv_filename:
+                assert old_version == '1.0'
+            else:
+                assert (old_version is None or old_version == '1.0')
+            csv_output_path = path.join(output_path, csv_filename)
+            with open(csv_fullpath, 'r') as source_file:
+                with open(csv_output_path, 'w') as output_file:
+                    if old_version is not None:
+                        source_file.readline()  # read and ignore header
+                    # write replacement header
+                    output_file.write(kapture.io.csv.KAPTURE_FORMAT_1 + kapture.io.csv.kapture_linesep)
+                    shutil.copyfileobj(source_file, output_file)
+
+    # keypoints
+    keypoints_dir_path = path.join(kapture_dirpath, 'reconstruction', 'keypoints')
+    keypoints_csv_path = path.join(keypoints_dir_path, 'keypoints.txt')
+    if path.isdir(keypoints_dir_path) and path.isfile(keypoints_csv_path):
+        logger.debug(f'converting {keypoints_dir_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(keypoints_csv_path)
+        assert old_version == '1.0'
+        name, dtype, dsize = read_old_image_features_csv(keypoints_csv_path)
+        if keypoints_type is None:
+            assert name != ''
+            keypoints_type = name
+        keypoints = kapture.Keypoints(name, dtype, dsize)
+        keypoints_csv_output_path = path.join(output_path,
+                                              kapture.io.csv.FEATURES_CSV_FILENAMES[kapture.Keypoints](keypoints_type))
+        keypoints_output_dir = path.dirname(keypoints_csv_output_path)
+        kapture.io.csv.keypoints_to_file(keypoints_csv_output_path, keypoints)
+        # now copy all .kpt files
+        keypoints_filenames = populate_files_in_dirpath(keypoints_dir_path, '.kpt')
+        for keypoints_filename in keypoints_filenames:
+            keypoints_output_file = path.join(keypoints_output_dir, keypoints_filename)
+            os.makedirs(path.dirname(keypoints_output_file), exist_ok=True)
+            shutil.copy(path.join(keypoints_dir_path, keypoints_filename), keypoints_output_file)
+
+    # descriptors
+    descriptors_dir_path = path.join(kapture_dirpath, 'reconstruction', 'descriptors')
+    descriptors_csv_path = path.join(descriptors_dir_path, 'descriptors.txt')
+    if path.isdir(descriptors_dir_path) and path.isfile(descriptors_csv_path):
+        logger.debug(f'converting {descriptors_dir_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(descriptors_csv_path)
+        assert old_version == '1.0'
+        assert keypoints_type is not None
+        name, dtype, dsize = read_old_image_features_csv(descriptors_csv_path)
+        if descriptors_type is None:
+            assert name != ''
+            descriptors_type = name
+        descriptors = kapture.Descriptors(name, dtype, dsize, keypoints_type, descriptors_metric_type)
+        descriptors_csv_output_path = path.join(output_path,
+                                                kapture.io.csv.FEATURES_CSV_FILENAMES[kapture.Descriptors](
+                                                    descriptors_type)
+                                                )
+        descriptors_output_dir = path.dirname(descriptors_csv_output_path)
+        kapture.io.csv.descriptors_to_file(descriptors_csv_output_path, descriptors)
+        # now copy all .desc files
+        descriptors_filenames = populate_files_in_dirpath(descriptors_dir_path, '.desc')
+        for descriptors_filename in descriptors_filenames:
+            descriptors_output_file = path.join(descriptors_output_dir, descriptors_filename)
+            os.makedirs(path.dirname(descriptors_output_file), exist_ok=True)
+            shutil.copy(path.join(descriptors_dir_path, descriptors_filename), descriptors_output_file)
+
+    # matches
+    matches_dir_path = path.join(kapture_dirpath, 'reconstruction', 'matches')
+    if path.isdir(matches_dir_path):
+        logger.debug(f'converting {matches_dir_path}...')
+        assert keypoints_type is not None
+        matches_output_dir = kapture.io.features.get_matches_fullpath(None, keypoints_type, output_path)
+        # now copy all .matches files
+        matches_filenames = populate_files_in_dirpath(matches_dir_path, '.matches')
+        for matches_filename in matches_filenames:
+            matches_output_file = path.join(matches_output_dir, matches_filename)
+            os.makedirs(path.dirname(matches_output_file), exist_ok=True)
+            shutil.copy(path.join(matches_dir_path, matches_filename), matches_output_file)
+
+    # global features
+    global_features_dir_path = path.join(kapture_dirpath, 'reconstruction', 'global_features')
+    global_features_csv_path = path.join(global_features_dir_path, 'global_features.txt')
+    if path.isdir(global_features_dir_path) and path.isfile(global_features_csv_path):
+        logger.debug(f'converting {global_features_dir_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(global_features_csv_path)
+        assert old_version == '1.0'
+        assert keypoints_type is not None
+        name, dtype, dsize = read_old_image_features_csv(global_features_csv_path)
+        if global_features_type is None:
+            assert name != ''
+            global_features_type = name
+        global_features = kapture.GlobalFeatures(name, dtype, dsize, global_features_metric_type)
+        global_features_csv_output_path = path.join(output_path,
+                                                    kapture.io.csv.FEATURES_CSV_FILENAMES[kapture.GlobalFeatures](
+                                                        global_features_type)
+                                                    )
+        global_features_output_dir = path.dirname(global_features_csv_output_path)
+        kapture.io.csv.global_features_to_file(global_features_csv_output_path, global_features)
+        # now copy all .gfeat files
+        global_features_filenames = populate_files_in_dirpath(global_features_dir_path, '.gfeat')
+        for global_features_filename in global_features_filenames:
+            global_features_output_file = path.join(global_features_output_dir, global_features_filename)
+            os.makedirs(path.dirname(global_features_output_file), exist_ok=True)
+            shutil.copy(path.join(global_features_dir_path, global_features_filename), global_features_output_file)
+
+    # observations
+    observations_csv_filename = path.join('reconstruction', 'observations.txt')
+    observations_csv_path = path.join(kapture_dirpath, observations_csv_filename)
+    if path.isfile(observations_csv_path):
+        logger.debug(f'converting {observations_csv_path}...')
+        old_version = kapture.io.csv.get_version_from_csv_file(observations_csv_path)
+        assert old_version == '1.0'
+        assert keypoints_type is not None
+        observations = kapture.Observations()
+        with open(observations_csv_path, 'r') as source_file:
+            table = kapture.io.csv.table_from_file(source_file)
+            # point3d_id, [image_path, feature_id]*
+            for points3d_id_str, *pairs in table:
+                points3d_id = int(points3d_id_str)
+                if len(pairs) > 1:
+                    image_paths = pairs[0::2]
+                    keypoints_ids = pairs[1::2]
+                    for image_path, keypoint_id in zip(image_paths, keypoints_ids):
+                        observations.add(points3d_id, keypoints_type, image_path, int(keypoint_id))
+        observations_output_path = path.join(output_path, observations_csv_filename)
+        kapture.io.csv.observations_to_file(observations_output_path, observations)
+
+    # records_data
+    records_data_path = path.join(kapture_dirpath, 'sensors', 'records_data')
+    logger.debug(f'converting {records_data_path}...')
+    filename_list = list(populate_files_in_dirpath(records_data_path))
+    import_record_data_from_dir_auto(records_data_path, output_path, filename_list, images_import_strategy)
+    logger.debug('all done!')
+
+
+def upgrade_1_0_to_1_1_command_line() -> None:
+    """
+    Convert kapture data in version 1.0 to version 1.1.
+    """
+    parser = argparse.ArgumentParser(
+        description='convert kapture data in version 1.0 to version 1.1')
+    parser_verbosity = parser.add_mutually_exclusive_group()
+    parser_verbosity.add_argument(
+        '-v', '--verbose', nargs='?', default=logging.WARNING, const=logging.INFO,
+        action=kapture.utils.logging.VerbosityParser,
+        help='verbosity level (debug, info, warning, critical, ... or int value) [warning]')
+    parser_verbosity.add_argument(
+        '-q', '--silent', '--quiet', action='store_const', dest='verbose', const=logging.CRITICAL)
+    parser.add_argument('-f', '-y', '--force', action='store_true', default=False,
+                        help='Force delete output if already exists.')
+    # export ###########################################################################################################
+    parser.add_argument('-i', '--input', required=True, help='input path to kapture directory')
+    parser.add_argument('-o', '--output', required=True, help='output directory.')
+    parser.add_argument('--keypoints-type', default=None,
+                        help='types of keypoints.')
+    parser.add_argument('--descriptors-type', default=None, help='types of descriptors.')
+    parser.add_argument('--descriptors-metric-type', default='L2', help='types of descriptors.')
+    parser.add_argument('--global-features-type', default=None,
+                        help='types of global features.')
+    parser.add_argument('--global-features-metric-type', default='L2', help='types of descriptors.')
+    parser.add_argument('--image_transfer', type=TransferAction, default=TransferAction.skip,
+                        help=f'How to import images [skip], '
+                        f'choose among: {", ".join(a.name for a in TransferAction)}')
+    ####################################################################################################################
+    args = parser.parse_args()
+
+    logger.setLevel(args.verbose)
+    if args.verbose <= logging.DEBUG:
+        # also let kapture express its logs
+        kapture.utils.logging.getLogger().setLevel(args.verbose)
+
+    upgrade_1_0_to_1_1(args.input, args.output,
+                       args.keypoints_type, args.descriptors_type, args.global_features_type,
+                       args.descriptors_metric_type, args.global_features_metric_type,
+                       args.image_transfer,
+                       args.force)
+
+
+if __name__ == '__main__':
+    upgrade_1_0_to_1_1_command_line()
diff --git a/tools/kapture_upgrade_1_0_to_1_1_inplace.py b/tools/kapture_upgrade_1_0_to_1_1_inplace.py
new file mode 100644
index 0000000..a02b8b4
--- /dev/null
+++ b/tools/kapture_upgrade_1_0_to_1_1_inplace.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python3
+# Copyright 2020-present NAVER Corp. Under BSD 3-clause license
+
+"""
+Convert kapture data in version 1.0 to version 1.1 inplace
+"""
+
+import logging
+import os
+import os.path as path
+import argparse
+from typing import Optional
+import shutil
+# import numpy as np like in kapture.io.csv
+# so that types written as "np.float32" are understood by read_old_image_features_csv
+import numpy as np  # noqa: F401
+
+import path_to_kapture  # noqa: F401
+import kapture
+import kapture.utils.logging
+import kapture.io.features
+import kapture.io.csv
+from kapture.utils.upgrade import upgrade_1_0_to_1_1_inplace
+
+logger = logging.getLogger('upgrade_1_0_to_1_1_inplace')
+
+
+def upgrade_1_0_to_1_1_inplace_command_line() -> None:
+    """
+    Convert kapture data in version 1.0 to version 1.1 inplace.
+    """
+    parser = argparse.ArgumentParser(
+        description='convert kapture data in version 1.0 to version 1.1')
+    parser_verbosity = parser.add_mutually_exclusive_group()
+    parser_verbosity.add_argument(
+        '-v', '--verbose', nargs='?', default=logging.WARNING, const=logging.INFO,
+        action=kapture.utils.logging.VerbosityParser,
+        help='verbosity level (debug, info, warning, critical, ... or int value) [warning]')
+    parser_verbosity.add_argument(
+        '-q', '--silent', '--quiet', action='store_const', dest='verbose', const=logging.CRITICAL)
+    # export ###########################################################################################################
+    parser.add_argument('-i', '--input', required=True, help='input path to kapture directory')
+    parser.add_argument('--keypoints-type', default=None,
+                        help='types of keypoints.')
+    parser.add_argument('--descriptors-type', default=None, help='types of descriptors.')
+    parser.add_argument('--descriptors-metric-type', default='L2', help='types of descriptors.')
+    parser.add_argument('--global-features-type', default=None,
+                        help='types of global features.')
+    parser.add_argument('--global-features-metric-type', default='L2', help='types of descriptors.')
+    ####################################################################################################################
+    args = parser.parse_args()
+
+    logger.setLevel(args.verbose)
+    if args.verbose <= logging.DEBUG:
+        # also let kapture express its logs
+        kapture.utils.logging.getLogger().setLevel(args.verbose)
+
+    upgrade_1_0_to_1_1_inplace(args.input,
+                               args.keypoints_type, args.descriptors_type, args.global_features_type,
+                               args.descriptors_metric_type, args.global_features_metric_type)
+
+
+if __name__ == '__main__':
+    upgrade_1_0_to_1_1_inplace_command_line()


Test patch:
diff --git a/samples/virtual_gallery/kapture/testing/sensors/records_camera.txt b/samples/virtual_gallery/kapture/testing/sensors/records_camera.txt
index 9f6f3e4..1e5ab73 100644
--- a/samples/virtual_gallery/kapture/testing/sensors/records_camera.txt
+++ b/samples/virtual_gallery/kapture/testing/sensors/records_camera.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, image_path
 0, testing_light_1_occlusion_2_frame_0, testing/gallery_light1_occlusion2/frames/rgb/camera_0/rgb_00000.jpg
 1, testing_light_1_occlusion_2_frame_1, testing/gallery_light1_occlusion2/frames/rgb/camera_0/rgb_00001.jpg
diff --git a/samples/virtual_gallery/kapture/testing/sensors/sensors.txt b/samples/virtual_gallery/kapture/testing/sensors/sensors.txt
index 2baa696..f73566e 100644
--- a/samples/virtual_gallery/kapture/testing/sensors/sensors.txt
+++ b/samples/virtual_gallery/kapture/testing/sensors/sensors.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # sensor_id, name, sensor_type, [sensor_params]+
 testing_light_1_occlusion_2_frame_0, , camera, PINHOLE, 1920, 1080, 1339.994, 1339.994, 959.5, 539.5
 testing_light_1_occlusion_2_frame_1, , camera, PINHOLE, 1920, 1080, 1514.589, 1514.589, 959.5, 539.5
diff --git a/samples/virtual_gallery/kapture/testing/sensors/trajectories.txt b/samples/virtual_gallery/kapture/testing/sensors/trajectories.txt
index 5a3ba82..8c37316 100644
--- a/samples/virtual_gallery/kapture/testing/sensors/trajectories.txt
+++ b/samples/virtual_gallery/kapture/testing/sensors/trajectories.txt
@@ -1,4 +1,4 @@
-# kapture format: 1.0
+# kapture format: 1.1
 # timestamp, device_id, qw, qx, qy, qz, tx, ty, tz
        0, testing_light_1_occlusion_2_frame_0, 0.5744697645671526, -0.0026704113680701314, 0.8180909621654918, -0.026543099374893703, 4.892228, 1.268833, 5.159162
        1, testing_light_1_occlusion_2_frame_1, -0.42136848942363947, 0.03168397031830565, 0.9060757850220199, -0.021711608471958205, 2.738021, 0.7770698, -6.423017
diff --git a/tests/test_colmap.py b/tests/test_colmap.py
index 0dae507..bede2d8 100755
--- a/tests/test_colmap.py
+++ b/tests/test_colmap.py
@@ -105,12 +105,16 @@ def setUp(self) -> None:
         self._database_filepath = path.join(self._colmap_dirpath, 'colmap.db')
         self._reconstruction_path = path.join(self._colmap_dirpath, 'reconstruction')
         self._kapture_dirpath = path.normpath(path.join(self._sample_dirpath, 'kapture'))
+        self.keypoints_type = 'SIFT'
+        self.descriptors_type = 'SIFT'
 
     def tearDown(self) -> None:
         self._tempdir.cleanup()
 
     def test_maupertuis_import_db_only(self):
         kapture_data = import_colmap_database(self._database_filepath, self._temp_dirpath,
+                                              self.keypoints_type,
+                                              self.descriptors_type,
                                               no_geometric_filtering=True)
 
         # check the numbers
@@ -121,9 +125,9 @@ def test_maupertuis_import_db_only(self):
         self.assertIsNone(kapture_data.records_gnss)
         self.assertEqual(1, len(kapture_data.sensors))
         self.assertEqual(4, len(kapture_data.records_camera))
-        self.assertEqual(4, len(kapture_data.keypoints))
-        self.assertEqual(4, len(kapture_data.descriptors))
-        self.assertEqual(6, len(kapture_data.matches))
+        self.assertEqual(4, len(kapture_data.keypoints[self.keypoints_type]))
+        self.assertEqual(4, len(kapture_data.descriptors[self.descriptors_type]))
+        self.assertEqual(6, len(kapture_data.matches[self.keypoints_type]))
 
         # check camera
         camera = kapture_data.sensors['cam_00001']
@@ -138,18 +142,21 @@ def test_maupertuis_import_db_only(self):
                          [filename for _, _, filename in kapture.flatten(snapshots, True)])
 
         # check keypoints
-        keypoints = kapture_data.keypoints
+        keypoints = kapture_data.keypoints[self.keypoints_type]
         self.assertEqual(np.float32, keypoints.dtype)
         self.assertEqual(6, keypoints.dsize)
         self.assertEqual({'00.jpg', '01.jpg', '02.jpg', '03.jpg'}, keypoints)
-        keypoints_filepaths_actual = kapture.io.features.keypoints_to_filepaths(keypoints, self._temp_dirpath)
+        keypoints_filepaths_actual = kapture.io.features.keypoints_to_filepaths(keypoints,
+                                                                                self.keypoints_type,
+                                                                                self._temp_dirpath)
         keypoints_filepaths_expected = {
-            f'{i:02d}.jpg': path_secure(f'{self._temp_dirpath}/reconstruction/keypoints/{i:02d}.jpg.kpt')
+            f'{i:02d}.jpg': path_secure(f'{self._temp_dirpath}/reconstruction/keypoints'
+                                        f'/{self.keypoints_type}/{i:02d}.jpg.kpt')
             for i in [0, 1, 2, 3]}
         self.assertDictEqual(keypoints_filepaths_actual, keypoints_filepaths_expected)
         # check a keypoints file
         image_keypoints_filepaths = sorted(
-            kapture.io.features.keypoints_to_filepaths(keypoints, self._temp_dirpath).values())
+            kapture.io.features.keypoints_to_filepaths(keypoints, self.keypoints_type, self._temp_dirpath).values())
         image_keypoints = image_keypoints_from_file(image_keypoints_filepaths[0], keypoints.dtype, keypoints.dsize)
         self.assertEqual((6424, 6), image_keypoints.shape)
         self.assertAlmostEqual([1290.908447265625, 4.156360626220703, -1.3475048542022705,
@@ -161,31 +168,36 @@ def test_maupertuis_import_db_only(self):
                                image_keypoints[-1].tolist())
 
         # check descriptors
-        descriptors = kapture_data.descriptors
+        descriptors = kapture_data.descriptors[self.descriptors_type]
         self.assertEqual(np.uint8, descriptors.dtype)
         self.assertEqual(128, descriptors.dsize)
         self.assertEqual({'00.jpg', '01.jpg', '02.jpg', '03.jpg'}, descriptors)
-        descriptors_filepaths_actual = kapture.io.features.descriptors_to_filepaths(descriptors, self._temp_dirpath)
+        descriptors_filepaths_actual = kapture.io.features.descriptors_to_filepaths(descriptors,
+                                                                                    self.descriptors_type,
+                                                                                    self._temp_dirpath)
         descriptors_filepaths_expected = {
-            f'{i:02d}.jpg': path_secure(f'{self._temp_dirpath}/reconstruction/descriptors/{i:02d}.jpg.desc')
+            f'{i:02d}.jpg': path_secure(f'{self._temp_dirpath}/reconstruction/descriptors/'
+                                        f'{self.descriptors_type}/{i:02d}.jpg.desc')
             for i in [0, 1, 2, 3]}
         self.assertDictEqual(descriptors_filepaths_actual, descriptors_filepaths_expected)
         # check a descriptors file
-        image_descriptors_filepaths = sorted(kapture.io.features.descriptors_to_filepaths(
-            descriptors, self._temp_dirpath).values())
+        image_descriptors_filepaths = sorted(kapture.io.features.descriptors_to_filepaths(descriptors,
+                                                                                          self.descriptors_type,
+                                                                                          self._temp_dirpath).values())
         image_descriptors = image_descriptors_from_file(
             image_descriptors_filepaths[0], descriptors.dtype, descriptors.dsize)
         self.assertEqual(image_keypoints.shape[0], image_descriptors.shape[0])
 
         # check matches
-        matches = kapture_data.matches
+        matches = kapture_data.matches[self.keypoints_type]
         self.assertEqual({('01.jpg', '03.jpg'), ('00.jpg', '02.jpg'),
                           ('00.jpg', '03.jpg'), ('02.jpg', '03.jpg'),
                           ('00.jpg', '01.jpg'), ('01.jpg', '02.jpg')},
                          set(matches))
 
     def test_maupertuis_import_txt_only(self):
-        kapture_data = import_colmap_from_reconstruction_files(self._reconstruction_path, self._temp_dirpath, set())
+        kapture_data = import_colmap_from_reconstruction_files(
+            self._reconstruction_path, self._temp_dirpath, self.keypoints_type, skip=set())
 
         # check the numbers
         self.assertEqual(1, len(kapture_data.sensors))
@@ -193,7 +205,7 @@ def test_maupertuis_import_txt_only(self):
         self.assertEqual(4, len(kapture_data.records_camera))
         self.assertIs(kapture_data.records_lidar, None)
         self.assertIs(kapture_data.records_wifi, None)
-        self.assertEqual(4, len(kapture_data.keypoints))
+        self.assertEqual(4, len(kapture_data.keypoints[self.keypoints_type]))
         self.assertIs(kapture_data.descriptors, None)
         self.assertIs(kapture_data.matches, None)
         self.assertEqual(1039, len(kapture_data.points3d))
@@ -230,11 +242,12 @@ def test_maupertuis_import_txt_only(self):
         observations = kapture_data.observations
         # self.assertEqual(4, len(observations[0]))
         self.assertEqual({('01.jpg', 4561), ('02.jpg', 3389), ('00.jpg', 4975), ('03.jpg', 3472)},
-                         set(observations[0]))
+                         set(observations[0]['SIFT']))
 
     def test_maupertuis_import(self):
         kapture_data = import_colmap(self._temp_dirpath, self._database_filepath,
                                      self._reconstruction_path, self._images_filepath,
+                                     None, self.keypoints_type, self.descriptors_type,
                                      force_overwrite_existing=True,
                                      images_import_strategy=TransferAction.copy,
                                      no_geometric_filtering=True)
@@ -246,9 +259,9 @@ def test_maupertuis_import(self):
         self.assertIs(kapture_data.records_lidar, None)
         self.assertIs(kapture_data.records_wifi, None)
         self.assertIs(kapture_data.records_gnss, None)
-        self.assertEqual(4, len(kapture_data.keypoints))
-        self.assertEqual(4, len(kapture_data.descriptors))
-        self.assertEqual(6, len(kapture_data.matches))
+        self.assertEqual(4, len(kapture_data.keypoints[self.keypoints_type]))
+        self.assertEqual(4, len(kapture_data.descriptors[self.descriptors_type]))
+        self.assertEqual(6, len(kapture_data.matches[self.keypoints_type]))
         self.assertEqual(1039, len(kapture_data.points3d))
         self.assertEqual(1039, len(kapture_data.observations))
 
@@ -276,9 +289,12 @@ def test_maupertuis_import(self):
     def test_maupertuis_export_db_only(self):
         # export/import and check
         colmap_db_filepath = path.join(self._temp_dirpath, 'colmap.db')
-        export_colmap(self._kapture_dirpath, colmap_db_filepath, None, None, True)
+        export_colmap(self._kapture_dirpath, colmap_db_filepath, None,
+                      self.keypoints_type, self.descriptors_type, None, True)
 
         kapture_data = import_colmap(self._temp_dirpath, colmap_db_filepath,
+                                     keypoints_type=self.keypoints_type,
+                                     descriptors_type=self.descriptors_type,
                                      force_overwrite_existing=True,
                                      no_geometric_filtering=True)
 
@@ -288,9 +304,9 @@ def test_maupertuis_export_db_only(self):
         self.assertEqual(4, len(kapture_data.records_camera))
         self.assertIs(kapture_data.records_lidar, None)
         self.assertIs(kapture_data.records_wifi, None)
-        self.assertEqual(4, len(kapture_data.keypoints))
-        self.assertEqual(4, len(kapture_data.descriptors))
-        self.assertEqual(6, len(kapture_data.matches))
+        self.assertEqual(4, len(kapture_data.keypoints[self.keypoints_type]))
+        self.assertEqual(4, len(kapture_data.descriptors[self.descriptors_type]))
+        self.assertEqual(6, len(kapture_data.matches[self.keypoints_type]))
         self.assertIs(kapture_data.points3d, None)
         self.assertIs(kapture_data.observations, None)
 
@@ -298,9 +314,14 @@ def test_maupertuis_export(self):
         # export/import and check
         colmap_db_filepath = path.join(self._temp_dirpath, 'colmap.db')
         colmap_txt_filepath = path.join(self._temp_dirpath, 'dense')
-        export_colmap(self._kapture_dirpath, colmap_db_filepath, colmap_txt_filepath, None, True)
+        export_colmap(self._kapture_dirpath, colmap_db_filepath, colmap_txt_filepath,
+                      self.keypoints_type,
+                      self.descriptors_type,
+                      None, True)
 
         kapture_data = import_colmap(self._temp_dirpath, colmap_db_filepath, colmap_txt_filepath,
+                                     keypoints_type=self.keypoints_type,
+                                     descriptors_type=self.descriptors_type,
                                      force_overwrite_existing=True,
                                      no_geometric_filtering=True)
 
@@ -311,9 +332,9 @@ def test_maupertuis_export(self):
         self.assertIs(kapture_data.records_lidar, None)
         self.assertIs(kapture_data.records_wifi, None)
         self.assertIs(kapture_data.records_gnss, None)
-        self.assertEqual(4, len(kapture_data.keypoints))
-        self.assertEqual(4, len(kapture_data.descriptors))
-        self.assertEqual(6, len(kapture_data.matches))
+        self.assertEqual(4, len(kapture_data.keypoints[self.keypoints_type]))
+        self.assertEqual(4, len(kapture_data.descriptors[self.descriptors_type]))
+        self.assertEqual(6, len(kapture_data.matches[self.keypoints_type]))
         self.assertEqual(1039, len(kapture_data.points3d))
         self.assertEqual(1039, len(kapture_data.observations))
 
diff --git a/tests/test_compare.py b/tests/test_compare.py
index 987f7d2..f14e0fa 100755
--- a/tests/test_compare.py
+++ b/tests/test_compare.py
@@ -10,10 +10,10 @@
 import path_to_kapture  # enables import kapture  # noqa: F401
 import kapture
 import kapture.io.csv as csv
-from kapture.algo.compare import is_distance_within_threshold, pose_transform_distance
+from kapture.algo.compare import equal_keypoints_collections, is_distance_within_threshold, pose_transform_distance
 from kapture.algo.compare import equal_kapture, equal_sensors, equal_rigs, equal_trajectories, equal_records_camera,\
-                                 equal_records_lidar, equal_records_wifi, equal_records_gnss, equal_image_features, \
-                                 equal_poses
+    equal_records_lidar, equal_records_wifi, equal_records_gnss, equal_keypoints_collections, \
+    equal_poses
 
 
 class TestComparePoseTransform(unittest.TestCase):
@@ -78,6 +78,7 @@ class TestCompareGnss(unittest.TestCase):
     """
     Testing kapture/algorithms/compare.py
     """
+
     def setUp(self):
         self.gnss_a = kapture.RecordsGnss()
         self.gnss_b = kapture.RecordsGnss()
@@ -261,17 +262,17 @@ def test_equal_records_wifi(self):
     def test_equal_keypoints(self):
         kapture_data_a = copy.deepcopy(self._kapture_data)
         kapture_data_b = copy.deepcopy(self._kapture_data)
-        self.assertTrue(equal_image_features(kapture_data_a.keypoints, kapture_data_b.keypoints))
+        self.assertTrue(equal_keypoints_collections(kapture_data_a.keypoints, kapture_data_b.keypoints))
 
-        kapture_data_a.keypoints.add('a/a0.pct')
-        self.assertFalse(equal_image_features(kapture_data_a.keypoints, kapture_data_b.keypoints))
+        kapture_data_a.keypoints['SIFT'].add('a/a0.pct')
+        self.assertFalse(equal_keypoints_collections(kapture_data_a.keypoints, kapture_data_b.keypoints))
 
-        kapture_data_b.keypoints.add('a/a0.pct')
-        self.assertTrue(equal_image_features(kapture_data_a.keypoints, kapture_data_b.keypoints))
+        kapture_data_b.keypoints['SIFT'].add('a/a0.pct')
+        self.assertTrue(equal_keypoints_collections(kapture_data_a.keypoints, kapture_data_b.keypoints))
 
-        kapture_data_b.keypoints.remove('a/a0.pct')
-        kapture_data_b.keypoints.add('b/b0.jpg')
-        self.assertFalse(equal_image_features(kapture_data_a.keypoints, kapture_data_b.keypoints))
+        kapture_data_b.keypoints['SIFT'].remove('a/a0.pct')
+        kapture_data_b.keypoints['SIFT'].add('b/b0.jpg')
+        self.assertFalse(equal_keypoints_collections(kapture_data_a.keypoints, kapture_data_b.keypoints))
 
 
 if __name__ == '__main__':
diff --git a/tests/test_core.py b/tests/test_core.py
index 95a7f00..39c2f6e 100755
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -675,8 +675,11 @@ def test_init_keypoints_unknown(self):
 class TestDescriptors(unittest.TestCase):
     def test_init_descriptors_unknown(self):
         descriptors = kapture.Descriptors('R2D2', float, 64,
+                                          'R2D2', 'L2',
                                           ['a/a.jpg', 'b/b.jpg', 'c/c.jpg', 'c/c.jpg'])
         self.assertEqual('R2D2', descriptors.type_name)
+        self.assertEqual('R2D2', descriptors.keypoints_type)
+        self.assertEqual('L2', descriptors.metric_type)
         self.assertEqual(3, len(descriptors))
         self.assertIn('a/a.jpg', descriptors)
 
@@ -684,9 +687,10 @@ def test_init_descriptors_unknown(self):
 # GlobalFeatures #######################################################################################################
 class TestGlobalFeatures(unittest.TestCase):
     def test_init_global_features_unknown(self):
-        global_features = kapture.GlobalFeatures('BOW', float, 4,
+        global_features = kapture.GlobalFeatures('BOW', float, 4, 'CSI',
                                                  ['a/a.jpg', 'b/b.jpg', 'c/c.jpg', 'c/c.jpg'])
         self.assertEqual('BOW', global_features.type_name)
+        self.assertEqual('CSI', global_features.metric_type)
         self.assertEqual(3, len(global_features))
         self.assertIn('a/a.jpg', global_features)
 
@@ -806,18 +810,32 @@ def test_type_checking(self):
 # OBSERVATIONS #########################################################################################################
 class TestObservations(unittest.TestCase):
     def test_init_observations(self):
-        observations = kapture.Observations({0: [('a/a.jpg', 1), ('b/b.jpg', 2)], 1: [('c/c.jpg', 1), ('c/c.jpg', 2)]})
+        observations = kapture.Observations({
+            0: {'R2D2': [('a/a.jpg', 1), ('b/b.jpg', 2)],
+                'D2NET': [('a/a.jpg', 0)]},
+            1: {'R2D2': [('c/c.jpg', 1), ('c/c.jpg', 2)],
+                'D2NET': [('c/c.jpg', 0), ('c/c.jpg', 1)]}
+        })
         self.assertTrue(0 in observations)
-        self.assertEqual(len(observations[0]), 2)
+        self.assertTrue((0, 'R2D2') in observations)
+        self.assertEqual(len(observations[0, 'R2D2']), 2)
+        self.assertTrue((0, 'D2NET') in observations)
+        self.assertEqual(len(observations[0, 'D2NET']), 1)
+
         self.assertTrue(1 in observations)
-        self.assertEqual(len(observations[1]), 2)
+        self.assertTrue((1, 'R2D2') in observations)
+        self.assertEqual(len(observations[1, 'R2D2']), 2)
+        self.assertTrue((1, 'D2NET') in observations)
+        self.assertEqual(len(observations[1, 'D2NET']), 2)
 
-        observations.add(0, 'c/c.jpg', 3)
-        self.assertEqual(len(observations[0]), 3)
+        observations.add(0, 'R2D2', 'c/c.jpg', 3)
+        self.assertEqual(len(observations[0, 'R2D2']), 3)
 
-        observations.add(2, 'a/a.jpg', 3)
+        observations.add(2, 'R2D2', 'a/a.jpg', 3)
         self.assertTrue(2 in observations)
-        self.assertEqual(len(observations[2]), 1)
+        self.assertTrue((2, 'R2D2') in observations)
+        self.assertTrue((2, 'D2NET') not in observations)
+        self.assertEqual(len(observations[2, 'R2D2']), 1)
 
 
 # MATCHES ##############################################################################################################
diff --git a/tests/test_io_csv.py b/tests/test_io_csv.py
index de8a082..f789240 100755
--- a/tests/test_io_csv.py
+++ b/tests/test_io_csv.py
@@ -313,6 +313,7 @@ def setUp(self):
         self._tempdir = tempfile.TemporaryDirectory()
         self._kapture_dirpath = self._tempdir.name
         self._keypoints_dirpath = path.join(self._kapture_dirpath, 'reconstruction', 'keypoints')
+        self._keypoints_type = 'SIFT'
 
     def tearDown(self):
         self._tempdir.cleanup()
@@ -322,12 +323,12 @@ def test_keypoints_read_from_files(self):
                          for cam in range(2)
                          for timestamp in range(2))
         # make up keypoints files
-        keypoints_config_filepath = path.join(self._keypoints_dirpath, 'keypoints.txt')
+        keypoints_config_filepath = path.join(self._keypoints_dirpath, self._keypoints_type, 'keypoints.txt')
         os.makedirs(path.dirname(keypoints_config_filepath), exist_ok=True)
         with open(keypoints_config_filepath, 'wt') as f:
             f.write('SIFT, float, 4')
         keypoints_fullpaths = [
-            path_secure(path.join(self._keypoints_dirpath, image_id + '.kpt'))
+            path_secure(path.join(self._keypoints_dirpath, self._keypoints_type, image_id + '.kpt'))
             for image_id in images_ids
         ]
         for keypoints_fullpath in keypoints_fullpaths:
@@ -336,20 +337,22 @@ def test_keypoints_read_from_files(self):
                 f.write(' ')
 
         # lock and load
-        keypoints = csv.keypoints_from_dir(self._kapture_dirpath, None)
+        keypoints = csv.keypoints_from_dir(self._keypoints_type, self._kapture_dirpath, None)
 
         # check
         self.assertEqual('SIFT', keypoints.type_name)
         self.assertEqual(4, len(keypoints))
-        keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(keypoints, self._kapture_dirpath)
+        keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(keypoints,
+                                                                         self._keypoints_type,
+                                                                         self._kapture_dirpath)
         image_filenames_expected = {path_secure(os.path.join(f'cam{ci}', f'{ts:05d}.jpg'))
                                     for ci in [0, 1] for ts in [0, 1]}
         feature_filepaths_expected = {
             path_secure(os.path.join(f'{self._kapture_dirpath}', 'reconstruction',
-                                     'keypoints', f'cam{ci}', f'{ts:05d}.jpg.kpt'))
+                                     'keypoints', self._keypoints_type, f'cam{ci}', f'{ts:05d}.jpg.kpt'))
             for ci in [0, 1] for ts in [0, 1]}
 
-        self.assertEqual(image_filenames_expected, set(keypoints_filepaths))
+        self.assertEqual(image_filenames_expected, set(keypoints_filepaths.keys()))
         self.assertEqual(feature_filepaths_expected, set(keypoints_filepaths.values()))
 
     def test_keypoints_read_from_images(self):
@@ -357,49 +360,52 @@ def test_keypoints_read_from_images(self):
         images_ids = set(f'cam{cam}/{timestamp:05d}.jpg'
                          for cam in range(2)
                          for timestamp in range(2))
-        keypoints_config_filepath = path.join(self._keypoints_dirpath, 'keypoints.txt')
+        keypoints_config_filepath = path.join(self._keypoints_dirpath, self._keypoints_type, 'keypoints.txt')
         os.makedirs(path.dirname(keypoints_config_filepath), exist_ok=True)
         with open(keypoints_config_filepath, 'wt') as f:
             f.write('SIFT, float, 4')
 
         # lock and load
-        keypoints = csv.keypoints_from_dir(self._kapture_dirpath, images_ids)
+        keypoints = csv.keypoints_from_dir(self._keypoints_type, self._kapture_dirpath, images_ids)
 
         # check its empty
         self.assertEqual('SIFT', keypoints.type_name)
         self.assertEqual(0, len(keypoints))
 
-        valid = kapture.io.features.keypoints_check_dir(keypoints, self._kapture_dirpath)
+        valid = kapture.io.features.keypoints_check_dir(keypoints, self._keypoints_type, self._kapture_dirpath)
         self.assertTrue(valid)
 
         # create actual files
         for images_id in images_ids:
-            keypoint_filepath = path.join(self._keypoints_dirpath, images_id + '.kpt')
+            keypoint_filepath = path.join(self._keypoints_dirpath, self._keypoints_type, images_id + '.kpt')
             os.makedirs(path.dirname(keypoint_filepath), exist_ok=True)
             with open(keypoint_filepath, 'wt') as f:
                 f.write('')
 
         # lock and load again
-        keypoints = csv.keypoints_from_dir(self._kapture_dirpath, images_ids)
+        keypoints = csv.keypoints_from_dir(self._keypoints_type, self._kapture_dirpath, images_ids)
         self.assertEqual('SIFT', keypoints.type_name)
         self.assertEqual(4, len(keypoints))
 
-        keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(keypoints, self._kapture_dirpath)
+        keypoints_filepaths = kapture.io.features.keypoints_to_filepaths(keypoints,
+                                                                         self._keypoints_type,
+                                                                         self._kapture_dirpath)
         image_filenames_expected = {f'cam{ci}/{ts:05d}.jpg'
                                     for ci in [0, 1] for ts in [0, 1]}
         feature_filepaths_expected = {
-            path_secure(f'{self._kapture_dirpath}/reconstruction/keypoints/cam{ci}/{ts:05d}.jpg.kpt')
+            path_secure(f'{self._kapture_dirpath}/reconstruction/keypoints'
+                        f'/{self._keypoints_type}/cam{ci}/{ts:05d}.jpg.kpt')
             for ci in [0, 1] for ts in [0, 1]}
 
         self.assertEqual(image_filenames_expected, set(keypoints_filepaths))
         self.assertEqual(feature_filepaths_expected, set(keypoints_filepaths.values()))
 
-        valid = kapture.io.features.keypoints_check_dir(keypoints, self._kapture_dirpath)
+        valid = kapture.io.features.keypoints_check_dir(keypoints, self._keypoints_type, self._kapture_dirpath)
         self.assertTrue(valid)
 
         # destroy files and check
-        os.remove(path.join(self._keypoints_dirpath, 'cam0/00000.jpg.kpt'))
-        valid = kapture.io.features.keypoints_check_dir(keypoints, self._kapture_dirpath)
+        os.remove(path.join(self._keypoints_dirpath, self._keypoints_type, 'cam0/00000.jpg.kpt'))
+        valid = kapture.io.features.keypoints_check_dir(keypoints, self._keypoints_type, self._kapture_dirpath)
         self.assertFalse(valid)
 
 
@@ -425,15 +431,17 @@ def test_points_to_files(self):
         with open(filepath, 'rt') as file:
             lines = file.readlines()
 
-        self.assertEqual(4, len(lines))
+        self.assertEqual(5, len(lines))
         self.assertTrue(lines[0].startswith('#'))
-        first_line = [float(f) for f in lines[1].split(',')]
+        self.assertTrue(lines[1].startswith('#'))
+        first_line = [float(f) for f in lines[2].split(',')]
         self.assertEqual(6, len(first_line))
         self.assertAlmostEqual([0.0, 1.0, 0.0, 0.0, 0.0, 0.0], first_line)
 
     def test_points_from_empty_file(self):
         filepath = path.join(self._tempdir.name, 'points3d.txt')
         with open(filepath, 'wt') as file:
+            file.write(csv.KAPTURE_FORMAT_1 + kapture_linesep)
             file.write('# X, Y, Z, R, G, B' + kapture_linesep)
         # prevent numpy showing warning
         with warnings.catch_warnings():
@@ -444,6 +452,7 @@ def test_points_from_empty_file(self):
     def test_points_from_single_line_file(self):
         filepath = path.join(self._tempdir.name, 'points3d.txt')
         with open(filepath, 'wt') as file:
+            file.write(csv.KAPTURE_FORMAT_1 + kapture_linesep)
             file.write('# X, Y, Z, R, G, B' + kapture_linesep)
             file.write('0, 1.0, 0.0, 255, .0, 150' + kapture_linesep)
         points3d = csv.points3d_from_file(filepath)
@@ -453,6 +462,7 @@ def test_points_from_single_line_file(self):
     def test_points_from_file(self):
         filepath = path.join(self._tempdir.name, 'points3d.txt')
         with open(filepath, 'wt') as file:
+            file.write(csv.KAPTURE_FORMAT_1 + kapture_linesep)
             file.write('# X, Y, Z, R, G, B' + kapture_linesep)
             file.write('0, 1.0, 0.0, 255, .0, 150' + kapture_linesep)
             file.write('-10, 0, 0.0, 25, .0, 150' + kapture_linesep)
@@ -472,13 +482,13 @@ def setUp(self):
         self._observations_actual_filepath = path.join(self._tempdir.name, 'actual', 'observations.txt')
         # creates ground truth couple data/file
         self._observations_expected = kapture.Observations({
-            0: [('image1.jpg', 0), ('image2.jpg', 0)],
-            2: [('image1.jpg', 2), ('image2.jpg', 3)]
+            0: {'SIFT': [('image1.jpg', 0), ('image2.jpg', 0)]},
+            2: {'SIFT': [('image1.jpg', 2), ('image2.jpg', 3)]}
         })
         self._observations_csv_expected = csv.KAPTURE_FORMAT_1 + kapture_linesep
-        self._observations_csv_expected += kapture_linesep.join(["# point3d_id, [image_path, feature_id]*",
-                                                                 "0, image1.jpg, 0, image2.jpg, 0",
-                                                                 "2, image1.jpg, 2, image2.jpg, 3"]) + kapture_linesep
+        self._observations_csv_expected += kapture_linesep.join(["# point3d_id, keypoints_type, [image_path, feature_id]*",
+                                                                 "0, SIFT, image1.jpg, 0, image2.jpg, 0",
+                                                                 "2, SIFT, image1.jpg, 2, image2.jpg, 3"]) + kapture_linesep
         os.makedirs(path.dirname(self._observations_expected_filepath), exist_ok=True)
         with open(self._observations_expected_filepath, 'wt') as file:
             file.write(self._observations_csv_expected)
@@ -498,7 +508,7 @@ def test_observations_from_file(self):
         self.assertEqual(self._observations_expected, observations_actual)
 
     def test_observations_from_file_limited(self):
-        observations_actual = csv.observations_from_file(self._observations_expected_filepath, {'image1.jpg'})
+        observations_actual = csv.observations_from_file(self._observations_expected_filepath, {'SIFT': {'image1.jpg'}})
         self.assertEqual(2, len(observations_actual))
         self.assertNotEqual(self._observations_expected, observations_actual)
 
@@ -664,37 +674,38 @@ def setUp(self):
         self._tempdir = tempfile.TemporaryDirectory()
         self._samples_folder = path.abspath(path.join(path.dirname(__file__), '..', 'samples', 'maupertuis'))
         self._kapture_dirpath = path.join(self._samples_folder, 'kapture')
+        self._features_type = 'SIFT'
         self._kapture_data = csv.kapture_from_dir(self._kapture_dirpath)
 
     def tearDown(self):
         self._tempdir.cleanup()
 
     def test_keypoints_from_dir(self):
-        keypoints = kapture.io.csv.keypoints_from_dir(self._kapture_dirpath, None)
+        keypoints = kapture.io.csv.keypoints_from_dir(self._features_type, self._kapture_dirpath, None)
         self.assertEqual(keypoints.dtype, np.float32)
         self.assertEqual(keypoints.dsize, 6)
         self.assertEqual(set(keypoints), {'03.jpg', '01.jpg', '02.jpg', '00.jpg'})
 
     def test_descriptors_from_dir(self):
-        descriptors = kapture.io.csv.descriptors_from_dir(self._kapture_dirpath, None)
+        descriptors = kapture.io.csv.descriptors_from_dir(self._features_type, self._kapture_dirpath, None)
         self.assertEqual(descriptors.dtype, np.uint8)
         self.assertEqual(descriptors.dsize, 128)
         self.assertEqual(set(descriptors), {'03.jpg', '01.jpg', '02.jpg', '00.jpg'})
 
     def test_matches_from_dir(self):
-        matches = kapture.io.csv.matches_from_dir(self._kapture_dirpath)
+        matches = kapture.io.csv.matches_from_dir(self._features_type, self._kapture_dirpath)
         self.assertEqual({('00.jpg', '03.jpg'), ('01.jpg', '03.jpg'),
                           ('00.jpg', '02.jpg'), ('02.jpg', '03.jpg'),
                           ('01.jpg', '02.jpg'), ('00.jpg', '01.jpg')},
                          set(matches))
 
     def test_observations_from_file(self):
-        image_filenames_with_keypoints = {'03.jpg', '01.jpg', '02.jpg', '00.jpg'}
+        image_filenames_with_keypoints = {self._features_type: {'03.jpg', '01.jpg', '02.jpg', '00.jpg'}}
         observations_filepath = kapture.io.csv.get_csv_fullpath(kapture.Observations, self._kapture_dirpath)
         observations = kapture.io.csv.observations_from_file(observations_filepath, image_filenames_with_keypoints)
         self.assertEqual(1039, len(observations))
-        # observations[point3d_idx]= [(image_filename, keypoint_id), (image_filename, keypoint_id), ...]
-        observation0 = observations[0]
+        # observations[point3d_idx, keypoints_type]= [(image_filename, keypoint_id), (image_filename, keypoint_id), ...]
+        observation0 = observations[0, self._features_type]
         self.assertEqual(
             [('01.jpg', 4561), ('02.jpg', 3389), ('00.jpg', 4975), ('03.jpg', 3472)],
             observation0
@@ -706,9 +717,9 @@ def test_overall_read(self):
         self.assertEqual(4, len(self._kapture_data.trajectories))
         self.assertEqual(4, len(self._kapture_data.records_camera))
         self.assertEqual(4, len(self._kapture_data.records_gnss))
-        self.assertEqual(4, len(self._kapture_data.keypoints))
-        self.assertEqual(4, len(self._kapture_data.descriptors))
-        self.assertEqual(6, len(self._kapture_data.matches))
+        self.assertEqual(4, len(self._kapture_data.keypoints[self._features_type]))
+        self.assertEqual(4, len(self._kapture_data.descriptors[self._features_type]))
+        self.assertEqual(6, len(self._kapture_data.matches[self._features_type]))
         self.assertEqual(1039, len(self._kapture_data.observations))
         self.assertEqual(1039, len(self._kapture_data.points3d))
 
diff --git a/tests/test_io_features.py b/tests/test_io_features.py
index 8e058c5..d5fd853 100755
--- a/tests/test_io_features.py
+++ b/tests/test_io_features.py
@@ -59,7 +59,7 @@ def test_matches_from_dir(self):
         image_pairs_expected = {('00.jpg', '01.jpg'), ('00.jpg', '02.jpg'),
                                 ('00.jpg', '03.jpg'), ('01.jpg', '02.jpg'),
                                 ('01.jpg', '03.jpg'), ('02.jpg', '03.jpg')}
-        image_pairs_actual = set(kapture.io.features.matching_pairs_from_dirpath(self._kapture_dirpath))
+        image_pairs_actual = set(kapture.io.features.matching_pairs_from_dirpath('SIFT', self._kapture_dirpath))
         self.assertEqual(6, len(image_pairs_actual))
         self.assertEqual(image_pairs_expected, image_pairs_actual)
 
@@ -70,7 +70,7 @@ def test_matches_from_dir(self):
 
     def test_matches_from_file(self):
         # check a single sample file
-        matching_sample_filepath = path.join(self._kapture_dirpath, 'reconstruction', 'matches',
+        matching_sample_filepath = path.join(self._kapture_dirpath, 'reconstruction', 'matches', 'SIFT',
                                              '00.jpg.overlapping', '01.jpg.matches')
         matchings = kapture.io.features.image_matches_from_file(matching_sample_filepath)
         self.assertIsInstance(matchings, np.ndarray)
diff --git a/tests/test_ply.py b/tests/test_ply.py
index ba6192f..49fe92e 100755
--- a/tests/test_ply.py
+++ b/tests/test_ply.py
@@ -17,11 +17,13 @@ def setUp(self):
 
     def test_plot(self):
         with tempfile.TemporaryDirectory() as tmpdirname:
-
-            plot_ply(self.toplot_folder, tmpdirname, 0.2, [], [])
+            plot_ply(self.toplot_folder, tmpdirname, 'SIFT', 0.2, [], [])
             self.assertTrue(path.isfile(path.join(tmpdirname, "points3d.ply"))
                             and path.isfile(path.join(tmpdirname, "trajectories.ply"))
-                            and path.isfile(path.join(tmpdirname, "reconstruction", "keypoints", "00.jpg.kpt.jpg")))
+                            and path.isfile(path.join(tmpdirname,
+                                                      "reconstruction",
+                                                      "keypoints", 'SIFT',
+                                                      "00.jpg.kpt.jpg")))
 
 
 if __name__ == '__main__':
diff --git a/tests/test_tar.py b/tests/test_tar.py
new file mode 100644
index 0000000..8c482c6
--- /dev/null
+++ b/tests/test_tar.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python3
+# Copyright 2020-present NAVER Corp. Under BSD 3-clause license
+
+import os.path as path
+import unittest
+# kapture
+import path_to_kapture  # enables import kapture  # noqa: F401
+import kapture
+from kapture.io.features import FEATURE_FILE_EXTENSION, get_keypoints_fullpath, image_keypoints_from_file
+from kapture.algo.compare import equal_kapture, equal_sensors, equal_records_gnss
+import kapture.io.csv as csv
+import numpy as np
+
+
+class TestTar(unittest.TestCase):
+    @classmethod
+    def setUpClass(cls) -> None:
+        """
+        Setup variables for all the tests
+        """
+        test_file_path = path.dirname(__file__)
+        cls._kapture_sample_path = path.abspath(path.join(test_file_path, '../samples/berlin/kapture'))
+        cls._kapture_tar_sample_path = path.abspath(path.join(test_file_path, '../samples/berlin/kapture_tar'))
+
+    def test_kapture_from_dir(self) -> None:
+        """
+        Test the kapture_from_dir function on small sample
+        """
+        # convert and then load
+        kapture_data_expected = csv.kapture_from_dir(self._kapture_sample_path)
+        kapture_data_no_recon = csv.kapture_from_dir(self._kapture_tar_sample_path)
+        # check in detail what could be wrong
+        self.assertTrue(equal_sensors(kapture_data_expected.sensors, kapture_data_no_recon.sensors))
+        self.assertTrue(equal_records_gnss(kapture_data_expected.records_gnss, kapture_data_no_recon.records_gnss))
+        self.assertTrue(kapture_data_no_recon.keypoints is not None
+                        and 'HessianAffine' in kapture_data_no_recon.keypoints
+                        and len(kapture_data_no_recon.keypoints['HessianAffine']) == 0)
+        self.assertTrue(kapture_data_no_recon.descriptors is not None
+                        and 'HOG' in kapture_data_no_recon.descriptors
+                        and len(kapture_data_no_recon.descriptors['HOG']) == 0)
+        self.assertTrue(kapture_data_no_recon.matches is not None
+                        and 'HessianAffine' in kapture_data_no_recon.matches
+                        and len(kapture_data_no_recon.matches['HessianAffine']) == 0)
+        # check all at once
+        self.assertFalse(equal_kapture(kapture_data_expected, kapture_data_no_recon))
+
+        with csv.get_all_tar_handlers(self._kapture_tar_sample_path) as tar_handlers:
+            kapture_data_actual = csv.kapture_from_dir(self._kapture_tar_sample_path, tar_handlers=tar_handlers)
+
+            # check in detail what could be wrong
+            self.assertTrue(equal_sensors(kapture_data_expected.sensors, kapture_data_actual.sensors))
+            self.assertTrue(equal_records_gnss(kapture_data_expected.records_gnss, kapture_data_actual.records_gnss))
+            # check all at once
+            self.assertTrue(equal_kapture(kapture_data_expected, kapture_data_actual))
+
+            # check kpt
+            image_name = '01.jpg'
+            keypoints_type = 'HessianAffine'
+            kapture_keypoints_filepath = get_keypoints_fullpath(keypoints_type,
+                                                                kapture_dirpath=self._kapture_sample_path,
+                                                                image_filename=image_name)
+            kpts_expected = image_keypoints_from_file(kapture_keypoints_filepath,
+                                                      kapture_data_expected.keypoints[keypoints_type].dtype,
+                                                      kapture_data_expected.keypoints[keypoints_type].dsize)
+            handler_kpts = tar_handlers.keypoints[keypoints_type]
+            kpts_actual = handler_kpts.get_array_from_tar(image_name + FEATURE_FILE_EXTENSION[kapture.Keypoints],
+                                                          kapture_data_expected.keypoints[keypoints_type].dtype,
+                                                          kapture_data_expected.keypoints[keypoints_type].dsize)
+            self.assertTrue(np.array_equal(kpts_expected, kpts_actual))
+
+            kapture_keypoints_filepath = get_keypoints_fullpath(keypoints_type,
+                                                                kapture_dirpath=self._kapture_sample_path,
+                                                                image_filename=image_name,
+                                                                tar_handler=tar_handlers)
+            kpts_expected = image_keypoints_from_file(kapture_keypoints_filepath,
+                                                      kapture_data_expected.keypoints[keypoints_type].dtype,
+                                                      kapture_data_expected.keypoints[keypoints_type].dsize)
+            self.assertTrue(np.array_equal(kpts_expected, kpts_actual))
+
+
+if __name__ == '__main__':
+    unittest.main()