├── .cargo └── config.toml ├── .github └── workflows │ └── release.yml ├── .gitignore ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── Cargo.lock ├── Cargo.toml ├── LICENSE-GPL ├── README.md ├── RELEASES.md ├── rastcp ├── Cargo.toml ├── README.md ├── examples │ └── file_transfer.rs ├── src │ ├── cert.rs │ ├── client.rs │ ├── common.rs │ ├── config.rs │ ├── error.rs │ ├── lib.rs │ ├── main.rs │ └── server.rs └── tests │ ├── advanced_tests.rs │ ├── integration_tests.rs │ └── protocol_tests.rs ├── rasterizeddb_core ├── Cargo.toml ├── README.md ├── benches │ ├── atomic_cache_benchmarks.rs │ ├── query_benchmarks.rs │ ├── query_executor_benchmarks.rs │ ├── simd_copy_benchmarks.rs │ └── string_instructions_benchmarks.rs └── src │ ├── cache │ ├── atomic_cache.rs │ └── mod.rs │ ├── client.rs │ ├── configuration │ └── mod.rs │ ├── core │ ├── database │ │ └── mod.rs │ ├── db_type.rs │ ├── helpers │ │ ├── mod.rs │ │ └── smallvec_extensions.rs │ ├── mock_helpers.rs │ ├── mock_table.rs │ ├── mod.rs │ ├── processor │ │ ├── concurrent_processor.rs │ │ ├── mod.rs │ │ └── transformer.rs │ ├── row │ │ ├── common.rs │ │ ├── error.rs │ │ ├── logical.rs │ │ ├── math.rs │ │ ├── mod.rs │ │ ├── row.rs │ │ ├── row_pointer.rs │ │ ├── schema.rs │ │ └── table.rs │ ├── rql │ │ ├── executor.rs │ │ ├── lexer_ac.rs │ │ ├── lexer_ct.rs │ │ ├── lexer_dc.rs │ │ ├── lexer_dr.rs │ │ ├── lexer_dt.rs │ │ ├── lexer_ir.rs │ │ ├── lexer_query.rs │ │ ├── lexer_rc.rs │ │ ├── lexer_s1.rs │ │ ├── lexer_ur.rs │ │ └── mod.rs │ ├── storage_providers │ │ ├── file_sync.rs │ │ ├── helpers.rs │ │ ├── memory.rs │ │ ├── mock_file_sync.rs │ │ ├── mod.rs │ │ └── traits.rs │ ├── support_types.rs │ └── tokenizer │ │ ├── mod.rs │ │ ├── query_parser.rs │ │ └── query_tokenizer.rs │ ├── instructions.rs │ ├── lib.rs │ ├── main.rs │ ├── memory_pool.rs │ ├── renderers │ ├── html.rs │ ├── mod.rs │ └── template.html │ └── simds │ ├── endianess.rs │ └── mod.rs ├── test_client ├── Cargo.toml └── src │ └── main.rs └── test_db_web ├── Cargo.toml └── src └── main.rs /.cargo/config.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/.cargo/config.toml -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /old_code/ -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/.vscode/launch.json -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rust-analyzer.showUnlinkedFileNotification": false 3 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/.vscode/tasks.json -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/Cargo.lock -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/Cargo.toml -------------------------------------------------------------------------------- /LICENSE-GPL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/LICENSE-GPL -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/README.md -------------------------------------------------------------------------------- /RELEASES.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/RELEASES.md -------------------------------------------------------------------------------- /rastcp/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/Cargo.toml -------------------------------------------------------------------------------- /rastcp/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/README.md -------------------------------------------------------------------------------- /rastcp/examples/file_transfer.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/examples/file_transfer.rs -------------------------------------------------------------------------------- /rastcp/src/cert.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/cert.rs -------------------------------------------------------------------------------- /rastcp/src/client.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/client.rs -------------------------------------------------------------------------------- /rastcp/src/common.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/common.rs -------------------------------------------------------------------------------- /rastcp/src/config.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/config.rs -------------------------------------------------------------------------------- /rastcp/src/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/error.rs -------------------------------------------------------------------------------- /rastcp/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/lib.rs -------------------------------------------------------------------------------- /rastcp/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/main.rs -------------------------------------------------------------------------------- /rastcp/src/server.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/src/server.rs -------------------------------------------------------------------------------- /rastcp/tests/advanced_tests.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/tests/advanced_tests.rs -------------------------------------------------------------------------------- /rastcp/tests/integration_tests.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/tests/integration_tests.rs -------------------------------------------------------------------------------- /rastcp/tests/protocol_tests.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rastcp/tests/protocol_tests.rs -------------------------------------------------------------------------------- /rasterizeddb_core/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/Cargo.toml -------------------------------------------------------------------------------- /rasterizeddb_core/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/README.md -------------------------------------------------------------------------------- /rasterizeddb_core/benches/atomic_cache_benchmarks.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/benches/atomic_cache_benchmarks.rs -------------------------------------------------------------------------------- /rasterizeddb_core/benches/query_benchmarks.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/benches/query_benchmarks.rs -------------------------------------------------------------------------------- /rasterizeddb_core/benches/query_executor_benchmarks.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/benches/query_executor_benchmarks.rs -------------------------------------------------------------------------------- /rasterizeddb_core/benches/simd_copy_benchmarks.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/benches/simd_copy_benchmarks.rs -------------------------------------------------------------------------------- /rasterizeddb_core/benches/string_instructions_benchmarks.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/benches/string_instructions_benchmarks.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/cache/atomic_cache.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/cache/atomic_cache.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/cache/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod atomic_cache; -------------------------------------------------------------------------------- /rasterizeddb_core/src/client.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/client.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/configuration/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/configuration/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/database/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/database/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/db_type.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/db_type.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/helpers/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod smallvec_extensions; 2 | -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/helpers/smallvec_extensions.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/helpers/smallvec_extensions.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/mock_helpers.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/mock_helpers.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/mock_table.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/mock_table.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/processor/concurrent_processor.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/processor/concurrent_processor.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/processor/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/processor/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/processor/transformer.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/processor/transformer.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/common.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/common.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/error.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/logical.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/logical.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/math.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/math.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/row.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/row.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/row_pointer.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/row_pointer.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/schema.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/schema.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/row/table.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/row/table.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/executor.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/executor.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_ac.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_ac.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_ct.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_ct.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_dc.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_dc.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_dr.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_dr.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_dt.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_dt.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_ir.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_ir.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_query.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_query.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_rc.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_rc.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_s1.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/lexer_s1.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/lexer_ur.rs: -------------------------------------------------------------------------------- 1 | // Update Row TBA 2 | -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/rql/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/rql/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/storage_providers/file_sync.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/storage_providers/file_sync.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/storage_providers/helpers.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/storage_providers/helpers.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/storage_providers/memory.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/storage_providers/memory.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/storage_providers/mock_file_sync.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/storage_providers/mock_file_sync.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/storage_providers/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/storage_providers/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/storage_providers/traits.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/storage_providers/traits.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/support_types.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/support_types.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/tokenizer/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/tokenizer/mod.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/tokenizer/query_parser.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/tokenizer/query_parser.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/core/tokenizer/query_tokenizer.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/core/tokenizer/query_tokenizer.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/instructions.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/instructions.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/lib.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/main.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/memory_pool.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/memory_pool.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/renderers/html.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/renderers/html.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/renderers/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod html; 2 | -------------------------------------------------------------------------------- /rasterizeddb_core/src/renderers/template.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/renderers/template.html -------------------------------------------------------------------------------- /rasterizeddb_core/src/simds/endianess.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/rasterizeddb_core/src/simds/endianess.rs -------------------------------------------------------------------------------- /rasterizeddb_core/src/simds/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod endianess; 2 | -------------------------------------------------------------------------------- /test_client/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/test_client/Cargo.toml -------------------------------------------------------------------------------- /test_client/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/test_client/src/main.rs -------------------------------------------------------------------------------- /test_db_web/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/test_db_web/Cargo.toml -------------------------------------------------------------------------------- /test_db_web/src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/milen-denev/rasterizeddb/HEAD/test_db_web/src/main.rs --------------------------------------------------------------------------------