├── .github └── workflows │ ├── build_conda.yml │ ├── build_osx.yml │ ├── build_rocky.yml │ └── build_win.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── CMakeLists.txt ├── CMakeLists.txt.in ├── LICENSE ├── README.md ├── VVERSION ├── collapse.h ├── conda ├── bld.bat ├── build.sh ├── conda_build_config.yaml ├── environment.yml └── meta.yaml ├── dim3.h ├── edge_detect.h ├── factory.cpp ├── factory.h ├── fill_gaps.h ├── img ├── duplex_outer_voxel_pointcloud.png ├── evacuation_distance.png ├── exterior_interior.png └── heights.png ├── json_logger.cpp ├── json_logger.h ├── lru_cache.h ├── memoized_traversal.h ├── module └── __init__.py ├── offset.h ├── polyfill.cpp ├── polyfill.h ├── processor.h ├── progress.h ├── progress_writer.cpp ├── progress_writer.h ├── pyproject.toml ├── python └── voxec │ ├── __init__.py │ └── __main__.py ├── resample.h ├── shift.h ├── storage.cpp ├── storage.h ├── surface_count.sh ├── sweep.h ├── tests ├── fixtures │ ├── covering.ifc │ ├── demo2.ifc │ ├── duplex.ifc │ ├── duplex_wall.ifc │ ├── schependom_foundation.ifc │ ├── voxelfile1.txt │ ├── voxelfile2.txt │ ├── voxelfile3.txt │ ├── voxelfile4.txt │ ├── voxelfile5.txt │ ├── voxelfile7.txt │ ├── voxelfile8.txt │ └── voxelfilec.txt ├── test_boolean.cpp ├── test_box_surface.cpp ├── test_collapse.cpp ├── test_covering.cpp ├── test_dimensionality_estimate.cpp ├── test_edges.cpp ├── test_fill_gaps.cpp ├── test_foundation.cpp ├── test_keep_neighbours.cpp ├── test_memmap.cpp ├── test_memoized_traversal.cpp ├── test_normal.cpp ├── test_offset.cpp ├── test_parser.cpp ├── test_parser_assert.cpp ├── test_parser_prop_filter.cpp ├── test_parser_resample.cpp ├── test_pca.cpp ├── test_polyfill.cpp ├── test_resample.cpp ├── test_space_ids.cpp ├── test_sweep_max.cpp ├── test_traversal.cpp ├── test_traversal_float.cpp ├── test_validate.cpp ├── test_vec_n.cpp ├── test_volume.cpp ├── test_voxelizer.cpp └── test_wall.cpp ├── traversal.h ├── tribox3.cpp ├── util.h ├── volume.h ├── voxec.cpp ├── voxec.h ├── voxec_main.cpp ├── voxelfile.h ├── voxelizer.h ├── wrap └── wrapper.i └── writer.h /.github/workflows/build_conda.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/.github/workflows/build_conda.yml -------------------------------------------------------------------------------- /.github/workflows/build_osx.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/.github/workflows/build_osx.yml -------------------------------------------------------------------------------- /.github/workflows/build_rocky.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/.github/workflows/build_rocky.yml -------------------------------------------------------------------------------- /.github/workflows/build_win.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/.github/workflows/build_win.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/.gitmodules -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/.travis.yml -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /CMakeLists.txt.in: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/CMakeLists.txt.in -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/README.md -------------------------------------------------------------------------------- /VVERSION: -------------------------------------------------------------------------------- 1 | 0.4.2 -------------------------------------------------------------------------------- /collapse.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/collapse.h -------------------------------------------------------------------------------- /conda/bld.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/conda/bld.bat -------------------------------------------------------------------------------- /conda/build.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/conda/build.sh -------------------------------------------------------------------------------- /conda/conda_build_config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/conda/conda_build_config.yaml -------------------------------------------------------------------------------- /conda/environment.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/conda/environment.yml -------------------------------------------------------------------------------- /conda/meta.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/conda/meta.yaml -------------------------------------------------------------------------------- /dim3.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/dim3.h -------------------------------------------------------------------------------- /edge_detect.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/edge_detect.h -------------------------------------------------------------------------------- /factory.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/factory.cpp -------------------------------------------------------------------------------- /factory.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/factory.h -------------------------------------------------------------------------------- /fill_gaps.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/fill_gaps.h -------------------------------------------------------------------------------- /img/duplex_outer_voxel_pointcloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/img/duplex_outer_voxel_pointcloud.png -------------------------------------------------------------------------------- /img/evacuation_distance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/img/evacuation_distance.png -------------------------------------------------------------------------------- /img/exterior_interior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/img/exterior_interior.png -------------------------------------------------------------------------------- /img/heights.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/img/heights.png -------------------------------------------------------------------------------- /json_logger.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/json_logger.cpp -------------------------------------------------------------------------------- /json_logger.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/json_logger.h -------------------------------------------------------------------------------- /lru_cache.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/lru_cache.h -------------------------------------------------------------------------------- /memoized_traversal.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/memoized_traversal.h -------------------------------------------------------------------------------- /module/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/module/__init__.py -------------------------------------------------------------------------------- /offset.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/offset.h -------------------------------------------------------------------------------- /polyfill.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/polyfill.cpp -------------------------------------------------------------------------------- /polyfill.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/polyfill.h -------------------------------------------------------------------------------- /processor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/processor.h -------------------------------------------------------------------------------- /progress.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/progress.h -------------------------------------------------------------------------------- /progress_writer.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/progress_writer.cpp -------------------------------------------------------------------------------- /progress_writer.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/progress_writer.h -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/pyproject.toml -------------------------------------------------------------------------------- /python/voxec/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/python/voxec/__init__.py -------------------------------------------------------------------------------- /python/voxec/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/python/voxec/__main__.py -------------------------------------------------------------------------------- /resample.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/resample.h -------------------------------------------------------------------------------- /shift.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/shift.h -------------------------------------------------------------------------------- /storage.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/storage.cpp -------------------------------------------------------------------------------- /storage.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/storage.h -------------------------------------------------------------------------------- /surface_count.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/surface_count.sh -------------------------------------------------------------------------------- /sweep.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/sweep.h -------------------------------------------------------------------------------- /tests/fixtures/covering.ifc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/covering.ifc -------------------------------------------------------------------------------- /tests/fixtures/demo2.ifc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/demo2.ifc -------------------------------------------------------------------------------- /tests/fixtures/duplex.ifc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/duplex.ifc -------------------------------------------------------------------------------- /tests/fixtures/duplex_wall.ifc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/duplex_wall.ifc -------------------------------------------------------------------------------- /tests/fixtures/schependom_foundation.ifc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/schependom_foundation.ifc -------------------------------------------------------------------------------- /tests/fixtures/voxelfile1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfile1.txt -------------------------------------------------------------------------------- /tests/fixtures/voxelfile2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfile2.txt -------------------------------------------------------------------------------- /tests/fixtures/voxelfile3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfile3.txt -------------------------------------------------------------------------------- /tests/fixtures/voxelfile4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfile4.txt -------------------------------------------------------------------------------- /tests/fixtures/voxelfile5.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfile5.txt -------------------------------------------------------------------------------- /tests/fixtures/voxelfile7.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfile7.txt -------------------------------------------------------------------------------- /tests/fixtures/voxelfile8.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfile8.txt -------------------------------------------------------------------------------- /tests/fixtures/voxelfilec.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/fixtures/voxelfilec.txt -------------------------------------------------------------------------------- /tests/test_boolean.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_boolean.cpp -------------------------------------------------------------------------------- /tests/test_box_surface.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_box_surface.cpp -------------------------------------------------------------------------------- /tests/test_collapse.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_collapse.cpp -------------------------------------------------------------------------------- /tests/test_covering.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_covering.cpp -------------------------------------------------------------------------------- /tests/test_dimensionality_estimate.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_dimensionality_estimate.cpp -------------------------------------------------------------------------------- /tests/test_edges.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_edges.cpp -------------------------------------------------------------------------------- /tests/test_fill_gaps.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_fill_gaps.cpp -------------------------------------------------------------------------------- /tests/test_foundation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_foundation.cpp -------------------------------------------------------------------------------- /tests/test_keep_neighbours.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_keep_neighbours.cpp -------------------------------------------------------------------------------- /tests/test_memmap.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_memmap.cpp -------------------------------------------------------------------------------- /tests/test_memoized_traversal.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_memoized_traversal.cpp -------------------------------------------------------------------------------- /tests/test_normal.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_normal.cpp -------------------------------------------------------------------------------- /tests/test_offset.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_offset.cpp -------------------------------------------------------------------------------- /tests/test_parser.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_parser.cpp -------------------------------------------------------------------------------- /tests/test_parser_assert.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_parser_assert.cpp -------------------------------------------------------------------------------- /tests/test_parser_prop_filter.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_parser_prop_filter.cpp -------------------------------------------------------------------------------- /tests/test_parser_resample.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_parser_resample.cpp -------------------------------------------------------------------------------- /tests/test_pca.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_pca.cpp -------------------------------------------------------------------------------- /tests/test_polyfill.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_polyfill.cpp -------------------------------------------------------------------------------- /tests/test_resample.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_resample.cpp -------------------------------------------------------------------------------- /tests/test_space_ids.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_space_ids.cpp -------------------------------------------------------------------------------- /tests/test_sweep_max.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_sweep_max.cpp -------------------------------------------------------------------------------- /tests/test_traversal.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_traversal.cpp -------------------------------------------------------------------------------- /tests/test_traversal_float.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_traversal_float.cpp -------------------------------------------------------------------------------- /tests/test_validate.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_validate.cpp -------------------------------------------------------------------------------- /tests/test_vec_n.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_vec_n.cpp -------------------------------------------------------------------------------- /tests/test_volume.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_volume.cpp -------------------------------------------------------------------------------- /tests/test_voxelizer.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_voxelizer.cpp -------------------------------------------------------------------------------- /tests/test_wall.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tests/test_wall.cpp -------------------------------------------------------------------------------- /traversal.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/traversal.h -------------------------------------------------------------------------------- /tribox3.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/tribox3.cpp -------------------------------------------------------------------------------- /util.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/util.h -------------------------------------------------------------------------------- /volume.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/volume.h -------------------------------------------------------------------------------- /voxec.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/voxec.cpp -------------------------------------------------------------------------------- /voxec.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/voxec.h -------------------------------------------------------------------------------- /voxec_main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/voxec_main.cpp -------------------------------------------------------------------------------- /voxelfile.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/voxelfile.h -------------------------------------------------------------------------------- /voxelizer.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/voxelizer.h -------------------------------------------------------------------------------- /wrap/wrapper.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/wrap/wrapper.i -------------------------------------------------------------------------------- /writer.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IfcOpenShell/voxelization_toolkit/HEAD/writer.h --------------------------------------------------------------------------------