From 48aab751b5edb432167602e42c21b3168258a6df Mon Sep 17 00:00:00 2001 From: John X Date: Thu, 4 Jul 2024 18:00:31 +0100 Subject: [PATCH] Deploy website - based on 23c6a8e35cea83ba5f69ae8db74a3179b174ac1f --- .commitlintrc.js | 69 - .editorconfig | 19 - .github/CONTRIBUTING.md | 34 - .github/FUNDING.yml | 2 - .github/ISSUE_TEMPLATE/core-setup-issue.md | 16 - .github/ISSUE_TEMPLATE/engineering.md | 29 - .github/scripts/rename.sh | 38 - .github/workflows/ci.yml | 97 - .gitignore | 20 - .gitmodules | 6 - .gitpod.yml | 14 - .../lib/file.d.ts => .nojekyll | 0 .prettierignore | 18 - .prettierrc.yml | 7 - .solhint.json | 14 - .vscode/settings.json | 11 - 404.html | 14 + CNAME | 1 + LICENSE-MIT | 21 - LICENSE.md | 15 - README.md | 32 - assets/css/styles.500dd4b8.css | 1 + ...pdown-35e13cbe46c9923327f30a76a90bff3b.png | Bin 0 -> 25427 bytes ...nner-a60f7593abca1e3eef26a9afa244e4fb.jpeg | Bin 0 -> 96122 bytes ...pdown-f0d995e751e7656a1b0dbbc1134e49c2.png | Bin 0 -> 27841 bytes assets/js/003da42b.767baa12.js | 1 + assets/js/0058b4c6.1baed65d.js | 1 + assets/js/00fb3d82.a8ad1435.js | 1 + assets/js/01a85c17.4b09fa65.js | 1 + assets/js/09d5ad39.24aea618.js | 1 + assets/js/0e384e19.00bed4f2.js | 1 + assets/js/1538.a265ec9d.js | 1 + assets/js/17896441.aca2f39a.js | 1 + assets/js/18c41134.946ac897.js | 1 + assets/js/1b6ec5d4.440a55b5.js | 1 + assets/js/1df93b7f.0275efec.js | 1 + assets/js/1e4232ab.81526a43.js | 1 + assets/js/1f391b9e.cb5e65be.js | 1 + assets/js/207666d2.a9f47421.js | 1 + assets/js/2237.fe867cfb.js | 1 + assets/js/2c1b52bf.3592ad26.js | 1 + assets/js/3217192f.f67096cb.js | 1 + assets/js/3242.e2456824.js | 1 + assets/js/35131ec2.82b557e5.js | 1 + assets/js/36994c47.337a7516.js | 1 + assets/js/393be207.a0ef7dd4.js | 1 + assets/js/3a2db09e.39dab5fe.js | 1 + assets/js/4e345e3b.0aaadb8d.js | 1 + assets/js/533a09ca.b8570790.js | 1 + assets/js/584535cc.4efad016.js | 1 + assets/js/59362658.fceb63f4.js | 1 + assets/js/5c868d36.00dc99bc.js | 1 + assets/js/5e90a9b3.111c581f.js | 1 + assets/js/5e95c892.3d1fe17f.js | 1 + assets/js/6875c492.ab63eb90.js | 1 + assets/js/6edd94a7.ba7d4649.js | 1 + assets/js/73664a40.93ba7b65.js | 1 + assets/js/7661071f.d4c31643.js | 1 + assets/js/7ae2cc57.0c88ed34.js | 1 + assets/js/814f3328.5dfaceaf.js | 1 + assets/js/822bd8ab.daee8353.js | 1 + assets/js/8717b14a.a93f16c9.js | 1 + assets/js/9176b25c.8a4aa6a5.js | 1 + assets/js/925b3f96.71100b88.js | 1 + assets/js/9dfd250b.e705d71e.js | 1 + assets/js/9e4087bc.9b70b1ae.js | 1 + assets/js/a6aa9e1f.02f3ef1b.js | 1 + assets/js/a7456010.5f9bbb01.js | 1 + assets/js/a7bd4aaa.b74e8d88.js | 1 + assets/js/a8f61235.cffc3c7f.js | 1 + assets/js/a94703ab.6844256b.js | 1 + assets/js/aba21aa0.ed09cce9.js | 1 + assets/js/acecf23e.92dddac5.js | 1 + assets/js/b5b6e5e3.9d608202.js | 1 + assets/js/bd6d0e35.413a63d4.js | 1 + assets/js/c15d9823.a40c7001.js | 1 + assets/js/ccc49370.a9298228.js | 1 + assets/js/ce48dac6.c8131e26.js | 1 + assets/js/d9f32620.2564a5e9.js | 1 + assets/js/dff1c289.9333c787.js | 1 + assets/js/e273c56f.3d9c4200.js | 1 + assets/js/e44a2883.1dd47946.js | 1 + assets/js/e5aefb32.33ae4d86.js | 1 + assets/js/f0e24734.b195996c.js | 1 + assets/js/f4f34a3a.b47754e9.js | 1 + assets/js/f55d3e7a.88d09a56.js | 1 + assets/js/f81c1134.e9ba17ee.js | 1 + assets/js/f82cd581.c160cd7f.js | 1 + assets/js/fa823849.72126d87.js | 1 + assets/js/main.2164645d.js | 2 + assets/js/main.2164645d.js.LICENSE.txt | 64 + assets/js/runtime~main.ee2fcbd6.js | 1 + blog/archive/index.html | 14 + blog/atom.xml | 99 + blog/first-blog-post/index.html | 14 + blog/index.html | 27 + blog/long-blog-post/index.html | 31 + blog/mdx-blog-post/index.html | 15 + blog/rss.xml | 81 + blog/tags/docusaurus/index.html | 27 + blog/tags/facebook/index.html | 25 + blog/tags/hello/index.html | 26 + blog/tags/hola/index.html | 14 + blog/tags/index.html | 14 + blog/welcome/index.html | 25 + bun.lockb | Bin 28807 -> 0 bytes .../decentralized-spatial-data/index.html | 14 + docs/core-concepts/location-proofs/index.html | 14 + .../onchain-geospatial/index.html | 14 + .../what-is-spatial-data/index.html | 14 + .../location-attestations/index.html | 14 + .../developer-resources/quickstart/index.html | 14 + .../spatial-registries/index.html | 14 + docs/examples/index.html | 14 + docs/hello/index.html | 16 + docs/intro/index.html | 38 + docs/introducing-astral/index.html | 14 + .../architecture/index.html | 28 + .../eas-schema/index.html | 20 + .../introduction/index.html | 34 + .../location-types/index.html | 82 + .../media-types/index.html | 118 + .../rationale/index.html | 24 + .../strategies-recipes/index.html | 40 + docs/spatial-registries/logbook/index.html | 14 + .../spatial-registries/spatial-sol/index.html | 14 + .../congratulations/index.html | 28 + .../create-a-blog-post/index.html | 19 + .../create-a-document/index.html | 30 + docs/tutorial-basics/create-a-page/index.html | 28 + .../deploy-your-site/index.html | 25 + .../markdown-features/index.html | 45 + .../manage-docs-versions/index.html | 36 + .../translate-your-site/index.html | 38 + foundry.toml | 53 - img/docusaurus-social-card.jpg | Bin 0 -> 55746 bytes img/docusaurus.png | Bin 0 -> 5142 bytes img/favicon.ico | Bin 0 -> 3626 bytes img/logo.svg | 5 + img/undraw_docusaurus_mountain.svg | 171 + img/undraw_docusaurus_react.svg | 170 + img/undraw_docusaurus_tree.svg | 40 + index.html | 14 + legacy/.travis.yml | 12 - legacy/.travis/build-condition.sh | 13 - legacy/LICENSE-APACHE | 201 - legacy/README.md | 38 - legacy/lerna.json | 14 - legacy/package.json | 33 - legacy/packages/contracts/.solcover.js | 3 - legacy/packages/contracts/CHANGELOG.md | 368 - legacy/packages/contracts/LICENSE-APACHE | 201 - legacy/packages/contracts/LICENSE-MIT | 21 - legacy/packages/contracts/README.md | 40 - .../contracts/contracts/Migrations.sol | 26 - .../contracts/contracts/SpatialAssets.sol | 329 - legacy/packages/contracts/coverage.json | 1 - .../migrations/1_initial_migration.js | 5 - .../contracts/migrations/2_deploy_contract.js | 13 - legacy/packages/contracts/package.json | 55 - .../contracts/scripts/deployGeoDIDs.js | 100 - .../contracts/scripts/newInstance-remove.js | 107 - .../packages/contracts/scripts/newInstance.js | 148 - legacy/packages/contracts/scripts/test.js | 82 - .../packages/contracts/test/SpatialAssets.js | 773 - legacy/packages/contracts/truffle-config.js | 44 - legacy/packages/contracts/tsconfig.json | 10 - legacy/packages/contracts/tslint.json | 6 - legacy/packages/core/.eslintrc.js | 18 - legacy/packages/core/.prettierrc.js | 7 - legacy/packages/core/CHANGELOG.md | 928 - legacy/packages/core/LICENSE-APACHE | 201 - legacy/packages/core/LICENSE-MIT | 21 - legacy/packages/core/README.md | 96 - .../__tests__/astral-protocol-core.test.js | 47 - legacy/packages/core/babel.config.js | 20 - legacy/packages/core/package.json | 93 - legacy/packages/core/src/astral-client.ts | 168 - legacy/packages/core/src/docu/document.ts | 72 - .../default/geo-did-default-collection.ts | 97 - .../default/geo-did-default-document.ts | 54 - .../default/geo-did-default-factory.ts | 9 - .../geo-did/default/geo-did-default-item.ts | 135 - .../doctype-utils/geo-doctype-utils.ts | 59 - .../geo-did/interfaces/factory-interfaces.ts | 20 - .../interfaces/global-geo-did-interfaces.ts | 54 - legacy/packages/core/src/pin/powergate.ts | 115 - .../core/src/resolver/geo-did-resolver.ts | 153 - legacy/packages/core/src/scripts/fetch.ts | 17 - legacy/packages/core/tsconfig.json | 10 - .../ipld-encoded-geotiff/CHANGELOG.md | 48 - .../ipld-encoded-geotiff/LICENSE-APACHE | 201 - .../packages/ipld-encoded-geotiff/LICENSE-MIT | 21 - .../packages/ipld-encoded-geotiff/README.md | 11 - .../__tests__/ipld-encoded-geotiff.test.js | 7 - .../ipld-encoded-geotiff/lib/index.d.ts | 1 - .../ipld-encoded-geotiff/lib/index.js | 41 - .../ipld-encoded-geotiff/lib/index.js.map | 1 - .../ipld-encoded-geotiff/package.json | 55 - .../ipld-encoded-geotiff/src/index.ts | 38 - .../src/tiff/gdal/cea.tif | Bin 269384 -> 0 bytes .../ipld-encoded-geotiff/tsconfig.json | 25 - .../packages/stac-validator-js/CHANGELOG.md | 288 - .../packages/stac-validator-js/LICENSE-APACHE | 201 - legacy/packages/stac-validator-js/LICENSE-MIT | 21 - legacy/packages/stac-validator-js/lib/file.js | 1 - .../stac-validator-js/lib/file.js.map | 1 - .../packages/stac-validator-js/package.json | 41 - legacy/packages/stac-validator-js/src/file.ts | 0 .../stac-validator-js/src/stac-validator.js | 175 - .../packages/stac-validator-js/tsconfig.json | 10 - legacy/packages/subgraph/CHANGELOG.md | 304 - legacy/packages/subgraph/LICENSE-APACHE | 201 - legacy/packages/subgraph/LICENSE-MIT | 21 - legacy/packages/subgraph/README.md | 61 - .../packages/subgraph/abis/SpatialAssets.json | 30268 ---------------- legacy/packages/subgraph/docs/try.graphql | 22 - .../generated/SpatialAssets/SpatialAssets.ts | 1026 - legacy/packages/subgraph/generated/schema.ts | 210 - legacy/packages/subgraph/package.json | 42 - legacy/packages/subgraph/schema.graphql | 22 - legacy/packages/subgraph/src/helpers.ts | 13 - legacy/packages/subgraph/src/mapping.ts | 358 - legacy/packages/subgraph/subgraph.yaml | 40 - legacy/packages/subgraph/subgraphLocal.yaml | 40 - legacy/packages/subgraph/tsconfig.json | 10 - legacy/tsconfig.json | 25 - location-proof-protocol/README.md | 77 - markdown-page/index.html | 15 + package.json | 39 - remappings.txt | 6 - script/Base.s.sol | 41 - script/Deploy.s.sol | 13 - sitemap.xml | 1 + .../location-proof-protocol/README.md | 71 - .../locations/README.md | 35 - .../location-proof-protocol/media/README.md | 0 .../recipes/CONTRIBUTING.md | 0 .../location-proof-protocol/recipes/README.md | 0 .../recipes/sample-recipe/README.md | 0 .../recipes/sample-recipe/SampleRecipe.sol | 0 .../offchain-peripherals/sample-recipe.ts | 0 .../location-proof-protocol/schema/README.md | 25 - src/contracts/spatial-registry/README.md | 0 .../spatial-registry/RegistryFactory.sol | 38 - .../spatial-registry/SpatialRegistry.sol | 69 - src/contracts/utils/Coordinates.sol | 51 - src/contracts/utils/README.md | 0 src/interface/ICoordinates.sol | 45 - src/interface/IRegistryFactory.sol | 27 - src/interface/ISpatialRegistry.sol | 46 - test/RegistryFactory.t.sol | 25 - 252 files changed, 1778 insertions(+), 40010 deletions(-) delete mode 100644 .commitlintrc.js delete mode 100644 .editorconfig delete mode 100644 .github/CONTRIBUTING.md delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/core-setup-issue.md delete mode 100644 .github/ISSUE_TEMPLATE/engineering.md delete mode 100755 .github/scripts/rename.sh delete mode 100644 .github/workflows/ci.yml delete mode 100644 .gitignore delete mode 100644 .gitmodules delete mode 100644 .gitpod.yml rename legacy/packages/stac-validator-js/lib/file.d.ts => .nojekyll (100%) delete mode 100644 .prettierignore delete mode 100644 .prettierrc.yml delete mode 100644 .solhint.json delete mode 100644 .vscode/settings.json create mode 100644 404.html create mode 100644 CNAME delete mode 100644 LICENSE-MIT delete mode 100644 LICENSE.md delete mode 100644 README.md create mode 100644 assets/css/styles.500dd4b8.css create mode 100644 assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png create mode 100644 assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg create mode 100644 assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png create mode 100644 assets/js/003da42b.767baa12.js create mode 100644 assets/js/0058b4c6.1baed65d.js create mode 100644 assets/js/00fb3d82.a8ad1435.js create mode 100644 assets/js/01a85c17.4b09fa65.js create mode 100644 assets/js/09d5ad39.24aea618.js create mode 100644 assets/js/0e384e19.00bed4f2.js create mode 100644 assets/js/1538.a265ec9d.js create mode 100644 assets/js/17896441.aca2f39a.js create mode 100644 assets/js/18c41134.946ac897.js create mode 100644 assets/js/1b6ec5d4.440a55b5.js create mode 100644 assets/js/1df93b7f.0275efec.js create mode 100644 assets/js/1e4232ab.81526a43.js create mode 100644 assets/js/1f391b9e.cb5e65be.js create mode 100644 assets/js/207666d2.a9f47421.js create mode 100644 assets/js/2237.fe867cfb.js create mode 100644 assets/js/2c1b52bf.3592ad26.js create mode 100644 assets/js/3217192f.f67096cb.js create mode 100644 assets/js/3242.e2456824.js create mode 100644 assets/js/35131ec2.82b557e5.js create mode 100644 assets/js/36994c47.337a7516.js create mode 100644 assets/js/393be207.a0ef7dd4.js create mode 100644 assets/js/3a2db09e.39dab5fe.js create mode 100644 assets/js/4e345e3b.0aaadb8d.js create mode 100644 assets/js/533a09ca.b8570790.js create mode 100644 assets/js/584535cc.4efad016.js create mode 100644 assets/js/59362658.fceb63f4.js create mode 100644 assets/js/5c868d36.00dc99bc.js create mode 100644 assets/js/5e90a9b3.111c581f.js create mode 100644 assets/js/5e95c892.3d1fe17f.js create mode 100644 assets/js/6875c492.ab63eb90.js create mode 100644 assets/js/6edd94a7.ba7d4649.js create mode 100644 assets/js/73664a40.93ba7b65.js create mode 100644 assets/js/7661071f.d4c31643.js create mode 100644 assets/js/7ae2cc57.0c88ed34.js create mode 100644 assets/js/814f3328.5dfaceaf.js create mode 100644 assets/js/822bd8ab.daee8353.js create mode 100644 assets/js/8717b14a.a93f16c9.js create mode 100644 assets/js/9176b25c.8a4aa6a5.js create mode 100644 assets/js/925b3f96.71100b88.js create mode 100644 assets/js/9dfd250b.e705d71e.js create mode 100644 assets/js/9e4087bc.9b70b1ae.js create mode 100644 assets/js/a6aa9e1f.02f3ef1b.js create mode 100644 assets/js/a7456010.5f9bbb01.js create mode 100644 assets/js/a7bd4aaa.b74e8d88.js create mode 100644 assets/js/a8f61235.cffc3c7f.js create mode 100644 assets/js/a94703ab.6844256b.js create mode 100644 assets/js/aba21aa0.ed09cce9.js create mode 100644 assets/js/acecf23e.92dddac5.js create mode 100644 assets/js/b5b6e5e3.9d608202.js create mode 100644 assets/js/bd6d0e35.413a63d4.js create mode 100644 assets/js/c15d9823.a40c7001.js create mode 100644 assets/js/ccc49370.a9298228.js create mode 100644 assets/js/ce48dac6.c8131e26.js create mode 100644 assets/js/d9f32620.2564a5e9.js create mode 100644 assets/js/dff1c289.9333c787.js create mode 100644 assets/js/e273c56f.3d9c4200.js create mode 100644 assets/js/e44a2883.1dd47946.js create mode 100644 assets/js/e5aefb32.33ae4d86.js create mode 100644 assets/js/f0e24734.b195996c.js create mode 100644 assets/js/f4f34a3a.b47754e9.js create mode 100644 assets/js/f55d3e7a.88d09a56.js create mode 100644 assets/js/f81c1134.e9ba17ee.js create mode 100644 assets/js/f82cd581.c160cd7f.js create mode 100644 assets/js/fa823849.72126d87.js create mode 100644 assets/js/main.2164645d.js create mode 100644 assets/js/main.2164645d.js.LICENSE.txt create mode 100644 assets/js/runtime~main.ee2fcbd6.js create mode 100644 blog/archive/index.html create mode 100644 blog/atom.xml create mode 100644 blog/first-blog-post/index.html create mode 100644 blog/index.html create mode 100644 blog/long-blog-post/index.html create mode 100644 blog/mdx-blog-post/index.html create mode 100644 blog/rss.xml create mode 100644 blog/tags/docusaurus/index.html create mode 100644 blog/tags/facebook/index.html create mode 100644 blog/tags/hello/index.html create mode 100644 blog/tags/hola/index.html create mode 100644 blog/tags/index.html create mode 100644 blog/welcome/index.html delete mode 100755 bun.lockb create mode 100644 docs/core-concepts/decentralized-spatial-data/index.html create mode 100644 docs/core-concepts/location-proofs/index.html create mode 100644 docs/core-concepts/onchain-geospatial/index.html create mode 100644 docs/core-concepts/what-is-spatial-data/index.html create mode 100644 docs/developer-resources/location-attestations/index.html create mode 100644 docs/developer-resources/quickstart/index.html create mode 100644 docs/developer-resources/spatial-registries/index.html create mode 100644 docs/examples/index.html create mode 100644 docs/hello/index.html create mode 100644 docs/intro/index.html create mode 100644 docs/introducing-astral/index.html create mode 100644 docs/location-proof-protocol/architecture/index.html create mode 100644 docs/location-proof-protocol/eas-schema/index.html create mode 100644 docs/location-proof-protocol/introduction/index.html create mode 100644 docs/location-proof-protocol/location-types/index.html create mode 100644 docs/location-proof-protocol/media-types/index.html create mode 100644 docs/location-proof-protocol/rationale/index.html create mode 100644 docs/location-proof-protocol/strategies-recipes/index.html create mode 100644 docs/spatial-registries/logbook/index.html create mode 100644 docs/spatial-registries/spatial-sol/index.html create mode 100644 docs/tutorial-basics/congratulations/index.html create mode 100644 docs/tutorial-basics/create-a-blog-post/index.html create mode 100644 docs/tutorial-basics/create-a-document/index.html create mode 100644 docs/tutorial-basics/create-a-page/index.html create mode 100644 docs/tutorial-basics/deploy-your-site/index.html create mode 100644 docs/tutorial-basics/markdown-features/index.html create mode 100644 docs/tutorial-extras/manage-docs-versions/index.html create mode 100644 docs/tutorial-extras/translate-your-site/index.html delete mode 100644 foundry.toml create mode 100644 img/docusaurus-social-card.jpg create mode 100644 img/docusaurus.png create mode 100644 img/favicon.ico create mode 100644 img/logo.svg create mode 100644 img/undraw_docusaurus_mountain.svg create mode 100644 img/undraw_docusaurus_react.svg create mode 100644 img/undraw_docusaurus_tree.svg create mode 100644 index.html delete mode 100644 legacy/.travis.yml delete mode 100755 legacy/.travis/build-condition.sh delete mode 100644 legacy/LICENSE-APACHE delete mode 100644 legacy/README.md delete mode 100644 legacy/lerna.json delete mode 100644 legacy/package.json delete mode 100644 legacy/packages/contracts/.solcover.js delete mode 100644 legacy/packages/contracts/CHANGELOG.md delete mode 100644 legacy/packages/contracts/LICENSE-APACHE delete mode 100644 legacy/packages/contracts/LICENSE-MIT delete mode 100644 legacy/packages/contracts/README.md delete mode 100644 legacy/packages/contracts/contracts/Migrations.sol delete mode 100644 legacy/packages/contracts/contracts/SpatialAssets.sol delete mode 100644 legacy/packages/contracts/coverage.json delete mode 100644 legacy/packages/contracts/migrations/1_initial_migration.js delete mode 100644 legacy/packages/contracts/migrations/2_deploy_contract.js delete mode 100644 legacy/packages/contracts/package.json delete mode 100644 legacy/packages/contracts/scripts/deployGeoDIDs.js delete mode 100644 legacy/packages/contracts/scripts/newInstance-remove.js delete mode 100644 legacy/packages/contracts/scripts/newInstance.js delete mode 100644 legacy/packages/contracts/scripts/test.js delete mode 100644 legacy/packages/contracts/test/SpatialAssets.js delete mode 100644 legacy/packages/contracts/truffle-config.js delete mode 100644 legacy/packages/contracts/tsconfig.json delete mode 100644 legacy/packages/contracts/tslint.json delete mode 100644 legacy/packages/core/.eslintrc.js delete mode 100644 legacy/packages/core/.prettierrc.js delete mode 100644 legacy/packages/core/CHANGELOG.md delete mode 100644 legacy/packages/core/LICENSE-APACHE delete mode 100644 legacy/packages/core/LICENSE-MIT delete mode 100644 legacy/packages/core/README.md delete mode 100644 legacy/packages/core/__tests__/astral-protocol-core.test.js delete mode 100644 legacy/packages/core/babel.config.js delete mode 100644 legacy/packages/core/package.json delete mode 100644 legacy/packages/core/src/astral-client.ts delete mode 100644 legacy/packages/core/src/docu/document.ts delete mode 100644 legacy/packages/core/src/geo-did/default/geo-did-default-collection.ts delete mode 100644 legacy/packages/core/src/geo-did/default/geo-did-default-document.ts delete mode 100644 legacy/packages/core/src/geo-did/default/geo-did-default-factory.ts delete mode 100644 legacy/packages/core/src/geo-did/default/geo-did-default-item.ts delete mode 100644 legacy/packages/core/src/geo-did/doctype-utils/geo-doctype-utils.ts delete mode 100644 legacy/packages/core/src/geo-did/interfaces/factory-interfaces.ts delete mode 100644 legacy/packages/core/src/geo-did/interfaces/global-geo-did-interfaces.ts delete mode 100644 legacy/packages/core/src/pin/powergate.ts delete mode 100644 legacy/packages/core/src/resolver/geo-did-resolver.ts delete mode 100644 legacy/packages/core/src/scripts/fetch.ts delete mode 100644 legacy/packages/core/tsconfig.json delete mode 100644 legacy/packages/ipld-encoded-geotiff/CHANGELOG.md delete mode 100644 legacy/packages/ipld-encoded-geotiff/LICENSE-APACHE delete mode 100644 legacy/packages/ipld-encoded-geotiff/LICENSE-MIT delete mode 100644 legacy/packages/ipld-encoded-geotiff/README.md delete mode 100644 legacy/packages/ipld-encoded-geotiff/__tests__/ipld-encoded-geotiff.test.js delete mode 100644 legacy/packages/ipld-encoded-geotiff/lib/index.d.ts delete mode 100644 legacy/packages/ipld-encoded-geotiff/lib/index.js delete mode 100644 legacy/packages/ipld-encoded-geotiff/lib/index.js.map delete mode 100644 legacy/packages/ipld-encoded-geotiff/package.json delete mode 100644 legacy/packages/ipld-encoded-geotiff/src/index.ts delete mode 100644 legacy/packages/ipld-encoded-geotiff/src/tiff/gdal/cea.tif delete mode 100644 legacy/packages/ipld-encoded-geotiff/tsconfig.json delete mode 100644 legacy/packages/stac-validator-js/CHANGELOG.md delete mode 100644 legacy/packages/stac-validator-js/LICENSE-APACHE delete mode 100644 legacy/packages/stac-validator-js/LICENSE-MIT delete mode 100644 legacy/packages/stac-validator-js/lib/file.js delete mode 100644 legacy/packages/stac-validator-js/lib/file.js.map delete mode 100644 legacy/packages/stac-validator-js/package.json delete mode 100644 legacy/packages/stac-validator-js/src/file.ts delete mode 100644 legacy/packages/stac-validator-js/src/stac-validator.js delete mode 100644 legacy/packages/stac-validator-js/tsconfig.json delete mode 100644 legacy/packages/subgraph/CHANGELOG.md delete mode 100644 legacy/packages/subgraph/LICENSE-APACHE delete mode 100644 legacy/packages/subgraph/LICENSE-MIT delete mode 100644 legacy/packages/subgraph/README.md delete mode 100644 legacy/packages/subgraph/abis/SpatialAssets.json delete mode 100644 legacy/packages/subgraph/docs/try.graphql delete mode 100644 legacy/packages/subgraph/generated/SpatialAssets/SpatialAssets.ts delete mode 100644 legacy/packages/subgraph/generated/schema.ts delete mode 100644 legacy/packages/subgraph/package.json delete mode 100644 legacy/packages/subgraph/schema.graphql delete mode 100644 legacy/packages/subgraph/src/helpers.ts delete mode 100644 legacy/packages/subgraph/src/mapping.ts delete mode 100644 legacy/packages/subgraph/subgraph.yaml delete mode 100644 legacy/packages/subgraph/subgraphLocal.yaml delete mode 100644 legacy/packages/subgraph/tsconfig.json delete mode 100644 legacy/tsconfig.json delete mode 100644 location-proof-protocol/README.md create mode 100644 markdown-page/index.html delete mode 100644 package.json delete mode 100644 remappings.txt delete mode 100644 script/Base.s.sol delete mode 100644 script/Deploy.s.sol create mode 100644 sitemap.xml delete mode 100644 src/contracts/location-proof-protocol/README.md delete mode 100644 src/contracts/location-proof-protocol/locations/README.md delete mode 100644 src/contracts/location-proof-protocol/media/README.md delete mode 100644 src/contracts/location-proof-protocol/recipes/CONTRIBUTING.md delete mode 100644 src/contracts/location-proof-protocol/recipes/README.md delete mode 100644 src/contracts/location-proof-protocol/recipes/sample-recipe/README.md delete mode 100644 src/contracts/location-proof-protocol/recipes/sample-recipe/SampleRecipe.sol delete mode 100644 src/contracts/location-proof-protocol/recipes/sample-recipe/offchain-peripherals/sample-recipe.ts delete mode 100644 src/contracts/location-proof-protocol/schema/README.md delete mode 100644 src/contracts/spatial-registry/README.md delete mode 100644 src/contracts/spatial-registry/RegistryFactory.sol delete mode 100644 src/contracts/spatial-registry/SpatialRegistry.sol delete mode 100644 src/contracts/utils/Coordinates.sol delete mode 100644 src/contracts/utils/README.md delete mode 100644 src/interface/ICoordinates.sol delete mode 100644 src/interface/IRegistryFactory.sol delete mode 100644 src/interface/ISpatialRegistry.sol delete mode 100644 test/RegistryFactory.t.sol diff --git a/.commitlintrc.js b/.commitlintrc.js deleted file mode 100644 index fb20312..0000000 --- a/.commitlintrc.js +++ /dev/null @@ -1,69 +0,0 @@ -// .commitlintrc.js -/** @type {import('cz-git').UserConfig} */ -module.exports = { - rules: { - // @see: https://commitlint.js.org/#/reference-rules - }, - prompt: { - alias: { fd: "docs: fix typos" }, - messages: { - type: "Select the type of change that you're committing:", - scope: "Denote the SCOPE of this change (optional):", - customScope: "Denote the SCOPE of this change:", - subject: "Write a SHORT, IMPERATIVE tense description of the change:\n", - body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n', - breaking: 'List any BREAKING CHANGES (optional). Use "|" to break new line:\n', - footerPrefixesSelect: "Select the ISSUES type of changeList by this change (optional):", - customFooterPrefix: "Input ISSUES prefix:", - footer: "List any ISSUES by this change. E.g.: #31, #34:\n", - generatingByAI: 'Generating your AI commit subject...', - generatedSelectByAI: 'Select suitable subject by AI generated:', - confirmCommit: "Are you sure you want to proceed with the commit above?" - }, - types: [ - { value: "feat", name: "feat: ✨ A new feature", emoji: ":sparkles:" }, - { value: "fix", name: "fix: πŸ› A bug fix", emoji: ":bug:" }, - { value: "docs", name: "docs: πŸ“ Documentation only changes", emoji: ":memo:" }, - { value: "style", name: "style: πŸ’„ Changes that do not affect the meaning of the code", emoji: ":lipstick:" }, - { value: "refactor", name: "refactor: ♻️ A code change that neither fixes a bug nor adds a feature", emoji: ":recycle:" }, - { value: "perf", name: "perf: ⚑️ A code change that improves performance", emoji: ":zap:" }, - { value: "test", name: "test: βœ… Adding missing tests or correcting existing tests", emoji: ":white_check_mark:" }, - { value: "build", name: "build: πŸ“¦οΈ Changes that affect the build system or external dependencies", emoji: ":package:" }, - { value: "ci", name: "ci: 🎑 Changes to our CI configuration files and scripts", emoji: ":ferris_wheel:" }, - { value: "chore", name: "chore: πŸ”¨ Other changes that don't modify src or test files", emoji: ":hammer:" }, - { value: "revert", name: "revert: βͺ️ Reverts a previous commit", emoji: ":rewind:" } - ], - useEmoji: true, - emojiAlign: "center", - useAI: false, - aiNumber: 1, - themeColorCode: "", - scopes: [], - allowCustomScopes: true, - allowEmptyScopes: true, - customScopesAlign: "bottom", - customScopesAlias: "custom", - emptyScopesAlias: "empty", - upperCaseSubject: false, - markBreakingChangeMode: false, - allowBreakingChanges: ['feat', 'fix'], - breaklineNumber: 100, - breaklineChar: "|", - skipQuestions: [], - issuePrefixes: [{ value: "closed", name: "closed: ISSUES has been processed" }], - customIssuePrefixAlign: "top", - emptyIssuePrefixAlias: "skip", - customIssuePrefixAlias: "custom", - allowCustomIssuePrefix: true, - allowEmptyIssuePrefix: true, - confirmColorize: true, - maxHeaderLength: Infinity, - maxSubjectLength: Infinity, - minSubjectLength: 0, - scopeOverrides: undefined, - defaultBody: "", - defaultIssues: "", - defaultScope: "", - defaultSubject: "" - } -}; \ No newline at end of file diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 746ae31..0000000 --- a/.editorconfig +++ /dev/null @@ -1,19 +0,0 @@ -# EditorConfig http://EditorConfig.org - -# top-most EditorConfig file -root = true - -# All files -[*] -charset = utf-8 -end_of_line = lf -indent_size = 2 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.sol] -indent_size = 4 - -[*.tree] -indent_size = 1 diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index 1dca9a4..0000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,34 +0,0 @@ -# ❀️✨ Contributing to Astral - -Thank you for taking the time! We are excited to have you! We'd like to make it as easiest to contribute, - -We encourage you to: - -- βœ‰οΈ Send over any question, suggestion, technical issue to our [engineering@astral.global](engineering@astral.global) -- πŸš€ Add a feature request using the `issue template`. -- 🦸 Add Pull request `pr template`. - -## 🌿 GIT Flow - -> πŸ’‘ Do not worry about conventions, we'll be happy to amend any format, and happy to see other conventions. - -We are using a simple [github flow](https://githubflow.github.io/) with no develop branch (atm). `main` <- `feature-branch` -[PR format](https://flank.github.io/flank/pr_titles/): `([optional scope]): ` - -## πŸ—οΈ Project structure - -We are using a forge project from this wonderful [template](https://github.com/PaulRBerg/foundry-template) ❀️ all info about structure -should be there. - -## πŸ““ Commits - -Often please, and please install the [cz-git](https://github.com/Zhengqbbb/cz-git) cli, the config file is in the repo for easy, emoji -filled commits. - -## πŸ’… Style - -Please follow [solidity-style-guide](https://github.com/ethereum/solidity/blob/develop/docs/style-guide.rst) or do it better :) - -## ❀️ Thank you so much!! - -We are working (bullishly) on our incentive structure. diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index f3dd859..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom: "https://astral.global" -github: "astralProtocol" diff --git a/.github/ISSUE_TEMPLATE/core-setup-issue.md b/.github/ISSUE_TEMPLATE/core-setup-issue.md deleted file mode 100644 index 70aa0fb..0000000 --- a/.github/ISSUE_TEMPLATE/core-setup-issue.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: Core setup Issue -about: Create an issue (on core setup board) to be nested to a milestone -title: "[CORE SETUP - TASK]" -labels: needs refinement -assignees: '' -project: Core Set-up ---- - -**Tasks** -- [ ] ... - -**Please Note the fields to the right_** -- [ ] I've selected a milestone or created one. -- [ ] I've set a suggested priority. -- [ ] I've set an effor estimation (numerical). diff --git a/.github/ISSUE_TEMPLATE/engineering.md b/.github/ISSUE_TEMPLATE/engineering.md deleted file mode 100644 index 07a4510..0000000 --- a/.github/ISSUE_TEMPLATE/engineering.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -name: New Issue -about: Create an issue (on core setup board) to be nested to a milestone -title: "[FEAT]" -# labels: needs refinement -assignees: "" -projects: ["AstralProtocol/7"] ---- - -## πŸ“˜ Story (required for top level issues pls) -As a [`persona`], I'd like to [`feat`], so that [`benefit`]. - -## πŸ’¬ Description -A clear and concise description of what you expected to happen. - -## πŸ—žοΈ Context -Relevant context to this issue-story. - -## πŸ—οΈ TO-DO (tasks or sub-issues) -- [ ] -- [ ] - -## βœ… Acceptance criteria -- -- - -## πŸ“· Screenshots - -## πŸ““ Notes diff --git a/.github/scripts/rename.sh b/.github/scripts/rename.sh deleted file mode 100755 index 62e37dd..0000000 --- a/.github/scripts/rename.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash - -# https://gist.github.com/vncsna/64825d5609c146e80de8b1fd623011ca -set -euo pipefail - -# Define the input vars -GITHUB_REPOSITORY=${1?Error: Please pass username/repo, e.g. prb/foundry-template} -GITHUB_REPOSITORY_OWNER=${2?Error: Please pass username, e.g. prb} -GITHUB_REPOSITORY_DESCRIPTION=${3:-""} # If null then replace with empty string - -echo "GITHUB_REPOSITORY: $GITHUB_REPOSITORY" -echo "GITHUB_REPOSITORY_OWNER: $GITHUB_REPOSITORY_OWNER" -echo "GITHUB_REPOSITORY_DESCRIPTION: $GITHUB_REPOSITORY_DESCRIPTION" - -# jq is like sed for JSON data -JQ_OUTPUT=`jq \ - --arg NAME "@$GITHUB_REPOSITORY" \ - --arg AUTHOR_NAME "$GITHUB_REPOSITORY_OWNER" \ - --arg URL "https://github.com/$GITHUB_REPOSITORY_OWNER" \ - --arg DESCRIPTION "$GITHUB_REPOSITORY_DESCRIPTION" \ - '.name = $NAME | .description = $DESCRIPTION | .author |= ( .name = $AUTHOR_NAME | .url = $URL )' \ - package.json -` - -# Overwrite package.json -echo "$JQ_OUTPUT" > package.json - -# Make sed command compatible in both Mac and Linux environments -# Reference: https://stackoverflow.com/a/38595160/8696958 -sedi () { - sed --version >/dev/null 2>&1 && sed -i -- "$@" || sed -i "" "$@" -} - -# Rename instances of "PaulRBerg/foundry-template" to the new repo name in README.md for badges only -sedi "/gitpod/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md" -sedi "/gitpod-badge/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md" -sedi "/gha/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md" -sedi "/gha-badge/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 768a87a..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,97 +0,0 @@ -name: "CI" - -env: - API_KEY_ALCHEMY: ${{ secrets.API_KEY_ALCHEMY }} - FOUNDRY_PROFILE: "ci" - -on: - workflow_dispatch: - pull_request: - push: - branches: - - "main" - -jobs: - lint: - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v4" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Install Bun" - uses: "oven-sh/setup-bun@v1" - - - name: "Install the Node.js dependencies" - run: "bun install" - - - name: "Lint the code" - run: "bun run lint" - - - name: "Add lint summary" - run: | - echo "## Lint result" >> $GITHUB_STEP_SUMMARY - echo "βœ… Passed" >> $GITHUB_STEP_SUMMARY - - build: - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v4" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Install Bun" - uses: "oven-sh/setup-bun@v1" - - - name: "Install the Node.js dependencies" - run: "bun install" - - - name: "Build the contracts and print their size" - run: "forge build --sizes" - - - name: "Add build summary" - run: | - echo "## Build result" >> $GITHUB_STEP_SUMMARY - echo "βœ… Passed" >> $GITHUB_STEP_SUMMARY - - test: - needs: ["lint", "build"] - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v4" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Install Bun" - uses: "oven-sh/setup-bun@v1" - - - name: "Install the Node.js dependencies" - run: "bun install" - - - name: "Show the Foundry config" - run: "forge config" - - - name: "Generate a fuzz seed that changes weekly to avoid burning through RPC allowance" - run: > - echo "FOUNDRY_FUZZ_SEED=$( - echo $(($EPOCHSECONDS - $EPOCHSECONDS % 604800)) - )" >> $GITHUB_ENV - - - name: "Run the tests" - run: "forge coverage --report lcov" - - - name: "Add test summary" - run: | - echo "## Tests result" >> $GITHUB_STEP_SUMMARY - echo "βœ… Passed" >> $GITHUB_STEP_SUMMARY - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4.0.1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - slug: AstralProtocol/astralprotocol diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e108b40..0000000 --- a/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# directories -cache -coverage -node_modules -out - -# files -*.env -*.log -.DS_Store -.pnp.* -lcov.info -package-lock.json -pnpm-lock.yaml -yarn.lock - -# broadcasts -!broadcast -broadcast/* -broadcast/*/31337/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index aebe182..0000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "eas-dapp-scuffold-eth"] - path = eas-dapp-scuffold-eth - url = https://github.com/scaffold-eth/scaffold-eth-2 -[submodule "eas-dapp-checkin"] - path = eas-dapp-checkin - url = https://github.com/scaffold-eth/scaffold-eth-2 diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index b9646d8..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,14 +0,0 @@ -image: "gitpod/workspace-bun" - -tasks: - - name: "Install dependencies" - before: | - curl -L https://foundry.paradigm.xyz | bash - source ~/.bashrc - foundryup - init: "bun install" - -vscode: - extensions: - - "esbenp.prettier-vscode" - - "NomicFoundation.hardhat-solidity" diff --git a/legacy/packages/stac-validator-js/lib/file.d.ts b/.nojekyll similarity index 100% rename from legacy/packages/stac-validator-js/lib/file.d.ts rename to .nojekyll diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 244668c..0000000 --- a/.prettierignore +++ /dev/null @@ -1,18 +0,0 @@ -# directories -broadcast -cache -coverage -node_modules -out - -# files -*.env -*.log -.DS_Store -.pnp.* -bun.lockb -lcov.info -package-lock.json -pnpm-lock.yaml -yarn.lock - diff --git a/.prettierrc.yml b/.prettierrc.yml deleted file mode 100644 index 067bc48..0000000 --- a/.prettierrc.yml +++ /dev/null @@ -1,7 +0,0 @@ -bracketSpacing: true -printWidth: 140 -proseWrap: "always" -singleQuote: false -tabWidth: 2 -trailingComma: "all" -useTabs: false diff --git a/.solhint.json b/.solhint.json deleted file mode 100644 index 14f780e..0000000 --- a/.solhint.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "solhint:recommended", - "rules": { - "code-complexity": ["error", 8], - "compiler-version": ["error", ">=0.8.25"], - "func-name-mixedcase": "off", - "func-visibility": ["error", { "ignoreConstructors": true }], - "max-line-length": ["error", 120], - "named-parameters-mapping": "warn", - "no-console": "off", - "not-rely-on-time": "off", - "one-contract-per-file": "off" - } -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 54da199..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "editor.formatOnSave": true, - "[solidity]": { - "editor.defaultFormatter": "JuanBlanco.solidity" - }, - "[toml]": { - "editor.defaultFormatter": "tamasfe.even-better-toml" - }, - "solidity.formatter": "forge", - "solidity.compileUsingRemoteVersion": "v0.8.25+commit.b61c2a91" -} diff --git a/404.html b/404.html new file mode 100644 index 0000000..b95dfc9 --- /dev/null +++ b/404.html @@ -0,0 +1,14 @@ + + + + + +Page Not Found | Astral Documentation + + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..b8088db --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.astral.global \ No newline at end of file diff --git a/LICENSE-MIT b/LICENSE-MIT deleted file mode 100644 index 1874419..0000000 --- a/LICENSE-MIT +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 astralDAO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 835dc2b..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,15 +0,0 @@ -MIT License - -Copyright (c) 2024 Paul Razvan Berg - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 56631dd..0000000 --- a/README.md +++ /dev/null @@ -1,32 +0,0 @@ -[![Github Actions][gha-badge]][gha] [![Foundry][foundry-badge]][foundry] [![License: MIT][license-badge]][license] -[![codecov][codecov-badge]][codecov] -[![Twitter](https://img.shields.io/twitter/follow/astralprotocol?style=social)](https://twitter.com/astralprotocol) - -[gitpod-badge]: https://img.shields.io/badge/Gitpod-Open%20in%20Gitpod-FFB45B?logo=gitpod -[gha]: https://github.com/AstralProtocol/astralprotocol/actions -[gha-badge]: https://github.com/AstralProtocol/astralprotocol/actions/workflows/ci.yml/badge.svg -[foundry]: https://getfoundry.sh/ -[foundry-badge]: https://img.shields.io/badge/Built%20with-Foundry-FFDB1C.svg -[license]: https://opensource.org/licenses/MIT -[license-badge]: https://img.shields.io/badge/License-MIT-blue.svg -[codecov]: https://codecov.io/gh/AstralProtocol/astralprotocol -[codecov-badge]: https://codecov.io/gh/AstralProtocol/astralprotocol/graph/badge.svg?token=8MPT8407FS - -![Astral-jambo](https://github.com/AstralProtocol/astralprotocol/assets/7093389/e2f31237-1259-47e8-8830-d8caebff9f47) - -# Astral Protocol - -Deploy, extend, and maintain GeoLocation apps in a decentralized environment. Visit [astral.global](https://astral.global). - -## Documentation - -Check out the Astral Protocol Docs hosted on [gitbook](https://astral-protocol.gitbook.io/astral). - -## Design - -![Astral-diagram](https://github.com/AstralProtocol/astralprotocol/assets/7093389/562936df-c748-4527-a743-33f6520bac64) - -## ❀️ Contribute - -Please check our [contributing guide](https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines)! We deeply appreciate -any help, review, suggestion! diff --git a/assets/css/styles.500dd4b8.css b/assets/css/styles.500dd4b8.css new file mode 100644 index 0000000..1f01bcc --- /dev/null +++ b/assets/css/styles.500dd4b8.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.sidebarItemTitle_pO2u,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:#0000004d}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png b/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png new file mode 100644 index 0000000000000000000000000000000000000000..97e4164618b5f8beda34cfa699720aba0ad2e342 GIT binary patch literal 25427 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 literal 0 HcmV?d00001 diff --git a/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg b/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..11bda0928456b12f8e53d0ba5709212a4058d449 GIT binary patch literal 96122 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 literal 0 HcmV?d00001 diff --git a/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png b/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png new file mode 100644 index 0000000000000000000000000000000000000000..e257edc1f932985396bf59584c7ccfaddf955779 GIT binary patch literal 27841 zcmXt9WmFtZ(*=S%B)EHUciG??+-=biEVw%f7J?HT77G@f5ZpbB1Pku&vgoqxemw6v z-;X&{JzZV*cFmohnLgcd+M3FE*p%2vNJx09Dhj$tNXVWq2M^|}mn)^e9a~;bs1CC4 zWs#5?l5k+wXfI`CFI{Chq}oa9BP66(NZK0uiU1Kwn&3K0m`=xIMoxdVZ#+ zp?hKSLSSimjhdEzWp#6Tbpr;2A08YY9vwczVR!d;r)Q^kw|6h$pbtRyO;c2US2)Ho=#3q?{4m1GWOCI`k&9;zl9YDhH|l{oVck{{HdF$xGeh(%RX@ITa1V-QE4arPZ_3^N0KUo15FS^Rt74gNyU?f6HsD z>zmu#+n1LY=NIRf7Z*oIN2_aF7nc`%dwaXPyVf>#Q`56+>svGPi|1!&J3Bj8*0u|a zE61nDOKTge8(T{&>(jIU{?5$PF)%N#t}iaHQc%;Ky=4F7L{Hzy*Vp$Mj`%zGZ+7k< zCpRC^+V1HYCi6}{?rS`Ew80CL%d5-LF)(<1lJAQ_QE}I< z?$m+XE%JR|)Y|g5*Z=3YjLfXkvht|tSaC_|$oh1*A78S&%grr-Q|oi0ai*n%^?I3Z zz4Ifn)p1zW0ShuJU zjT*W!;4n~Y)3m5E=4m0n9;cN(k*j`y5!~j2)ij4x1#tx zB&it>z`(yY6BF>DU9?)rvOb2G!4AbPa`$!ju_}{}N=X3%ljy@XN?Dz5W~L8#vn;(% zS0y`!_FK8bT{5iuza9iPzyFntcC0hEUgCyxwZgrs_lXv54ZHujy!d4_U`~v!&Xq6w z_%CfMkDLt!D3SDYg>XEZ!YJH*s~-dg$LmS&Mt_;Y7X9a!>IDr+ded%2&q%}2^ODhk zoJMHe1;<*D7+WnelW=pb#;#*9m22_D0Uy+B;{x z(r=4T(e9>b$HL=1ZhtTnMZ8m?T*4WlE1nANJoY~M+S`a~oAzPxq?IY|K;|faC(Qf6 z6st=g2Oa&+>GJF*AU5<{Q1pIIjk9IOz}i1XThs0R)dBg}u}I!L^(JejuqE{$Bx0WH zK_L%2hekVKCo%({=C&4>8XPbm?HVjtj7;pR;Nl%bO7u_%gfl5w5S;(8b>qCb9KY=2 zcH1B8#T*pZQMR+_zF|mDvyu5p%arE^>?K|9F#FDuJCyu6$KPjjPBMq7j0f$|h@y!QXH+UdeH3iv*9ArYX^V-S2rxolaBRROkUH4!AxVghY-$mqUuOg%w5X}J1K z3LIKED&GtI+|Bu|l2OgJXS@ z##5m-UU-??q5BVBs3e%jt&;*!MXilSO_r%{gmW&qj$2WWx8M1Us?Tzp=Of?r=^y=m zDDr>5Z2+yUUf9O3Kqm?KxT9VJX#G6EP&E+e7EkxJF5QqcBPy@TsIFiD!!LWKz2ftR za<|^DinsXw>aBe|0DWOEi#5cV&B>!$i8?+vTr3ZDMK}XFeg)Ime5=*V++LLjj6sSf>5d+I|6V|cU`LfQPC z;p|(TN|j&~8CO`*qIi-79281;uL=cj-kt$ zx5MwWh>2LRlqjdUEGgk)P@$`Rs3-3sSlqxdxpG@!K`;a)V2m#wvau8$FIZuT9T00v znI8L>LHCkAZsu+5PUedUKs5fY2Ehv7Lqr}Ue$h;p6jBeeweEDUn2p#fwkvxk%Z<-6 zlgcD$>a-9H1#>^}Ku>>wLa`FkP^$V?ys$YQ&1L$o#0R}|{e?+I{K?~0CPz_*Bh#mo zh#!|PeV|ebfXa=JD#~>$?!*)i)b@eZZ`$qTk#-n$b{Cnhx2wH9N;PkqOwfS5FPe4A z!^5G+7=f|QUkN8gZmRRF-gxA&%`!7|FLGzf?uPu9E>P4d zrO@YSB$ z8Q{^@GSty5G&7xHSPy#pErSb3Yym^l5+QhvVlc)ItslUVgKOTQyYw8QX+2%`A%uhb zCJ{CE9{zUB(&-v8uRN|49S2Np{L4XRjFWz9R?)%ikl#d@WJtzM$=odVE^A1_CR5$l zs~b7y&?qM}RqSq1_-7&^wqiGh$yZuM2alHG{5LL=^QiF^u2prn!rcZ9%AF_!mJaxS9)8?8ha{9;`m^(Fx7`o(9*^- zI+OEv7<`;JEbKrNAh#EhBOA3x9E1Hr;lS)5pbY@p_LBMGn<&!Nxl41i9>dX%V}P+N zR;}+{G5WqCjnW#@f9ZNd^d5R<+ViQpx-L3$P}Nkiph3->K~K9)Sw$@INj*8YJLj@f z*+Rh+naB!_+NtSnzwWfLhq1;bmSozM80Xik(oGSLM*c)>iC_Wvd=JP|df1=roC3iU zoG&xR@$6d-6s0^VR}3V5OFQndgqfbboOay9Tf7RQmygGWgZ+DD(=|p9Aw+)O_j8?HRA#~+mIn^!H zQ6fcNW1FIjQ#SN_nK%EQV_F{VV77VfT5B(ea{vC|K#&-RTdcH#OR%(Mr#R1?jLzzq zSC-hN{(b^Ik^Q{uB|gq70;JUnM+#nmHCHA@PxC-sYqdnHZfEu1VHP*(8?jf)TsXH7 z`d(w{qU>V+81-UywGHL+AD7SV`|6-5PENL9RC02nnu15q_;*RRA_g8|!M(z88r&2? zCYs;1K=%c4QceJr-h+O=+K2tbY%HGQfyO1=9--HP5(yo2@2ad|TVK+$67(dBRpKI9 zcTvYDh?n^D9&qCvQhZoHb7DSvql}UJ8B+>~m5-ISatyypAR9WnfzbiDmXq*ctR3Xu z(~YwCAKYipx{EI8!HwsIlC6i`0rhcb>6<%+Cp)h@mK*_1d8_q6dg4>n}&ihP)NGiUvb81U?bXk&I< zbcqui@YB^CK-jFfu@*XpEERc^Mh(aJ)LBA@| ze4m|#Gs|Rc+0u4VvgE2s^$ ztYjCc@_u6&>iu~fe+ed*pr>hTdj(LcVf&SE`t2uXleZ(mhZd7kd|U$5HrJHPQ@IZ7 zz1w#&@Hi?VMVg$?DV~d{6LYoL8SFlWmuiYZxE8-M?^q32JSt7GoOVzZ8#I13;Ax`h zy=DXkH>H2B>%O@Ual0AO#Lh>Z`q=%r{iaZi3fZKcmBtmff&=e!GF%sO1~^L| z<3g?B>etUeZ?Suv6A<@bH;i=|KtG0mk@t4!qPRX4+^*osf+?77qg=U_OjVUxbTvh% z8DC!P=LlXRVFEd#m0i*Ka(b7e+3E&CC^Yv2#TgpoU(C>Wsp4))0%aRYtPxSr1x zO6uJUAMROWMj1L@;~jX6gRh(+e1ZqC_CTY4s&GfB-E;b?6+vEb;^bSE6j9xTFW;oq z9(1ndc$4}qdAB6ta4BN@p|T{**jB2P48}=Ya*Jc5#3mv|J&XRD;~yH>^DLwT>bp@)BbsVm+*3t=;598_Aj{ zF(?v`d_@ky*e%9dvu#A7+LtE~P$5VDCRJz{ZCt3Qh5aQ==>mF~k7bTCZxZg$!jnP8he7?WmJYT*1>c{*tJR|Ie+ScEevd4@gG>!gnL_ZL0 zKC)4$4wIXHIG~yE4+vZ~gh~Du9&92xJVUy91zt6P+$SZ9%)_wNU7KW~uGu2PF`KM6 z)UjHJQr%bRkMmIKABTD;BRcKhrdAbU;gFURvdg`TDW)T{)k8(vFbmtSAMueO{E8RHEQz-$F2C0;smk?8Q*e=qM%6O z6aGCJV;h1Tf3qvPEYi~fsz?&nlrg71v(eKqA!&F7d&p(^Xy#{`bl-!6%zc6pwsB;^ z+s#(uj7tu(L!ti&l1T51?Zuxg`16)sS-XNZm6tV-9#MfVeX#M39*XRuyFiJrxU@lO zA94#H%u0U~Ea9b26Qf{o;FeeG*!6uF*bYv#%%B^zN~9gqX{FS&&Ba|4AuSA${f^sf z7tg9}O%6m})g#&j5f%_eXA&}AZI!vQtzb=^sQxVZi~_}R^pgdM?5WD3%5Gx)%~qaP zgb4y1pEi3Ut}qG#QQ8SxhEkYe1Iy%QMz~|VS zKNsn5WGa%en;uc#7;LpDxYo4^@zL&dT*?Movr0f}Fry~2?+=LVy&$9SKV5+@SE-{M z4E!tmqebqFV%O~LO=L7??~zNUu90ECkq2Dut+Q$C#QJ*uQ33)=L?sH^oM|)e*HvE5J+C=qp79zhoRrLcNRA%1 zo?(m~(so82vOoC7`kQMWO5~^(`_b!C)8yq_VgnO5blD*sV`=DhQ}{$VtHxJJ@hixJ@hcZ z!Y6lPxZ6KphBnMJ)Ki2qFXY=iKs$GnX#1@Z7~hW~TuZju?)u=y?>z5W?Gv0-coA#k zCeo>mYl2HbT(xw!L&23l5KXaDk)yq}eBc&oPdWOPI`+f_o2cgW5QeU+)?Z2SHRplP z^{WM#a*z=ndtAjrTjbW0xE@*Ir~X+Bi-n#;6t1um9|^H4v%4b8X{_t71*TeupTOxB zM!=Yir}l!cM!GzQSnjS?@tOr){-JXhj8oH5p=g?cX47@jYyLLVq#|_Nsv3>>?X=ey zqHoKr;KTdI-GBAo?{+YUsVsacvsXS>8d?dLdU_)>MB*glDaE}%bBrd^98i+k4NQ8s zc0?8Fbqr&)Wq3Wd=YVyyUH$oZkbSRGYQQj1NofbRth{_t5aE##Z zRgYXbJ@On89x{nXLRlW`84WcfoXw=cPcZZH9T^b zcb#iuU7-qyv~G@U`}AkosbCYozUSeB3Hxyoirpqhcbvd|soGDf8>z48$4OE>XaW4E zM`Bd>uV&vA8~mC0n0*yWn z!;O|1HnCN1ghEB898BR#@4Bo&&oP9!4dcdtLZ@`un@&0 zzvF-GJhEY|FLF{hrM=dB7|h@3bEZZVJc3@GCJk0{ONwS8^g2F0`roJtV2uvN1O)|| zIfYh)=}lZzT`5BbTHcM6zo=WwB7-gyvx+Cm)a}&MT+1M^^h@h5kMVlZF*~3?Y5n)L zG9~s#<;5)1%>+_Ny*GZHAebop+bfp3&+eUH&4)I7Bc%5<40;DxP0G8{l|7Ufj)b!u zw?zWRNHyLJzYlCQj^pLwN#g~68@bp>+KA=l8QJkW-|B;3+XPeez-@9TIs${Q*6_9g zgZY+gF6*%)arn3AJUkn5bhfZ9zut{n6VIK=XKt|=rtOVmc&6zImd8%#b}Bw)vQ<=y zZ*)E`F>yPlf=T61Cm%u&Swgy**c63kVp0V|yM7_vkz7jkw+1H3?_NcbXa2QR`&1S! z+&YBgY5aZe3Oz3Y&y0-J_SoE$OJ?^Y5E^umyENba+t#hf=fjWb@y_QD-S_*?k6rg& zYCqi76Dk6v!l>?hqKLvuFrKkCcX`eYORriHtB{LekCARf*i6xO%HyN*j5mwg%*8!T z_-nF5R#R3`E%JC%un?Z*bLKZbmC(`y?h5hS4~y5*hgyC*ji|t|>+*|`-dcqG*G|Tt zEST8(?OF|TW>rp<0OymrGE9zAlwD*|y}VO>>~H8Z91s2Imik`Rq+^-6$BW;-O~_dA z!0~$@ir)8VZEok*1Z^bx^25FUR#w|5ZBYL3o!iz3!TIR!4dM0kJ3M$Uu6oT8;CKYy50-UD6m_X=r8s9+5$+sA0zy6pqH_&Z@W^+??+HTsDpji* zpJYPs-t|l<_3g9}ngwho*oRGjLvmgR^?mB%vOAB;nrI30-@eap3v)1iCsy6LJHpO1J< zyJZ4Wh4TL8e$;A)3J{xrvG(WSc=))?Jb7Ude7PQzrs^QKFUs80=y)usVamepIs@|w z`Iz`#mm;4!p8c?~+N=@YBv*C$SE3I503HJZ0R|PT!IyVtgvYdpEy__RjV?qXKeZS8 zQn;w-0EHEP$J1*7n@+9+ndkivReVrStsXO#HIyz74ueJ3uc5Y(sVEe}?RntR{lQiH z`Z!qQ;Og%AD&~>mulH;=Kz}3H2_E@LZb@~4srs2{vY?%@)Kl!Nap4D79D{9}Z!`{& z?#?MOm>og((zofbkjOl>6O9@pvqoooVcjc^C-#xV?L|D3rXAR!rX4PzRkgx;H70*D zI_Pqi!x-h~CVp;&e0Ji8#XXONI@+S1=SSfqMQ>WVhhw!ZpqKaFLfG@O*E!;9JweoR z?{TX1XS6B@-~)hQV+wZL_soD`{+?KKnJh{Y4z>ugj&n-b6_}jBe(jSLX6P z&9H{W>AHrLNjvzbPKRmV@tT%0mYUCuBT1kvP^GO=`ICpra+8UwYXrd(pWPuzm_4{& zWk{u~y0Zv8Qlt(vtPO(#zX5n?`VDW3Ct(plTSM;$<*Wqlw`Z7-AN6CITh2!btkaDu zrf!`e&u14f%tSP&(Dnr<9bp(XcXW%tYO*s963nBWA=#0746gunNA6vAeP1s zh3fwN_Xo-D)nJ}kr8L9iLhlp8zQQ{nY4Q$@E9VtETvY3caFqEe?wB~cpWg4cy=Whdd?Z? zXPs;EKDvGsP6*bHo;Asedj+UOAyPE`Cwl8av`E7KMRPx4{M5Nm)na^3~o1fyYQucv~N{FBO$#$%a?f> z_2b|tKXBB$5)5npHFNe?Zy-grTI8sM+$}L__i>e2nemkwx%9r!i}lDhBEL!$_8+d6 z#LJ6vr&OO=-?Wf@W*)yvCLByyX|NQV|ecCy7=VAOB)9BI*Nhl6$m2&;G5gX z7X%M-WD-iH8(`K^IByV*KC4pkE;Q%d_{*#4?^g1OlJz4do+x=4js7@ z4A1i5J{^EH#kWeooG$|j7@#2|@kwpNNOp2q5tS?TUv|0sCwg@^U#G?D|NVyEHk3@4 zh9QWPx@!?z6UooVSfd6QY0LCJiII2vLNZ0~Jqnz~Z^l-ou^A;QU;}AhM{s6oqmA>R zx?|OM=&u!W1Uio$0m&-Ry7O|=MSkJHZ2nMCm3cd2v986rcYhXj>{)~`rp~In^`jTf zFrXGkn7tKYRu$h+~JfC4LO`D=-Is- z`O52#2dQHUn`kg1yFQXPBn)1doD3>%Z#Qc1db!Om^YRfrJIQst z-;fRaT=uTy2I$-qS|{FdP~V|NDf7ik?ZkYCef!_RSVV*5*a4(SshTJnq8S~a`-xao zsx;}%hcFK5ULvK;gHS_-z^^qx#frvEWpEI~{rtfbuS8wSnx+wfU>o`2dC=x3`D zBhoCot?)M$PTo$u&5L;JYCKUEb(v4VM%h4az4C?X?!Y6cb3KdhwS}?e9dC7;HdnO7P%wI_DM;;s)@@Z%bXbtAz>;d_JUlP#%eF{9 z&G?mfv!)Kp4BGm-`S$V!e>YW%_7wOu6Y@dH03UOV54u#?t3zN87%+2DV4y8UA)tjRAF;L2r0P4{}i zS>CSrwAQsVg`0^P+-P9(t8Inr_eUS#5t?4*HluhdNj63cJr5&s250OW1_Y*Veacuo z)0zW>;IdzS14@>TV9}D^5NujBuLsVE+*^zGaRsMzd40GW&lUtN9c}wb{~oH-rn5i@ z8}x~^(V56NJ>0RjWulsd{#z*g#MP3;$Kift?|Xb^>Pq7n-uera3;fa&%Kqq+sTISU z>9I?T5p%nzkJI+%EB3-pvu^_`-K4BPitQJr=<|A1pF^2$^d||Im4!Lx+DZc#;0d%Z zU}NxmZU|4p(!59eAHdzA{rqw6Ka=ssc2YVTy@Kr%TweSx7~PHI0$Ux(MH2xP>83k; zbDo^brmW`!))Eo*!~#*~(W4nwS!=Y1;yzh_{9+ERu~TOO)jk9Zv~B;)rYQX6mHFEK z$FpwAYy(lY1r9y+I7I{>9?geW)UF1iXT09htM#|*5w)gCZMKyi*_Ji;8TO`jkr6_D z6d^;@Cn2~1@1t9zQh@LC&YnCIm}xot2eOM8;p8qUQN8+;{_dBN&^VM~s_~5G#LV6m z_E3xKqtq!foUe8JYAMWpG6L66c?}#MBe-snYIx34#${6zQ+joY8Si;6OdZ&ke9RI9 zhJVE8S27lRcxM1to&zo06ulR~=)s2%EoSb-}Kq8vZm%56`3bWG&{95m-EEyf%f3 zH>Hp1P(-{>oBt2RmrZ0^^02K|$)u`-lkn!CnYo`C98s@Jf)-Nt3YGS7qu+WJ#ig-Q zFrQrF(9BS8SkgJ;+Ad7Nb-pL%EFha^nT1{-?E>u#tIcaiqZ19=37#rTd8pgB7g#`{ z3R`W-FmER}xBCpl>6-zNKPtsGV+;sy5|;j2PzH**0v8xbiA$I)z;nGF=f0kD;9o80 zk9RY17@+hFh@PzHbGN#U;3$|?cr@7<-4>(%aAapZ`iHIwt+VtBy0LH(1}{C)3kg3a z$axD|Iyt-X`@2lAY5noiw7Ges2e_Qy#ZG7g7!r}~R1hs0kXTsZV6s<#V!mFs#>11$)A=<$Kuz z!efePeRv291X1dfQaDLD&pz&rySTeJ)gM_}RHN4$p39$|V&}Hy&}+?dW^|({y!MySY<7Jzg!O zf^s9Ppls*TLgM-SI9c;jdIIB_?_E}SC2dbL5<#e@~e!>h*T}3V7Qjuwb}kpd$k{i8yIhNxcWp5 zmhr}|T%BZqGQI3rUBDr76MVryhwI4_s>U>$O&%JFqpibpT73JynWfVyP9vAd8#TkF z@b21lX~Xp&JvEw!njH%gzR#bLZ(HQc-x>V%ncNiNZVJK&R)GfUJ{=r%@BYj|e?tAE z^QvUXJVicpo4=Ku(9&oBMNT}AFs6q4)YmcNKs}&Yl3qAPrANKvAX)cQ0-_JnGLH^% zib2!LEZ+!2?9Xjt;Vsr#lw0vn26t$134ju@;-k>6A|D<1f9{NA&6lpAq^(bHU;73`4+N|^gyuiqNV6V>4tiHuh2}gS>rpliJMYF> z8oV`hL{!l3Cr!jFuS`U(PLYOcg;mf+q*tapy-Rrq73i4^Zr_D8w5!nj+I0u!FF(jA zaa|Fie9MYyVD zY+|f$aJ?0^#q(7Bv(_Rf>!-!26{dkm`vv5_{yhqlfE=-JnrnR3CE&==9oG^BPJ~kT zwR#L%pm6XWo_o>~-xFwsnFCS-K3SEG*9n3OmOIw$y|;&`Jh_54%d_jy$;Tc2Y_spR zsaIH2IH@qw%s;q1T8%_~*JZ&ytt);Fy%vh>g z0w_CsOn#JW{R5GsH?OEs1xr47FZzM7B-{&lNe2bAnJ#CYkWk}CK065tB0jzXv_Ue+ z&!kU}(r(0*6z9AtXe^RO8lX0D<%I!#-wUlmC}2X3R^;0)cuXyXl#01U9aAYGBNq07 zQ0C`^>CvlIsr|X$a@#JlI=!B?psUQx$bJ$^?{z*pe0X~bm^`c#V&s{0MlZ2T-y>}F z;qPquk(Pkc+@>~ButddAyRL%Hp<*0=QjboBwPSW-PHOEB-@Y}(p8aa|yNnqY5iwd} zMW09Non<@D_S6*Yt^2H1H_*KaVR?1$sYP$fe%28z_TYR*uvmX_{;5wg$t{cwp()qhVL2-qx3)1wM*a1-Qko7WOS|m_n5#TglB_)$&TDF_|oOK~F z5`+$vb~~{DgX@<_1p#;oVwb#0EZ3TI6$r55L4sS>BE@dTA#G0aD>84pQZg}wEWXX` zi!o|(wQ#4Y+7TC_zH2&(JiwOOYq`B)ZMOS$()lGjP?Re|ONa!QYMvwZxST#y zqxy;V%ft%25Xi@T@m(kD!pOvW$-@7ISP-Y%N|Ru>0)+_1!Xqh6yx_LcFNm{O`PE!f z1~@)qX~N_wIEb^f5u-?lm)di~;Jr!!^i2p381+NQa^Cc41Q-KE0Pi#aTB>o!<@$c% z*Q&0@cBXHDTZ2s@7*To0m*BYhWJwxEsgU+sx@6~uz6~lY%RS;a{p~AC-LG>IUop{T zr=uIPav^B@XZ77ba;qQ)w|Dxt$Q-fY!I+bh=a*g~Nhdb4cY<~1N)F-&Ui>SR1l(Zm@ zU~{AX%FoF4u=?X-SNV(5k>HE$9dJyNJ1i`5o7!u7exC)~47YqFkDvB6Qvg#`GnW$m zy^C0qY~lL3`HdJoR6L$C-K(+><84eipiDHzaN)Qv$Lvk($43+H>IVoTphDA%<1OV7 zN*wIOIb>eQ)`8RyzvwEjennj>vn!@tYo7b3bB?40+SdR)E#yrS^OTn6TmN05HqK%l zP)ZuCwf1Dqt9nt}M75{7)xl28WCdmP&nv%F5L&v^Csh6lR4+6qW$%QBQl1y9g2m&zLQodlxDQe5t ze74A-pBpIlCOSp+vzs<1{?Jh<5)t`U7lpH47Ax0o_SFnzt-ale`H{M8h&qB)qshbx7Ad#HNB$| zo={%npyBI&{m}+3+ngQmW@l~dYovp+my{i|_PyEoYucnl>EfHm=~;&)!6SYGXW9S; zu#fmK+2v+_G46lfe~J+}-wMrzj+?*^#t`G>E$l*-E7%bPB)Ef578L#cU|%dTi4@hk zp;+bBv%g-&D%NlYIGgkRvGc3A&8QgDxkHez9M?flQx3A$cKc(&?EFW$uDMSdb(QMw9odi zQA?zO%QwiY&D&*2_|La;le8f+v*;YqftP=UX(~GO>fBxRS{^y4gbh*RyJXj3%v!%! zELfdXKw~e(B^eo_RBX;Th4TrEi|2p2@Hg*5bt%Y7ZIk$P-}GUj)gwz0gIBAGiFNn8 zU4&Na+V|69<~TqZyxqSPaeGkw<_`ynX{4vBxwIX_Ypq#9SqSJ=W^R4opKAeSa3L{m z&lHRtdQy{5Ggy~SFu34>`lJ%Zqqg`)p0E)ulwxhQ-;}L>tXPKb-xTPBQs}1)CSM*$ z)G0-&fr8_TI{4boZwExp&4Rt|u<&mI1_Iy+`yv2(?Zm>&!E#z5*xWy{v=^H#tjEA3 z;?O-=$gFu6kw*5=S@@t1PtJM?AR~Jb<+?`D@ni^f9@rf(6M@{G_~V?Cy-fQf^8)n? zQMliUqyBPjXiOCQo#z#uU#^qooR+z_tHzkiIsIG6rn#gWN}koO1iCdnJ2E?}15?Vb zHv1jpiRE-A-RvipUQ>D1lRSvmj z7W3Og%mVd(!g)KZzdxx03y^c4IMqbhs;z8!D&FY;i56b*oQ6$WJxRAsvOKW!wE>ua zD0mc=bW>_*_Ph03EUervAR2#dSHw8J{!GR_N!df0ZL;vK+=3WRYyZ#GgT>l0+k}~1qIqt zS6WmMZM)!rz7z_m`fK9CHVM8F$z&G%jWzFH!hm|FYpam-1QF?Z)lPOHi8}0f1o9EZ zDHf!)*@a?vnvbdJDr!`&Cqj=g-f;y=uFs7+Jzk$Lqc5IOB(A-BqFIgF5T*Qh4dUC& z&KPT!3?JZJ?!2FGI-p$Yz1pL2ZT@|G!_!$1J@*9lY>pk*)lpl#C(!j;vJ^FY@2K3n z2bIo|a*SE!HzHgWM{6~I(^a*s15DV0tUv$zES9Amg!xeS8?y}$1Z}K#^z*n0>1~He8ZPz~6(W>wyBjvX_I$UA!VL?CFEa)<61QoPZ6E_lJpjc$tmFIQ8ZC{iPDf zO2-9y&-i(=bBR|;{%~gM8=O_tg<9F|DLGA&TZU$Dmt&g50M3#7f)z&Uh;BRwc9Fuz z-1wDw3C{{c-~!Wkhp>&;jVmvmxQJZfG-RppOg1^@pFD4B;*!n~lLSmHhRBGUZW=wL zrq<~HsA?@Fl|25*Z_6NPzj7X+}j+I5Z=nZ2_bWFC7 zTuxY^a9H;EY7yk(wd>FO+r1&Q=A6pE#dPEy^vWSAqgg}SUq@acOCxOw#+d|Qm9XIz zRGFSu)D?W`_1iH$=?m+!uJ;FT$Ox9sW_Mi@heywtUNevsjY|GZ+9y&g$4FCA5uwfk% zf*2q%_Xk{=xlxR0V-lrZ<8c^ny0kflt5f{jx54mj|S>kwam*Tak1b3;( z5uPT_RKvI3-JN1xNUUV?slZ3MO>r6QL6oc6t-jxIO{GxTrzD(yK)QDPpLm+v`7|p} z2gy(VZGC&YNw^Sa`UGiI9uXm!9PVra7Ew3o^o&h~XSGDkY zs;^`*cxA6xHK0$Wic0L>UEZ->|DkX6j1#<+RIHQm=vtR9K&^UG7kBp zohssHdJ&9qvGa3a$c)-8t8?K+cH6&N!v~A?-<*cwix;^Kx->T5?74h9@7rrK!RqW( zo2vJoGt#1rN>*x0wCL^Iy~m|a9o+HOx%%|#GJ$IR^@H56PS~Nk&64x4VbME}59a@h zAqcjHo2qUpv4ru+gtljF5cq0UfGkddYadJBa9qH5nTqNu$*6Eyt0)uW)o4o zI;X)D{>#dI8(%wELz1GF@W7BU?iTh#pd^;0(7A|qgmkyuW5DgLce~io- ziyf8;ON`-an0(auAd<+A^E&OM70amakbMh9ou51y1A4-pKz;ftECew{C|lR<2EG2V zc_YNUU-=dDwpU#60DATW|2Y$&LhL{Md zgU?Q#<3)i(y#qZ1bzpAfA$a(p99$lv#>L?Q)GTy zvV36GhERupL#v>^msU5ZmKGe6Pb0Y50Z_*r_EQ}YYljZ+66G=_SknIB zZ29q((LiBZotu{WaHM14bGk|AaDkw7pRRF+J)Lu6k|cfbwnXs?-X|W_s!|@*zFqbI zKH(l_gt(*O6YGy(ey6N?m_zU{`f$GyG}a%6%QeTyYV_*9CTC!O*p|m9#!SnxQYjCr zx0?Pz4pbv$bbm($)?Vpu@0tzWHsS2>)v#t> z@)vmMMS@d6sl1*mp^|5P{sVa2Ydr|^bT4x;;m;G%!7jv|MnM$?)5Ax-e8U)PJP1|j zw%heI;oCzyygq;2y=EfJqsY192X~vsQkXUXIO-m*UbQ!I#`v`?SW-Wg`74otU4C1v*?+r{tKmsUFh+cJOFn%ei*x1dOd6 zFdTHO)IfMfuFw1>5}qFUpQ-y^y)mXc>I%0whfG<;p=IXi5i)%>S(gUE5DNjBWKBzr z_#Wcq8RL0%$M(|1pAfjAhgbM^y%{*VI1Cxpv0wt>7i8%;SsQ+%*i3Mo@%ohOIdc9n_pG$ewjs26kJ$SwQbo^Sk8@-{F@9Fe^jtAAGY004(QP$Jw zW%MMJ!r8%+p2x)wEYW>%pS&FodEgu=HP#p6`0Pp&o4ydp&i>(Z~^F0082|Xag}ZxCR2>ZQ5t; z>A|WQnDS?znrt%Ye7if=pzl|H131>3+~^IjMyPz5ZIm@Fg=5~D$N*x02W!5TwV`kb z5cs|uy{8RXJNs9M*y;%C*|n%;`^I*cHg&PuVYA{FO+N1V#OU2-1R1gU@ug@Xa?q>b ze*(Sl%OV@%(h7UJ-Bu0-x!o!4QqeLO#F)tNvHiyS;USp!I+M=xg@Z(rv47_0_;K4l zshut-0EL`c=&=BxhuXPiRDTm2%{M?W6#9@tfK~EMaZ8WoQZWLcVe@du#-RsW4+z}g zO%&Y$Psw`fY1m|z2k?BkJbNCMBPap;?iM?k=FSWB*Y9pWRVL?x;LPus(N-8_gAb^2 zM!(Sv0At)38Cm$o>ww`vVSsgov{ zCdYVS8Njokqj9l98H3CsY7CH3qo`^|-M;Kkwb$*2&=wdc*1-MVk+~=0au2!?|GVoi zlb*^0KS?Cd6dOGkZxX~LQMUMnNLwVqKjApVqAuG@J2V4|Fd>bG08(u4#?aCTUfwsl z{TWl42|bHA2xHp6o%d%^K-JUV6R+VEJtB_j^juRPb}G3*dpx1g1>G$4D|Q=s2G}3F z;M%u%O4iu*46HuCLsus<$^K?YHU&?^`|2hfnKp0+1Y(JBc(8|T9J{KMB=@c(b3ro2 zd}F1=?F9afZ~ia~4`SjA>gbccd%Z9QB@zWr+A5TT>sE|}xp#hA#&LC`+{fA1q~Mmx z+3>dUL=K{Nck=f3=8SQ@%l>15p%Xoytnks;MkrQJ`6T31H;fuO#pNAfE-KSZmMP3@ zdV?m2M1M4Ni5x`?cm$`5?d(F2Rn)Mc246oiYT~1vAZvcRa4>RjEnY z8NB%znB~)cz7NJ}j%6vQisQW~_;r>G41dCv^mugKaMV#j1*e|WaXQam%?@nx(d*kR z@V)Bo;iEq2(L+y3>yNCS^$`W~tUB=5o*d2ik0YLVGl&)hCY;~+g$9;+2nOIL&ClSa zTuN#y(f|?&^pdT#|Ez4cA^jTq_=Y?0|BCwVa5kW}eTrH&O080>)LunxYP43(*4|X@ zy@`aP_O8aBMb+LrYL6iH9yKCnjTi~R=Y7B5`2U<|Ki74x^W5h?g}(n)O**8@D0X7% zVv1o98ti#psHl7+4G@z!_b)r-6_a96mysLGA`sTw(Ba-7OH=r)+EA&MQ`L_4tX0x^ zh97RKX4$v-B12RoBIkh@0H=2|>nW{0opXR%ix!QX23G=kLL=*dp`Khm?uTVT%=5qU zl4gELxb+XDu+fPBS<+5c=0N?{hS8o(nA9d9b3JdK`8G~5DcxJQ00$!y=d99=`xY)w zp-=NHMv)Qjt9j(z87hEilFo(355}q1@Z61JoxzK+smK_6!asIS7%bE2S{&+M-m`xqaH!!UdGuQ{MHaAnI2l0j<#hiPzCyfQYWoGe0;pPvFm9 zT-J;f{>>*8e=-gaW$IrStoFN!%a~L;Qa~w)fv1KAARO8J#5#Sm8Z{j z#VBuH3O4+H@pkC~JCMTsw_Q%vgPKQz$H#I*U>;hwTpuL-h7cqpS2-lF(*F7RD~i67 zB&2SfG7B>msr15LAdW>s7Alqm5I~DQGk<7+a$^#JgrrLh9s~7$Xle9d(Mgo*vsD77 z{XEUQAQbTUUiSPIpf#1~#b0Qe-(P5Lc5fhIUulw)PBL~)2q*Ap5kw1*lb26_XnqN}@H)z34&U z?4Hgp4HD1g^PpCA;OR=)fDO?6y6cAq?_jC(#}EdCh`QU>IwX)KN;^qF`M~?}m)5JT zP`Yj~INK=K`7hKcie~x|80v(_XO498{ z%^s9ZU(A!qoHI=zrty!fwL9+QM|?owwFzMRf6~AS2FK|Vrouv>ZbLV&|7K8fNZY)u z_sZaM(dD5>N()A^cp|44v_qzt)7Vu!$_hUiHdi!+Gsi3aMT~4UHg=v|7Nr$)@50{9 z>sQQ{(kob4m;|9pD;r0~k%Nr~Vsm~KY04(B>;tCiYDmM}oAtAst`I3MB8-^1o2*4y zg=}#5@v$pYJIkkeVAjPefCS@EAtJ8tvw2n~bX5N#2M1`#1Ca#)q+jL=(#NqNRit|l zV;QlZ#8SMO5qsok2-sFZGbtrhPJ{>uIw=e`rw!G+gd*hp>*aCy>? zvFOe+_1UcHYR?BD$%7t)pjqZN4t<aVv#X#4^luROO`zvzKdla_cXG4rX=K-zCu|J>K`0jQkZn&>rh- z>q*zkKe)=0ROa|p#N4B4M6USBET+lU%s<_26PUl6swgZeP}E@(*;cNu1~k7XyBjLZ z`HpJ}_F3G%AAjI!fpx$zz!qTGfrip=ZgX!>06=%A<7x8awY>DVcI!75wXO&#Uzb9A zHpP!eJ}**?zDle*Ov-CgAC3N^=C%f#m_;69M2Pse-+jVicE?|p7pHyz$4(J<~(i=wYOGLEU<%oiQ19w`jb~5lv3X_mQZu-QAF5j zyURDVYTRjBr8W-84N##WY~6PKt5@Up{EN%>@?_At1##d*91dmXm79_9O;V`0J-&J- zpK)+*(;)3(T5-M#g*qaET^f{}zKnLz!3M-K{r>y{M~!|6dK$UU0{mKS1)jh089wp^ zYd{j+YOQw%d+yQ?e0FVr=dgLi!3zTw+BkM`_el7$gU;YJ$1KNg&gTayx7TlO%4d!M zt?uykNvryn@^{l4w$F`sbSjz%J*O15cln`|JisON88##nfPU9$(VI2@VJ)y4#^{%M z6js!13fnZP*!`ln;HMR^%EyNq@W#*DCvh1TYB6&#vZSlKwm19H~JQ6?WU;JO# z5kR7Ld^&MB&Ca1I>0t!MCA?GexWe&E#x3p=}c>M%Vwn0Sj)w5+(Zh1v781%P3 z*?dm@r{9L5rIzX@KJW$=;>v3tbcad25&#QagCiBE75^)48;W>{K&Dj_?+f*XXBZ!F zR_V>eQ`v_Q#P&x7ry?n1VXlqKT`eXnzX*Ztign-ZO&3fsm%QACV)MCjOiNwT=Rf@? zyE>F^p~Y9X(2UW~pQF3J5l>#Y@4~0|SZ<;CC`X;(%hUO7L*CnkziIFKcH-Xvw5TOh z`hM3OpEVQYrK*@}CPu^F?*}utYCbXE)Y)67QZjfd%Vop$A`N=Hdo30DIIr^(gHF1G zvq(BMeUX^Ne34-3H7~e>%PNPbHFdm}aWQ!^X#P(YL}d5S-T0_|l4n;p!5Gm?U+7fP z!jB{4W`p$yzKYNU-Cx{?4&c<=Xpg`J$C=E?Pll3-8jyKO;5-)-tLhVDbw&n{oQEfp zof$G!Uf&fSJbY-BLUn8LXFT7c=|_TU%MEA`XW4~ncv(2+JJ8ZUq^W_ev5BP!uL%Av z=w6fluf(qR<`3BpQd!vW)pW8Y%HvP2CAg_7n2!jK^-iTP%`tGDw?^{a6(7LAxz1Rv z3)Vtc$M>Et-r$@L&XwlS{{#* z%?2{~t{;8&ntME~&j1RJ1vVdO;f_^L8v1izz0`GA82%;8E0G;Q!Jbk=Rk*Q9ykP{9 zwvb)l!HhkuHYv7Ct~*nRc}1w4!c$`~1^wOja3=&Y)f{t1-=17-oH(8FS!4=SyXujR zcIH(75Xghz3@T(Jzoi37k;X zrbjpVDeqg4O?>>{{~ew0*i0`}sgF>o_H#p@!M32sD=a(I5fiV}V0=RFX)h@kwli7; z{v~k=mD0CJ@X^Ot(aifPRR8Z|g=rE&)N^HKn|fz(F`b91J~!2` zpdH(30GLb5bz4^RmU)Qg7O?xh9x>9j);4v{eWiVeBtoCjmo1|`ldGQ<_GkYnREV0? zsed4$`tejon3!}p!kRPMC4qh3`uXcD?cG!Wnq;f%-WdXr5n&=$7Hf3o7kgRFmrzTP za(2#kiBiBUD&q6^jT@>qc~U25YJpM&x~wo)d1K&e6S9=jH+B`JWUvQAqO;(17FZBK zcx^2vQ;a>m^3e;)2OBOjk*fw3<-QOGF4nJh-Fe7D@)QHwu-olV&mk**>sJ#6D_-mi z1iuSrns!P{xpKoTmeFUY_g+8@<#l$B09pU8vjyc5#dh9+T8)M76ckFg{#yX@SDV~_ z(eN_~_V>2%zB;6U?-2mK>NM_WQG4enWns>yR_=e-!J)2Xsl~^w{mOUq`;0#r6oN5}O5)y#~?c?S*h_@upl zQSy^#c-Szn|MpDkzu#dd+?fu+QO0NO2y=9U~R?6EJ(#tAM3y9Y}Pi`s}tCNwwa2 zq;(h27Sf=*EPTSC>bujBTN7ViPPcB#Ecj15jlExHvqY+ehUaeG>K1x~-ZQ!Nl=-kn zbP)|!kLykq(9nektRqYaa2aJ4Y+HX~@SiSv>0jRh`im5=!Js~^^?mSxJKTMHjY?v8 zVIE67<#Il@C2JLsypu8oPFN?4$Q&t=oadNY1q>5`q0I*^QX6R zD4HPWPxKb^tRKjS|8J1^U8ka6>G!fSg0%b(KS1{x<2i#afYzM<)w5L?N~eI>r8^bS zwB=5inr;qxZGSPSOpxdJUgs4XN6ekD1eco*;qL{MrcO!6N!%)#{81Sf_ZdZ0`s`&5J~>IzYFU(_%TMg&eCB69q)8it?8MkVAL;BV zxo%KgVZB&PE1{6*vo?tl;p6&BEidXAq~a!gR4^!UgbY4PvXoo}g@|oO-m(Et2NS!F zkxPjdsj0BVqIu_(Px80y`06F@sNN1iwwb6x_Vg18aeQURHJ&uTdSTCpvrO)&fEYq6 z3kicA_FqElr+57>tMvTaU`FZ;BtE3n-*3WeS*+rcB3msBs|q#%!*V=^&TH|tO#lug zbPPScgFy-h)yjm{HnbHr;gvzdYz}3F9Hr66nP~TxkIrmX8^Z`nJ)!Zys*x~i5yyiA zFG+l@ZEzN{bPSEKyJWqYPfKh0%D~e4Nnf9$+>x0>>jaPv0B}yxMjKK9dN#INB!6n$ z#~M#K9cC)sbjALErQN{AgfN~}r#G-nd^BSA!%)DPSJ#9DdyI8_|DY6uymG~$2jpi$ zQ>-1y;*M|Wxt4FZ0VYXZ%}P5%g)eAZQA2i3lr@%Rh9>Gi;cZ+?2|6M>ll z>J}}1wB{2?<>u6mTRIXu8b_BX{J-6><*dVT$eTBT8J{L&!+3C;BD1rvuYuhHF;8{8 zQ)^BjmNlgbTkeqPm6b2sPbI>@NHly0`qJ%m4~6m$k2 zIZ(#DZ)glNu@M>{^c+DeTglVV*KE3 zz`=sp7EzVg64RmB#$|Cuymg-H0)A)kf%y1%`aw98n5=6hg=p&P? z9q7RG#bI#wICqbtjv;#y(GF+nK1a}HbB-7tdu9GF$2Pgu_4T~DPkel(q8XK3CJq(1 zAC&RiyOk-5UhcMTr#5%4ji@2Unq*H7_EX#ugj1x}^sm_IViJ>6VtXUE;R+luu`SxS zid2!9y_hO<`fuf*arD<-?Ha_lOOseuPzM8$bU4?A*sC9cZMMek1n--73oL!8@)pjyO^GmWJ17DxbFwwZ?>PB5AxD)L!t0M6y6OJ=5Dsw^k3~)39Ki*1MN7*Gu^uS zcn2ap+}(4ZHAsif2>)KEH>p06lgOv6=0G_2N5}_XW_dM9l$k0lJwQQXB6!9yMal|@ zbXo@n?{+f2J1Zi(fb&EZvlPlPkN^fu8K=Oj}FISvK!kkR6w62xmiS0Lm;_ZMs)w*hs^uk@r zi!K5FkcuzOzxd}}b#6y?Y{2IK?54LDxNG%A1Hq!38nzu+3^^G z<9OWrZhVDE;@Z)L7>Oi}<6d6_9`57qhu@MG<&LdMm}#<#QEi@u&Rwx*`77q-=GEcA z5F^+3wRv~92WIm^XWqu4T34W-bOy5BHI>DC-7&le9XJIc-9a6loj73@iXV;nNy(qJ z_}?B;Rr^s#lI0NVq)>6Gt&Yoi$uQ7-F1?^sOvJTP^G;16O92yqCD%ml3T*6hMT^cD zRhluHrmM&l%HA}1HO(I6d}*G`{Da!T;rmwPC#YHqvN=t^<_i>b>q;Ga&Zq?e7X9hi z^?Kf3tyT`bv}nw;|Liab90mNtt3>fU=4x!t!~U%^>pt;8zx2nV9QVoSvRJMyNuDV4 zv5Vj@Ls|1FBE98xkWy@yx@M=zr+cT&=69&P=^Oe9ecMjl?YCGkkH3tAX6!->L<26a z-Kg!x>&h_wj#OmYG;#eU#N4-U&PK*y#A8;EmkrSyt!&*P^jcaJE-URVhK(k7!I#}7 zc=cQy|EzTJo#&*)%~(VeI)E)Fhz_~56ulIyB(s=2bG$Zhg}O%hcQ48ZpVFc$ty_g! z4u*znqi}Gr_df07jntKq-7VeVMQ z)(4M;)lp~vVqfa%Obd9n-rQ>an>tT`U`AzYOGZSDWm!PYkg=p9;0|orKEhTn=sgt0 zhEQj=P+%$H{P0mS#W^G^8rz;o_v)Z*!`XJw>E^K0rOCb_mN4MOJoyKdyMC7uIc9qs zcSVNQ;d+48Hzg}l)fE*^wjps=YV?!StX^Q@=F8I-e<4F+{+B)Oc60S=0(*9F(Hart!5pnRV_aE_nI zmVuGYkmwOX`_Pu(_Iy=PLlpa;@!Cpv8tCA_a?yVJ`_lSP840FezVboo0}!P7RvJ_R z%{uS@n$mvYl=vgv5%DPIfOfiRRw~*9b@9XND9E9zK|!HOJx+0-$jkGj_(bsap={g} zQgi#dC#hM3c>CmNhb(dN^QiHh$UML0pU2DRz+b5=D+ zsWOWdnM5vx4IeU1IiE;bL5t6G0A|xb+X}sS=8pMK%zk{f4%bmba?HMRt}ek7-rEj< z#fvb0@~Yr8mUaE@v77VUg8ua)b|$=-eH(N0^zd8^ZAeN-cw2_QKw=y(qF13Q6{n|f z|M!)oB>&Kr5_DKHr=^+*rB_gt7sZaMNyJ}&uajMfm8{TL@{0JBCfq;$D#C+yezLb; zd|T_|=f&VkKRy^BFvXaF=-a-5{Z`eS_5AaebP?Q=PG&*LD`(%8Pp%pH^}ee7-`+;_ zFL-A9o*_P$zCSMt-D2j$k$5#MG<@eFcOUf4^oNC|Q?dlH2houFlWYcmg=05|%bh7? zeM~}MtKI5_4Fr&Wj2)r15)|}*x_nSwq*UyI@@N`xST2oVpT5N!XHi{}D^t3LW z)QWYzln?}cv`F-@tpJ-bx;2s|w(^WsB^_*bQKh+#fV_AwFOu0j+L zhwf}0{96B>DmmoSin7%d_O_O{J?}3_-K{!xpZ7NQ_1O(piGa>BCsb~N8fz(%;B5`S z><96Y71j{(#eq3vk|K+edR73!{2M5dH}c1Qy|cIIhJzvK@RXPKN|HlJ7Jc}YZ)x@R z=6GiB+z>kK;_-@eC`_D*ELPO!BWtwUb{4TlSlBi^{-ZU3lRqhQOT4Oj1Jq$=W>0VM z+{dD6A_66!;&N;G?v>?NJnBa*+$P)Xf=(NM%N(uPBV1I>u+xMQdzMejPXd3a z9q)SU?37-g=>@v+(O*b`k6cy3-Gpik&WnP&pu)H1!R2pc?@srJhOS1qYmqM9$E}w4 z(b&5mLotm9<t93*u}%_?&I@<({Y~xI@y}YYbBk;1;BMyD z;^O|%)9HzryP2v{H^`S(=iy}m#Zv?v-Rx5NHb-kYv%5T}@YGaUER3yRC;>xehpD!es1gMDY)rLAZ4`DY_hw!C7jR>u(TKM-eB8GtSm3a zstZT$5maSzy-rWzwtu?^K)ymZW95bGe{|MtH1A7e^2Jj zh&aEAV%iw0dSO6u2A+JGRA_OB+bc^SPqbZ!3Txk_Z=2>rQN z=Vock1nN#SB$^R)M-Sle9ulB-9$_v3b(duYR-=9@OfkQ`+}vu!_ReUIg6erUr9` z7^=Hgn6q0LrwQ1a{$~BSfVntOrqCTWDg;%v-waLrPIGb1|1^KhHvi0K29+EG$LGB| zUTFD@uEmy}4Gw1v9*w+?J$S?KW>^EXx)N2+TC zhONu}Nda!+B~dT04W+#&CLTBJcxA6 zPcr?5?VaFqQp3@hM6^I-40PiJ{kS5$gGlOXz$JK?u_l-{sk z^&S$X))sE=9Q3;%q{FW@Czd1#hf#5VtC(ppQgOw7E`vkrTc^}|fQ-3!v_JhmiKM|HrA2=Bl&?)2e)`;lG^#ZViDV4_R$p6~Js? ztK4U6+^#q|xg*yn)6VP}v(xi9#8;AAr`&=Zn~=W#0?9ANmZ)LzXh=a~C+wtPXUDyM z6h@*TXZ5@<{^5>Hy!mSll$Etg)A9XMn_4$PVj>{!fBQm>(Uu>GWFg-A1U3%q- zIW{nU5#n6K@#^b}C`pGruWVi~g0^OSuGJqe-QckH;(U>ljsE?j&C@rLrKlj?dw~zF zSm$QbZSRUF!86E4BvL`}S%M4Jt+2-qE~L|xS~P;Wva@JQTSLutv&NZLtoo~^Vt0tb zmjFzeDM|3wz>BmVNP=3eCmeQOYTx*7sZ1kyw%Bu;z85%+ zq@9l@iwHik5aU-k`WKtEIk@&K@n2U<)!}T5MvHm-%|$QF;vQ0)G6^N?rpU-HIrwZR z;|I7qQ_QvKy}ZrK1%N&Zke^v|DL2$UYEX<&c;LkykuJR<52H7suV3J^j*J6JKh0PN z#Oy6qY&&6Fk5bo94sA$KmQvJsD9MwS`}qFif2tL-SS$0dpI?Zc(v;*oAHxCD4|MA- z4F(8{p5fONvZqT8@lF=nGL{2+4*D_s$B(k5}$UmeZ7|j zD(=(@Hiu`Ke7^e^)z#Ito@z{&pknX+4Hje$XR;()V40J6`k3|ScoU!Pabun5@9%mP zmE0H)8ujqF3@j`{ssH>D@QaMH5^8TCZ^LDO{!!%PNEn6MW7YyC+i#)^Ow8An7w4hu zJ@(nP%+vtDo!CBc0r?3jw%d0#ygUU24b7gQ#AL4HJ^wT?jFCKsgZ06I)s3?0qQi$N zB1!(9M3$G;5+Nl%L^iTl=&#ok5~E5*pOeBWrLW$koe8@$Zw6)W)1O4YY46?P5(SAV zQT%^;4ds0^Zq*?DWKH2F&`MIl^ zWEn%ensMHAjJ3`FI1qZl*{@K`N&MXJDJ!0e+qa*e+GM{4^Tk)bR+MV8-stG&VK7`i zKAqZPTO9O+%>d^;IPwo^(&- z+FY-X4}F7=lL%`%MHaXyLv>oz)~+?>bxYyv?uV!4Q$xcnTb0^<-wehR<%%U;Jo>Og9FXpA z7+m9CzO^|~+=lCrvnjn1kK-e#&g&3sd&NfXGTJ0kul{Ll{gzl81UqJ8_%IE*41!RmC`9Gbpt%HjA}7%@P?8(&foUCm1E*2&oP zA?!^}75N2RqeGh;addDgdKQg0I&z5<894GRqif|!!3NMzWJqa_F-WrD_LYmrp1Hn| z-7Lagf`8mNvVumy?6;R;ff`k9|FlT-ilx{F(5Q|&)E(*xCmJ>xaZjpw`2yF}9d;*_1R z_t7&i=K$3fV-{5>8-EF-Ja#@rS&T{rkI-8f{%WI`b)?cK3Er*wIuc1Bfos##&3)2p zP)wC7<6gKp`E7wy8J?h-et+SU-WxMo1qIc0l;u17=TaMHv%A&z!NcLz_iUq}^ALcRQGp zO3#doE5|#DE|A17N&RrT%=+<_Q}UAjR}>vMemq*pZZSq4keZc7wkj?Tyw0KDeUqAX zGZq}z9c5m3xA==aFv2W4<~sN*{{4?ULGuufMXW;sxyI+iSm?i7hO@%9UYV(+`Q>Nos%vF8g!Usd2P z;4~-_8`!v6@(tpz_4Q(RM26{pkU|)UyNr=ihw-ukPHw<UpU+AXw!RaEXpRZ`!! zYg8dc?5IoMJQ2hB>hz-+?AEJm77QYbCtHtF_p0^ms1x@`UMtAF;}i{5AxiVl9DDpj zl)*5)Ng<4^TDD4i$KlbhQ-E&f_bUF+KzD6OX^sBayL(UNNV{|$loE2{yD|2UlLV?J z@Ig(y`w&7yeCv-`?uUV^&4RXrHsy&k@i}adNm;XgZ!a@xnvjG)yI_LjRiUqV%gYIh zTK1D&S;x6J%jL!y86wNhlMbcxK=q;CDA?OTEGBAUdVZ$JYB=ElyA%2HUEC_MuhHw9 zfP)~1CR0x8cHDC6+A8>NSYxQ2z$vA2UJn>pzZdq@C^#Xoh zdqe|=^fm{HmPOP#EjbbH25nT$CZP%K7azkF(mG$3cnFnvV!sc|V%0fVJ$l8KpsRTu zO8L$dH*_-Z+K;9`{p&$Rca2+turcwk=8~cyK0rNk55^Im*gM#q=U-^i{<0)$3uHRn zH_J=aK6A*?VLE!3Hi&0;r$KN%3v1#-jxKH%pl+cXKmYXX5gm8@@y1#xCav0t9od(z z48bdZip}mIsrXig{8+&@W$YEwRGTr);Lw|2E0DvqPPPlK%Q*y-eRpGMtZQa*dHiOB zm&!{b3*PxxlCIhz1he8Qe_ituN*=VlqosmzZgl~c62oxde$5Fm7!q248t=D%7jc(T&EAIMN0uPq5-R!nvG8HJu)x# z2l7Bbq!k*ScO@_{>}1p$JUt%!O}$q309mlnN$TVTn`5E)<0cDkchxB5N9ij>^1C4R z#OSfF27Mj!AhRy0lnNE`7ddO(RS@~@s9$AV72Rat8_}SIGlyS`bO`b4OLVX-@+it2;l!x9Kc))(Q=DJL~4JFw^ z(QdVI!ny}MfWXZX+W7j09)ZfAZ3qAKqN*1(7zzgC2SM1%t1q&GJt^ZKz5~NjeW$5Z JrC|B>e*nH7H{}2T literal 0 HcmV?d00001 diff --git a/assets/js/003da42b.767baa12.js b/assets/js/003da42b.767baa12.js new file mode 100644 index 0000000..9dd0d48 --- /dev/null +++ b/assets/js/003da42b.767baa12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[637],{6229:(o,t,e)=>{e.r(t),e.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=e(4848),r=e(8453);const i={},c="Introduction",s={id:"location-proof-protocol/introduction",title:"Introduction",description:"The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.",source:"@site/docs/location-proof-protocol/introduction.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/introduction",permalink:"/docs/location-proof-protocol/introduction",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",next:{title:"Rationale",permalink:"/docs/location-proof-protocol/rationale"}},a={},l=[{value:"Contributing",id:"contributing",level:2}];function d(o){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.R)(),...o.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"introduction",children:"Introduction"}),"\n",(0,n.jsx)(t.p,{children:"The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way."}),"\n",(0,n.jsx)(t.p,{children:"Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies\nwhile providing a standard data model for creating and verifying these proofs."}),"\n",(0,n.jsxs)(t.admonition,{type:"tip",children:[(0,n.jsx)(t.p,{children:"We're working on the Location Proof Protocol in a few places:"}),(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["most active work is happening in the Astral Logbook dapp (especially the\n",(0,n.jsx)(t.a,{href:"https://github.com/AstralProtocol/logbook/blob/83807d8e79fdac8c990dcb168d72b4bfd9a9607c/packages/nextjs/components/CheckinForm.tsx#L57",children:" component"}),")"]}),"\n",(0,n.jsxs)(t.li,{children:["we're planning to store code in the astralprotocol monorepo, located\n",(0,n.jsx)(t.a,{href:"https://github.com/AstralProtocol/astralprotocol/tree/main/src/contracts",children:"here on Github"}),"."]}),"\n"]}),(0,n.jsx)(t.p,{children:"The structure is subject to change \u2014 these docs are the most current!"})]}),"\n",(0,n.jsx)(t.p,{children:"This section of the monorepo currently contains:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Specifications of the core ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/eas-schema",children:"Ethereum Attestation Service (EAS) schema"})," for the protocol"]}),"\n",(0,n.jsxs)(t.li,{children:["Details on how to create location proofs using different ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/location-types",children:"location types"})]}),"\n",(0,n.jsxs)(t.li,{children:["A framework (in development) for building ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/strategies-recipes",children:'"recipes"'})," that allow for many different strategies for proving\nlocation to be added (WIP)"]}),"\n",(0,n.jsxs)(t.li,{children:["Information on attaching differet types of ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/media-types",children:"media"})," to location proofs (WIP)"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"contributing",children:"Contributing"}),"\n",(0,n.jsxs)(t.p,{children:["We welcome contributions to improve the protocol and tools. Please read our\n",(0,n.jsx)(t.a,{href:"https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines",children:"contributing guidelines"})," for more details."]})]})}function p(o={}){const{wrapper:t}={...(0,r.R)(),...o.components};return t?(0,n.jsx)(t,{...o,children:(0,n.jsx)(d,{...o})}):d(o)}},8453:(o,t,e)=>{e.d(t,{R:()=>c,x:()=>s});var n=e(6540);const r={},i=n.createContext(r);function c(o){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof o?o(t):{...t,...o}}),[t,o])}function s(o){let t;return t=o.disableParentContext?"function"==typeof o.components?o.components(r):o.components||r:c(o.components),n.createElement(i.Provider,{value:t},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/0058b4c6.1baed65d.js b/assets/js/0058b4c6.1baed65d.js new file mode 100644 index 0000000..4d35fe2 --- /dev/null +++ b/assets/js/0058b4c6.1baed65d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[849],{6164:o=>{o.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Location Proof Protocol","items":[{"type":"link","label":"Introduction","href":"/docs/location-proof-protocol/introduction","docId":"location-proof-protocol/introduction","unlisted":false},{"type":"link","label":"Rationale","href":"/docs/location-proof-protocol/rationale","docId":"location-proof-protocol/rationale","unlisted":false},{"type":"link","label":"Architecture","href":"/docs/location-proof-protocol/architecture","docId":"location-proof-protocol/architecture","unlisted":false},{"type":"link","label":"EAS Schema","href":"/docs/location-proof-protocol/eas-schema","docId":"location-proof-protocol/eas-schema","unlisted":false},{"type":"link","label":"Location Types","href":"/docs/location-proof-protocol/location-types","docId":"location-proof-protocol/location-types","unlisted":false},{"type":"link","label":"Strategies + Recipes","href":"/docs/location-proof-protocol/strategies-recipes","docId":"location-proof-protocol/strategies-recipes","unlisted":false},{"type":"link","label":"Media Types","href":"/docs/location-proof-protocol/media-types","docId":"location-proof-protocol/media-types","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"core-concepts/decentralized-spatial-data":{"id":"core-concepts/decentralized-spatial-data","title":"Decentralized spatial data","description":""},"core-concepts/location-proofs":{"id":"core-concepts/location-proofs","title":"Location proofs","description":""},"core-concepts/onchain-geospatial":{"id":"core-concepts/onchain-geospatial","title":"Onchain geospatial","description":""},"core-concepts/what-is-spatial-data":{"id":"core-concepts/what-is-spatial-data","title":"What is spatial data?","description":""},"developer-resources/location-attestations":{"id":"developer-resources/location-attestations","title":"Location attestations","description":""},"developer-resources/quickstart":{"id":"developer-resources/quickstart","title":"Quickstart","description":""},"developer-resources/spatial-registries":{"id":"developer-resources/spatial-registries","title":"Spatial registries","description":""},"examples":{"id":"examples","title":"Content goes here...","description":""},"hello":{"id":"hello","title":"Hello","description":"This is my first Docusaurus document!# Hello"},"intro":{"id":"intro","title":"Tutorial Intro","description":"Let\'s discover Docusaurus in less than 5 minutes."},"introducing-astral":{"id":"introducing-astral","title":"Introduction","description":""},"location-proof-protocol/architecture":{"id":"location-proof-protocol/architecture","title":"Architecture","description":"We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you\'d like to weigh in \u2014","sidebar":"docs"},"location-proof-protocol/eas-schema":{"id":"location-proof-protocol/eas-schema","title":"EAS Schema","description":"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)","sidebar":"docs"},"location-proof-protocol/introduction":{"id":"location-proof-protocol/introduction","title":"Introduction","description":"The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.","sidebar":"docs"},"location-proof-protocol/location-types":{"id":"location-proof-protocol/location-types","title":"Location Types","description":"v0.1","sidebar":"docs"},"location-proof-protocol/media-types":{"id":"location-proof-protocol/media-types","title":"Media Types","description":"Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME","sidebar":"docs"},"location-proof-protocol/rationale":{"id":"location-proof-protocol/rationale","title":"Rationale","description":"We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and","sidebar":"docs"},"location-proof-protocol/strategies-recipes":{"id":"location-proof-protocol/strategies-recipes","title":"Strategies + Recipes","description":"The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the","sidebar":"docs"},"spatial-registries/logbook":{"id":"spatial-registries/logbook","title":"Logbook","description":""},"spatial-registries/spatial-sol":{"id":"spatial-registries/spatial-sol","title":"Spatial.sol","description":""},"tutorial-basics/congratulations":{"id":"tutorial-basics/congratulations","title":"Congratulations!","description":"You have just learned the basics of Docusaurus and made some changes to the initial template."},"tutorial-basics/create-a-blog-post":{"id":"tutorial-basics/create-a-blog-post","title":"Create a Blog Post","description":"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed..."},"tutorial-basics/create-a-document":{"id":"tutorial-basics/create-a-document","title":"Create a Document","description":"Documents are groups of pages connected through:"},"tutorial-basics/create-a-page":{"id":"tutorial-basics/create-a-page","title":"Create a Page","description":"Add Markdown or React files to src/pages to create a standalone page:"},"tutorial-basics/deploy-your-site":{"id":"tutorial-basics/deploy-your-site","title":"Deploy your site","description":"Docusaurus is a static-site-generator (also called Jamstack)."},"tutorial-basics/markdown-features":{"id":"tutorial-basics/markdown-features","title":"Markdown Features","description":"Docusaurus supports Markdown and a few additional features."},"tutorial-extras/manage-docs-versions":{"id":"tutorial-extras/manage-docs-versions","title":"Manage Docs Versions","description":"Docusaurus can manage multiple versions of your docs."},"tutorial-extras/translate-your-site":{"id":"tutorial-extras/translate-your-site","title":"Translate your site","description":"Let\'s translate docs/intro.md to French."}}}}')}}]); \ No newline at end of file diff --git a/assets/js/00fb3d82.a8ad1435.js b/assets/js/00fb3d82.a8ad1435.js new file mode 100644 index 0000000..4c7e410 --- /dev/null +++ b/assets/js/00fb3d82.a8ad1435.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4192],{6466:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var s=r(4848),n=r(8453);const o={},i="Spatial registries",c={id:"developer-resources/spatial-registries",title:"Spatial registries",description:"",source:"@site/docs/developer-resources/spatial-registries.md",sourceDirName:"developer-resources",slug:"/developer-resources/spatial-registries",permalink:"/docs/developer-resources/spatial-registries",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},a={},u=[];function l(e){const t={h1:"h1",...(0,n.R)(),...e.components};return(0,s.jsx)(t.h1,{id:"spatial-registries",children:"Spatial registries"})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>i,x:()=>c});var s=r(6540);const n={},o=s.createContext(n);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/01a85c17.4b09fa65.js b/assets/js/01a85c17.4b09fa65.js new file mode 100644 index 0000000..3d97c5e --- /dev/null +++ b/assets/js/01a85c17.4b09fa65.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8209],{6535:(e,s,t)=>{t.d(s,{A:()=>v});var a=t(6540),i=t(4164),r=t(781),l=t(4581),n=t(8774),c=t(1312),o=t(6347),d=t(9169);function m(e){const{pathname:s}=(0,o.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,s){return!(e.unlisted&&!(0,d.ys)(e.permalink,s))}(e,s)))),[e,s])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var b=t(4848);function g(e){let{sidebar:s}=e;const t=m(s.items);return(0,b.jsx)("aside",{className:"col col--3",children:(0,b.jsxs)("nav",{className:(0,i.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,c.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,b.jsx)("div",{className:(0,i.A)(u.sidebarItemTitle,"margin-bottom--md"),children:s.title}),(0,b.jsx)("ul",{className:(0,i.A)(u.sidebarItemList,"clean-list"),children:t.map((e=>(0,b.jsx)("li",{className:u.sidebarItem,children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var h=t(5600);function j(e){let{sidebar:s}=e;const t=m(s.items);return(0,b.jsx)("ul",{className:"menu__list",children:t.map((e=>(0,b.jsx)("li",{className:"menu__list-item",children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function p(e){return(0,b.jsx)(h.GX,{component:j,props:e})}function x(e){let{sidebar:s}=e;const t=(0,l.l)();return s?.items.length?"mobile"===t?(0,b.jsx)(p,{sidebar:s}):(0,b.jsx)(g,{sidebar:s}):null}function v(e){const{sidebar:s,toc:t,children:a,...l}=e,n=s&&s.items.length>0;return(0,b.jsx)(r.A,{...l,children:(0,b.jsx)("div",{className:"container margin-vert--lg",children:(0,b.jsxs)("div",{className:"row",children:[(0,b.jsx)(x,{sidebar:s}),(0,b.jsx)("main",{className:(0,i.A)("col",{"col--7":n,"col--9 col--offset-1":!n}),children:a}),t&&(0,b.jsx)("div",{className:"col col--2",children:t})]})})})}},9158:(e,s,t)=>{t.r(s),t.d(s,{default:()=>j});t(6540);var a=t(4164),i=t(1312);const r=()=>(0,i.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var l=t(1213),n=t(7559),c=t(6535),o=t(6133),d=t(1107);const m={tag:"tag_Nnez"};var u=t(4848);function b(e){let{letterEntry:s}=e;return(0,u.jsxs)("article",{children:[(0,u.jsx)(d.A,{as:"h2",id:s.letter,children:s.letter}),(0,u.jsx)("ul",{className:"padding--none",children:s.tags.map((e=>(0,u.jsx)("li",{className:m.tag,children:(0,u.jsx)(o.A,{...e})},e.permalink)))}),(0,u.jsx)("hr",{})]})}function g(e){let{tags:s}=e;const t=function(e){const s={};return Object.values(e).forEach((e=>{const t=function(e){return e[0].toUpperCase()}(e.label);s[t]??=[],s[t].push(e)})),Object.entries(s).sort(((e,s)=>{let[t]=e,[a]=s;return t.localeCompare(a)})).map((e=>{let[s,t]=e;return{letter:s,tags:t.sort(((e,s)=>e.label.localeCompare(s.label)))}}))}(s);return(0,u.jsx)("section",{className:"margin-vert--lg",children:t.map((e=>(0,u.jsx)(b,{letterEntry:e},e.letter)))})}var h=t(1463);function j(e){let{tags:s,sidebar:t}=e;const i=r();return(0,u.jsxs)(l.e3,{className:(0,a.A)(n.G.wrapper.blogPages,n.G.page.blogTagsListPage),children:[(0,u.jsx)(l.be,{title:i}),(0,u.jsx)(h.A,{tag:"blog_tags_list"}),(0,u.jsxs)(c.A,{sidebar:t,children:[(0,u.jsx)(d.A,{as:"h1",children:i}),(0,u.jsx)(g,{tags:s})]})]})}},6133:(e,s,t)=>{t.d(s,{A:()=>n});t(6540);var a=t(4164),i=t(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function n(e){let{permalink:s,label:t,count:n,description:c}=e;return(0,l.jsxs)(i.A,{href:s,title:c,className:(0,a.A)(r.tag,n?r.tagWithCount:r.tagRegular),children:[t,n&&(0,l.jsx)("span",{children:n})]})}}}]); \ No newline at end of file diff --git a/assets/js/09d5ad39.24aea618.js b/assets/js/09d5ad39.24aea618.js new file mode 100644 index 0000000..5d20646 --- /dev/null +++ b/assets/js/09d5ad39.24aea618.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1864],{1498:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>i});var o=n(4848),s=n(8453);const r={},c="Content goes here...",a={id:"examples",title:"Content goes here...",description:"",source:"@site/docs/examples.md",sourceDirName:".",slug:"/examples",permalink:"/docs/examples",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},u={},i=[];function d(e){const t={h1:"h1",...(0,s.R)(),...e.components};return(0,o.jsx)(t.h1,{id:"content-goes-here",children:"Content goes here..."})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>a});var o=n(6540);const s={},r=o.createContext(s);function c(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0e384e19.00bed4f2.js b/assets/js/0e384e19.00bed4f2.js new file mode 100644 index 0000000..41d41f9 --- /dev/null +++ b/assets/js/0e384e19.00bed4f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3976],{619:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),r=t(8453);const o={sidebar_position:1},i="Tutorial Intro",a={id:"intro",title:"Tutorial Intro",description:"Let's discover Docusaurus in less than 5 minutes.",source:"@site/docs/intro.md",sourceDirName:".",slug:"/intro",permalink:"/docs/intro",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1}},l={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Generate a new site",id:"generate-a-new-site",level:2},{value:"Start your site",id:"start-your-site",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"tutorial-intro",children:"Tutorial Intro"}),"\n",(0,s.jsxs)(n.p,{children:["Let's discover ",(0,s.jsx)(n.strong,{children:"Docusaurus in less than 5 minutes"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,s.jsxs)(n.p,{children:["Get started by ",(0,s.jsx)(n.strong,{children:"creating a new site"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Or ",(0,s.jsx)(n.strong,{children:"try Docusaurus immediately"})," with ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://docusaurus.new",children:"docusaurus.new"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"what-youll-need",children:"What you'll need"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://nodejs.org/en/download/",children:"Node.js"})," version 18.0 or above:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"When installing Node.js, you are recommended to check all checkboxes related to dependencies."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"generate-a-new-site",children:"Generate a new site"}),"\n",(0,s.jsxs)(n.p,{children:["Generate a new Docusaurus site using the ",(0,s.jsx)(n.strong,{children:"classic template"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"The classic template will automatically be added to your project after you run the command:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"npm init docusaurus@latest my-website classic\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor."}),"\n",(0,s.jsx)(n.p,{children:"The command also installs all necessary dependencies you need to run Docusaurus."}),"\n",(0,s.jsx)(n.h2,{id:"start-your-site",children:"Start your site"}),"\n",(0,s.jsx)(n.p,{children:"Run the development server:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"cd my-website\nnpm run start\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"cd"})," command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"npm run start"})," command builds your website locally and serves it through a development server, ready for you to view at ",(0,s.jsx)(n.a,{href:"http://localhost:3000/",children:"http://localhost:3000/"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Open ",(0,s.jsx)(n.code,{children:"docs/intro.md"})," (this page) and edit some lines: the site ",(0,s.jsx)(n.strong,{children:"reloads automatically"})," and displays your changes."]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var s=t(6540);const r={},o=s.createContext(r);function i(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1538.a265ec9d.js b/assets/js/1538.a265ec9d.js new file mode 100644 index 0000000..6a545fe --- /dev/null +++ b/assets/js/1538.a265ec9d.js @@ -0,0 +1 @@ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1538],{7293:(e,t,n)=>{"use strict";n.d(t,{A:()=>L});var s=n(6540),o=n(4848);function a(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:a.length>0?(0,o.jsx)(o.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}var c=n(4164),r=n(1312),i=n(7559);const l={admonition:"admonition_xJq3",admonitionHeading:"admonitionHeading_Gvgb",admonitionIcon:"admonitionIcon_Rf37",admonitionContent:"admonitionContent_BuS1"};function d(e){let{type:t,className:n,children:s}=e;return(0,o.jsx)("div",{className:(0,c.A)(i.G.common.admonition,i.G.common.admonitionType(t),l.admonition,n),children:s})}function u(e){let{icon:t,title:n}=e;return(0,o.jsxs)("div",{className:l.admonitionHeading,children:[(0,o.jsx)("span",{className:l.admonitionIcon,children:t}),n]})}function m(e){let{children:t}=e;return t?(0,o.jsx)("div",{className:l.admonitionContent,children:t}):null}function h(e){const{type:t,icon:n,title:s,children:a,className:c}=e;return(0,o.jsxs)(d,{type:t,className:c,children:[s||n?(0,o.jsx)(u,{title:s,icon:n}):null,(0,o.jsx)(m,{children:a})]})}function p(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const f={icon:(0,o.jsx)(p,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function x(e){return(0,o.jsx)(h,{...f,...e,className:(0,c.A)("alert alert--secondary",e.className),children:e.children})}function b(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const j={icon:(0,o.jsx)(b,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function g(e){return(0,o.jsx)(h,{...j,...e,className:(0,c.A)("alert alert--success",e.className),children:e.children})}function v(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const y={icon:(0,o.jsx)(v,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function N(e){return(0,o.jsx)(h,{...y,...e,className:(0,c.A)("alert alert--info",e.className),children:e.children})}function A(e){return(0,o.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const B={icon:(0,o.jsx)(A,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function k(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const w={icon:(0,o.jsx)(k,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const C={icon:(0,o.jsx)(A,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const E={...{note:x,tip:g,info:N,warning:function(e){return(0,o.jsx)(h,{...B,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,o.jsx)(h,{...w,...e,className:(0,c.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,o.jsx)(x,{title:"secondary",...e}),important:e=>(0,o.jsx)(N,{title:"important",...e}),success:e=>(0,o.jsx)(g,{title:"success",...e}),caution:function(e){return(0,o.jsx)(h,{...C,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})}}};function L(e){const t=a(e),n=(s=t.type,E[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),E.info));var s;return(0,o.jsx)(n,{...t})}},4336:(e,t,n)=>{"use strict";n.d(t,{A:()=>x});n(6540);var s=n(4164),o=n(1312),a=n(7559),c=n(8774);const r={iconEdit:"iconEdit_Z9Sw"};var i=n(4848);function l(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(r.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function d(e){let{editUrl:t}=e;return(0,i.jsxs)(c.A,{to:t,className:a.G.common.editThisPage,children:[(0,i.jsx)(l,{}),(0,i.jsx)(o.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=n(6266);function m(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=(0,u.i)({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,i.jsx)(o.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function h(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(o.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function p(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,i.jsxs)("span",{className:a.G.common.lastUpdated,children:[(0,i.jsx)(o.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,i.jsx)(m,{lastUpdatedAt:t}):"",byUser:n?(0,i.jsx)(h,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const f={lastUpdated:"lastUpdated_JAkA"};function x(e){let{className:t,editUrl:n,lastUpdatedAt:o,lastUpdatedBy:a}=e;return(0,i.jsxs)("div",{className:(0,s.A)("row",t),children:[(0,i.jsx)("div",{className:"col",children:n&&(0,i.jsx)(d,{editUrl:n})}),(0,i.jsx)("div",{className:(0,s.A)("col",f.lastUpdated),children:(o||a)&&(0,i.jsx)(p,{lastUpdatedAt:o,lastUpdatedBy:a})})]})}},5533:(e,t,n)=>{"use strict";n.d(t,{A:()=>ie});var s=n(6540),o=n(8453),a=n(5260),c=n(2303),r=n(4164),i=n(5293),l=n(6342);function d(){const{prism:e}=(0,l.p)(),{colorMode:t}=(0,i.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var u=n(7559),m=n(8426),h=n.n(m);const p=/title=(?["'])(?.*?)\1/,f=/\{(?<range>[\d,-]+)\}/,x={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},b={...x,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},j=Object.keys(x);function g(e,t){const n=e.map((e=>{const{start:n,end:s}=b[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function v(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:o,metastring:a}=t;if(a&&f.test(a)){const e=a.match(f).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,s=h()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return g(["js","jsBlock"],t);case"jsx":case"tsx":return g(["js","jsBlock","jsx"],t);case"html":return g(["js","jsBlock","html"],t);case"python":case"py":case"bash":return g(["bash"],t);case"markdown":case"md":return g(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return g(["tex"],t);case"lua":case"haskell":case"sql":return g(["lua"],t);case"wasm":return g(["wasm"],t);case"vb":case"vba":case"visual-basic":return g(["vb","rem"],t);case"vbnet":return g(["vbnet","rem"],t);case"batch":return g(["rem"],t);case"basic":return g(["rem","f90"],t);case"fsharp":return g(["js","ml"],t);case"ocaml":case"sml":return g(["ml"],t);case"fortran":return g(["f90"],t);case"cobol":return g(["cobol"],t);default:return g(j,t)}}(s,o),r=n.split("\n"),i=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),l=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<r.length;){const e=r[h].match(c);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));l[t]?i[l[t]].range+=`${h},`:d[t]?i[d[t]].start=h:u[t]&&(i[u[t]].range+=`${i[u[t]].start}-${h-1},`),r.splice(h,1)}n=r.join("\n");const m={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;h()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const y={codeBlockContainer:"codeBlockContainer_Ckt0"};var N=n(4848);function A(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,o]=e;const a=t[s];a&&"string"==typeof o&&(n[a]=o)})),n}(d());return(0,N.jsx)(t,{...n,style:s,className:(0,r.A)(n.className,y.codeBlockContainer,u.G.common.codeBlock)})}const B={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function k(e){let{children:t,className:n}=e;return(0,N.jsx)(A,{as:"pre",tabIndex:0,className:(0,r.A)(B.codeBlockStandalone,"thin-scrollbar",n),children:(0,N.jsx)("code",{className:B.codeBlockLines,children:t})})}var w=n(9532);const C={attributes:!0,characterData:!0,childList:!0,subtree:!0};function E(e,t){const[n,o]=(0,s.useState)(),a=(0,s.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=C);const o=(0,w._q)(t),a=(0,w.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,a),()=>t.disconnect()}),[e,o,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var L=n(1765);const T={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function _(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:o,getTokenProps:a}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=o({line:t,className:(0,r.A)(n,s&&T.codeLine)}),i=t.map(((e,t)=>(0,N.jsx)("span",{...a({token:e})},t)));return(0,N.jsxs)("span",{...c,children:[s?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)("span",{className:T.codeLineNumber}),(0,N.jsx)("span",{className:T.codeLineContent,children:i})]}):i,(0,N.jsx)("br",{})]})}var S=n(1312);function U(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function M(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const z={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function I(e){let{code:t,className:n}=e;const[o,a]=(0,s.useState)(!1),c=(0,s.useRef)(void 0),i=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),o=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let r=!1;try{r=document.execCommand("copy")}catch{}s.remove(),c&&(a.removeAllRanges(),a.addRange(c)),o&&o.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),(0,N.jsx)("button",{type:"button","aria-label":o?(0,S.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,S.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,S.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,r.A)("clean-btn",n,z.copyButton,o&&z.copyButtonCopied),onClick:i,children:(0,N.jsxs)("span",{className:z.copyButtonIcons,"aria-hidden":"true",children:[(0,N.jsx)(U,{className:z.copyButtonIcon}),(0,N.jsx)(M,{className:z.copyButtonSuccessIcon})]})})}function H(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const R={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function V(e){let{className:t,onClick:n,isEnabled:s}=e;const o=(0,S.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,N.jsx)("button",{type:"button",onClick:n,className:(0,r.A)("clean-btn",t,s&&R.wordWrapButtonEnabled),"aria-label":o,title:o,children:(0,N.jsx)(H,{className:R.wordWrapButtonIcon,"aria-hidden":"true"})})}function $(e){let{children:t,className:n="",metastring:o,title:a,showLineNumbers:c,language:i}=e;const{prism:{defaultLanguage:u,magicComments:m}}=(0,l.p)(),h=function(e){return e?.toLowerCase()}(i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??u),f=d(),x=function(){const[e,t]=(0,s.useState)(!1),[n,o]=(0,s.useState)(!1),a=(0,s.useRef)(null),c=(0,s.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),r=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");o(n)}),[a]);return E(a,r),(0,s.useEffect)((()=>{r()}),[e,r]),(0,s.useEffect)((()=>(window.addEventListener("resize",r,{passive:!0}),()=>{window.removeEventListener("resize",r)})),[r]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),b=function(e){return e?.match(p)?.groups.title??""}(o)||a,{lineClassNames:j,code:g}=v(t,{metastring:o,language:h,magicComments:m}),y=c??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return(0,N.jsxs)(A,{as:"div",className:(0,r.A)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`),children:[b&&(0,N.jsx)("div",{className:B.codeBlockTitle,children:b}),(0,N.jsxs)("div",{className:B.codeBlockContent,children:[(0,N.jsx)(L.f4,{theme:f,code:g,language:h??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:o,getTokenProps:a}=e;return(0,N.jsx)("pre",{tabIndex:0,ref:x.codeBlockRef,className:(0,r.A)(t,B.codeBlock,"thin-scrollbar"),style:n,children:(0,N.jsx)("code",{className:(0,r.A)(B.codeBlockLines,y&&B.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,N.jsx)(_,{line:e,getLineProps:o,getTokenProps:a,classNames:j[t],showLineNumbers:y},t)))})})}}),(0,N.jsxs)("div",{className:B.buttonGroup,children:[(x.isEnabled||x.isCodeScrollable)&&(0,N.jsx)(V,{className:B.codeButton,onClick:()=>x.toggle(),isEnabled:x.isEnabled}),(0,N.jsx)(I,{className:B.codeButton,code:g})]})]})]})}function W(e){let{children:t,...n}=e;const o=(0,c.A)(),a=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),r="string"==typeof a?$:k;return(0,N.jsx)(r,{...n,children:a},String(o))}function D(e){return(0,N.jsx)("code",{...e})}var P=n(8774);var q=n(3427),G=n(1422);const O={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function F(e){return!!e&&("SUMMARY"===e.tagName||F(e.parentElement))}function Z(e,t){return!!e&&(e===t||Z(e.parentElement,t))}function J(e){let{summary:t,children:n,...o}=e;(0,q.A)().collectAnchor(o.id);const a=(0,c.A)(),i=(0,s.useRef)(null),{collapsed:l,setCollapsed:d}=(0,G.u)({initialState:!o.open}),[u,m]=(0,s.useState)(o.open),h=s.isValidElement(t)?t:(0,N.jsx)("summary",{children:t??"Details"});return(0,N.jsxs)("details",{...o,ref:i,open:u,"data-collapsed":l,className:(0,r.A)(O.details,a&&O.isBrowser,o.className),onMouseDown:e=>{F(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;F(t)&&Z(t,i.current)&&(e.preventDefault(),l?(d(!1),m(!0)):d(!0))},children:[h,(0,N.jsx)(G.N,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{d(e),m(!e)},children:(0,N.jsx)("div",{className:O.collapsibleContent,children:n})})]})}const Y={details:"details_b_Ee"},K="alert alert--info";function Q(e){let{...t}=e;return(0,N.jsx)(J,{...t,className:(0,r.A)(K,Y.details,t.className)})}function X(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),o=(0,N.jsx)(N.Fragment,{children:t.filter((e=>e!==n))});return(0,N.jsx)(Q,{...e,summary:n,children:o})}var ee=n(1107);function te(e){return(0,N.jsx)(ee.A,{...e})}const ne={containsTaskList:"containsTaskList_mC6p"};function se(e){if(void 0!==e)return(0,r.A)(e,e?.includes("contains-task-list")&&ne.containsTaskList)}const oe={img:"img_ev3q"};var ae=n(7293),ce=n(418);const re={Head:a.A,details:X,Details:X,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,N.jsx)(D,{...e}):(0,N.jsx)(W,{...e})},a:function(e){return(0,N.jsx)(P.A,{...e})},pre:function(e){return(0,N.jsx)(N.Fragment,{children:e.children})},ul:function(e){return(0,N.jsx)("ul",{...e,className:se(e.className)})},li:function(e){return(0,q.A)().collectAnchor(e.id),(0,N.jsx)("li",{...e})},img:function(e){return(0,N.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,r.A)(t,oe.img))});var t},h1:e=>(0,N.jsx)(te,{as:"h1",...e}),h2:e=>(0,N.jsx)(te,{as:"h2",...e}),h3:e=>(0,N.jsx)(te,{as:"h3",...e}),h4:e=>(0,N.jsx)(te,{as:"h4",...e}),h5:e=>(0,N.jsx)(te,{as:"h5",...e}),h6:e=>(0,N.jsx)(te,{as:"h6",...e}),admonition:ae.A,mermaid:ce.A};function ie(e){let{children:t}=e;return(0,N.jsx)(o.x,{components:re,children:t})}},6266:(e,t,n)=>{"use strict";n.d(t,{i:()=>o});var s=n(4586);function o(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,s.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,s.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}},8426:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,o,a]=t;if(s&&a){s=parseInt(s),a=parseInt(a);const e=s<a?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(a+=e);for(let t=s;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},8453:(e,t,n)=>{"use strict";n.d(t,{R:()=>c,x:()=>r});var s=n(6540);const o={},a=s.createContext(o);function c(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17896441.aca2f39a.js b/assets/js/17896441.aca2f39a.js new file mode 100644 index 0000000..13333a3 --- /dev/null +++ b/assets/js/17896441.aca2f39a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8401],{2447:(e,n,t)=>{t.r(n),t.d(n,{default:()=>ae});var s=t(6540),a=t(1213),i=t(9532),l=t(4848);const o=s.createContext(null);function r(e){let{children:n,content:t}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(t);return(0,l.jsx)(o.Provider,{value:a,children:n})}function c(){const e=(0,s.useContext)(o);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:n,assets:t}=c();return(0,l.jsx)(a.be,{title:e.title,description:e.description,keywords:n.keywords,image:t.image??n.image})}var u=t(4164),m=t(4581),h=t(1312),v=t(9022);function b(e){const{previous:n,next:t}=e;return(0,l.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,l.jsx)(v.A,{...n,subLabel:(0,l.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),t&&(0,l.jsx)(v.A,{...t,subLabel:(0,l.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function x(){const{metadata:e}=c();return(0,l.jsx)(b,{previous:e.previous,next:e.next})}var g=t(4586),p=t(8774),f=t(4070),j=t(7559),A=t(5597),C=t(2252);const L={unreleased:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,l.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:n,versionLabel:(0,l.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,l.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:n,versionLabel:(0,l.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function N(e){const n=L[e.versionMetadata.banner];return(0,l.jsx)(n,{...e})}function _(e){let{versionLabel:n,to:t,onClick:s}=e;return(0,l.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:n,latestVersionLink:(0,l.jsx)("b",{children:(0,l.jsx)(p.A,{to:t,onClick:s,children:(0,l.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function k(e){let{className:n,versionMetadata:t}=e;const{siteConfig:{title:s}}=(0,g.A)(),{pluginId:a}=(0,f.vT)({failfast:!0}),{savePreferredVersionName:i}=(0,A.g1)(a),{latestDocSuggestion:o,latestVersionSuggestion:r}=(0,f.HW)(a),c=o??(d=r).docs.find((e=>e.id===d.mainDocId));var d;return(0,l.jsxs)("div",{className:(0,u.A)(n,j.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,l.jsx)("div",{children:(0,l.jsx)(N,{siteTitle:s,versionMetadata:t})}),(0,l.jsx)("div",{className:"margin-top--md",children:(0,l.jsx)(_,{versionLabel:r.label,to:c.path,onClick:()=>i(r.name)})})]})}function T(e){let{className:n}=e;const t=(0,C.r)();return t.banner?(0,l.jsx)(k,{className:n,versionMetadata:t}):null}function H(e){let{className:n}=e;const t=(0,C.r)();return t.badge?(0,l.jsx)("span",{className:(0,u.A)(n,j.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,l.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}var M=t(2053),y=t(4336);function I(){const{metadata:e}=c(),{editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s,tags:a}=e,i=a.length>0,o=!!(n||t||s);return i||o?(0,l.jsxs)("footer",{className:(0,u.A)(j.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,l.jsx)("div",{className:(0,u.A)("row margin-top--sm",j.G.docs.docFooterTagsRow),children:(0,l.jsx)("div",{className:"col",children:(0,l.jsx)(M.A,{tags:a})})}),o&&(0,l.jsx)(y.A,{className:(0,u.A)("margin-top--sm",j.G.docs.docFooterEditMetaRow),editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s})]}):null}var w=t(1422),E=t(5195);const B={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function O(e){let{collapsed:n,...t}=e;return(0,l.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",B.tocCollapsibleButton,!n&&B.tocCollapsibleButtonExpanded,t.className),children:(0,l.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const V={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function G(e){let{toc:n,className:t,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:i,toggleCollapsed:o}=(0,w.u)({initialState:!0});return(0,l.jsxs)("div",{className:(0,u.A)(V.tocCollapsible,!i&&V.tocCollapsibleExpanded,t),children:[(0,l.jsx)(O,{collapsed:i,onClick:o}),(0,l.jsx)(w.N,{lazy:!0,className:V.tocCollapsibleContent,collapsed:i,children:(0,l.jsx)(E.A,{toc:n,minHeadingLevel:s,maxHeadingLevel:a})})]})}const R={tocMobile:"tocMobile_ITEo"};function S(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(G,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:(0,u.A)(j.G.docs.docTocMobile,R.tocMobile)})}var P=t(7763);function F(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(P.A,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:j.G.docs.docTocDesktop})}var U=t(1107),D=t(5533);function z(e){let{children:n}=e;const t=function(){const{metadata:e,frontMatter:n,contentTitle:t}=c();return n.hide_title||void 0!==t?null:e.title}();return(0,l.jsxs)("div",{className:(0,u.A)(j.G.docs.docMarkdown,"markdown"),children:[t&&(0,l.jsx)("header",{children:(0,l.jsx)(U.A,{as:"h1",children:t})}),(0,l.jsx)(D.A,{children:n})]})}var W=t(1754),q=t(9169),$=t(6025);function Q(e){return(0,l.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,l.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const X={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function Y(){const e=(0,$.Ay)("/");return(0,l.jsx)("li",{className:"breadcrumbs__item",children:(0,l.jsx)(p.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,l.jsx)(Q,{className:X.breadcrumbHomeIcon})})})}const Z={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function J(e){let{children:n,href:t,isLast:s}=e;const a="breadcrumbs__link";return s?(0,l.jsx)("span",{className:a,itemProp:"name",children:n}):t?(0,l.jsx)(p.A,{className:a,href:t,itemProp:"item",children:(0,l.jsx)("span",{itemProp:"name",children:n})}):(0,l.jsx)("span",{className:a,children:n})}function K(e){let{children:n,active:t,index:s,addMicrodata:a}=e;return(0,l.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:[n,(0,l.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function ee(){const e=(0,W.OF)(),n=(0,q.Dt)();return e?(0,l.jsx)("nav",{className:(0,u.A)(j.G.docs.docBreadcrumbs,Z.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,l.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[n&&(0,l.jsx)(Y,{}),e.map(((n,t)=>{const s=t===e.length-1,a="category"===n.type&&n.linkUnlisted?void 0:n.href;return(0,l.jsx)(K,{active:s,index:t,addMicrodata:!!a,children:(0,l.jsx)(J,{href:a,isLast:s,children:n.label})},t)}))]})}):null}var ne=t(996);const te={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function se(e){let{children:n}=e;const t=function(){const{frontMatter:e,toc:n}=c(),t=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&n.length>0;return{hidden:s,mobile:a?(0,l.jsx)(S,{}):void 0,desktop:!a||"desktop"!==t&&"ssr"!==t?void 0:(0,l.jsx)(F,{})}}(),{metadata:{unlisted:s}}=c();return(0,l.jsxs)("div",{className:"row",children:[(0,l.jsxs)("div",{className:(0,u.A)("col",!t.hidden&&te.docItemCol),children:[s&&(0,l.jsx)(ne.A,{}),(0,l.jsx)(T,{}),(0,l.jsxs)("div",{className:te.docItemContainer,children:[(0,l.jsxs)("article",{children:[(0,l.jsx)(ee,{}),(0,l.jsx)(H,{}),t.mobile,(0,l.jsx)(z,{children:n}),(0,l.jsx)(I,{})]}),(0,l.jsx)(x,{})]})]}),t.desktop&&(0,l.jsx)("div",{className:"col col--3",children:t.desktop})]})}function ae(e){const n=`docs-doc-id-${e.content.metadata.id}`,t=e.content;return(0,l.jsx)(r,{content:e.content,children:(0,l.jsxs)(a.e3,{className:n,children:[(0,l.jsx)(d,{}),(0,l.jsx)(se,{children:(0,l.jsx)(t,{})})]})})}},9022:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var s=t(4164),a=t(8774),i=t(4848);function l(e){const{permalink:n,title:t,subLabel:l,isNext:o}=e;return(0,i.jsxs)(a.A,{className:(0,s.A)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:n,children:[l&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,i.jsx)("div",{className:"pagination-nav__label",children:t})]})}},7763:(e,n,t)=>{t.d(n,{A:()=>c});t(6540);var s=t(4164),a=t(5195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const o="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function c(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,s.A)(i.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(a.A,{...t,linkClassName:o,linkActiveClassName:r})})}},5195:(e,n,t)=>{t.d(n,{A:()=>b});var s=t(6540),a=t(6342);function i(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n}));const s=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):s.push(a)})),s}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:s});return function(e){return e.level>=t&&e.level<=s}(e)?[{...e,children:n}]:n}))}function o(e){const n=e.getBoundingClientRect();return n.top===n.bottom?o(e.parentNode):n}function r(e,n){let{anchorTopOffset:t}=n;const s=e.find((e=>o(e).top>=t));if(s){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(o(s))?s:e[e.indexOf(s)-1]??null}return e[e.length-1]??null}function c(){const e=(0,s.useRef)(0),{navbar:{hideOnScroll:n}}=(0,a.p)();return(0,s.useEffect)((()=>{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=c();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:l}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),o=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const s=[];for(let a=n;a<=t;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:i,maxHeadingLevel:l}),c=r(o,{anchorTopOffset:t.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,t])}var u=t(8774),m=t(4848);function h(e){let{toc:n,className:t,linkClassName:s,isChild:a}=e;return n.length?(0,m.jsx)("ul",{className:a?void 0:t,children:n.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:t,linkClassName:s})]},e.id)))}):null}const v=s.memo(h);function b(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:c,maxHeadingLevel:u,...h}=e;const b=(0,a.p)(),x=c??b.tableOfContents.minHeadingLevel,g=u??b.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>l({toc:i(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:x,maxHeadingLevel:g});return d((0,s.useMemo)((()=>{if(o&&r)return{linkClassName:o,linkActiveClassName:r,minHeadingLevel:x,maxHeadingLevel:g}}),[o,r,x,g])),(0,m.jsx)(v,{toc:p,className:t,linkClassName:o,...h})}},6133:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var s=t(4164),a=t(8774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function o(e){let{permalink:n,label:t,count:o,description:r}=e;return(0,l.jsxs)(a.A,{href:n,title:r,className:(0,s.A)(i.tag,o?i.tagWithCount:i.tagRegular),children:[t,o&&(0,l.jsx)("span",{children:o})]})}},2053:(e,n,t)=>{t.d(n,{A:()=>r});t(6540);var s=t(4164),a=t(1312),i=t(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var o=t(4848);function r(e){let{tags:n}=e;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(a.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:n.map((e=>(0,o.jsx)("li",{className:l.tag,children:(0,o.jsx)(i.A,{...e})},e.permalink)))})]})}},996:(e,n,t)=>{t.d(n,{A:()=>h});t(6540);var s=t(4164),a=t(1312),i=t(5260),l=t(4848);function o(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function r(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,l.jsx)(i.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),u=t(7293);function m(e){let{className:n}=e;return(0,l.jsx)(u.A,{type:"caution",title:(0,l.jsx)(o,{}),className:(0,s.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(r,{})})}function h(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c,{}),(0,l.jsx)(m,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/18c41134.946ac897.js b/assets/js/18c41134.946ac897.js new file mode 100644 index 0000000..3f08cfe --- /dev/null +++ b/assets/js/18c41134.946ac897.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9262],{3849:(e,n,s)=>{s.r(n),s.d(n,{Highlight:()=>d,assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var r=s(4848),t=s(8453);const a={sidebar_position:4},o="Markdown Features",i={id:"tutorial-basics/markdown-features",title:"Markdown Features",description:"Docusaurus supports Markdown and a few additional features.",source:"@site/docs/tutorial-basics/markdown-features.mdx",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/markdown-features",permalink:"/docs/tutorial-basics/markdown-features",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4}},c={},d=({children:e,color:n})=>{const s={span:"span",...(0,t.R)()};return(0,r.jsx)(s.span,{style:{backgroundColor:n,borderRadius:"20px",color:"#fff",padding:"10px",cursor:"pointer"},onClick:()=>{alert(`You clicked the color ${n} with label ${e}`)},children:e})},l=[{value:"Front Matter",id:"front-matter",level:2},{value:"Links",id:"links",level:2},{value:"Images",id:"images",level:2},{value:"Code Blocks",id:"code-blocks",level:2},{value:"Admonitions",id:"admonitions",level:2},{value:"MDX and React Components",id:"mdx-and-react-components",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"markdown-features",children:"Markdown Features"}),"\n",(0,r.jsxs)(n.p,{children:["Docusaurus supports ",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://daringfireball.net/projects/markdown/syntax",children:"Markdown"})})," and a few ",(0,r.jsx)(n.strong,{children:"additional features"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"front-matter",children:"Front Matter"}),"\n",(0,r.jsxs)(n.p,{children:["Markdown documents have metadata at the top called ",(0,r.jsx)(n.a,{href:"https://jekyllrb.com/docs/front-matter/",children:"Front Matter"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",metastring:'title="my-doc.md"',children:"// highlight-start\n---\nid: my-doc-id\ntitle: My document title\ndescription: My document description\nslug: /my-custom-url\n---\n// highlight-end\n\n## Markdown heading\n\nMarkdown text with [links](./hello.md)\n"})}),"\n",(0,r.jsx)(n.h2,{id:"links",children:"Links"}),"\n",(0,r.jsx)(n.p,{children:"Regular Markdown links are supported, using url paths or relative file paths."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"Let's see how to [Create a page](/create-a-page).\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"Let's see how to [Create a page](./create-a-page.md).\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Result:"})," Let's see how to ",(0,r.jsx)(n.a,{href:"/docs/tutorial-basics/create-a-page",children:"Create a page"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"images",children:"Images"}),"\n",(0,r.jsx)(n.p,{children:"Regular Markdown images are supported."}),"\n",(0,r.jsxs)(n.p,{children:["You can use absolute paths to reference images in the static directory (",(0,r.jsx)(n.code,{children:"static/img/docusaurus.png"}),"):"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"![Docusaurus logo](/img/docusaurus.png)\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Docusaurus logo",src:s(5923).A+"",width:"200",height:"200"})}),"\n",(0,r.jsx)(n.p,{children:"You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"![Docusaurus logo](./img/docusaurus.png)\n"})}),"\n",(0,r.jsx)(n.h2,{id:"code-blocks",children:"Code Blocks"}),"\n",(0,r.jsx)(n.p,{children:"Markdown code blocks are supported with Syntax highlighting."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:'```jsx title="src/components/HelloDocusaurus.js"\nfunction HelloDocusaurus() {\n return <h1>Hello, Docusaurus!</h1>;\n}\n```\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-jsx",metastring:'title="src/components/HelloDocusaurus.js"',children:"function HelloDocusaurus() {\n return <h1>Hello, Docusaurus!</h1>;\n}\n"})}),"\n",(0,r.jsx)(n.h2,{id:"admonitions",children:"Admonitions"}),"\n",(0,r.jsx)(n.p,{children:"Docusaurus has a special syntax to create admonitions and callouts:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:":::tip[My tip]\n\nUse this awesome feature option\n\n:::\n\n:::danger[Take care]\n\nThis action is dangerous\n\n:::\n"})}),"\n",(0,r.jsx)(n.admonition,{title:"My tip",type:"tip",children:(0,r.jsx)(n.p,{children:"Use this awesome feature option"})}),"\n",(0,r.jsx)(n.admonition,{title:"Take care",type:"danger",children:(0,r.jsx)(n.p,{children:"This action is dangerous"})}),"\n",(0,r.jsx)(n.h2,{id:"mdx-and-react-components",children:"MDX and React Components"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"https://mdxjs.com/",children:"MDX"})," can make your documentation more ",(0,r.jsx)(n.strong,{children:"interactive"})," and allows using any ",(0,r.jsx)(n.strong,{children:"React components inside Markdown"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-jsx",children:"export const Highlight = ({children, color}) => (\n <span\n style={{\n backgroundColor: color,\n borderRadius: '20px',\n color: '#fff',\n padding: '10px',\n cursor: 'pointer',\n }}\n onClick={() => {\n alert(`You clicked the color ${color} with label ${children}`)\n }}>\n {children}\n </span>\n);\n\nThis is <Highlight color=\"#25c2a0\">Docusaurus green</Highlight> !\n\nThis is <Highlight color=\"#1877F2\">Facebook blue</Highlight> !\n"})}),"\n","\n",(0,r.jsxs)(n.p,{children:["This is ",(0,r.jsx)(d,{color:"#25c2a0",children:"Docusaurus green"})," !"]}),"\n",(0,r.jsxs)(n.p,{children:["This is ",(0,r.jsx)(d,{color:"#1877F2",children:"Facebook blue"})," !"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},5923:(e,n,s)=>{s.d(n,{A:()=>r});const r="data:image/png;base64,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"},8453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>i});var r=s(6540);const t={},a=r.createContext(t);function o(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1b6ec5d4.440a55b5.js b/assets/js/1b6ec5d4.440a55b5.js new file mode 100644 index 0000000..4ed156b --- /dev/null +++ b/assets/js/1b6ec5d4.440a55b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4365],{7850:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>s,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var n=t(4848),r=t(8453);const i={},c="Architecture",a={id:"location-proof-protocol/architecture",title:"Architecture",description:"We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you'd like to weigh in \u2014",source:"@site/docs/location-proof-protocol/architecture.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/architecture",permalink:"/docs/location-proof-protocol/architecture",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Rationale",permalink:"/docs/location-proof-protocol/rationale"},next:{title:"EAS Schema",permalink:"/docs/location-proof-protocol/eas-schema"}},s={},d=[{value:"Abstract",id:"abstract",level:2}];function l(e){const o={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h1,{id:"architecture",children:"Architecture"}),"\n",(0,n.jsxs)(o.p,{children:["We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you'd like to weigh in \u2014\nor help us build it! \u2014\xa0reach out on ",(0,n.jsx)(o.a,{href:"https://t.me/+UkTOSXnDcDM5ZTBk",children:"Telegram"}),"."]}),"\n",(0,n.jsx)(o.p,{children:"Here's the top-level abstract of the work we're doing:"}),"\n",(0,n.jsx)(o.h2,{id:"abstract",children:"Abstract"}),"\n",(0,n.jsxs)(o.p,{children:["This spike examines two approaches of extensible contracts, managed by a ",(0,n.jsx)(o.code,{children:"*RecipeCoordinator.sol*"})," contract that controls the addition and\nupgrade of multiple implementation contracts. These implementation contracts each hold a ",(0,n.jsx)(o.em,{children:"recipe"})," for a \u201cproof-of-location\u201d strategy."]}),"\n",(0,n.jsxs)(o.p,{children:["The primary purpose of this design is to coordinate the addition, use and upgrade of these recipes / strategies, through one coordinating\ncontract \u2014 ",(0,n.jsx)(o.code,{children:"RecipeCoordinator.sol"}),". Adding recipes is a ",(0,n.jsx)(o.strong,{children:"permissionless"}),", public action taken through the ",(0,n.jsx)(o.code,{children:"RecipeCoordinator"}),". Upgrade\nfunctionality is required for both the RecipeCoordinator and, optionally, on recipe implementation contracts."]}),"\n",(0,n.jsx)(o.p,{children:"In this spike, we consider two architectural design patterns to serve this purpose: the Diamond pattern and ERC-165 interface matching."}),"\n",(0,n.jsxs)(o.admonition,{type:"note",children:[(0,n.jsxs)(o.p,{children:["For example, a team developing a proof-of-location strategy that requires users to scan NFC devices would implement the Solidity code to\nrecord and verify location proofs, then register the implementation with the ",(0,n.jsx)(o.code,{children:"RecipeCoordinator"}),"."]}),(0,n.jsxs)(o.p,{children:["The \u201crecipe\u201d would describe the shape + content of the data that needs to be included in a location proof for it to adhere to that strategy.\nThe implementation contract developed by the strategy designers would include a ",(0,n.jsx)(o.code,{children:"verify"})," method."]})]}),"\n",(0,n.jsx)(o.admonition,{type:"warning",children:(0,n.jsx)(o.p,{children:"This is all work in progress, we'd love input!"})})]})}function h(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},8453:(e,o,t)=>{t.d(o,{R:()=>c,x:()=>a});var n=t(6540);const r={},i=n.createContext(r);function c(e){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.0275efec.js b/assets/js/1df93b7f.0275efec.js new file mode 100644 index 0000000..9f47cca --- /dev/null +++ b/assets/js/1df93b7f.0275efec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4583],{870:(e,a,t)=>{t.d(a,{A:()=>c});var l,r=t(6540);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var l in t)({}).hasOwnProperty.call(t,l)&&(e[l]=t[l])}return e},n.apply(null,arguments)}const c=e=>{let{title:a,titleId:t,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1088,height:687.962,viewBox:"0 0 1088 687.962","aria-labelledby":t},c),void 0===a?r.createElement("title",{id:t},"Easy to Use"):a?r.createElement("title",{id:t},a):null,l||(l=r.createElement("g",{"data-name":"Group 12"},r.createElement("g",{"data-name":"Group 11"},r.createElement("path",{fill:"#3f3d56",d:"M961.81 454.442c-5.27 45.15-16.22 81.4-31.25 110.31-20 38.52-54.21 54.04-84.77 70.28a193 193 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657 657 0 0 0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07 5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12 52.29-235.46 134.74-296.47 155.97-115.41 369.76-110.57 523.43 7.88 102.36 78.9 198.2 198.31 179.02 362.74","data-name":"Path 83"}),r.createElement("path",{fill:"#f2f2f2",d:"M930.56 564.752c-20 38.52-47.21 64.04-77.77 80.28a193 193 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657 657 0 0 0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25 1.72c-100.17 7.36-253.82-6.43-321.42-143.29L326 177.962l62.95 161.619 20.09 51.59 55.37-75.98L493 275.962l130.2 149.27 36.8-81.27 254.78 207.919 14.21 11.59Z","data-name":"Path 84"}),r.createElement("path",{d:"m302 282.962 26-57 36 83-31-60Z","data-name":"Path 85",opacity:.1}),r.createElement("path",{d:"M554.5 647.802q-14.97-.675-29.97-.67l-115.49-255.96Z","data-name":"Path 86",opacity:.1}),r.createElement("path",{d:"M464.411 315.191 493 292.962l130 150-132-128Z","data-name":"Path 87",opacity:.1}),r.createElement("path",{d:"M852.79 645.032a193 193 0 0 1-27.46 11.94L623.2 425.232Z","data-name":"Path 88",opacity:.1}),r.createElement("circle",{cx:3,cy:3,r:3,fill:"#f2f2f2","data-name":"Ellipse 11",transform:"translate(479 98.962)"}),r.createElement("circle",{cx:3,cy:3,r:3,fill:"#f2f2f2","data-name":"Ellipse 12",transform:"translate(396 201.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 13",transform:"translate(600 220.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 14",transform:"translate(180 265.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 15",transform:"translate(612 96.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 16",transform:"translate(736 192.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 17",transform:"translate(858 344.962)"}),r.createElement("path",{fill:"#f2f2f2",d:"M306 121.222h-2.76v-2.76h-1.48v2.76H299v1.478h2.76v2.759h1.48V122.7H306Z","data-name":"Path 89"}),r.createElement("path",{fill:"#f2f2f2",d:"M848 424.222h-2.76v-2.76h-1.48v2.76H841v1.478h2.76v2.759h1.48V425.7H848Z","data-name":"Path 90"}),r.createElement("path",{fill:"#3f3d56",d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14","data-name":"Path 91"}),r.createElement("path",{d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14","data-name":"Path 92",opacity:.1}),r.createElement("ellipse",{cx:544,cy:30,fill:"#3f3d56","data-name":"Ellipse 18",rx:544,ry:30,transform:"translate(0 583.962)"}),r.createElement("path",{fill:"#ff6584",d:"M568 571.962c0 33.137-14.775 24-33 24s-33 9.137-33-24 33-96 33-96 33 62.863 33 96","data-name":"Path 93"}),r.createElement("path",{d:"M550 584.641c0 15.062-6.716 10.909-15 10.909s-15 4.153-15-10.909 15-43.636 15-43.636 15 28.576 15 43.636","data-name":"Path 94",opacity:.1}),r.createElement("rect",{width:92,height:18,fill:"#2f2e41","data-name":"Rectangle 97",rx:9,transform:"translate(489 604.962)"}),r.createElement("rect",{width:92,height:18,fill:"#2f2e41","data-name":"Rectangle 98",rx:9,transform:"translate(489 586.962)"}),r.createElement("path",{fill:"#3f3d56",d:"M137 490.528c0 55.343 34.719 100.126 77.626 100.126","data-name":"Path 95"}),r.createElement("path",{fill:"#6c63ff",d:"M214.626 590.654c0-55.965 38.745-101.251 86.626-101.251","data-name":"Path 96"}),r.createElement("path",{fill:"#6c63ff",d:"M165.125 495.545c0 52.57 22.14 95.109 49.5 95.109","data-name":"Path 97"}),r.createElement("path",{fill:"#3f3d56",d:"M214.626 590.654c0-71.511 44.783-129.377 100.126-129.377","data-name":"Path 98"}),r.createElement("path",{fill:"#a8a8a8",d:"M198.3 591.36s11.009-.339 14.326-2.7 16.934-5.183 17.757-1.395 16.544 18.844 4.115 18.945-28.879-1.936-32.19-3.953-4.008-10.897-4.008-10.897","data-name":"Path 99"}),r.createElement("path",{d:"M234.716 604.89c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7 8.879 4.009 10.9 19.761 4.053 32.19 3.953c3.588-.029 4.827-1.305 4.759-3.2-.498 1.142-1.867 1.855-4.537 1.877","data-name":"Path 100",opacity:.2}),r.createElement("path",{fill:"#3f3d56",d:"M721.429 527.062c0 38.029 23.857 68.8 53.341 68.8","data-name":"Path 101"}),r.createElement("path",{fill:"#6c63ff",d:"M774.769 595.863c0-38.456 26.623-69.575 59.525-69.575","data-name":"Path 102"}),r.createElement("path",{fill:"#6c63ff",d:"M740.755 530.509c0 36.124 15.213 65.354 34.014 65.354","data-name":"Path 103"}),r.createElement("path",{fill:"#3f3d56",d:"M774.769 595.863c0-49.139 30.773-88.9 68.8-88.9","data-name":"Path 104"}),r.createElement("path",{fill:"#a8a8a8",d:"M763.548 596.348s7.565-.233 9.844-1.856 11.636-3.562 12.2-.958 11.368 12.949 2.828 13.018-19.844-1.33-22.119-2.716-2.753-7.488-2.753-7.488","data-name":"Path 105"}),r.createElement("path",{d:"M788.574 605.645c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479 6.1 2.755 7.487 13.579 2.785 22.119 2.716c2.465-.02 3.317-.9 3.27-2.2-.343.788-1.283 1.278-3.118 1.293","data-name":"Path 106",opacity:.2}),r.createElement("path",{fill:"#a8a8a8",d:"M893.813 618.699s11.36-1.729 14.5-4.591 16.89-7.488 18.217-3.667 19.494 17.447 6.633 19.107-30.153 1.609-33.835-.065-5.515-10.784-5.515-10.784","data-name":"Path 107"}),r.createElement("path",{d:"M933.228 628.154c-12.86 1.659-30.153 1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833 9.109 5.516 10.783 20.975 1.725 33.835.065c3.712-.479 4.836-1.956 4.529-3.906-.375 1.246-1.703 2.156-4.466 2.512","data-name":"Path 108",opacity:.2}),r.createElement("path",{fill:"#a8a8a8",d:"M614.26 617.881s9.587-1.459 12.237-3.875 14.255-6.32 15.374-3.095 16.452 14.725 5.6 16.125-25.448 1.358-28.555-.055-4.656-9.1-4.656-9.1","data-name":"Path 109"}),r.createElement("path",{d:"M647.524 625.856c-10.853 1.4-25.448 1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547 7.687 4.655 9.1 17.7 1.456 28.555.055c3.133-.4 4.081-1.651 3.822-3.3-.314 1.057-1.435 1.825-3.767 2.125","data-name":"Path 110",opacity:.2}),r.createElement("path",{fill:"#a8a8a8",d:"M122.389 613.09s7.463-1.136 9.527-3.016 11.1-4.92 11.969-2.409 12.808 11.463 4.358 12.553-19.811 1.057-22.23-.043-3.624-7.085-3.624-7.085","data-name":"Path 111"}),r.createElement("path",{d:"M148.285 619.302c-8.449 1.09-19.811 1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2 5.984 3.624 7.085 13.781 1.133 22.23.043c2.439-.315 3.177-1.285 2.976-2.566-.246.818-1.119 1.416-2.934 1.65","data-name":"Path 112",opacity:.2}),r.createElement("path",{d:"M383.7 601.318c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.118-36.793 93.694-36.793 93.08 6.573 93.08 36.793","data-name":"Path 113",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M383.7 593.881c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.114-36.8 93.69-36.8 93.084 6.576 93.084 36.8","data-name":"Path 114"})),r.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M360.175 475.732h91.791v37.153h-91.791Z","data-name":"Path 40"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M277.126 597.026a21.83 21.83 0 0 1-18.908-10.927 21.829 21.829 0 0 0 18.908 32.782h21.855v-21.855Z","data-name":"Path 41"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"m375.451 481.607 76.514-4.782v-10.928a21.854 21.854 0 0 0-21.855-21.855h-98.347l-2.732-4.735a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.732-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.731-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.735h-.071l-4.526-4.525a3.153 3.153 0 0 0-5.276 1.414l-1.5 5.577-5.674-1.521a3.154 3.154 0 0 0-3.863 3.864l1.52 5.679-5.575 1.494a3.155 3.155 0 0 0-1.416 5.278l4.526 4.526v.07l-4.735 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.727a3.154 3.154 0 0 0 0 5.464l4.735 2.736-4.735 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.735a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.728a3.154 3.154 0 0 0 0 5.464l4.732 2.732a21.854 21.854 0 0 0 21.858 21.855h131.13a21.854 21.854 0 0 0 21.855-21.855v-87.42l-76.514-4.782a11.632 11.632 0 0 1 0-23.219","data-name":"Path 42"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M408.255 618.882h32.782v-43.71h-32.782Z","data-name":"Path 43"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M462.893 591.563a5 5 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858","data-name":"Path 44"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M419.183 553.317h32.782v-21.855h-32.782Z","data-name":"Path 45"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M462.893 545.121a2.732 2.732 0 1 0 0-5.464 3 3 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253q.033-.122.063-.246a3 3 0 0 0 .349.035","data-name":"Path 46"}),r.createElement("path",{fillRule:"evenodd",d:"M320.836 479.556a2.73 2.73 0 0 1-2.732-2.732 8.2 8.2 0 0 0-16.391 0 2.732 2.732 0 0 1-5.464 0 13.66 13.66 0 0 1 27.319 0 2.73 2.73 0 0 1-2.732 2.732","data-name":"Path 47"}),r.createElement("path",{fill:"#ffff50",fillRule:"evenodd",d:"M364.546 618.881h65.565a21.854 21.854 0 0 0 21.855-21.855v-76.492h-65.565a21.854 21.854 0 0 0-21.855 21.855Z","data-name":"Path 48"}),r.createElement("path",{fillRule:"evenodd",d:"M435.596 554.41h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0-54.434h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.652h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m16.369-100.959c-.013 0-.024-.007-.037-.005-3.377.115-4.974 3.492-6.384 6.472-1.471 3.114-2.608 5.139-4.473 5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932 3.053-6.346 5.646-1.5 2.762-2.529 4.442-4.5 4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879 2.606-6.3 4.808-1.5 2.328-2.552 3.746-4.551 3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807 2.153-6.224 3.954-1.346 1.709-2.4 3.062-4.621 2.977a1.094 1.094 0 0 0-.079 2.186c3.3.11 4.967-1.967 6.417-3.81 1.286-1.635 2.4-3.045 4.582-3.12 2.1-.09 3.091 1.218 4.584 3.327 1.417 2 3.026 4.277 6.263 4.394 3.391.114 5.022-2.42 6.467-4.663 1.292-2 2.406-3.734 4.535-3.807 1.959-.073 3.026 1.475 4.529 4.022 1.417 2.4 3.023 5.121 6.324 5.241 3.415.118 5.064-2.863 6.5-5.5 1.245-2.282 2.419-4.437 4.5-4.509 1.959-.046 2.981 1.743 4.492 4.732 1.412 2.79 3.013 5.95 6.365 6.071h.185c3.348 0 4.937-3.36 6.343-6.331 1.245-2.634 2.423-5.114 4.444-5.216Z","data-name":"Path 49"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M342.691 618.882h43.71v-43.71h-43.71Z","data-name":"Path 50"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 2188.845 -1120.376)"},r.createElement("rect",{width:92.361,height:36.462,fill:"#d8d8d8","data-name":"Rectangle 3",rx:2}),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 2",transform:"translate(1.531 23.03)"},r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 4",rx:1,transform:"translate(16.797)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 5",rx:1,transform:"translate(23.12)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 6",rx:1,transform:"translate(29.444)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 7",rx:1,transform:"translate(35.768)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 8",rx:1,transform:"translate(42.091)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 9",rx:1,transform:"translate(48.415)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 10",rx:1,transform:"translate(54.739)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 11",rx:1,transform:"translate(61.063)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 12",rx:1,transform:"translate(67.386)"}),r.createElement("path",{fillRule:"evenodd",d:"M1.093 0h13.425a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0M75 0h13.426a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H75a1.093 1.093 0 0 1-1.093-1.093v-3.15A1.093 1.093 0 0 1 75 0","data-name":"Path 51"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 3",transform:"translate(1.531 10.261)"},r.createElement("path",{fillRule:"evenodd",d:"M1.093 0h5.125A1.093 1.093 0 0 1 7.31 1.093v3.149a1.093 1.093 0 0 1-1.092 1.093H1.093A1.093 1.093 0 0 1 0 4.242V1.093A1.093 1.093 0 0 1 1.093 0","data-name":"Path 52"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 13",rx:1,transform:"translate(8.299)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 14",rx:1,transform:"translate(14.623)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 15",rx:1,transform:"translate(20.947)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 16",rx:1,transform:"translate(27.271)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 17",rx:1,transform:"translate(33.594)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 18",rx:1,transform:"translate(39.918)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 19",rx:1,transform:"translate(46.242)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 20",rx:1,transform:"translate(52.565)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 21",rx:1,transform:"translate(58.888)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 22",rx:1,transform:"translate(65.212)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 23",rx:1,transform:"translate(71.536)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 24",rx:1,transform:"translate(77.859)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 25",rx:1,transform:"translate(84.183)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 4",transform:"rotate(180 45.525 4.773)"},r.createElement("path",{fillRule:"evenodd",d:"M1.093 0h5.126a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0","data-name":"Path 53"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 26",rx:1,transform:"translate(8.299)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 27",rx:1,transform:"translate(14.623)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 28",rx:1,transform:"translate(20.947)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 29",rx:1,transform:"translate(27.271)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 30",rx:1,transform:"translate(33.594)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 31",rx:1,transform:"translate(39.918)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 32",rx:1,transform:"translate(46.242)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 33",rx:1,transform:"translate(52.565)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 34",rx:1,transform:"translate(58.889)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 35",rx:1,transform:"translate(65.213)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 36",rx:1,transform:"translate(71.537)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 37",rx:1,transform:"translate(77.86)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 38",rx:1,transform:"translate(84.183)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 39",rx:1,transform:"translate(8.299)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 40",rx:1,transform:"translate(14.623)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 41",rx:1,transform:"translate(20.947)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 42",rx:1,transform:"translate(27.271)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 43",rx:1,transform:"translate(33.594)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 44",rx:1,transform:"translate(39.918)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 45",rx:1,transform:"translate(46.242)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 46",rx:1,transform:"translate(52.565)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 47",rx:1,transform:"translate(58.889)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 48",rx:1,transform:"translate(65.213)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 49",rx:1,transform:"translate(71.537)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 50",rx:1,transform:"translate(77.86)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 51",rx:1,transform:"translate(84.183)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 6"},r.createElement("path",{fillRule:"evenodd",d:"M2.624 16.584h7.3a1.093 1.093 0 0 1 1.092 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093h-7.3a1.093 1.093 0 0 1-1.092-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094","data-name":"Path 54"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(12.202 16.584)"},r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 52",rx:1}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 53",rx:1,transform:"translate(6.324)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 54",rx:1,transform:"translate(12.647)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 55",rx:1,transform:"translate(18.971)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 56",rx:1,transform:"translate(25.295)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 57",rx:1,transform:"translate(31.619)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 58",rx:1,transform:"translate(37.942)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 59",rx:1,transform:"translate(44.265)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 60",rx:1,transform:"translate(50.589)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 61",rx:1,transform:"translate(56.912)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 62",rx:1,transform:"translate(63.236)"})),r.createElement("path",{fillRule:"evenodd",d:"M83.053 16.584h6.906a1.093 1.093 0 0 1 1.091 1.093v3.15a1.093 1.093 0 0 1-1.091 1.093h-6.907a1.093 1.093 0 0 1-1.093-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094Z","data-name":"Path 55"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 7",transform:"translate(1.531 29.627)"},r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 63",rx:1}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 64",rx:1,transform:"translate(6.324)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 65",rx:1,transform:"translate(12.647)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 66",rx:1,transform:"translate(18.971)"}),r.createElement("path",{fillRule:"evenodd",d:"M26.387 0h30.422a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093H26.387a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 26.387 0m33.594 0h3.942a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093h-3.942a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 59.981 0","data-name":"Path 56"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 67",rx:1,transform:"translate(66.003)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 68",rx:1,transform:"translate(72.327)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 69",rx:1,transform:"translate(84.183)"}),r.createElement("path",{d:"M78.254 2.273v-1.18A1.093 1.093 0 0 1 79.347 0h3.15a1.093 1.093 0 0 1 1.093 1.093v1.18Z","data-name":"Path 57"}),r.createElement("path",{d:"M83.591 3.063v1.18a1.093 1.093 0 0 1-1.093 1.093h-3.15a1.093 1.093 0 0 1-1.093-1.093v-1.18Z","data-name":"Path 58"})),r.createElement("rect",{width:88.927,height:2.371,fill:"#4a4a4a","data-name":"Rectangle 70",rx:1.085,transform:"translate(1.925 1.17)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 71",opacity:.136,rx:.723,transform:"translate(4.1 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 72",opacity:.136,rx:.723,transform:"translate(10.923 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 73",opacity:.136,rx:.723,transform:"translate(16.173 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 74",opacity:.136,rx:.723,transform:"translate(21.421 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 75",opacity:.136,rx:.723,transform:"translate(26.671 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 76",opacity:.136,rx:.723,transform:"translate(33.232 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 77",opacity:.136,rx:.723,transform:"translate(38.48 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 78",opacity:.136,rx:.723,transform:"translate(43.73 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 79",opacity:.136,rx:.723,transform:"translate(48.978 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 80",opacity:.136,rx:.723,transform:"translate(55.54 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 81",opacity:.136,rx:.723,transform:"translate(60.788 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 82",opacity:.136,rx:.723,transform:"translate(66.038 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 83",opacity:.136,rx:.723,transform:"translate(72.599 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 84",opacity:.136,rx:.723,transform:"translate(77.847 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 85",opacity:.136,rx:.723,transform:"translate(83.097 1.566)"})),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M408.256 591.563a5.4 5.4 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858","data-name":"Path 59"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M342.691 553.317h43.71v-21.855h-43.71Z","data-name":"Path 60"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M397.328 545.121a2.732 2.732 0 1 0 0-5.464 3 3 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253q.033-.122.063-.246a3 3 0 0 0 .349.035","data-name":"Path 61"}),r.createElement("path",{fillRule:"evenodd",d:"M408.256 464.531a3 3 0 0 1-.535-.055 2.8 2.8 0 0 1-.514-.153 3 3 0 0 1-.471-.251 4 4 0 0 1-.415-.339 3 3 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.517 3 3 0 0 1 .055-.535 3 3 0 0 1 .152-.514 3 3 0 0 1 .252-.47 2.6 2.6 0 0 1 .753-.754 3 3 0 0 1 .471-.251 2.8 2.8 0 0 1 .514-.153 2.5 2.5 0 0 1 1.071 0 2.7 2.7 0 0 1 .983.4 4 4 0 0 1 .415.339 4 4 0 0 1 .339.415 3 3 0 0 1 .251.47 2.9 2.9 0 0 1 .208 1.049 2.77 2.77 0 0 1-.8 1.934 4 4 0 0 1-.415.339 2.72 2.72 0 0 1-1.519.459m21.855-1.366a2.8 2.8 0 0 1-1.935-.8 4 4 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.519 2.8 2.8 0 0 1 .8-1.934 4 4 0 0 1 .415-.339 3 3 0 0 1 .471-.251 2.8 2.8 0 0 1 .514-.153 2.5 2.5 0 0 1 1.071 0 2.7 2.7 0 0 1 .983.4 4 4 0 0 1 .415.339 2.8 2.8 0 0 1 .8 1.934 3 3 0 0 1-.055.535 3 3 0 0 1-.153.514 4 4 0 0 1-.251.47 4 4 0 0 1-.339.415 4 4 0 0 1-.415.339 2.72 2.72 0 0 1-1.519.459","data-name":"Path 62"}))))}},6740:(e,a,t)=>{t.d(a,{A:()=>c});var l,r=t(6540);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var l in t)({}).hasOwnProperty.call(t,l)&&(e[l]=t[l])}return e},n.apply(null,arguments)}const c=e=>{let{title:a,titleId:t,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1041.277,height:554.141,viewBox:"0 0 1041.277 554.141","aria-labelledby":t},c),void 0===a?r.createElement("title",{id:t},"Powered by React"):a?r.createElement("title",{id:t},a):null,l||(l=r.createElement("g",{"data-name":"Group 24"},r.createElement("g",{"data-name":"Group 23",transform:"translate(-.011 -.035)"},r.createElement("path",{fill:"#f2f2f2",d:"M961.48 438.21q-1.74 3.75-3.47 7.4-2.7 5.67-5.33 11.12c-.78 1.61-1.56 3.19-2.32 4.77-8.6 17.57-16.63 33.11-23.45 45.89a73.21 73.21 0 0 1-63.81 38.7l-151.65 1.65h-1.6l-13 .14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107 1.16-95.51 1-11.11.12-69 .75h-.08l-44.75.48h-.48l-141.5 1.53-42.33.46a88 88 0 0 1-10.79-.54c-1.22-.14-2.44-.3-3.65-.49a87.38 87.38 0 0 1-51.29-27.54c-18.21-20.03-31.46-43.4-40.36-68.76q-1.93-5.49-3.6-11.12c-30.81-104.15 6.75-238.52 74.35-328.44q4.25-5.64 8.64-11l.07-.08c20.79-25.52 44.1-46.84 68.93-62 44-26.91 92.75-34.49 140.7-11.9 40.57 19.12 78.45 28.11 115.17 30.55 3.71.24 7.42.42 11.11.53 84.23 2.65 163.17-27.7 255.87-47.29 3.69-.78 7.39-1.55 11.12-2.28C763 .54 836.36-6.4 923.6 8.19a189 189 0 0 1 26.76 6.4q5.77 1.86 11.12 4c41.64 16.94 64.35 48.24 74 87.46q1.37 5.46 2.37 11.11c17.11 94.34-33 228.16-76.37 321.05","data-name":"Path 299"}),r.createElement("path",{d:"M497.02 445.61a95 95 0 0 1-1.87 11.12h93.7v-11.12Zm-78.25 62.81 11.11-.09v-27.47c-3.81-.17-7.52-.34-11.11-.52Zm-232.92-62.81v11.12h198.5v-11.12Zm849.68-339.52h-74V18.6q-5.35-2.17-11.12-4v91.49H696.87V13.67c-3.73.73-7.43 1.5-11.12 2.28v90.14H429.88V63.24c-3.69-.11-7.4-.29-11.11-.53v43.38H162.9v-62c-24.83 15.16-48.14 36.48-68.93 62h-.07v.08q-4.4 5.4-8.64 11h8.64v328.44h-83q1.66 5.63 3.6 11.12h79.39v93.62a87 87 0 0 0 12.2 2.79c1.21.19 2.43.35 3.65.49a88 88 0 0 0 10.79.54l42.33-.46v-97h255.91v94.21l11.11-.12v-94.07h255.87v91.36l11.12-.12v-91.24h253.49v4.77c.76-1.58 1.54-3.16 2.32-4.77q2.63-5.45 5.33-11.12 1.73-3.64 3.47-7.4v-321h76.42q-1.01-5.69-2.37-11.12M162.9 445.61V117.17h255.87v328.44Zm267 0V117.17h255.85v328.44Zm520.48 0H696.87V117.17h253.49Z","data-name":"Path 300",opacity:.1}),r.createElement("path",{fill:"#65617d",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z","data-name":"Path 301"}),r.createElement("path",{d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z","data-name":"Path 302",opacity:.2}),r.createElement("path",{fill:"#3f3d56",d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z","data-name":"Path 303"}),r.createElement("path",{d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z","data-name":"Path 304",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M298.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z","data-name":"Path 305"}),r.createElement("path",{fill:"#3f3d56",d:"M680.92 483.65h47.17v31.5h-47.17z","data-name":"Rectangle 137"}),r.createElement("path",{d:"M680.92 483.65h47.17v31.5h-47.17z","data-name":"Rectangle 138",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M678.92 483.65h47.17v31.5h-47.17z","data-name":"Rectangle 139"}),r.createElement("path",{d:"M298.09 483.65v4.97l-47.17 1.26v-6.23Z","data-name":"Path 306",opacity:.1}),r.createElement("path",{fill:"#65617d",d:"M381.35 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95","data-name":"Path 307"}),r.createElement("path",{d:"M185.85 308.41v181.2h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95Z","data-name":"Path 308",opacity:.1}),r.createElement("path",{fill:"#39374d",d:"M194.59 319.15h177.5V467.4l-177.5 4Z","data-name":"Path 309"}),r.createElement("path",{d:"M726.09 483.65v6.41l-47.17-1.26v-5.15Z","data-name":"Path 310",opacity:.1}),r.createElement("path",{fill:"#65617d",d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95l-191.69-5.1a4 4 0 0 1-3.85-3.95v-168.2a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.99 3.95","data-name":"Path 311"}),r.createElement("path",{d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95v-181.2a4 4 0 0 1 4 3.95","data-name":"Path 312",opacity:.1}),r.createElement("path",{fill:"#39374d",d:"M775.59 319.15h-177.5V467.4l177.5 4Z","data-name":"Path 313"}),r.createElement("path",{fill:"#65617d",d:"M583.85 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1a4 4 0 0 1-4-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95","data-name":"Path 314"}),r.createElement("path",{fill:"#4267b2",d:"M397.09 319.15h177.5V467.4l-177.5 4Z","data-name":"Path 315"}),r.createElement("path",{d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5 4.4-.02.98-.01Z","data-name":"Path 316",opacity:.1}),r.createElement("circle",{cx:51.33,cy:51.33,r:51.33,fill:"#fbbebe","data-name":"Ellipse 111",transform:"translate(435.93 246.82)"}),r.createElement("path",{fill:"#fbbebe",d:"M538.6 377.16s-99.5 12-90 0c3.44-4.34 4.39-17.2 4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41 77-8.5c-4 13.13-2.69 31.57.35 48.88.89 5.05 1.92 10 3 14.7a345 345 0 0 0 9.65 33.92","data-name":"Path 317"}),r.createElement("path",{fill:"#ff6584",d:"M506.13 373.09c11.51-2.13 23.7-6 34.53-1.54 2.85 1.17 5.47 2.88 8.39 3.86s6.12 1.22 9.16 1.91c10.68 2.42 19.34 10.55 24.9 20s8.44 20.14 11.26 30.72l6.9 25.83c6 22.45 12 45.09 13.39 68.3a2438 2438 0 0 1-250.84 1.43c5.44-10.34 11-21.31 10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34 6.57-13.39 9.64-20.22 8.75-19.52 1.94-45.79 17.32-60.65 6.92-6.68 17-9.21 26.63-8.89 12.28.41 24.85 4.24 37 6.11 15.56 2.36 30.26 3.76 45.94.88","data-name":"Path 318"}),r.createElement("path",{d:"m637.03 484.26-.1 1.43v.1l-.17 2.3-1.33 18.51-1.61 22.3-.46 6.28-1 13.44v.17l-107 1-175.59 1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53 10.53 0 0 1 11.42-10.17c4.72.4 10.85.89 18.18 1.41l3 .22c42.33 2.94 120.56 6.74 199.5 2 1.66-.09 3.33-.19 5-.31 12.24-.77 24.47-1.76 36.58-3a10.53 10.53 0 0 1 11.6 11.23Z","data-name":"Path 319",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M349.74 552.53v-.84l175.62-1.91 107-1h.3v-.17l1-13.44.43-6 1.64-22.61 1.29-17.9v-.44a10.6 10.6 0 0 0-.11-2.47.3.3 0 0 0 0-.1 10.4 10.4 0 0 0-2-4.64 10.54 10.54 0 0 0-9.42-4 937 937 0 0 1-36.58 3c-1.67.12-3.34.22-5 .31-78.94 4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54 10.54 0 0 0-11.24 8.53 11 11 0 0 0-.18 1.64l-.68 22.16-.93 28.07-.44 14.36v1.12Z","data-name":"Path 320"}),r.createElement("path",{d:"m637.33 491.27-1.23 15.33-1.83 22.85-.46 5.72-1 12.81-.06.64v.17l-.15 1.48.11-1.48h-.29l-107 1-175.65 1.9v-.28l.49-14.36 1-28.06.64-18.65a6.36 6.36 0 0 1 3.06-5.25 6.25 6.25 0 0 1 3.78-.9c2.1.17 4.68.37 7.69.59 4.89.36 10.92.78 17.94 1.22 13 .82 29.31 1.7 48 2.42 52 2 122.2 2.67 188.88-3.17 3-.26 6.1-.55 9.13-.84a6.26 6.26 0 0 1 3.48.66 5 5 0 0 1 .86.54 6.14 6.14 0 0 1 2 2.46 3.6 3.6 0 0 1 .25.61 6.3 6.3 0 0 1 .36 2.59","data-name":"Path 321",opacity:.1}),r.createElement("path",{d:"M298.1 504.96v3.19a6.13 6.13 0 0 1-3.5 5.54l-40.1.77a6.12 6.12 0 0 1-3.57-5.57v-3Z","data-name":"Path 322",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z","data-name":"Path 323"}),r.createElement("path",{d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z","data-name":"Path 324",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"m300.59 515.57-52.25 1v-8.67l52.25-1Z","data-name":"Path 325"}),r.createElement("path",{d:"M679.22 506.96v3.19a6.13 6.13 0 0 0 3.5 5.54l40.1.77a6.12 6.12 0 0 0 3.57-5.57v-3Z","data-name":"Path 326",opacity:.1}),r.createElement("path",{d:"m678.72 517.57 52.25 1v-8.67l-52.25-1Z","data-name":"Path 327",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"m676.72 517.57 52.25 1v-8.67l-52.25-1Z","data-name":"Path 328"}),r.createElement("path",{fill:"#3f3d56",d:"M454.79 313.88c.08 7-3.16 13.6-5.91 20.07a163.5 163.5 0 0 0-12.66 74.71c.73 11 2.58 22 .73 32.9s-8.43 21.77-19 24.9c17.53 10.45 41.26 9.35 57.76-2.66 8.79-6.4 15.34-15.33 21.75-24.11a97.86 97.86 0 0 1-13.31 44.75 103.43 103.43 0 0 0 73.51-40.82c4.31-5.81 8.06-12.19 9.72-19.23 3.09-13-1.22-26.51-4.51-39.5a266 266 0 0 1-6.17-33c-.43-3.56-.78-7.22.1-10.7 1-4.07 3.67-7.51 5.64-11.22 5.6-10.54 5.73-23.3 2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47 1.48-16.14 8.32-22 15.34-4.59 5.46-15.81 15.71-16.6 22.86-.72 6.59 5.1 17.63 6.09 24.58 1.3 9 2.22 6 7.3 11.52 3.21 3.42 5.28 7.37 5.34 12.16","data-name":"Path 329"})),r.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M280.139 370.832h43.635v17.662h-43.635Z","data-name":"Path 40"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M240.66 428.493a10.38 10.38 0 0 1-8.989-5.195 10.377 10.377 0 0 0 8.988 15.584h10.391v-10.389Z","data-name":"Path 41"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"m287.402 373.625 36.373-2.273v-5.195a10.39 10.39 0 0 0-10.39-10.389h-46.75l-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249h-.034l-2.152-2.151a1.5 1.5 0 0 0-2.508.672l-.696 2.653-2.7-.723a1.5 1.5 0 0 0-1.836 1.837l.722 2.7-2.65.71a1.5 1.5 0 0 0-.673 2.509l2.152 2.152v.033l-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.25 1.282-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3a10.39 10.39 0 0 0 10.389 10.34h62.335a10.39 10.39 0 0 0 10.39-10.39v-41.557l-36.373-2.273a5.53 5.53 0 0 1 0-11.038","data-name":"Path 42"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M302.996 438.882h15.584v-20.779h-15.584Z","data-name":"Path 43"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M328.97 425.895a3 3 0 0 0-.332.033q-.028-.117-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569q-.115-.031-.231-.06a2.6 2.6 0 1 0-5.128 0q-.116.029-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161","data-name":"Path 44"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M308.191 407.713h15.584v-10.389h-15.584Z","data-name":"Path 45"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M328.969 403.818a1.3 1.3 0 1 0 0-2.6 1 1 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.3 1.3 0 0 0-.783.269l-.087-.087a1.3 1.3 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.3 1.3 0 0 0-.263-.776l.087-.087a1.3 1.3 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5q.016-.058.03-.117a1 1 0 0 0 .166.017","data-name":"Path 46"}),r.createElement("path",{fillRule:"evenodd",d:"M261.439 372.65a1.3 1.3 0 0 1-1.3-1.3 3.9 3.9 0 0 0-7.792 0 1.3 1.3 0 1 1-2.6 0 6.494 6.494 0 0 1 12.987 0 1.3 1.3 0 0 1-1.3 1.3","data-name":"Path 47"}),r.createElement("path",{fill:"#ffff50",fillRule:"evenodd",d:"M282.217 438.882h31.168a10.39 10.39 0 0 0 10.389-10.389V392.13h-31.168a10.39 10.39 0 0 0-10.389 10.389Z","data-name":"Path 48"}),r.createElement("path",{fillRule:"evenodd",d:"M315.993 408.233h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0-25.877h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.293h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m7.782-47.993h-.018c-1.605.055-2.365 1.66-3.035 3.077-.7 1.48-1.24 2.443-2.126 2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344 1.451-3.017 2.684-.715 1.313-1.2 2.112-2.141 2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319 1.239-2.994 2.286-.713 1.106-1.213 1.781-2.164 1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.82 3.82 0 0 0-2.959 1.879c-.64.812-1.14 1.456-2.2 1.415a.52.52 0 0 0-.037 1.039 3.59 3.59 0 0 0 3.05-1.811c.611-.777 1.139-1.448 2.178-1.483 1-.043 1.47.579 2.179 1.582.674.953 1.438 2.033 2.977 2.089 1.612.054 2.387-1.151 3.074-2.217.614-.953 1.144-1.775 2.156-1.81.931-.035 1.438.7 2.153 1.912.674 1.141 1.437 2.434 3.006 2.491 1.623.056 2.407-1.361 3.09-2.616.592-1.085 1.15-2.109 2.14-2.143.931-.022 1.417.829 2.135 2.249.671 1.326 1.432 2.828 3.026 2.886h.088c1.592 0 2.347-1.6 3.015-3.01.592-1.252 1.152-2.431 2.113-2.479Z","data-name":"Path 49"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M271.828 438.882h20.779v-20.779h-20.779Z","data-name":"Path 50"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 1643.944 -873.93)"},r.createElement("rect",{width:43.906,height:17.333,fill:"#d8d8d8","data-name":"Rectangle 3",rx:2}),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 2",transform:"translate(.728 10.948)"},r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 4",rx:1,transform:"translate(7.985)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 5",rx:1,transform:"translate(10.991)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 6",rx:1,transform:"translate(13.997)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 7",rx:1,transform:"translate(17.003)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 8",rx:1,transform:"translate(20.009)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 9",rx:1,transform:"translate(23.015)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 10",rx:1,transform:"translate(26.021)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 11",rx:1,transform:"translate(29.028)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 12",rx:1,transform:"translate(32.034)"}),r.createElement("path",{fillRule:"evenodd",d:"M.519 0H6.9a.52.52 0 0 1 .521.52v1.5a.52.52 0 0 1-.519.519H.519A.52.52 0 0 1 0 2.017V.519A.52.52 0 0 1 .519 0m35.134 0h6.383a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-6.384a.52.52 0 0 1-.519-.519v-1.5A.52.52 0 0 1 35.652 0Z","data-name":"Path 51"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 3",transform:"translate(.728 4.878)"},r.createElement("path",{fillRule:"evenodd",d:"M.519 0h2.437a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519H.519A.52.52 0 0 1 0 2.017V.519A.52.52 0 0 1 .519 0","data-name":"Path 52"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 13",rx:1,transform:"translate(3.945)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 14",rx:1,transform:"translate(6.951)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 15",rx:1,transform:"translate(9.958)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 16",rx:1,transform:"translate(12.964)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 17",rx:1,transform:"translate(15.97)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 18",rx:1,transform:"translate(18.976)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 19",rx:1,transform:"translate(21.982)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 20",rx:1,transform:"translate(24.988)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 21",rx:1,transform:"translate(27.994)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 22",rx:1,transform:"translate(31)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 23",rx:1,transform:"translate(34.006)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 24",rx:1,transform:"translate(37.012)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 25",rx:1,transform:"translate(40.018)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 4",transform:"rotate(180 21.642 2.269)"},r.createElement("path",{fillRule:"evenodd",d:"M.519 0h2.437a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519H.519A.52.52 0 0 1 0 2.017V.519A.52.52 0 0 1 .519 0","data-name":"Path 53"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 26",rx:1,transform:"translate(3.945)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 27",rx:1,transform:"translate(6.951)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 28",rx:1,transform:"translate(9.958)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 29",rx:1,transform:"translate(12.964)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 30",rx:1,transform:"translate(15.97)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 31",rx:1,transform:"translate(18.976)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 32",rx:1,transform:"translate(21.982)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 33",rx:1,transform:"translate(24.988)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 34",rx:1,transform:"translate(27.994)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 35",rx:1,transform:"translate(31.001)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 36",rx:1,transform:"translate(34.007)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 37",rx:1,transform:"translate(37.013)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 38",rx:1,transform:"translate(40.018)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 39",rx:1,transform:"translate(3.945)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 40",rx:1,transform:"translate(6.951)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 41",rx:1,transform:"translate(9.958)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 42",rx:1,transform:"translate(12.964)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 43",rx:1,transform:"translate(15.97)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 44",rx:1,transform:"translate(18.976)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 45",rx:1,transform:"translate(21.982)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 46",rx:1,transform:"translate(24.988)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 47",rx:1,transform:"translate(27.994)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 48",rx:1,transform:"translate(31.001)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 49",rx:1,transform:"translate(34.007)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 50",rx:1,transform:"translate(37.013)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 51",rx:1,transform:"translate(40.018)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 6"},r.createElement("path",{fillRule:"evenodd",d:"M1.247 7.883h3.47a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-3.47A.52.52 0 0 1 .728 9.9V8.403a.52.52 0 0 1 .519-.52","data-name":"Path 54"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(5.801 7.883)"},r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 52",rx:1}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 53",rx:1,transform:"translate(3.006)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 54",rx:1,transform:"translate(6.012)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 55",rx:1,transform:"translate(9.018)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 56",rx:1,transform:"translate(12.025)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 57",rx:1,transform:"translate(15.031)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 58",rx:1,transform:"translate(18.037)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 59",rx:1,transform:"translate(21.042)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 60",rx:1,transform:"translate(24.049)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 61",rx:1,transform:"translate(27.055)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 62",rx:1,transform:"translate(30.061)"})),r.createElement("path",{fillRule:"evenodd",d:"M39.482 7.883h3.28a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-3.281a.52.52 0 0 1-.519-.521V8.403a.52.52 0 0 1 .519-.52Z","data-name":"Path 55"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 7",transform:"translate(.728 14.084)"},r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 63",rx:1}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 64",rx:1,transform:"translate(3.006)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 65",rx:1,transform:"translate(6.012)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 66",rx:1,transform:"translate(9.018)"}),r.createElement("path",{fillRule:"evenodd",d:"M12.543 0h14.462a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519H12.543a.52.52 0 0 1-.519-.52V.519A.52.52 0 0 1 12.543 0m15.97 0h1.874a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-1.874a.52.52 0 0 1-.519-.519v-1.5A.52.52 0 0 1 28.513 0","data-name":"Path 56"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 67",rx:1,transform:"translate(31.376)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 68",rx:1,transform:"translate(34.382)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 69",rx:1,transform:"translate(40.018)"}),r.createElement("path",{d:"M37.199 1.08V.519A.52.52 0 0 1 37.718 0h1.499a.52.52 0 0 1 .519.519v.561Z","data-name":"Path 57"}),r.createElement("path",{d:"M39.737 1.456v.561a.52.52 0 0 1-.519.519h-1.499a.52.52 0 0 1-.519-.519v-.561Z","data-name":"Path 58"})),r.createElement("rect",{width:42.273,height:1.127,fill:"#4a4a4a","data-name":"Rectangle 70",rx:.564,transform:"translate(.915 .556)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 71",opacity:.136,rx:.376,transform:"translate(1.949 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 72",opacity:.136,rx:.376,transform:"translate(5.193 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 73",opacity:.136,rx:.376,transform:"translate(7.688 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 74",opacity:.136,rx:.376,transform:"translate(10.183 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 75",opacity:.136,rx:.376,transform:"translate(12.679 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 76",opacity:.136,rx:.376,transform:"translate(15.797 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 77",opacity:.136,rx:.376,transform:"translate(18.292 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 78",opacity:.136,rx:.376,transform:"translate(20.788 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 79",opacity:.136,rx:.376,transform:"translate(23.283 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 80",opacity:.136,rx:.376,transform:"translate(26.402 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 81",opacity:.136,rx:.376,transform:"translate(28.897 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 82",opacity:.136,rx:.376,transform:"translate(31.393 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 83",opacity:.136,rx:.376,transform:"translate(34.512 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 84",opacity:.136,rx:.376,transform:"translate(37.007 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 85",opacity:.136,rx:.376,transform:"translate(39.502 .744)"})),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M302.996 425.895a3 3 0 0 0-.332.033q-.029-.117-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569q-.116-.031-.231-.06a2.6 2.6 0 1 0-5.128 0q-.115.029-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161","data-name":"Path 59"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M271.828 407.713h20.779v-10.389h-20.779Z","data-name":"Path 60"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M297.801 403.818a1.3 1.3 0 1 0 0-2.6 1 1 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.3 1.3 0 0 0-.783.269l-.087-.087a1.3 1.3 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.3 1.3 0 0 0-.263-.776l.087-.087a1.3 1.3 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5q.016-.058.03-.117a1 1 0 0 0 .166.017","data-name":"Path 61"}),r.createElement("path",{fillRule:"evenodd",d:"M302.997 365.507a1.4 1.4 0 0 1-.255-.026 1.3 1.3 0 0 1-.244-.073 1.4 1.4 0 0 1-.224-.119 2 2 0 0 1-.2-.161 1.5 1.5 0 0 1-.161-.2 1.3 1.3 0 0 1-.218-.722 1.4 1.4 0 0 1 .026-.255 1.5 1.5 0 0 1 .072-.244 1.4 1.4 0 0 1 .12-.223 1.3 1.3 0 0 1 .358-.358 1.4 1.4 0 0 1 .224-.119 1.3 1.3 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.3 1.3 0 0 1 .468.192 2 2 0 0 1 .2.161 2 2 0 0 1 .161.2 1.3 1.3 0 0 1 .12.223 1.4 1.4 0 0 1 .1.5 1.32 1.32 0 0 1-.379.919 2 2 0 0 1-.2.161 1.4 1.4 0 0 1-.223.119 1.3 1.3 0 0 1-.5.1m10.389-.649a1.33 1.33 0 0 1-.92-.379 2 2 0 0 1-.161-.2 1.3 1.3 0 0 1-.218-.722 1.33 1.33 0 0 1 .379-.919 2 2 0 0 1 .2-.161 1.4 1.4 0 0 1 .224-.119 1.3 1.3 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.3 1.3 0 0 1 .468.192 2 2 0 0 1 .2.161 1.33 1.33 0 0 1 .379.919 1.5 1.5 0 0 1-.026.255 1.3 1.3 0 0 1-.073.244 2 2 0 0 1-.119.223 2 2 0 0 1-.161.2 2 2 0 0 1-.2.161 1.3 1.3 0 0 1-.722.218","data-name":"Path 62"}),r.createElement("g",{fill:"#61dafb",transform:"translate(466.3 278.56)"},r.createElement("path",{d:"M263.668 117.179c0-5.827-7.3-11.35-18.487-14.775 2.582-11.4 1.434-20.477-3.622-23.382a7.86 7.86 0 0 0-4.016-1v4a4.15 4.15 0 0 1 2.044.466c2.439 1.4 3.5 6.724 2.672 13.574-.2 1.685-.52 3.461-.914 5.272a87 87 0 0 0-11.386-1.954 87.5 87.5 0 0 0-7.459-8.965c5.845-5.433 11.332-8.41 15.062-8.41V78c-4.931 0-11.386 3.514-17.913 9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712 0 9.216 2.959 15.062 8.356a85 85 0 0 0-7.405 8.947 84 84 0 0 0-11.4 1.972 54 54 0 0 1-.932-5.2c-.843-6.85.2-12.175 2.618-13.592a4 4 0 0 1 2.062-.466v-4a8 8 0 0 0-4.052 1c-5.039 2.9-6.168 11.96-3.568 23.328-11.153 3.443-18.415 8.947-18.415 14.757 0 5.828 7.3 11.35 18.487 14.775-2.582 11.4-1.434 20.477 3.622 23.382a7.9 7.9 0 0 0 4.034 1c4.931 0 11.386-3.514 17.913-9.611 6.527 6.061 12.982 9.539 17.913 9.539a8 8 0 0 0 4.052-1c5.039-2.9 6.168-11.96 3.568-23.328 11.111-3.42 18.373-8.943 18.373-14.752m-23.346-11.96a80 80 0 0 1-2.421 7.083 83 83 0 0 0-2.349-4.3 97 97 0 0 0-2.582-4.2c2.547.377 5.004.843 7.353 1.417Zm-8.212 19.1c-1.4 2.421-2.833 4.716-4.321 6.85a93 93 0 0 1-8.1.359c-2.708 0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136a94 94 0 0 1 3.712-7.154c1.4-2.421 2.833-4.716 4.321-6.85a93 93 0 0 1 8.1-.359c2.708 0 5.415.126 8.069.341q2.232 3.2 4.339 6.814 2.044 3.523 3.73 7.136a101 101 0 0 1-3.712 7.15Zm5.792-2.331a77 77 0 0 1 2.474 7.136 80 80 0 0 1-7.387 1.434c.879-1.381 1.757-2.8 2.582-4.25a96 96 0 0 0 2.329-4.324Zm-18.182 19.128a74 74 0 0 1-4.985-5.738c1.614.072 3.263.126 4.931.126 1.685 0 3.353-.036 4.985-.126a70 70 0 0 1-4.931 5.738m-13.34-10.561c-2.546-.377-5-.843-7.352-1.417a80 80 0 0 1 2.421-7.083c.735 1.434 1.506 2.869 2.349 4.3s1.702 2.837 2.582 4.2m13.25-37.314a74 74 0 0 1 4.985 5.738 111 111 0 0 0-4.931-.126c-1.686 0-3.353.036-4.985.126a70 70 0 0 1 4.931-5.738M206.362 103.8a101 101 0 0 0-4.913 8.55 77 77 0 0 1-2.474-7.136 90 90 0 0 1 7.387-1.414m-16.227 22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383 10.454-9.073c1.542-.663 3.228-1.255 4.967-1.811a86 86 0 0 0 4.034 10.92 85 85 0 0 0-3.981 10.866 54 54 0 0 1-5.021-1.826Zm9.647 25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a87 87 0 0 0 11.386 1.954 87.5 87.5 0 0 0 7.459 8.965c-5.845 5.433-11.332 8.41-15.062 8.41a4.3 4.3 0 0 1-2.026-.48Zm42.532-13.663c.843 6.85-.2 12.175-2.618 13.592a4 4 0 0 1-2.062.466c-3.712 0-9.216-2.959-15.062-8.356a85 85 0 0 0 7.405-8.947 84 84 0 0 0 11.4-1.972 50 50 0 0 1 .936 5.22Zm6.9-11.96c-1.542.663-3.228 1.255-4.967 1.811a86 86 0 0 0-4.034-10.92 85 85 0 0 0 3.981-10.866 57 57 0 0 1 5.039 1.829c6.348 2.708 10.454 6.258 10.454 9.073-.017 2.818-4.123 6.386-10.471 9.076Z","data-name":"Path 330"}),r.createElement("path",{d:"M201.718 78.072","data-name":"Path 331"}),r.createElement("circle",{cx:8.194,cy:8.194,r:8.194,"data-name":"Ellipse 112",transform:"translate(211.472 108.984)"}),r.createElement("path",{d:"M237.525 78.018","data-name":"Path 332"})))))}},3844:(e,a,t)=>{t.d(a,{A:()=>k});var l,r,n,c,h,d,m,i,s,f,o,g,E,p,x,v,R,w,u,M,P,y,Z,q,A,b,j,V,H,G,N,O,_,S,z,B,D=t(6540);function F(){return F=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var l in t)({}).hasOwnProperty.call(t,l)&&(e[l]=t[l])}return e},F.apply(null,arguments)}const k=e=>{let{title:a,titleId:t,...k}=e;return D.createElement("svg",F({xmlns:"http://www.w3.org/2000/svg",width:1129,height:663,viewBox:"0 0 1129 663","aria-labelledby":t},k),void 0===a?D.createElement("title",{id:t},"Focus on What Matters"):a?D.createElement("title",{id:t},a):null,l||(l=D.createElement("circle",{cx:321,cy:321,r:321,fill:"#f2f2f2"})),r||(r=D.createElement("ellipse",{cx:559,cy:635.5,fill:"#3f3d56",rx:514,ry:27.5})),n||(n=D.createElement("ellipse",{cx:558,cy:627,opacity:.2,rx:460,ry:22})),c||(c=D.createElement("path",{fill:"#3f3d56",d:"M131 152.5h840v50H131z"})),h||(h=D.createElement("path",{fill:"#3f3d56",d:"M131 608.83a21.67 21.67 0 0 0 21.67 21.67h796.66A21.67 21.67 0 0 0 971 608.83V177.5H131ZM949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67"})),d||(d=D.createElement("path",{d:"M949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67",opacity:.2})),m||(m=D.createElement("circle",{cx:181,cy:147.5,r:13,fill:"#3f3d56"})),i||(i=D.createElement("circle",{cx:217,cy:147.5,r:13,fill:"#3f3d56"})),s||(s=D.createElement("circle",{cx:253,cy:147.5,r:13,fill:"#3f3d56"})),f||(f=D.createElement("rect",{width:337,height:386,x:168,y:213.5,fill:"#606060",rx:5.335})),o||(o=D.createElement("rect",{width:284,height:22,x:603,y:272.5,fill:"#2e8555",rx:5.476})),g||(g=D.createElement("rect",{width:416,height:15,x:537,y:352.5,fill:"#2e8555",rx:5.476})),E||(E=D.createElement("rect",{width:416,height:15,x:537,y:396.5,fill:"#2e8555",rx:5.476})),p||(p=D.createElement("rect",{width:416,height:15,x:537,y:440.5,fill:"#2e8555",rx:5.476})),x||(x=D.createElement("rect",{width:416,height:15,x:537,y:484.5,fill:"#2e8555",rx:5.476})),v||(v=D.createElement("rect",{width:88,height:26,x:865,y:552.5,fill:"#3ecc5f",rx:7.028})),R||(R=D.createElement("path",{fill:"#3f3d56",d:"M1053.103 506.116a30.1 30.1 0 0 0 3.983-15.266c0-13.797-8.544-24.98-19.083-24.98s-19.082 11.183-19.082 24.98a30.1 30.1 0 0 0 3.983 15.266 31.25 31.25 0 0 0 0 30.532 31.25 31.25 0 0 0 0 30.532 31.25 31.25 0 0 0 0 30.532 30.1 30.1 0 0 0-3.983 15.266c0 13.797 8.543 24.981 19.082 24.981s19.083-11.184 19.083-24.98a30.1 30.1 0 0 0-3.983-15.267 31.25 31.25 0 0 0 0-30.532 31.25 31.25 0 0 0 0-30.532 31.25 31.25 0 0 0 0-30.532"})),w||(w=D.createElement("ellipse",{cx:1038.003,cy:460.318,fill:"#3f3d56",rx:19.083,ry:24.981})),u||(u=D.createElement("ellipse",{cx:1038.003,cy:429.786,fill:"#3f3d56",rx:19.083,ry:24.981})),M||(M=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M1109.439 220.845a92 92 0 0 0 7.106-10.461l-50.14-8.235 54.228.403a91.57 91.57 0 0 0 1.746-72.426l-72.755 37.742 67.097-49.321A91.413 91.413 0 1 0 965.75 220.845a91.5 91.5 0 0 0-10.425 16.67l65.087 33.814-69.4-23.292a91.46 91.46 0 0 0 14.738 85.837 91.406 91.406 0 1 0 143.689 0 91.42 91.42 0 0 0 0-113.03"})),P||(P=D.createElement("path",{d:"M946.189 277.36a91 91 0 0 0 19.56 56.514 91.406 91.406 0 1 0 143.69 0c12.25-15.553-163.25-66.774-163.25-56.515",opacity:.1})),y||(y=D.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M330.12 342.936h111.474v45.12H330.12Z"})),Z||(Z=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M229.263 490.241a26.51 26.51 0 0 1-22.963-13.27 26.51 26.51 0 0 0 22.963 39.812h26.541V490.24Z"})),q||(q=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"m348.672 350.07 92.922-5.807v-13.27a26.54 26.54 0 0 0-26.541-26.542H295.616l-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746-3.317-5.746a3.83 3.83 0 0 0-6.636 0l-3.317 5.746-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746c-.03 0-.056.004-.086.004l-5.497-5.495a3.83 3.83 0 0 0-6.407 1.717l-1.817 6.773-6.89-1.847a3.83 3.83 0 0 0-4.691 4.693l1.844 6.891-6.77 1.814a3.832 3.832 0 0 0-1.72 6.41l5.497 5.497q-.002.041-.004.085l-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318a26.54 26.54 0 0 0 26.541 26.542h159.249a26.54 26.54 0 0 0 26.541-26.542V384.075l-92.922-5.807a14.126 14.126 0 0 1 0-28.197"})),A||(A=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M388.511 516.783h39.812V463.7h-39.812Z"})),b||(b=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M454.865 483.606a7 7 0 0 0-.848.085q-.073-.3-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.445-.446a6.624 6.624 0 1 0-11.397-6.564c-.196-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.101 0c-.197.05-.394.097-.59.152a6.628 6.628 0 1 0-11.398 6.564 26.528 26.528 0 1 0 44.232 25.528 6.621 6.621 0 1 0 .848-13.186"})),j||(j=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M401.782 437.158h39.812v-26.541h-39.812Z"})),V||(V=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M454.865 427.205a3.318 3.318 0 0 0 0-6.635 3 3 0 0 0-.424.042c-.026-.1-.049-.199-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.28 3.28 0 0 0-2 .688q-.11-.113-.224-.223a3.3 3.3 0 0 0 .672-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.3 3.3 0 0 0-.672-1.982q.114-.11.223-.223a3.28 3.28 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3 3 0 0 0 .424.042"})),H||(H=D.createElement("path",{fillRule:"evenodd",d:"M282.345 347.581a3.32 3.32 0 0 1-3.317-3.318 9.953 9.953 0 1 0-19.906 0 3.318 3.318 0 1 1-6.636 0 16.588 16.588 0 1 1 33.177 0 3.32 3.32 0 0 1-3.318 3.318"})),G||(G=D.createElement("path",{fill:"#ffff50",fillRule:"evenodd",d:"M335.428 516.783h79.625a26.54 26.54 0 0 0 26.541-26.542v-92.895H361.97a26.54 26.54 0 0 0-26.542 26.542Z"})),N||(N=D.createElement("path",{fillRule:"evenodd",d:"M421.714 438.485h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.541h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0-66.106h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m0 26.294h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m19.88-122.607c-.016 0-.03-.008-.045-.007-4.1.14-6.04 4.241-7.753 7.86-1.786 3.783-3.168 6.242-5.432 6.167-2.506-.09-3.94-2.922-5.458-5.918-1.744-3.443-3.734-7.347-7.913-7.201-4.042.138-5.99 3.708-7.706 6.857-1.828 3.355-3.071 5.394-5.47 5.3-2.557-.093-3.916-2.395-5.488-5.06-1.753-2.967-3.78-6.304-7.878-6.19-3.973.137-5.925 3.166-7.648 5.84-1.822 2.826-3.098 4.549-5.527 4.447-2.618-.093-3.97-2.004-5.535-4.216-1.757-2.486-3.737-5.3-7.823-5.163-3.886.133-5.838 2.615-7.56 4.802-1.634 2.075-2.91 3.718-5.611 3.615a1.328 1.328 0 1 0-.096 2.654c4.004.134 6.032-2.389 7.793-4.628 1.562-1.985 2.91-3.698 5.564-3.789 2.556-.108 3.754 1.48 5.567 4.041 1.721 2.434 3.675 5.195 7.606 5.337 4.118.138 6.099-2.94 7.853-5.663 1.569-2.434 2.923-4.535 5.508-4.624 2.38-.088 3.674 1.792 5.5 4.885 1.722 2.916 3.671 6.22 7.68 6.365 4.147.143 6.15-3.477 7.895-6.682 1.511-2.77 2.938-5.388 5.466-5.475 2.38-.056 3.62 2.116 5.456 5.746 1.714 3.388 3.658 7.226 7.73 7.373l.224.004c4.066 0 5.996-4.08 7.704-7.689 1.511-3.198 2.942-6.21 5.397-6.334Z"})),O||(O=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M308.887 516.783h53.083V463.7h-53.083Z"})),_||(_=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M388.511 483.606a7 7 0 0 0-.848.085c-.05-.2-.098-.4-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.444-.446a6.624 6.624 0 1 0-11.397-6.564c-.197-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.102 0c-.196.05-.394.097-.59.152a6.628 6.628 0 1 0-11.397 6.564 26.528 26.528 0 1 0 44.231 25.528 6.621 6.621 0 1 0 .848-13.186"})),S||(S=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M308.887 437.158h53.083v-26.541h-53.083Z"})),z||(z=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M375.24 427.205a3.318 3.318 0 1 0 0-6.635 3 3 0 0 0-.423.042q-.038-.15-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.28 3.28 0 0 0-2.001.688q-.11-.113-.223-.223a3.3 3.3 0 0 0 .671-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.3 3.3 0 0 0-.671-1.982q.113-.11.223-.223a3.28 3.28 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3 3 0 0 0 .423.042"})),B||(B=D.createElement("path",{fillRule:"evenodd",d:"M388.511 329.334a3.6 3.6 0 0 1-.65-.067 3.3 3.3 0 0 1-.624-.185 3.5 3.5 0 0 1-.572-.306 5 5 0 0 1-.504-.411 4 4 0 0 1-.41-.504 3.28 3.28 0 0 1-.558-1.845 3.6 3.6 0 0 1 .067-.65 4 4 0 0 1 .184-.624 3.5 3.5 0 0 1 .307-.57 3.2 3.2 0 0 1 .914-.916 3.5 3.5 0 0 1 .572-.305 3.3 3.3 0 0 1 .624-.186 3.1 3.1 0 0 1 1.3 0 3.2 3.2 0 0 1 1.195.49 5 5 0 0 1 .504.412 5 5 0 0 1 .411.504 3.4 3.4 0 0 1 .306.571 3.5 3.5 0 0 1 .252 1.274 3.36 3.36 0 0 1-.969 2.349 5 5 0 0 1-.504.411 3.3 3.3 0 0 1-1.845.558m26.542-1.66a3.4 3.4 0 0 1-2.35-.968 5 5 0 0 1-.41-.504 3.28 3.28 0 0 1-.558-1.845 3.39 3.39 0 0 1 .967-2.349 5 5 0 0 1 .505-.411 3.5 3.5 0 0 1 .572-.305 3.3 3.3 0 0 1 .623-.186 3.1 3.1 0 0 1 1.3 0 3.2 3.2 0 0 1 1.195.49 5 5 0 0 1 .504.412 3.4 3.4 0 0 1 .97 2.35 4 4 0 0 1-.067.65 3.4 3.4 0 0 1-.186.623 5 5 0 0 1-.305.57 5 5 0 0 1-.412.505 5 5 0 0 1-.504.412 3.3 3.3 0 0 1-1.844.557"})))}},5579:(e,a,t)=>{t.r(a),t.d(a,{default:()=>E});var l=t(4164),r=t(8774),n=t(4586),c=t(781),h=t(1107);const d={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var m=t(4848);const i=[{title:"Easy to Use",Svg:t(870).A,description:(0,m.jsx)(m.Fragment,{children:"Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly."})},{title:"Focus on What Matters",Svg:t(3844).A,description:(0,m.jsxs)(m.Fragment,{children:["Docusaurus lets you focus on your docs, and we'll do the chores. Go ahead and move your docs into the ",(0,m.jsx)("code",{children:"docs"})," directory."]})},{title:"Powered by React",Svg:t(6740).A,description:(0,m.jsx)(m.Fragment,{children:"Extend or customize your website layout by reusing React. Docusaurus can be extended while reusing the same header and footer."})}];function s(e){let{title:a,Svg:t,description:r}=e;return(0,m.jsxs)("div",{className:(0,l.A)("col col--4"),children:[(0,m.jsx)("div",{className:"text--center",children:(0,m.jsx)(t,{className:d.featureSvg,role:"img"})}),(0,m.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,m.jsx)(h.A,{as:"h3",children:a}),(0,m.jsx)("p",{children:r})]})]})}function f(){return(0,m.jsx)("section",{className:d.features,children:(0,m.jsx)("div",{className:"container",children:(0,m.jsx)("div",{className:"row",children:i.map(((e,a)=>(0,m.jsx)(s,{...e},a)))})})})}const o={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function g(){const{siteConfig:e}=(0,n.A)();return(0,m.jsx)("header",{className:(0,l.A)("hero hero--primary",o.heroBanner),children:(0,m.jsxs)("div",{className:"container",children:[(0,m.jsx)(h.A,{as:"h1",className:"hero__title",children:e.title}),(0,m.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,m.jsx)("div",{className:o.buttons,children:(0,m.jsx)(r.A,{className:"button button--secondary button--lg",to:"/docs/intro",children:"Docusaurus Tutorial - 5min \u23f1\ufe0f"})})]})})}function E(){const{siteConfig:e}=(0,n.A)();return(0,m.jsxs)(c.A,{title:`Hello from ${e.title}`,description:"Description will go into a meta tag in <head />",children:[(0,m.jsx)(g,{}),(0,m.jsx)("main",{children:(0,m.jsx)(f,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/1e4232ab.81526a43.js b/assets/js/1e4232ab.81526a43.js new file mode 100644 index 0000000..6020a48 --- /dev/null +++ b/assets/js/1e4232ab.81526a43.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1953],{3976:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var s=t(4848),r=t(8453);const o={sidebar_position:2},i="Create a Document",a={id:"tutorial-basics/create-a-document",title:"Create a Document",description:"Documents are groups of pages connected through:",source:"@site/docs/tutorial-basics/create-a-document.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-document",permalink:"/docs/tutorial-basics/create-a-document",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2}},c={},l=[{value:"Create your first Doc",id:"create-your-first-doc",level:2},{value:"Configure the Sidebar",id:"configure-the-sidebar",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"create-a-document",children:"Create a Document"}),"\n",(0,s.jsxs)(n.p,{children:["Documents are ",(0,s.jsx)(n.strong,{children:"groups of pages"})," connected through:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["a ",(0,s.jsx)(n.strong,{children:"sidebar"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"previous/next navigation"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"versioning"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"create-your-first-doc",children:"Create your first Doc"}),"\n",(0,s.jsxs)(n.p,{children:["Create a Markdown file at ",(0,s.jsx)(n.code,{children:"docs/hello.md"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-md",metastring:'title="docs/hello.md"',children:"# Hello\n\nThis is my **first Docusaurus document**!\n"})}),"\n",(0,s.jsxs)(n.p,{children:["A new document is now available at ",(0,s.jsx)(n.a,{href:"http://localhost:3000/docs/hello",children:"http://localhost:3000/docs/hello"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configure-the-sidebar",children:"Configure the Sidebar"}),"\n",(0,s.jsxs)(n.p,{children:["Docusaurus automatically ",(0,s.jsx)(n.strong,{children:"creates a sidebar"})," from the ",(0,s.jsx)(n.code,{children:"docs"})," folder."]}),"\n",(0,s.jsx)(n.p,{children:"Add metadata to customize the sidebar label and position:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-md",metastring:'title="docs/hello.md" {1-4}',children:"---\nsidebar_label: 'Hi!'\nsidebar_position: 3\n---\n\n# Hello\n\nThis is my **first Docusaurus document**!\n"})}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to create your sidebar explicitly in ",(0,s.jsx)(n.code,{children:"sidebars.js"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",metastring:'title="sidebars.js"',children:"export default {\n tutorialSidebar: [\n 'intro',\n // highlight-next-line\n 'hello',\n {\n type: 'category',\n label: 'Tutorial',\n items: ['tutorial-basics/create-a-document'],\n },\n ],\n};\n"})})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var s=t(6540);const r={},o=s.createContext(r);function i(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.cb5e65be.js b/assets/js/1f391b9e.cb5e65be.js new file mode 100644 index 0000000..b9ccfe9 --- /dev/null +++ b/assets/js/1f391b9e.cb5e65be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6061],{7973:(e,n,t)=>{t.r(n),t.d(n,{default:()=>f});t(6540);var a=t(4164),s=t(1213),i=t(7559),l=t(781),r=t(5533),c=t(7763),o=t(996),d=t(4336);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};var u=t(4848);function f(e){const{content:n}=e,{metadata:{title:t,editUrl:f,description:v,frontMatter:h,unlisted:g,lastUpdatedBy:x,lastUpdatedAt:p},assets:L}=n,{keywords:j,wrapperClassName:A,hide_table_of_contents:N}=h,C=L.image??h.image,H=!!(f||p||x);return(0,u.jsx)(s.e3,{className:(0,a.A)(A??i.G.wrapper.mdxPages,i.G.page.mdxPage),children:(0,u.jsxs)(l.A,{children:[(0,u.jsx)(s.be,{title:t,description:v,keywords:j,image:C}),(0,u.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,u.jsxs)("div",{className:(0,a.A)("row",m.mdxPageWrapper),children:[(0,u.jsxs)("div",{className:(0,a.A)("col",!N&&"col--8"),children:[g&&(0,u.jsx)(o.A,{}),(0,u.jsx)("article",{children:(0,u.jsx)(r.A,{children:(0,u.jsx)(n,{})})}),H&&(0,u.jsx)(d.A,{className:(0,a.A)("margin-top--sm",i.G.pages.pageFooterEditMetaRow),editUrl:f,lastUpdatedAt:p,lastUpdatedBy:x})]}),!N&&n.toc.length>0&&(0,u.jsx)("div",{className:"col col--2",children:(0,u.jsx)(c.A,{toc:n.toc,minHeadingLevel:h.toc_min_heading_level,maxHeadingLevel:h.toc_max_heading_level})})]})})]})})}},7763:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var a=t(4164),s=t(5195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const r="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function o(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,a.A)(i.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(s.A,{...t,linkClassName:r,linkActiveClassName:c})})}},5195:(e,n,t)=>{t.d(n,{A:()=>h});var a=t(6540),s=t(6342);function i(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const a=t.slice(2,e.level);e.parentIndex=Math.max(...a),t[e.level]=n}));const a=[];return n.forEach((e=>{const{parentIndex:t,...s}=e;t>=0?n[t].children.push(s):a.push(s)})),a}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:a});return function(e){return e.level>=t&&e.level<=a}(e)?[{...e,children:n}]:n}))}function r(e){const n=e.getBoundingClientRect();return n.top===n.bottom?r(e.parentNode):n}function c(e,n){let{anchorTopOffset:t}=n;const a=e.find((e=>r(e).top>=t));if(a){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(r(a))?a:e[e.indexOf(a)-1]??null}return e[e.length-1]??null}function o(){const e=(0,a.useRef)(0),{navbar:{hideOnScroll:n}}=(0,s.p)();return(0,a.useEffect)((()=>{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,a.useRef)(void 0),t=o();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:s,minHeadingLevel:i,maxHeadingLevel:l}=e;function r(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),r=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const a=[];for(let s=n;s<=t;s+=1)a.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:i,maxHeadingLevel:l}),o=c(r,{anchorTopOffset:t.current}),d=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(s),e.classList.add(s),n.current=e):e.classList.remove(s)}(e,e===d)}))}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),()=>{document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}),[e,t])}var m=t(8774),u=t(4848);function f(e){let{toc:n,className:t,linkClassName:a,isChild:s}=e;return n.length?(0,u.jsx)("ul",{className:s?void 0:t,children:n.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(f,{isChild:!0,toc:e.children,className:t,linkClassName:a})]},e.id)))}):null}const v=a.memo(f);function h(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:r="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:m,...f}=e;const h=(0,s.p)(),g=o??h.tableOfContents.minHeadingLevel,x=m??h.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return(0,a.useMemo)((()=>l({toc:i(n),minHeadingLevel:t,maxHeadingLevel:s})),[n,t,s])}({toc:n,minHeadingLevel:g,maxHeadingLevel:x});return d((0,a.useMemo)((()=>{if(r&&c)return{linkClassName:r,linkActiveClassName:c,minHeadingLevel:g,maxHeadingLevel:x}}),[r,c,g,x])),(0,u.jsx)(v,{toc:p,className:t,linkClassName:r,...f})}},996:(e,n,t)=>{t.d(n,{A:()=>f});t(6540);var a=t(4164),s=t(1312),i=t(5260),l=t(4848);function r(){return(0,l.jsx)(s.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function c(){return(0,l.jsx)(s.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function o(){return(0,l.jsx)(i.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),m=t(7293);function u(e){let{className:n}=e;return(0,l.jsx)(m.A,{type:"caution",title:(0,l.jsx)(r,{}),className:(0,a.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(c,{})})}function f(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(o,{}),(0,l.jsx)(u,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/207666d2.a9f47421.js b/assets/js/207666d2.a9f47421.js new file mode 100644 index 0000000..33a375c --- /dev/null +++ b/assets/js/207666d2.a9f47421.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2148],{7025:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>l});var s=n(4848),o=n(8453);const t={},r="Media Types",d={id:"location-proof-protocol/media-types",title:"Media Types",description:"Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME",source:"@site/docs/location-proof-protocol/media-types.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/media-types",permalink:"/docs/location-proof-protocol/media-types",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Strategies + Recipes",permalink:"/docs/location-proof-protocol/strategies-recipes"}},a={},l=[{value:"Media structure",id:"media-structure",level:2},{value:"Future Media Types",id:"future-media-types",level:2},{value:"1. Photos",id:"1-photos",level:3},{value:"2. Videos",id:"2-videos",level:3},{value:"3. Audio",id:"3-audio",level:3},{value:"4. URLs",id:"4-urls",level:3},{value:"5. LIDAR Scans",id:"5-lidar-scans",level:3},{value:"6. Point Clouds",id:"6-point-clouds",level:3},{value:"7. Documents",id:"7-documents",level:3},{value:"8. Other Formats",id:"8-other-formats",level:3},{value:"Considerations for Use",id:"considerations-for-use",level:2}];function c(e){const i={admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"media-types",children:"Media Types"}),"\n",(0,s.jsx)(i.p,{children:"Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME\ntypes, allowing for the inclusion of various data formats such as photos, videos, audio, URLs, LIDAR scans, point clouds, and more. This\nsection provides an overview of the media types we aim to build support for, their MIME types, and considerations for their use."}),"\n",(0,s.jsx)(i.admonition,{type:"warning",children:(0,s.jsx)(i.p,{children:"This is the alpha version and is subject to change!"})}),"\n",(0,s.jsx)(i.h2,{id:"media-structure",children:"Media structure"}),"\n",(0,s.jsx)(i.p,{children:"Currently, the location proofs we're registering on EAS have two fields related to media:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.code,{children:"mediaType"})}),": an array of strings, each a unique designator of the media attached, to ease parsing when location proofs are read"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.code,{children:"mediaData"})}),": an array of bytes containing either the media itself or some kind of media identifier, likely a CID"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Of course, elements in each array correspond accoding to index."}),"\n",(0,s.jsx)(i.p,{children:"In this way, any set of media data can be attached to a location proof. This opens use cases such as geotagged photos and videos, dMRV data\nfor impact / regeneration projects, etc."}),"\n",(0,s.jsx)(i.admonition,{type:"note",children:(0,s.jsx)(i.p,{children:"Data included in the media fields should NOT be required for the location proof strategy. For example, if a strategy used photos of the\nsurrounding area (i.e. of known landmarks), this data should be included in the proof recipe."})}),"\n",(0,s.jsxs)(i.p,{children:["At this point, we have not fully scoped the requirements of the ",(0,s.jsx)(i.code,{children:"mediaType"})," string designators. Any content can be attached to a location\nproof (which is why we selected the versatile ",(0,s.jsx)(i.code,{children:"bytes"})," data type) \u2014 but note there is no standardized way of knowing what type of file / data\nis attached. Stay tuned here."]}),"\n",(0,s.jsx)(i.h2,{id:"future-media-types",children:"Future Media Types"}),"\n",(0,s.jsx)(i.h3,{id:"1-photos",children:"1. Photos"}),"\n",(0,s.jsx)(i.p,{children:"Photos can be attached in various formats, each with its corresponding MIME type:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"JPEG"}),": ",(0,s.jsx)(i.code,{children:"image/jpeg"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PNG"}),": ",(0,s.jsx)(i.code,{children:"image/png"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"GIF"}),": ",(0,s.jsx)(i.code,{children:"image/gif"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"TIFF"}),": ",(0,s.jsx)(i.code,{children:"image/tiff"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"BMP"}),": ",(0,s.jsx)(i.code,{children:"image/bmp"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"2-videos",children:"2. Videos"}),"\n",(0,s.jsx)(i.p,{children:"Video attachments support multiple formats to ensure compatibility and optimal performance:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MP4"}),": ",(0,s.jsx)(i.code,{children:"video/mp4"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"WebM"}),": ",(0,s.jsx)(i.code,{children:"video/webm"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"AVI"}),": ",(0,s.jsx)(i.code,{children:"video/x-msvideo"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MOV"}),": ",(0,s.jsx)(i.code,{children:"video/quicktime"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MKV"}),": ",(0,s.jsx)(i.code,{children:"video/x-matroska"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"3-audio",children:"3. Audio"}),"\n",(0,s.jsx)(i.p,{children:"Audio files in the following formats can be attached to a location proof:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MP3"}),": ",(0,s.jsx)(i.code,{children:"audio/mpeg"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"WAV"}),": ",(0,s.jsx)(i.code,{children:"audio/wav"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"OGG"}),": ",(0,s.jsx)(i.code,{children:"audio/ogg"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"AAC"}),": ",(0,s.jsx)(i.code,{children:"audio/aac"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"4-urls",children:"4. URLs"}),"\n",(0,s.jsx)(i.p,{children:"URLs can be linked directly from a location proof, providing access to external resources:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"URL"}),": ",(0,s.jsx)(i.code,{children:"text/uri-list"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"5-lidar-scans",children:"5. LIDAR Scans"}),"\n",(0,s.jsx)(i.p,{children:"LIDAR scans provide detailed three-dimensional data and are supported in these formats:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"LAS"}),": ",(0,s.jsx)(i.code,{children:"application/vnd.las"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"LAZ"}),": ",(0,s.jsx)(i.code,{children:"application/vnd.laszip"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"6-point-clouds",children:"6. Point Clouds"}),"\n",(0,s.jsx)(i.p,{children:"Point clouds, representing spatial data points, can be attached in various formats:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PCD"}),": ",(0,s.jsx)(i.code,{children:"application/pcd"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PLY"}),": ",(0,s.jsx)(i.code,{children:"application/ply"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"XYZ"}),": ",(0,s.jsx)(i.code,{children:"application/xyz"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"7-documents",children:"7. Documents"}),"\n",(0,s.jsx)(i.p,{children:"Users can attach documents to provide additional information or context:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PDF"}),": ",(0,s.jsx)(i.code,{children:"application/pdf"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Microsoft Word"}),": ",(0,s.jsx)(i.code,{children:"application/msword"}),", ",(0,s.jsx)(i.code,{children:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Microsoft Excel"}),": ",(0,s.jsx)(i.code,{children:"application/vnd.ms-excel"}),", ",(0,s.jsx)(i.code,{children:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Plain Text"}),": ",(0,s.jsx)(i.code,{children:"text/plain"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"8-other-formats",children:"8. Other Formats"}),"\n",(0,s.jsx)(i.p,{children:"We also support a wide range of other media types to ensure flexibility:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"JSON"}),": ",(0,s.jsx)(i.code,{children:"application/json"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"XML"}),": ",(0,s.jsx)(i.code,{children:"application/xml"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"CSV"}),": ",(0,s.jsx)(i.code,{children:"text/csv"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"ZIP"}),": ",(0,s.jsx)(i.code,{children:"application/zip"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"considerations-for-use",children:"Considerations for Use"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"File Size"}),": Different media types can have varying file sizes. It's essential to consider the storage implications and performance\nimpact of large files, especially high-resolution videos, LIDAR scans, and point clouds."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Format Compatibility"}),": Ensure that the attached media format is compatible with the systems and applications that will access the\nlocation proof. For example, not all browsers or devices may support every video or audio format."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Security"}),": Validate and sanitize media files to protect against potential security threats such as malware or malicious code embedded\nin files."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Metadata"}),": Including metadata with media files (e.g., EXIF data for photos, geolocation for videos) can provide additional context and\nimprove the usability of the attached media."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Compression"}),": Utilize compression for large files to optimize storage and transmission. Formats like LAZ (compressed LAS) are\npreferable for LIDAR scans."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"By leveraging MIME types, our system provides a flexible and robust framework for attaching a wide range of media types to location proofs,\nenhancing the richness and utility of the data associated with each proof."})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>d});var s=n(6540);const o={},t=s.createContext(o);function r(e){const i=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(t.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2237.fe867cfb.js b/assets/js/2237.fe867cfb.js new file mode 100644 index 0000000..71f5802 --- /dev/null +++ b/assets/js/2237.fe867cfb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2237],{3363:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var i=n(4164),o=n(1312),s=n(1107),r=n(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});n(6540);var i=n(1312),o=n(1213),s=n(781),r=n(3363),a=n(4848);function d(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/2c1b52bf.3592ad26.js b/assets/js/2c1b52bf.3592ad26.js new file mode 100644 index 0000000..0eff7ec --- /dev/null +++ b/assets/js/2c1b52bf.3592ad26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2382],{320:(e,t,d)=>{d.r(t),d.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>n,toc:()=>l});var r=d(4848),i=d(8453);const o={},c="EAS Schema",n={id:"location-proof-protocol/eas-schema",title:"EAS Schema",description:"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)",source:"@site/docs/location-proof-protocol/eas-schema.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/eas-schema",permalink:"/docs/location-proof-protocol/eas-schema",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Architecture",permalink:"/docs/location-proof-protocol/architecture"},next:{title:"Location Types",permalink:"/docs/location-proof-protocol/location-types"}},s={},l=[{value:"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)",id:"location-proof-protocol-core-schema-v01-sepolia-testnet",level:2}];function h(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"eas-schema",children:"EAS Schema"}),"\n",(0,r.jsx)(t.h2,{id:"location-proof-protocol-core-schema-v01-sepolia-testnet",children:"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)"}),"\n",(0,r.jsxs)(t.p,{children:["The core layer of the Location Proof Protocol includes a standard data model. v0.1 of the data model is described in this document. The\ncurrent working schema is deployed on Ethereum Sepolia testnet, UID ",(0,r.jsx)(t.code,{children:"0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b"}),"\n(",(0,r.jsx)(t.a,{href:"https://sepolia.easscan.org/schema/view/0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b",children:"view on EASScan"}),")."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Field"}),(0,r.jsx)(t.th,{children:"Description"}),(0,r.jsx)(t.th,{children:"Key"}),(0,r.jsx)(t.th,{children:"Data Type"}),(0,r.jsx)(t.th,{children:"Source"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Identifier"}),(0,r.jsx)(t.td,{children:"Unique ID for the location proof."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"uid"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes32"})}),(0,r.jsx)(t.td,{children:"EAS provides this"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Prover Address"}),(0,r.jsx)(t.td,{children:"Address of the prover."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"from"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"address"})}),(0,r.jsx)(t.td,{children:"Sender address, as specified by EAS"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Subject Identifier"}),(0,r.jsx)(t.td,{children:"Unique ID for the subject/event."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"subject"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"address"})}),(0,r.jsx)(t.td,{children:"EAS provides this, however future iterations may require IDs that are not Ethereum addresses (DIDs, for example)"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Timestamp"}),(0,r.jsx)(t.td,{children:"Time the location proof was created."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"timestamp"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"uint256"})}),(0,r.jsx)(t.td,{children:"EAS"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Event Timestamp"}),(0,r.jsx)(t.td,{children:"Time of the event referenced by the location proof."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"eventTimestamp"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"uint256"})}),(0,r.jsx)(t.td,{children:"User input"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Spatial Reference System"}),(0,r.jsx)(t.td,{children:"Coordinate system within which the object is positioned."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"srs"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string"})}),(0,r.jsx)(t.td,{children:'in v0.1, hard coded to "EPSG:4326"'})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Location Type"}),(0,r.jsx)(t.td,{children:"A string defining how the location field is structured."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"locationType"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string"})}),(0,r.jsxs)(t.td,{children:["Depends on the ",(0,r.jsx)(t.code,{children:"recipe"})," / strategy, or user input"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Location"}),(0,r.jsx)(t.td,{children:"The location of the object/event."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"location"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes"})}),(0,r.jsxs)(t.td,{children:["Depends on the ",(0,r.jsx)(t.code,{children:"recipe"})," / strategy, or user input"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Proof Recipe Identifier"}),(0,r.jsx)(t.td,{children:"Indicates the proof recipe used."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"recipeType"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string[]"})}),(0,r.jsx)(t.td,{children:"Defined from a set of registered recipes, to be stored in the @/recipes directory"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Proof Recipe Payload"}),(0,r.jsx)(t.td,{children:"Encoded data specific to the proof recipe, which could include encrypted location data, a zero-knowledge proof, or references to other verification data."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"recipePayload"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes[]"})}),(0,r.jsx)(t.td,{children:"Specified in recipe definition"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Media Type"}),(0,r.jsxs)(t.td,{children:["A unique string referring to the media to be included in a ",(0,r.jsx)(t.code,{children:"bytes"})," field, Media Data. This pattern is similar to OpenGraph Protocol\u2019s ",(0,r.jsx)(t.code,{children:"type"})," definition."]}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"mediaType"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string[]"})}),(0,r.jsx)(t.td,{children:"Defined from a set of supported media types, to be stored in the @/media directory"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Media Data"}),(0,r.jsxs)(t.td,{children:["A ",(0,r.jsx)(t.code,{children:"bytes"})," field allowing the attachment of arbitrary data to a location proof. This data is intended to be irrelevant to the location proof and not required/utilized in the proof recipe verification."]}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"mediaData"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes[]"})}),(0,r.jsx)(t.td,{children:"Specified in media type definition"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Memo"}),(0,r.jsx)(t.td,{children:"An arbitrary message"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"memo"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string"})}),(0,r.jsx)(t.td,{children:"User input"})]})]})]}),"\n",(0,r.jsx)(t.p,{children:"Note that this design supports location proofs that include multiple recipe types / recipe payloads and media type / media data."})]})}function a(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,t,d)=>{d.d(t,{R:()=>c,x:()=>n});var r=d(6540);const i={},o=r.createContext(i);function c(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function n(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3217192f.f67096cb.js b/assets/js/3217192f.f67096cb.js new file mode 100644 index 0000000..f27fafd --- /dev/null +++ b/assets/js/3217192f.f67096cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8462],{8174:s=>{s.exports=JSON.parse('{"tag":{"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description","allTagsPath":"/blog/tags","count":4,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/docusaurus","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/3242.e2456824.js b/assets/js/3242.e2456824.js new file mode 100644 index 0000000..473737b --- /dev/null +++ b/assets/js/3242.e2456824.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3242],{6535:(e,t,a)=>{a.d(t,{A:()=>b});var s=a(6540),n=a(4164),r=a(781),l=a(4581),i=a(8774),o=a(1312),c=a(6347),d=a(9169);function m(e){const{pathname:t}=(0,c.zy)();return(0,s.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,d.ys)(e.permalink,t))}(e,t)))),[e,t])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var h=a(4848);function g(e){let{sidebar:t}=e;const a=m(t.items);return(0,h.jsx)("aside",{className:"col col--3",children:(0,h.jsxs)("nav",{className:(0,n.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,o.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,h.jsx)("div",{className:(0,n.A)(u.sidebarItemTitle,"margin-bottom--md"),children:t.title}),(0,h.jsx)("ul",{className:(0,n.A)(u.sidebarItemList,"clean-list"),children:a.map((e=>(0,h.jsx)("li",{className:u.sidebarItem,children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var x=a(5600);function j(e){let{sidebar:t}=e;const a=m(t.items);return(0,h.jsx)("ul",{className:"menu__list",children:a.map((e=>(0,h.jsx)("li",{className:"menu__list-item",children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function p(e){return(0,h.jsx)(x.GX,{component:j,props:e})}function f(e){let{sidebar:t}=e;const a=(0,l.l)();return t?.items.length?"mobile"===a?(0,h.jsx)(p,{sidebar:t}):(0,h.jsx)(g,{sidebar:t}):null}function b(e){const{sidebar:t,toc:a,children:s,...l}=e,i=t&&t.items.length>0;return(0,h.jsx)(r.A,{...l,children:(0,h.jsx)("div",{className:"container margin-vert--lg",children:(0,h.jsxs)("div",{className:"row",children:[(0,h.jsx)(f,{sidebar:t}),(0,h.jsx)("main",{className:(0,n.A)("col",{"col--7":i,"col--9 col--offset-1":!i}),children:s}),a&&(0,h.jsx)("div",{className:"col col--2",children:a})]})})})}},4651:(e,t,a)=>{a.d(t,{A:()=>R});a(6540);var s=a(4164),n=a(7131),r=a(4848);function l(e){let{children:t,className:a}=e;return(0,r.jsx)("article",{className:a,children:t})}var i=a(8774);const o={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:l}=(0,n.e)(),{permalink:c,title:d}=a,m=l?"h1":"h2";return(0,r.jsx)(m,{className:(0,s.A)(o.title,t),children:l?d:(0,r.jsx)(i.A,{to:c,children:d})})}var d=a(1312),m=a(5846),u=a(6266);const h={container:"container_mt6G"};function g(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,m.W)();return t=>{const a=Math.ceil(t);return e(a,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,r.jsx)(r.Fragment,{children:a(t)})}function x(e){let{date:t,formattedDate:a}=e;return(0,r.jsx)("time",{dateTime:t,children:a})}function j(){return(0,r.jsx)(r.Fragment,{children:" \xb7 "})}function p(e){let{className:t}=e;const{metadata:a}=(0,n.e)(),{date:l,readingTime:i}=a,o=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,r.jsxs)("div",{className:(0,s.A)(h.container,"margin-vert--md",t),children:[(0,r.jsx)(x,{date:l,formattedDate:(c=l,o.format(new Date(c)))}),void 0!==i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(j,{}),(0,r.jsx)(g,{readingTime:i})]})]});var c}function f(e){return e.href?(0,r.jsx)(i.A,{...e}):(0,r.jsx)(r.Fragment,{children:e.children})}function b(e){let{author:t,className:a}=e;const{name:n,title:l,url:i,imageURL:o,email:c}=t,d=i||c&&`mailto:${c}`||void 0;return(0,r.jsxs)("div",{className:(0,s.A)("avatar margin-bottom--sm",a),children:[o&&(0,r.jsx)(f,{href:d,className:"avatar__photo-link",children:(0,r.jsx)("img",{className:"avatar__photo",src:o,alt:n})}),n&&(0,r.jsxs)("div",{className:"avatar__intro",children:[(0,r.jsx)("div",{className:"avatar__name",children:(0,r.jsx)(f,{href:d,children:(0,r.jsx)("span",{children:n})})}),l&&(0,r.jsx)("small",{className:"avatar__subtitle",children:l})]})]})}const v={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function A(e){let{className:t}=e;const{metadata:{authors:a},assets:l}=(0,n.e)();if(0===a.length)return null;const i=a.every((e=>{let{name:t}=e;return!t}));return(0,r.jsx)("div",{className:(0,s.A)("margin-top--md margin-bottom--sm",i?v.imageOnlyAuthorRow:"row",t),children:a.map(((e,t)=>(0,r.jsx)("div",{className:(0,s.A)(!i&&"col col--6",i?v.imageOnlyAuthorCol:v.authorCol),children:(0,r.jsx)(b,{author:{...e,imageURL:l.authorsImageUrls[t]??e.imageURL}})},t)))})}function N(){return(0,r.jsxs)("header",{children:[(0,r.jsx)(c,{}),(0,r.jsx)(p,{}),(0,r.jsx)(A,{})]})}var _=a(440),k=a(5533);function P(e){let{children:t,className:a}=e;const{isBlogPostPage:l}=(0,n.e)();return(0,r.jsx)("div",{id:l?_.blogPostContainerID:void 0,className:(0,s.A)("markdown",a),children:(0,r.jsx)(k.A,{children:t})})}var w=a(7559),T=a(4336),I=a(2053);function L(){return(0,r.jsx)("b",{children:(0,r.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read More"})})}function y(e){const{blogPostTitle:t,...a}=e;return(0,r.jsx)(i.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,r.jsx)(L,{})})}function C(){const{metadata:e,isBlogPostPage:t}=(0,n.e)(),{tags:a,title:l,editUrl:i,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,m=!t&&o,u=a.length>0;if(!(u||m||i))return null;if(t){const e=!!(i||d||c);return(0,r.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,s.A)("row","margin-top--sm",w.G.blog.blogFooterEditMetaRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(I.A,{tags:a})})}),e&&(0,r.jsx)(T.A,{className:(0,s.A)("margin-top--sm",w.G.blog.blogFooterEditMetaRow),editUrl:i,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,r.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,s.A)("col",{"col--9":m}),children:(0,r.jsx)(I.A,{tags:a})}),m&&(0,r.jsx)("div",{className:(0,s.A)("col text--right",{"col--3":u}),children:(0,r.jsx)(y,{blogPostTitle:l,to:e.permalink})})]})}function R(e){let{children:t,className:a}=e;const i=function(){const{isBlogPostPage:e}=(0,n.e)();return e?void 0:"margin-bottom--xl"}();return(0,r.jsxs)(l,{className:(0,s.A)(i,a),children:[(0,r.jsx)(N,{}),(0,r.jsx)(P,{children:t}),(0,r.jsx)(C,{})]})}},9022:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var s=a(4164),n=a(8774),r=a(4848);function l(e){const{permalink:t,title:a,subLabel:l,isNext:i}=e;return(0,r.jsxs)(n.A,{className:(0,s.A)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[l&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,r.jsx)("div",{className:"pagination-nav__label",children:a})]})}},6133:(e,t,a)=>{a.d(t,{A:()=>i});a(6540);var s=a(4164),n=a(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=a(4848);function i(e){let{permalink:t,label:a,count:i,description:o}=e;return(0,l.jsxs)(n.A,{href:t,title:o,className:(0,s.A)(r.tag,i?r.tagWithCount:r.tagRegular),children:[a,i&&(0,l.jsx)("span",{children:i})]})}},2053:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var s=a(4164),n=a(1312),r=a(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var i=a(4848);function o(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(n.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,i.jsx)("li",{className:l.tag,children:(0,i.jsx)(r.A,{...e})},e.permalink)))})]})}},7131:(e,t,a)=>{a.d(t,{e:()=>o,i:()=>i});var s=a(6540),n=a(9532),r=a(4848);const l=s.createContext(null);function i(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const i=function(e){let{content:t,isBlogPostPage:a}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return(0,r.jsx)(l.Provider,{value:i,children:t})}function o(){const e=(0,s.useContext)(l);if(null===e)throw new n.dV("BlogPostProvider");return e}},5846:(e,t,a)=>{a.d(t,{W:()=>c});var s=a(6540),n=a(4586);const r=["zero","one","two","few","many","other"];function l(e){return r.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:l(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:l(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),i}}),[e])}function c(){const e=o();return{selectMessage:(t,a)=>function(e,t,a){const s=e.split("|");if(1===s.length)return s[0];s.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const n=a.select(t),r=a.pluralForms.indexOf(n);return s[Math.min(r,s.length-1)]}(a,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/35131ec2.82b557e5.js b/assets/js/35131ec2.82b557e5.js new file mode 100644 index 0000000..30ceb3b --- /dev/null +++ b/assets/js/35131ec2.82b557e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3666],{3161:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=s(4848),o=s(8453);const i={},r="Spatial.sol",a={id:"spatial-registries/spatial-sol",title:"Spatial.sol",description:"",source:"@site/docs/spatial-registries/spatial-sol.md",sourceDirName:"spatial-registries",slug:"/spatial-registries/spatial-sol",permalink:"/docs/spatial-registries/spatial-sol",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},c={},l=[];function p(t){const e={code:"code",h1:"h1",...(0,o.R)(),...t.components};return(0,n.jsx)(e.h1,{id:"spatialsol",children:(0,n.jsx)(e.code,{children:"Spatial.sol"})})}function u(t={}){const{wrapper:e}={...(0,o.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(p,{...t})}):p(t)}},8453:(t,e,s)=>{s.d(e,{R:()=>r,x:()=>a});var n=s(6540);const o={},i=n.createContext(o);function r(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/36994c47.337a7516.js b/assets/js/36994c47.337a7516.js new file mode 100644 index 0000000..ede6438 --- /dev/null +++ b/assets/js/36994c47.337a7516.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9858],{5516:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/393be207.a0ef7dd4.js b/assets/js/393be207.a0ef7dd4.js new file mode 100644 index 0000000..9a19dd2 --- /dev/null +++ b/assets/js/393be207.a0ef7dd4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4134],{633:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>r,metadata:()=>p,toc:()=>d});var o=t(4848),a=t(8453);const r={title:"Markdown page example"},s="Markdown page example",p={type:"mdx",permalink:"/markdown-page",source:"@site/src/pages/markdown-page.md",title:"Markdown page example",description:"You don't need React to write simple standalone pages.",frontMatter:{title:"Markdown page example"},unlisted:!1},c={},d=[];function i(e){const n={h1:"h1",p:"p",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"markdown-page-example",children:"Markdown page example"}),"\n",(0,o.jsx)(n.p,{children:"You don't need React to write simple standalone pages."})]})}function l(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>p});var o=t(6540);const a={},r=o.createContext(a);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function p(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3a2db09e.39dab5fe.js b/assets/js/3a2db09e.39dab5fe.js new file mode 100644 index 0000000..f931fb2 --- /dev/null +++ b/assets/js/3a2db09e.39dab5fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8121],{8070:o=>{o.exports=JSON.parse('{"tags":[{"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description","count":1},{"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description","count":2},{"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description","count":4},{"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description","count":1}]}')}}]); \ No newline at end of file diff --git a/assets/js/4e345e3b.0aaadb8d.js b/assets/js/4e345e3b.0aaadb8d.js new file mode 100644 index 0000000..bf3e726 --- /dev/null +++ b/assets/js/4e345e3b.0aaadb8d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7174],{9955:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>l,frontMatter:()=>c,metadata:()=>i,toc:()=>a});var o=e(4848),r=e(8453);const c={},s="Introduction",i={id:"introducing-astral",title:"Introduction",description:"",source:"@site/docs/introducing-astral.md",sourceDirName:".",slug:"/introducing-astral",permalink:"/docs/introducing-astral",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},u={},a=[];function d(t){const n={h1:"h1",...(0,r.R)(),...t.components};return(0,o.jsx)(n.h1,{id:"introduction",children:"Introduction"})}function l(t={}){const{wrapper:n}={...(0,r.R)(),...t.components};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}},8453:(t,n,e)=>{e.d(n,{R:()=>s,x:()=>i});var o=e(6540);const r={},c=o.createContext(r);function s(t){const n=o.useContext(c);return o.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function i(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),o.createElement(c.Provider,{value:n},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/533a09ca.b8570790.js b/assets/js/533a09ca.b8570790.js new file mode 100644 index 0000000..c4bf69b --- /dev/null +++ b/assets/js/533a09ca.b8570790.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3098],{4700:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>g,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var o=s(4848),n=s(8453);const r={sidebar_position:3},a="Create a Blog Post",i={id:"tutorial-basics/create-a-blog-post",title:"Create a Blog Post",description:"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...",source:"@site/docs/tutorial-basics/create-a-blog-post.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-blog-post",permalink:"/docs/tutorial-basics/create-a-blog-post",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3}},c={},l=[{value:"Create your first Post",id:"create-your-first-post",level:2}];function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"create-a-blog-post",children:"Create a Blog Post"}),"\n",(0,o.jsxs)(t.p,{children:["Docusaurus creates a ",(0,o.jsx)(t.strong,{children:"page for each blog post"}),", but also a ",(0,o.jsx)(t.strong,{children:"blog index page"}),", a ",(0,o.jsx)(t.strong,{children:"tag system"}),", an ",(0,o.jsx)(t.strong,{children:"RSS"})," feed..."]}),"\n",(0,o.jsx)(t.h2,{id:"create-your-first-post",children:"Create your first Post"}),"\n",(0,o.jsxs)(t.p,{children:["Create a file at ",(0,o.jsx)(t.code,{children:"blog/2021-02-28-greetings.md"}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-md",metastring:'title="blog/2021-02-28-greetings.md"',children:"---\nslug: greetings\ntitle: Greetings!\nauthors:\n - name: Joel Marcey\n title: Co-creator of Docusaurus 1\n url: https://github.com/JoelMarcey\n image_url: https://github.com/JoelMarcey.png\n - name: S\xe9bastien Lorber\n title: Docusaurus maintainer\n url: https://sebastienlorber.com\n image_url: https://github.com/slorber.png\ntags: [greetings]\n---\n\nCongratulations, you have made your first post!\n\nFeel free to play around and edit this post as much as you like.\n"})}),"\n",(0,o.jsxs)(t.p,{children:["A new blog post is now available at ",(0,o.jsx)(t.a,{href:"http://localhost:3000/blog/greetings",children:"http://localhost:3000/blog/greetings"}),"."]})]})}function g(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>i});var o=s(6540);const n={},r=o.createContext(n);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/584535cc.4efad016.js b/assets/js/584535cc.4efad016.js new file mode 100644 index 0000000..1fc4eb6 --- /dev/null +++ b/assets/js/584535cc.4efad016.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8623],{6778:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var i=t(4848),n=t(8453);const r={},s="Strategies + Recipes",a={id:"location-proof-protocol/strategies-recipes",title:"Strategies + Recipes",description:"The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the",source:"@site/docs/location-proof-protocol/strategies-recipes.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/strategies-recipes",permalink:"/docs/location-proof-protocol/strategies-recipes",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Location Types",permalink:"/docs/location-proof-protocol/location-types"},next:{title:"Media Types",permalink:"/docs/location-proof-protocol/media-types"}},c={},l=[{value:"Broad Approaches to Location Proofs",id:"broad-approaches-to-location-proofs",level:2}];function d(e){const o={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.h1,{id:"strategies--recipes",children:"Strategies + Recipes"}),"\n",(0,i.jsx)(o.p,{children:"The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the\ndecentralized web, while also provided a standard way of representing these proofs."}),"\n",(0,i.jsxs)(o.p,{children:["In this section of the documentation, we will define these different location proof strategies, and document how to contribute a new\nstrategy to the protocol. (For a clearer idea of our design, see the ",(0,i.jsx)(o.a,{href:"/docs/location-proof-protocol/architecture",children:"Architecture"})," page)."]}),"\n",(0,i.jsx)(o.admonition,{type:"note",children:(0,i.jsx)(o.p,{children:"A contributing guide, along with documentation on specific strategies, is in the work. If you want to help us develop this, reach out!"})}),"\n",(0,i.jsx)(o.h2,{id:"broad-approaches-to-location-proofs",children:"Broad Approaches to Location Proofs"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Authority-based Strategies"}),": Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Social Strategies"}),": People verify each other's claims, confirming or challenging their validity. i.e. permissionless social\nconfirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Near-field Machine Strategies"}),": Hardware devices attest to the presence of another device through information exchange or cryptographic\n'endorsement' of a claim. i.e. RFID; NFC; Bluetooth"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Network Machine Strategies"}),": Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e.\nTime of Flight; Time Difference of Arrival"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Sensor Data Strategies"}),": Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and\nlocation is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization"]}),"\n"]}),"\n",(0,i.jsx)(o.p,{children:"In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a\ndifferent attributes, such as privacy, game theoretic assurances of validity, etc."}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Time-based Schemes"}),": Involves waiting or challenge periods."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Cryptographic Schemes"}),": Zero-knowledge proofs verified on-chain or in peer nodes."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"AI-based Schemes"}),": Analyzing photos or contextual information."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Economic Schemes"}),": Requires payment or staking value for proof creation."]}),"\n"]}),"\n",(0,i.jsx)(o.p,{children:"This is an incomplete list, and we hope to support a growing set of experiments in location proof design."})]})}function p(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,i.jsx)(o,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>a});var i=t(6540);const n={},r=i.createContext(n);function s(e){const o=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),i.createElement(r.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/59362658.fceb63f4.js b/assets/js/59362658.fceb63f4.js new file mode 100644 index 0000000..f4a301e --- /dev/null +++ b/assets/js/59362658.fceb63f4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9325],{1180:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=o(4848),n=o(8453);const r={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,c={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",tags:[{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},u=[];function i(t){const e={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,n.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Blog posts support ",(0,s.jsx)(e.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(e.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(e.admonition,{type:"tip",children:[(0,s.jsx)(e.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-js",children:"<button onClick={() => alert('button clicked!')}>Click me!</button>\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(i,{...t})}):i(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>a,x:()=>c});var s=o(6540);const n={},r=s.createContext(n);function a(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:a(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/5c868d36.00dc99bc.js b/assets/js/5c868d36.00dc99bc.js new file mode 100644 index 0000000..746172f --- /dev/null +++ b/assets/js/5c868d36.00dc99bc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1974],{5254:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>i,contentTitle:()=>o,default:()=>p,frontMatter:()=>n,metadata:()=>c,toc:()=>l});var r=t(4848),s=t(8453);const n={sidebar_position:1},o="Create a Page",c={id:"tutorial-basics/create-a-page",title:"Create a Page",description:"Add Markdown or React files to src/pages to create a standalone page:",source:"@site/docs/tutorial-basics/create-a-page.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-page",permalink:"/docs/tutorial-basics/create-a-page",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1}},i={},l=[{value:"Create your first React Page",id:"create-your-first-react-page",level:2},{value:"Create your first Markdown Page",id:"create-your-first-markdown-page",level:2}];function d(e){const a={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h1,{id:"create-a-page",children:"Create a Page"}),"\n",(0,r.jsxs)(a.p,{children:["Add ",(0,r.jsx)(a.strong,{children:"Markdown or React"})," files to ",(0,r.jsx)(a.code,{children:"src/pages"})," to create a ",(0,r.jsx)(a.strong,{children:"standalone page"}),":"]}),"\n",(0,r.jsxs)(a.ul,{children:["\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.code,{children:"src/pages/index.js"})," \u2192 ",(0,r.jsx)(a.code,{children:"localhost:3000/"})]}),"\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.code,{children:"src/pages/foo.md"})," \u2192 ",(0,r.jsx)(a.code,{children:"localhost:3000/foo"})]}),"\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.code,{children:"src/pages/foo/bar.js"})," \u2192 ",(0,r.jsx)(a.code,{children:"localhost:3000/foo/bar"})]}),"\n"]}),"\n",(0,r.jsx)(a.h2,{id:"create-your-first-react-page",children:"Create your first React Page"}),"\n",(0,r.jsxs)(a.p,{children:["Create a file at ",(0,r.jsx)(a.code,{children:"src/pages/my-react-page.js"}),":"]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-jsx",metastring:'title="src/pages/my-react-page.js"',children:"import React from 'react';\nimport Layout from '@theme/Layout';\n\nexport default function MyReactPage() {\n return (\n <Layout>\n <h1>My React page</h1>\n <p>This is a React page</p>\n </Layout>\n );\n}\n"})}),"\n",(0,r.jsxs)(a.p,{children:["A new page is now available at ",(0,r.jsx)(a.a,{href:"http://localhost:3000/my-react-page",children:"http://localhost:3000/my-react-page"}),"."]}),"\n",(0,r.jsx)(a.h2,{id:"create-your-first-markdown-page",children:"Create your first Markdown Page"}),"\n",(0,r.jsxs)(a.p,{children:["Create a file at ",(0,r.jsx)(a.code,{children:"src/pages/my-markdown-page.md"}),":"]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-mdx",metastring:'title="src/pages/my-markdown-page.md"',children:"# My Markdown page\n\nThis is a Markdown page\n"})}),"\n",(0,r.jsxs)(a.p,{children:["A new page is now available at ",(0,r.jsx)(a.a,{href:"http://localhost:3000/my-markdown-page",children:"http://localhost:3000/my-markdown-page"}),"."]})]})}function p(e={}){const{wrapper:a}={...(0,s.R)(),...e.components};return a?(0,r.jsx)(a,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,a,t)=>{t.d(a,{R:()=>o,x:()=>c});var r=t(6540);const s={},n=r.createContext(s);function o(e){const a=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function c(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(n.Provider,{value:a},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e90a9b3.111c581f.js b/assets/js/5e90a9b3.111c581f.js new file mode 100644 index 0000000..ab717d0 --- /dev/null +++ b/assets/js/5e90a9b3.111c581f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8025],{7134:a=>{a.exports=JSON.parse('{"tag":{"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hola","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.3d1fe17f.js b/assets/js/5e95c892.3d1fe17f.js new file mode 100644 index 0000000..ce6156b --- /dev/null +++ b/assets/js/5e95c892.3d1fe17f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>l});r(6540);var c=r(4164),u=r(1213),a=r(7559),d=r(2831),n=r(781),t=r(4848);function l(e){return(0,t.jsx)(u.e3,{className:(0,c.A)(a.G.wrapper.docsPages),children:(0,t.jsx)(n.A,{children:(0,d.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/6875c492.ab63eb90.js b/assets/js/6875c492.ab63eb90.js new file mode 100644 index 0000000..17ed319 --- /dev/null +++ b/assets/js/6875c492.ab63eb90.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4813],{7713:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(1312),a=n(9022),i=n(4848);function r(e){const{metadata:t}=e,{previousPage:n,nextPage:r}=t;return(0,i.jsxs)("nav",{className:"pagination-nav","aria-label":(0,s.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[n&&(0,i.jsx)(a.A,{permalink:n,title:(0,i.jsx)(s.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer Entries"})}),r&&(0,i.jsx)(a.A,{permalink:r,title:(0,i.jsx)(s.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older Entries"}),isNext:!0})]})}},3892:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(7131),a=n(4651),i=n(4848);function r(e){let{items:t,component:n=a.A}=e;return(0,i.jsx)(i.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,i.jsx)(s.i,{content:t,children:(0,i.jsx)(n,{children:(0,i.jsx)(t,{})})},t.metadata.permalink)}))})}},3069:(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});n(6540);var s=n(4164),a=n(1312),i=n(5846),r=n(1213),l=n(7559),o=n(8774),c=n(6535),d=n(7713),g=n(1463),u=n(3892),p=n(996),h=n(1107),m=n(4848);function x(e){const t=function(){const{selectMessage:e}=(0,i.W)();return t=>e(t,(0,a.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}();return(0,a.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function j(e){let{tag:t}=e;const n=x(t);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(r.be,{title:n,description:t.description}),(0,m.jsx)(g.A,{tag:"blog_tags_posts"})]})}function b(e){let{tag:t,items:n,sidebar:s,listMetadata:i}=e;const r=x(t);return(0,m.jsxs)(c.A,{sidebar:s,children:[t.unlisted&&(0,m.jsx)(p.A,{}),(0,m.jsxs)("header",{className:"margin-bottom--xl",children:[(0,m.jsx)(h.A,{as:"h1",children:r}),t.description&&(0,m.jsx)("p",{children:t.description}),(0,m.jsx)(o.A,{href:t.allTagsPath,children:(0,m.jsx)(a.A,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page",children:"View All Tags"})})]}),(0,m.jsx)(u.A,{items:n}),(0,m.jsx)(d.A,{metadata:i})]})}function A(e){return(0,m.jsxs)(r.e3,{className:(0,s.A)(l.G.wrapper.blogPages,l.G.page.blogTagPostListPage),children:[(0,m.jsx)(j,{...e}),(0,m.jsx)(b,{...e})]})}},996:(e,t,n)=>{n.d(t,{A:()=>p});n(6540);var s=n(4164),a=n(1312),i=n(5260),r=n(4848);function l(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function o(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,r.jsx)(i.A,{children:(0,r.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=n(7559),g=n(7293);function u(e){let{className:t}=e;return(0,r.jsx)(g.A,{type:"caution",title:(0,r.jsx)(l,{}),className:(0,s.A)(t,d.G.common.unlistedBanner),children:(0,r.jsx)(o,{})})}function p(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c,{}),(0,r.jsx)(u,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/6edd94a7.ba7d4649.js b/assets/js/6edd94a7.ba7d4649.js new file mode 100644 index 0000000..a2850cf --- /dev/null +++ b/assets/js/6edd94a7.ba7d4649.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9103],{9731:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>u,toc:()=>a});var n=r(4848),s=r(8453);const o={},c="Quickstart",u={id:"developer-resources/quickstart",title:"Quickstart",description:"",source:"@site/docs/developer-resources/quickstart.md",sourceDirName:"developer-resources",slug:"/developer-resources/quickstart",permalink:"/docs/developer-resources/quickstart",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},a=[];function d(e){const t={h1:"h1",...(0,s.R)(),...e.components};return(0,n.jsx)(t.h1,{id:"quickstart",children:"Quickstart"})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>c,x:()=>u});var n=r(6540);const s={},o=n.createContext(s);function c(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/73664a40.93ba7b65.js b/assets/js/73664a40.93ba7b65.js new file mode 100644 index 0000000..e7ddf32 --- /dev/null +++ b/assets/js/73664a40.93ba7b65.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1972],{9581:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>m,contentTitle:()=>r,default:()=>a,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var t=i(4848),o=i(8453);const n={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},r=void 0,u={permalink:"/blog/long-blog-post",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",tags:[{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},m={authorsImageUrls:[void 0]},l=[];function c(e){const s={code:"code",p:"p",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,t.jsxs)(s.p,{children:["Use a ",(0,t.jsx)(s.code,{children:"\x3c!--"})," ",(0,t.jsx)(s.code,{children:"truncate"})," ",(0,t.jsx)(s.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})]})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,s,i)=>{i.d(s,{R:()=>r,x:()=>u});var t=i(6540);const o={},n=t.createContext(o);function r(e){const s=t.useContext(n);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function u(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(n.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7661071f.d4c31643.js b/assets/js/7661071f.d4c31643.js new file mode 100644 index 0000000..c333a5f --- /dev/null +++ b/assets/js/7661071f.d4c31643.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8737],{4137:(e,o,s)=>{s.r(o),s.d(o,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>i});var n=s(4848),t=s(8453);const r={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},l=void 0,a={permalink:"/blog/welcome",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",tags:[{inline:!1,label:"Facebook",permalink:"/blog/tags/facebook",description:"Facebook tag description"},{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},i=[];function u(e){const o={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,n.jsxs)(o.p,{children:["Simply add Markdown files (or folders) to the ",(0,n.jsx)(o.code,{children:"blog"})," directory."]}),"\n",(0,n.jsxs)(o.p,{children:["Regular blog authors can be added to ",(0,n.jsx)(o.code,{children:"authors.yml"}),"."]}),"\n",(0,n.jsx)(o.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,n.jsx)(o.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.img,{alt:"Docusaurus Plushie",src:s(5917).A+"",width:"1500",height:"500"})}),"\n",(0,n.jsx)(o.p,{children:"The blog supports tags as well!"}),"\n",(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,n.jsx)(o.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},5917:(e,o,s)=>{s.d(o,{A:()=>n});const n=s.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},8453:(e,o,s)=>{s.d(o,{R:()=>l,x:()=>a});var n=s(6540);const t={},r=n.createContext(t);function l(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7ae2cc57.0c88ed34.js b/assets/js/7ae2cc57.0c88ed34.js new file mode 100644 index 0000000..adcae0a --- /dev/null +++ b/assets/js/7ae2cc57.0c88ed34.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3764],{1762:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>r,toc:()=>p});var n=a(4848),s=a(8453);const o={},c="What is spatial data?",r={id:"core-concepts/what-is-spatial-data",title:"What is spatial data?",description:"",source:"@site/docs/core-concepts/what-is-spatial-data.md",sourceDirName:"core-concepts",slug:"/core-concepts/what-is-spatial-data",permalink:"/docs/core-concepts/what-is-spatial-data",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},p=[];function d(t){const e={h1:"h1",...(0,s.R)(),...t.components};return(0,n.jsx)(e.h1,{id:"what-is-spatial-data",children:"What is spatial data?"})}function u(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},8453:(t,e,a)=>{a.d(e,{R:()=>c,x:()=>r});var n=a(6540);const s={},o=n.createContext(s);function c(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function r(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:c(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/814f3328.5dfaceaf.js b/assets/js/814f3328.5dfaceaf.js new file mode 100644 index 0000000..6e1fb50 --- /dev/null +++ b/assets/js/814f3328.5dfaceaf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7472],{5513:l=>{l.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Welcome","permalink":"/blog/welcome","unlisted":false},{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post","unlisted":false},{"title":"Long Blog Post","permalink":"/blog/long-blog-post","unlisted":false},{"title":"First Blog Post","permalink":"/blog/first-blog-post","unlisted":false}]}')}}]); \ No newline at end of file diff --git a/assets/js/822bd8ab.daee8353.js b/assets/js/822bd8ab.daee8353.js new file mode 100644 index 0000000..dca5c57 --- /dev/null +++ b/assets/js/822bd8ab.daee8353.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2748],{8611:(s,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var e=t(4848),o=t(8453);const i={sidebar_position:6},r="Congratulations!",a={id:"tutorial-basics/congratulations",title:"Congratulations!",description:"You have just learned the basics of Docusaurus and made some changes to the initial template.",source:"@site/docs/tutorial-basics/congratulations.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/congratulations",permalink:"/docs/tutorial-basics/congratulations",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6}},c={},u=[{value:"What's next?",id:"whats-next",level:2}];function d(s){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...s.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.h1,{id:"congratulations",children:"Congratulations!"}),"\n",(0,e.jsxs)(n.p,{children:["You have just learned the ",(0,e.jsx)(n.strong,{children:"basics of Docusaurus"})," and made some changes to the ",(0,e.jsx)(n.strong,{children:"initial template"}),"."]}),"\n",(0,e.jsxs)(n.p,{children:["Docusaurus has ",(0,e.jsx)(n.strong,{children:"much more to offer"}),"!"]}),"\n",(0,e.jsxs)(n.p,{children:["Have ",(0,e.jsx)(n.strong,{children:"5 more minutes"}),"? Take a look at ",(0,e.jsx)(n.strong,{children:(0,e.jsx)(n.a,{href:"/docs/tutorial-extras/manage-docs-versions",children:"versioning"})})," and ",(0,e.jsx)(n.strong,{children:(0,e.jsx)(n.a,{href:"/docs/tutorial-extras/translate-your-site",children:"i18n"})}),"."]}),"\n",(0,e.jsxs)(n.p,{children:["Anything ",(0,e.jsx)(n.strong,{children:"unclear"})," or ",(0,e.jsx)(n.strong,{children:"buggy"})," in this tutorial? ",(0,e.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/discussions/4610",children:"Please report it!"})]}),"\n",(0,e.jsx)(n.h2,{id:"whats-next",children:"What's next?"}),"\n",(0,e.jsxs)(n.ul,{children:["\n",(0,e.jsxs)(n.li,{children:["Read the ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/",children:"official documentation"})]}),"\n",(0,e.jsxs)(n.li,{children:["Modify your site configuration with ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/api/docusaurus-config",children:(0,e.jsx)(n.code,{children:"docusaurus.config.js"})})]}),"\n",(0,e.jsxs)(n.li,{children:["Add navbar and footer items with ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/api/themes/configuration",children:(0,e.jsx)(n.code,{children:"themeConfig"})})]}),"\n",(0,e.jsxs)(n.li,{children:["Add a custom ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/styling-layout",children:"Design and Layout"})]}),"\n",(0,e.jsxs)(n.li,{children:["Add a ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/search",children:"search bar"})]}),"\n",(0,e.jsxs)(n.li,{children:["Find inspirations in the ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/showcase",children:"Docusaurus showcase"})]}),"\n",(0,e.jsxs)(n.li,{children:["Get involved in the ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/community/support",children:"Docusaurus Community"})]}),"\n"]})]})}function l(s={}){const{wrapper:n}={...(0,o.R)(),...s.components};return n?(0,e.jsx)(n,{...s,children:(0,e.jsx)(d,{...s})}):d(s)}},8453:(s,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var e=t(6540);const o={},i=e.createContext(o);function r(s){const n=e.useContext(i);return e.useMemo((function(){return"function"==typeof s?s(n):{...n,...s}}),[n,s])}function a(s){let n;return n=s.disableParentContext?"function"==typeof s.components?s.components(o):s.components||o:r(s.components),e.createElement(i.Provider,{value:n},s.children)}}}]); \ No newline at end of file diff --git a/assets/js/8717b14a.a93f16c9.js b/assets/js/8717b14a.a93f16c9.js new file mode 100644 index 0000000..e74d260 --- /dev/null +++ b/assets/js/8717b14a.a93f16c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3694],{1615:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>g,frontMatter:()=>l,metadata:()=>r,toc:()=>a});var n=o(4848),s=o(8453);const l={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},i=void 0,r={permalink:"/blog/long-blog-post",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",tags:[{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},c={authorsImageUrls:[void 0]},a=[];function u(t){const e={code:"code",p:"p",...(0,s.R)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,n.jsxs)(e.p,{children:["Use a ",(0,n.jsx)(e.code,{children:"\x3c!--"})," ",(0,n.jsx)(e.code,{children:"truncate"})," ",(0,n.jsx)(e.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]})]})}function g(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>i,x:()=>r});var n=o(6540);const s={},l=n.createContext(s);function i(t){const e=n.useContext(l);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function r(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),n.createElement(l.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/9176b25c.8a4aa6a5.js b/assets/js/9176b25c.8a4aa6a5.js new file mode 100644 index 0000000..e659546 --- /dev/null +++ b/assets/js/9176b25c.8a4aa6a5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3874],{5453:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var n=o(4848),s=o(8453);const r={},c="Location attestations",a={id:"developer-resources/location-attestations",title:"Location attestations",description:"",source:"@site/docs/developer-resources/location-attestations.md",sourceDirName:"developer-resources",slug:"/developer-resources/location-attestations",permalink:"/docs/developer-resources/location-attestations",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},u=[];function l(t){const e={h1:"h1",...(0,s.R)(),...t.components};return(0,n.jsx)(e.h1,{id:"location-attestations",children:"Location attestations"})}function d(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>c,x:()=>a});var n=o(6540);const s={},r=n.createContext(s);function c(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:c(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/925b3f96.71100b88.js b/assets/js/925b3f96.71100b88.js new file mode 100644 index 0000000..477ae2e --- /dev/null +++ b/assets/js/925b3f96.71100b88.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8609],{5026:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var s=o(4848),i=o(8453);const n={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},r=void 0,u={permalink:"/blog/first-blog-post",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",tags:[{inline:!1,label:"Hola",permalink:"/blog/tags/hola",description:"Hola tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},a={authorsImageUrls:[void 0]},l=[];function c(t){const e={p:"p",...(0,i.R)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function m(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>r,x:()=>u});var s=o(6540);const i={},n=s.createContext(i);function r(t){const e=s.useContext(n);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function u(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),s.createElement(n.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/9dfd250b.e705d71e.js b/assets/js/9dfd250b.e705d71e.js new file mode 100644 index 0000000..e341557 --- /dev/null +++ b/assets/js/9dfd250b.e705d71e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2887],{1853:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=n(4848),o=n(8453);const r={sidebar_label:"Hi!",sidebar_position:3},i="Hello",c={id:"hello",title:"Hello",description:"This is my first Docusaurus document!# Hello",source:"@site/docs/hello.md",sourceDirName:".",slug:"/hello",permalink:"/docs/hello",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_label:"Hi!",sidebar_position:3}},l={},u=[];function a(e){const t={h1:"h1",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"hello",children:"Hello"}),"\n",(0,s.jsxs)(t.p,{children:["This is my ",(0,s.jsx)(t.strong,{children:"first Docusaurus document"}),"!# Hello"]}),"\n",(0,s.jsxs)(t.p,{children:["This is my ",(0,s.jsx)(t.strong,{children:"first Docusaurus document"}),"!"]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.9b70b1ae.js b/assets/js/9e4087bc.9b70b1ae.js new file mode 100644 index 0000000..04bc910 --- /dev/null +++ b/assets/js/9e4087bc.9b70b1ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2711],{9331:(e,r,t)=>{t.r(r),t.d(r,{default:()=>m});t(6540);var a=t(8774),n=t(1312),s=t(1213),i=t(6266),c=t(781),l=t(1107),o=t(4848);function d(e){let{year:r,posts:t}=e;const n=(0,i.i)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.A,{as:"h3",id:r,children:r}),(0,o.jsx)("ul",{children:t.map((e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(a.A,{to:e.metadata.permalink,children:[(r=e.metadata.date,n.format(new Date(r)))," - ",e.metadata.title]})},e.metadata.date);var r}))})]})}function h(e){let{years:r}=e;return(0,o.jsx)("section",{className:"margin-vert--lg",children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:r.map(((e,r)=>(0,o.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,o.jsx)(d,{...e})},r)))})})})}function m(e){let{archive:r}=e;const t=(0,n.T)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),a=(0,n.T)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),i=function(e){const r=e.reduce(((e,r)=>{const t=r.metadata.date.split("-")[0],a=e.get(t)??[];return e.set(t,[r,...a])}),new Map);return Array.from(r,(e=>{let[r,t]=e;return{year:r,posts:t}}))}(r.blogPosts);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.be,{title:t,description:a}),(0,o.jsxs)(c.A,{children:[(0,o.jsx)("header",{className:"hero hero--primary",children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)(l.A,{as:"h1",className:"hero__title",children:t}),(0,o.jsx)("p",{className:"hero__subtitle",children:a})]})}),(0,o.jsx)("main",{children:i.length>0&&(0,o.jsx)(h,{years:i})})]})]})}},6266:(e,r,t)=>{t.d(r,{i:()=>n});var a=t(4586);function n(e){void 0===e&&(e={});const{i18n:{currentLocale:r}}=(0,a.A)(),t=function(){const{i18n:{currentLocale:e,localeConfigs:r}}=(0,a.A)();return r[e].calendar}();return new Intl.DateTimeFormat(r,{calendar:t,...e})}}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.02f3ef1b.js b/assets/js/a6aa9e1f.02f3ef1b.js new file mode 100644 index 0000000..dce6f5d --- /dev/null +++ b/assets/js/a6aa9e1f.02f3ef1b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7643],{5124:(e,t,a)=>{a.r(t),a.d(t,{default:()=>f});a(6540);var n=a(4164),i=a(4586),r=a(1213),o=a(7559),s=a(6535),l=a(7713),d=a(1463),c=a(3892),g=a(5260),p=a(6676),u=a(4848);function m(e){const t=(0,p.k)(e);return(0,u.jsx)(g.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function h(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,i.A)(),{blogDescription:n,blogTitle:o,permalink:s}=t,l="/"===s?a:o;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.be,{title:l,description:n}),(0,u.jsx)(d.A,{tag:"blog_posts_list"})]})}function b(e){const{metadata:t,items:a,sidebar:n}=e;return(0,u.jsxs)(s.A,{sidebar:n,children:[(0,u.jsx)(c.A,{items:a}),(0,u.jsx)(l.A,{metadata:t})]})}function f(e){return(0,u.jsxs)(r.e3,{className:(0,n.A)(o.G.wrapper.blogPages,o.G.page.blogListPage),children:[(0,u.jsx)(h,{...e}),(0,u.jsx)(m,{...e}),(0,u.jsx)(b,{...e})]})}},7713:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var n=a(1312),i=a(9022),r=a(4848);function o(e){const{metadata:t}=e,{previousPage:a,nextPage:o}=t;return(0,r.jsxs)("nav",{className:"pagination-nav","aria-label":(0,n.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,r.jsx)(i.A,{permalink:a,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer Entries"})}),o&&(0,r.jsx)(i.A,{permalink:o,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older Entries"}),isNext:!0})]})}},3892:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var n=a(7131),i=a(4651),r=a(4848);function o(e){let{items:t,component:a=i.A}=e;return(0,r.jsx)(r.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,r.jsx)(n.i,{content:t,children:(0,r.jsx)(a,{children:(0,r.jsx)(t,{})})},t.metadata.permalink)}))})}},6676:(e,t,a)=>{a.d(t,{k:()=>c,J:()=>g});var n=a(6025),i=a(4586),r=a(6803);var o=a(7131);const s=e=>new Date(e).toISOString();function l(e){const t=e.map(p);return{author:1===t.length?t[0]:t}}function d(e,t,a){return e?{image:u({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${a}`})}:{}}function c(e){const{siteConfig:t}=(0,i.A)(),{withBaseUrl:a}=(0,n.hH)(),{metadata:{blogDescription:r,blogTitle:o,permalink:c}}=e,g=`${t.url}${c}`;return{"@context":"https://schema.org","@type":"Blog","@id":g,mainEntityOfPage:g,headline:o,description:r,blogPost:e.items.map((e=>function(e,t,a){const{assets:n,frontMatter:i,metadata:r}=e,{date:o,title:c,description:g,lastUpdatedAt:p}=r,u=n.image??i.image,m=i.keywords??[],h=`${t.url}${r.permalink}`,b=p?s(p):void 0;return{"@type":"BlogPosting","@id":h,mainEntityOfPage:h,url:h,headline:c,name:c,description:g,datePublished:o,...b?{dateModified:b}:{},...l(r.authors),...d(u,a,c),...m?{keywords:m}:{}}}(e.content,t,a)))}}function g(){const e=function(){const e=(0,r.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}(),{assets:t,metadata:a}=(0,o.e)(),{siteConfig:c}=(0,i.A)(),{withBaseUrl:g}=(0,n.hH)(),{date:p,title:u,description:m,frontMatter:h,lastUpdatedAt:b}=a,f=t.image??h.image,x=h.keywords??[],j=b?s(b):void 0,A=`${c.url}${a.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":A,mainEntityOfPage:A,url:A,headline:u,name:u,description:m,datePublished:p,...j?{dateModified:j}:{},...l(a.authors),...d(f,g,u),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${c.url}${e.blogBasePath}`,name:e.blogTitle}}}function p(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function u(e){let{imageUrl:t,caption:a}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:a}}}}]); \ No newline at end of file diff --git a/assets/js/a7456010.5f9bbb01.js b/assets/js/a7456010.5f9bbb01.js new file mode 100644 index 0000000..4e5dd12 --- /dev/null +++ b/assets/js/a7456010.5f9bbb01.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1235],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.b74e8d88.js b/assets/js/a7bd4aaa.b74e8d88.js new file mode 100644 index 0000000..f1c27df --- /dev/null +++ b/assets/js/a7bd4aaa.b74e8d88.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7098],{4532:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(6540);var r=s(1213),o=s(2967),t=s(2252),c=s(2831),i=s(1463),u=s(4848);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:e.version,tag:(0,o.tU)(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.e3,{className:e.className,children:(0,u.jsx)(t.n,{version:e,children:(0,c.v)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]); \ No newline at end of file diff --git a/assets/js/a8f61235.cffc3c7f.js b/assets/js/a8f61235.cffc3c7f.js new file mode 100644 index 0000000..9ae0f62 --- /dev/null +++ b/assets/js/a8f61235.cffc3c7f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9269],{9755:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>i});var a=n(4848),c=n(8453);const o={},r="Decentralized spatial data",s={id:"core-concepts/decentralized-spatial-data",title:"Decentralized spatial data",description:"",source:"@site/docs/core-concepts/decentralized-spatial-data.md",sourceDirName:"core-concepts",slug:"/core-concepts/decentralized-spatial-data",permalink:"/docs/core-concepts/decentralized-spatial-data",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},d={},i=[];function l(e){const t={h1:"h1",...(0,c.R)(),...e.components};return(0,a.jsx)(t.h1,{id:"decentralized-spatial-data",children:"Decentralized spatial data"})}function p(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>s});var a=n(6540);const c={},o=a.createContext(c);function r(e){const t=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:r(e.components),a.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.6844256b.js b/assets/js/a94703ab.6844256b.js new file mode 100644 index 0000000..14026da --- /dev/null +++ b/assets/js/a94703ab.6844256b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9048],{2559:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(6540),o=n(4164),i=n(1213),s=n(7559),l=n(1754),r=n(6588),c=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.gk)();return(0,d.Mq)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.$)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3109),x=n(6347),f=n(4581),j=n(6342),v=n(3465);function _(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const A={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function g(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",A.collapseSidebarButton),onClick:t,children:(0,b.jsx)(_,{className:A.collapseSidebarButtonIcon})})}var k=n(5041),C=n(9532);const S=Symbol("EmptyContext"),T=a.createContext(S);function N(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(T.Provider,{value:i,children:t})}var I=n(1422),B=n(9169),y=n(8774),w=n(2303);function L(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:a})}function E(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.p)(),v=function(e){const t=(0,w.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(t),_=(0,l.w8)(t,i),A=(0,B.ys)(x,i),{collapsed:g,setCollapsed:k}=(0,I.u)({initialState:()=>!!h&&(!_&&t.collapsed)}),{expandedItem:N,setExpandedItem:E}=function(){const e=(0,a.useContext)(T);if(e===S)throw new C.dV("DocSidebarItemsExpandedStateProvider");return e}(),M=function(e){void 0===e&&(e=!g),E(e?null:c),k(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,C.ZC)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:_,collapsed:g,updateCollapsed:M}),(0,a.useEffect)((()=>{h&&null!=N&&N!==c&&f&&k(!0)}),[h,N,c,k,f]),(0,b.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":g},p),children:[(0,b.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":A}),children:[(0,b.jsx)(y.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":_}),onClick:h?e=>{n?.(t),x?M(!1):(e.preventDefault(),M())}:()=>{n?.(t)},"aria-current":A?"page":void 0,role:h&&!x?"button":void 0,"aria-expanded":h&&!x?!g:void 0,href:h?v??"#":v,...d,children:m}),x&&h&&(0,b.jsx)(L,{collapsed:g,categoryLabel:m,onClick:e=>{e.preventDefault(),M()}})]}),(0,b.jsx)(I.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:(0,b.jsx)(U,{items:u,tabIndex:g?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var M=n(6654),H=n(3186);const G={menuExternalLink:"menuExternalLink_NmtK"};function W(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l.w8)(t,a),x=(0,M.A)(d);return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(y.A,{className:(0,o.A)("menu__link",!x&&G.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(H.A,{})]})},u)}const P={menuHtmlItem:"menuHtmlItem_M9Kj"};function R(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(n),l&&[P.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function D(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(E,{item:t,...n});case"html":return(0,b.jsx)(R,{item:t,...n});default:return(0,b.jsx)(W,{item:t,...n})}}function F(e){let{items:t,...n}=e;const a=(0,l.Y)(t,n.activePath);return(0,b.jsx)(N,{children:a.map(((e,t)=>(0,b.jsx)(D,{item:e,index:t,...n},t)))})}const U=(0,a.memo)(F),V={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Y(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,k.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",V.menu,l&&V.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:n,activePath:t,level:1})})})}const K="sidebar_njMd",z="sidebarWithHideableNavbar_wUlq",q="sidebarHidden_VK0M",O="sidebarLogo_isFc";function J(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.p)();return(0,b.jsxs)("div",{className:(0,o.A)(K,s&&z,i&&q),children:[s&&(0,b.jsx)(v.A,{tabIndex:-1,className:O}),(0,b.jsx)(Y,{path:t,sidebar:n}),l&&(0,b.jsx)(g,{onClick:a})]})}const Q=a.memo(J);var X=n(5600),Z=n(9876);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,Z.M)();return(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(X.GX,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(Q,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(_,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function se(e){let{children:t}=e;const n=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.A)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.t)();return(0,b.jsx)("main",{className:(0,o.A)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function ue(e){let{children:t}=e;const n=(0,r.t)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(3363);function be(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(me.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},3363:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(4164),o=n(1312),i=n(1107),s=n(4848);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.ed09cce9.js b/assets/js/aba21aa0.ed09cce9.js new file mode 100644 index 0000000..8a87549 --- /dev/null +++ b/assets/js/aba21aa0.ed09cce9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/acecf23e.92dddac5.js b/assets/js/acecf23e.92dddac5.js new file mode 100644 index 0000000..251c76b --- /dev/null +++ b/assets/js/acecf23e.92dddac5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1903],{1912:s=>{s.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/b5b6e5e3.9d608202.js b/assets/js/b5b6e5e3.9d608202.js new file mode 100644 index 0000000..40eb365 --- /dev/null +++ b/assets/js/b5b6e5e3.9d608202.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7298],{6942:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>t,metadata:()=>l,toc:()=>a});var o=s(4848),i=s(8453);const t={},r="Location Types",l={id:"location-proof-protocol/location-types",title:"Location Types",description:"v0.1",source:"@site/docs/location-proof-protocol/location-types.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/location-types",permalink:"/docs/location-proof-protocol/location-types",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"EAS Schema",permalink:"/docs/location-proof-protocol/eas-schema"},next:{title:"Strategies + Recipes",permalink:"/docs/location-proof-protocol/strategies-recipes"}},c={},a=[{value:"v0.1",id:"v01",level:2},{value:"Future Categories of Location Types",id:"future-categories-of-location-types",level:3},{value:"Diverse Spatial Reference Systems",id:"diverse-spatial-reference-systems",level:3}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"location-types",children:"Location Types"}),"\n",(0,o.jsx)(n.h2,{id:"v01",children:"v0.1"}),"\n",(0,o.jsx)(n.p,{children:"To ensure location proofs are as versatile as possible, we are giving users / developers the option of creating proofs that adhere to any\nlocation type."}),"\n",(0,o.jsx)(n.p,{children:'This requires creating a standardized set of categories for "location types" that include various ways of representing locations such as\ndifferent coordinate systems, H3 strings, geohashes, and more. The purpose of this is to ensure interoperability and clarity in geospatial\ndata management, while still offering flexibility for different proof types.'}),"\n",(0,o.jsxs)(n.admonition,{title:"Alpha Locations",type:"tip",children:[(0,o.jsx)(n.p,{children:(0,o.jsxs)(n.strong,{children:["Initially, location proofs will use WGS84 decimal degree coordinates, ordered as ",(0,o.jsx)(n.code,{children:"[longitude, latitude]"}),"."]})}),(0,o.jsxs)(n.p,{children:["These coordinate pairs will be formatted as strings, converted to bytes for storage onchain. The working ",(0,o.jsx)(n.code,{children:"locationType"})," will be set to\n",(0,o.jsx)(n.code,{children:"DecimalDegrees<string>"}),"."]})]}),"\n",(0,o.jsxs)(n.p,{children:["If you would like to develop proofs that use an alternative location encoding (like those listed below), reach out on\n",(0,o.jsx)(n.a,{href:"https://t.me/+UkTOSXnDcDM5ZTBk",children:"Telegram"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"future-categories-of-location-types",children:"Future Categories of Location Types"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Geographic Coordinates (Lat/Long)"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Decimal Degrees"}),": Standard longitude and latitude (e.g., ",(0,o.jsx)(n.code,{children:"[-122.4194, 37.7749]"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Degrees, Minutes, Seconds (DMS)"}),": Latitude and longitude in degrees, minutes, and seconds (e.g., ",(0,o.jsx)(n.code,{children:"37\xb046'30\" N, 122\xb025'10\" W"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Projected Coordinates"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Universal Transverse Mercator (UTM)"}),": Uses a series of zones for global coverage (e.g., ",(0,o.jsx)(n.code,{children:"10S 551000 4182000"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"State Plane Coordinate System (SPCS)"}),": Used in the United States (e.g., ",(0,o.jsx)(n.code,{children:"X: 2000000, Y: 500000"})," in a specific state plane zone)."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Geohashes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Geohash"}),": A hierarchical spatial data structure which subdivides space into buckets of grid shape (e.g., ",(0,o.jsx)(n.code,{children:"9q8yyz"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"H3 Hexagons"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"H3"}),": A hierarchical hexagonal grid system used for spatial indexing (e.g., ",(0,o.jsx)(n.code,{children:"85283473fffffff"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Plus Codes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Open Location Code (OLC)"}),": Developed by Google, it's a code that represents an area anywhere on Earth (e.g., ",(0,o.jsx)(n.code,{children:"7FG8V4VC+G7"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Grid References"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Military Grid Reference System (MGRS)"}),": Used by NATO militaries for locating points on the Earth (e.g., ",(0,o.jsx)(n.code,{children:"33TWN8382558454"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"British National Grid (OSGB)"}),": Used in Great Britain (e.g., ",(0,o.jsx)(n.code,{children:"TQ 298828"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Place Names / Addresses"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Postal Address"}),": Standard mailing address (e.g., ",(0,o.jsx)(n.code,{children:"1600 Amphitheatre Parkway, Mountain View, CA"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Named Locations"}),": Known place names (e.g., ",(0,o.jsx)(n.code,{children:"Eiffel Tower"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"What3Words References"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"W3W"}),": A geocoding system that encodes geographic coordinates into three dictionary words (e.g., ///filled.count.soap)."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Formal specification of the location types and how they are represented is in development, and will be documented here."}),"\n",(0,o.jsx)(n.h3,{id:"diverse-spatial-reference-systems",children:"Diverse Spatial Reference Systems"}),"\n",(0,o.jsx)(n.p,{children:"Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial\nreference systems, such as:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Being with a person at a particular time"}),"\n",(0,o.jsx)(n.li,{children:"Location in a metaverse space"}),"\n",(0,o.jsx)(n.li,{children:"Presence in a vehicle or a specific room"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and\nrelative. However, initial development of the protocol will focus on positioning objects / events on Earth."})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>l});var o=s(6540);const i={},t=o.createContext(i);function r(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bd6d0e35.413a63d4.js b/assets/js/bd6d0e35.413a63d4.js new file mode 100644 index 0000000..b8bb7e4 --- /dev/null +++ b/assets/js/bd6d0e35.413a63d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1798],{6373:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var n=e(4848),s=e(8453);const r={},i="Logbook",c={id:"spatial-registries/logbook",title:"Logbook",description:"",source:"@site/docs/spatial-registries/logbook.md",sourceDirName:"spatial-registries",slug:"/spatial-registries/logbook",permalink:"/docs/spatial-registries/logbook",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},a={},l=[];function u(t){const o={h1:"h1",...(0,s.R)(),...t.components};return(0,n.jsx)(o.h1,{id:"logbook",children:"Logbook"})}function p(t={}){const{wrapper:o}={...(0,s.R)(),...t.components};return o?(0,n.jsx)(o,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}},8453:(t,o,e)=>{e.d(o,{R:()=>i,x:()=>c});var n=e(6540);const s={},r=n.createContext(s);function i(t){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function c(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),n.createElement(r.Provider,{value:o},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/c15d9823.a40c7001.js b/assets/js/c15d9823.a40c7001.js new file mode 100644 index 0000000..d7824f5 --- /dev/null +++ b/assets/js/c15d9823.a40c7001.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8146],{9328:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.a9298228.js b/assets/js/ccc49370.a9298228.js new file mode 100644 index 0000000..673e32c --- /dev/null +++ b/assets/js/ccc49370.a9298228.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3249],{3858:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});n(6540);var i=n(4164),a=n(1213),o=n(7559),r=n(7131),s=n(6535),l=n(4651),c=n(1312),d=n(9022),u=n(4848);function m(e){const{nextItem:t,prevItem:n}=e;return(0,u.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,c.T)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"}),children:[n&&(0,u.jsx)(d.A,{...n,subLabel:(0,u.jsx)(c.A,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer Post"})}),t&&(0,u.jsx)(d.A,{...t,subLabel:(0,u.jsx)(c.A,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older Post"}),isNext:!0})]})}function g(){const{assets:e,metadata:t}=(0,r.e)(),{title:n,description:i,date:o,tags:s,authors:l,frontMatter:c}=t,{keywords:d}=c,m=e.image??c.image;return(0,u.jsxs)(a.be,{title:n,description:i,keywords:d,image:m,children:[(0,u.jsx)("meta",{property:"og:type",content:"article"}),(0,u.jsx)("meta",{property:"article:published_time",content:o}),l.some((e=>e.url))&&(0,u.jsx)("meta",{property:"article:author",content:l.map((e=>e.url)).filter(Boolean).join(",")}),s.length>0&&(0,u.jsx)("meta",{property:"article:tag",content:s.map((e=>e.label)).join(",")})]})}var h=n(5260),f=n(6676);function p(){const e=(0,f.J)();return(0,u.jsx)(h.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(e)})})}var v=n(7763),x=n(996);function b(e){let{sidebar:t,children:n}=e;const{metadata:i,toc:a}=(0,r.e)(),{nextItem:o,prevItem:c,frontMatter:d,unlisted:g}=i,{hide_table_of_contents:h,toc_min_heading_level:f,toc_max_heading_level:p}=d;return(0,u.jsxs)(s.A,{sidebar:t,toc:!h&&a.length>0?(0,u.jsx)(v.A,{toc:a,minHeadingLevel:f,maxHeadingLevel:p}):void 0,children:[g&&(0,u.jsx)(x.A,{}),(0,u.jsx)(l.A,{children:n}),(o||c)&&(0,u.jsx)(m,{nextItem:o,prevItem:c})]})}function j(e){const t=e.content;return(0,u.jsx)(r.i,{content:e.content,isBlogPostPage:!0,children:(0,u.jsxs)(a.e3,{className:(0,i.A)(o.G.wrapper.blogPages,o.G.page.blogPostPage),children:[(0,u.jsx)(g,{}),(0,u.jsx)(p,{}),(0,u.jsx)(b,{sidebar:e.sidebar,children:(0,u.jsx)(t,{})})]})})}},7763:(e,t,n)=>{n.d(t,{A:()=>c});n(6540);var i=n(4164),a=n(5195);const o={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var r=n(4848);const s="table-of-contents__link toc-highlight",l="table-of-contents__link--active";function c(e){let{className:t,...n}=e;return(0,r.jsx)("div",{className:(0,i.A)(o.tableOfContents,"thin-scrollbar",t),children:(0,r.jsx)(a.A,{...n,linkClassName:s,linkActiveClassName:l})})}},5195:(e,t,n)=>{n.d(t,{A:()=>f});var i=n(6540),a=n(6342);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const i=n.slice(2,e.level);e.parentIndex=Math.max(...i),n[e.level]=t}));const i=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):i.push(a)})),i}function r(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:i}=e;return t.flatMap((e=>{const t=r({toc:e.children,minHeadingLevel:n,maxHeadingLevel:i});return function(e){return e.level>=n&&e.level<=i}(e)?[{...e,children:t}]:t}))}function s(e){const t=e.getBoundingClientRect();return t.top===t.bottom?s(e.parentNode):t}function l(e,t){let{anchorTopOffset:n}=t;const i=e.find((e=>s(e).top>=n));if(i){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(s(i))?i:e[e.indexOf(i)-1]??null}return e[e.length-1]??null}function c(){const e=(0,i.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.p)();return(0,i.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,i.useRef)(void 0),n=c();(0,i.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:i,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:r}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(i),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const i=[];for(let a=t;a<=n;a+=1)i.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(i.join()))}({minHeadingLevel:o,maxHeadingLevel:r}),c=l(s,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}var u=n(8774),m=n(4848);function g(e){let{toc:t,className:n,linkClassName:i,isChild:a}=e;return t.length?(0,m.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:i??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(g,{isChild:!0,toc:e.children,className:n,linkClassName:i})]},e.id)))}):null}const h=i.memo(g);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:s="table-of-contents__link",linkActiveClassName:l,minHeadingLevel:c,maxHeadingLevel:u,...g}=e;const f=(0,a.p)(),p=c??f.tableOfContents.minHeadingLevel,v=u??f.tableOfContents.maxHeadingLevel,x=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,i.useMemo)((()=>r({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:v});return d((0,i.useMemo)((()=>{if(s&&l)return{linkClassName:s,linkActiveClassName:l,minHeadingLevel:p,maxHeadingLevel:v}}),[s,l,p,v])),(0,m.jsx)(h,{toc:x,className:n,linkClassName:s,...g})}},996:(e,t,n)=>{n.d(t,{A:()=>g});n(6540);var i=n(4164),a=n(1312),o=n(5260),r=n(4848);function s(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,r.jsx)(o.A,{children:(0,r.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=n(7559),u=n(7293);function m(e){let{className:t}=e;return(0,r.jsx)(u.A,{type:"caution",title:(0,r.jsx)(s,{}),className:(0,i.A)(t,d.G.common.unlistedBanner),children:(0,r.jsx)(l,{})})}function g(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c,{}),(0,r.jsx)(m,{...e})]})}},6676:(e,t,n)=>{n.d(t,{k:()=>d,J:()=>u});var i=n(6025),a=n(4586),o=n(6803);var r=n(7131);const s=e=>new Date(e).toISOString();function l(e){const t=e.map(m);return{author:1===t.length?t[0]:t}}function c(e,t,n){return e?{image:g({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${n}`})}:{}}function d(e){const{siteConfig:t}=(0,a.A)(),{withBaseUrl:n}=(0,i.hH)(),{metadata:{blogDescription:o,blogTitle:r,permalink:d}}=e,u=`${t.url}${d}`;return{"@context":"https://schema.org","@type":"Blog","@id":u,mainEntityOfPage:u,headline:r,description:o,blogPost:e.items.map((e=>function(e,t,n){const{assets:i,frontMatter:a,metadata:o}=e,{date:r,title:d,description:u,lastUpdatedAt:m}=o,g=i.image??a.image,h=a.keywords??[],f=`${t.url}${o.permalink}`,p=m?s(m):void 0;return{"@type":"BlogPosting","@id":f,mainEntityOfPage:f,url:f,headline:d,name:d,description:u,datePublished:r,...p?{dateModified:p}:{},...l(o.authors),...c(g,n,d),...h?{keywords:h}:{}}}(e.content,t,n)))}}function u(){const e=function(){const e=(0,o.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}(),{assets:t,metadata:n}=(0,r.e)(),{siteConfig:d}=(0,a.A)(),{withBaseUrl:u}=(0,i.hH)(),{date:m,title:g,description:h,frontMatter:f,lastUpdatedAt:p}=n,v=t.image??f.image,x=f.keywords??[],b=p?s(p):void 0,j=`${d.url}${n.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":j,mainEntityOfPage:j,url:j,headline:g,name:g,description:h,datePublished:m,...b?{dateModified:b}:{},...l(n.authors),...c(v,u,g),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${d.url}${e.blogBasePath}`,name:e.blogTitle}}}function m(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function g(e){let{imageUrl:t,caption:n}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:n}}}}]); \ No newline at end of file diff --git a/assets/js/ce48dac6.c8131e26.js b/assets/js/ce48dac6.c8131e26.js new file mode 100644 index 0000000..bc6efc5 --- /dev/null +++ b/assets/js/ce48dac6.c8131e26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[981],{9155:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>i,contentTitle:()=>a,default:()=>l,frontMatter:()=>s,metadata:()=>r,toc:()=>p});var o=t(4848),c=t(8453);const s={},a="Onchain geospatial",r={id:"core-concepts/onchain-geospatial",title:"Onchain geospatial",description:"",source:"@site/docs/core-concepts/onchain-geospatial.md",sourceDirName:"core-concepts",slug:"/core-concepts/onchain-geospatial",permalink:"/docs/core-concepts/onchain-geospatial",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},p=[];function u(n){const e={h1:"h1",...(0,c.R)(),...n.components};return(0,o.jsx)(e.h1,{id:"onchain-geospatial",children:"Onchain geospatial"})}function l(n={}){const{wrapper:e}={...(0,c.R)(),...n.components};return e?(0,o.jsx)(e,{...n,children:(0,o.jsx)(u,{...n})}):u(n)}},8453:(n,e,t)=>{t.d(e,{R:()=>a,x:()=>r});var o=t(6540);const c={},s=o.createContext(c);function a(n){const e=o.useContext(s);return o.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function r(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(c):n.components||c:a(n.components),o.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/d9f32620.2564a5e9.js b/assets/js/d9f32620.2564a5e9.js new file mode 100644 index 0000000..f08b292 --- /dev/null +++ b/assets/js/d9f32620.2564a5e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5557],{7447:(e,o,s)=>{s.r(o),s.d(o,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>i});var n=s(4848),t=s(8453);const r={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},l=void 0,a={permalink:"/blog/welcome",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",tags:[{inline:!1,label:"Facebook",permalink:"/blog/tags/facebook",description:"Facebook tag description"},{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},i=[];function u(e){const o={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,n.jsxs)(o.p,{children:["Simply add Markdown files (or folders) to the ",(0,n.jsx)(o.code,{children:"blog"})," directory."]}),"\n",(0,n.jsxs)(o.p,{children:["Regular blog authors can be added to ",(0,n.jsx)(o.code,{children:"authors.yml"}),"."]}),"\n",(0,n.jsx)(o.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,n.jsx)(o.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.img,{alt:"Docusaurus Plushie",src:s(5917).A+"",width:"1500",height:"500"})}),"\n",(0,n.jsx)(o.p,{children:"The blog supports tags as well!"}),"\n",(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,n.jsx)(o.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},5917:(e,o,s)=>{s.d(o,{A:()=>n});const n=s.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},8453:(e,o,s)=>{s.d(o,{R:()=>l,x:()=>a});var n=s(6540);const t={},r=n.createContext(t);function l(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/dff1c289.9333c787.js b/assets/js/dff1c289.9333c787.js new file mode 100644 index 0000000..aa249a3 --- /dev/null +++ b/assets/js/dff1c289.9333c787.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1724],{8043:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>a});var o=n(4848),r=n(8453);const i={sidebar_position:1},d="Manage Docs Versions",c={id:"tutorial-extras/manage-docs-versions",title:"Manage Docs Versions",description:"Docusaurus can manage multiple versions of your docs.",source:"@site/docs/tutorial-extras/manage-docs-versions.md",sourceDirName:"tutorial-extras",slug:"/tutorial-extras/manage-docs-versions",permalink:"/docs/tutorial-extras/manage-docs-versions",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1}},t={},a=[{value:"Create a docs version",id:"create-a-docs-version",level:2},{value:"Add a Version Dropdown",id:"add-a-version-dropdown",level:2},{value:"Update an existing version",id:"update-an-existing-version",level:2}];function l(e){const s={code:"code",h1:"h1",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.h1,{id:"manage-docs-versions",children:"Manage Docs Versions"}),"\n",(0,o.jsx)(s.p,{children:"Docusaurus can manage multiple versions of your docs."}),"\n",(0,o.jsx)(s.h2,{id:"create-a-docs-version",children:"Create a docs version"}),"\n",(0,o.jsx)(s.p,{children:"Release a version 1.0 of your project:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-bash",children:"npm run docusaurus docs:version 1.0\n"})}),"\n",(0,o.jsxs)(s.p,{children:["The ",(0,o.jsx)(s.code,{children:"docs"})," folder is copied into ",(0,o.jsx)(s.code,{children:"versioned_docs/version-1.0"})," and ",(0,o.jsx)(s.code,{children:"versions.json"})," is created."]}),"\n",(0,o.jsx)(s.p,{children:"Your docs now have 2 versions:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"1.0"})," at ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/"})," for the version 1.0 docs"]}),"\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"current"})," at ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/next/"})," for the ",(0,o.jsx)(s.strong,{children:"upcoming, unreleased docs"})]}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"add-a-version-dropdown",children:"Add a Version Dropdown"}),"\n",(0,o.jsx)(s.p,{children:"To navigate seamlessly across versions, add a version dropdown."}),"\n",(0,o.jsxs)(s.p,{children:["Modify the ",(0,o.jsx)(s.code,{children:"docusaurus.config.js"})," file:"]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-js",metastring:'title="docusaurus.config.js"',children:"export default {\n themeConfig: {\n navbar: {\n items: [\n // highlight-start\n {\n type: 'docsVersionDropdown',\n },\n // highlight-end\n ],\n },\n },\n};\n"})}),"\n",(0,o.jsx)(s.p,{children:"The docs version dropdown appears in your navbar:"}),"\n",(0,o.jsx)(s.p,{children:(0,o.jsx)(s.img,{alt:"Docs Version Dropdown",src:n(9565).A+"",width:"370",height:"302"})}),"\n",(0,o.jsx)(s.h2,{id:"update-an-existing-version",children:"Update an existing version"}),"\n",(0,o.jsx)(s.p,{children:"It is possible to edit versioned docs in their respective folder:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"versioned_docs/version-1.0/hello.md"})," updates ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/hello"})]}),"\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"docs/hello.md"})," updates ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/next/hello"})]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},9565:(e,s,n)=>{n.d(s,{A:()=>o});const o=n.p+"assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png"},8453:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>c});var o=n(6540);const r={},i=o.createContext(r);function d(e){const s=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),o.createElement(i.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e273c56f.3d9c4200.js b/assets/js/e273c56f.3d9c4200.js new file mode 100644 index 0000000..2befbb1 --- /dev/null +++ b/assets/js/e273c56f.3d9c4200.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9328],{4014:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var s=o(4848),i=o(8453);const n={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},r=void 0,u={permalink:"/blog/first-blog-post",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",tags:[{inline:!1,label:"Hola",permalink:"/blog/tags/hola",description:"Hola tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},a={authorsImageUrls:[void 0]},l=[];function c(t){const e={p:"p",...(0,i.R)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function m(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>r,x:()=>u});var s=o(6540);const i={},n=s.createContext(i);function r(t){const e=s.useContext(n);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function u(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),s.createElement(n.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/e44a2883.1dd47946.js b/assets/js/e44a2883.1dd47946.js new file mode 100644 index 0000000..b0a5ef9 --- /dev/null +++ b/assets/js/e44a2883.1dd47946.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4736],{8350:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=t(4848),s=t(8453);const o={sidebar_position:2},a="Translate your site",i={id:"tutorial-extras/translate-your-site",title:"Translate your site",description:"Let's translate docs/intro.md to French.",source:"@site/docs/tutorial-extras/translate-your-site.md",sourceDirName:"tutorial-extras",slug:"/tutorial-extras/translate-your-site",permalink:"/docs/tutorial-extras/translate-your-site",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2}},l={},c=[{value:"Configure i18n",id:"configure-i18n",level:2},{value:"Translate a doc",id:"translate-a-doc",level:2},{value:"Start your localized site",id:"start-your-localized-site",level:2},{value:"Add a Locale Dropdown",id:"add-a-locale-dropdown",level:2},{value:"Build your localized site",id:"build-your-localized-site",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",img:"img",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"translate-your-site",children:"Translate your site"}),"\n",(0,r.jsxs)(n.p,{children:["Let's translate ",(0,r.jsx)(n.code,{children:"docs/intro.md"})," to French."]}),"\n",(0,r.jsx)(n.h2,{id:"configure-i18n",children:"Configure i18n"}),"\n",(0,r.jsxs)(n.p,{children:["Modify ",(0,r.jsx)(n.code,{children:"docusaurus.config.js"})," to add support for the ",(0,r.jsx)(n.code,{children:"fr"})," locale:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",metastring:'title="docusaurus.config.js"',children:"export default {\n i18n: {\n defaultLocale: 'en',\n locales: ['en', 'fr'],\n },\n};\n"})}),"\n",(0,r.jsx)(n.h2,{id:"translate-a-doc",children:"Translate a doc"}),"\n",(0,r.jsxs)(n.p,{children:["Copy the ",(0,r.jsx)(n.code,{children:"docs/intro.md"})," file to the ",(0,r.jsx)(n.code,{children:"i18n/fr"})," folder:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/\n\ncp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Translate ",(0,r.jsx)(n.code,{children:"i18n/fr/docusaurus-plugin-content-docs/current/intro.md"})," in French."]}),"\n",(0,r.jsx)(n.h2,{id:"start-your-localized-site",children:"Start your localized site"}),"\n",(0,r.jsx)(n.p,{children:"Start your site on the French locale:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm run start -- --locale fr\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Your localized site is accessible at ",(0,r.jsx)(n.a,{href:"http://localhost:3000/fr/",children:"http://localhost:3000/fr/"})," and the ",(0,r.jsx)(n.code,{children:"Getting Started"})," page is translated."]}),"\n",(0,r.jsx)(n.admonition,{type:"caution",children:(0,r.jsx)(n.p,{children:"In development, you can only use one locale at a time."})}),"\n",(0,r.jsx)(n.h2,{id:"add-a-locale-dropdown",children:"Add a Locale Dropdown"}),"\n",(0,r.jsx)(n.p,{children:"To navigate seamlessly across languages, add a locale dropdown."}),"\n",(0,r.jsxs)(n.p,{children:["Modify the ",(0,r.jsx)(n.code,{children:"docusaurus.config.js"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",metastring:'title="docusaurus.config.js"',children:"export default {\n themeConfig: {\n navbar: {\n items: [\n // highlight-start\n {\n type: 'localeDropdown',\n },\n // highlight-end\n ],\n },\n },\n};\n"})}),"\n",(0,r.jsx)(n.p,{children:"The locale dropdown now appears in your navbar:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Locale Dropdown",src:t(5252).A+"",width:"370",height:"302"})}),"\n",(0,r.jsx)(n.h2,{id:"build-your-localized-site",children:"Build your localized site"}),"\n",(0,r.jsx)(n.p,{children:"Build your site for a specific locale:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm run build -- --locale fr\n"})}),"\n",(0,r.jsx)(n.p,{children:"Or build your site to include all the locales at once:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm run build\n"})})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5252:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png"},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var r=t(6540);const s={},o=r.createContext(s);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e5aefb32.33ae4d86.js b/assets/js/e5aefb32.33ae4d86.js new file mode 100644 index 0000000..f54292a --- /dev/null +++ b/assets/js/e5aefb32.33ae4d86.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3276],{8539:a=>{a.exports=JSON.parse('{"tag":{"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/facebook","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/f0e24734.b195996c.js b/assets/js/f0e24734.b195996c.js new file mode 100644 index 0000000..e04b7a2 --- /dev/null +++ b/assets/js/f0e24734.b195996c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1450],{96:(o,e,t)=>{t.r(e),t.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=t(4848),r=t(8453);const i={},a="Rationale",s={id:"location-proof-protocol/rationale",title:"Rationale",description:"We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and",source:"@site/docs/location-proof-protocol/rationale.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/rationale",permalink:"/docs/location-proof-protocol/rationale",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Introduction",permalink:"/docs/location-proof-protocol/introduction"},next:{title:"Architecture",permalink:"/docs/location-proof-protocol/architecture"}},c={},l=[];function d(o){const e={h1:"h1",li:"li",p:"p",ul:"ul",...(0,r.R)(),...o.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"rationale",children:"Rationale"}),"\n",(0,n.jsx)(e.p,{children:"We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and\nverifying location proofs."}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsx)(e.li,{children:"Locations can be represented in a range of ways, within a range of different spatial reference systems"}),"\n",(0,n.jsx)(e.li,{children:"There are many different possible strategies for proving location in trust-minimized environments \u2014 different use cases will require\ndifferent levels of precision, confidence, cost, privacy etc"}),"\n",(0,n.jsx)(e.li,{children:"Users will want to attach all sorts of different media to proofs, from photos and videos to LIDAR scans to URLs"}),"\n"]}),"\n",(0,n.jsx)(e.p,{children:"Our design is intended to flexibly serve all of these use cases, while provided a common format to talk about verifiable location on the\ndecentralized web. By converging on this standard we hope location proofs will be composable and interoperable."})]})}function p(o={}){const{wrapper:e}={...(0,r.R)(),...o.components};return e?(0,n.jsx)(e,{...o,children:(0,n.jsx)(d,{...o})}):d(o)}},8453:(o,e,t)=>{t.d(e,{R:()=>a,x:()=>s});var n=t(6540);const r={},i=n.createContext(r);function a(o){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof o?o(e):{...e,...o}}),[e,o])}function s(o){let e;return e=o.disableParentContext?"function"==typeof o.components?o.components(r):o.components||r:a(o.components),n.createElement(i.Provider,{value:e},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/f4f34a3a.b47754e9.js b/assets/js/f4f34a3a.b47754e9.js new file mode 100644 index 0000000..f35bd3c --- /dev/null +++ b/assets/js/f4f34a3a.b47754e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3637],{5512:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=o(4848),n=o(8453);const r={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,c={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",tags:[{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},u=[];function i(t){const e={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,n.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Blog posts support ",(0,s.jsx)(e.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(e.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(e.admonition,{type:"tip",children:[(0,s.jsx)(e.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-js",children:"<button onClick={() => alert('button clicked!')}>Click me!</button>\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(i,{...t})}):i(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>a,x:()=>c});var s=o(6540);const n={},r=s.createContext(n);function a(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:a(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/f55d3e7a.88d09a56.js b/assets/js/f55d3e7a.88d09a56.js new file mode 100644 index 0000000..3c2eb42 --- /dev/null +++ b/assets/js/f55d3e7a.88d09a56.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8863],{745:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>n,metadata:()=>l,toc:()=>d});var r=t(4848),o=t(8453);const n={sidebar_position:5},i="Deploy your site",l={id:"tutorial-basics/deploy-your-site",title:"Deploy your site",description:"Docusaurus is a static-site-generator (also called Jamstack).",source:"@site/docs/tutorial-basics/deploy-your-site.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/deploy-your-site",permalink:"/docs/tutorial-basics/deploy-your-site",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5}},c={},d=[{value:"Build your site",id:"build-your-site",level:2},{value:"Deploy your site",id:"deploy-your-site-1",level:2}];function a(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.h1,{id:"deploy-your-site",children:"Deploy your site"}),"\n",(0,r.jsxs)(s.p,{children:["Docusaurus is a ",(0,r.jsx)(s.strong,{children:"static-site-generator"})," (also called ",(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"https://jamstack.org/",children:"Jamstack"})}),")."]}),"\n",(0,r.jsxs)(s.p,{children:["It builds your site as simple ",(0,r.jsx)(s.strong,{children:"static HTML, JavaScript and CSS files"}),"."]}),"\n",(0,r.jsx)(s.h2,{id:"build-your-site",children:"Build your site"}),"\n",(0,r.jsxs)(s.p,{children:["Build your site ",(0,r.jsx)(s.strong,{children:"for production"}),":"]}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-bash",children:"npm run build\n"})}),"\n",(0,r.jsxs)(s.p,{children:["The static files are generated in the ",(0,r.jsx)(s.code,{children:"build"})," folder."]}),"\n",(0,r.jsx)(s.h2,{id:"deploy-your-site-1",children:"Deploy your site"}),"\n",(0,r.jsx)(s.p,{children:"Test your production build locally:"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-bash",children:"npm run serve\n"})}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.code,{children:"build"})," folder is now served at ",(0,r.jsx)(s.a,{href:"http://localhost:3000/",children:"http://localhost:3000/"}),"."]}),"\n",(0,r.jsxs)(s.p,{children:["You can now deploy the ",(0,r.jsx)(s.code,{children:"build"})," folder ",(0,r.jsx)(s.strong,{children:"almost anywhere"})," easily, ",(0,r.jsx)(s.strong,{children:"for free"})," or very small cost (read the ",(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"https://docusaurus.io/docs/deployment",children:"Deployment Guide"})}),")."]})]})}function u(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var r=t(6540);const o={},n=r.createContext(o);function i(e){const s=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(n.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f81c1134.e9ba17ee.js b/assets/js/f81c1134.e9ba17ee.js new file mode 100644 index 0000000..f8fd947 --- /dev/null +++ b/assets/js/f81c1134.e9ba17ee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8130],{7735:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/blog/welcome","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","tags":[{"inline":false,"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description"},{"inline":false,"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.405,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"},{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["slorber","yangshun"],"tags":["facebook","hello","docusaurus"]},"unlisted":false,"nextItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/blog/mdx-blog-post","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","tags":[{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.175,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":["slorber"],"tags":["docusaurus"]},"unlisted":false,"prevItem":{"title":"Welcome","permalink":"/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n```js\\n<button onClick={() => alert(\'button clicked!\')}>Click me!</button>\\n```\\n\\n<button onClick={() => alert(\'button clicked!\')}>Click me!</button>\\n\\n:::"},{"id":"long-blog-post","metadata":{"permalink":"/blog/long-blog-post","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","tags":[{"inline":false,"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":2.05,"hasTruncateMarker":true,"authors":[{"name":"Endilie Yacop Sucipto","title":"Maintainer of Docusaurus","url":"https://github.com/endiliey","imageURL":"https://github.com/endiliey.png","key":"endi"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":"endi","tags":["hello","docusaurus"]},"unlisted":false,"prevItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!--truncate--\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/blog/first-blog-post","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","date":"2019-05-28T00:00:00.000Z","tags":[{"inline":false,"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.12,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hola","docusaurus"]},"unlisted":false,"prevItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}}')}}]); \ No newline at end of file diff --git a/assets/js/f82cd581.c160cd7f.js b/assets/js/f82cd581.c160cd7f.js new file mode 100644 index 0000000..3262f27 --- /dev/null +++ b/assets/js/f82cd581.c160cd7f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4584],{4035:l=>{l.exports=JSON.parse('{"tag":{"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hello","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/fa823849.72126d87.js b/assets/js/fa823849.72126d87.js new file mode 100644 index 0000000..5589ebc --- /dev/null +++ b/assets/js/fa823849.72126d87.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9002],{6368:(o,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>f,frontMatter:()=>r,metadata:()=>i,toc:()=>p});var e=n(4848),c=n(8453);const r={},s="Location proofs",i={id:"core-concepts/location-proofs",title:"Location proofs",description:"",source:"@site/docs/core-concepts/location-proofs.md",sourceDirName:"core-concepts",slug:"/core-concepts/location-proofs",permalink:"/docs/core-concepts/location-proofs",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},a={},p=[];function u(o){const t={h1:"h1",...(0,c.R)(),...o.components};return(0,e.jsx)(t.h1,{id:"location-proofs",children:"Location proofs"})}function f(o={}){const{wrapper:t}={...(0,c.R)(),...o.components};return t?(0,e.jsx)(t,{...o,children:(0,e.jsx)(u,{...o})}):u(o)}},8453:(o,t,n)=>{n.d(t,{R:()=>s,x:()=>i});var e=n(6540);const c={},r=e.createContext(c);function s(o){const t=e.useContext(r);return e.useMemo((function(){return"function"==typeof o?o(t):{...t,...o}}),[t,o])}function i(o){let t;return t=o.disableParentContext?"function"==typeof o.components?o.components(c):o.components||c:s(o.components),e.createElement(r.Provider,{value:t},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.2164645d.js b/assets/js/main.2164645d.js new file mode 100644 index 0000000..e5887bc --- /dev/null +++ b/assets/js/main.2164645d.js @@ -0,0 +1,2 @@ +/*! For license information please see main.2164645d.js.LICENSE.txt */ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),o=n.n(r),a=n(4054);const i={"003da42b":[()=>n.e(637).then(n.bind(n,6229)),"@site/docs/location-proof-protocol/introduction.md",6229],"0058b4c6":[()=>n.e(849).then(n.t.bind(n,6164,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-175.json",6164],"00fb3d82":[()=>n.e(4192).then(n.bind(n,6466)),"@site/docs/developer-resources/spatial-registries.md",6466],"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,9158)),"@theme/BlogTagsListPage",9158],"09d5ad39":[()=>n.e(1864).then(n.bind(n,1498)),"@site/docs/examples.md",1498],"0e384e19":[()=>n.e(3976).then(n.bind(n,619)),"@site/docs/intro.md",619],17896441:[()=>Promise.all([n.e(1869),n.e(1538),n.e(8401)]).then(n.bind(n,2447)),"@theme/DocItem",2447],"18c41134":[()=>n.e(9262).then(n.bind(n,3849)),"@site/docs/tutorial-basics/markdown-features.mdx",3849],"1b6ec5d4":[()=>n.e(4365).then(n.bind(n,7850)),"@site/docs/location-proof-protocol/architecture.md",7850],"1df93b7f":[()=>Promise.all([n.e(1869),n.e(4583)]).then(n.bind(n,5579)),"@site/src/pages/index.tsx",5579],"1e4232ab":[()=>n.e(1953).then(n.bind(n,3976)),"@site/docs/tutorial-basics/create-a-document.md",3976],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(1538),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"207666d2":[()=>n.e(2148).then(n.bind(n,7025)),"@site/docs/location-proof-protocol/media-types.md",7025],"2c1b52bf":[()=>n.e(2382).then(n.bind(n,320)),"@site/docs/location-proof-protocol/eas-schema.md",320],"3217192f":[()=>n.e(8462).then(n.t.bind(n,8174,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-docusaurus-f20.json",8174],"35131ec2":[()=>n.e(3666).then(n.bind(n,3161)),"@site/docs/spatial-registries/spatial-sol.md",3161],"36994c47":[()=>n.e(9858).then(n.t.bind(n,5516,19)),"@generated/docusaurus-plugin-content-blog/default/__plugin.json",5516],"393be207":[()=>n.e(4134).then(n.bind(n,633)),"@site/src/pages/markdown-page.md",633],"3a2db09e":[()=>n.e(8121).then(n.t.bind(n,8070,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-df9.json",8070],"4e345e3b":[()=>n.e(7174).then(n.bind(n,9955)),"@site/docs/introducing-astral.md",9955],"533a09ca":[()=>n.e(3098).then(n.bind(n,4700)),"@site/docs/tutorial-basics/create-a-blog-post.md",4700],"584535cc":[()=>n.e(8623).then(n.bind(n,6778)),"@site/docs/location-proof-protocol/strategies-recipes.md",6778],59362658:[()=>n.e(9325).then(n.bind(n,1180)),"@site/blog/2021-08-01-mdx-blog-post.mdx",1180],"5c868d36":[()=>n.e(1974).then(n.bind(n,5254)),"@site/docs/tutorial-basics/create-a-page.md",5254],"5e90a9b3":[()=>n.e(8025).then(n.t.bind(n,7134,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-hola-73f.json",7134],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"6875c492":[()=>Promise.all([n.e(1869),n.e(1538),n.e(3242),n.e(4813)]).then(n.bind(n,3069)),"@theme/BlogTagsPostsPage",3069],"6edd94a7":[()=>n.e(9103).then(n.bind(n,9731)),"@site/docs/developer-resources/quickstart.md",9731],"73664a40":[()=>n.e(1972).then(n.bind(n,9581)),"@site/blog/2019-05-29-long-blog-post.md",9581],"7661071f":[()=>n.e(8737).then(n.bind(n,4137)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",4137],"7ae2cc57":[()=>n.e(3764).then(n.bind(n,1762)),"@site/docs/core-concepts/what-is-spatial-data.md",1762],"814f3328":[()=>n.e(7472).then(n.t.bind(n,5513,19)),"~blog/default/blog-post-list-prop-default.json",5513],"822bd8ab":[()=>n.e(2748).then(n.bind(n,8611)),"@site/docs/tutorial-basics/congratulations.md",8611],"8717b14a":[()=>n.e(3694).then(n.bind(n,1615)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",1615],"9176b25c":[()=>n.e(3874).then(n.bind(n,5453)),"@site/docs/developer-resources/location-attestations.md",5453],"925b3f96":[()=>n.e(8609).then(n.bind(n,5026)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",5026],"9dfd250b":[()=>n.e(2887).then(n.bind(n,1853)),"@site/docs/hello.md",1853],"9e4087bc":[()=>n.e(2711).then(n.bind(n,9331)),"@theme/BlogArchivePage",9331],a6aa9e1f:[()=>Promise.all([n.e(1869),n.e(1538),n.e(3242),n.e(7643)]).then(n.bind(n,5124)),"@theme/BlogListPage",5124],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a8f61235:[()=>n.e(9269).then(n.bind(n,9755)),"@site/docs/core-concepts/decentralized-spatial-data.md",9755],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],acecf23e:[()=>n.e(1903).then(n.t.bind(n,1912,19)),"~blog/default/blogMetadata-default.json",1912],b5b6e5e3:[()=>n.e(7298).then(n.bind(n,6942)),"@site/docs/location-proof-protocol/location-types.md",6942],bd6d0e35:[()=>n.e(1798).then(n.bind(n,6373)),"@site/docs/spatial-registries/logbook.md",6373],c15d9823:[()=>n.e(8146).then(n.t.bind(n,9328,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-bd9.json",9328],ccc49370:[()=>Promise.all([n.e(1869),n.e(1538),n.e(3242),n.e(3249)]).then(n.bind(n,3858)),"@theme/BlogPostPage",3858],ce48dac6:[()=>n.e(981).then(n.bind(n,9155)),"@site/docs/core-concepts/onchain-geospatial.md",9155],d9f32620:[()=>n.e(5557).then(n.bind(n,7447)),"@site/blog/2021-08-26-welcome/index.md",7447],dff1c289:[()=>n.e(1724).then(n.bind(n,8043)),"@site/docs/tutorial-extras/manage-docs-versions.md",8043],e273c56f:[()=>n.e(9328).then(n.bind(n,4014)),"@site/blog/2019-05-28-first-blog-post.md",4014],e44a2883:[()=>n.e(4736).then(n.bind(n,8350)),"@site/docs/tutorial-extras/translate-your-site.md",8350],e5aefb32:[()=>n.e(3276).then(n.t.bind(n,8539,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-facebook-f47.json",8539],f0e24734:[()=>n.e(1450).then(n.bind(n,96)),"@site/docs/location-proof-protocol/rationale.md",96],f4f34a3a:[()=>n.e(3637).then(n.bind(n,5512)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",5512],f55d3e7a:[()=>n.e(8863).then(n.bind(n,745)),"@site/docs/tutorial-basics/deploy-your-site.md",745],f81c1134:[()=>n.e(8130).then(n.t.bind(n,7735,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-archive-f05.json",7735],f82cd581:[()=>n.e(4584).then(n.t.bind(n,4035,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-hello-f96.json",4035],fa823849:[()=>n.e(9002).then(n.bind(n,6368)),"@site/docs/core-concepts/location-proofs.md",6368]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return o()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,c.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;delete o.__context;const s=o.__props;return delete o.__props,(0,l.jsx)(u.W,{value:i,children:(0,l.jsx)(a,{...o,...s,...n})})}})}const p=[{path:"/blog",component:d("/blog","b2f"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","182"),exact:!0},{path:"/blog/first-blog-post",component:d("/blog/first-blog-post","89a"),exact:!0},{path:"/blog/long-blog-post",component:d("/blog/long-blog-post","9ad"),exact:!0},{path:"/blog/mdx-blog-post",component:d("/blog/mdx-blog-post","e9f"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","287"),exact:!0},{path:"/blog/tags/docusaurus",component:d("/blog/tags/docusaurus","704"),exact:!0},{path:"/blog/tags/facebook",component:d("/blog/tags/facebook","858"),exact:!0},{path:"/blog/tags/hello",component:d("/blog/tags/hello","299"),exact:!0},{path:"/blog/tags/hola",component:d("/blog/tags/hola","00d"),exact:!0},{path:"/blog/welcome",component:d("/blog/welcome","d2b"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","3d7"),exact:!0},{path:"/docs",component:d("/docs","536"),routes:[{path:"/docs",component:d("/docs","cb5"),routes:[{path:"/docs",component:d("/docs","205"),routes:[{path:"/docs/core-concepts/decentralized-spatial-data",component:d("/docs/core-concepts/decentralized-spatial-data","0ea"),exact:!0},{path:"/docs/core-concepts/location-proofs",component:d("/docs/core-concepts/location-proofs","ed4"),exact:!0},{path:"/docs/core-concepts/onchain-geospatial",component:d("/docs/core-concepts/onchain-geospatial","9ba"),exact:!0},{path:"/docs/core-concepts/what-is-spatial-data",component:d("/docs/core-concepts/what-is-spatial-data","b74"),exact:!0},{path:"/docs/developer-resources/location-attestations",component:d("/docs/developer-resources/location-attestations","964"),exact:!0},{path:"/docs/developer-resources/quickstart",component:d("/docs/developer-resources/quickstart","a05"),exact:!0},{path:"/docs/developer-resources/spatial-registries",component:d("/docs/developer-resources/spatial-registries","145"),exact:!0},{path:"/docs/examples",component:d("/docs/examples","4b9"),exact:!0},{path:"/docs/hello",component:d("/docs/hello","7ae"),exact:!0},{path:"/docs/intro",component:d("/docs/intro","853"),exact:!0},{path:"/docs/introducing-astral",component:d("/docs/introducing-astral","2e2"),exact:!0},{path:"/docs/location-proof-protocol/architecture",component:d("/docs/location-proof-protocol/architecture","f1f"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/eas-schema",component:d("/docs/location-proof-protocol/eas-schema","841"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/introduction",component:d("/docs/location-proof-protocol/introduction","2a1"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/location-types",component:d("/docs/location-proof-protocol/location-types","46b"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/media-types",component:d("/docs/location-proof-protocol/media-types","ae6"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/rationale",component:d("/docs/location-proof-protocol/rationale","790"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/strategies-recipes",component:d("/docs/location-proof-protocol/strategies-recipes","187"),exact:!0,sidebar:"docs"},{path:"/docs/spatial-registries/logbook",component:d("/docs/spatial-registries/logbook","de3"),exact:!0},{path:"/docs/spatial-registries/spatial-sol",component:d("/docs/spatial-registries/spatial-sol","4b0"),exact:!0},{path:"/docs/tutorial-basics/congratulations",component:d("/docs/tutorial-basics/congratulations","70e"),exact:!0},{path:"/docs/tutorial-basics/create-a-blog-post",component:d("/docs/tutorial-basics/create-a-blog-post","315"),exact:!0},{path:"/docs/tutorial-basics/create-a-document",component:d("/docs/tutorial-basics/create-a-document","f86"),exact:!0},{path:"/docs/tutorial-basics/create-a-page",component:d("/docs/tutorial-basics/create-a-page","9f6"),exact:!0},{path:"/docs/tutorial-basics/deploy-your-site",component:d("/docs/tutorial-basics/deploy-your-site","b91"),exact:!0},{path:"/docs/tutorial-basics/markdown-features",component:d("/docs/tutorial-basics/markdown-features","272"),exact:!0},{path:"/docs/tutorial-extras/manage-docs-versions",component:d("/docs/tutorial-extras/manage-docs-versions","a34"),exact:!0},{path:"/docs/tutorial-extras/translate-your-site",component:d("/docs/tutorial-extras/translate-your-site","739"),exact:!0}]}]}]},{path:"/",component:d("/","e5f"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(6540),o=n(4848);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),o=n(5338),a=n(545),i=n(4625),l=n(4784),s=n(8193);const c=[n(119),n(6134),n(6294),n(1043)];var u=n(8328),d=n(6347),p=n(2831),f=n(4848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(5260),h=n(4586),y=n(6025),b=n(6342),v=n(1213),w=n(2131),k=n(4090),x=n(2967),S=n(440),E=n(1463);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,w.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,f.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.applyTrailingSlash)((0,y.Ay)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:o}),(0,f.jsx)("link",{rel:"canonical",href:o})]})}function A(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,b.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(v.be,{image:n}),(0,f.jsx)(C,{}),(0,f.jsx)(_,{}),(0,f.jsx)(E.A,{tag:x.Cy,locale:e}),(0,f.jsx)(g.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;var j=n(6125),N=n(6988),L=n(205);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const o=c.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const R=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(R,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${z}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${z}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function $(){const{siteConfig:{baseUrl:e}}=(0,h.A)();return(0,f.jsx)(f.Fragment,{children:!s.A.canUseDOM&&(0,f.jsx)(g.A,{children:(0,f.jsx)("script",{children:B(e)})})})}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.A)(),{pathname:n}=(0,d.zy)();return t&&n===e?(0,f.jsx)($,{}):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:o}}=(0,h.A)(),a=(0,y.Ay)(e),{htmlLang:i,direction:l}=o[r];return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("html",{lang:i,dir:l}),(0,f.jsx)("title",{children:t}),(0,f.jsx)("meta",{property:"og:title",content:t}),(0,f.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,f.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,f.jsx)("link",{rel:"icon",href:a})]})}var H=n(7489),G=n(2303);function V(){const e=(0,G.A)();return(0,f.jsx)(g.A,{children:(0,f.jsx)("html",{"data-has-hydrated":e})})}const W=(0,p.v)(u.A);function Q(){const e=function(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,p.u)(u.A,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(I,{location:e,children:W})}function K(){return(0,f.jsx)(H.A,{children:(0,f.jsx)(N.l,{children:(0,f.jsxs)(j.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(q,{}),(0,f.jsx)(A,{}),(0,f.jsx)(U,{}),(0,f.jsx)(Q,{})]}),(0,f.jsx)(V,{})]})})})}var Y=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(6921);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Y).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),O(e))},re=Object.freeze(ne);function oe(e){let{children:t}=e;return"hash"===l.default.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const ae=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(a.vd,{children:(0,f.jsx)(oe,{children:(0,f.jsx)(K,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ae)window.docusaurusRoot=o.hydrateRoot(e,t,{onRecoverableError:n});else{const r=o.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};O(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),o=n(4784);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"location-proof-protocol/introduction","docs":[{"id":"core-concepts/decentralized-spatial-data","path":"/docs/core-concepts/decentralized-spatial-data"},{"id":"core-concepts/location-proofs","path":"/docs/core-concepts/location-proofs"},{"id":"core-concepts/onchain-geospatial","path":"/docs/core-concepts/onchain-geospatial"},{"id":"core-concepts/what-is-spatial-data","path":"/docs/core-concepts/what-is-spatial-data"},{"id":"developer-resources/location-attestations","path":"/docs/developer-resources/location-attestations"},{"id":"developer-resources/quickstart","path":"/docs/developer-resources/quickstart"},{"id":"developer-resources/spatial-registries","path":"/docs/developer-resources/spatial-registries"},{"id":"examples","path":"/docs/examples"},{"id":"hello","path":"/docs/hello"},{"id":"intro","path":"/docs/intro"},{"id":"introducing-astral","path":"/docs/introducing-astral"},{"id":"location-proof-protocol/architecture","path":"/docs/location-proof-protocol/architecture","sidebar":"docs"},{"id":"location-proof-protocol/eas-schema","path":"/docs/location-proof-protocol/eas-schema","sidebar":"docs"},{"id":"location-proof-protocol/introduction","path":"/docs/location-proof-protocol/introduction","sidebar":"docs"},{"id":"location-proof-protocol/location-types","path":"/docs/location-proof-protocol/location-types","sidebar":"docs"},{"id":"location-proof-protocol/media-types","path":"/docs/location-proof-protocol/media-types","sidebar":"docs"},{"id":"location-proof-protocol/rationale","path":"/docs/location-proof-protocol/rationale","sidebar":"docs"},{"id":"location-proof-protocol/strategies-recipes","path":"/docs/location-proof-protocol/strategies-recipes","sidebar":"docs"},{"id":"spatial-registries/logbook","path":"/docs/spatial-registries/logbook"},{"id":"spatial-registries/spatial-sol","path":"/docs/spatial-registries/spatial-sol"},{"id":"tutorial-basics/congratulations","path":"/docs/tutorial-basics/congratulations"},{"id":"tutorial-basics/create-a-blog-post","path":"/docs/tutorial-basics/create-a-blog-post"},{"id":"tutorial-basics/create-a-document","path":"/docs/tutorial-basics/create-a-document"},{"id":"tutorial-basics/create-a-page","path":"/docs/tutorial-basics/create-a-page"},{"id":"tutorial-basics/deploy-your-site","path":"/docs/tutorial-basics/deploy-your-site"},{"id":"tutorial-basics/markdown-features","path":"/docs/tutorial-basics/markdown-features"},{"id":"tutorial-extras/manage-docs-versions","path":"/docs/tutorial-extras/manage-docs-versions"},{"id":"tutorial-extras/translate-your-site","path":"/docs/tutorial-extras/translate-your-site"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/location-proof-protocol/introduction","label":"location-proof-protocol/introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.4.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.4.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.4.0"}}}');var c=n(4848);const u={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(6540),o=n(8193),a=n(5260),i=n(440),l=n(781),s=n(3102),c=n(4848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,c.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(p,{children:(0,c.jsxs)(g,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(l.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const m=e=>(0,c.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(545),o=n(4848);function a(e){return(0,o.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(4625),a=n(440),i=n(4586),l=n(6654),s=n(8193),c=n(3427),u=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:v}=(0,i.A)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,u.hH)(),E=(0,c.A)(),_=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>_.current));const C=p||f;const A=(0,l.A)(C),T=C?.replace("pathname://","");let j=void 0!==T?(N=T,y&&(e=>e.startsWith("/"))(N)?S(N):N):void 0;var N;"hash"===x&&j?.startsWith("./")&&(j=j?.slice(1)),j&&A&&(j=(0,a.applyTrailingSlash)(j,{trailingSlash:w,baseUrl:k}));const L=(0,r.useRef)(!1),P=n?o.k2:o.N_,R=s.A.canUseIntersectionObserver,O=(0,r.useRef)(),D=()=>{L.current||null==j||(window.docusaurus.preload(j),L.current=!0)};(0,r.useEffect)((()=>(!R&&A&&null!=j&&window.docusaurus.prefetch(j),()=>{R&&O.current&&O.current.disconnect()})),[O,j,R,A]);const I=j?.startsWith("#")??!1,M=!b.target||"_self"===b.target,F=!j||!A||!M;return h||!I&&F||E.collectLink(j),b.id&&E.collectAnchor(b.id),F?(0,d.jsx)("a",{ref:_,href:j,...C&&!A&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(P,{...b,onMouseEnter:D,onTouchStart:D,innerRef:e=>{_.current=e,R&&e&&A&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=j&&window.docusaurus.prefetch(j))}))})),O.current.observe(e))},to:j,...n&&{isActive:g,activeClassName:m}})}const f=r.forwardRef(p)},418:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>s});var r=n(6540),o=n(4848);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return a(l({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=l({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),o=n(4586),a=n(6654);function i(){const{siteConfig:e}=(0,o.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:o=!1,absolute:i=!1}={},router:l}=e;if(!r||r.startsWith("#")||(0,a.z)(r))return r;if("hash"===l)return r.startsWith("/")?`.${r}`:`./${r}`;if(o)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const s=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:l}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6988);function a(){return(0,r.useContext)(o.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6125);function a(){return(0,r.useContext)(o.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6803:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(3102);function a(){const e=r.useContext(o.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>a});var r=n(6540),o=n(4848);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:l,children:t})}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>p,Gy:()=>u,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>f});var r=n(6347),o=n(4586),a=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>{try{return function(e,t,n){void 0===t&&(t=a.W),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(5947),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(1765),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(4164),o=n(1312),a=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(4848);function u(e){let{as:t,id:n,...u}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,a.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},781:(e,t,n)=>{"use strict";n.d(t,{A:()=>ft});var r=n(6540),o=n(4164),a=n(7489),i=n(1213),l=n(6347),s=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(g,{className:b.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.A)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:A.announcementBarPlaceholder}),(0,u.jsx)(C,{className:A.announcementBarContent}),a&&(0,u.jsx)(E,{onClick:n,className:A.announcementBarClose})]})}var j=n(9876),N=n(3104);var L=n(9532),P=n(5600);const R=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,j.M)(),t=(0,P.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,L.ZC)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(R.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(R);if(!e)throw new L.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,P.YL)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:D(a)})),[o,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=I();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(5293),z=n(2303);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.A)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,o.A)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,o.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.G)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var W=n(3465);function Q(){return(0,u.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(Q,{}),(0,u.jsx)(V,{className:"margin-right--md"}),(0,u.jsx)(K,{})]})}var Z=n(8774),X=n(6025),J=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...c}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,J.A)(o),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,m&&(0,u.jsx)(te.A,{...l&&{width:12,height:12}})]})};return o?(0,u.jsx)(Z.A,{href:s?f:o,...c,...g}):(0,u.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.A)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),le=n(9169),se=n(4586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,u.jsxs)("div",{ref:s,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:l.to?void 0:"#",className:(0,o.A)("navbar__link",a),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:l.children??l.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...s}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.A)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(2131);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";var ye=n(418);const be={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.A)(n,be.navbarSearchContainer),children:t})}var we=n(4070),ke=n(1754);var xe=n(5597);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),g=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(ve,{className:n,children:(0,u.jsx)(ye.A,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.A)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,ke.QB)(t,r),l=a?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>l||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,ke.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,ke.Vd)(r)[0],i=t??a.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,l.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],h=(0,ke.Vd)(n)[0],y=t&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ee[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function Ce(){const e=(0,j.M)(),t=(0,w.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.p)().navbar.items.length,t=I();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function je(){const e=(0,j.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Y,{}),primaryMenu:(0,u.jsx)(Ce,{}),secondaryMenu:(0,u.jsx)(Te,{})}):null}const Ne={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Le(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.p)(),i=(0,j.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,N.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(o.current)return void(o.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-a.current,c=window.innerHeight;l&&i>=l?n(!1):i+c<s&&n(!0)})),(0,c.$)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)("navbar","navbar--fixed-top",n&&[Ne.navbarHideable,!d&&Ne.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Le,{onClick:i.toggle}),(0,u.jsx)(je,{})]})}var Re=n(440);const Oe={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function De(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ie(e){let{error:t}=e;const n=(0,Re.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:Oe.errorBoundaryError,children:n})}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function ze(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,j.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(ze,{})})}const $e={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Me,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(_e,{...e})},t)))})}function qe(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function He(){const e=(0,j.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(qe,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(Be,{}),(0,u.jsx)(Q,{}),(0,u.jsx)(Ue,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ue,{items:r}),(0,u.jsx)(V,{className:$e.colorModeToggle}),!o&&(0,u.jsx)(ve,{children:(0,u.jsx)(ye.A,{})})]})})}function Ge(){return(0,u.jsx)(Pe,{children:(0,u.jsx)(He,{})})}function Ve(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,l=(0,X.Ay)(n),s=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Z.A,{className:"footer__link-item",...r?{href:a?s:r}:{to:l},...i,children:[o,r&&!(0,J.A)(r)&&(0,u.jsx)(te.A,{})]})}function We(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(Ve,{item:t})},t.href??t.to)}function Qe(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(We,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(Qe,{column:e},t)))})}function Ye(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(Ve,{item:t})}function Xe(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(Ze,{item:e}),t.length!==n+1&&(0,u.jsx)(Ye,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(Ke,{columns:t}):(0,u.jsx)(Xe,{links:t})}var et=n(1122);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(et.A,{className:(0,o.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,u.jsx)(nt,{logo:t})}):(0,u.jsx)(nt,{logo:t})}function ot(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.A)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(at,{style:o,links:n&&n.length>0&&(0,u.jsx)(Je,{links:n}),logo:r&&(0,u.jsx)(rt,{logo:r}),copyright:t&&(0,u.jsx)(ot,{copyright:t})})}const lt=r.memo(it),st=(0,L.fM)([F.a,k.o,N.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(P.y_,{children:(0,u.jsx)(j.e,{children:(0,u.jsx)(O,{children:t})})})}]);function ct(e){let{children:t}=e;return(0,u.jsx)(st,{children:t})}var ut=n(1107);function dt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(ut.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(De,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Ie,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_z2l0"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,u.jsxs)(ct,{children:[(0,u.jsx)(i.be,{title:l,description:s}),(0,u.jsx)(v,{}),(0,u.jsx)(T,{}),(0,u.jsx)(Ge,{}),(0,u.jsx)("div",{id:d,className:(0,o.A)(h.G.wrapper.main,pt.mainWrapper,r),children:(0,u.jsx)(a.A,{fallback:e=>(0,u.jsx)(dt,{...e}),children:t})}),!n&&(0,u.jsx)(lt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8774),o=n(6025),a=n(4586),i=n(6342),l=n(1122),s=n(4848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Ay)(t.src),dark:(0,o.Ay)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.Ay)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(c,{logo:l,alt:g,imageClassName:u}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(5260),o=n(4848);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.A,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),o=n(4164),a=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function c(e){let{className:t,children:n}=e;const c=(0,a.A)(),{colorMode:u}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,s.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>c});var r=n(6540),o=n(8193),a=n(205),i=n(3109),l=n(4848);const s="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.A.canUseDOM)return e?u:d}function g(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:s,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,l.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:s,children:o})}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[s,c]=(0,r.useState)(t);return(0,a.A)((()=>{t||i(!0)}),[t]),(0,a.A)((()=>{o&&c(t)}),[o,t]),o?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(6540),o=n(2303),a=n(679),i=n(9532),l=n(6342),s=n(4848);const c=(0,a.Wf)("docusaurus.announcement.dismiss"),u=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,o.A)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>h});var r=n(6540),o=n(8193),a=n(9532),i=n(679),l=n(6342),s=n(4848);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&g(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(c);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),o=n(4070),a=n(7065),i=n(6342),l=n(1754),s=n(9532),c=n(679),u=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,o.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,u.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.C5?(0,u.jsx)(h,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.W);const t=(0,o.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},6588:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>c});var r=n(6540),o=n(9532),a=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(l.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(l);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},9876:(e,t,n)=>{"use strict";n.d(t,{e:()=>f,M:()=>m});var r=n(6540),o=n(5600),a=n(4581),i=n(6347),l=n(9532);function s(e){!function(e){const t=(0,i.W6)(),n=(0,l._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(6342),u=n(4848);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,c.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const u=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function f(e){let{children:t}=e;const n=p();return(0,u.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>s,y_:()=>l});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,l]=a,s=(0,o.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(6540);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),o=n(8193);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},1754:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>f,w8:()=>h,C5:()=>p,B5:()=>E,Vd:()=>k,QB:()=>S,fW:()=>x,OF:()=>w,Y:()=>b});var r=n(6540),o=n(6347),a=n(2831),i=n(4070),l=n(5597),s=n(2252),c=n(6588);function u(e){return Array.from(new Set(e))}var d=n(9169);const p=!!i.Gy;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.ys)(e,t),g=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||g(e.items,t))}function y(e,t){switch(e.type){case"category":return h(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||h(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.ys)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.ys)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,c.t)(),{pathname:t}=(0,o.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,l.g1)(e),o=(0,i.r7)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,o.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,o.B6)(n.pathname,e)));if(!l)return null;const c=l.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.v)(i),sidebarName:c,sidebarItems:u}}},1213:(e,t,n)=>{"use strict";n.d(t,{e3:()=>p,be:()=>u,Jx:()=>f});var r=n(6540),o=n(4164),a=n(5260),i=n(6803),l=n(6025),s=n(4586);var c=n(4848);function u(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const u=function(e){const{siteConfig:t}=(0,s.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.hH)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.A,{children:[t&&(0,c.jsx)("title",{children:u}),t&&(0,c.jsx)("meta",{property:"og:title",content:u}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,o.A)(i,t);return(0,c.jsxs)(d.Provider,{value:l,children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function f(e){let{children:t}=e;const n=(0,i.A)(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(p,{className:(0,o.A)(r,a),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>u});var r=n(6540),o=n(205),a=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,o.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,o.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),o=n(8328),a=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>p,Tv:()=>c,gk:()=>f});var r=n(6540),o=n(8193),a=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(d()),a=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&o<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(o-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>o});n(4586);const r="default";function o(e,t){return`docs-${e}-${t}`}},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>c});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}'),o=r.N;function a(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function i(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const o=i(t?.persistence);return null===o?s:{get:()=>{try{return o.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=o.getItem(n);o.setItem(n,e),a({key:n,oldValue:t,newValue:e,storage:o})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=o.getItem(n);o.removeItem(n),a({key:n,oldValue:e,newValue:null,storage:o})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===o&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),o=n(6347),a=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,o.zy)(),c=(0,a.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),u=l===i?e:e.replace(`/${l}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),o=n(6347),a=n(9532);function i(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),i=(0,a._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(4586);function o(){return(0,r.A)().siteConfig.themeConfig}},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(2566);function o(e){return e.endsWith("/")?e:`${e}/`}function a(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=o,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,n?o(s):a(s));var s;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=a},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return o.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return o.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return o.removeTrailingSlash}});var a=n(2566);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return a.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return a.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return a.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return a.removePrefix}});var i=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>C,yJ:()=>f,sC:()=>T,AO:()=>p});var r=n(8168);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&o(e),s=t&&o(t),c=l||s;if(e&&o(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function h(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),g||(0,l.A)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,c=i.forceRefresh,w=void 0!==c&&c,k=i.getUserConfirmation,x=void 0===k?h:k,S=i.keyLength,E=void 0===S?6:S,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return _&&(a=u(a,_)),f(a,r,n)}function A(){return Math.random().toString(36).substr(2,E)}var T=m();function j(e){(0,r.A)($,e),$.length=n.length,T.notifyListeners($.location,$.action)}function N(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||R(C(e.state))}function L(){R(C(v()))}var P=!1;function R(e){if(P)P=!1,j();else{T.confirmTransitionTo(e,"POP",x,(function(t){t?j({action:"POP",location:e}):function(e){var t=$.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(P=!0,M(o))}(e)}))}}var O=C(v()),D=[O.key];function I(e){return _+p(e)}function M(e){n.go(e)}var F=0;function z(e){1===(F+=e)&&1===e?(window.addEventListener(y,N),a&&window.addEventListener(b,L)):0===F&&(window.removeEventListener(y,N),a&&window.removeEventListener(b,L))}var B=!1;var $={length:n.length,action:"POP",location:O,createHref:I,push:function(e,t){var r="PUSH",a=f(e,t,A(),$.location);T.confirmTransitionTo(a,r,x,(function(e){if(e){var t=I(a),i=a.key,l=a.state;if(o)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf($.location.key),c=D.slice(0,s+1);c.push(a.key),D=c,j({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,A(),$.location);T.confirmTransitionTo(a,r,x,(function(e){if(e){var t=I(a),i=a.key,l=a.state;if(o)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf($.location.key);-1!==s&&(D[s]=a.key),j({action:r,location:a})}else window.location.replace(t)}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=T.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+c(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:c,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(S(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),g||(0,l.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?h:o,i=n.hashType,c=void 0===i?"slash":i,y=e.basename?d(s(e.basename)):"",b=x[c],v=b.encodePath,w=b.decodePath;function C(){var e=w(E());return y&&(e=u(e,y)),f(e)}var A=m();function T(e){(0,r.A)(B,e),B.length=t.length,A.notifyListeners(B.location,B.action)}var j=!1,N=null;function L(){var e,t,n=E(),r=v(n);if(n!==r)_(r);else{var o=C(),i=B.location;if(!j&&(t=o,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(N===p(o))return;N=null,function(e){if(j)j=!1,T();else{var t="POP";A.confirmTransitionTo(e,t,a,(function(n){n?T({action:t,location:e}):function(e){var t=B.location,n=D.lastIndexOf(p(t));-1===n&&(n=0);var r=D.lastIndexOf(p(e));-1===r&&(r=0);var o=n-r;o&&(j=!0,I(o))}(e)}))}}(o)}}var P=E(),R=v(P);P!==R&&_(R);var O=C(),D=[p(O)];function I(e){t.go(e)}var M=0;function F(e){1===(M+=e)&&1===e?window.addEventListener(k,L):0===M&&window.removeEventListener(k,L)}var z=!1;var B={length:t.length,action:"POP",location:O,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(y+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,B.location);A.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),o=v(y+t);if(E()!==o){N=t,function(e){window.location.hash=e}(o);var a=D.lastIndexOf(p(B.location)),i=D.slice(0,a+1);i.push(t),D=i,T({action:n,location:r})}else T()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,B.location);A.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),o=v(y+t);E()!==o&&(N=t,_(o));var a=D.indexOf(p(B.location));-1!==a&&(D[a]=t),T({action:n,location:r})}}))},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(F(1),z=!0),function(){return z&&(z=!1,F(-1)),t()}},listen:function(e){var t=A.appendListener(e);return F(1),function(){F(-1),t()}}};return B}function A(e,t,n){return Math.min(Math.max(e,t),n)}function T(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,c=void 0===s?6:s,u=m();function d(e){(0,r.A)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function g(){return Math.random().toString(36).substr(2,c)}var h=A(l,0,a.length-1),y=a.map((function(e){return f(e,void 0,"string"==typeof e?g():e.key||g())})),b=p;function v(e){var t=A(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:y.length,action:"POP",location:y[h],index:h,entries:y,createHref:b,push:function(e,t){var r="PUSH",o=f(e,t,g(),w.location);u.confirmTransitionTo(o,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,g(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},4146:(e,t,n)=>{"use strict";var r=n(4363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h<i.length;++h){var y=i[h];if(!(a[y]||r&&r[y]||g&&g[y]||l&&l[y])){var b=p(n,y);try{c(t,y,b)}catch(v){}}}}return t}},311:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),o=n(8380),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),a.add(e)}))}i.silent=!1,e.exports=i},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(o>=a.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof c?l.splice.apply(l,[s,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},8692:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=8692},3157:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,a){if(!(r in n)){a.push(r);var i=a.indexOf(r);if(i<a.length-1)throw new Error("Circular dependency: "+a.slice(i).join(" -> "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),m=u;o(m);){for(var g in p={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in u))for(var b in f(y))if(b in u){p[y]=!0;break}for(var v in m=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return l[e]=o}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var u=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},m={};function g(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var h={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){h[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];h[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){h[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){h[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){h[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){h[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){h[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){h[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){h[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var o=h.hasOwnProperty(t)?h[t]:null;(null!==o?0!==o.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!d.call(m,e)||!d.call(f,e)&&(p.test(e)?m[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),h.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),A=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),j=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),P=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var R=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var O=Symbol.iterator;function D(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var I,M=Object.assign;function F(e){if(void 0===I)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);I=t&&t[1]||""}return"\n"+I+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&"string"==typeof c.stack){for(var o=c.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,l=a.length-1;1<=i&&0<=l&&o[i]!==a[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==a[l]){if(1!==i||1!==l)do{if(i--,0>--l||o[i]!==a[l]){var s="\n"+o[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function $(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case x:return"Portal";case _:return"Profiler";case E:return"StrictMode";case j:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case C:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case P:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function q(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function G(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=G(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function W(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=G(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function K(e,t){var n=t.checked;return M({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Y(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Z(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Z(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return M({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(te(n)){if(1<n.length)throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function ae(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ce,ue,de=(ue=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ce=ce||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ue(e,t)}))}:ue);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function ge(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function he(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ge(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(fe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var ye=M({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function _e(e){if(e=wo(e)){if("function"!=typeof xe)throw Error(a(280));var t=e.stateNode;t&&(t=xo(t),xe(e.stateNode,e.type,t))}}function Ce(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function Ae(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,_e(e),t)for(e=0;e<t.length;e++)_e(t[e])}}function Te(e,t){return e(t)}function je(){}var Ne=!1;function Le(e,t,n){if(Ne)return e(t,n);Ne=!0;try{return Te(e,t,n)}finally{Ne=!1,(null!==Se||null!==Ee)&&(je(),Ae())}}function Pe(e,t){var n=e.stateNode;if(null===n)return null;var r=xo(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var Re=!1;if(u)try{var Oe={};Object.defineProperty(Oe,"passive",{get:function(){Re=!0}}),window.addEventListener("test",Oe,Oe),window.removeEventListener("test",Oe,Oe)}catch(ue){Re=!1}function De(e,t,n,r,o,a,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var Ie=!1,Me=null,Fe=!1,ze=null,Be={onError:function(e){Ie=!0,Me=e}};function $e(e,t,n,r,o,a,i,l,s){Ie=!1,Me=null,De.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function qe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(a(188))}function Ge(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return He(o),e;if(i===r)return He(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var l=!1,s=o.child;s;){if(s===n){l=!0,n=o,r=i;break}if(s===r){l=!0,r=o,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=o;break}if(s===r){l=!0,r=i,n=o;break}s=s.sibling}if(!l)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e))?Ve(e):null}function Ve(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ve(e);if(null!==t)return t;e=e.sibling}return null}var We=o.unstable_scheduleCallback,Qe=o.unstable_cancelCallback,Ke=o.unstable_shouldYield,Ye=o.unstable_requestPaint,Ze=o.unstable_now,Xe=o.unstable_getCurrentPriorityLevel,Je=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,at=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ct=64,ut=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,a=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~o;0!==l?r=dt(l):0!==(a&=i)&&(r=dt(a))}else 0!==(i=n&~o)?r=dt(i):0!==a&&(r=dt(a));if(0===r)return 0;if(0!==t&&t!==r&&!(t&o)&&((o=r&-r)>=(a=t&-t)||16===o&&4194240&a))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-it(t)),r|=e[n],t&=~o;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function gt(){var e=ct;return!(4194240&(ct<<=1))&&(ct=64),e}function ht(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var kt,xt,St,Et,_t,Ct=!1,At=[],Tt=null,jt=null,Nt=null,Lt=new Map,Pt=new Map,Rt=[],Ot="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Dt(e,t){switch(e){case"focusin":case"focusout":Tt=null;break;case"dragenter":case"dragleave":jt=null;break;case"mouseover":case"mouseout":Nt=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Pt.delete(t.pointerId)}}function It(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[o]},null!==t&&(null!==(t=wo(t))&&xt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function Mt(e){var t=vo(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=qe(n)))return e.blockedOn=t,void _t(e.priority,(function(){St(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Ft(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=wo(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Ft(e)&&n.delete(t)}function Bt(){Ct=!1,null!==Tt&&Ft(Tt)&&(Tt=null),null!==jt&&Ft(jt)&&(jt=null),null!==Nt&&Ft(Nt)&&(Nt=null),Lt.forEach(zt),Pt.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,Ct||(Ct=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return $t(t,e)}if(0<At.length){$t(At[0],e);for(var n=1;n<At.length;n++){var r=At[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Tt&&$t(Tt,e),null!==jt&&$t(jt,e),null!==Nt&&$t(Nt,e),Lt.forEach(t),Pt.forEach(t),n=0;n<Rt.length;n++)(r=Rt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Rt.length&&null===(n=Rt[0]).blockedOn;)Mt(n),null===n.blockedOn&&Rt.shift()}var qt=w.ReactCurrentBatchConfig,Ht=!0;function Gt(e,t,n,r){var o=vt,a=qt.transition;qt.transition=null;try{vt=1,Wt(e,t,n,r)}finally{vt=o,qt.transition=a}}function Vt(e,t,n,r){var o=vt,a=qt.transition;qt.transition=null;try{vt=4,Wt(e,t,n,r)}finally{vt=o,qt.transition=a}}function Wt(e,t,n,r){if(Ht){var o=Kt(e,t,n,r);if(null===o)Hr(e,t,r,Qt,n),Dt(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return Tt=It(Tt,e,t,n,r,o),!0;case"dragenter":return jt=It(jt,e,t,n,r,o),!0;case"mouseover":return Nt=It(Nt,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return Lt.set(a,It(Lt.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,Pt.set(a,It(Pt.get(a)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(Dt(e,r),4&t&&-1<Ot.indexOf(e)){for(;null!==o;){var a=wo(o);if(null!==a&&kt(a),null===(a=Kt(e,t,n,r))&&Hr(e,t,r,Qt,n),a===o)break;o=a}null!==o&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Qt=null;function Kt(e,t,n,r){if(Qt=null,null!==(e=vo(e=ke(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=qe(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Qt=e,null}function Yt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Zt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,o="value"in Zt?Zt.value:Zt.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return Jt=o.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return M(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,ln,sn,cn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},un=on(cn),dn=M({},cn,{view:0,detail:0}),pn=on(dn),fn=M({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_n,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(an=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=an=0,sn=e),an)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),mn=on(fn),gn=on(M({},fn,{dataTransfer:0})),hn=on(M({},dn,{relatedTarget:0})),yn=on(M({},cn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=M({},cn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=on(bn),wn=on(M({},cn,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function _n(){return En}var Cn=M({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_n,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),An=on(Cn),Tn=on(M({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),jn=on(M({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_n})),Nn=on(M({},cn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=M({},fn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Pn=on(Ln),Rn=[9,13,27,32],On=u&&"CompositionEvent"in window,Dn=null;u&&"documentMode"in document&&(Dn=document.documentMode);var In=u&&"TextEvent"in window&&!Dn,Mn=u&&(!On||Dn&&8<Dn&&11>=Dn),Fn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){Ce(r),0<(t=Vr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Wn=null;function Qn(e){Fr(e,0)}function Kn(e){if(W(ko(e)))return e}function Yn(e,t){if("change"===e)return t}var Zn=!1;if(u){var Xn;if(u){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Zn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){Vn&&(Vn.detachEvent("onpropertychange",nr),Wn=Vn=null)}function nr(e){if("value"===e.propertyName&&Kn(Wn)){var t=[];Gn(t,Wn,e,ke(e)),Le(Qn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Wn=n,(Vn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Wn)}function ar(e,t){if("click"===e)return Kn(t)}function ir(e,t){if("input"===e||"change"===e)return Kn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!d.call(t,o)||!lr(e[o],t[o]))return!1}return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ur(e,t){var n,r=cr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Q((e=t.contentWindow).document)}return t}function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,a=Math.min(r.start,o);r=void 0===r.end?a:Math.min(r.end,o),!e.extend&&a>r&&(o=r,r=a,a=o),o=ur(n,a);var i=ur(n,r);o&&i&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var gr=u&&"documentMode"in document&&11>=document.documentMode,hr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==hr||hr!==Q(r)||("selectionStart"in(r=hr)&&fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Vr(yr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=hr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function _r(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}u&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var Cr=_r("animationend"),Ar=_r("animationiteration"),Tr=_r("animationstart"),jr=_r("transitionend"),Nr=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Pr(e,t){Nr.set(e,t),s(t,[e])}for(var Rr=0;Rr<Lr.length;Rr++){var Or=Lr[Rr];Pr(Or.toLowerCase(),"on"+(Or[0].toUpperCase()+Or.slice(1)))}Pr(Cr,"onAnimationEnd"),Pr(Ar,"onAnimationIteration"),Pr(Tr,"onAnimationStart"),Pr("dblclick","onDoubleClick"),Pr("focusin","onFocus"),Pr("focusout","onBlur"),Pr(jr,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Dr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ir=new Set("cancel close invalid load scroll toggle".split(" ").concat(Dr));function Mr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,i,l,s,c){if($e.apply(this,arguments),Ie){if(!Ie)throw Error(a(198));var u=Me;Ie=!1,Me=null,Fe||(Fe=!0,ze=u)}}(r,t,void 0,e),e.currentTarget=null}function Fr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,c=l.currentTarget;if(l=l.listener,s!==a&&o.isPropagationStopped())break e;Mr(o,l,c),a=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==a&&o.isPropagationStopped())break e;Mr(o,l,c),a=s}}}if(Fe)throw e=ze,Fe=!1,ze=null,e}function zr(e,t){var n=t[ho];void 0===n&&(n=t[ho]=new Set);var r=e+"__bubble";n.has(r)||(qr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),qr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Ir.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Br("selectionchange",!1,t))}}function qr(e,t,n,r){switch(Yt(t)){case 1:var o=Gt;break;case 4:o=Vt;break;default:o=Wt}n=o.bind(null,t,n,e),o=void 0,!Re||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,o){var a=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===o||8===l.nodeType&&l.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===o||8===s.nodeType&&s.parentNode===o))return;i=i.return}for(;null!==l;){if(null===(i=vo(l)))return;if(5===(s=i.tag)||6===s){r=a=i;continue e}l=l.parentNode}}r=r.return}Le((function(){var r=a,o=ke(n),i=[];e:{var l=Nr.get(e);if(void 0!==l){var s=un,c=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=An;break;case"focusin":c="focus",s=hn;break;case"focusout":c="blur",s=hn;break;case"beforeblur":case"afterblur":s=hn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=gn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=jn;break;case Cr:case Ar:case Tr:s=yn;break;case jr:s=Nn;break;case"scroll":s=pn;break;case"wheel":s=Pn;break;case"copy":case"cut":case"paste":s=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Tn}var u=!!(4&t),d=!u&&"scroll"===e,p=u?null!==l?l+"Capture":null:l;u=[];for(var f,m=r;null!==m;){var g=(f=m).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Pe(m,p))&&u.push(Gr(m,g,f)))),d)break;m=m.return}0<u.length&&(l=new s(l,c,null,n,o),i.push({event:l,listeners:u}))}}if(!(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(c=n.relatedTarget||n.fromElement)||!vo(c)&&!c[go])&&(s||l)&&(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?vo(c):null)&&(c!==(d=Ue(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=mn,g="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Tn,g="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==s?l:ko(s),f=null==c?l:ko(c),(l=new u(g,m+"leave",s,n,o)).target=d,l.relatedTarget=f,g=null,vo(o)===r&&((u=new u(p,m+"enter",c,n,o)).target=f,u.relatedTarget=d,g=u),d=g,s&&c)e:{for(p=c,m=0,f=u=s;f;f=Wr(f))m++;for(f=0,g=p;g;g=Wr(g))f++;for(;0<m-f;)u=Wr(u),m--;for(;0<f-m;)p=Wr(p),f--;for(;m--;){if(u===p||null!==p&&u===p.alternate)break e;u=Wr(u),p=Wr(p)}u=null}else u=null;null!==s&&Qr(i,l,s,u,!1),null!==c&&null!==d&&Qr(i,d,c,u,!0)}if("select"===(s=(l=r?ko(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var h=Yn;else if(Hn(l))if(Zn)h=ir;else{h=or;var y=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(h=ar);switch(h&&(h=h(e,r))?Gn(i,h,n,o):(y&&y(e,l,r),"focusout"===e&&(y=l._wrapperState)&&y.controlled&&"number"===l.type&&ee(l,"number",l.value)),y=r?ko(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(hr=y,yr=r,br=null);break;case"focusout":br=yr=hr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,o);break;case"selectionchange":if(gr)break;case"keydown":case"keyup":wr(i,n,o)}var b;if(On)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Bn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Mn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Xt="value"in(Zt=o)?Zt.value:Zt.textContent,Un=!0)),0<(y=Vr(r,v)).length&&(v=new wn(v,e,null,n,o),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=In?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Fn);case"textInput":return(e=t.data)===Fn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!On&&Bn(e,t)?(e=en(),Jt=Xt=Zt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Mn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Vr(r,"onBeforeInput")).length&&(o=new wn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=b))}Fr(i,t)}))}function Gr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Vr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=Pe(e,n))&&r.unshift(Gr(e,a,o)),null!=(a=Pe(e,t))&&r.push(Gr(e,a,o))),e=e.return}return r}function Wr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Qr(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,o?null!=(s=Pe(n,a))&&i.unshift(Gr(n,s,l)):o||null!=(s=Pe(n,a))&&i.push(Gr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Kr=/\r\n?/g,Yr=/\u0000|\uFFFD/g;function Zr(e){return("string"==typeof e?e:""+e).replace(Kr,"\n").replace(Yr,"")}function Xr(e,t,n){if(t=Zr(t),Zr(e)!==t&&n)throw Error(a(425))}function Jr(){}var eo=null,to=null;function no(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ro="function"==typeof setTimeout?setTimeout:void 0,oo="function"==typeof clearTimeout?clearTimeout:void 0,ao="function"==typeof Promise?Promise:void 0,io="function"==typeof queueMicrotask?queueMicrotask:void 0!==ao?function(e){return ao.resolve(null).then(e).catch(lo)}:ro;function lo(e){setTimeout((function(){throw e}))}function so(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&8===o.nodeType)if("/$"===(n=o.data)){if(0===r)return e.removeChild(o),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=o}while(n);Ut(t)}function co(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function uo(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var po=Math.random().toString(36).slice(2),fo="__reactFiber$"+po,mo="__reactProps$"+po,go="__reactContainer$"+po,ho="__reactEvents$"+po,yo="__reactListeners$"+po,bo="__reactHandles$"+po;function vo(e){var t=e[fo];if(t)return t;for(var n=e.parentNode;n;){if(t=n[go]||n[fo]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=uo(e);null!==e;){if(n=e[fo])return n;e=uo(e)}return t}n=(e=n).parentNode}return null}function wo(e){return!(e=e[fo]||e[go])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ko(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function xo(e){return e[mo]||null}var So=[],Eo=-1;function _o(e){return{current:e}}function Co(e){0>Eo||(e.current=So[Eo],So[Eo]=null,Eo--)}function Ao(e,t){Eo++,So[Eo]=e.current,e.current=t}var To={},jo=_o(To),No=_o(!1),Lo=To;function Po(e,t){var n=e.type.contextTypes;if(!n)return To;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Ro(e){return null!=(e=e.childContextTypes)}function Oo(){Co(No),Co(jo)}function Do(e,t,n){if(jo.current!==To)throw Error(a(168));Ao(jo,t),Ao(No,n)}function Io(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(a(108,q(e)||"Unknown",o));return M({},n,r)}function Mo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||To,Lo=jo.current,Ao(jo,e),Ao(No,No.current),!0}function Fo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Io(e,t,Lo),r.__reactInternalMemoizedMergedChildContext=e,Co(No),Co(jo),Ao(jo,e)):Co(No),Ao(No,n)}var zo=null,Bo=!1,$o=!1;function Uo(e){null===zo?zo=[e]:zo.push(e)}function qo(){if(!$o&&null!==zo){$o=!0;var e=0,t=vt;try{var n=zo;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}zo=null,Bo=!1}catch(o){throw null!==zo&&(zo=zo.slice(e+1)),We(Je,qo),o}finally{vt=t,$o=!1}}return null}var Ho=[],Go=0,Vo=null,Wo=0,Qo=[],Ko=0,Yo=null,Zo=1,Xo="";function Jo(e,t){Ho[Go++]=Wo,Ho[Go++]=Vo,Vo=e,Wo=t}function ea(e,t,n){Qo[Ko++]=Zo,Qo[Ko++]=Xo,Qo[Ko++]=Yo,Yo=e;var r=Zo;e=Xo;var o=32-it(r)-1;r&=~(1<<o),n+=1;var a=32-it(t)+o;if(30<a){var i=o-o%5;a=(r&(1<<i)-1).toString(32),r>>=i,o-=i,Zo=1<<32-it(t)+o|n<<o|r,Xo=a+e}else Zo=1<<a|n<<o|r,Xo=e}function ta(e){null!==e.return&&(Jo(e,1),ea(e,1,0))}function na(e){for(;e===Vo;)Vo=Ho[--Go],Ho[Go]=null,Wo=Ho[--Go],Ho[Go]=null;for(;e===Yo;)Yo=Qo[--Ko],Qo[Ko]=null,Xo=Qo[--Ko],Qo[Ko]=null,Zo=Qo[--Ko],Qo[Ko]=null}var ra=null,oa=null,aa=!1,ia=null;function la(e,t){var n=Lc(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function sa(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,ra=e,oa=co(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ra=e,oa=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Yo?{id:Zo,overflow:Xo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Lc(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ra=e,oa=null,!0);default:return!1}}function ca(e){return!(!(1&e.mode)||128&e.flags)}function ua(e){if(aa){var t=oa;if(t){var n=t;if(!sa(e,t)){if(ca(e))throw Error(a(418));t=co(n.nextSibling);var r=ra;t&&sa(e,t)?la(r,n):(e.flags=-4097&e.flags|2,aa=!1,ra=e)}}else{if(ca(e))throw Error(a(418));e.flags=-4097&e.flags|2,aa=!1,ra=e}}}function da(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ra=e}function pa(e){if(e!==ra)return!1;if(!aa)return da(e),aa=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!no(e.type,e.memoizedProps)),t&&(t=oa)){if(ca(e))throw fa(),Error(a(418));for(;t;)la(e,t),t=co(t.nextSibling)}if(da(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){oa=co(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}oa=null}}else oa=ra?co(e.stateNode.nextSibling):null;return!0}function fa(){for(var e=oa;e;)e=co(e.nextSibling)}function ma(){oa=ra=null,aa=!1}function ga(e){null===ia?ia=[e]:ia.push(e)}var ha=w.ReactCurrentBatchConfig;function ya(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=o.refs;null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function ba(e,t){throw e=Object.prototype.toString.call(t),Error(a(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function va(e){return(0,e._init)(e._payload)}function wa(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Rc(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Mc(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function c(e,t,n,r){var a=n.type;return a===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===a||"object"==typeof a&&null!==a&&a.$$typeof===P&&va(a)===t.type)?((r=o(t,n.props)).ref=ya(e,t,n),r.return=e,r):((r=Oc(n.type,n.key,n.props,null,e.mode,r)).ref=ya(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fc(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Dc(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Mc(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Oc(t.type,t.key,t.props,null,e.mode,n)).ref=ya(e,null,t),n.return=e,n;case x:return(t=Fc(t,e.mode,n)).return=e,t;case P:return p(e,(0,t._init)(t._payload),n)}if(te(t)||D(t))return(t=Dc(t,e.mode,n,null)).return=e,t;ba(e,t)}return null}function f(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==o?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===o?c(e,t,n,r):null;case x:return n.key===o?u(e,t,n,r):null;case P:return f(e,t,(o=n._init)(n._payload),r)}if(te(n)||D(n))return null!==o?null:d(e,t,n,r,null);ba(e,n)}return null}function m(e,t,n,r,o){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o);case x:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o);case P:return m(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||D(r))return d(t,e=e.get(n)||null,r,o,null);ba(t,r)}return null}function g(o,a,l,s){for(var c=null,u=null,d=a,g=a=0,h=null;null!==d&&g<l.length;g++){d.index>g?(h=d,d=null):h=d.sibling;var y=f(o,d,l[g],s);if(null===y){null===d&&(d=h);break}e&&d&&null===y.alternate&&t(o,d),a=i(y,a,g),null===u?c=y:u.sibling=y,u=y,d=h}if(g===l.length)return n(o,d),aa&&Jo(o,g),c;if(null===d){for(;g<l.length;g++)null!==(d=p(o,l[g],s))&&(a=i(d,a,g),null===u?c=d:u.sibling=d,u=d);return aa&&Jo(o,g),c}for(d=r(o,d);g<l.length;g++)null!==(h=m(d,o,g,l[g],s))&&(e&&null!==h.alternate&&d.delete(null===h.key?g:h.key),a=i(h,a,g),null===u?c=h:u.sibling=h,u=h);return e&&d.forEach((function(e){return t(o,e)})),aa&&Jo(o,g),c}function h(o,l,s,c){var u=D(s);if("function"!=typeof u)throw Error(a(150));if(null==(s=u.call(s)))throw Error(a(151));for(var d=u=null,g=l,h=l=0,y=null,b=s.next();null!==g&&!b.done;h++,b=s.next()){g.index>h?(y=g,g=null):y=g.sibling;var v=f(o,g,b.value,c);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(o,g),l=i(v,l,h),null===d?u=v:d.sibling=v,d=v,g=y}if(b.done)return n(o,g),aa&&Jo(o,h),u;if(null===g){for(;!b.done;h++,b=s.next())null!==(b=p(o,b.value,c))&&(l=i(b,l,h),null===d?u=b:d.sibling=b,d=b);return aa&&Jo(o,h),u}for(g=r(o,g);!b.done;h++,b=s.next())null!==(b=m(g,o,h,b.value,c))&&(e&&null!==b.alternate&&g.delete(null===b.key?h:b.key),l=i(b,l,h),null===d?u=b:d.sibling=b,d=b);return e&&g.forEach((function(e){return t(o,e)})),aa&&Jo(o,h),u}return function e(r,a,i,s){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var c=i.key,u=a;null!==u;){if(u.key===c){if((c=i.type)===S){if(7===u.tag){n(r,u.sibling),(a=o(u,i.props.children)).return=r,r=a;break e}}else if(u.elementType===c||"object"==typeof c&&null!==c&&c.$$typeof===P&&va(c)===u.type){n(r,u.sibling),(a=o(u,i.props)).ref=ya(r,u,i),a.return=r,r=a;break e}n(r,u);break}t(r,u),u=u.sibling}i.type===S?((a=Dc(i.props.children,r.mode,s,i.key)).return=r,r=a):((s=Oc(i.type,i.key,i.props,null,r.mode,s)).ref=ya(r,a,i),s.return=r,r=s)}return l(r);case x:e:{for(u=i.key;null!==a;){if(a.key===u){if(4===a.tag&&a.stateNode.containerInfo===i.containerInfo&&a.stateNode.implementation===i.implementation){n(r,a.sibling),(a=o(a,i.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=Fc(i,r.mode,s)).return=r,r=a}return l(r);case P:return e(r,a,(u=i._init)(i._payload),s)}if(te(i))return g(r,a,i,s);if(D(i))return h(r,a,i,s);ba(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==a&&6===a.tag?(n(r,a.sibling),(a=o(a,i)).return=r,r=a):(n(r,a),(a=Mc(i,r.mode,s)).return=r,r=a),l(r)):n(r,a)}}var ka=wa(!0),xa=wa(!1),Sa=_o(null),Ea=null,_a=null,Ca=null;function Aa(){Ca=_a=Ea=null}function Ta(e){var t=Sa.current;Co(Sa),e._currentValue=t}function ja(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Na(e,t){Ea=e,Ca=_a=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(vl=!0),e.firstContext=null)}function La(e){var t=e._currentValue;if(Ca!==e)if(e={context:e,memoizedValue:t,next:null},null===_a){if(null===Ea)throw Error(a(308));_a=e,Ea.dependencies={lanes:0,firstContext:e}}else _a=_a.next=e;return t}var Pa=null;function Ra(e){null===Pa?Pa=[e]:Pa.push(e)}function Oa(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Ra(t)):(n.next=o.next,o.next=n),t.interleaved=n,Da(e,r)}function Da(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Ia=!1;function Ma(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Fa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function za(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ba(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Ts){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Da(e,n)}return null===(o=r.interleaved)?(t.next=t,Ra(r)):(t.next=o.next,o.next=t),r.interleaved=t,Da(e,n)}function $a(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Ua(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function qa(e,t,n,r){var o=e.updateQueue;Ia=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?a=c:i.next=c,i=s;var u=e.alternate;null!==u&&((l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s))}if(null!==a){var d=o.baseState;for(i=0,u=c=s=null,l=a;;){var p=l.lane,f=l.eventTime;if((r&p)===p){null!==u&&(u=u.next={eventTime:f,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var m=e,g=l;switch(p=t,f=n,g.tag){case 1:if("function"==typeof(m=g.payload)){d=m.call(f,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p="function"==typeof(m=g.payload)?m.call(f,d,p):m))break e;d=M({},d,p);break e;case 2:Ia=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(p=o.effects)?o.effects=[l]:p.push(l))}else f={eventTime:f,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=f,s=d):u=u.next=f,i|=p;if(null===(l=l.next)){if(null===(l=o.shared.pending))break;l=(p=l).next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}if(null===u&&(s=d),o.baseState=s,o.firstBaseUpdate=c,o.lastBaseUpdate=u,null!==(t=o.shared.interleaved)){o=t;do{i|=o.lane,o=o.next}while(o!==t)}else null===a&&(o.shared.lanes=0);Is|=i,e.lanes=i,e.memoizedState=d}}function Ha(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(a(191,o));o.call(r)}}}var Ga={},Va=_o(Ga),Wa=_o(Ga),Qa=_o(Ga);function Ka(e){if(e===Ga)throw Error(a(174));return e}function Ya(e,t){switch(Ao(Qa,t),Ao(Wa,e),Ao(Va,Ga),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Co(Va),Ao(Va,t)}function Za(){Co(Va),Co(Wa),Co(Qa)}function Xa(e){Ka(Qa.current);var t=Ka(Va.current),n=se(t,e.type);t!==n&&(Ao(Wa,e),Ao(Va,n))}function Ja(e){Wa.current===e&&(Co(Va),Co(Wa))}var ei=_o(0);function ti(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ni=[];function ri(){for(var e=0;e<ni.length;e++)ni[e]._workInProgressVersionPrimary=null;ni.length=0}var oi=w.ReactCurrentDispatcher,ai=w.ReactCurrentBatchConfig,ii=0,li=null,si=null,ci=null,ui=!1,di=!1,pi=0,fi=0;function mi(){throw Error(a(321))}function gi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function hi(e,t,n,r,o,i){if(ii=i,li=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,oi.current=null===e||null===e.memoizedState?Ji:el,e=n(r,o),di){i=0;do{if(di=!1,pi=0,25<=i)throw Error(a(301));i+=1,ci=si=null,t.updateQueue=null,oi.current=tl,e=n(r,o)}while(di)}if(oi.current=Xi,t=null!==si&&null!==si.next,ii=0,ci=si=li=null,ui=!1,t)throw Error(a(300));return e}function yi(){var e=0!==pi;return pi=0,e}function bi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ci?li.memoizedState=ci=e:ci=ci.next=e,ci}function vi(){if(null===si){var e=li.alternate;e=null!==e?e.memoizedState:null}else e=si.next;var t=null===ci?li.memoizedState:ci.next;if(null!==t)ci=t,si=e;else{if(null===e)throw Error(a(310));e={memoizedState:(si=e).memoizedState,baseState:si.baseState,baseQueue:si.baseQueue,queue:si.queue,next:null},null===ci?li.memoizedState=ci=e:ci=ci.next=e}return ci}function wi(e,t){return"function"==typeof t?t(e):t}function ki(e){var t=vi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=si,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var l=o.next;o.next=i.next,i.next=l}r.baseQueue=o=i,n.pending=null}if(null!==o){i=o.next,r=r.baseState;var s=l=null,c=null,u=i;do{var d=u.lane;if((ii&d)===d)null!==c&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var p={lane:d,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};null===c?(s=c=p,l=r):c=c.next=p,li.lanes|=d,Is|=d}u=u.next}while(null!==u&&u!==i);null===c?l=r:c.next=s,lr(r,t.memoizedState)||(vl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=c,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{i=o.lane,li.lanes|=i,Is|=i,o=o.next}while(o!==e)}else null===o&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function xi(e){var t=vi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{i=e(i,l.action),l=l.next}while(l!==o);lr(i,t.memoizedState)||(vl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Si(){}function Ei(e,t){var n=li,r=vi(),o=t(),i=!lr(r.memoizedState,o);if(i&&(r.memoizedState=o,vl=!0),r=r.queue,Ii(Ai.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==ci&&1&ci.memoizedState.tag){if(n.flags|=2048,Li(9,Ci.bind(null,n,r,o,t),void 0,null),null===js)throw Error(a(349));30&ii||_i(n,t,o)}return o}function _i(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ci(e,t,n,r){t.value=n,t.getSnapshot=r,Ti(t)&&ji(e)}function Ai(e,t,n){return n((function(){Ti(t)&&ji(e)}))}function Ti(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(r){return!0}}function ji(e){var t=Da(e,1);null!==t&&nc(t,e,1,-1)}function Ni(e){var t=bi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:wi,lastRenderedState:e},t.queue=e,e=e.dispatch=Qi.bind(null,li,e),[t.memoizedState,e]}function Li(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Pi(){return vi().memoizedState}function Ri(e,t,n,r){var o=bi();li.flags|=e,o.memoizedState=Li(1|t,n,void 0,void 0===r?null:r)}function Oi(e,t,n,r){var o=vi();r=void 0===r?null:r;var a=void 0;if(null!==si){var i=si.memoizedState;if(a=i.destroy,null!==r&&gi(r,i.deps))return void(o.memoizedState=Li(t,n,a,r))}li.flags|=e,o.memoizedState=Li(1|t,n,a,r)}function Di(e,t){return Ri(8390656,8,e,t)}function Ii(e,t){return Oi(2048,8,e,t)}function Mi(e,t){return Oi(4,2,e,t)}function Fi(e,t){return Oi(4,4,e,t)}function zi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Bi(e,t,n){return n=null!=n?n.concat([e]):null,Oi(4,4,zi.bind(null,t,e),n)}function $i(){}function Ui(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&gi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function qi(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&gi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Hi(e,t,n){return 21&ii?(lr(n,t)||(n=gt(),li.lanes|=n,Is|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,vl=!0),e.memoizedState=n)}function Gi(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=ai.transition;ai.transition={};try{e(!1),t()}finally{vt=n,ai.transition=r}}function Vi(){return vi().memoizedState}function Wi(e,t,n){var r=tc(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ki(e))Yi(t,n);else if(null!==(n=Oa(e,t,n,r))){nc(n,e,r,ec()),Zi(n,t,r)}}function Qi(e,t,n){var r=tc(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ki(e))Yi(t,o);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=a(i,n);if(o.hasEagerState=!0,o.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(o.next=o,Ra(t)):(o.next=s.next,s.next=o),void(t.interleaved=o)}}catch(c){}null!==(n=Oa(e,t,o,r))&&(nc(n,e,r,o=ec()),Zi(n,t,r))}}function Ki(e){var t=e.alternate;return e===li||null!==t&&t===li}function Yi(e,t){di=ui=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Zi(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var Xi={readContext:La,useCallback:mi,useContext:mi,useEffect:mi,useImperativeHandle:mi,useInsertionEffect:mi,useLayoutEffect:mi,useMemo:mi,useReducer:mi,useRef:mi,useState:mi,useDebugValue:mi,useDeferredValue:mi,useTransition:mi,useMutableSource:mi,useSyncExternalStore:mi,useId:mi,unstable_isNewReconciler:!1},Ji={readContext:La,useCallback:function(e,t){return bi().memoizedState=[e,void 0===t?null:t],e},useContext:La,useEffect:Di,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Ri(4194308,4,zi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ri(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ri(4,2,e,t)},useMemo:function(e,t){var n=bi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=bi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Wi.bind(null,li,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},bi().memoizedState=e},useState:Ni,useDebugValue:$i,useDeferredValue:function(e){return bi().memoizedState=e},useTransition:function(){var e=Ni(!1),t=e[0];return e=Gi.bind(null,e[1]),bi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=li,o=bi();if(aa){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===js)throw Error(a(349));30&ii||_i(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Di(Ai.bind(null,r,i,e),[e]),r.flags|=2048,Li(9,Ci.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=bi(),t=js.identifierPrefix;if(aa){var n=Xo;t=":"+t+"R"+(n=(Zo&~(1<<32-it(Zo)-1)).toString(32)+n),0<(n=pi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=fi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},el={readContext:La,useCallback:Ui,useContext:La,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:qi,useReducer:ki,useRef:Pi,useState:function(){return ki(wi)},useDebugValue:$i,useDeferredValue:function(e){return Hi(vi(),si.memoizedState,e)},useTransition:function(){return[ki(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1},tl={readContext:La,useCallback:Ui,useContext:La,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:qi,useReducer:xi,useRef:Pi,useState:function(){return xi(wi)},useDebugValue:$i,useDeferredValue:function(e){var t=vi();return null===si?t.memoizedState=e:Hi(t,si.memoizedState,e)},useTransition:function(){return[xi(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1};function nl(e,t){if(e&&e.defaultProps){for(var n in t=M({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:M({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ol={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=za(r,o);a.payload=t,null!=n&&(a.callback=n),null!==(t=Ba(e,a,o))&&(nc(t,e,o,r),$a(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=za(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=Ba(e,a,o))&&(nc(t,e,o,r),$a(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ec(),r=tc(e),o=za(n,r);o.tag=2,null!=t&&(o.callback=t),null!==(t=Ba(e,o,r))&&(nc(t,e,r,n),$a(t,e,r))}};function al(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(o,a))}function il(e,t,n){var r=!1,o=To,a=t.contextType;return"object"==typeof a&&null!==a?a=La(a):(o=Ro(t)?Lo:jo.current,a=(r=null!=(r=t.contextTypes))?Po(e,o):To),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ol,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function ll(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ol.enqueueReplaceState(t,t.state,null)}function sl(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs={},Ma(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=La(a):(a=Ro(t)?Lo:jo.current,o.context=Po(e,a)),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(rl(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&ol.enqueueReplaceState(o,o.state,null),qa(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4194308)}function cl(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o,digest:null}}function ul(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=za(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hs||(Hs=!0,Gs=r),dl(0,t)},n}function ml(e,t,n){(n=za(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){dl(0,t)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===Vs?Vs=new Set([this]):Vs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=_c.bind(null,e,t,n),t.then(e,e))}function hl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,o){return 1&e.mode?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=za(-1,1)).tag=2,Ba(n,t,1))),n.lanes|=1),e)}var bl=w.ReactCurrentOwner,vl=!1;function wl(e,t,n,r){t.child=null===e?xa(t,null,n,r):ka(t,e.child,n,r)}function kl(e,t,n,r,o){n=n.render;var a=t.ref;return Na(t,o),r=hi(e,t,n,r,a,o),n=yi(),null===e||vl?(aa&&n&&ta(t),t.flags|=1,wl(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hl(e,t,o))}function xl(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||Pc(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Oc(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Sl(e,t,a,r,o))}if(a=e.child,!(e.lanes&o)){var i=a.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Hl(e,t,o)}return t.flags|=1,(e=Rc(a,r)).ref=t.ref,e.return=t,t.child=e}function Sl(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(sr(a,r)&&e.ref===t.ref){if(vl=!1,t.pendingProps=r=a,!(e.lanes&o))return t.lanes=e.lanes,Hl(e,t,o);131072&e.flags&&(vl=!0)}}return Cl(e,t,n,r,o)}function El(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ao(Rs,Ps),Ps|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,Ao(Rs,Ps),Ps|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ao(Rs,Ps),Ps|=n;else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Ao(Rs,Ps),Ps|=r;return wl(e,t,o,n),t.child}function _l(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Cl(e,t,n,r,o){var a=Ro(n)?Lo:jo.current;return a=Po(t,a),Na(t,o),n=hi(e,t,n,r,a,o),r=yi(),null===e||vl?(aa&&r&&ta(t),t.flags|=1,wl(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hl(e,t,o))}function Al(e,t,n,r,o){if(Ro(n)){var a=!0;Mo(t)}else a=!1;if(Na(t,o),null===t.stateNode)ql(e,t),il(t,n,r),sl(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=La(c):c=Po(t,c=Ro(n)?Lo:jo.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&ll(t,i,r,c),Ia=!1;var p=t.memoizedState;i.state=p,qa(t,r,i,o),s=t.memoizedState,l!==r||p!==s||No.current||Ia?("function"==typeof u&&(rl(t,n,u,r),s=t.memoizedState),(l=Ia||al(t,n,l,r,p,s,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Fa(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:nl(t.type,l),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=La(s):s=Po(t,s=Ro(n)?Lo:jo.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&ll(t,i,r,s),Ia=!1,p=t.memoizedState,i.state=p,qa(t,r,i,o);var m=t.memoizedState;l!==d||p!==m||No.current||Ia?("function"==typeof f&&(rl(t,n,f,r),m=t.memoizedState),(c=Ia||al(t,n,c,r,p,m,s)||!1)?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Tl(e,t,n,r,a,o)}function Tl(e,t,n,r,o,a){_l(e,t);var i=!!(128&t.flags);if(!r&&!i)return o&&Fo(t,n,!1),Hl(e,t,a);r=t.stateNode,bl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=ka(t,e.child,null,a),t.child=ka(t,null,l,a)):wl(e,t,l,a),t.memoizedState=r.state,o&&Fo(t,n,!0),t.child}function jl(e){var t=e.stateNode;t.pendingContext?Do(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Do(0,t.context,!1),Ya(e,t.containerInfo)}function Nl(e,t,n,r,o){return ma(),ga(o),t.flags|=256,wl(e,t,n,r),t.child}var Ll,Pl,Rl,Ol,Dl={dehydrated:null,treeContext:null,retryLane:0};function Il(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ml(e,t,n){var r,o=t.pendingProps,i=ei.current,l=!1,s=!!(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&!!(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Ao(ei,1&i),null===e)return ua(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(s=o.children,e=o.fallback,l?(o=t.mode,l=t.child,s={mode:"hidden",children:s},1&o||null===l?l=Ic(s,o,0,null):(l.childLanes=0,l.pendingProps=s),e=Dc(e,o,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Il(n),t.memoizedState=Dl,e):Fl(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,o,i,l){if(n)return 256&t.flags?(t.flags&=-257,zl(e,t,l,r=ul(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Ic({mode:"visible",children:r.children},o,0,null),(i=Dc(i,o,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,1&t.mode&&ka(t,e.child,null,l),t.child.memoizedState=Il(l),t.memoizedState=Dl,i);if(!(1&t.mode))return zl(e,t,l,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var s=r.dgst;return r=s,zl(e,t,l,r=ul(i=Error(a(419)),r,void 0))}if(s=!!(l&e.childLanes),vl||s){if(null!==(r=js)){switch(l&-l){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=o&(r.suspendedLanes|l)?0:o)&&o!==i.retryLane&&(i.retryLane=o,Da(e,o),nc(r,e,o,-1))}return gc(),zl(e,t,l,r=ul(Error(a(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Ac.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,oa=co(o.nextSibling),ra=t,aa=!0,ia=null,null!==e&&(Qo[Ko++]=Zo,Qo[Ko++]=Xo,Qo[Ko++]=Yo,Zo=e.id,Xo=e.overflow,Yo=t),t=Fl(t,r.children),t.flags|=4096,t)}(e,t,s,o,r,i,n);if(l){l=o.fallback,s=t.mode,r=(i=e.child).sibling;var c={mode:"hidden",children:o.children};return 1&s||t.child===i?(o=Rc(i,c)).subtreeFlags=14680064&i.subtreeFlags:((o=t.child).childLanes=0,o.pendingProps=c,t.deletions=null),null!==r?l=Rc(r,l):(l=Dc(l,s,n,null)).flags|=2,l.return=t,o.return=t,o.sibling=l,t.child=o,o=l,l=t.child,s=null===(s=e.child.memoizedState)?Il(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Dl,o}return e=(l=e.child).sibling,o=Rc(l,{mode:"visible",children:o.children}),!(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Fl(e,t){return(t=Ic({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function zl(e,t,n,r){return null!==r&&ga(r),ka(t,e.child,null,n),(e=Fl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Bl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),ja(e.return,t,n)}function $l(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function Ul(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(wl(e,t,r.children,n),2&(r=ei.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Bl(e,n,t);else if(19===e.tag)Bl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ao(ei,r),1&t.mode)switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ti(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),$l(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ti(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}$l(t,!0,n,null,a);break;case"together":$l(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function ql(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Is|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Rc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Rc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Gl(e,t){if(!aa)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Vl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Wl(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Vl(t),null;case 1:case 17:return Ro(t.type)&&Oo(),Vl(t),null;case 3:return r=t.stateNode,Za(),Co(No),Co(jo),ri(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(pa(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==ia&&(ic(ia),ia=null))),Pl(e,t),Vl(t),null;case 5:Ja(t);var o=Ka(Qa.current);if(n=t.type,null!==e&&null!=t.stateNode)Rl(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return Vl(t),null}if(e=Ka(Va.current),pa(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[fo]=t,r[mo]=i,e=!!(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(o=0;o<Dr.length;o++)zr(Dr[o],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":Y(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":oe(r,i),zr("invalid",r)}for(var s in be(n,i),o=null,i)if(i.hasOwnProperty(s)){var c=i[s];"children"===s?"string"==typeof c?r.textContent!==c&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,c,e),o=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,c,e),o=["children",""+c]):l.hasOwnProperty(s)&&null!=c&&"onScroll"===s&&zr("scroll",r)}switch(n){case"input":V(r),J(r,i,!0);break;case"textarea":V(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=o,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===o.nodeType?o:o.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[fo]=t,e[mo]=r,Ll(e,t,!1,!1),t.stateNode=e;e:{switch(s=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),o=r;break;case"iframe":case"object":case"embed":zr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Dr.length;o++)zr(Dr[o],e);o=r;break;case"source":zr("error",e),o=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),o=r;break;case"details":zr("toggle",e),o=r;break;case"input":Y(e,r),o=K(e,r),zr("invalid",e);break;case"option":default:o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=M({},r,{value:void 0}),zr("invalid",e);break;case"textarea":oe(e,r),o=re(e,r),zr("invalid",e)}for(i in be(n,o),c=o)if(c.hasOwnProperty(i)){var u=c[i];"style"===i?he(e,u):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&de(e,u):"children"===i?"string"==typeof u?("textarea"!==n||""!==u)&&pe(e,u):"number"==typeof u&&pe(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=u&&"onScroll"===i&&zr("scroll",e):null!=u&&v(e,i,u,s))}switch(n){case"input":V(e),J(e,r,!1);break;case"textarea":V(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Vl(t),null;case 6:if(e&&null!=t.stateNode)Ol(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));if(n=Ka(Qa.current),Ka(Va.current),pa(t)){if(r=t.stateNode,n=t.memoizedProps,r[fo]=t,(i=r.nodeValue!==n)&&null!==(e=ra))switch(e.tag){case 3:Xr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,!!(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[fo]=t,t.stateNode=r}return Vl(t),null;case 13:if(Co(ei),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(aa&&null!==oa&&1&t.mode&&!(128&t.flags))fa(),ma(),t.flags|=98560,i=!1;else if(i=pa(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(a(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(a(317));i[fo]=t}else ma(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Vl(t),i=!1}else null!==ia&&(ic(ia),ia=null),i=!0;if(!i)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&ei.current?0===Os&&(Os=3):gc())),null!==t.updateQueue&&(t.flags|=4),Vl(t),null);case 4:return Za(),Pl(e,t),null===e&&Ur(t.stateNode.containerInfo),Vl(t),null;case 10:return Ta(t.type._context),Vl(t),null;case 19:if(Co(ei),null===(i=t.memoizedState))return Vl(t),null;if(r=!!(128&t.flags),null===(s=i.rendering))if(r)Gl(i,!1);else{if(0!==Os||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(s=ti(e))){for(t.flags|=128,Gl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ao(ei,1&ei.current|2),t.child}e=e.sibling}null!==i.tail&&Ze()>Us&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ti(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Gl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!aa)return Vl(t),null}else 2*Ze()-i.renderingStartTime>Us&&1073741824!==n&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ze(),t.sibling=null,n=ei.current,Ao(ei,r?1&n|2:1&n),t):(Vl(t),null);case 22:case 23:return dc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&Ps)&&(Vl(t),6&t.subtreeFlags&&(t.flags|=8192)):Vl(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function Ql(e,t){switch(na(t),t.tag){case 1:return Ro(t.type)&&Oo(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Za(),Co(No),Co(jo),ri(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Ja(t),null;case 13:if(Co(ei),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));ma()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Co(ei),null;case 4:return Za(),null;case 10:return Ta(t.type._context),null;case 22:case 23:return dc(),null;default:return null}}Ll=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Pl=function(){},Rl=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Ka(Va.current);var a,i=null;switch(n){case"input":o=K(e,o),r=K(e,r),i=[];break;case"select":o=M({},o,{value:void 0}),r=M({},r,{value:void 0}),i=[];break;case"textarea":o=re(e,o),r=re(e,r),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(u in be(n,r),n=null,o)if(!r.hasOwnProperty(u)&&o.hasOwnProperty(u)&&null!=o[u])if("style"===u){var s=o[u];for(a in s)s.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(l.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(s=null!=o?o[u]:void 0,r.hasOwnProperty(u)&&c!==s&&(null!=c||null!=s))if("style"===u)if(s){for(a in s)!s.hasOwnProperty(a)||c&&c.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in c)c.hasOwnProperty(a)&&s[a]!==c[a]&&(n||(n={}),n[a]=c[a])}else n||(i||(i=[]),i.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(i=i||[]).push(u,c)):"children"===u?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(l.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&zr("scroll",e),i||s===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},Ol=function(e,t,n,r){n!==r&&(t.flags|=4)};var Kl=!1,Yl=!1,Zl="function"==typeof WeakSet?WeakSet:Set,Xl=null;function Jl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Ec(e,t,r)}else n.current=null}function es(e,t,n){try{n()}catch(r){Ec(e,t,r)}}var ts=!1;function ns(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,void 0!==a&&es(t,n,a)}o=o.next}while(o!==r)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function as(e){var t=e.alternate;null!==t&&(e.alternate=null,as(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[fo],delete t[mo],delete t[ho],delete t[yo],delete t[bo])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function is(e){return 5===e.tag||3===e.tag||4===e.tag}function ls(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||is(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}function cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cs(e,t,n),e=e.sibling;null!==e;)cs(e,t,n),e=e.sibling}var us=null,ds=!1;function ps(e,t,n){for(n=n.child;null!==n;)fs(e,t,n),n=n.sibling}function fs(e,t,n){if(at&&"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(ot,n)}catch(l){}switch(n.tag){case 5:Yl||Jl(n,t);case 6:var r=us,o=ds;us=null,ps(e,t,n),ds=o,null!==(us=r)&&(ds?(e=us,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):us.removeChild(n.stateNode));break;case 18:null!==us&&(ds?(e=us,n=n.stateNode,8===e.nodeType?so(e.parentNode,n):1===e.nodeType&&so(e,n),Ut(e)):so(us,n.stateNode));break;case 4:r=us,o=ds,us=n.stateNode.containerInfo,ds=!0,ps(e,t,n),us=r,ds=o;break;case 0:case 11:case 14:case 15:if(!Yl&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){o=r=r.next;do{var a=o,i=a.destroy;a=a.tag,void 0!==i&&(2&a||4&a)&&es(n,t,i),o=o.next}while(o!==r)}ps(e,t,n);break;case 1:if(!Yl&&(Jl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Ec(n,t,l)}ps(e,t,n);break;case 21:ps(e,t,n);break;case 22:1&n.mode?(Yl=(r=Yl)||null!==n.memoizedState,ps(e,t,n),Yl=r):ps(e,t,n);break;default:ps(e,t,n)}}function ms(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zl),t.forEach((function(t){var r=Tc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function gs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:us=s.stateNode,ds=!1;break e;case 3:case 4:us=s.stateNode.containerInfo,ds=!0;break e}s=s.return}if(null===us)throw Error(a(160));fs(i,l,o),us=null,ds=!1;var c=o.alternate;null!==c&&(c.return=null),o.return=null}catch(u){Ec(o,t,u)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)hs(t,e),t=t.sibling}function hs(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(gs(t,e),ys(e),4&r){try{ns(3,e,e.return),rs(3,e)}catch(h){Ec(e,e.return,h)}try{ns(5,e,e.return)}catch(h){Ec(e,e.return,h)}}break;case 1:gs(t,e),ys(e),512&r&&null!==n&&Jl(n,n.return);break;case 5:if(gs(t,e),ys(e),512&r&&null!==n&&Jl(n,n.return),32&e.flags){var o=e.stateNode;try{pe(o,"")}catch(h){Ec(e,e.return,h)}}if(4&r&&null!=(o=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,c=e.updateQueue;if(e.updateQueue=null,null!==c)try{"input"===s&&"radio"===i.type&&null!=i.name&&Z(o,i),ve(s,l);var u=ve(s,i);for(l=0;l<c.length;l+=2){var d=c[l],p=c[l+1];"style"===d?he(o,p):"dangerouslySetInnerHTML"===d?de(o,p):"children"===d?pe(o,p):v(o,d,p,u)}switch(s){case"input":X(o,i);break;case"textarea":ae(o,i);break;case"select":var f=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!i.multiple;var m=i.value;null!=m?ne(o,!!i.multiple,m,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(o,!!i.multiple,i.defaultValue,!0):ne(o,!!i.multiple,i.multiple?[]:"",!1))}o[mo]=i}catch(h){Ec(e,e.return,h)}}break;case 6:if(gs(t,e),ys(e),4&r){if(null===e.stateNode)throw Error(a(162));o=e.stateNode,i=e.memoizedProps;try{o.nodeValue=i}catch(h){Ec(e,e.return,h)}}break;case 3:if(gs(t,e),ys(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(h){Ec(e,e.return,h)}break;case 4:default:gs(t,e),ys(e);break;case 13:gs(t,e),ys(e),8192&(o=e.child).flags&&(i=null!==o.memoizedState,o.stateNode.isHidden=i,!i||null!==o.alternate&&null!==o.alternate.memoizedState||($s=Ze())),4&r&&ms(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Yl=(u=Yl)||d,gs(t,e),Yl=u):gs(t,e),ys(e),8192&r){if(u=null!==e.memoizedState,(e.stateNode.isHidden=u)&&!d&&1&e.mode)for(Xl=e,d=e.child;null!==d;){for(p=Xl=d;null!==Xl;){switch(m=(f=Xl).child,f.tag){case 0:case 11:case 14:case 15:ns(4,f,f.return);break;case 1:Jl(f,f.return);var g=f.stateNode;if("function"==typeof g.componentWillUnmount){r=f,n=f.return;try{t=r,g.props=t.memoizedProps,g.state=t.memoizedState,g.componentWillUnmount()}catch(h){Ec(r,n,h)}}break;case 5:Jl(f,f.return);break;case 22:if(null!==f.memoizedState){ks(p);continue}}null!==m?(m.return=f,Xl=m):ks(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{o=p.stateNode,u?"function"==typeof(i=o.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=p.stateNode,l=null!=(c=p.memoizedProps.style)&&c.hasOwnProperty("display")?c.display:null,s.style.display=ge("display",l))}catch(h){Ec(e,e.return,h)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=u?"":p.memoizedProps}catch(h){Ec(e,e.return,h)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:gs(t,e),ys(e),4&r&&ms(e);case 21:}}function ys(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(is(n)){var r=n;break e}n=n.return}throw Error(a(160))}switch(r.tag){case 5:var o=r.stateNode;32&r.flags&&(pe(o,""),r.flags&=-33),cs(e,ls(e),o);break;case 3:case 4:var i=r.stateNode.containerInfo;ss(e,ls(e),i);break;default:throw Error(a(161))}}catch(l){Ec(e,e.return,l)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bs(e,t,n){Xl=e,vs(e,t,n)}function vs(e,t,n){for(var r=!!(1&e.mode);null!==Xl;){var o=Xl,a=o.child;if(22===o.tag&&r){var i=null!==o.memoizedState||Kl;if(!i){var l=o.alternate,s=null!==l&&null!==l.memoizedState||Yl;l=Kl;var c=Yl;if(Kl=i,(Yl=s)&&!c)for(Xl=o;null!==Xl;)s=(i=Xl).child,22===i.tag&&null!==i.memoizedState?xs(o):null!==s?(s.return=i,Xl=s):xs(o);for(;null!==a;)Xl=a,vs(a,t,n),a=a.sibling;Xl=o,Kl=l,Yl=c}ws(e)}else 8772&o.subtreeFlags&&null!==a?(a.return=o,Xl=a):ws(e)}}function ws(e){for(;null!==Xl;){var t=Xl;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Yl||rs(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Yl)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:nl(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Ha(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ha(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var u=t.alternate;if(null!==u){var d=u.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&Ut(p)}}}break;default:throw Error(a(163))}Yl||512&t.flags&&os(t)}catch(f){Ec(t,t.return,f)}}if(t===e){Xl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Xl=n;break}Xl=t.return}}function ks(e){for(;null!==Xl;){var t=Xl;if(t===e){Xl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Xl=n;break}Xl=t.return}}function xs(e){for(;null!==Xl;){var t=Xl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rs(4,t)}catch(s){Ec(t,n,s)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(s){Ec(t,o,s)}}var a=t.return;try{os(t)}catch(s){Ec(t,a,s)}break;case 5:var i=t.return;try{os(t)}catch(s){Ec(t,i,s)}}}catch(s){Ec(t,t.return,s)}if(t===e){Xl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Xl=l;break}Xl=t.return}}var Ss,Es=Math.ceil,_s=w.ReactCurrentDispatcher,Cs=w.ReactCurrentOwner,As=w.ReactCurrentBatchConfig,Ts=0,js=null,Ns=null,Ls=0,Ps=0,Rs=_o(0),Os=0,Ds=null,Is=0,Ms=0,Fs=0,zs=null,Bs=null,$s=0,Us=1/0,qs=null,Hs=!1,Gs=null,Vs=null,Ws=!1,Qs=null,Ks=0,Ys=0,Zs=null,Xs=-1,Js=0;function ec(){return 6&Ts?Ze():-1!==Xs?Xs:Xs=Ze()}function tc(e){return 1&e.mode?2&Ts&&0!==Ls?Ls&-Ls:null!==ha.transition?(0===Js&&(Js=gt()),Js):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Yt(e.type):1}function nc(e,t,n,r){if(50<Ys)throw Ys=0,Zs=null,Error(a(185));yt(e,n,r),2&Ts&&e===js||(e===js&&(!(2&Ts)&&(Ms|=n),4===Os&&lc(e,Ls)),rc(e,r),1===n&&0===Ts&&!(1&t.mode)&&(Us=Ze()+500,Bo&&qo()))}function rc(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes;0<a;){var i=31-it(a),l=1<<i,s=o[i];-1===s?l&n&&!(l&r)||(o[i]=ft(l,t)):s<=t&&(e.expiredLanes|=l),a&=~l}}(e,t);var r=pt(e,e===js?Ls:0);if(0===r)null!==n&&Qe(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Qe(n),1===t)0===e.tag?function(e){Bo=!0,Uo(e)}(sc.bind(null,e)):Uo(sc.bind(null,e)),io((function(){!(6&Ts)&&qo()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=jc(n,oc.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function oc(e,t){if(Xs=-1,Js=0,6&Ts)throw Error(a(327));var n=e.callbackNode;if(xc()&&e.callbackNode!==n)return null;var r=pt(e,e===js?Ls:0);if(0===r)return null;if(30&r||r&e.expiredLanes||t)t=hc(e,r);else{t=r;var o=Ts;Ts|=2;var i=mc();for(js===e&&Ls===t||(qs=null,Us=Ze()+500,pc(e,t));;)try{bc();break}catch(s){fc(e,s)}Aa(),_s.current=i,Ts=o,null!==Ns?t=0:(js=null,Ls=0,t=Os)}if(0!==t){if(2===t&&(0!==(o=mt(e))&&(r=o,t=ac(e,o))),1===t)throw n=Ds,pc(e,0),lc(e,r),rc(e,Ze()),n;if(6===t)lc(e,r);else{if(o=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var o=n[r],a=o.getSnapshot;o=o.value;try{if(!lr(a(),o))return!1}catch(l){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)||(t=hc(e,r),2===t&&(i=mt(e),0!==i&&(r=i,t=ac(e,i))),1!==t)))throw n=Ds,pc(e,0),lc(e,r),rc(e,Ze()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(a(345));case 2:case 5:kc(e,Bs,qs);break;case 3:if(lc(e,r),(130023424&r)===r&&10<(t=$s+500-Ze())){if(0!==pt(e,0))break;if(((o=e.suspendedLanes)&r)!==r){ec(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=ro(kc.bind(null,e,Bs,qs),t);break}kc(e,Bs,qs);break;case 4:if(lc(e,r),(4194240&r)===r)break;for(t=e.eventTimes,o=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>o&&(o=l),r&=~i}if(r=o,10<(r=(120>(r=Ze()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)){e.timeoutHandle=ro(kc.bind(null,e,Bs,qs),r);break}kc(e,Bs,qs);break;default:throw Error(a(329))}}}return rc(e,Ze()),e.callbackNode===n?oc.bind(null,e):null}function ac(e,t){var n=zs;return e.current.memoizedState.isDehydrated&&(pc(e,t).flags|=256),2!==(e=hc(e,t))&&(t=Bs,Bs=n,null!==t&&ic(t)),e}function ic(e){null===Bs?Bs=e:Bs.push.apply(Bs,e)}function lc(e,t){for(t&=~Fs,t&=~Ms,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function sc(e){if(6&Ts)throw Error(a(327));xc();var t=pt(e,0);if(!(1&t))return rc(e,Ze()),null;var n=hc(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=ac(e,r))}if(1===n)throw n=Ds,pc(e,0),lc(e,t),rc(e,Ze()),n;if(6===n)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,kc(e,Bs,qs),rc(e,Ze()),null}function cc(e,t){var n=Ts;Ts|=1;try{return e(t)}finally{0===(Ts=n)&&(Us=Ze()+500,Bo&&qo())}}function uc(e){null!==Qs&&0===Qs.tag&&!(6&Ts)&&xc();var t=Ts;Ts|=1;var n=As.transition,r=vt;try{if(As.transition=null,vt=1,e)return e()}finally{vt=r,As.transition=n,!(6&(Ts=t))&&qo()}}function dc(){Ps=Rs.current,Co(Rs)}function pc(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,oo(n)),null!==Ns)for(n=Ns.return;null!==n;){var r=n;switch(na(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Oo();break;case 3:Za(),Co(No),Co(jo),ri();break;case 5:Ja(r);break;case 4:Za();break;case 13:case 19:Co(ei);break;case 10:Ta(r.type._context);break;case 22:case 23:dc()}n=n.return}if(js=e,Ns=e=Rc(e.current,null),Ls=Ps=t,Os=0,Ds=null,Fs=Ms=Is=0,Bs=zs=null,null!==Pa){for(t=0;t<Pa.length;t++)if(null!==(r=(n=Pa[t]).interleaved)){n.interleaved=null;var o=r.next,a=n.pending;if(null!==a){var i=a.next;a.next=o,r.next=i}n.pending=r}Pa=null}return e}function fc(e,t){for(;;){var n=Ns;try{if(Aa(),oi.current=Xi,ui){for(var r=li.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ui=!1}if(ii=0,ci=si=li=null,di=!1,pi=0,Cs.current=null,null===n||null===n.return){Os=1,Ds=t,Ns=null;break}e:{var i=e,l=n.return,s=n,c=t;if(t=Ls,s.flags|=32768,null!==c&&"object"==typeof c&&"function"==typeof c.then){var u=c,d=s,p=d.tag;if(!(1&d.mode||0!==p&&11!==p&&15!==p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var m=hl(l);if(null!==m){m.flags&=-257,yl(m,l,s,0,t),1&m.mode&&gl(i,u,t),c=u;var g=(t=m).updateQueue;if(null===g){var h=new Set;h.add(c),t.updateQueue=h}else g.add(c);break e}if(!(1&t)){gl(i,u,t),gc();break e}c=Error(a(426))}else if(aa&&1&s.mode){var y=hl(l);if(null!==y){!(65536&y.flags)&&(y.flags|=256),yl(y,l,s,0,t),ga(cl(c,s));break e}}i=c=cl(c,s),4!==Os&&(Os=2),null===zs?zs=[i]:zs.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Ua(i,fl(0,c,t));break e;case 1:s=c;var b=i.type,v=i.stateNode;if(!(128&i.flags||"function"!=typeof b.getDerivedStateFromError&&(null===v||"function"!=typeof v.componentDidCatch||null!==Vs&&Vs.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Ua(i,ml(i,s,t));break e}}i=i.return}while(null!==i)}wc(n)}catch(w){t=w,Ns===n&&null!==n&&(Ns=n=n.return);continue}break}}function mc(){var e=_s.current;return _s.current=Xi,null===e?Xi:e}function gc(){0!==Os&&3!==Os&&2!==Os||(Os=4),null===js||!(268435455&Is)&&!(268435455&Ms)||lc(js,Ls)}function hc(e,t){var n=Ts;Ts|=2;var r=mc();for(js===e&&Ls===t||(qs=null,pc(e,t));;)try{yc();break}catch(o){fc(e,o)}if(Aa(),Ts=n,_s.current=r,null!==Ns)throw Error(a(261));return js=null,Ls=0,Os}function yc(){for(;null!==Ns;)vc(Ns)}function bc(){for(;null!==Ns&&!Ke();)vc(Ns)}function vc(e){var t=Ss(e.alternate,e,Ps);e.memoizedProps=e.pendingProps,null===t?wc(e):Ns=t,Cs.current=null}function wc(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=Ql(n,t)))return n.flags&=32767,void(Ns=n);if(null===e)return Os=6,void(Ns=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Wl(n,t,Ps)))return void(Ns=n);if(null!==(t=t.sibling))return void(Ns=t);Ns=t=e}while(null!==t);0===Os&&(Os=5)}function kc(e,t,n){var r=vt,o=As.transition;try{As.transition=null,vt=1,function(e,t,n,r){do{xc()}while(null!==Qs);if(6&Ts)throw Error(a(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-it(n),a=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~a}}(e,i),e===js&&(Ns=js=null,Ls=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Ws||(Ws=!0,jc(tt,(function(){return xc(),null}))),i=!!(15990&n.flags),!!(15990&n.subtreeFlags)||i){i=As.transition,As.transition=null;var l=vt;vt=1;var s=Ts;Ts|=4,Cs.current=null,function(e,t){if(eo=Ht,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var l=0,s=-1,c=-1,u=0,d=0,p=e,f=null;t:for(;;){for(var m;p!==n||0!==o&&3!==p.nodeType||(s=l+o),p!==i||0!==r&&3!==p.nodeType||(c=l+r),3===p.nodeType&&(l+=p.nodeValue.length),null!==(m=p.firstChild);)f=p,p=m;for(;;){if(p===e)break t;if(f===n&&++u===o&&(s=l),f===i&&++d===r&&(c=l),null!==(m=p.nextSibling))break;f=(p=f).parentNode}p=m}n=-1===s||-1===c?null:{start:s,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Ht=!1,Xl=t;null!==Xl;)if(e=(t=Xl).child,1028&t.subtreeFlags&&null!==e)e.return=t,Xl=e;else for(;null!==Xl;){t=Xl;try{var g=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==g){var h=g.memoizedProps,y=g.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?h:nl(t.type,h),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(a(163))}}catch(k){Ec(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Xl=e;break}Xl=t.return}g=ts,ts=!1}(e,n),hs(n,e),mr(to),Ht=!!eo,to=eo=null,e.current=n,bs(n,e,o),Ye(),Ts=s,vt=l,As.transition=i}else e.current=n;if(Ws&&(Ws=!1,Qs=e,Ks=o),i=e.pendingLanes,0===i&&(Vs=null),function(e){if(at&&"function"==typeof at.onCommitFiberRoot)try{at.onCommitFiberRoot(ot,e,void 0,!(128&~e.current.flags))}catch(t){}}(n.stateNode),rc(e,Ze()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)o=t[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(Hs)throw Hs=!1,e=Gs,Gs=null,e;!!(1&Ks)&&0!==e.tag&&xc(),i=e.pendingLanes,1&i?e===Zs?Ys++:(Ys=0,Zs=e):Ys=0,qo()}(e,t,n,r)}finally{As.transition=o,vt=r}return null}function xc(){if(null!==Qs){var e=wt(Ks),t=As.transition,n=vt;try{if(As.transition=null,vt=16>e?16:e,null===Qs)var r=!1;else{if(e=Qs,Qs=null,Ks=0,6&Ts)throw Error(a(331));var o=Ts;for(Ts|=4,Xl=e.current;null!==Xl;){var i=Xl,l=i.child;if(16&Xl.flags){var s=i.deletions;if(null!==s){for(var c=0;c<s.length;c++){var u=s[c];for(Xl=u;null!==Xl;){var d=Xl;switch(d.tag){case 0:case 11:case 15:ns(8,d,i)}var p=d.child;if(null!==p)p.return=d,Xl=p;else for(;null!==Xl;){var f=(d=Xl).sibling,m=d.return;if(as(d),d===u){Xl=null;break}if(null!==f){f.return=m,Xl=f;break}Xl=m}}}var g=i.alternate;if(null!==g){var h=g.child;if(null!==h){g.child=null;do{var y=h.sibling;h.sibling=null,h=y}while(null!==h)}}Xl=i}}if(2064&i.subtreeFlags&&null!==l)l.return=i,Xl=l;else e:for(;null!==Xl;){if(2048&(i=Xl).flags)switch(i.tag){case 0:case 11:case 15:ns(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Xl=b;break e}Xl=i.return}}var v=e.current;for(Xl=v;null!==Xl;){var w=(l=Xl).child;if(2064&l.subtreeFlags&&null!==w)w.return=l,Xl=w;else e:for(l=v;null!==Xl;){if(2048&(s=Xl).flags)try{switch(s.tag){case 0:case 11:case 15:rs(9,s)}}catch(x){Ec(s,s.return,x)}if(s===l){Xl=null;break e}var k=s.sibling;if(null!==k){k.return=s.return,Xl=k;break e}Xl=s.return}}if(Ts=o,qo(),at&&"function"==typeof at.onPostCommitFiberRoot)try{at.onPostCommitFiberRoot(ot,e)}catch(x){}r=!0}return r}finally{vt=n,As.transition=t}}return!1}function Sc(e,t,n){e=Ba(e,t=fl(0,t=cl(n,t),1),1),t=ec(),null!==e&&(yt(e,1,t),rc(e,t))}function Ec(e,t,n){if(3===e.tag)Sc(e,e,n);else for(;null!==t;){if(3===t.tag){Sc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Vs||!Vs.has(r))){t=Ba(t,e=ml(t,e=cl(n,e),1),1),e=ec(),null!==t&&(yt(t,1,e),rc(t,e));break}}t=t.return}}function _c(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ec(),e.pingedLanes|=e.suspendedLanes&n,js===e&&(Ls&n)===n&&(4===Os||3===Os&&(130023424&Ls)===Ls&&500>Ze()-$s?pc(e,0):Fs|=n),rc(e,t)}function Cc(e,t){0===t&&(1&e.mode?(t=ut,!(130023424&(ut<<=1))&&(ut=4194304)):t=1);var n=ec();null!==(e=Da(e,t))&&(yt(e,t,n),rc(e,n))}function Ac(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Cc(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&&r.delete(t),Cc(e,n)}function jc(e,t){return We(e,t)}function Nc(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lc(e,t,n,r){return new Nc(e,t,n,r)}function Pc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Rc(e,t){var n=e.alternate;return null===n?((n=Lc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Oc(e,t,n,r,o,i){var l=2;if(r=e,"function"==typeof e)Pc(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case S:return Dc(n.children,o,i,t);case E:l=8,o|=8;break;case _:return(e=Lc(12,n,t,2|o)).elementType=_,e.lanes=i,e;case j:return(e=Lc(13,n,t,o)).elementType=j,e.lanes=i,e;case N:return(e=Lc(19,n,t,o)).elementType=N,e.lanes=i,e;case R:return Ic(n,o,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case C:l=10;break e;case A:l=9;break e;case T:l=11;break e;case L:l=14;break e;case P:l=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Lc(l,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function Dc(e,t,n,r){return(e=Lc(7,e,r,t)).lanes=n,e}function Ic(e,t,n,r){return(e=Lc(22,e,r,t)).elementType=R,e.lanes=n,e.stateNode={isHidden:!1},e}function Mc(e,t,n){return(e=Lc(6,e,null,t)).lanes=n,e}function Fc(e,t,n){return(t=Lc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function zc(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ht(0),this.expirationTimes=ht(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ht(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Bc(e,t,n,r,o,a,i,l,s){return e=new zc(e,t,n,l,s),1===t?(t=1,!0===a&&(t|=8)):t=0,a=Lc(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ma(a),e}function $c(e){if(!e)return To;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Ro(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(Ro(n))return Io(e,n,t)}return t}function Uc(e,t,n,r,o,a,i,l,s){return(e=Bc(n,r,!0,e,0,a,0,l,s)).context=$c(null),n=e.current,(a=za(r=ec(),o=tc(n))).callback=null!=t?t:null,Ba(n,a,o),e.current.lanes=o,yt(e,o,r),rc(e,r),e}function qc(e,t,n,r){var o=t.current,a=ec(),i=tc(o);return n=$c(n),null===t.context?t.context=n:t.pendingContext=n,(t=za(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Ba(o,t,i))&&(nc(e,o,i,a),$a(e,o,i)),i}function Hc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Gc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Vc(e,t){Gc(e,t),(e=e.alternate)&&Gc(e,t)}Ss=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||No.current)vl=!0;else{if(!(e.lanes&n||128&t.flags))return vl=!1,function(e,t,n){switch(t.tag){case 3:jl(t),ma();break;case 5:Xa(t);break;case 1:Ro(t.type)&&Mo(t);break;case 4:Ya(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;Ao(Sa,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ao(ei,1&ei.current),t.flags|=128,null):n&t.child.childLanes?Ml(e,t,n):(Ao(ei,1&ei.current),null!==(e=Hl(e,t,n))?e.sibling:null);Ao(ei,1&ei.current);break;case 19:if(r=!!(n&t.childLanes),128&e.flags){if(r)return Ul(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),Ao(ei,ei.current),r)break;return null;case 22:case 23:return t.lanes=0,El(e,t,n)}return Hl(e,t,n)}(e,t,n);vl=!!(131072&e.flags)}else vl=!1,aa&&1048576&t.flags&&ea(t,Wo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ql(e,t),e=t.pendingProps;var o=Po(t,jo.current);Na(t,n),o=hi(null,t,r,e,o,n);var i=yi();return t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ro(r)?(i=!0,Mo(t)):i=!1,t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,Ma(t),o.updater=ol,t.stateNode=o,o._reactInternals=t,sl(t,r,e,n),t=Tl(null,t,r,!0,i,n)):(t.tag=0,aa&&i&&ta(t),wl(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ql(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return Pc(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===L)return 14}return 2}(r),e=nl(r,e),o){case 0:t=Cl(null,t,r,e,n);break e;case 1:t=Al(null,t,r,e,n);break e;case 11:t=kl(null,t,r,e,n);break e;case 14:t=xl(null,t,r,nl(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,Cl(e,t,r,o=t.elementType===r?o:nl(r,o),n);case 1:return r=t.type,o=t.pendingProps,Al(e,t,r,o=t.elementType===r?o:nl(r,o),n);case 3:e:{if(jl(t),null===e)throw Error(a(387));r=t.pendingProps,o=(i=t.memoizedState).element,Fa(e,t),qa(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Nl(e,t,r,n,o=cl(Error(a(423)),t));break e}if(r!==o){t=Nl(e,t,r,n,o=cl(Error(a(424)),t));break e}for(oa=co(t.stateNode.containerInfo.firstChild),ra=t,aa=!0,ia=null,n=xa(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ma(),r===o){t=Hl(e,t,n);break e}wl(e,t,r,n)}t=t.child}return t;case 5:return Xa(t),null===e&&ua(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,l=o.children,no(r,o)?l=null:null!==i&&no(r,i)&&(t.flags|=32),_l(e,t),wl(e,t,l,n),t.child;case 6:return null===e&&ua(t),null;case 13:return Ml(e,t,n);case 4:return Ya(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ka(t,null,r,n):wl(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,kl(e,t,r,o=t.elementType===r?o:nl(r,o),n);case 7:return wl(e,t,t.pendingProps,n),t.child;case 8:case 12:return wl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,l=o.value,Ao(Sa,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===o.children&&!No.current){t=Hl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var c=s.firstContext;null!==c;){if(c.context===r){if(1===i.tag){(c=za(-1,n&-n)).tag=2;var u=i.updateQueue;if(null!==u){var d=(u=u.shared).pending;null===d?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=n,null!==(c=i.alternate)&&(c.lanes|=n),ja(i.return,n,t),s.lanes|=n;break}c=c.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(a(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),ja(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}wl(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Na(t,n),r=r(o=La(o)),t.flags|=1,wl(e,t,r,n),t.child;case 14:return o=nl(r=t.type,t.pendingProps),xl(e,t,r,o=nl(r.type,o),n);case 15:return Sl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:nl(r,o),ql(e,t),t.tag=1,Ro(r)?(e=!0,Mo(t)):e=!1,Na(t,n),il(t,r,o),sl(t,r,o,n),Tl(null,t,r,!0,e,n);case 19:return Ul(e,t,n);case 22:return El(e,t,n)}throw Error(a(156,t.tag))};var Wc="function"==typeof reportError?reportError:function(e){console.error(e)};function Qc(e){this._internalRoot=e}function Kc(e){this._internalRoot=e}function Yc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Zc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Xc(){}function Jc(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a;if("function"==typeof o){var l=o;o=function(){var e=Hc(i);l.call(e)}}qc(t,i,e,o)}else i=function(e,t,n,r,o){if(o){if("function"==typeof r){var a=r;r=function(){var e=Hc(i);a.call(e)}}var i=Uc(t,r,e,0,null,!1,0,"",Xc);return e._reactRootContainer=i,e[go]=i.current,Ur(8===e.nodeType?e.parentNode:e),uc(),i}for(;o=e.lastChild;)e.removeChild(o);if("function"==typeof r){var l=r;r=function(){var e=Hc(s);l.call(e)}}var s=Bc(e,0,!1,null,0,!1,0,"",Xc);return e._reactRootContainer=s,e[go]=s.current,Ur(8===e.nodeType?e.parentNode:e),uc((function(){qc(t,s,n,r)})),s}(n,t,e,o,r);return Hc(i)}Kc.prototype.render=Qc.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(a(409));qc(e,t,null,null)},Kc.prototype.unmount=Qc.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;uc((function(){qc(null,e,null,null)})),t[go]=null}},Kc.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Rt.length&&0!==t&&t<Rt[n].priority;n++);Rt.splice(n,0,e),0===n&&Mt(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),rc(t,Ze()),!(6&Ts)&&(Us=Ze()+500,qo()))}break;case 13:uc((function(){var t=Da(e,1);if(null!==t){var n=ec();nc(t,e,1,n)}})),Vc(e,1)}},xt=function(e){if(13===e.tag){var t=Da(e,134217728);if(null!==t)nc(t,e,134217728,ec());Vc(e,134217728)}},St=function(e){if(13===e.tag){var t=tc(e),n=Da(e,t);if(null!==n)nc(n,e,t,ec());Vc(e,t)}},Et=function(){return vt},_t=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},xe=function(e,t,n){switch(t){case"input":if(X(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=xo(r);if(!o)throw Error(a(90));W(r),X(r,o)}}}break;case"textarea":ae(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Te=cc,je=uc;var eu={usingClientEntryPoint:!1,Events:[wo,ko,xo,Ce,Ae,cc]},tu={findFiberByHostInstance:vo,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nu={bundleType:tu.bundleType,version:tu.version,rendererPackageName:tu.rendererPackageName,rendererConfig:tu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ge(e))?null:e.stateNode},findFiberByHostInstance:tu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var ru=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ru.isDisabled&&ru.supportsFiber)try{ot=ru.inject(nu),at=ru}catch(ue){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=eu,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Yc(t))throw Error(a(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Yc(e))throw Error(a(299));var n=!1,r="",o=Wc;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=Bc(e,1,!1,null,0,n,0,r,o),e[go]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Qc(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw e=Object.keys(e).join(","),Error(a(268,e))}return e=null===(e=Ge(t))?null:e.stateNode},t.flushSync=function(e){return uc(e)},t.hydrate=function(e,t,n){if(!Zc(t))throw Error(a(200));return Jc(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Yc(e))throw Error(a(405));var r=null!=n&&n.hydratedSources||null,o=!1,i="",l=Wc;if(null!=n&&(!0===n.unstable_strictMode&&(o=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=Uc(t,null,e,1,null!=n?n:null,o,0,i,l),e[go]=t.current,Ur(e),r)for(e=0;e<r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Kc(t)},t.render=function(e,t,n){if(!Zc(t))throw Error(a(200));return Jc(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Zc(e))throw Error(a(40));return!!e._reactRootContainer&&(uc((function(){Jc(null,null,e,!1,(function(){e._reactRootContainer=null,e[go]=null}))})),!0)},t.unstable_batchedUpdates=cc,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Zc(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return Jc(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},5338:(e,t,n)=>{"use strict";var r=n(961);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},961:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(2551)},115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.next()).done;)if(!a(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!a(e[c[s]],i[c[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},545:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>G});var r=n(6540),o=n(5556),a=n.n(o),i=n(115),l=n.n(i),s=n(311),c=n.n(s),u=n(2833),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function g(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map((function(e){return h[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,h.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},A=function(e,t){return t.filter((function(e){return void 0!==e[h.BASE]})).map((function(e){return e[h.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},T=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var o={};n.filter((function(e){for(var n,a=Object.keys(e),i=0;i<a.length;i+=1){var l=a[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][c]&&(o[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(o),i=0;i<a.length;i+=1){var l=a[i],s=p({},r[l],o[l]);r[l]=s}return e}),[]).reverse()},j=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},N=function(e){return Array.isArray(e)?e.join(""):e},L=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},R=[h.NOSCRIPT,h.SCRIPT,h.STYLE],O=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},I=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=I(n,o),[r.createElement(h.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=D(n),a=N(t);return o?"<"+e+' data-rh="true" '+o+">"+O(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+O(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return I(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+O(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===R.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=L(e.metaTags,v),a=L(t,y),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(h.META,o.priority),M(h.LINK,a.priority),M(h.SCRIPT,i.priority))},toString:function(){return F(h.META,o.priority,r)+" "+F(h.LINK,a.priority,r)+" "+F(h.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(h.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(h.LINK,u,r),meta:F(h.META,d,r),noscript:F(h.NOSCRIPT,a,r),script:F(h.SCRIPT,p,r),style:F(h.STYLE,i,r),title:F(h.TITLE,{title:s,titleAttributes:c},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var V=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},W=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],c=t[s]||"";n.getAttribute(s)!==c&&n.setAttribute(s,c),-1===o.indexOf(s)&&o.push(s);var u=a.indexOf(s);-1!==u&&a.splice(u,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Q=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;W(h.BODY,e.bodyAttributes),W(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=N(e)),W(h.TITLE,t)}(u,d);var p={baseTag:V(h.BASE,n),linkTags:V(h.LINK,o),metaTags:V(h.META,a),noscriptTags:V(h.NOSCRIPT,i),scriptTags:V(h.SCRIPT,s),styleTags:V(h.STYLE,c)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},K=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,o=null,a=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:A(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:T(h.LINK,["rel","href"],e),metaTags:T(h.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:T(h.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:T(h.SCRIPT,["src","innerHTML"],e),styleTags:T(h.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:j(e,"prioritizeSeoTags")});G.canUseDOM?(t=a,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame((function(){Q(t,(function(){K=null}))})):(Q(t),K=null)):z&&(o=z(a)),r(o)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Y.propTypes={context:q.isRequired},Y.displayName="HelmetDispatcher";var Z=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case h.SCRIPT:case h.NOSCRIPT:return{innerHTML:t};case h.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return p({},o,((t={})[r.type]=i,t.titleAttributes=p({},a),t));case h.BODY:return p({},o,{bodyAttributes:p({},a)});case h.HTML:return p({},o,{htmlAttributes:p({},a)});default:return p({},o,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=g(r,Z),l=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,a),s){case h.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:l,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),o=p({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof $||(a=new $(a.context,a.instances)),a?r.createElement(Y,p({},o,{context:a.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,p({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2799:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case a:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case h:case g:case s:return e;default:return t}}case o:return t}}}function x(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=h,t.Memo=g,t.Portal=o,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===u},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===l||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},4363:(e,t,n)=>{"use strict";e.exports=n(2799)},3259:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(6540),s=[],c=[];var u=l.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function h(){return g||(g=e(m.loader)),g.promise}return s.push(h),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return h()})),p=d=function(t){function n(n){var r;return a(o(o(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(m.loader),r._loadModule()})),h(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return h()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),a(d,"contextType",u),p}function g(e){return m(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var h=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return l.createElement(u.Provider,{value:{report:this.props.report}},l.Children.only(this.props.children))},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return y(e)}))}g.Capture=h,g.preloadAll=function(){return new Promise((function(e,t){y(s).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){y(c).then(e,e)}))},e.exports=g},2831:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,v:()=>l});var r=n(6347),o=n(8168),a=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.dO,n,e.map((function(e,n){return a.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.A)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.A)({},n,t,{route:e}))}})}))):null}},4625:(e,t,n)=>{"use strict";n.d(t,{I9:()=>d,Kd:()=>u,N_:()=>y,k2:()=>w});var r=n(6347),o=n(2892),a=n(6540),i=n(1513),l=n(8168),s=n(8587),c=n(1561),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,o.A)(t,e),t.prototype.render=function(){return a.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(a.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.TM)(t.props),t}return(0,o.A)(t,e),t.prototype.render=function(){return a.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(a.Component);var p=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},m=function(e){return e},g=a.forwardRef;void 0===g&&(g=m);var h=g((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=(0,s.A)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,l.A)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=m!==g&&t||n,a.createElement("a",u)}));var y=g((function(e,t){var n=e.component,o=void 0===n?h:n,u=e.replace,d=e.to,y=e.innerRef,b=(0,s.A)(e,["component","replace","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,(function(e){e||(0,c.A)(!1);var n=e.history,r=f(p(d,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.A)({},b,{href:s,navigate:function(){var t=p(d,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(f(t));(u||r?n.replace:n.push)(t)}});return m!==g?h.ref=t||y:h.innerRef=y,a.createElement(o,h)}))})),b=function(e){return e},v=a.forwardRef;void 0===v&&(v=b);var w=v((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,d=e.activeStyle,m=e.className,g=e.exact,h=e.isActive,w=e.location,k=e.sensitive,x=e.strict,S=e.style,E=e.to,_=e.innerRef,C=(0,s.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.XZ.Consumer,null,(function(e){e||(0,c.A)(!1);var n=w||e.location,i=f(p(E,n),n),s=i.pathname,A=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),T=A?(0,r.B6)(n.pathname,{path:A,exact:g,sensitive:k,strict:x}):null,j=!!(h?h(T,n):T),N="function"==typeof m?m(j):m,L="function"==typeof S?S(j):S;j&&(N=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(N,u),L=(0,l.A)({},L,d));var P=(0,l.A)({"aria-current":j&&o||null,className:N,style:L,to:i},C);return b!==v?P.ref=t||_:P.innerRef=_,a.createElement(y,P)}))}))},6347:(e,t,n)=>{"use strict";n.d(t,{B6:()=>S,Ix:()=>v,W6:()=>P,XZ:()=>b,dO:()=>N,qh:()=>E,zy:()=>R});var r=n(2892),o=n(6540),a=n(5556),i=n.n(a),l=n(1513),s=n(1561),c=n(8168),u=n(8505),d=n.n(u),p=(n(4363),n(8587)),f=(n(4146),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=o.createContext||function(e,t){var n,a,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,o=arguments.length,a=new Array(o),i=0;i<o;i++)a[i]=arguments[i];return(t=e.call.apply(e,[this].concat(a))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.A)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(i=o)?0!==a||1/a==1/i:a!=a&&i!=i)?n=0:(n="function"==typeof t?t(r,o):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,i},o.render=function(){return this.props.children},n}(o.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var c=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){(0|e.observedBits)&n&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},o.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},o.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},o.getValue=function(){return this.context[l]?this.context[l].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return c.contextTypes=((a={})[l]=i().object,a),{Provider:s,Consumer:c}},h=function(e){var t=g();return t.displayName=e,t},y=h("Router-History"),b=h("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;o.Component;var w={},k=1e4,x=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,i=n.strict,l=void 0!==i&&i,s=n.sensitive,c=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var o=[],a={regexp:d()(e,o,t),keys:o};return x<k&&(r[e]=a,x++),a}(n,{end:a,strict:l,sensitive:c}),o=r.regexp,i=r.keys,s=o.exec(e);if(!s)return null;var u=s[0],p=s.slice(1),f=e===u;return a&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(b.Consumer,null,(function(t){t||(0,s.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,a=(0,c.A)({},t,{location:n,match:r}),i=e.props,l=i.children,u=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===o.Children.count(e)}(l)&&(l=null),o.createElement(b.Provider,{value:a},a.match?l?"function"==typeof l?l(a):l:u?o.createElement(u,a):d?d(a):null:"function"==typeof l?l(a):null)}))},t}(o.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,c.A)({},t,{pathname:t.pathname.substr(n.length)})}function A(e){return"string"==typeof e?e:(0,l.AO)(e)}function T(e){return function(){(0,s.A)(!1)}}function j(){}o.Component;var N=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return o.createElement(b.Consumer,null,(function(t){t||(0,s.A)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,(function(e){if(null==r&&o.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(a.pathname,(0,c.A)({},e.props,{path:i})):t.match}})),r?o.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(o.Component);var L=o.useContext;function P(){return L(y)}function R(){return L(b).location}},8505:(e,t,n)=>{var r=n(4634);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",u=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||u,_=y||b;r.push({name:h||a++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?c(_):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var a="",l=t||{},s=(o||{}).pretty?i:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=l[u.name];if(null==p){if(u.optional){u.partial&&(a+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');a+=u.prefix+d}}else a+=u}return a}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,a=!1!==n.end,i="",l=0;l<e.length;l++){var c=e[l];if("string"==typeof c)i+=s(c);else{var p=s(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),i+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=s(n.delimiter||"/"),g=i.slice(-m.length)===m;return o||(i=(g?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=a?"$":o&&g?"":"(?="+m+"|$)",u(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(f(e[o],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(a(e,n),t,n)}(e,t,n)}},1020:(e,t,n)=>{"use strict";var r=n(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:u,props:a,_owner:l.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},5287:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,h={};function y(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,r){var o,a={},i=null,l=null;if(null!=t)for(o in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,o)&&!E.hasOwnProperty(o)&&(a[o]=t[o]);var s=arguments.length-2;if(1===s)a.children=r;else if(1<s){for(var c=Array(s),u=0;u<s;u++)c[u]=arguments[u+2];a.children=c}if(e&&e.defaultProps)for(o in s=e.defaultProps)void 0===a[o]&&(a[o]=s[o]);return{$$typeof:n,type:e,key:i,ref:l,props:a,_owner:S.current}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var A=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function j(e,t,o,a,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0}}if(s)return i=i(s=e),e=""===a?"."+T(s,0):a,k(i)?(o="",null!=e&&(o=e.replace(A,"$&/")+"/"),j(i,t,o,"",(function(e){return e}))):null!=i&&(C(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,o+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(A,"$&/")+"/")+e)),t.push(i)),1;if(s=0,a=""===a?".":a+":",k(e))for(var c=0;c<e.length;c++){var u=a+T(l=e[c],c);s+=j(l,t,o,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(l=e.next()).done;)s+=j(l=l.value,t,o,u=a+T(l,c++),i);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function N(e,t,n){if(null==e)return e;var r=[],o=0;return j(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function L(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var P={current:null},R={transition:null},O={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:R,ReactCurrentOwner:S};function D(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:N,forEach:function(e,t,n){N(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return N(e,(function(){t++})),t},toArray:function(e){return N(e,(function(e){return e}))||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=o,t.Profiler=i,t.PureComponent=v,t.StrictMode=a,t.Suspense=u,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.act=D,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=g({},e.props),a=e.key,i=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,l=S.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(c in t)x.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==s?s[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=r;else if(1<c){s=Array(c);for(var u=0;u<c;u++)s[u]=arguments[u+2];o.children=s}return{$$typeof:n,type:e.type,key:a,ref:i,props:o,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:c,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=R.transition;R.transition={};try{e()}finally{R.transition=t}},t.unstable_act=D,t.useCallback=function(e,t){return P.current.useCallback(e,t)},t.useContext=function(e){return P.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return P.current.useDeferredValue(e)},t.useEffect=function(e,t){return P.current.useEffect(e,t)},t.useId=function(){return P.current.useId()},t.useImperativeHandle=function(e,t,n){return P.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return P.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return P.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return P.current.useMemo(e,t)},t.useReducer=function(e,t,n){return P.current.useReducer(e,t,n)},t.useRef=function(e){return P.current.useRef(e)},t.useState=function(e){return P.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return P.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return P.current.useTransition()},t.version="18.3.1"},6540:(e,t,n)=>{"use strict";e.exports=n(5287)},4848:(e,t,n)=>{"use strict";e.exports=n(1020)},7463:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<a(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,i=o>>>1;r<i;){var l=2*(r+1)-1,s=e[l],c=l+1,u=e[c];if(0>a(s,n))c<o&&0>a(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else{if(!(c<o&&0>a(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var c=[],u=[],d=1,p=null,f=3,m=!1,g=!1,h=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(u);null!==t;){if(null===t.callback)o(u);else{if(!(t.startTime<=e))break;o(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function k(e){if(h=!1,w(e),!g)if(null!==r(c))g=!0,R(x);else{var t=r(u);null!==t&&O(k,t.startTime-e)}}function x(e,n){g=!1,h&&(h=!1,b(C),C=-1),m=!0;var a=f;try{for(w(n),p=r(c);null!==p&&(!(p.expirationTime>n)||e&&!j());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var l=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?p.callback=l:p===r(c)&&o(c),w(n)}else o(c);p=r(c)}if(null!==p)var s=!0;else{var d=r(u);null!==d&&O(k,d.startTime-n),s=!1}return s}finally{p=null,f=a,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,_=null,C=-1,A=5,T=-1;function j(){return!(t.unstable_now()-T<A)}function N(){if(null!==_){var e=t.unstable_now();T=e;var n=!0;try{n=_(!0,e)}finally{n?S():(E=!1,_=null)}}else E=!1}if("function"==typeof v)S=function(){v(N)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,P=L.port2;L.port1.onmessage=N,S=function(){P.postMessage(null)}}else S=function(){y(N,0)};function R(e){_=e,E||(E=!0,S())}function O(e,n){C=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){g||m||(g=!0,R(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):A=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(c)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,o,a){var i=t.unstable_now();switch("object"==typeof a&&null!==a?a="number"==typeof(a=a.delay)&&0<a?i+a:i:a=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:o,priorityLevel:e,startTime:a,expirationTime:l=a+l,sortIndex:-1},a>i?(e.sortIndex=a,n(u,e),null===r(c)&&e===r(u)&&(h?(b(C),C=-1):h=!0,O(k,a-i))):(e.sortIndex=l,n(c,e),g||m||(g=!0,R(x))),e},t.unstable_shouldYield=j,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},9982:(e,t,n)=>{"use strict";e.exports=n(7463)},2833:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<a.length;s++){var c=a[s];if(!l(c))return!1;var u=e[c],d=t[c];if(!1===(o=n?n.call(r,u,d,c):void 0)||void 0===o&&u!==d)return!1}return!0}},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Astral Documentation",tagline:"Open source tools + infrastructure for decentralized spatial data",favicon:"img/favicon.ico",url:"https://docs.astral.global",baseUrl:"/",organizationName:"AstralProtocol",projectName:"astralprotocol",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"./sidebars.ts"},blog:{showReadingTime:!0},theme:{customCss:"./src/css/custom.css"}}]],themeConfig:{image:"img/docusaurus-social-card.jpg",navbar:{title:"Astral",logo:{alt:"Astral Logo",src:"img/logo.svg",href:"/docs/location-proof-protocol/introduction"},items:[{type:"docSidebar",sidebarId:"docs",position:"left",label:"Docs"},{href:"https://github.com/AstralProtocol/astralprotocol",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Community",items:[{label:"Telegram",href:"https://t.me/+UkTOSXnDcDM5ZTBk"},{label:"Twitter",href:"https://twitter.com/docusaurus"},{label:"Farcaster",href:"https://warpcast.com/astralprotocol"}]},{title:"More",items:[{label:"GitHub",href:"https://github.com/AstralProtocol/astralprotocol"}]}],copyright:"Copyright \xa9 2024 Astral. Built with Docusaurus."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,future:{experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}}}},8168:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},2892:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>o})},8587:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},4164:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}n.d(t,{A:()=>o});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},1765:(e,t,n)=>{"use strict";n.d(t,{My:()=>A,f4:()=>ee});var r,o,a,i,l,s,c,u=n(6540),d=n(4164),p=Object.create,f=Object.defineProperty,m=Object.defineProperties,g=Object.getOwnPropertyDescriptor,h=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>m(e,h(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},C=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var i in o={},n[a]=o,t)t.hasOwnProperty(i)&&(o[i]=e(t[i],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach((function(t,r){o[r]=e(t,n)})),o);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var o=e.classList;if(o.contains(t))return!0;if(o.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],i={};for(var l in a)if(a.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=a[l])}var c=o[e];return o[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,o,a){a=a||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],o||l);var s=t[l],c=r.util.type(s);"Object"!==c||a[i(s)]?"Array"!==c||a[i(s)]||(a[i(s)]=!0,e(s,n,l,a)):(a[i(s)]=!0,e(s,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",a),!a.grammar)throw new Error('The language "'+a.language+'" has no grammar.');return a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new l;return s(o,o.head,e),i(e,o,t,o.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}function i(e,t,n,l,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var g=f[m],h=g.inside,y=!!g.lookbehind,b=!!g.greedy,v=g.alias;if(b&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var k=g.pattern||g,x=l.next,S=u;x!==t.tail&&!(d&&S>=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof o)){var _,C=1;if(b){if(!(_=a(k,S,e,y))||_.index>=e.length)break;var A=_.index,T=_.index+_[0].length,j=S;for(j+=x.value.length;A>=j;)j+=(x=x.next).value.length;if(S=j-=x.value.length,x.value instanceof o)continue;for(var N=x;N!==t.tail&&(j<T||"string"==typeof N.value);N=N.next)C++,j+=N.value.length;C--,E=e.slice(S,j),_.index-=S}else if(!(_=a(k,0,E,y)))continue;A=_.index;var L=_[0],P=E.slice(0,A),R=E.slice(A+L.length),O=S+E.length;d&&O>d.reach&&(d.reach=O);var D=x.prev;if(P&&(D=s(t,D,P),S+=P.length),c(t,D,C),x=s(t,D,new o(p,h?r.tokenize(L,h):L,v,L)),R&&s(t,x,R),C>1){var I={cause:p+","+m,reach:O};i(e,t,n,x.prev,S,I),d&&I.reach>d.reach&&(d.reach=I.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function c(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach((function(t){o+=e(t,n)})),o}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(a.classes,i):a.classes.push(i)),r.hooks.run("wrap",a);var l="";for(var s in a.attributes)l+=" "+s+'="'+(a.attributes[s]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+l+">"+a.content+"</"+a.tag+">"},r}();t.exports=n,n.default=n}},function(){return o||(0,r[y(r)[0]])((o={exports:{}}).exports,o),o.exports}),A=((e,t,n)=>(n=null!=e?p(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of y(t))w.call(e,o)||o===n||f(e,o,{get:()=>t[o],enumerable:!(r=g(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:f(n,"default",{value:e,enumerable:!0}),e)))(C());A.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},A.languages.markup.tag.inside["attr-value"].inside.entity=A.languages.markup.entity,A.languages.markup.doctype.inside["internal-subset"].inside=A.languages.markup,A.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(A.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:A.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:A.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},A.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(A.languages.markup.tag,"addAttribute",{value:function(e,t){A.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:A.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),A.languages.html=A.languages.markup,A.languages.mathml=A.languages.markup,A.languages.svg=A.languages.markup,A.languages.xml=A.languages.extend("markup",{}),A.languages.ssml=A.languages.xml,A.languages.atom=A.languages.xml,A.languages.rss=A.languages.xml,a=A,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),c={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},a.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":c}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":c}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},A.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},A.languages.javascript=A.languages.extend("clike",{"class-name":[A.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),A.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,A.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:A.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:A.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:A.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:A.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:A.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),A.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:A.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),A.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),A.languages.markup&&(A.languages.markup.tag.addInlined("script","javascript"),A.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),A.languages.js=A.languages.javascript,A.languages.actionscript=A.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),A.languages.actionscript["class-name"].alias="function",delete A.languages.actionscript.parameter,delete A.languages.actionscript["literal-property"],A.languages.markup&&A.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:A.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(A),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},o="doc-comment";if(a=e.languages[t]){var a,i=a[o];if((i=i||(a=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[o])instanceof RegExp&&(i=a[o]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(A),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(A),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(A),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(A),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o,a=t[n];"code"!==a.type?e(a.content):(o=a.content[1],a=a.content[3],o&&a&&"code-language"===o.type&&"code-block"===a.type&&"string"==typeof o.content&&(o=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),o="language-"+(o=(/[a-z][\w-]*/i.exec(o)||[""])[0].toLowerCase()),a.alias?"string"==typeof a.alias?a.alias=[a.alias,o]:a.alias.push(o):a.alias=[o]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r];if(a=/language-(.+)/.exec(a)){n=a[1];break}}var c,u=e.languages[n];u?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e})),u,n):n&&"none"!==n&&e.plugins.autoloader&&(c="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=c,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(c);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(A),A.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:A.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},A.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var o=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var a=p(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),o.push(i.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),0<o.length)){var l=p(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var c=t[s];"variable"===c.type&&0<=o.indexOf(c.content)&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var o=1,a=n;a<t.length;a++){var i=t[a],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))o++;else if(r.test(l)&&0==--o)return a}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),A.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),c=0,u={},d=(s=l(s.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=c++,n="___"+i.toUpperCase()+"_"+r+"___")););return u[n]=e,n})).join(""),n,i),Object.keys(u));return c=0,function t(n){for(var a=0;a<n.length;a++){if(c>=d.length)return;var i,s,p,f,m,g,h,y=n[a];"string"==typeof y||"string"==typeof y.content?(i=d[c],-1!==(h=(g="string"==typeof y?y:y.content).indexOf(i))&&(++c,s=g.substring(0,h),m=u[i],p=void 0,(f={})["interpolation-punctuation"]=o,3===(f=e.tokenize(m,f)).length&&((p=[1,1]).push.apply(p,l(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,m),f=g.substring(h+i.length),m=[],s&&m.push(s),m.push(p),f&&(t(g=[f]),m.push.apply(m,g)),"string"==typeof y?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):y.content=m)):(h=y.content,Array.isArray(h)?t(h):t([h]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var c={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in c&&function t(n){for(var r=0,o=n.length;r<o;r++){var a,i,l,c=n[r];"string"!=typeof c&&(a=c.content,Array.isArray(a)?"template-string"===c.type?(c=a[1],3===a.length&&"string"!=typeof c&&"embedded-code"===c.type&&(i=u(c),c=c.alias,c=Array.isArray(c)?c[0]:c,l=e.languages[c])&&(a[1]=s(i,l,c))):t(a):"string"!=typeof a&&t([a]))}}(t.tokens)}))}(A),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(A),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(A),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(A),A.languages.n4js=A.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),A.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),A.languages.n4jsd=A.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var o=n[r],a=e.languages.javascript[o];o=(a="RegExp"===e.util.type(a)?e.languages.javascript[o]={pattern:a}:a).inside||{};(a.inside=o)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(A),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return o})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var o=t[r],a=!1;"string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(o.content[0].content[1])&&n.pop():"/>"!==o.content[o.content.length-1].content&&n.push({tagName:l(o.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&0<n.length&&0===n[n.length-1].openedBraces&&(a=l(o),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(a+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(a=l(t[r-1])+a,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",a,null,a)),o.content&&"string"!=typeof o.content&&i(o.content)}}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(A),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(A),A.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},A.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=A.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(A),A.languages.c=A.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),A.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),A.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},A.languages.c.string],char:A.languages.c.char,comment:A.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:A.languages.c}}}}),A.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete A.languages.c.boolean,A.languages.objectivec=A.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete A.languages.objectivec["class-name"],A.languages.objc=A.languages.objectivec,A.languages.reason=A.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),A.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete A.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(A),A.languages.go=A.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),A.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete A.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(A),A.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},A.languages.python["string-interpolation"].inside.interpolation.inside.rest=A.languages.python,A.languages.py=A.languages.python;((e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>j,duotoneLight:()=>N,github:()=>L,jettwaveDark:()=>H,jettwaveLight:()=>G,nightOwl:()=>P,nightOwlLight:()=>R,oceanicNext:()=>I,okaidia:()=>M,oneDark:()=>V,oneLight:()=>W,palenight:()=>F,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>q});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},j={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},N={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},L={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},P={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},R={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},O="#c5a5c5",D="#8dc891",I={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:O}},{types:["attr-value"],style:{color:D}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:D}},{types:["punctuation"],style:{color:D}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:O}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},M={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},q={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},H={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},V={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},W={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Q=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:o}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),o);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},K=/\r\n|\r|\n/,Y=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Z=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{const t=[[]],n=[e],r=[0],o=[e.length];let a=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(a=r[i]++)<o[i];){let e,c=t[i];const u=n[i][a];if("string"==typeof u?(c=i>0?c:["plain"],e=u):(c=Z(c,u.type),u.alias&&(c=Z(c,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(c),n.push(e),r.push(0),o.push(e.length);continue}const d=e.split(K),p=d.length;l.push({types:c,content:d[0]});for(let t=1;t<p;t++)Y(l),s.push(l=[]),l.push({types:c,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),o.pop()}return Y(l),s},J=({children:e,language:t,code:n,theme:r,prism:o})=>{const a=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,u.useState)(Q(t,e)),o=(0,u.useRef)(),a=(0,u.useRef)();return(0,u.useEffect)((()=>{t===o.current&&e===a.current||(o.current=t,a.current=e,r(Q(t,e)))}),[e,t]),n})(a,r),l=(e=>(0,u.useCallback)((t=>{var n=t,{className:r,style:o,line:a}=n,i=_(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof o&&(l.style=S(S({},l.style||{}),o)),l}),[e]))(i),s=(e=>{const t=(0,u.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,u.useCallback)((e=>{var n=e,{token:r,className:o,style:a}=n,i=_(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.A)("token",...r.types,o),children:r.content,style:t(r)});return null!=a&&(l.style=S(S({},l.style||{}),a)),l}),[t])})(i),c=(({prism:e,code:t,grammar:n,language:r})=>{const o=(0,u.useRef)(e);return(0,u.useMemo)((()=>{if(null==n)return X([t]);const e={code:t,grammar:n,language:r,tokens:[]};return o.current.hooks.run("before-tokenize",e),e.tokens=o.current.tokenize(t,n),o.current.hooks.run("after-tokenize",e),X(e.tokens)}),[t,n,r])})({prism:o,language:a,code:n,grammar:o.languages[a]});return e({tokens:c,className:`prism-code language-${a}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ee=e=>(0,u.createElement)(J,E(S({},e),{prism:e.prism||A,theme:e.theme||U,code:e.code,language:e.language}))},1561:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},2654:e=>{"use strict";e.exports={}},4054:e=>{"use strict";e.exports=JSON.parse('{"/blog-b2f":{"__comp":"a6aa9e1f","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"__props":"c15d9823"},"/blog/archive-182":{"__comp":"9e4087bc","__context":{"plugin":"36994c47"},"__props":"f81c1134"},"/blog/first-blog-post-89a":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"e273c56f"},"/blog/long-blog-post-9ad":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"73664a40"},"/blog/mdx-blog-post-e9f":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"59362658"},"/blog/tags-287":{"__comp":"01a85c17","__context":{"plugin":"36994c47"},"sidebar":"814f3328","__props":"3a2db09e"},"/blog/tags/docusaurus-704":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"__props":"3217192f"},"/blog/tags/facebook-858":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"}],"__props":"e5aefb32"},"/blog/tags/hello-299":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"8717b14a"}],"__props":"f82cd581"},"/blog/tags/hola-00d":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"925b3f96"}],"__props":"5e90a9b3"},"/blog/welcome-d2b":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"d9f32620"},"/markdown-page-3d7":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"393be207"},"/docs-536":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/docs-cb5":{"__comp":"a7bd4aaa","__props":"0058b4c6"},"/docs-205":{"__comp":"a94703ab"},"/docs/core-concepts/decentralized-spatial-data-0ea":{"__comp":"17896441","content":"a8f61235"},"/docs/core-concepts/location-proofs-ed4":{"__comp":"17896441","content":"fa823849"},"/docs/core-concepts/onchain-geospatial-9ba":{"__comp":"17896441","content":"ce48dac6"},"/docs/core-concepts/what-is-spatial-data-b74":{"__comp":"17896441","content":"7ae2cc57"},"/docs/developer-resources/location-attestations-964":{"__comp":"17896441","content":"9176b25c"},"/docs/developer-resources/quickstart-a05":{"__comp":"17896441","content":"6edd94a7"},"/docs/developer-resources/spatial-registries-145":{"__comp":"17896441","content":"00fb3d82"},"/docs/examples-4b9":{"__comp":"17896441","content":"09d5ad39"},"/docs/hello-7ae":{"__comp":"17896441","content":"9dfd250b"},"/docs/intro-853":{"__comp":"17896441","content":"0e384e19"},"/docs/introducing-astral-2e2":{"__comp":"17896441","content":"4e345e3b"},"/docs/location-proof-protocol/architecture-f1f":{"__comp":"17896441","content":"1b6ec5d4"},"/docs/location-proof-protocol/eas-schema-841":{"__comp":"17896441","content":"2c1b52bf"},"/docs/location-proof-protocol/introduction-2a1":{"__comp":"17896441","content":"003da42b"},"/docs/location-proof-protocol/location-types-46b":{"__comp":"17896441","content":"b5b6e5e3"},"/docs/location-proof-protocol/media-types-ae6":{"__comp":"17896441","content":"207666d2"},"/docs/location-proof-protocol/rationale-790":{"__comp":"17896441","content":"f0e24734"},"/docs/location-proof-protocol/strategies-recipes-187":{"__comp":"17896441","content":"584535cc"},"/docs/spatial-registries/logbook-de3":{"__comp":"17896441","content":"bd6d0e35"},"/docs/spatial-registries/spatial-sol-4b0":{"__comp":"17896441","content":"35131ec2"},"/docs/tutorial-basics/congratulations-70e":{"__comp":"17896441","content":"822bd8ab"},"/docs/tutorial-basics/create-a-blog-post-315":{"__comp":"17896441","content":"533a09ca"},"/docs/tutorial-basics/create-a-document-f86":{"__comp":"17896441","content":"1e4232ab"},"/docs/tutorial-basics/create-a-page-9f6":{"__comp":"17896441","content":"5c868d36"},"/docs/tutorial-basics/deploy-your-site-b91":{"__comp":"17896441","content":"f55d3e7a"},"/docs/tutorial-basics/markdown-features-272":{"__comp":"17896441","content":"18c41134"},"/docs/tutorial-extras/manage-docs-versions-a34":{"__comp":"17896441","content":"dff1c289"},"/docs/tutorial-extras/translate-your-site-739":{"__comp":"17896441","content":"e44a2883"},"/-e5f":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[1869],(()=>{return t=8536,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.2164645d.js.LICENSE.txt b/assets/js/main.2164645d.js.LICENSE.txt new file mode 100644 index 0000000..91dc894 --- /dev/null +++ b/assets/js/main.2164645d.js.LICENSE.txt @@ -0,0 +1,64 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/*! Bundled license information: + +prismjs/prism.js: + (** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + *) +*/ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.ee2fcbd6.js b/assets/js/runtime~main.ee2fcbd6.js new file mode 100644 index 0000000..87be12c --- /dev/null +++ b/assets/js/runtime~main.ee2fcbd6.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,c,f,t,r={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var c=d[e]={id:e,loaded:!1,exports:{}};return r[e].call(c.exports,c,c.exports,b),c.loaded=!0,c.exports}b.m=r,b.c=d,e=[],b.O=(a,c,f,t)=>{if(!c){var r=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],t=e[i][2];for(var d=!0,o=0;o<c.length;o++)(!1&t||r>=t)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(d=!1,t<r&&(r=t));if(d){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}t=t||0;for(var i=e.length;i>0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[c,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,c({}),c([]),c(c)];for(var d=2&f&&e;"object"==typeof d&&!~a.indexOf(d);d=c(d))Object.getOwnPropertyNames(d).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({637:"003da42b",849:"0058b4c6",981:"ce48dac6",1235:"a7456010",1450:"f0e24734",1724:"dff1c289",1798:"bd6d0e35",1864:"09d5ad39",1903:"acecf23e",1953:"1e4232ab",1972:"73664a40",1974:"5c868d36",2148:"207666d2",2382:"2c1b52bf",2711:"9e4087bc",2748:"822bd8ab",2887:"9dfd250b",3098:"533a09ca",3249:"ccc49370",3276:"e5aefb32",3637:"f4f34a3a",3666:"35131ec2",3694:"8717b14a",3764:"7ae2cc57",3874:"9176b25c",3976:"0e384e19",4134:"393be207",4192:"00fb3d82",4365:"1b6ec5d4",4583:"1df93b7f",4584:"f82cd581",4736:"e44a2883",4813:"6875c492",5557:"d9f32620",5742:"aba21aa0",6061:"1f391b9e",7098:"a7bd4aaa",7174:"4e345e3b",7298:"b5b6e5e3",7472:"814f3328",7643:"a6aa9e1f",8025:"5e90a9b3",8121:"3a2db09e",8130:"f81c1134",8146:"c15d9823",8209:"01a85c17",8401:"17896441",8462:"3217192f",8609:"925b3f96",8623:"584535cc",8737:"7661071f",8863:"f55d3e7a",9002:"fa823849",9048:"a94703ab",9103:"6edd94a7",9262:"18c41134",9269:"a8f61235",9325:"59362658",9328:"e273c56f",9647:"5e95c892",9858:"36994c47"}[e]||e)+"."+{637:"767baa12",849:"1baed65d",981:"c8131e26",1235:"5f9bbb01",1450:"b195996c",1538:"a265ec9d",1724:"9333c787",1798:"413a63d4",1864:"24aea618",1903:"92dddac5",1953:"81526a43",1972:"93ba7b65",1974:"00dc99bc",2148:"a9f47421",2237:"fe867cfb",2382:"3592ad26",2711:"9b70b1ae",2748:"daee8353",2887:"e705d71e",3098:"b8570790",3242:"e2456824",3249:"a9298228",3276:"33ae4d86",3637:"b47754e9",3666:"82b557e5",3694:"a93f16c9",3764:"0c88ed34",3874:"8a4aa6a5",3976:"00bed4f2",4134:"a0ef7dd4",4192:"a8ad1435",4365:"440a55b5",4583:"0275efec",4584:"c160cd7f",4736:"1dd47946",4813:"ab63eb90",5557:"2564a5e9",5742:"ed09cce9",6061:"cb5e65be",7098:"b74e8d88",7174:"0aaadb8d",7298:"9d608202",7472:"5dfaceaf",7643:"02f3ef1b",8025:"111c581f",8121:"39dab5fe",8130:"e9ba17ee",8146:"a40c7001",8209:"4b09fa65",8401:"aca2f39a",8462:"f67096cb",8609:"71100b88",8623:"4efad016",8737:"d4c31643",8863:"88d09a56",9002:"72126d87",9048:"6844256b",9103:"ba7d4649",9262:"946ac897",9269:"cffc3c7f",9325:"fceb63f4",9328:"3d9c4200",9647:"3d1fe17f",9858:"337a7516"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="docs:",b.l=(e,a,c,r)=>{if(f[e])f[e].push(a);else{var d,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==t+c){d=u;break}}d||(o=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,b.nc&&d.setAttribute("nonce",b.nc),d.setAttribute("data-webpack",t+c),d.src=e),f[e]=[a];var l=(a,c)=>{d.onerror=d.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],d.parentNode&&d.parentNode.removeChild(d),t&&t.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"8401",59362658:"9325","003da42b":"637","0058b4c6":"849",ce48dac6:"981",a7456010:"1235",f0e24734:"1450",dff1c289:"1724",bd6d0e35:"1798","09d5ad39":"1864",acecf23e:"1903","1e4232ab":"1953","73664a40":"1972","5c868d36":"1974","207666d2":"2148","2c1b52bf":"2382","9e4087bc":"2711","822bd8ab":"2748","9dfd250b":"2887","533a09ca":"3098",ccc49370:"3249",e5aefb32:"3276",f4f34a3a:"3637","35131ec2":"3666","8717b14a":"3694","7ae2cc57":"3764","9176b25c":"3874","0e384e19":"3976","393be207":"4134","00fb3d82":"4192","1b6ec5d4":"4365","1df93b7f":"4583",f82cd581:"4584",e44a2883:"4736","6875c492":"4813",d9f32620:"5557",aba21aa0:"5742","1f391b9e":"6061",a7bd4aaa:"7098","4e345e3b":"7174",b5b6e5e3:"7298","814f3328":"7472",a6aa9e1f:"7643","5e90a9b3":"8025","3a2db09e":"8121",f81c1134:"8130",c15d9823:"8146","01a85c17":"8209","3217192f":"8462","925b3f96":"8609","584535cc":"8623","7661071f":"8737",f55d3e7a:"8863",fa823849:"9002",a94703ab:"9048","6edd94a7":"9103","18c41134":"9262",a8f61235:"9269",e273c56f:"9328","5e95c892":"9647","36994c47":"9858"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((c,t)=>f=e[a]=[c,t]));c.push(f[2]=t);var r=b.p+b.u(a),d=new Error;b.l(r,(c=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=c&&("load"===c.type?"missing":c.type),r=c&&c.target&&c.target.src;d.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",d.name="ChunkLoadError",d.type=t,d.request=r,f[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var f,t,r=c[0],d=c[1],o=c[2],n=0;if(r.some((a=>0!==e[a]))){for(f in d)b.o(d,f)&&(b.m[f]=d[f]);if(o)var i=o(b)}for(a&&a(c);n<r.length;n++)t=r[n],b.o(e,t)&&e[t]&&e[t][0](),e[t]=0;return b.O(i)},c=self.webpackChunkdocs=self.webpackChunkdocs||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})(); \ No newline at end of file diff --git a/blog/archive/index.html b/blog/archive/index.html new file mode 100644 index 0000000..d90c21b --- /dev/null +++ b/blog/archive/index.html @@ -0,0 +1,14 @@ +<!doctype html> +<html lang="en" dir="ltr" class="plugin-blog plugin-id-default" data-has-hydrated="false"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v3.4.0"> +<title data-rh="true">Archive | Astral Documentation + + + + + + + + \ No newline at end of file diff --git a/blog/atom.xml b/blog/atom.xml new file mode 100644 index 0000000..f4a3d22 --- /dev/null +++ b/blog/atom.xml @@ -0,0 +1,99 @@ + + + https://docs.astral.global/blog + Astral Documentation Blog + 2021-08-26T00:00:00.000Z + https://github.com/jpmonette/feed + + Astral Documentation Blog + https://docs.astral.global/img/favicon.ico + + <![CDATA[Welcome]]> + https://docs.astral.global/blog/welcome + + 2021-08-26T00:00:00.000Z + + Docusaurus blogging features are powered by the blog plugin.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

]]>
+ + SΓ©bastien Lorber + https://sebastienlorber.com + + + Yangshun Tay + https://github.com/yangshun + + + + +
+ + <![CDATA[MDX Blog Post]]> + https://docs.astral.global/blog/mdx-blog-post + + 2021-08-01T00:00:00.000Z + + Blog posts support Docusaurus Markdown features, such as MDX.

+
tip

Use the power of React to create interactive blog posts.

<button onClick={() => alert('button clicked!')}>Click me!</button>
]]>
+ + SΓ©bastien Lorber + https://sebastienlorber.com + + +
+ + <![CDATA[Long Blog Post]]> + https://docs.astral.global/blog/long-blog-post + + 2019-05-29T00:00:00.000Z + + This is the summary of a very long blog post,

+

Use a <!-- truncate --> comment to limit blog post size in the list view.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ + Endilie Yacop Sucipto + https://github.com/endiliey + + + +
+ + <![CDATA[First Blog Post]]> + https://docs.astral.global/blog/first-blog-post + + 2019-05-28T00:00:00.000Z + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ + Gao Wei + https://github.com/wgao19 + + + +
+
\ No newline at end of file diff --git a/blog/first-blog-post/index.html b/blog/first-blog-post/index.html new file mode 100644 index 0000000..52a1d27 --- /dev/null +++ b/blog/first-blog-post/index.html @@ -0,0 +1,14 @@ + + + + + +First Blog Post | Astral Documentation + + + + + +

First Blog Post

Β· One min read
Gao Wei
Docusaurus Core Team

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..65a9b5c --- /dev/null +++ b/blog/index.html @@ -0,0 +1,27 @@ + + + + + +Blog | Astral Documentation + + + + + +

Welcome

Β· One min read
SΓ©bastien Lorber
Docusaurus maintainer
Yangshun Tay
Front End Engineer @ Facebook

Docusaurus blogging features are powered by the blog plugin.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

First Blog Post

Β· One min read
Gao Wei
Docusaurus Core Team

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + \ No newline at end of file diff --git a/blog/long-blog-post/index.html b/blog/long-blog-post/index.html new file mode 100644 index 0000000..32b2a99 --- /dev/null +++ b/blog/long-blog-post/index.html @@ -0,0 +1,31 @@ + + + + + +Long Blog Post | Astral Documentation + + + + + +

Long Blog Post

Β· 3 min read
Endilie Yacop Sucipto
Maintainer of Docusaurus

This is the summary of a very long blog post,

+

Use a <!-- truncate --> comment to limit blog post size in the list view.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + \ No newline at end of file diff --git a/blog/mdx-blog-post/index.html b/blog/mdx-blog-post/index.html new file mode 100644 index 0000000..c33c7d8 --- /dev/null +++ b/blog/mdx-blog-post/index.html @@ -0,0 +1,15 @@ + + + + + +MDX Blog Post | Astral Documentation + + + + + +
+ + \ No newline at end of file diff --git a/blog/rss.xml b/blog/rss.xml new file mode 100644 index 0000000..5714ee9 --- /dev/null +++ b/blog/rss.xml @@ -0,0 +1,81 @@ + + + + Astral Documentation Blog + https://docs.astral.global/blog + Astral Documentation Blog + Thu, 26 Aug 2021 00:00:00 GMT + https://validator.w3.org/feed/docs/rss2.html + https://github.com/jpmonette/feed + en + + <![CDATA[Welcome]]> + https://docs.astral.global/blog/welcome + https://docs.astral.global/blog/welcome + Thu, 26 Aug 2021 00:00:00 GMT + + Docusaurus blogging features are powered by the blog plugin.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

]]>
+ Facebook + Hello + Docusaurus +
+ + <![CDATA[MDX Blog Post]]> + https://docs.astral.global/blog/mdx-blog-post + https://docs.astral.global/blog/mdx-blog-post + Sun, 01 Aug 2021 00:00:00 GMT + + Blog posts support Docusaurus Markdown features, such as MDX.

+
tip

Use the power of React to create interactive blog posts.

<button onClick={() => alert('button clicked!')}>Click me!</button>
]]>
+ Docusaurus +
+ + <![CDATA[Long Blog Post]]> + https://docs.astral.global/blog/long-blog-post + https://docs.astral.global/blog/long-blog-post + Wed, 29 May 2019 00:00:00 GMT + + This is the summary of a very long blog post,

+

Use a <!-- truncate --> comment to limit blog post size in the list view.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ Hello + Docusaurus +
+ + <![CDATA[First Blog Post]]> + https://docs.astral.global/blog/first-blog-post + https://docs.astral.global/blog/first-blog-post + Tue, 28 May 2019 00:00:00 GMT + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

]]>
+ Hola + Docusaurus +
+
+
\ No newline at end of file diff --git a/blog/tags/docusaurus/index.html b/blog/tags/docusaurus/index.html new file mode 100644 index 0000000..71d5075 --- /dev/null +++ b/blog/tags/docusaurus/index.html @@ -0,0 +1,27 @@ + + + + + +4 posts tagged with "Docusaurus" | Astral Documentation + + + + + +

4 posts tagged with "Docusaurus"

Docusaurus tag description

View All Tags

Welcome

Β· One min read
SΓ©bastien Lorber
Docusaurus maintainer
Yangshun Tay
Front End Engineer @ Facebook

Docusaurus blogging features are powered by the blog plugin.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

First Blog Post

Β· One min read
Gao Wei
Docusaurus Core Team

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + \ No newline at end of file diff --git a/blog/tags/facebook/index.html b/blog/tags/facebook/index.html new file mode 100644 index 0000000..201c608 --- /dev/null +++ b/blog/tags/facebook/index.html @@ -0,0 +1,25 @@ + + + + + +One post tagged with "Facebook" | Astral Documentation + + + + + +

One post tagged with "Facebook"

Facebook tag description

View All Tags

Welcome

Β· One min read
SΓ©bastien Lorber
Docusaurus maintainer
Yangshun Tay
Front End Engineer @ Facebook

Docusaurus blogging features are powered by the blog plugin.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

+ + \ No newline at end of file diff --git a/blog/tags/hello/index.html b/blog/tags/hello/index.html new file mode 100644 index 0000000..edb5582 --- /dev/null +++ b/blog/tags/hello/index.html @@ -0,0 +1,26 @@ + + + + + +2 posts tagged with "Hello" | Astral Documentation + + + + + +

2 posts tagged with "Hello"

Hello tag description

View All Tags

Welcome

Β· One min read
SΓ©bastien Lorber
Docusaurus maintainer
Yangshun Tay
Front End Engineer @ Facebook

Docusaurus blogging features are powered by the blog plugin.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

+ + \ No newline at end of file diff --git a/blog/tags/hola/index.html b/blog/tags/hola/index.html new file mode 100644 index 0000000..636d4e9 --- /dev/null +++ b/blog/tags/hola/index.html @@ -0,0 +1,14 @@ + + + + + +One post tagged with "Hola" | Astral Documentation + + + + + +

One post tagged with "Hola"

Hola tag description

View All Tags

First Blog Post

Β· One min read
Gao Wei
Docusaurus Core Team

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

+ + \ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html new file mode 100644 index 0000000..5f2b15c --- /dev/null +++ b/blog/tags/index.html @@ -0,0 +1,14 @@ + + + + + +Tags | Astral Documentation + + + + + + + + \ No newline at end of file diff --git a/blog/welcome/index.html b/blog/welcome/index.html new file mode 100644 index 0000000..5937649 --- /dev/null +++ b/blog/welcome/index.html @@ -0,0 +1,25 @@ + + + + + +Welcome | Astral Documentation + + + + + +

Welcome

Β· One min read
SΓ©bastien Lorber
Docusaurus maintainer
Yangshun Tay
Front End Engineer @ Facebook

Docusaurus blogging features are powered by the blog plugin.

+

Simply add Markdown files (or folders) to the blog directory.

+

Regular blog authors can be added to authors.yml.

+

The blog post date can be extracted from filenames, such as:

+
    +
  • 2019-05-30-welcome.md
  • +
  • 2019-05-30-welcome/index.md
  • +
+

A blog post folder can be convenient to co-locate blog post images:

+

Docusaurus Plushie

+

The blog supports tags as well!

+

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

+ + \ No newline at end of file diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index bfc3a2ffcc320ff3ff944d98b1c88cba4678ddd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28807 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 B=KlZy diff --git a/docs/core-concepts/decentralized-spatial-data/index.html b/docs/core-concepts/decentralized-spatial-data/index.html new file mode 100644 index 0000000..3010e67 --- /dev/null +++ b/docs/core-concepts/decentralized-spatial-data/index.html @@ -0,0 +1,14 @@ + + + + + +Decentralized spatial data | Astral Documentation + + + + + +

Decentralized spatial data

+ + \ No newline at end of file diff --git a/docs/core-concepts/location-proofs/index.html b/docs/core-concepts/location-proofs/index.html new file mode 100644 index 0000000..bf5594d --- /dev/null +++ b/docs/core-concepts/location-proofs/index.html @@ -0,0 +1,14 @@ + + + + + +Location proofs | Astral Documentation + + + + + +

Location proofs

+ + \ No newline at end of file diff --git a/docs/core-concepts/onchain-geospatial/index.html b/docs/core-concepts/onchain-geospatial/index.html new file mode 100644 index 0000000..788fc46 --- /dev/null +++ b/docs/core-concepts/onchain-geospatial/index.html @@ -0,0 +1,14 @@ + + + + + +Onchain geospatial | Astral Documentation + + + + + +

Onchain geospatial

+ + \ No newline at end of file diff --git a/docs/core-concepts/what-is-spatial-data/index.html b/docs/core-concepts/what-is-spatial-data/index.html new file mode 100644 index 0000000..8ea15fc --- /dev/null +++ b/docs/core-concepts/what-is-spatial-data/index.html @@ -0,0 +1,14 @@ + + + + + +What is spatial data? | Astral Documentation + + + + + +

What is spatial data?

+ + \ No newline at end of file diff --git a/docs/developer-resources/location-attestations/index.html b/docs/developer-resources/location-attestations/index.html new file mode 100644 index 0000000..e37299e --- /dev/null +++ b/docs/developer-resources/location-attestations/index.html @@ -0,0 +1,14 @@ + + + + + +Location attestations | Astral Documentation + + + + + +

Location attestations

+ + \ No newline at end of file diff --git a/docs/developer-resources/quickstart/index.html b/docs/developer-resources/quickstart/index.html new file mode 100644 index 0000000..dc69457 --- /dev/null +++ b/docs/developer-resources/quickstart/index.html @@ -0,0 +1,14 @@ + + + + + +Quickstart | Astral Documentation + + + + + +

Quickstart

+ + \ No newline at end of file diff --git a/docs/developer-resources/spatial-registries/index.html b/docs/developer-resources/spatial-registries/index.html new file mode 100644 index 0000000..3ac844e --- /dev/null +++ b/docs/developer-resources/spatial-registries/index.html @@ -0,0 +1,14 @@ + + + + + +Spatial registries | Astral Documentation + + + + + +

Spatial registries

+ + \ No newline at end of file diff --git a/docs/examples/index.html b/docs/examples/index.html new file mode 100644 index 0000000..daf14ce --- /dev/null +++ b/docs/examples/index.html @@ -0,0 +1,14 @@ + + + + + +Content goes here... | Astral Documentation + + + + + +

Content goes here...

+ + \ No newline at end of file diff --git a/docs/hello/index.html b/docs/hello/index.html new file mode 100644 index 0000000..1eee3a6 --- /dev/null +++ b/docs/hello/index.html @@ -0,0 +1,16 @@ + + + + + +Hello | Astral Documentation + + + + + +

Hello

+

This is my first Docusaurus document!# Hello

+

This is my first Docusaurus document!

+ + \ No newline at end of file diff --git a/docs/intro/index.html b/docs/intro/index.html new file mode 100644 index 0000000..cb6e46b --- /dev/null +++ b/docs/intro/index.html @@ -0,0 +1,38 @@ + + + + + +Tutorial Intro | Astral Documentation + + + + + +

Tutorial Intro

+

Let's discover Docusaurus in less than 5 minutes.

+

Getting Started​

+

Get started by creating a new site.

+

Or try Docusaurus immediately with docusaurus.new.

+

What you'll need​

+
    +
  • Node.js version 18.0 or above: +
      +
    • When installing Node.js, you are recommended to check all checkboxes related to dependencies.
    • +
    +
  • +
+

Generate a new site​

+

Generate a new Docusaurus site using the classic template.

+

The classic template will automatically be added to your project after you run the command:

+
npm init docusaurus@latest my-website classic
+

You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.

+

The command also installs all necessary dependencies you need to run Docusaurus.

+

Start your site​

+

Run the development server:

+
cd my-website
npm run start
+

The cd command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.

+

The npm run start command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.

+

Open docs/intro.md (this page) and edit some lines: the site reloads automatically and displays your changes.

+ + \ No newline at end of file diff --git a/docs/introducing-astral/index.html b/docs/introducing-astral/index.html new file mode 100644 index 0000000..a1ec9da --- /dev/null +++ b/docs/introducing-astral/index.html @@ -0,0 +1,14 @@ + + + + + +Introduction | Astral Documentation + + + + + +

Introduction

+ + \ No newline at end of file diff --git a/docs/location-proof-protocol/architecture/index.html b/docs/location-proof-protocol/architecture/index.html new file mode 100644 index 0000000..83abf6b --- /dev/null +++ b/docs/location-proof-protocol/architecture/index.html @@ -0,0 +1,28 @@ + + + + + +Architecture | Astral Documentation + + + + + +

Architecture

+

We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you'd like to weigh in β€” +or help us build it! β€”Β reach out on Telegram.

+

Here's the top-level abstract of the work we're doing:

+

Abstract​

+

This spike examines two approaches of extensible contracts, managed by a *RecipeCoordinator.sol* contract that controls the addition and +upgrade of multiple implementation contracts. These implementation contracts each hold a recipe for a β€œproof-of-location” strategy.

+

The primary purpose of this design is to coordinate the addition, use and upgrade of these recipes / strategies, through one coordinating +contract β€” RecipeCoordinator.sol. Adding recipes is a permissionless, public action taken through the RecipeCoordinator. Upgrade +functionality is required for both the RecipeCoordinator and, optionally, on recipe implementation contracts.

+

In this spike, we consider two architectural design patterns to serve this purpose: the Diamond pattern and ERC-165 interface matching.

+
note

For example, a team developing a proof-of-location strategy that requires users to scan NFC devices would implement the Solidity code to +record and verify location proofs, then register the implementation with the RecipeCoordinator.

The β€œrecipe” would describe the shape + content of the data that needs to be included in a location proof for it to adhere to that strategy. +The implementation contract developed by the strategy designers would include a verify method.

+
warning

This is all work in progress, we'd love input!

+ + \ No newline at end of file diff --git a/docs/location-proof-protocol/eas-schema/index.html b/docs/location-proof-protocol/eas-schema/index.html new file mode 100644 index 0000000..2ab79a7 --- /dev/null +++ b/docs/location-proof-protocol/eas-schema/index.html @@ -0,0 +1,20 @@ + + + + + +EAS Schema | Astral Documentation + + + + + +

EAS Schema

+

Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)​

+

The core layer of the Location Proof Protocol includes a standard data model. v0.1 of the data model is described in this document. The +current working schema is deployed on Ethereum Sepolia testnet, UID 0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b +(view on EASScan).

+
FieldDescriptionKeyData TypeSource
IdentifierUnique ID for the location proof.uidbytes32EAS provides this
Prover AddressAddress of the prover.fromaddressSender address, as specified by EAS
Subject IdentifierUnique ID for the subject/event.subjectaddressEAS provides this, however future iterations may require IDs that are not Ethereum addresses (DIDs, for example)
TimestampTime the location proof was created.timestampuint256EAS
Event TimestampTime of the event referenced by the location proof.eventTimestampuint256User input
Spatial Reference SystemCoordinate system within which the object is positioned.srsstringin v0.1, hard coded to "EPSG:4326"
Location TypeA string defining how the location field is structured.locationTypestringDepends on the recipe / strategy, or user input
LocationThe location of the object/event.locationbytesDepends on the recipe / strategy, or user input
Proof Recipe IdentifierIndicates the proof recipe used.recipeTypestring[]Defined from a set of registered recipes, to be stored in the @/recipes directory
Proof Recipe PayloadEncoded data specific to the proof recipe, which could include encrypted location data, a zero-knowledge proof, or references to other verification data.recipePayloadbytes[]Specified in recipe definition
Media TypeA unique string referring to the media to be included in a bytes field, Media Data. This pattern is similar to OpenGraph Protocol’s type definition.mediaTypestring[]Defined from a set of supported media types, to be stored in the @/media directory
Media DataA bytes field allowing the attachment of arbitrary data to a location proof. This data is intended to be irrelevant to the location proof and not required/utilized in the proof recipe verification.mediaDatabytes[]Specified in media type definition
MemoAn arbitrary messagememostringUser input
+

Note that this design supports location proofs that include multiple recipe types / recipe payloads and media type / media data.

+ + \ No newline at end of file diff --git a/docs/location-proof-protocol/introduction/index.html b/docs/location-proof-protocol/introduction/index.html new file mode 100644 index 0000000..f91913a --- /dev/null +++ b/docs/location-proof-protocol/introduction/index.html @@ -0,0 +1,34 @@ + + + + + +Introduction | Astral Documentation + + + + + +

Introduction

+

The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.

+

Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies +while providing a standard data model for creating and verifying these proofs.

+
tip

We're working on the Location Proof Protocol in a few places:

    +
  • most active work is happening in the Astral Logbook dapp (especially the +<CheckinForm> component)
  • +
  • we're planning to store code in the astralprotocol monorepo, located +here on Github.
  • +

The structure is subject to change β€” these docs are the most current!

+

This section of the monorepo currently contains:

+
    +
  • Specifications of the core Ethereum Attestation Service (EAS) schema for the protocol
  • +
  • Details on how to create location proofs using different location types
  • +
  • A framework (in development) for building "recipes" that allow for many different strategies for proving +location to be added (WIP)
  • +
  • Information on attaching differet types of media to location proofs (WIP)
  • +
+

Contributing​

+

We welcome contributions to improve the protocol and tools. Please read our +contributing guidelines for more details.

+ + \ No newline at end of file diff --git a/docs/location-proof-protocol/location-types/index.html b/docs/location-proof-protocol/location-types/index.html new file mode 100644 index 0000000..1397786 --- /dev/null +++ b/docs/location-proof-protocol/location-types/index.html @@ -0,0 +1,82 @@ + + + + + +Location Types | Astral Documentation + + + + + +

Location Types

+

v0.1​

+

To ensure location proofs are as versatile as possible, we are giving users / developers the option of creating proofs that adhere to any +location type.

+

This requires creating a standardized set of categories for "location types" that include various ways of representing locations such as +different coordinate systems, H3 strings, geohashes, and more. The purpose of this is to ensure interoperability and clarity in geospatial +data management, while still offering flexibility for different proof types.

+
Alpha Locations

Initially, location proofs will use WGS84 decimal degree coordinates, ordered as [longitude, latitude].

These coordinate pairs will be formatted as strings, converted to bytes for storage onchain. The working locationType will be set to +DecimalDegrees<string>.

+

If you would like to develop proofs that use an alternative location encoding (like those listed below), reach out on +Telegram.

+

Future Categories of Location Types​

+
    +
  1. Geographic Coordinates (Lat/Long) +
      +
    • Decimal Degrees: Standard longitude and latitude (e.g., [-122.4194, 37.7749]).
    • +
    • Degrees, Minutes, Seconds (DMS): Latitude and longitude in degrees, minutes, and seconds (e.g., 37Β°46'30" N, 122Β°25'10" W).
    • +
    +
  2. +
  3. Projected Coordinates +
      +
    • Universal Transverse Mercator (UTM): Uses a series of zones for global coverage (e.g., 10S 551000 4182000).
    • +
    • State Plane Coordinate System (SPCS): Used in the United States (e.g., X: 2000000, Y: 500000 in a specific state plane zone).
    • +
    +
  4. +
  5. Geohashes +
      +
    • Geohash: A hierarchical spatial data structure which subdivides space into buckets of grid shape (e.g., 9q8yyz).
    • +
    +
  6. +
  7. H3 Hexagons +
      +
    • H3: A hierarchical hexagonal grid system used for spatial indexing (e.g., 85283473fffffff).
    • +
    +
  8. +
  9. Plus Codes +
      +
    • Open Location Code (OLC): Developed by Google, it's a code that represents an area anywhere on Earth (e.g., 7FG8V4VC+G7).
    • +
    +
  10. +
  11. Grid References +
      +
    • Military Grid Reference System (MGRS): Used by NATO militaries for locating points on the Earth (e.g., 33TWN8382558454).
    • +
    • British National Grid (OSGB): Used in Great Britain (e.g., TQ 298828).
    • +
    +
  12. +
  13. Place Names / Addresses +
      +
    • Postal Address: Standard mailing address (e.g., 1600 Amphitheatre Parkway, Mountain View, CA).
    • +
    • Named Locations: Known place names (e.g., Eiffel Tower).
    • +
    +
  14. +
  15. What3Words References +
      +
    • W3W: A geocoding system that encodes geographic coordinates into three dictionary words (e.g., ///filled.count.soap).
    • +
    +
  16. +
+

Formal specification of the location types and how they are represented is in development, and will be documented here.

+

Diverse Spatial Reference Systems​

+

Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial +reference systems, such as:

+
    +
  • Being with a person at a particular time
  • +
  • Location in a metaverse space
  • +
  • Presence in a vehicle or a specific room
  • +
+

Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and +relative. However, initial development of the protocol will focus on positioning objects / events on Earth.

+ + \ No newline at end of file diff --git a/docs/location-proof-protocol/media-types/index.html b/docs/location-proof-protocol/media-types/index.html new file mode 100644 index 0000000..645290e --- /dev/null +++ b/docs/location-proof-protocol/media-types/index.html @@ -0,0 +1,118 @@ + + + + + +Media Types | Astral Documentation + + + + + +

Media Types

+

Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME +types, allowing for the inclusion of various data formats such as photos, videos, audio, URLs, LIDAR scans, point clouds, and more. This +section provides an overview of the media types we aim to build support for, their MIME types, and considerations for their use.

+
warning

This is the alpha version and is subject to change!

+

Media structure​

+

Currently, the location proofs we're registering on EAS have two fields related to media:

+
    +
  • mediaType: an array of strings, each a unique designator of the media attached, to ease parsing when location proofs are read
  • +
  • mediaData: an array of bytes containing either the media itself or some kind of media identifier, likely a CID
  • +
+

Of course, elements in each array correspond accoding to index.

+

In this way, any set of media data can be attached to a location proof. This opens use cases such as geotagged photos and videos, dMRV data +for impact / regeneration projects, etc.

+
note

Data included in the media fields should NOT be required for the location proof strategy. For example, if a strategy used photos of the +surrounding area (i.e. of known landmarks), this data should be included in the proof recipe.

+

At this point, we have not fully scoped the requirements of the mediaType string designators. Any content can be attached to a location +proof (which is why we selected the versatile bytes data type) β€” but note there is no standardized way of knowing what type of file / data +is attached. Stay tuned here.

+

Future Media Types​

+

1. Photos​

+

Photos can be attached in various formats, each with its corresponding MIME type:

+
    +
  • JPEG: image/jpeg
  • +
  • PNG: image/png
  • +
  • GIF: image/gif
  • +
  • TIFF: image/tiff
  • +
  • BMP: image/bmp
  • +
+

2. Videos​

+

Video attachments support multiple formats to ensure compatibility and optimal performance:

+
    +
  • MP4: video/mp4
  • +
  • WebM: video/webm
  • +
  • AVI: video/x-msvideo
  • +
  • MOV: video/quicktime
  • +
  • MKV: video/x-matroska
  • +
+

3. Audio​

+

Audio files in the following formats can be attached to a location proof:

+
    +
  • MP3: audio/mpeg
  • +
  • WAV: audio/wav
  • +
  • OGG: audio/ogg
  • +
  • AAC: audio/aac
  • +
+

4. URLs​

+

URLs can be linked directly from a location proof, providing access to external resources:

+
    +
  • URL: text/uri-list
  • +
+

5. LIDAR Scans​

+

LIDAR scans provide detailed three-dimensional data and are supported in these formats:

+
    +
  • LAS: application/vnd.las
  • +
  • LAZ: application/vnd.laszip
  • +
+

6. Point Clouds​

+

Point clouds, representing spatial data points, can be attached in various formats:

+
    +
  • PCD: application/pcd
  • +
  • PLY: application/ply
  • +
  • XYZ: application/xyz
  • +
+

7. Documents​

+

Users can attach documents to provide additional information or context:

+
    +
  • PDF: application/pdf
  • +
  • Microsoft Word: application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document
  • +
  • Microsoft Excel: application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  • +
  • Plain Text: text/plain
  • +
+

8. Other Formats​

+

We also support a wide range of other media types to ensure flexibility:

+
    +
  • JSON: application/json
  • +
  • XML: application/xml
  • +
  • CSV: text/csv
  • +
  • ZIP: application/zip
  • +
+

Considerations for Use​

+
    +
  1. +

    File Size: Different media types can have varying file sizes. It's essential to consider the storage implications and performance +impact of large files, especially high-resolution videos, LIDAR scans, and point clouds.

    +
  2. +
  3. +

    Format Compatibility: Ensure that the attached media format is compatible with the systems and applications that will access the +location proof. For example, not all browsers or devices may support every video or audio format.

    +
  4. +
  5. +

    Security: Validate and sanitize media files to protect against potential security threats such as malware or malicious code embedded +in files.

    +
  6. +
  7. +

    Metadata: Including metadata with media files (e.g., EXIF data for photos, geolocation for videos) can provide additional context and +improve the usability of the attached media.

    +
  8. +
  9. +

    Compression: Utilize compression for large files to optimize storage and transmission. Formats like LAZ (compressed LAS) are +preferable for LIDAR scans.

    +
  10. +
+

By leveraging MIME types, our system provides a flexible and robust framework for attaching a wide range of media types to location proofs, +enhancing the richness and utility of the data associated with each proof.

+ + \ No newline at end of file diff --git a/docs/location-proof-protocol/rationale/index.html b/docs/location-proof-protocol/rationale/index.html new file mode 100644 index 0000000..05487ca --- /dev/null +++ b/docs/location-proof-protocol/rationale/index.html @@ -0,0 +1,24 @@ + + + + + +Rationale | Astral Documentation + + + + + +

Rationale

+

We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and +verifying location proofs.

+
    +
  • Locations can be represented in a range of ways, within a range of different spatial reference systems
  • +
  • There are many different possible strategies for proving location in trust-minimized environments β€” different use cases will require +different levels of precision, confidence, cost, privacy etc
  • +
  • Users will want to attach all sorts of different media to proofs, from photos and videos to LIDAR scans to URLs
  • +
+

Our design is intended to flexibly serve all of these use cases, while provided a common format to talk about verifiable location on the +decentralized web. By converging on this standard we hope location proofs will be composable and interoperable.

+ + \ No newline at end of file diff --git a/docs/location-proof-protocol/strategies-recipes/index.html b/docs/location-proof-protocol/strategies-recipes/index.html new file mode 100644 index 0000000..6ec1b74 --- /dev/null +++ b/docs/location-proof-protocol/strategies-recipes/index.html @@ -0,0 +1,40 @@ + + + + + +Strategies + Recipes | Astral Documentation + + + + + +

Strategies + Recipes

+

The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the +decentralized web, while also provided a standard way of representing these proofs.

+

In this section of the documentation, we will define these different location proof strategies, and document how to contribute a new +strategy to the protocol. (For a clearer idea of our design, see the Architecture page).

+
note

A contributing guide, along with documentation on specific strategies, is in the work. If you want to help us develop this, reach out!

+

Broad Approaches to Location Proofs​

+
    +
  • Authority-based Strategies: Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts
  • +
  • Social Strategies: People verify each other's claims, confirming or challenging their validity. i.e. permissionless social +confirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange
  • +
  • Near-field Machine Strategies: Hardware devices attest to the presence of another device through information exchange or cryptographic +'endorsement' of a claim. i.e. RFID; NFC; Bluetooth
  • +
  • Network Machine Strategies: Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e. +Time of Flight; Time Difference of Arrival
  • +
  • Sensor Data Strategies: Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and +location is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization
  • +
+

In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a +different attributes, such as privacy, game theoretic assurances of validity, etc.

+
    +
  • Time-based Schemes: Involves waiting or challenge periods.
  • +
  • Cryptographic Schemes: Zero-knowledge proofs verified on-chain or in peer nodes.
  • +
  • AI-based Schemes: Analyzing photos or contextual information.
  • +
  • Economic Schemes: Requires payment or staking value for proof creation.
  • +
+

This is an incomplete list, and we hope to support a growing set of experiments in location proof design.

+ + \ No newline at end of file diff --git a/docs/spatial-registries/logbook/index.html b/docs/spatial-registries/logbook/index.html new file mode 100644 index 0000000..bef7708 --- /dev/null +++ b/docs/spatial-registries/logbook/index.html @@ -0,0 +1,14 @@ + + + + + +Logbook | Astral Documentation + + + + + +

Logbook

+ + \ No newline at end of file diff --git a/docs/spatial-registries/spatial-sol/index.html b/docs/spatial-registries/spatial-sol/index.html new file mode 100644 index 0000000..4ac1c59 --- /dev/null +++ b/docs/spatial-registries/spatial-sol/index.html @@ -0,0 +1,14 @@ + + + + + +Spatial.sol | Astral Documentation + + + + + +

Spatial.sol

+ + \ No newline at end of file diff --git a/docs/tutorial-basics/congratulations/index.html b/docs/tutorial-basics/congratulations/index.html new file mode 100644 index 0000000..1449af3 --- /dev/null +++ b/docs/tutorial-basics/congratulations/index.html @@ -0,0 +1,28 @@ + + + + + +Congratulations! | Astral Documentation + + + + + +

Congratulations!

+

You have just learned the basics of Docusaurus and made some changes to the initial template.

+

Docusaurus has much more to offer!

+

Have 5 more minutes? Take a look at versioning and i18n.

+

Anything unclear or buggy in this tutorial? Please report it!

+

What's next?​

+
+ + \ No newline at end of file diff --git a/docs/tutorial-basics/create-a-blog-post/index.html b/docs/tutorial-basics/create-a-blog-post/index.html new file mode 100644 index 0000000..9097823 --- /dev/null +++ b/docs/tutorial-basics/create-a-blog-post/index.html @@ -0,0 +1,19 @@ + + + + + +Create a Blog Post | Astral Documentation + + + + + +

Create a Blog Post

+

Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...

+

Create your first Post​

+

Create a file at blog/2021-02-28-greetings.md:

+
blog/2021-02-28-greetings.md
---
slug: greetings
title: Greetings!
authors:
- name: Joel Marcey
title: Co-creator of Docusaurus 1
url: https://github.com/JoelMarcey
image_url: https://github.com/JoelMarcey.png
- name: SΓ©bastien Lorber
title: Docusaurus maintainer
url: https://sebastienlorber.com
image_url: https://github.com/slorber.png
tags: [greetings]
---

Congratulations, you have made your first post!

Feel free to play around and edit this post as much as you like.
+

A new blog post is now available at http://localhost:3000/blog/greetings.

+ + \ No newline at end of file diff --git a/docs/tutorial-basics/create-a-document/index.html b/docs/tutorial-basics/create-a-document/index.html new file mode 100644 index 0000000..aa5de23 --- /dev/null +++ b/docs/tutorial-basics/create-a-document/index.html @@ -0,0 +1,30 @@ + + + + + +Create a Document | Astral Documentation + + + + + +

Create a Document

+

Documents are groups of pages connected through:

+
    +
  • a sidebar
  • +
  • previous/next navigation
  • +
  • versioning
  • +
+

Create your first Doc​

+

Create a Markdown file at docs/hello.md:

+
docs/hello.md
# Hello

This is my **first Docusaurus document**!
+

A new document is now available at http://localhost:3000/docs/hello.

+

Configure the Sidebar​

+

Docusaurus automatically creates a sidebar from the docs folder.

+

Add metadata to customize the sidebar label and position:

+
docs/hello.md
---
sidebar_label: 'Hi!'
sidebar_position: 3
---

# Hello

This is my **first Docusaurus document**!
+

It is also possible to create your sidebar explicitly in sidebars.js:

+
sidebars.js
export default {
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
};
+ + \ No newline at end of file diff --git a/docs/tutorial-basics/create-a-page/index.html b/docs/tutorial-basics/create-a-page/index.html new file mode 100644 index 0000000..17bd3bf --- /dev/null +++ b/docs/tutorial-basics/create-a-page/index.html @@ -0,0 +1,28 @@ + + + + + +Create a Page | Astral Documentation + + + + + +

Create a Page

+

Add Markdown or React files to src/pages to create a standalone page:

+
    +
  • src/pages/index.js β†’ localhost:3000/
  • +
  • src/pages/foo.md β†’ localhost:3000/foo
  • +
  • src/pages/foo/bar.js β†’ localhost:3000/foo/bar
  • +
+

Create your first React Page​

+

Create a file at src/pages/my-react-page.js:

+
src/pages/my-react-page.js
import React from 'react';
import Layout from '@theme/Layout';

export default function MyReactPage() {
return (
<Layout>
<h1>My React page</h1>
<p>This is a React page</p>
</Layout>
);
}
+

A new page is now available at http://localhost:3000/my-react-page.

+

Create your first Markdown Page​

+

Create a file at src/pages/my-markdown-page.md:

+
src/pages/my-markdown-page.md
# My Markdown page

This is a Markdown page
+

A new page is now available at http://localhost:3000/my-markdown-page.

+ + \ No newline at end of file diff --git a/docs/tutorial-basics/deploy-your-site/index.html b/docs/tutorial-basics/deploy-your-site/index.html new file mode 100644 index 0000000..52271fa --- /dev/null +++ b/docs/tutorial-basics/deploy-your-site/index.html @@ -0,0 +1,25 @@ + + + + + +Deploy your site | Astral Documentation + + + + + +

Deploy your site

+

Docusaurus is a static-site-generator (also called Jamstack).

+

It builds your site as simple static HTML, JavaScript and CSS files.

+

Build your site​

+

Build your site for production:

+
npm run build
+

The static files are generated in the build folder.

+

Deploy your site​

+

Test your production build locally:

+
npm run serve
+

The build folder is now served at http://localhost:3000/.

+

You can now deploy the build folder almost anywhere easily, for free or very small cost (read the Deployment Guide).

+ + \ No newline at end of file diff --git a/docs/tutorial-basics/markdown-features/index.html b/docs/tutorial-basics/markdown-features/index.html new file mode 100644 index 0000000..8fb545f --- /dev/null +++ b/docs/tutorial-basics/markdown-features/index.html @@ -0,0 +1,45 @@ + + + + + +Markdown Features | Astral Documentation + + + + + +

Markdown Features

+

Docusaurus supports Markdown and a few additional features.

+

Front Matter​

+

Markdown documents have metadata at the top called Front Matter:

+
my-doc.md
---
id: my-doc-id
title: My document title
description: My document description
slug: /my-custom-url
---

## Markdown heading

Markdown text with [links](./hello.md)
+ +

Regular Markdown links are supported, using url paths or relative file paths.

+
Let's see how to [Create a page](/create-a-page).
+
Let's see how to [Create a page](./create-a-page.md).
+

Result: Let's see how to Create a page.

+

Images​

+

Regular Markdown images are supported.

+

You can use absolute paths to reference images in the static directory (static/img/docusaurus.png):

+
![Docusaurus logo](/img/docusaurus.png)
+

Docusaurus logo

+

You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:

+
![Docusaurus logo](./img/docusaurus.png)
+

Code Blocks​

+

Markdown code blocks are supported with Syntax highlighting.

+
```jsx title="src/components/HelloDocusaurus.js"
function HelloDocusaurus() {
return <h1>Hello, Docusaurus!</h1>;
}
```
+
src/components/HelloDocusaurus.js
function HelloDocusaurus() {
return <h1>Hello, Docusaurus!</h1>;
}
+

Admonitions​

+

Docusaurus has a special syntax to create admonitions and callouts:

+
:::tip[My tip]

Use this awesome feature option

:::

:::danger[Take care]

This action is dangerous

:::
+
My tip

Use this awesome feature option

+
Take care

This action is dangerous

+

MDX and React Components​

+

MDX can make your documentation more interactive and allows using any React components inside Markdown:

+
export const Highlight = ({children, color}) => (
<span
style={{
backgroundColor: color,
borderRadius: '20px',
color: '#fff',
padding: '10px',
cursor: 'pointer',
}}
onClick={() => {
alert(`You clicked the color ${color} with label ${children}`)
}}>
{children}
</span>
);

This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !

This is <Highlight color="#1877F2">Facebook blue</Highlight> !
+ +

This is Docusaurus green !

+

This is Facebook blue !

+ + \ No newline at end of file diff --git a/docs/tutorial-extras/manage-docs-versions/index.html b/docs/tutorial-extras/manage-docs-versions/index.html new file mode 100644 index 0000000..0e3f471 --- /dev/null +++ b/docs/tutorial-extras/manage-docs-versions/index.html @@ -0,0 +1,36 @@ + + + + + +Manage Docs Versions | Astral Documentation + + + + + +

Manage Docs Versions

+

Docusaurus can manage multiple versions of your docs.

+

Create a docs version​

+

Release a version 1.0 of your project:

+
npm run docusaurus docs:version 1.0
+

The docs folder is copied into versioned_docs/version-1.0 and versions.json is created.

+

Your docs now have 2 versions:

+
    +
  • 1.0 at http://localhost:3000/docs/ for the version 1.0 docs
  • +
  • current at http://localhost:3000/docs/next/ for the upcoming, unreleased docs
  • +
+

Add a Version Dropdown​

+

To navigate seamlessly across versions, add a version dropdown.

+

Modify the docusaurus.config.js file:

+
docusaurus.config.js
export default {
themeConfig: {
navbar: {
items: [
{
type: 'docsVersionDropdown',
},
],
},
},
};
+

The docs version dropdown appears in your navbar:

+

Docs Version Dropdown

+

Update an existing version​

+

It is possible to edit versioned docs in their respective folder:

+
    +
  • versioned_docs/version-1.0/hello.md updates http://localhost:3000/docs/hello
  • +
  • docs/hello.md updates http://localhost:3000/docs/next/hello
  • +
+ + \ No newline at end of file diff --git a/docs/tutorial-extras/translate-your-site/index.html b/docs/tutorial-extras/translate-your-site/index.html new file mode 100644 index 0000000..f6d89de --- /dev/null +++ b/docs/tutorial-extras/translate-your-site/index.html @@ -0,0 +1,38 @@ + + + + + +Translate your site | Astral Documentation + + + + + +

Translate your site

+

Let's translate docs/intro.md to French.

+

Configure i18n​

+

Modify docusaurus.config.js to add support for the fr locale:

+
docusaurus.config.js
export default {
i18n: {
defaultLocale: 'en',
locales: ['en', 'fr'],
},
};
+

Translate a doc​

+

Copy the docs/intro.md file to the i18n/fr folder:

+
mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/

cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md
+

Translate i18n/fr/docusaurus-plugin-content-docs/current/intro.md in French.

+

Start your localized site​

+

Start your site on the French locale:

+
npm run start -- --locale fr
+

Your localized site is accessible at http://localhost:3000/fr/ and the Getting Started page is translated.

+
caution

In development, you can only use one locale at a time.

+

Add a Locale Dropdown​

+

To navigate seamlessly across languages, add a locale dropdown.

+

Modify the docusaurus.config.js file:

+
docusaurus.config.js
export default {
themeConfig: {
navbar: {
items: [
{
type: 'localeDropdown',
},
],
},
},
};
+

The locale dropdown now appears in your navbar:

+

Locale Dropdown

+

Build your localized site​

+

Build your site for a specific locale:

+
npm run build -- --locale fr
+

Or build your site to include all the locales at once:

+
npm run build
+ + \ No newline at end of file diff --git a/foundry.toml b/foundry.toml deleted file mode 100644 index 852ae3c..0000000 --- a/foundry.toml +++ /dev/null @@ -1,53 +0,0 @@ -# Full reference https://github.com/foundry-rs/foundry/tree/master/crates/config - -[profile.default] - auto_detect_solc = false - block_timestamp = 1_680_220_800 # March 31, 2023 at 00:00 GMT - bytecode_hash = "none" - evm_version = "paris" # See https://www.evmdiff.com/features?name=PUSH0&kind=opcode - fuzz = { runs = 1_000 } - gas_reports = ["*"] - optimizer = true - optimizer_runs = 10_000 - out = "out" - script = "script" - solc = "0.8.25" - src = "src" - test = "test" - -[profile.ci] - fuzz = { runs = 10_000 } - verbosity = 4 - -[etherscan] - arbitrum = { key = "${API_KEY_ARBISCAN}" } - avalanche = { key = "${API_KEY_SNOWTRACE}" } - bnb_smart_chain = { key = "${API_KEY_BSCSCAN}" } - gnosis_chain = { key = "${API_KEY_GNOSISSCAN}" } - goerli = { key = "${API_KEY_ETHERSCAN}" } - mainnet = { key = "${API_KEY_ETHERSCAN}" } - optimism = { key = "${API_KEY_OPTIMISTIC_ETHERSCAN}" } - polygon = { key = "${API_KEY_POLYGONSCAN}" } - sepolia = { key = "${API_KEY_ETHERSCAN}" } - -[fmt] - bracket_spacing = true - int_types = "long" - line_length = 120 - multiline_func_header = "all" - number_underscore = "thousands" - quote_style = "double" - tab_width = 4 - wrap_comments = true - -[rpc_endpoints] - arbitrum = "https://arbitrum-mainnet.infura.io/v3/${API_KEY_INFURA}" - avalanche = "https://avalanche-mainnet.infura.io/v3/${API_KEY_INFURA}" - # bnb_smart_chain = "https://bsc-dataseed.binance.org" - gnosis_chain = "https://rpc.gnosischain.com" - goerli = "https://goerli.infura.io/v3/${API_KEY_INFURA}" - localhost = "http://localhost:8545" - mainnet = "https://eth-mainnet.g.alchemy.com/v2/${API_KEY_ALCHEMY}" - optimism = "https://optimism-mainnet.infura.io/v3/${API_KEY_INFURA}" - polygon = "https://polygon-mainnet.infura.io/v3/${API_KEY_INFURA}" - sepolia = "https://sepolia.infura.io/v3/${API_KEY_INFURA}" diff --git a/img/docusaurus-social-card.jpg b/img/docusaurus-social-card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffcb448210e1a456cb3588ae8b396a597501f187 GIT binary patch literal 55746 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 fgzs%Vr*-jYG(YMS<ttdtee# literal 0 HcmV?d00001 diff --git a/img/docusaurus.png b/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c01d54bcd39a5f853428f3cd5aa0f383d963c484 GIT binary patch literal 3626 zcmb`Je@s(X6vrR`EK3%b%orErlDW({vnABqA zcfaS{d+xbU5JKp0*;0YOg+;Fl!eT)XRuapIwFLL`=imZCSon$`se`_<%@MB=M~KG+ z=EW^FL`w|Bo>*ktlaS^(fut!95`iG5u=SZ8nfDHO#GaTlH1-XG^;vsjUb^gWTVz0+ z^=WR1wv9-2oeR=_;fL0H7rNWqAzGtO(D;`~cX(RcN0w2v24Y8)6t`cS^_ghs`_ho? z{0ka~1Dgo8TfAP$r*ua?>$_V+kZ!-(TvEJ7O2f;Y#tezt$&R4 zLI}=-y@Z!grf*h3>}DUL{km4R>ya_I5Ag#{h_&?+HpKS!;$x3LC#CqUQ8&nM?X))Q zXAy2?`YL4FbC5CgJu(M&Q|>1st8XXLZ|5MgwgjP$m_2Vt0(J z&Gu7bOlkbGzGm2sh?X`){7w69Y$1#@P@7DF{ZE=4%T0NDS)iH`tiPSKpDNW)zmtn( zw;4$f>k)4$LBc>eBAaTZeCM2(iD+sHlj!qd z2GjRJ>f_Qes(+mnzdA^NH?^NB(^o-%Gmg$c8MNMq&`vm@9Ut;*&$xSD)PKH{wBCEC z4P9%NQ;n2s59ffMn8*5)5AAg4-93gBXBDX`A7S& zH-|%S3Wd%T79fk-e&l`{!?lve8_epXhE{d3Hn$Cg!t=-4D(t$cK~7f&4s?t7wr3ZP z*!SRQ-+tr|e1|hbc__J`k3S!rMy<0PHy&R`v#aJv?`Y?2{avK5sQz%=Us()jcNuZV z*$>auD4cEw>;t`+m>h?f?%VFJZj8D|Y1e_SjxG%J4{-AkFtT2+ZZS5UScS~%;dp!V>)7zi`w(xwSd*FS;Lml=f6hn#jq)2is4nkp+aTrV?)F6N z>DY#SU0IZ;*?Hu%tSj4edd~kYNHMFvS&5}#3-M;mBCOCZL3&;2obdG?qZ>rD|zC|Lu|sny76pn2xl|6sk~Hs{X9{8iBW zwiwgQt+@hi`FYMEhX2 + + + + diff --git a/img/undraw_docusaurus_mountain.svg b/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..af961c4 --- /dev/null +++ b/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_react.svg b/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..94b5cf0 --- /dev/null +++ b/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_tree.svg b/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..d9161d3 --- /dev/null +++ b/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..3fe7818 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + +Hello from Astral Documentation | Astral Documentation + + + + + +

Astral Documentation

Open source tools + infrastructure for decentralized spatial data

Easy to Use

Easy to Use

Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly.

Focus on What Matters

Focus on What Matters

Docusaurus lets you focus on your docs, and we'll do the chores. Go ahead and move your docs into the docs directory.

Powered by React

Powered by React

Extend or customize your website layout by reusing React. Docusaurus can be extended while reusing the same header and footer.

+ + \ No newline at end of file diff --git a/legacy/.travis.yml b/legacy/.travis.yml deleted file mode 100644 index b19e88a..0000000 --- a/legacy/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - "14" -notifications: - email: false -branches: - only: - - master -matrix: - include: - - env: TARGET=packages/contracts -script: if .travis/build-condition.sh $TRAVIS_COMMIT_RANGE $TARGET; then echo "$TARGET is being built" && yarn install && yarn contracts-coverage; else echo "$TARGET is NOT being built"; fi diff --git a/legacy/.travis/build-condition.sh b/legacy/.travis/build-condition.sh deleted file mode 100755 index 63a5e7e..0000000 --- a/legacy/.travis/build-condition.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -if [[ -z $1 ]]; then - echo "Commit range cannot be empty" - exit 1 -fi - -if [[ -z $2 ]]; then - echo "Change path cannot be empty" - exit 1 -fi - -git diff --name-only $1 | sort -u | uniq | grep $2 > /dev/null \ No newline at end of file diff --git a/legacy/LICENSE-APACHE b/legacy/LICENSE-APACHE deleted file mode 100644 index 2ad0ad1..0000000 --- a/legacy/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2020] [astralDAO] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/legacy/README.md b/legacy/README.md deleted file mode 100644 index c4bc7e9..0000000 --- a/legacy/README.md +++ /dev/null @@ -1,38 +0,0 @@ -![astralDAO](https://github.com/astralDAO/overview/blob/master/brand-identity/Transparent-Logo-Only-Astral.png?raw=true) -[![Twitter](https://img.shields.io/twitter/follow/astralprotocol?style=social)](https://twitter.com/astralprotocol) - -# Research - -Monorepo containing early research into Web3-native geospatial technologies. - -!!! Note that this is NOT the current implementation of the Astral Protocol, and all references to the protocol in this directory are deprecated. - -## Project Status - `Ropsten testnet / Hosted Powergate` | [![Build Status](https://www.travis-ci.com/AstralProtocol/astralprotocol.svg?branch=master)](https://www.travis-ci.com/AstralProtocol/astralprotocol) - -## Project Structure - -This monorepo is made up of several different packages. - -| Package | Current Version | Coverage | Description | -| ------------------------------------ | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | -| @astralprotocol/core | ![npm](https://img.shields.io/npm/v/@astralprotocol/core) | -- | Core Astral Protocol Implementation | -| @astralprotocol/contracts | ![npm](https://img.shields.io/npm/v/@astralprotocol/contracts) | [![Coverage Status](https://coveralls.io/repos/github/AstralProtocol/astralprotocol/badge.svg?branch=master)](https://coveralls.io/github/AstralProtocol/astralprotocol?branch=master) | Astral Smart Contracts - GeoDID Registry | -| @astralprotocol/subgraph | ![npm](https://img.shields.io/npm/v/@astralprotocol/subgraph) | -- | Subgraph for astral-protocol-contracts | -| @astralprotocol/stac-validator-js | ![npm](https://img.shields.io/npm/v/@astralprotocol/stac-validator-js) | -- | Node validator for stac item files | -| @astralprotocol/ipld-encoded-geotiff | ![npm](https://img.shields.io/npm/v/@astralprotocol/ipld-encoded-geotiff) | -- | IPLD Encoded GeoTIFFs | - -## Development - -### Project setup - -This project uses yarn and lerna to manage packages and dependencies. To install dependencies for all packages in this repo, go to root dir and run: - -``` -$ yarn install -``` - -Then build all packages: - -``` -$ yarn run build -``` diff --git a/legacy/lerna.json b/legacy/lerna.json deleted file mode 100644 index 642edcf..0000000 --- a/legacy/lerna.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "packages": ["packages/*"], - "version": "independent", - "npmClient": "yarn", - "useWorkspaces": true, - "command": { - "publish": { - "conventionalCommits": true, - "message": "chore(release): publish", - "registry": "https://registry.npmjs.org", - "allowBranch": "master" - } - } -} diff --git a/legacy/package.json b/legacy/package.json deleted file mode 100644 index ad1b36c..0000000 --- a/legacy/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "astralprotocol", - "private": true, - "workspaces": { - "packages": [ - "packages/*" - ], - "nohoist": [ - "packages/subgraph/@graphprotocol/graph-ts", - "packages/subgraph/@graphprotocol/graph-ts/**" - ] - }, - "scripts": { - "contracts-coverage": "yarn workspace @astralprotocol/contracts coverage && cat coverage/lcov.info | coveralls", - "test": "lerna run test", - "build": "lerna run build", - "publish:force": "lerna publish --force-publish", - "publish:simple": "lerna publish", - "publish": "lerna run tsc && lerna publish", - "publish:from": "lerna publish from-package --conventional-commits", - "publish:next": "lerna run tsc && lerna publish --no-push --conventional-prerelease --dist-tag next", - "publish:latest": "lerna run tsc && lerna publish --allow-branch master --conventional-graduate --create-release github", - "lint": "lerna run lint", - "clean": "rm -rf ./lib", - "lerna-add": "lerna add @astralprotocol/core --scope=@astralprotocol/contracts" - }, - "dependencies": { - "lerna": "^3.20.2", - "ts-node": "^9.0.0", - "typedoc": "^0.19.2", - "typescript": "^3.8.3" - } -} diff --git a/legacy/packages/contracts/.solcover.js b/legacy/packages/contracts/.solcover.js deleted file mode 100644 index f52860b..0000000 --- a/legacy/packages/contracts/.solcover.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - istanbulFolder: '../../coverage' - }; \ No newline at end of file diff --git a/legacy/packages/contracts/CHANGELOG.md b/legacy/packages/contracts/CHANGELOG.md deleted file mode 100644 index 249305b..0000000 --- a/legacy/packages/contracts/CHANGELOG.md +++ /dev/null @@ -1,368 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [1.0.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.11...@astralprotocol/contracts@1.0.12) (2021-03-29) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.10...@astralprotocol/contracts@1.0.11) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.9...@astralprotocol/contracts@1.0.10) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.8...@astralprotocol/contracts@1.0.9) (2021-03-17) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.7...@astralprotocol/contracts@1.0.8) (2021-03-16) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.6...@astralprotocol/contracts@1.0.7) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.5...@astralprotocol/contracts@1.0.6) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.4...@astralprotocol/contracts@1.0.5) (2021-02-25) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.3...@astralprotocol/contracts@1.0.4) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.2...@astralprotocol/contracts@1.0.3) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.1...@astralprotocol/contracts@1.0.2) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [1.0.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.14...@astralprotocol/contracts@1.0.1) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.14](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.13...@astralprotocol/contracts@0.1.14) (2021-02-23) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.13](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.12...@astralprotocol/contracts@0.1.13) (2021-02-19) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.11...@astralprotocol/contracts@0.1.12) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.10...@astralprotocol/contracts@0.1.11) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.9...@astralprotocol/contracts@0.1.10) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.8...@astralprotocol/contracts@0.1.9) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.7...@astralprotocol/contracts@0.1.8) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.6...@astralprotocol/contracts@0.1.7) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.5...@astralprotocol/contracts@0.1.6) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.4...@astralprotocol/contracts@0.1.5) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.3...@astralprotocol/contracts@0.1.4) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.1...@astralprotocol/contracts@0.1.3) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.1.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.0.3...@astralprotocol/contracts@0.1.1) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.0.2...@astralprotocol/contracts@0.0.3) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.0.1...@astralprotocol/contracts@0.0.2) (2021-02-09) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## 0.0.1 (2021-01-05) - -**Note:** Version bump only for package @astralprotocol/contracts - - - - - -## [0.0.37](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.36...@astraldao/astral-protocol-contracts@0.0.37) (2020-12-17) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.36](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.35...@astraldao/astral-protocol-contracts@0.0.36) (2020-12-01) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.35](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.34...@astraldao/astral-protocol-contracts@0.0.35) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.34](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.33...@astraldao/astral-protocol-contracts@0.0.34) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.33](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.32...@astraldao/astral-protocol-contracts@0.0.33) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.32](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.31...@astraldao/astral-protocol-contracts@0.0.32) (2020-11-21) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.31](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.30...@astraldao/astral-protocol-contracts@0.0.31) (2020-11-21) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.29...@astraldao/astral-protocol-contracts@0.0.30) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.28...@astraldao/astral-protocol-contracts@0.0.29) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.28](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.27...@astraldao/astral-protocol-contracts@0.0.28) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.27](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.26...@astraldao/astral-protocol-contracts@0.0.27) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.26](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.25...@astraldao/astral-protocol-contracts@0.0.26) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.25](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.24...@astraldao/astral-protocol-contracts@0.0.25) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.24](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.23...@astraldao/astral-protocol-contracts@0.0.24) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.23](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.22...@astraldao/astral-protocol-contracts@0.0.23) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.22](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.21...@astraldao/astral-protocol-contracts@0.0.22) (2020-10-16) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.21](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.20...@astraldao/astral-protocol-contracts@0.0.21) (2020-10-16) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts - - - - - -## [0.0.20](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.19...@astraldao/astral-protocol-contracts@0.0.20) (2020-10-16) - -**Note:** Version bump only for package @astraldao/astral-protocol-contracts diff --git a/legacy/packages/contracts/LICENSE-APACHE b/legacy/packages/contracts/LICENSE-APACHE deleted file mode 100644 index 2ad0ad1..0000000 --- a/legacy/packages/contracts/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2020] [astralDAO] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/legacy/packages/contracts/LICENSE-MIT b/legacy/packages/contracts/LICENSE-MIT deleted file mode 100644 index 1874419..0000000 --- a/legacy/packages/contracts/LICENSE-MIT +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 astralDAO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/legacy/packages/contracts/README.md b/legacy/packages/contracts/README.md deleted file mode 100644 index b6b3f2b..0000000 --- a/legacy/packages/contracts/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# `@astralprotocol/contracts` - -[![Build Status](https://www.travis-ci.com/AstralProtocol/astralprotocol.svg?branch=master)](https://www.travis-ci.com/AstralProtocol/astralprotocol) [![Coverage Status](https://coveralls.io/repos/github/AstralProtocol/astralprotocol/badge.svg?branch=master)](https://coveralls.io/github/AstralProtocol/astralprotocol?branch=master) - -## Description - -These contracts serve as the Registry for the Astral Protocol GeoDIDs. It allows binding of a GeoDID to an ethereum address and CID name resolving. - -By registering a spatial asset Smart Contract events are triggered, which are picked up by the subgraph indexer to build the tree of relationships for easy querying. - -## To add Astral Protocol Contracts to your application - -``` -yarn add @astralprotocol/contracts -``` - -## To develop or try the Astral Protocol Contracts locally - -- Clone the astralprotocol repository and go to packages/contracts: - -``` -git clone git@github.com:AstralProtocol/astralprotocol.git -cd astralprotocol/packages/contracts -``` - -- Run ganache `yarn ganache` -- Deploy contracts with `yarn truffle` -- Run tests with `yarn truffle-test` or do coverage check up `yarn coverage` -- You can deploy an instance by running `yarn new-instance`. It builds a tree with some GeoDIDs with fake ids and cids. -- You can test the removal of some links by running `yarn remove-links`. -- Watch the changes in a locally deployed subgraph. - -## To deploy your own contracts in the Ropsten testnet - -- Create a .env file in /packages/contracts with a `MNEMONIC` and `ROPSTEN_API_KEY`: - -``` -MNEMONIC="mnemonic phrase goes here with testnet ether in address[0] on ropsten cool" -ROPSTEN_API_KEY=https://ropsten.infura.io/v3/ -``` diff --git a/legacy/packages/contracts/contracts/Migrations.sol b/legacy/packages/contracts/contracts/Migrations.sol deleted file mode 100644 index 5a671e5..0000000 --- a/legacy/packages/contracts/contracts/Migrations.sol +++ /dev/null @@ -1,26 +0,0 @@ -pragma solidity ^0.6.0; - -// SPDX-License-Identifier: UNLICENSED - - -contract Migrations { - address public owner; - uint public last_completed_migration; - - constructor() public { - owner = msg.sender; - } - - modifier restricted() { - if (msg.sender == owner) _; - } - - function setCompleted(uint completed) public restricted { - last_completed_migration = completed; - } - - function upgrade(address new_address) public restricted { - Migrations upgraded = Migrations(new_address); - upgraded.setCompleted(last_completed_migration); - } -} diff --git a/legacy/packages/contracts/contracts/SpatialAssets.sol b/legacy/packages/contracts/contracts/SpatialAssets.sol deleted file mode 100644 index ab48aed..0000000 --- a/legacy/packages/contracts/contracts/SpatialAssets.sol +++ /dev/null @@ -1,329 +0,0 @@ -// SPDX-License-Identifier: APACHE OR MIT -pragma solidity ^0.6.0; - -import "@openzeppelin/contracts/access/AccessControl.sol"; -import "@openzeppelin/contracts/GSN/Context.sol"; - -/** - * @dev {SpatialAssets} registry - * This contract uses {AccessControl} to lock permissioned functions using the - * different roles - head to its documentation for details. - * - * The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant - * 'DATA_SUPPLIER' roles to other accounts - */ -contract SpatialAssets is Context, AccessControl { - /** - * @dev Emitted when Spatial Assets of id `id` are transferred to `to``. - */ - event SpatialAssetRegistered(address indexed to, bytes32 indexed geoDIDId, bytes32 indexed cid, bytes32 offChainStorage, bytes32 root, bool canBeParent); - - /** - * @dev Emitted when Spatial Assets of id `id` are deactivated. - */ - event SpatialAssetDeactivated(bytes32 indexed geoDIDId); - - /** - * @dev Emitted when a parent geodid is added to a node - */ - event ParentAdded(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId); - - /** - * @dev Emitted when a children geodid is added to a node - */ - event ChildrenAdded(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId); - - /** - * @dev Emitted when a parent geodid is removed from a node - */ - event ParentRemoved(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId); - - /** - * @dev Emitted when a children geodid is removed from a node - */ - event ChildrenRemoved(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId); - - - /** - * @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent - */ - event ChildrenErrorNoParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId); - - - /** - * @dev Emitted when a children geodid does not exist - */ - event ChildrenErrorNoExistence(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId); - - - /** - * @dev Emitted when a children geodid already has a parent but shouldn't have - */ - event ChildrenErrorHasParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId); - - - bytes32 public constant DATA_SUPPLIER = keccak256("DATA_SUPPLIER"); - - string private _uri; - - // Mapping from GeodidID to registrant - mapping (bytes32 => address) private _owners; - - // Mapping from GeodidID to Cid - mapping (bytes32 => bytes32) private _cids; - - // Mapping from GeodidID to parenthood status - mapping (bytes32 => bool) private _hasParent; - - // Mapping from GeodidID to parenthood type - mapping (bytes32 => bool) private _canBeParent; - - // Mapping from GeodidID to root GeoDID - mapping (bytes32 => bytes32) private _root; - - // Mapping from id to spatial asset external storage - mapping (bytes32 => bytes32) private _externalStorage; - - // Allowed external storages signatures - mapping (bytes32 => bool) private _allowedStorages; - - - /** - * @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that - * deploys the contract. - */ - constructor(string memory uri) public { - _setURI(uri); - _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); - _setupRole(DATA_SUPPLIER, _msgSender()); - - } - - /** - * @dev Registers a new user with the ability to register a spatial asset. - */ - function registerRole() public { - require(!hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must not have a DATA_SUPPLIER role yet"); - _setupRole(DATA_SUPPLIER, _msgSender()); - } - - /** - * @dev Registers a new storage that can accept GeoDID document creation - */ - function enableStorage(bytes32 offChainStorage) public { - require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "SpatialAssets: must have admin role to edit allowed offchain storages"); - require(_allowedStorages[offChainStorage]== false, "SpatialAssets: storage must not be active yet"); - _allowedStorages[offChainStorage] = true; - } - - /** - * @dev Disables an existing storage - */ - function disableStorage(bytes32 offChainStorage) public { - require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "SpatialAssets: must have admin role to edit allowed offchain storages"); - _allowedStorages[offChainStorage] = false; - } - - - /** - * @dev Registers one spatial asset with external storage 'data' and assigns them to `account`. - * - * Emits a {SpatialAssetRegistered} event. - */ - function registerSpatialAsset(address owner, bytes32 geoDIDId, bytes32 parentGeoDIDId , bytes32[] memory childrenGeoDIDIds, bytes32 cid, bytes32 offChainStorage, uint256 geoDIDtype) public { - require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register"); - require(allowedStorages(offChainStorage), "SpatialAssets: storage must be allowed"); - require(_owners[geoDIDId] == address(0), "SpatialAssets: id must not have an owner yet"); - require(geoDIDtype == 0 || geoDIDtype == 1, "Spatial Assets: wrong geodidtype"); - - _cids[geoDIDId] =cid; - _owners[geoDIDId] = owner; - _externalStorage[geoDIDId] = offChainStorage; - - if (geoDIDtype == 0) { - _canBeParent[geoDIDId] = true; - } else if (geoDIDtype == 1) { - _canBeParent[geoDIDId] = false; - } - - if (parentGeoDIDId == bytes32(0)) { - _hasParent[geoDIDId] = false; - _root[geoDIDId] = geoDIDId; - emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, geoDIDId, _canBeParent[geoDIDId]); - } else { - _hasParent[geoDIDId] = true; - emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, _root[parentGeoDIDId], _canBeParent[geoDIDId]); - emit ParentAdded(geoDIDId, parentGeoDIDId); - } - - uint256 childrensLen = childrenGeoDIDIds.length; - - if (childrensLen > 0 && _canBeParent[geoDIDId]){ - for(uint256 j=0; j < childrensLen; j++) { - bytes32 childrenGeoDID = childrenGeoDIDIds[j]; - _hasParent[childrenGeoDID] = true; - emit ChildrenAdded(geoDIDId, childrenGeoDID); - } - } - } - - - /** - * @dev Adds children GeoDIDs to an already existent geoDID - * - * Emits a {ChildrenAdded} event. - */ - function addChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public { - require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register"); - require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: geoDIDId must be owned by its creator"); - require(_canBeParent[geoDIDId], "SpatialAssets: geoDIDId must be able to be parent (a Collection)"); - - uint256 childrensLen = childrenGeoDIDIds.length; - - if (childrensLen > 0){ - for(uint256 j=0; j < childrensLen; j++) { - bytes32 childrenGeoDID = childrenGeoDIDIds[j]; - if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]) { - _hasParent[childrenGeoDID] = true; - _root[childrenGeoDID] = _root[geoDIDId]; - emit ChildrenAdded(geoDIDId, childrenGeoDID); - } else if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]){ - emit ChildrenErrorHasParent(geoDIDId, childrenGeoDID); - } else { - emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID); - } - } - } - } - - /** - * @dev Adds a parent GeoDID to an already existent geoDID - * - * Emits a {ParentAdded} event. - */ - function addParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public { - require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register"); - require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: geoDIDId must be owned by its creator"); - require(_owners[parentGeoDIDId] != address(0), "SpatialAssets: parentGeoDIDId does not exist"); - require(!_hasParent[geoDIDId], "SpatialAssets: geoDIDId already has a parent"); - require(_canBeParent[parentGeoDIDId], "SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)"); - - _hasParent[geoDIDId] = true; - _root[geoDIDId] = _root[parentGeoDIDId]; - emit ParentAdded(geoDIDId, parentGeoDIDId); - } - - - /** - * @dev Removes childrenGeoDIDs from a geoDID - * - * Emits a {ChildrenRemoved} event. - */ - function removeChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public { - require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register"); - require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: id must not have an owner yet"); - - uint256 childrensLen = childrenGeoDIDIds.length; - - if (childrensLen > 0){ - for(uint256 j=0; j < childrensLen; j++) { - bytes32 childrenGeoDID = childrenGeoDIDIds[j]; - if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) { - _hasParent[childrenGeoDID] = false; - _root[childrenGeoDID] = childrenGeoDID; - emit ChildrenRemoved(geoDIDId, childrenGeoDID); - } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){ - emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID); - } else { - emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID); - } - } - } - } - - - /** - * @dev Removes a parent GeoDID from an already existent geoDID - * - * Emits a {ParentAdded} event. - */ - function removeParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public { - require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register"); - require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: id must not have an owner yet"); - require(_owners[parentGeoDIDId] != address(0), "SpatialAssets: GeoDID to be removed as parent does not exist"); - require(_hasParent[geoDIDId], "SpatialAssets: GeoDID does not have a parent to remove"); - - _hasParent[geoDIDId] = false; - _root[geoDIDId] = geoDIDId; - - emit ParentRemoved(geoDIDId, parentGeoDIDId); - } - - /** - * @dev De-registers a spatial asset - */ - function deactivateSpatialAsset(bytes32 geoDIDId, bytes32[] memory childrenToRemove) public { - require( - _owners[geoDIDId] == _msgSender(),"SpatialAssets: caller is not owner of the Spatial Asset" - ); - _owners[geoDIDId] = address(0); - _externalStorage[geoDIDId] = ""; - _cids[geoDIDId] = ""; - _hasParent[geoDIDId] = false; - _root[geoDIDId] = ""; - - uint256 childrensLen = childrenToRemove.length; - - if (childrensLen > 0){ - for(uint256 j=0; j < childrensLen; j++) { - bytes32 childrenGeoDID = childrenToRemove[j]; - if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) { - _hasParent[childrenGeoDID] = false; - _root[childrenGeoDID] = childrenGeoDID; - emit ChildrenRemoved(geoDIDId, childrenGeoDID); - } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){ - emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID); - } else { - emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID); - } - } - } - - emit SpatialAssetDeactivated(geoDIDId); - } - - /** - * @dev Sets a new URI for all the spatial asset types - */ - function _setURI(string memory newuri) internal { - _uri = newuri; - } - - function idToOwner(bytes32 id) public view returns (address) { - return _owners[id]; - } - - function idToCid(bytes32 id) public view returns (bytes32) { - return _cids[id]; - } - - function idToCanBeParent(bytes32 id) public view returns (bool) { - return _canBeParent[id]; - } - - function idToHasParent(bytes32 id) public view returns (bool) { - return _hasParent[id]; - } - - function idToExternalStorage(bytes32 id) public view returns (bytes32) { - return _externalStorage[id]; - } - - function allowedStorages(bytes32 offChainStorage) public view returns (bool) { - return _allowedStorages[offChainStorage]; - } - - function uri() public view returns (string memory) { - return _uri; - } -} diff --git a/legacy/packages/contracts/coverage.json b/legacy/packages/contracts/coverage.json deleted file mode 100644 index 53f0d4e..0000000 --- a/legacy/packages/contracts/coverage.json +++ /dev/null @@ -1 +0,0 @@ -{"contracts/SpatialAssets.sol":{"l":{"96":3,"97":3,"98":3,"106":3,"107":1,"114":6,"115":4,"116":2,"123":3,"124":1,"134":24,"135":22,"136":20,"137":18,"139":16,"140":16,"141":16,"143":16,"144":9,"146":7,"149":16,"150":12,"151":12,"152":12,"154":4,"155":4,"156":4,"159":16,"161":16,"162":2,"163":2,"164":2,"165":2,"177":7,"178":5,"179":3,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"191":0,"193":0,"205":11,"206":9,"207":7,"208":5,"209":3,"211":1,"212":1,"213":1,"223":5,"224":3,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"236":0,"238":0,"251":9,"252":7,"253":5,"254":3,"256":1,"257":1,"259":1,"266":4,"269":2,"270":2,"271":2,"272":2,"273":2,"275":2,"277":2,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"285":0,"287":0,"292":2,"299":3,"303":8,"307":2,"311":6,"315":12,"319":8,"323":24,"327":1},"path":"/home/j-mars/astralprotocol/astralprotocol/packages/contracts/contracts/SpatialAssets.sol","s":{"1":3,"2":3,"3":3,"4":3,"5":1,"6":6,"7":4,"8":2,"9":3,"10":1,"11":24,"12":22,"13":20,"14":18,"15":16,"16":16,"17":16,"18":16,"19":9,"20":7,"21":7,"22":16,"23":12,"24":12,"25":12,"26":4,"27":4,"28":4,"29":16,"30":16,"31":2,"32":2,"33":2,"34":2,"35":7,"36":5,"37":3,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":0,"47":0,"48":0,"49":11,"50":9,"51":7,"52":5,"53":3,"54":1,"55":1,"56":1,"57":5,"58":3,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":0,"68":0,"69":0,"70":9,"71":7,"72":5,"73":3,"74":1,"75":1,"76":1,"77":4,"78":2,"79":2,"80":2,"81":2,"82":2,"83":2,"84":2,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":0,"92":0,"93":0,"94":2,"95":3,"96":8,"97":2,"98":6,"99":12,"100":8,"101":24,"102":1},"b":{"1":[1,2],"2":[4,2],"3":[2,2],"4":[1,2],"5":[22,2],"6":[20,2],"7":[18,2],"8":[16,2],"9":[9,7],"10":[7,0],"11":[12,4],"12":[2,14],"13":[5,2],"14":[3,2],"15":[1,2],"16":[1,0],"17":[1,0],"18":[0,0],"19":[9,2],"20":[7,2],"21":[5,2],"22":[3,2],"23":[1,2],"24":[3,2],"25":[1,2],"26":[1,0],"27":[1,0],"28":[0,0],"29":[7,2],"30":[5,2],"31":[3,2],"32":[1,2],"33":[2,2],"34":[1,1],"35":[1,0],"36":[0,0]},"f":{"1":3,"2":3,"3":6,"4":3,"5":24,"6":7,"7":11,"8":5,"9":9,"10":4,"11":3,"12":8,"13":2,"14":6,"15":12,"16":8,"17":24,"18":1},"fnMap":{"1":{"name":"constructor","line":95,"loc":{"start":{"line":95,"column":4},"end":{"line":100,"column":4}}},"2":{"name":"registerRole","line":105,"loc":{"start":{"line":105,"column":4},"end":{"line":108,"column":4}}},"3":{"name":"enableStorage","line":113,"loc":{"start":{"line":113,"column":4},"end":{"line":117,"column":4}}},"4":{"name":"disableStorage","line":122,"loc":{"start":{"line":122,"column":4},"end":{"line":125,"column":4}}},"5":{"name":"registerSpatialAsset","line":133,"loc":{"start":{"line":133,"column":4},"end":{"line":168,"column":4}}},"6":{"name":"addChildrenGeoDIDs","line":176,"loc":{"start":{"line":176,"column":4},"end":{"line":197,"column":4}}},"7":{"name":"addParentGeoDID","line":204,"loc":{"start":{"line":204,"column":4},"end":{"line":214,"column":4}}},"8":{"name":"removeChildrenGeoDIDs","line":222,"loc":{"start":{"line":222,"column":4},"end":{"line":242,"column":4}}},"9":{"name":"removeParentGeoDID","line":250,"loc":{"start":{"line":250,"column":4},"end":{"line":260,"column":4}}},"10":{"name":"deactivateSpatialAsset","line":265,"loc":{"start":{"line":265,"column":5},"end":{"line":293,"column":4}}},"11":{"name":"_setURI","line":298,"loc":{"start":{"line":298,"column":4},"end":{"line":300,"column":4}}},"12":{"name":"idToOwner","line":302,"loc":{"start":{"line":302,"column":4},"end":{"line":304,"column":4}}},"13":{"name":"idToCid","line":306,"loc":{"start":{"line":306,"column":4},"end":{"line":308,"column":4}}},"14":{"name":"idToCanBeParent","line":310,"loc":{"start":{"line":310,"column":4},"end":{"line":312,"column":4}}},"15":{"name":"idToHasParent","line":314,"loc":{"start":{"line":314,"column":4},"end":{"line":316,"column":4}}},"16":{"name":"idToExternalStorage","line":318,"loc":{"start":{"line":318,"column":4},"end":{"line":320,"column":4}}},"17":{"name":"allowedStorages","line":322,"loc":{"start":{"line":322,"column":4},"end":{"line":324,"column":4}}},"18":{"name":"uri","line":326,"loc":{"start":{"line":326,"column":4},"end":{"line":328,"column":4}}}},"statementMap":{"1":{"start":{"line":96,"column":8},"end":{"line":96,"column":19}},"2":{"start":{"line":97,"column":8},"end":{"line":97,"column":51}},"3":{"start":{"line":98,"column":8},"end":{"line":98,"column":46}},"4":{"start":{"line":106,"column":8},"end":{"line":106,"column":110}},"5":{"start":{"line":107,"column":8},"end":{"line":107,"column":46}},"6":{"start":{"line":114,"column":8},"end":{"line":114,"column":130}},"7":{"start":{"line":115,"column":8},"end":{"line":115,"column":106}},"8":{"start":{"line":116,"column":8},"end":{"line":116,"column":47}},"9":{"start":{"line":123,"column":8},"end":{"line":123,"column":130}},"10":{"start":{"line":124,"column":8},"end":{"line":124,"column":48}},"11":{"start":{"line":134,"column":8},"end":{"line":134,"column":111}},"12":{"start":{"line":135,"column":8},"end":{"line":135,"column":90}},"13":{"start":{"line":136,"column":8},"end":{"line":136,"column":95}},"14":{"start":{"line":137,"column":8},"end":{"line":137,"column":87}},"15":{"start":{"line":139,"column":8},"end":{"line":139,"column":27}},"16":{"start":{"line":140,"column":8},"end":{"line":140,"column":32}},"17":{"start":{"line":141,"column":8},"end":{"line":141,"column":51}},"18":{"start":{"line":143,"column":8},"end":{"line":143,"column":5254}},"19":{"start":{"line":144,"column":12},"end":{"line":144,"column":40}},"20":{"start":{"line":145,"column":15},"end":{"line":145,"column":5335}},"21":{"start":{"line":146,"column":12},"end":{"line":146,"column":41}},"22":{"start":{"line":149,"column":8},"end":{"line":149,"column":5421}},"23":{"start":{"line":150,"column":12},"end":{"line":150,"column":39}},"24":{"start":{"line":151,"column":12},"end":{"line":151,"column":37}},"25":{"start":{"line":152,"column":8},"end":{"line":152,"column":108}},"26":{"start":{"line":154,"column":12},"end":{"line":154,"column":38}},"27":{"start":{"line":155,"column":12},"end":{"line":155,"column":125}},"28":{"start":{"line":156,"column":12},"end":{"line":156,"column":54}},"29":{"start":{"line":159,"column":8},"end":{"line":159,"column":55}},"30":{"start":{"line":161,"column":8},"end":{"line":161,"column":5967}},"31":{"start":{"line":162,"column":12},"end":{"line":162,"column":6032}},"32":{"start":{"line":163,"column":16},"end":{"line":163,"column":61}},"33":{"start":{"line":164,"column":16},"end":{"line":164,"column":48}},"34":{"start":{"line":165,"column":16},"end":{"line":165,"column":60}},"35":{"start":{"line":177,"column":8},"end":{"line":177,"column":111}},"36":{"start":{"line":178,"column":8},"end":{"line":178,"column":105}},"37":{"start":{"line":179,"column":8},"end":{"line":179,"column":106}},"38":{"start":{"line":181,"column":8},"end":{"line":181,"column":55}},"39":{"start":{"line":183,"column":8},"end":{"line":183,"column":6896}},"40":{"start":{"line":184,"column":12},"end":{"line":184,"column":6935}},"41":{"start":{"line":185,"column":16},"end":{"line":185,"column":61}},"42":{"start":{"line":186,"column":16},"end":{"line":186,"column":7060}},"43":{"start":{"line":187,"column":20},"end":{"line":187,"column":52}},"44":{"start":{"line":188,"column":20},"end":{"line":188,"column":58}},"45":{"start":{"line":189,"column":20},"end":{"line":189,"column":64}},"46":{"start":{"line":190,"column":23},"end":{"line":190,"column":7341}},"47":{"start":{"line":191,"column":20},"end":{"line":191,"column":72}},"48":{"start":{"line":193,"column":20},"end":{"line":193,"column":75}},"49":{"start":{"line":205,"column":8},"end":{"line":205,"column":111}},"50":{"start":{"line":206,"column":8},"end":{"line":206,"column":105}},"51":{"start":{"line":207,"column":8},"end":{"line":207,"column":101}},"52":{"start":{"line":208,"column":8},"end":{"line":208,"column":85}},"53":{"start":{"line":209,"column":8},"end":{"line":209,"column":118}},"54":{"start":{"line":211,"column":8},"end":{"line":211,"column":34}},"55":{"start":{"line":212,"column":8},"end":{"line":212,"column":46}},"56":{"start":{"line":213,"column":8},"end":{"line":213,"column":50}},"57":{"start":{"line":223,"column":8},"end":{"line":223,"column":111}},"58":{"start":{"line":224,"column":8},"end":{"line":224,"column":97}},"59":{"start":{"line":226,"column":8},"end":{"line":226,"column":55}},"60":{"start":{"line":228,"column":8},"end":{"line":228,"column":9012}},"61":{"start":{"line":229,"column":12},"end":{"line":229,"column":9051}},"62":{"start":{"line":230,"column":16},"end":{"line":230,"column":61}},"63":{"start":{"line":231,"column":16},"end":{"line":231,"column":9176}},"64":{"start":{"line":232,"column":20},"end":{"line":232,"column":53}},"65":{"start":{"line":233,"column":20},"end":{"line":233,"column":57}},"66":{"start":{"line":234,"column":20},"end":{"line":234,"column":66}},"67":{"start":{"line":235,"column":23},"end":{"line":235,"column":9458}},"68":{"start":{"line":236,"column":20},"end":{"line":236,"column":73}},"69":{"start":{"line":238,"column":20},"end":{"line":238,"column":75}},"70":{"start":{"line":251,"column":8},"end":{"line":251,"column":111}},"71":{"start":{"line":252,"column":8},"end":{"line":252,"column":97}},"72":{"start":{"line":253,"column":8},"end":{"line":253,"column":117}},"73":{"start":{"line":254,"column":8},"end":{"line":254,"column":94}},"74":{"start":{"line":256,"column":8},"end":{"line":256,"column":35}},"75":{"start":{"line":257,"column":8},"end":{"line":257,"column":33}},"76":{"start":{"line":259,"column":8},"end":{"line":259,"column":52}},"77":{"start":{"line":266,"column":8},"end":{"line":266,"column":10703}},"78":{"start":{"line":269,"column":8},"end":{"line":269,"column":37}},"79":{"start":{"line":270,"column":8},"end":{"line":270,"column":38}},"80":{"start":{"line":271,"column":8},"end":{"line":271,"column":27}},"81":{"start":{"line":272,"column":8},"end":{"line":272,"column":35}},"82":{"start":{"line":273,"column":8},"end":{"line":273,"column":27}},"83":{"start":{"line":275,"column":8},"end":{"line":275,"column":54}},"84":{"start":{"line":277,"column":8},"end":{"line":277,"column":11072}},"85":{"start":{"line":278,"column":12},"end":{"line":278,"column":11111}},"86":{"start":{"line":279,"column":16},"end":{"line":279,"column":60}},"87":{"start":{"line":280,"column":16},"end":{"line":280,"column":11235}},"88":{"start":{"line":281,"column":20},"end":{"line":281,"column":53}},"89":{"start":{"line":282,"column":20},"end":{"line":282,"column":57}},"90":{"start":{"line":283,"column":20},"end":{"line":283,"column":66}},"91":{"start":{"line":284,"column":24},"end":{"line":284,"column":11518}},"92":{"start":{"line":285,"column":20},"end":{"line":285,"column":73}},"93":{"start":{"line":287,"column":20},"end":{"line":287,"column":75}},"94":{"start":{"line":292,"column":8},"end":{"line":292,"column":46}},"95":{"start":{"line":299,"column":8},"end":{"line":299,"column":20}},"96":{"start":{"line":303,"column":8},"end":{"line":303,"column":26}},"97":{"start":{"line":307,"column":8},"end":{"line":307,"column":24}},"98":{"start":{"line":311,"column":8},"end":{"line":311,"column":31}},"99":{"start":{"line":315,"column":8},"end":{"line":315,"column":29}},"100":{"start":{"line":319,"column":8},"end":{"line":319,"column":35}},"101":{"start":{"line":323,"column":8},"end":{"line":323,"column":48}},"102":{"start":{"line":327,"column":8},"end":{"line":327,"column":19}}},"branchMap":{"1":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":8},"end":{"line":106,"column":8}},{"start":{"line":106,"column":8},"end":{"line":106,"column":8}}]},"2":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":8}},{"start":{"line":114,"column":8},"end":{"line":114,"column":8}}]},"3":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":8},"end":{"line":115,"column":8}},{"start":{"line":115,"column":8},"end":{"line":115,"column":8}}]},"4":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":8},"end":{"line":123,"column":8}},{"start":{"line":123,"column":8},"end":{"line":123,"column":8}}]},"5":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":8},"end":{"line":134,"column":8}},{"start":{"line":134,"column":8},"end":{"line":134,"column":8}}]},"6":{"line":135,"type":"if","locations":[{"start":{"line":135,"column":8},"end":{"line":135,"column":8}},{"start":{"line":135,"column":8},"end":{"line":135,"column":8}}]},"7":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":8},"end":{"line":136,"column":8}},{"start":{"line":136,"column":8},"end":{"line":136,"column":8}}]},"8":{"line":137,"type":"if","locations":[{"start":{"line":137,"column":8},"end":{"line":137,"column":8}},{"start":{"line":137,"column":8},"end":{"line":137,"column":8}}]},"9":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"10":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":15},"end":{"line":145,"column":15}},{"start":{"line":145,"column":15},"end":{"line":145,"column":15}}]},"11":{"line":149,"type":"if","locations":[{"start":{"line":149,"column":8},"end":{"line":149,"column":8}},{"start":{"line":149,"column":8},"end":{"line":149,"column":8}}]},"12":{"line":161,"type":"if","locations":[{"start":{"line":161,"column":8},"end":{"line":161,"column":8}},{"start":{"line":161,"column":8},"end":{"line":161,"column":8}}]},"13":{"line":177,"type":"if","locations":[{"start":{"line":177,"column":8},"end":{"line":177,"column":8}},{"start":{"line":177,"column":8},"end":{"line":177,"column":8}}]},"14":{"line":178,"type":"if","locations":[{"start":{"line":178,"column":8},"end":{"line":178,"column":8}},{"start":{"line":178,"column":8},"end":{"line":178,"column":8}}]},"15":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":8},"end":{"line":179,"column":8}},{"start":{"line":179,"column":8},"end":{"line":179,"column":8}}]},"16":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":8},"end":{"line":183,"column":8}},{"start":{"line":183,"column":8},"end":{"line":183,"column":8}}]},"17":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":16},"end":{"line":186,"column":16}},{"start":{"line":186,"column":16},"end":{"line":186,"column":16}}]},"18":{"line":190,"type":"if","locations":[{"start":{"line":190,"column":23},"end":{"line":190,"column":23}},{"start":{"line":190,"column":23},"end":{"line":190,"column":23}}]},"19":{"line":205,"type":"if","locations":[{"start":{"line":205,"column":8},"end":{"line":205,"column":8}},{"start":{"line":205,"column":8},"end":{"line":205,"column":8}}]},"20":{"line":206,"type":"if","locations":[{"start":{"line":206,"column":8},"end":{"line":206,"column":8}},{"start":{"line":206,"column":8},"end":{"line":206,"column":8}}]},"21":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":8},"end":{"line":207,"column":8}},{"start":{"line":207,"column":8},"end":{"line":207,"column":8}}]},"22":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":8},"end":{"line":208,"column":8}},{"start":{"line":208,"column":8},"end":{"line":208,"column":8}}]},"23":{"line":209,"type":"if","locations":[{"start":{"line":209,"column":8},"end":{"line":209,"column":8}},{"start":{"line":209,"column":8},"end":{"line":209,"column":8}}]},"24":{"line":223,"type":"if","locations":[{"start":{"line":223,"column":8},"end":{"line":223,"column":8}},{"start":{"line":223,"column":8},"end":{"line":223,"column":8}}]},"25":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":8},"end":{"line":224,"column":8}},{"start":{"line":224,"column":8},"end":{"line":224,"column":8}}]},"26":{"line":228,"type":"if","locations":[{"start":{"line":228,"column":8},"end":{"line":228,"column":8}},{"start":{"line":228,"column":8},"end":{"line":228,"column":8}}]},"27":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":16},"end":{"line":231,"column":16}},{"start":{"line":231,"column":16},"end":{"line":231,"column":16}}]},"28":{"line":235,"type":"if","locations":[{"start":{"line":235,"column":23},"end":{"line":235,"column":23}},{"start":{"line":235,"column":23},"end":{"line":235,"column":23}}]},"29":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":8},"end":{"line":251,"column":8}},{"start":{"line":251,"column":8},"end":{"line":251,"column":8}}]},"30":{"line":252,"type":"if","locations":[{"start":{"line":252,"column":8},"end":{"line":252,"column":8}},{"start":{"line":252,"column":8},"end":{"line":252,"column":8}}]},"31":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":8},"end":{"line":253,"column":8}},{"start":{"line":253,"column":8},"end":{"line":253,"column":8}}]},"32":{"line":254,"type":"if","locations":[{"start":{"line":254,"column":8},"end":{"line":254,"column":8}},{"start":{"line":254,"column":8},"end":{"line":254,"column":8}}]},"33":{"line":266,"type":"if","locations":[{"start":{"line":266,"column":8},"end":{"line":266,"column":8}},{"start":{"line":266,"column":8},"end":{"line":266,"column":8}}]},"34":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":8},"end":{"line":277,"column":8}},{"start":{"line":277,"column":8},"end":{"line":277,"column":8}}]},"35":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":16},"end":{"line":280,"column":16}},{"start":{"line":280,"column":16},"end":{"line":280,"column":16}}]},"36":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":24},"end":{"line":284,"column":24}},{"start":{"line":284,"column":24},"end":{"line":284,"column":24}}]}}}} \ No newline at end of file diff --git a/legacy/packages/contracts/migrations/1_initial_migration.js b/legacy/packages/contracts/migrations/1_initial_migration.js deleted file mode 100644 index 1eb6f9d..0000000 --- a/legacy/packages/contracts/migrations/1_initial_migration.js +++ /dev/null @@ -1,5 +0,0 @@ -var Migrations = artifacts.require('./Migrations.sol') - -module.exports = function(deployer) { - deployer.deploy(Migrations) -} diff --git a/legacy/packages/contracts/migrations/2_deploy_contract.js b/legacy/packages/contracts/migrations/2_deploy_contract.js deleted file mode 100644 index a621f81..0000000 --- a/legacy/packages/contracts/migrations/2_deploy_contract.js +++ /dev/null @@ -1,13 +0,0 @@ -const SpatialAssets = artifacts.require("./SpatialAssets.sol"); - -module.exports = async function (deployer) { - await deployer.deploy(SpatialAssets, "did:geo:{id}"); - - const SpatialAssetsContract = await SpatialAssets.deployed(); - - console.log( - "Spatial Asset Registrar deployed at:", - SpatialAssetsContract.address - ); - -}; diff --git a/legacy/packages/contracts/package.json b/legacy/packages/contracts/package.json deleted file mode 100644 index 7808850..0000000 --- a/legacy/packages/contracts/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@astralprotocol/contracts", - "version": "1.0.12", - "description": "These contracts serve as the Registry for the Astral Protocol GeoDIDs. It allows binding of a GeoDID to an ethereum address and CID name resolving. ", - "author": "Astral ", - "homepage": "https://github.com/AstralProtocol/astralprotocol#readme", - "license": "MIT OR Apache-2.0", - "main": "truffle-config.js", - "directories": { - "build": "build", - "contracts": "contracts", - "migrations": "migrations" - }, - "files": [ - "build" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/AstralProtocol/astralprotocol.git", - "directory": "packages/contracts" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "scripts": { - "tsc": "tsc", - "test": "echo \"Error: run tests from root\" && exit 1", - "console": "truffle console --network development", - "ganache": "ganache-cli -h 0.0.0.0 -p 8545 -d -i 333", - "deployGeoDIDs": "truffle exec scripts/deployGeoDIDs.js --network ropsten", - "testg": "truffle exec scripts/test.js --network development", - "new-instance": "truffle exec scripts/newInstance.js --network development", - "remove-links": "truffle exec scripts/newInstance-remove.js --network development", - "truffle-build": "truffle compile -all", - "truffle": "truffle compile --all && truffle migrate --network development --reset && cp -vr ./build/contracts/SpatialAssets.json ../subgraph/abis/SpatialAssets.json", - "truffle-ropsten": "truffle compile --all && truffle migrate --network ropsten --reset && cp -vr ./build/contracts/SpatialAssets.json ../subgraph/abis/SpatialAssets.json", - "mythx": "truffle run verify", - "truffle-test": "truffle test", - "coverage": "truffle run coverage --solcoverjs ./.solcover.js --network development" - }, - "bugs": { - "url": "https://github.com/AstralProtocol/astralprotocol/issues", - "access": "public" - }, - "dependencies": { - "@astralprotocol/core": "^0.1.10", - "@openzeppelin/contracts": "^3.2.0", - "@truffle/hdwallet-provider": "^1.1.1", - "bs58": "^4.0.1", - "coveralls": "^3.1.0", - "dotenv": "^8.2.0", - "solidity-coverage": "^0.7.13", - "truffle": "^5.1.49" - } -} diff --git a/legacy/packages/contracts/scripts/deployGeoDIDs.js b/legacy/packages/contracts/scripts/deployGeoDIDs.js deleted file mode 100644 index 4c796f3..0000000 --- a/legacy/packages/contracts/scripts/deployGeoDIDs.js +++ /dev/null @@ -1,100 +0,0 @@ -const { AstralClient } = require('@astralprotocol/core'); -const SpatialAssets = require("../build/contracts/SpatialAssets.json") -const bs58 = require('bs58') - -module.exports = async function (callback) { - const stringToBytes = (string) => web3.utils.asciiToHex(string) - - // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32 - // Return bytes32 hex string from base58 encoded ipfs hash, - // stripping leading 2 bytes from 34 byte IPFS hash - // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits - // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" --> - // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231" - function getBytes32FromIpfsHash(ipfsListing) { - return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex') - } - - try { - - const accounts = await web3.eth.getAccounts() - const userAccount = accounts[0] - - // find contract in network 3 (Ropsten) - const SpatialAssetsContract = new web3.eth.Contract(SpatialAssets.abi, SpatialAssets.networks['3'].address, { - from: userAccount, - data: SpatialAssets.deployedBytecode, - }); - - const astral = new AstralClient(userAccount); - - const storage = stringToBytes('FILECOIN'); - // Enable a storage first - - try { - await SpatialAssetsContract.methods.enableStorage(storage).send() - .on('receipt', function(receipt){ - // receipt example - console.log(receipt); - - }) - .on('error', function() { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt. - console.log('Already enabled storage: ' + storage); - }); - } - catch (err) { - // Will throw an error if storage is already active - console.log(err) - } - - - // Creates a Genesis GeoDID - - const genDocRes = await astral.createGenesisGeoDID('collection') - console.log(genDocRes); - - // With the returned IDocumentInfo from the last function, we can pin it. - // Since no token was specified the client will assign a new auth Token to the user. - - const results = await astral.pinDocument(genDocRes); - console.log(results); - - const token = results.token; - - // register the geodid id and cid obtained. Type 0 because it is a collection - - console.log(results.geodidid) - console.log(results.cid) - - const bytes32GeoDID= getBytes32FromIpfsHash(results.geodidid.substring(8)); - const bytes32Cid = getBytes32FromIpfsHash(results.cid); - - try { - await SpatialAssetsContract.methods.registerSpatialAsset(userAccount, bytes32GeoDID, stringToBytes(''),[], bytes32Cid, storage,0).send() - .on('receipt', function(receipt){ - // receipt example - console.log(receipt); - - }) - .on('error', function(error) { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt. - console.log(error); - }); - } - catch (err) { - // Will throw an error if tx reverts - console.log(err) - } - - - // With the Auth Token and the GeoDID ID we can load the document with the loadDocument function - - const loadResults = await astral.loadDocument(results.geodidid, token); - console.log(loadResults); - - } - catch(error) { - console.log(error) - } - - callback() -}; diff --git a/legacy/packages/contracts/scripts/newInstance-remove.js b/legacy/packages/contracts/scripts/newInstance-remove.js deleted file mode 100644 index 9eae4f8..0000000 --- a/legacy/packages/contracts/scripts/newInstance-remove.js +++ /dev/null @@ -1,107 +0,0 @@ -const SpatialAssets = artifacts.require("./SpatialAssets.sol"); -const bs58 = require('bs58') - -module.exports = async function (callback) { - const stringToBytes = (string) => web3.utils.asciiToHex(string) - - - // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32 - // Return bytes32 hex string from base58 encoded ipfs hash, - // stripping leading 2 bytes from 34 byte IPFS hash - // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits - // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" --> - // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231" - function getBytes32FromIpfsHash(ipfsListing) { - return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex') - } - - const geoDID1 = 'did:geo:QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ'; - - const geoDID2 = 'did:geo:QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL'; - - const geoDID3 = 'did:geo:QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd'; - - const geoDID4 = 'did:geo:QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE'; - - const geoDID5 = 'did:geo:QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps'; - - const geoDID6 = 'did:geo:QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd'; - - const geoDID7 = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW'; - - const geoDIDError = 'did:geo:QmYS4JAwG45SvDEC5AM9Hzv1dfzPoXoBq1N9aTbT3bEs86'; - - const bytes32GeoDID1= getBytes32FromIpfsHash(geoDID1.substring(8)); - const bytes32GeoDID2= getBytes32FromIpfsHash(geoDID2.substring(8)); - const bytes32GeoDID3= getBytes32FromIpfsHash(geoDID3.substring(8)); - const bytes32GeoDID4= getBytes32FromIpfsHash(geoDID4.substring(8)); - const bytes32GeoDID5= getBytes32FromIpfsHash(geoDID5.substring(8)); - const bytes32GeoDID6= getBytes32FromIpfsHash(geoDID6.substring(8)); - const bytes32GeoDID7= getBytes32FromIpfsHash(geoDID7.substring(8)); - const bytes32GeoDIDError= getBytes32FromIpfsHash(geoDIDError.substring(8)); - - - try { - - const SpatialAssetsContract = await SpatialAssets.deployed(); - let tx - - // geodid id 4 remove parent 3 - tx = await SpatialAssetsContract.removeParentGeoDID(bytes32GeoDID4,bytes32GeoDID3) - - console.log( - " geodid id 4 remove parent 3 ", - tx.tx ) - - - // geodid id 6 remove children 1 and 5 - tx = await SpatialAssetsContract.removeChildrenGeoDIDs(bytes32GeoDID6,[bytes32GeoDID1,bytes32GeoDID5]) - - console.log( - " geodid id 6 remove children 1 and 5", - tx.tx - ); - - - - tx = await SpatialAssetsContract.deactivateSpatialAsset(bytes32GeoDID2,[bytes32GeoDID7]) - - console.log( - " geodid id 2 delete", - tx.tx - ); - - // should emit an error that children to be added does not exist - tx = await SpatialAssetsContract.removeChildrenGeoDIDs(bytes32GeoDID1,[bytes32GeoDIDError]) - - console.log( - " geodid id 1 remove error child does not exist", - tx.tx - ); - - // should emit an error in 6 that children already has a parent - tx = await SpatialAssetsContract.addChildrenGeoDIDs(bytes32GeoDID6,[bytes32GeoDID3]) - - console.log( - " geodid id 6 remove error 3 already has a parent", - tx.tx - ); - - // should emit an error that children to be removed does not have a parent - tx = await SpatialAssetsContract.removeChildrenGeoDIDs(bytes32GeoDID1,[bytes32GeoDID4]) - - console.log( - " geodid id 1 remove error 4 does not have a parent", - tx.tx - ); - - - - - } - catch(error) { - console.log(error) - } - - callback() -}; diff --git a/legacy/packages/contracts/scripts/newInstance.js b/legacy/packages/contracts/scripts/newInstance.js deleted file mode 100644 index f04e154..0000000 --- a/legacy/packages/contracts/scripts/newInstance.js +++ /dev/null @@ -1,148 +0,0 @@ -const SpatialAssets = artifacts.require("./SpatialAssets.sol"); -const bs58 = require('bs58') - -module.exports = async function (callback) { - - const stringToBytes = (string) => web3.utils.asciiToHex(string) - - - // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32 - // Return bytes32 hex string from base58 encoded ipfs hash, - // stripping leading 2 bytes from 34 byte IPFS hash - // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits - // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" --> - // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231" - function getBytes32FromIpfsHash(ipfsListing) { - return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex') - } - - const geoDID1 = 'did:geo:QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ'; - const cid1 = 'QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ'; - - const geoDID2 = 'did:geo:QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL'; - const cid2 = 'QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL'; - - const geoDID3 = 'did:geo:QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd'; - const cid3 = 'QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd'; - - const geoDID4 = 'did:geo:QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE'; - const cid4 = 'QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE'; - - const geoDID5 = 'did:geo:QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps'; - const cid5 = 'QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps'; - - const geoDID6 = 'did:geo:QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd'; - const cid6 = 'QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd'; - - const geoDID7 = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW'; - const cid7 = 'QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW'; - - - const bytes32GeoDID1= getBytes32FromIpfsHash(geoDID1.substring(8)); - const bytes32Cid1 = getBytes32FromIpfsHash(cid1); - - const bytes32GeoDID2= getBytes32FromIpfsHash(geoDID2.substring(8)); - const bytes32Cid2 = getBytes32FromIpfsHash(cid2); - - const bytes32GeoDID3= getBytes32FromIpfsHash(geoDID3.substring(8)); - const bytes32Cid3 = getBytes32FromIpfsHash(cid3); - - const bytes32GeoDID4= getBytes32FromIpfsHash(geoDID4.substring(8)); - const bytes32Cid4 = getBytes32FromIpfsHash(cid4); - - const bytes32GeoDID5= getBytes32FromIpfsHash(geoDID5.substring(8)); - const bytes32Cid5 = getBytes32FromIpfsHash(cid5); - - const bytes32GeoDID6= getBytes32FromIpfsHash(geoDID6.substring(8)); - const bytes32Cid6 = getBytes32FromIpfsHash(cid6); - - const bytes32GeoDID7= getBytes32FromIpfsHash(geoDID7.substring(8)); - const bytes32Cid7 = getBytes32FromIpfsHash(cid7); - - - - try { - - const accounts = await web3.eth.getAccounts() - - const SpatialAssetsContract = await SpatialAssets.deployed(); - - let tx = await SpatialAssetsContract.enableStorage(stringToBytes('FILECOIN')); - - console.log( - "Storage enabled. Tx: ", - tx.tx - ); - - tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0], bytes32GeoDID1, stringToBytes(''),[], bytes32Cid1,stringToBytes('FILECOIN'),0); - - - console.log( - "geodid ", - tx.tx - ); - - tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID2,bytes32GeoDID1,[],bytes32Cid2, stringToBytes("FILECOIN"),0) - - - console.log( - "geodid ", - tx.tx - ); - - tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID3,bytes32GeoDID1,[],bytes32Cid3, stringToBytes("FILECOIN"),0) - - console.log( - "geodid ", - tx.tx - ); - - tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID4,bytes32GeoDID3,[],bytes32Cid4, stringToBytes("FILECOIN"),1) - - console.log( - "geodid ", - tx.tx - ); - - tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID5,stringToBytes(''),[],bytes32Cid5, stringToBytes("FILECOIN"),1) - - console.log( - "geodid 1", - tx.tx - ); - - tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID6,stringToBytes(''),[],bytes32Cid6, stringToBytes("FILECOIN"),0) - - console.log( - "geodid ", - tx.tx - ); - tx = await SpatialAssetsContract.addChildrenGeoDIDs(bytes32GeoDID6,[bytes32GeoDID1,bytes32GeoDID5]) - - console.log( - "geodid ", - tx.tx - ); - - tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID7,stringToBytes(''),[],bytes32Cid7, stringToBytes("FILECOIN"),1) - - console.log( - "geodid ", - tx.tx - ); - - - tx = await SpatialAssetsContract.addParentGeoDID(bytes32GeoDID7,bytes32GeoDID2) - - console.log( - " geodid ", - tx.tx - ); - - } - catch(error) { - console.log(error) - } - - callback() -}; diff --git a/legacy/packages/contracts/scripts/test.js b/legacy/packages/contracts/scripts/test.js deleted file mode 100644 index 60aae33..0000000 --- a/legacy/packages/contracts/scripts/test.js +++ /dev/null @@ -1,82 +0,0 @@ -const SpatialAssets = artifacts.require("./SpatialAssets.sol"); -const bs58 = require('bs58') - -module.exports = async function (callback) { - - const stringToBytes = (string) => web3.utils.asciiToHex(string) - - - // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32 - // Return bytes32 hex string from base58 encoded ipfs hash, - // stripping leading 2 bytes from 34 byte IPFS hash - // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits - // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" --> - // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231" - function getBytes32FromIpfsHash(ipfsListing) { - return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex') - } - - // Return base58 encoded ipfs hash from bytes32 hex string, - // E.g. "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231" - // --> "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" - - function getIpfsHashFromBytes32(bytes32Hex) { - // Add our default ipfs values for first 2 bytes: - // function:0x12=sha2, size:0x20=256 bits - // and cut off leading "0x" - const hashHex = "1220" + bytes32Hex.slice(2) - const hashBytes = Buffer.from(hashHex, 'hex'); - const hashStr = bs58.encode(hashBytes) - return hashStr - } - - const geoDID1 = 'did:geo:QmUZ4e5quBeXG5t38hGBgXweob5rat9mcix6qn9AsAMrsC'; - - const geoDID2 = 'did:geo:QmZ9Mc8sPk6oASJz4g1cvgh5bvps6bp7s6B2seK9NyL5qj'; - - const geoDID3 = 'did:geo:QmYgxdsHwArsZdActpg5APsTuYuFAYJY4gZxZkxAcCuDNN'; - - - const bytes32GeoDID1= getBytes32FromIpfsHash(geoDID1.substring(8)); - - const bytes32GeoDID2= getBytes32FromIpfsHash(geoDID2.substring(8)); - - const bytes32GeoDID3= getBytes32FromIpfsHash(geoDID3.substring(8)); - - - - try { - - - console.log("GeoDID1: ", geoDID1) - - console.log("Bytes32 GeoDID1: ", bytes32GeoDID1) - - console.log("Calculated GeoDID1: ", getIpfsHashFromBytes32(bytes32GeoDID1)) - console.log("Calculated GeoDID from subgraph: ", getIpfsHashFromBytes32("0x5c5426554833fdbd64d4041b07a49363a9275520839c88cb9d7d4b5957acbe73")) - - console.log(" ") - - console.log("GeoDID2: ", geoDID2) - - console.log("Bytes32 GeoDID2: ", bytes32GeoDID2) - - console.log("Calculated GeoDID2: ", getIpfsHashFromBytes32(bytes32GeoDID2)) - console.log("Calculated GeoDID from subgraph: ", getIpfsHashFromBytes32("0xa08bd4357eb3a3dbc6b8634c90ab033e51c7027c10468cb90550ad53429f1e32")) - - console.log(" ") - - console.log("GeoDI3: ", geoDID3) - - console.log("Bytes32 GeoDID3: ", bytes32GeoDID3) - - console.log("Calculated GeoDID3: ", getIpfsHashFromBytes32(bytes32GeoDID3)) - console.log("Calculated GeoDID3 from subgraph: ", getIpfsHashFromBytes32("0x99c8c166e8986ffd28f5f5b6438791fb030c406e6fb717cdf3e6a84888be47f7")) - - } - catch(error) { - console.log(error) - } - - callback() -}; diff --git a/legacy/packages/contracts/test/SpatialAssets.js b/legacy/packages/contracts/test/SpatialAssets.js deleted file mode 100644 index 4a118d3..0000000 --- a/legacy/packages/contracts/test/SpatialAssets.js +++ /dev/null @@ -1,773 +0,0 @@ -const SpatialAssets = artifacts.require("SpatialAssets"); -const bs58 = require('bs58') - -contract("SpatialAssets", async accounts => { - let spatialAssets; - const testUri = "did:geo:{id}"; - const testRole = "DATA_SUPPLIER"; - const testStorage = "FILECOIN"; - - const stringToBytes = (string) => web3.utils.asciiToHex(string) - - - // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32 - // Return bytes32 hex string from base58 encoded ipfs hash, - // stripping leading 2 bytes from 34 byte IPFS hash - // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits - // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" --> - // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231" - function getBytes32FromIpfsHash(ipfsListing) { - return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex') - } - - - // Return base58 encoded ipfs hash from bytes32 hex string, - // E.g. "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231" - // --> "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" - - function getIpfsHashFromBytes32(bytes32Hex) { - // Add our default ipfs values for first 2 bytes: - // function:0x12=sha2, size:0x20=256 bits - // and cut off leading "0x" - const hashHex = "1220" + bytes32Hex.slice(2) - const hashBytes = Buffer.from(hashHex, 'hex'); - const hashStr = bs58.encode(hashBytes) - return hashStr - } - - before(async () => { - spatialAssets = await SpatialAssets.deployed(); - }); - - it('Should deploy smart contract properly', async() => { - const spatialAssets = await SpatialAssets.deployed(); - assert(spatialAssets.address !== ''); - }); - - it("Should assign the uri correctly", async () => { - const uri = await spatialAssets.uri(); - assert.equal(testUri, uri, "The uri was incorrectly assigned"); - }); - - it("Should enable a storage correctly", async () => { - await spatialAssets.enableStorage(stringToBytes(testStorage), {from: accounts[0]}); - const storageAllowed = await spatialAssets.allowedStorages(stringToBytes(testStorage)); - assert(storageAllowed, "The storage was created"); - }); - - it("Shouldn't let a non admin user register a storage", async () => { - try { - await spatialAssets.enableStorage(stringToBytes('SKYDB'), {from: accounts[1]}); - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must have admin role to edit allowed offchain storages")); - } - }); - - it("Shouldn't let the same storage be registerd twice", async () => { - try { - await spatialAssets.enableStorage(stringToBytes(testStorage), {from: accounts[0]}); - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: storage must not be active yet")); - } - }); - - it("Should disable a storage correctly", async () => { - await spatialAssets.enableStorage(stringToBytes('SKYDB'), {from: accounts[0]}); - await spatialAssets.disableStorage(stringToBytes('SKYDB'), {from: accounts[0]}); - const storageAllowed = await spatialAssets.allowedStorages(stringToBytes('SKYDB')); - assert(!storageAllowed, "The storage was disabled"); - }); - - - it("Shouldn't let a non admin user disable a storage", async () => { - try { - await spatialAssets.disableStorage(stringToBytes(testStorage), {from: accounts[1]}); - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must have admin role to edit allowed offchain storages")); - } - }); - - it("Should register a role correctly", async () => { - await spatialAssets.registerRole({from: accounts[1]}); - - assert(spatialAssets.hasRole(stringToBytes(testRole), accounts[1]), "The role was created"); - }); - - - it("Shouldn't let a user register with the same role twice", async () => { - try { - await spatialAssets.registerRole({from: accounts[1]}); - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must not have a DATA_SUPPLIER role yet")); - } - }); - - it("Should register a spatial asset correctly without a parent", async () => { - const geodidid = 'did:geo:QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL'; - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const cid = 'QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL'; - const bytes32Cid = getBytes32FromIpfsHash(cid); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, stringToBytes(''), [], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[1]}); - - const owner = await spatialAssets.idToOwner(bytes32GeoDID); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDID); - const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDID); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID); - - assert.equal(owner, accounts[1], "Ownership not correctly assigned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned"); - assert(canBeParent, "Can be parent"); - assert(!hasParent, "Does not have parent"); - - }); - - it("Should register a spatial asset correctly with a parent", async () => { - const geodididParent = 'did:geo:QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4'; - const cidParent = 'QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4'; - - const geodididChild = 'did:geo:QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd'; - const cidChild = 'QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - const bytes32CidParent = getBytes32FromIpfsHash(cidParent); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - const bytes32CidChild = getBytes32FromIpfsHash(cidChild); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]}); - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, bytes32GeoDIDParent, [], bytes32CidChild, stringToBytes(testStorage), 0, {from: accounts[1]}); - - const owner = await spatialAssets.idToOwner(bytes32GeoDIDChild); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDChild); - const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDIDChild); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild); - - assert.equal(owner, accounts[1], "Ownership not correctly assigned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned"); - assert(canBeParent, "Can be parent"); - assert(hasParent, "Does have parent"); - -}); - - it("Should register a spatial asset correctly of type 1 without parent", async () => { - const geodidid = 'did:geo:QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE'; - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const cid = 'QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE'; - const bytes32Cid = getBytes32FromIpfsHash(cid); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, stringToBytes(''), [], bytes32Cid, stringToBytes(testStorage), 1, {from: accounts[1]}); - - const owner = await spatialAssets.idToOwner(bytes32GeoDID); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDID); - const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDID); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID); - - assert.equal(owner, accounts[1], "Ownership not correctly assigned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned"); - assert(!canBeParent, "Cannot be parent"); - assert(!hasParent, "Does not have parent"); - -}); - -it("Should register a spatial asset correctly of type 1 with a parent", async () => { - const geodididParent = 'did:geo:QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps'; - const cidParent = 'QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps'; - - const geodididChild = 'did:geo:QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd'; - const cidChild = 'QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - const bytes32CidParent = getBytes32FromIpfsHash(cidParent); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - const bytes32CidChild = getBytes32FromIpfsHash(cidChild); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]}); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, bytes32GeoDIDParent, [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]}); - - const owner = await spatialAssets.idToOwner(bytes32GeoDIDChild); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDChild); - const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDIDChild); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild); - - assert.equal(owner, accounts[1], "Ownership not correctly assigned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned"); - assert(!canBeParent, "Cannot be parent"); - assert(hasParent, "Does not have parent"); - -}); - - - -it("Should register a spatial asset correctly of type 0 without parent with a chidren", async () => { - - const geodididParent = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW'; - const cidParent = 'QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW'; - - const geodididChild = 'did:geo:QmXExS4BMc1YrH6iWERyryFcDWkvobxryXSwECLrcd7Y1H'; - const cidChild = 'QmXExS4BMc1YrH6iWERyryFcDWkvobxryXSwECLrcd7Y1H'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - const bytes32CidParent = getBytes32FromIpfsHash(cidParent); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - const bytes32CidChild = getBytes32FromIpfsHash(cidChild); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]}); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [bytes32GeoDIDChild], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]}); - - const owner = await spatialAssets.idToOwner(bytes32GeoDIDParent); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDParent); - const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDIDParent); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDParent); - - assert.equal(owner, accounts[1], "Ownership not correctly assigned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned"); - assert(canBeParent, "Is a parent"); - assert(!hasParent, "Does not have parent"); - -}); - - it("Should register a spatial asset correctly of type 0 with a parent and with a children", async () => { - - const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH'; - const cidParent = 'QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH'; - - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9'; - const cidChild = 'QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - const bytes32CidParent = getBytes32FromIpfsHash(cidParent); - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const bytes32Cid = getBytes32FromIpfsHash(cid); - - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - const bytes32CidChild = getBytes32FromIpfsHash(cidChild); - - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]}); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]}); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, bytes32GeoDIDParent, [bytes32GeoDIDChild], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[1]}); - - - const owner = await spatialAssets.idToOwner(bytes32GeoDID); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDID); - const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDID); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID); - - assert.equal(owner, accounts[1], "Ownership not correctly assigned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned"); - assert(canBeParent, "Is a parent"); - assert(hasParent, "Has a parent"); - - }); - - - it("Shouldn't register a spatial asset for someone without the proper role", async () => { - const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH'; - - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const bytes32Cid = getBytes32FromIpfsHash(cid); - - try { - await spatialAssets.registerSpatialAsset(accounts[2], bytes32GeoDID, bytes32GeoDIDParent, [], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[2]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must have data supplier role to register")); - } - }); - - it("Shouldn't register a spatial asset for a storage not yet allowed", async () => { - const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH'; - - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const bytes32Cid = getBytes32FromIpfsHash(cid); - - try { - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, bytes32GeoDIDParent, [], bytes32Cid, stringToBytes('SKYDB'), 0, {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: storage must be allowed")); - } - }); - - - it("Shouldn't register a spatial asset with the same id", async () => { - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const bytes32Cid = getBytes32FromIpfsHash(cid); - - - try { - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, '0x0', [], bytes32Cid, stringToBytes(testStorage),0,{from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: id must not have an owner yet")); - } - }); - - it("Shouldn't register a spatial asset without the proper geodid type", async () => { - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmYMg6WAuvF5i5yFmjT8KkqewZ5Ngh4U9Mp1bGfdjraFVk'; - const cidChild = 'QmYMg6WAuvF5i5yFmjT8KkqewZ5Ngh4U9Mp1bGfdjraFVk'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - const bytes32CidChild = getBytes32FromIpfsHash(cidChild); - - try { - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, bytes32GeoDID, [], bytes32CidChild, stringToBytes(testStorage), 2,{from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("Spatial Assets: wrong geodidtype")); - } - }); - - - it("Should add children to an already created geodid correctly", async () => { - // already created above - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - const cidChild = 'QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - const bytes32CidChild = getBytes32FromIpfsHash(cidChild); - - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]}); - - await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]}); - - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild); - - assert(hasParent, "Geodid children successfuly added"); - - }); - - it("Shouldn't register a children by someone without the proper role", async () => { - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[2]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must have data supplier role to register")); - } - }); - - it("Shouldn't register a children to a geodid that does not exist", async () => { - const geodidid = 'did:geo:QmcniBv7UQ4gGPQQW2BwbD4ZZHzN3o3tPuNLZCbBchd1zh'; - - const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: geoDIDId must be owned by its creator")); - } - }); - - it("Shouldn't register a children to a geodid that cannot be parent", async () => { - const geodidid = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9'; - - const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: geoDIDId must be able to be parent (a Collection)")); - } - }); - - it("Shouldn't register a parent by someone without the proper role", async () => { - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[2]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must have data supplier role to register")); - } - }); - - it("Shouldn't register a parent if the child geodid wasn't created by the sender", async () => { - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[0]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: geoDIDId must be owned by its creator")); - } - }); - - it("Shouldn't register a parent if it does not exist", async () => { - const geodidid = 'did:geo:QmcniBv7UQ4gGPQQW2BwbD4ZZHzN3o3tPuNLZCbBchd1zh'; - - const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: parentGeoDIDId does not exist")); - } - }); - - it("Shouldn't register a parent to a geodid that already has a parent", async () => { - const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'; - const cid = 'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const bytes32Cid = getBytes32FromIpfsHash(cid); - - - const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9'; - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, stringToBytes(''), [], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[1]}); - - try { - await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: geoDIDId already has a parent")); - } - }); - - - it("Shouldn't register as parent a geodid that cannot be parent", async () => { - const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9'; - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.addParentGeoDID(bytes32GeoDID, bytes32GeoDIDChild, {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)")); - } - }); - - - - it("Should add a parent to an already created geodid correctly", async () => { - const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'; - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - - const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo'; - const cidChild = 'QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo'; - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - const bytes32CidChild = getBytes32FromIpfsHash(cidChild); - - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]}); - - - await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]}); - - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild); - - assert(hasParent, "Geodid children successfuly added"); - - }); - - - it("Shouldn't remove children by an account without proper roles", async () => { - const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'; - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo'; - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.removeChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[3]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must have data supplier role to register")); - } - }); - - - it("Shouldn't remove children to a non existent geodid", async () => { - const geodidid = 'did:geo:QmccqhJg5wm5kNjAP4k4HrYxoqaXUGNuotDUqfvYBx8jrR'; - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo'; - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.removeChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: id must not have an owner yet")); - } - }); - - it("Should remove children correctly", async () => { - const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'; - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo'; - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - await spatialAssets.removeChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]}); - - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild); - - assert(!hasParent, "Parent successfuly removed"); - }); - - - it("Shouldn't remove a parent by a sender without proper roles", async () => { - - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - - try { - await spatialAssets.removeParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[2]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: must have data supplier role to register")); - } - }); - - - - it("Shouldn't remove a parent to a geodid that does not exist", async () => { - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const geodididChild = 'did:geo:QmNwEiWPc8EPc9kGEqdi9UeM5RY8jRJSPVdrtKELFZRH85'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.removeParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: id must not have an owner yet")); - } - }); - - it("Shouldn't remove a parent that does not exist", async () => { - const geodidid = 'did:geo:QmNwEiWPc8EPc9kGEqdi9UeM5RY8jRJSPVdrtKELFZRH85'; - - const geodididChild = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.removeParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: GeoDID to be removed as parent does not exist")); - } - }); - - - it("Shouldn't remove a parent to a geodid that does not have a parent", async () => { - const geodididParent = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - - const geodididChild = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8)); - - try { - await spatialAssets.removeParentGeoDID(bytes32GeoDIDParent, bytes32GeoDIDChild, {from: accounts[1]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: GeoDID does not have a parent to remove")); - } - }); - - it("Should remove a parent correctly", async () => { - - const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH'; - - const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - - - await spatialAssets.removeParentGeoDID(bytes32GeoDID, bytes32GeoDIDParent, {from: accounts[1]}); - - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID); - - assert(!hasParent, "Parent successfuly removed"); -}); - - - - it("Shouldn't deactivate a Spatial Asset if not the right owner", async () => { - const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - - try { - await spatialAssets.deactivateSpatialAsset(bytes32GeoDIDParent,[], {from: accounts[2]}); - - assert(false); - } catch (err) { - assert(err.message.includes("SpatialAssets: caller is not owner of the Spatial Asset")); - } - }); - - it("Should deactivate a spatial asset with no children correctly", async () => { - const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - - await spatialAssets.deactivateSpatialAsset(bytes32GeoDIDParent, [], {from: accounts[1]}); - - const owner = await spatialAssets.idToOwner(bytes32GeoDIDParent); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDParent); - const cid = await spatialAssets.idToCid(bytes32GeoDIDParent); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDParent); - - assert.equal(owner, '0x0000000000000000000000000000000000000000', "Id not burned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), '', "External storage not deleted"); - assert.equal(web3.utils.hexToAscii(cid).replace(/\u0000/g, ''), '', "Cid not deleted"); - assert(!hasParent, "Has parent not null"); - - }); - - it("Should deactivate a spatial asset with children correctly", async () => { - - const geodididParent = 'did:geo:QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ'; - const cidParent = 'QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ'; - - const geodidid = 'did:geo:QmcvyefkqQX3PpjpY5L8B2yMd47XrVwAipr6cxUt2zvYU8'; - const cid = 'QmcvyefkqQX3PpjpY5L8B2yMd47XrVwAipr6cxUt2zvYU8'; - - const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8)); - const bytes32CidParent = getBytes32FromIpfsHash(cidParent); - - const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8)); - const bytes32Cid = getBytes32FromIpfsHash(cid); - - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]}); - - await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, bytes32GeoDIDParent, [], bytes32Cid, stringToBytes(testStorage), 1, {from: accounts[1]}); - - - await spatialAssets.deactivateSpatialAsset(bytes32GeoDIDParent, [bytes32GeoDID], {from: accounts[1]}); - - const owner = await spatialAssets.idToOwner(bytes32GeoDIDParent); - const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDParent); - const cidTest = await spatialAssets.idToCid(bytes32GeoDIDParent); - const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDParent); - - assert.equal(owner, '0x0000000000000000000000000000000000000000', "Id not burned"); - assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), '', "External storage not deleted"); - assert.equal(web3.utils.hexToAscii(cidTest).replace(/\u0000/g, ''), '', "Cid not deleted"); - assert(!hasParent, "Has parent not null"); - - }); - -}); \ No newline at end of file diff --git a/legacy/packages/contracts/truffle-config.js b/legacy/packages/contracts/truffle-config.js deleted file mode 100644 index bad9fe2..0000000 --- a/legacy/packages/contracts/truffle-config.js +++ /dev/null @@ -1,44 +0,0 @@ -const HDWalletProvider = require("@truffle/hdwallet-provider"); -require('dotenv').config(); - -let mnemonic = process.env.MNEMONIC -let ropstenURL = process.env.ROPSTEN_API_KEY - -let provider - -if(mnemonic && ropstenURL) { - provider = new HDWalletProvider({ - mnemonic: { - phrase: mnemonic, - }, - providerOrUrl: ropstenURL, - }); -} - - -module.exports = { - plugins: ["solidity-coverage"], - networks: { - development: { - host: "127.0.0.1", - port: 8545, - network_id: "*", - }, - ropsten: { - provider: provider, - network_id: "3", - }, - }, - compilers: { - solc: { - version: "0.6.12", - settings: { - optimizer: { - enabled: true, - runs: 200 - }, - } - }, - }, - plugins: ["solidity-coverage"], -}; diff --git a/legacy/packages/contracts/tsconfig.json b/legacy/packages/contracts/tsconfig.json deleted file mode 100644 index fcb0516..0000000 --- a/legacy/packages/contracts/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig", - "compilerOptions": { - "outDir": "dist", - "rootDir": ".", - "resolveJsonModule": true - }, - "include": ["./build/**/*"], - "files": ["./build/contracts/SpatialAssets.json"] -} diff --git a/legacy/packages/contracts/tslint.json b/legacy/packages/contracts/tslint.json deleted file mode 100644 index 8690834..0000000 --- a/legacy/packages/contracts/tslint.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../tslint.json", - "linterOptions": { - "exclude": ["artifacts/**/*"] - } -} diff --git a/legacy/packages/core/.eslintrc.js b/legacy/packages/core/.eslintrc.js deleted file mode 100644 index c6b21f9..0000000 --- a/legacy/packages/core/.eslintrc.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - plugins: [ - '@typescript-eslint', - 'jest' - ], - rules: { - '@typescript-eslint/no-explicit-any': 'off' - }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin - 'prettier/@typescript-eslint', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier - 'plugin:prettier/recommended' // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - ] -}; \ No newline at end of file diff --git a/legacy/packages/core/.prettierrc.js b/legacy/packages/core/.prettierrc.js deleted file mode 100644 index 4c2c6c7..0000000 --- a/legacy/packages/core/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - semi: true, - trailingComma: "all", - singleQuote: true, - printWidth: 120, - tabWidth: 4 - }; \ No newline at end of file diff --git a/legacy/packages/core/CHANGELOG.md b/legacy/packages/core/CHANGELOG.md deleted file mode 100644 index 25e7639..0000000 --- a/legacy/packages/core/CHANGELOG.md +++ /dev/null @@ -1,928 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [1.0.66](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.65...@astralprotocol/core@1.0.66) (2021-04-01) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.65](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.64...@astralprotocol/core@1.0.65) (2021-04-01) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.64](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.63...@astralprotocol/core@1.0.64) (2021-04-01) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.63](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.62...@astralprotocol/core@1.0.63) (2021-04-01) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.62](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.61...@astralprotocol/core@1.0.62) (2021-04-01) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.61](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.60...@astralprotocol/core@1.0.61) (2021-03-31) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.60](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.59...@astralprotocol/core@1.0.60) (2021-03-30) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.59](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.58...@astralprotocol/core@1.0.59) (2021-03-30) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.58](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.57...@astralprotocol/core@1.0.58) (2021-03-29) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.57](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.56...@astralprotocol/core@1.0.57) (2021-03-29) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.56](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.55...@astralprotocol/core@1.0.56) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.55](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.54...@astralprotocol/core@1.0.55) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.54](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.53...@astralprotocol/core@1.0.54) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.53](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.52...@astralprotocol/core@1.0.53) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.52](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.51...@astralprotocol/core@1.0.52) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.51](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.50...@astralprotocol/core@1.0.51) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.50](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.49...@astralprotocol/core@1.0.50) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.49](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.48...@astralprotocol/core@1.0.49) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.48](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.47...@astralprotocol/core@1.0.48) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.47](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.46...@astralprotocol/core@1.0.47) (2021-03-13) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.46](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.45...@astralprotocol/core@1.0.46) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.45](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.44...@astralprotocol/core@1.0.45) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.44](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.43...@astralprotocol/core@1.0.44) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.43](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.42...@astralprotocol/core@1.0.43) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.42](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.41...@astralprotocol/core@1.0.42) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.41](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.40...@astralprotocol/core@1.0.41) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.40](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.39...@astralprotocol/core@1.0.40) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.39](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.38...@astralprotocol/core@1.0.39) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.38](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.37...@astralprotocol/core@1.0.38) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.37](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.36...@astralprotocol/core@1.0.37) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.36](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.35...@astralprotocol/core@1.0.36) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.35](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.34...@astralprotocol/core@1.0.35) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.34](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.33...@astralprotocol/core@1.0.34) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.33](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.32...@astralprotocol/core@1.0.33) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.32](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.31...@astralprotocol/core@1.0.32) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.31](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.30...@astralprotocol/core@1.0.31) (2021-03-12) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.30](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.29...@astralprotocol/core@1.0.30) (2021-03-11) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.29](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.28...@astralprotocol/core@1.0.29) (2021-03-11) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.28](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.27...@astralprotocol/core@1.0.28) (2021-03-11) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.27](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.26...@astralprotocol/core@1.0.27) (2021-03-11) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.26](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.25...@astralprotocol/core@1.0.26) (2021-03-04) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.25](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.24...@astralprotocol/core@1.0.25) (2021-03-04) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.24](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.23...@astralprotocol/core@1.0.24) (2021-03-04) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.23](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.22...@astralprotocol/core@1.0.23) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.22](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.21...@astralprotocol/core@1.0.22) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.21](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.20...@astralprotocol/core@1.0.21) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.20](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.19...@astralprotocol/core@1.0.20) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.19](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.18...@astralprotocol/core@1.0.19) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.18](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.17...@astralprotocol/core@1.0.18) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.17](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.16...@astralprotocol/core@1.0.17) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.16](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.15...@astralprotocol/core@1.0.16) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.15](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.14...@astralprotocol/core@1.0.15) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.14](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.13...@astralprotocol/core@1.0.14) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.13](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.12...@astralprotocol/core@1.0.13) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.11...@astralprotocol/core@1.0.12) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.10...@astralprotocol/core@1.0.11) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.9...@astralprotocol/core@1.0.10) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.8...@astralprotocol/core@1.0.9) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.7...@astralprotocol/core@1.0.8) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.6...@astralprotocol/core@1.0.7) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.5...@astralprotocol/core@1.0.6) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.4...@astralprotocol/core@1.0.5) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.3...@astralprotocol/core@1.0.4) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.2...@astralprotocol/core@1.0.3) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.1...@astralprotocol/core@1.0.2) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [1.0.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.10...@astralprotocol/core@1.0.1) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.9...@astralprotocol/core@0.1.10) (2021-02-23) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.8...@astralprotocol/core@0.1.9) (2021-02-19) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.7...@astralprotocol/core@0.1.8) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.6...@astralprotocol/core@0.1.7) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.5...@astralprotocol/core@0.1.6) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.4...@astralprotocol/core@0.1.5) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.3...@astralprotocol/core@0.1.4) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.1...@astralprotocol/core@0.1.3) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.1.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.0.2...@astralprotocol/core@0.1.1) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.0.1...@astralprotocol/core@0.0.2) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## 0.0.1 (2021-01-05) - -**Note:** Version bump only for package @astralprotocol/core - - - - - -## [0.0.39](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.38...@astraldao/astral-protocol-core@0.0.39) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.38](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.37...@astraldao/astral-protocol-core@0.0.38) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.37](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.36...@astraldao/astral-protocol-core@0.0.37) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.36](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.35...@astraldao/astral-protocol-core@0.0.36) (2020-11-21) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.35](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.34...@astraldao/astral-protocol-core@0.0.35) (2020-11-21) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.34](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.33...@astraldao/astral-protocol-core@0.0.34) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.33](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.32...@astraldao/astral-protocol-core@0.0.33) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.32](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.31...@astraldao/astral-protocol-core@0.0.32) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.31](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.30...@astraldao/astral-protocol-core@0.0.31) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.29...@astraldao/astral-protocol-core@0.0.30) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.28...@astraldao/astral-protocol-core@0.0.29) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.28](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.27...@astraldao/astral-protocol-core@0.0.28) (2020-10-18) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.27](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.26...@astraldao/astral-protocol-core@0.0.27) (2020-10-18) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.26](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.25...@astraldao/astral-protocol-core@0.0.26) (2020-10-18) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.25](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.24...@astraldao/astral-protocol-core@0.0.25) (2020-10-17) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.24](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.23...@astraldao/astral-protocol-core@0.0.24) (2020-10-17) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.23](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.22...@astraldao/astral-protocol-core@0.0.23) (2020-10-17) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.22](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.21...@astraldao/astral-protocol-core@0.0.22) (2020-10-17) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.21](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.20...@astraldao/astral-protocol-core@0.0.21) (2020-10-16) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.20](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.19...@astraldao/astral-protocol-core@0.0.20) (2020-10-16) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.19](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.18...@astraldao/astral-protocol-core@0.0.19) (2020-10-16) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.18](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.17...@astraldao/astral-protocol-core@0.0.18) (2020-10-15) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.17](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.16...@astraldao/astral-protocol-core@0.0.17) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.16](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.15...@astraldao/astral-protocol-core@0.0.16) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.15](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.14...@astraldao/astral-protocol-core@0.0.15) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.14](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.13...@astraldao/astral-protocol-core@0.0.14) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.13](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.12...@astraldao/astral-protocol-core@0.0.13) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.12](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.11...@astraldao/astral-protocol-core@0.0.12) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.11](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.10...@astraldao/astral-protocol-core@0.0.11) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.10](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.9...@astraldao/astral-protocol-core@0.0.10) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.9](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.8...@astraldao/astral-protocol-core@0.0.9) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.8](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.7...@astraldao/astral-protocol-core@0.0.8) (2020-10-14) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.7](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.6...@astraldao/astral-protocol-core@0.0.7) (2020-10-13) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.6](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.5...@astraldao/astral-protocol-core@0.0.6) (2020-10-13) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.5](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.4...@astraldao/astral-protocol-core@0.0.5) (2020-10-13) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.4](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.3...@astraldao/astral-protocol-core@0.0.4) (2020-10-13) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.3](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.2...@astraldao/astral-protocol-core@0.0.3) (2020-10-13) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## [0.0.2](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.1...@astraldao/astral-protocol-core@0.0.2) (2020-09-28) - -**Note:** Version bump only for package @astraldao/astral-protocol-core - - - - - -## 0.0.1 (2020-09-11) - -**Note:** Version bump only for package @astraldao/astral-protocol-core diff --git a/legacy/packages/core/LICENSE-APACHE b/legacy/packages/core/LICENSE-APACHE deleted file mode 100644 index 2ad0ad1..0000000 --- a/legacy/packages/core/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2020] [astralDAO] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/legacy/packages/core/LICENSE-MIT b/legacy/packages/core/LICENSE-MIT deleted file mode 100644 index 1874419..0000000 --- a/legacy/packages/core/LICENSE-MIT +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 astralDAO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/legacy/packages/core/README.md b/legacy/packages/core/README.md deleted file mode 100644 index e572705..0000000 --- a/legacy/packages/core/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# `@astralprotocol/core` - -## Description - -The @astralprotocol/core package is a Typescript NPM package that is responsible for any CRUD operations performed on the DID Documents. This includes the creation of DID Documents, loading the DID Documents, as well as updating them. The package also has utilities that enable the creation of the collision resistant GeoDID IDs, a custom did-resolver that enables DID Resolution, as well as pinning features for storing the Documents on IPFS or FFS. This package is meant to be used in conjunction with the @astralprotocol/contracts and @astralprotocol/subgraph packages. However, the package can also be used independently if the user does not want to rely on the Ethereum network. - -## Setting up Powergate Locally with Localnet Mode - -In order to store the GeoDIDs created by the core package, you will need to start up a local Powergate client or connect to an existing hosted client. Below will be a brief overview on how to setup a local Powergate client on your system. Further information is available at: https://github.com/textileio/powergate. - -In order to setup the Powergate Client locally on your system you must have [Docker](https://docs.docker.com/engine/install/), [Docker-Compose](https://docs.docker.com/compose/install/), and [Go 1.16](https://golang.org/dl/) installed. - - -In your terminal, create a new directory and clone the Powergate repo into it: - -```git clone https://github.com/textileio/powergate.git``` - - -After you clone the repo, enter the following commands: - -```cd powergate/docker``` - -```make localnet``` - - -More information regarding Powergate's Localnet mode, please refer to their documentation: https://github.com/textileio/powergate#localnet-mode - -## To add Astral Protocol Core to your application - -```yarn add -D @astralprotocol/core ``` -OR -```npm install -D @astralprotocol/core``` - -```import AstralClient from '@astralprotocol/core';``` -OR -```const AstralClient = require('@astralprotocol/core');``` - -## To develop or try the Astral Protocol Core locally - -``` -import AstralClient from '@astralprotocol/core'; - -async function run(){ - - // Create a new Astral Client Instance with the user's ethAddress - let astral = new AstralClient('0xa3e1c2602f628112E591A18004bbD59BDC3cb512'); - - try{ - - // Creates a Genesis GeoDID - const genDocRes = await astral.createGenesisGeoDID('collection') - console.log(genDocRes); - - // With the returned IDocumentInfo from the last function, we can pin it. - // Since no token was specified the client will assign a new auth Token to the user. - const results = await astral.pinDocument(genDocRes); - console.log(results); - - const token = results.token; - - // With the Auth Token and the GeoDID ID we can load the document with the loadDocument function - const loadResults = await astral.loadDocument(results.geodidid, token); - console.log(loadResults); - - console.log('\n'); - console.log('\n'); - - // Creates a Child GeoDID Item of the priviously created Genesis GeoDID - const itemres = await astral.createChildGeoDID('item', results.geodidid, 'item1'); - console.log(itemres) - - console.log('\n'); - - // With the returned IDocumentInfo from the last function, we can pin it. - // This time we reuse the same token that was created earlier to pin the child document to the same instance. - const itemresults = await astral.pinDocument(itemres, token); - console.log(itemresults); - - console.log('\n'); - - // With the Auth Token and the GeoDID ID we can load the document with the loadDocument function - const loadItemResults = await astral.loadDocument(itemresults.geodidid, token); - console.log(loadItemResults); - - console.log('\n'); - - // Here we can display the string representation of the DID Document - console.log(JSON.stringify(loadItemResults.documentInfo.documentVal)); - - }catch(e){ - console.log(e); - } - -} - -``` diff --git a/legacy/packages/core/__tests__/astral-protocol-core.test.js b/legacy/packages/core/__tests__/astral-protocol-core.test.js deleted file mode 100644 index 77047f0..0000000 --- a/legacy/packages/core/__tests__/astral-protocol-core.test.js +++ /dev/null @@ -1,47 +0,0 @@ -import AstralClient from '../lib/astral-client'; - -describe('astral-client', () => { - - describe('creates documents', () => { - - beforeEach(() => { - const astral = new AstralClient('0xa3e1c2602f628112E591A18004bbD59BDC3cb512'); - }); - - describe('root', () => { - it('creates collection', async() => { - await expect(astral.createGenesisGeoDID('collection')).resolves.toHaveReturned(); - }); - - it('creates item', async() => { - await expect(astral.createGenesisGeoDID('item')).resolves.toHaveReturned(); - }); - - it('fails to create document', async() => { - expect.assertions(1); - try { - await expect(astral.createGenesisGeoDID('document')); - }catch(e) { - expect(e).toEqual({ error: 'Invalid Option, please select Item or Collection' }); - } - }); - }); - - describe('children', () => { - beforeEach( async() => { - const res = await astral.createGenesisGeoDID('collection'); - const results = await astral.pinDocument(res); - }); - - it('creates child collection w/ collection parent', async() => { - await expect(astral.createChildGeoDID('collection', results.geodidid, 'collection')).resolves.toHaveReturned(); - }); - - it('creates child item w/ collection parent', async() => { - await expect(astral.createChildGeoDID('item', results.geodidid, 'item1')).resolves.toHaveReturned(); - }); - }) - }) -}); - - diff --git a/legacy/packages/core/babel.config.js b/legacy/packages/core/babel.config.js deleted file mode 100644 index 10ce1d6..0000000 --- a/legacy/packages/core/babel.config.js +++ /dev/null @@ -1,20 +0,0 @@ -// babel.config.js -module.exports = { - presets: [ - ["@babel/preset-env", { - targets: { - node: 'current', - }, - modules: 'commonjs', - useBuiltIns: false, - debug: false, - }], - '@babel/preset-typescript', - ], - "plugins": [ - ["@babel/plugin-transform-modules-commonjs", { - "allowTopLevelThis": true - }], - ["@babel/plugin-proposal-decorators", {"legacy": true}], - ] -} \ No newline at end of file diff --git a/legacy/packages/core/package.json b/legacy/packages/core/package.json deleted file mode 100644 index f08dfaa..0000000 --- a/legacy/packages/core/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "@astralprotocol/core", - "version": "1.0.66", - "description": "The @astralprotocol/core package is a Typescript NPM package that is responsible for any CRUD operations performed on the DID Documents. This includes the creation of DID Documents, loading the DID Documents, as well as updating them. The package also has utilities that enable the creation of the collision resistant GeoDID IDs, a custom did-resolver that enables DID Resolution, as well as pinning features for storing the Documents on IPFS or FFS. This package is meant to be used in conjunction with the @astralprotocol/contracts and @astralprotocol/subgraph packages. However, the package can also be used independently if the user does not want to rely on the Ethereum network", - "author": "Astral ", - "homepage": "https://github.com/AstralProtocol/astralprotocol#readme", - "license": "MIT OR Apache-2.0", - "main": "lib/astral-client.js", - "typings": "lib/astral-client.d.ts", - "directories": { - "lib": "lib", - "test": "__tests__" - }, - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/AstralProtocol/astralprotocol.git", - "directory": "packages/core" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org", - "access": "public" - }, - "scripts": { - "tsc": "tsc", - "test": "jest --coverage --runInBand", - "build": "../../node_modules/.bin/tsc -p tsconfig.json", - "prepublishOnly": "yarn run build", - "prebuild": "yarn run clean", - "lint": "eslint ./src '*/**/*.{js,ts,tsx}' --quiet --fix", - "clean": "rm -rf ./lib ./tsconfig.tsbuildinfo" - }, - "bugs": { - "url": "https://github.com/AstralProtocol/astralprotocol/issues" - }, - "dependencies": { - "@textile/powergate-client": "^4.0.0", - "@types/ora": "^3.2.0", - "@types/set-interval-async": "^1.0.0", - "ajv": "^6.12.5", - "apollo-fetch": "^0.7.0", - "async": "^3.2.0", - "axios": "^0.21.1", - "blob": "^0.1.0", - "chalk": "^4.1.0", - "cids": "^1.0.0", - "class-transformer": "^0.3.1", - "cli-progress": "^3.8.2", - "cli-spinners": "^2.5.0", - "cross-fetch": "^3.0.6", - "did-jwt": "^4.5.1", - "did-resolver": "^2.1.1", - "dids": "^0.5.1", - "events": "^3.2.0", - "fetch-json": "^2.2.7", - "fs": "^0.0.1-security", - "graphql": "^15.5.0", - "graphql-request": "^3.4.0", - "lodash.clonedeep": "^4.5.0", - "multihashing-async": "^2.0.1", - "ora": "^5.3.0", - "reflect-metadata": "^0.1.13", - "set-interval-async": "1.0.34" - }, - "devDependencies": { - "@babel/core": "^7.12.0", - "@babel/plugin-proposal-decorators": "^7.10.5", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/preset-env": "^7.12.0", - "@babel/preset-typescript": "^7.12.0", - "@types/blob-to-buffer": "^1.2.0", - "@types/bs58": "^4.0.1", - "@types/cli-progress": "^3.8.0", - "@types/events": "^3.0.0", - "@types/express": "^4.17.2", - "@types/jest": "^26.0.20", - "@types/lodash.clonedeep": "^4.5.6", - "@types/web3": "^1.2.2", - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "babel-cli": "^6.26.0", - "babel-jest": "^26.3.0", - "eslint": "^7.8.1", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-jest": "^24.1.0", - "eslint-plugin-prettier": "^3.1.4", - "jest": "^26.4.2", - "prettier": "^2.1.1" - }, - "gitHead": "068ff4783a483d401435cf45c521a068af0a0bad" -} diff --git a/legacy/packages/core/src/astral-client.ts b/legacy/packages/core/src/astral-client.ts deleted file mode 100644 index 6b89252..0000000 --- a/legacy/packages/core/src/astral-client.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { Powergate } from './pin/powergate'; -import { Document } from './docu/document'; -import GeoDIDResolver from './resolver/geo-did-resolver'; -import { DIDDocument, Resolver, ServiceEndpoint } from 'did-resolver'; -import { - GeoDidType, - IDocumentInfo, - IPinInfo, - IAsset, - ILoadInfo, - IAssetInfo, -} from './geo-did/interfaces/global-geo-did-interfaces'; - -export { GeoDidType, IDocumentInfo, IPinInfo, IAsset, ILoadInfo } from './geo-did/interfaces/global-geo-did-interfaces'; - -export class AstralClient { - document: Document; - - constructor(public _ethereumAddress: string, public _thegraphEndpoint: string, public _host: string, public _token: string) { - this.document = new Document(_ethereumAddress); - } - - static async build( - _ethereumAddress: string, - _thegraphEndpoint = 'https://api.thegraph.com/subgraphs/name/astralprotocol/spatialassetsfinalv1', - _host = 'http://52.168.51.215:6002', - _token?: string, - ): Promise { - try { - const powergate = await Powergate.build(_host, _token); - let token = ''; - if (_token) token = _token; - else token = await powergate.getToken(); - - return new AstralClient(_ethereumAddress, _thegraphEndpoint, _host, token); - }catch(e){ - throw e; - } - } - - getInstanceToken(): string { - return this._token; - } - - async createGenesisGeoDID(_typeOfGeoDID: string, assets?: IAsset[]): Promise { - try { - const response: IDocumentInfo = await this.document.addGenesisDocument(_typeOfGeoDID, this._host, this._token, assets); - return response; - } catch (e) { - console.log('Unable to initialize'); - throw e; - } - } - - async createChildGeoDID( - _typeOfGeoDID: string, - _parentID: string, - _path: string, - assets?: IAsset[], - ): Promise { - try { - const response: IDocumentInfo = await this.document.addChildDocument(_typeOfGeoDID, _parentID, _path, this._host, this._token, assets); - return response; - } catch (e) { - console.log('Unable to initialize'); - throw e; - } - } - - async pinDocument(documentInfo: IDocumentInfo): Promise { - try { - const pinDate: Date = new Date(); - const powergate = await Powergate.build(this._host, this._token); - const stringdoc = JSON.stringify(documentInfo.documentVal); - const uint8array = new TextEncoder().encode(stringdoc); - const cid: string = await powergate.getAssetCid(uint8array); - await powergate.pin(cid); - - return { geodidid: documentInfo.geodidid, cid: cid, pinDate: pinDate, token: this._token }; - } catch (e) { - console.log(e); - throw e; - } - } - - async pinAsset(docId: string, powergate: Powergate, asset: IAsset): Promise { - try { - const uint8array = new TextEncoder().encode(asset.data); - const seCID: string = await powergate.getAssetCid(uint8array); - await powergate.pin(seCID); - - return { - id: docId.concat(`#${asset.tag}`), - type: asset.type, - serviceEndpoint: seCID, - }; - } catch (e) { - console.log(e); - throw e; - } - } - - // Add Assets to an item. Validation happens - async addAssetsToItem(docId: string, assets: IAsset[]): Promise { - let response: ILoadInfo; - let service: ServiceEndpoint; - - try { - response = await this.loadDocument(docId); - const document_Info: IDocumentInfo = response.documentInfo; - - if (document_Info.documentVal.didmetadata.type.toLowerCase() == GeoDidType.Item) { - for (let i = 0; i < assets.length; i++) { - service = await this.pinAsset(docId, response.powergateInstance, assets[i]); - await document_Info.documentVal.service.push(service); - } - } else { - throw new Error( - 'Unfortunately the Document ID you provided is not of Item type, so you cannot add any Assets to this Document. Please try again with a valid GeoDID Item', - ); - } - return document_Info; - } catch (e) { - console.log(e); - throw e; - } - } - - // TODO: Read/Load a GeoDID Document - async loadDocument(docId: string): Promise { - try { - const powergate = await Powergate.build(this._host, this._token); - const geoDidResolver = GeoDIDResolver.getResolver(this, powergate); - const didResolver = new Resolver(geoDidResolver); - const doc: DIDDocument = await didResolver.resolve(docId); - - return { documentInfo: { geodidid: docId, documentVal: doc }, powergateInstance: powergate }; - } catch (e) { - console.log(e); - throw e; - } - } - - // must have a fragment and token of the - async loadAsset(doc: DIDDocument, docId: string): Promise { - try { - const powergate = await Powergate.build(this._host, this._token); - - const services: Array = doc.service; - - for (let i = 0; i < services.length; i++) { - if (services[i].id == docId) { - const asset_cid = services[i].serviceEndpoint; - var bytes: Uint8Array = await powergate.getFromPowergate(asset_cid); - var uint8array = new TextDecoder().decode(bytes); - var type = services[i].type; - break; - } - } - - return {id: docId, type: type, data: uint8array}; - - } catch (e) { - console.log(e); - throw e; - } - } -} diff --git a/legacy/packages/core/src/docu/document.ts b/legacy/packages/core/src/docu/document.ts deleted file mode 100644 index 132ad71..0000000 --- a/legacy/packages/core/src/docu/document.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { GeoDID, IAbstractGeoDIDDocument } from '../geo-did/interfaces/factory-interfaces'; -import { ConcreteDefaultFactory } from '../geo-did/default/geo-did-default-factory'; -import { ConcreteDefaultGeoDIDCollection } from '../geo-did/default/geo-did-default-collection'; -import { ConcreteDefaultGeoDIDItem } from '../geo-did/default/geo-did-default-item'; -import { Powergate } from '../pin/powergate'; -import { IDocumentInfo, IAsset } from '../geo-did/interfaces/global-geo-did-interfaces'; - -export class Document { - - constructor(public _ethereumAddress: string){} - - // Pin on Powergate - async addGenesisDocument(_typeOfGeoDID: string, _host: string, _token: string, assets?: IAsset[]): Promise { - - let document: ConcreteDefaultGeoDIDCollection | ConcreteDefaultGeoDIDItem; - const factory = new ConcreteDefaultFactory(); - - try{ - if(_typeOfGeoDID.toLowerCase() == 'collection'){ - document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDCollection); - await document.prepRootGeoDID(this._ethereumAddress, _host, _token); - } - else if(_typeOfGeoDID.toLowerCase() == 'item'){ - document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDItem); - await document.prepRootGeoDID(this._ethereumAddress, _host, _token, assets); - } - else throw new Error('Invalid Option, please select Item or Collection'); - - const geodidid: string = document.getGeoDIDid(); - const documentVal = JSON.parse(document.getDidDocument()); - - return { - geodidid: geodidid, - documentVal: documentVal, - } - } - catch(e){ - throw e; - } - } - - // Pin on Powergate - async addChildDocument(_typeOfGeoDID: string, _parentID: string, _path: string, _host: string, _token: string, assets?: IAsset[]): Promise { - - let document: ConcreteDefaultGeoDIDCollection | ConcreteDefaultGeoDIDItem; - const factory: ConcreteDefaultFactory = new ConcreteDefaultFactory(); - - try{ - if(_typeOfGeoDID.toLowerCase() == 'collection'){ - document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDCollection); - await document.prepChildGeoDID(this._ethereumAddress, _parentID, _path, _host, _token); - } - else if(_typeOfGeoDID.toLowerCase() == 'item'){ - document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDItem); - await document.prepChildGeoDID(this._ethereumAddress, _parentID, _path, _host, _token, assets); - } - else throw new Error('Invalid Option, please select Item or Collection'); - - const geodidid: string = document.getGeoDIDid(); - const documentVal = JSON.parse(document.getDidDocument()); - - return { - geodidid: geodidid, - documentVal: documentVal, - parentid: _parentID - } - } - catch(e){ - throw e; - } - } -} \ No newline at end of file diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-collection.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-collection.ts deleted file mode 100644 index 8c383dc..0000000 --- a/legacy/packages/core/src/geo-did/default/geo-did-default-collection.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { ConcreteDefaultGeoDIDDocument } from './geo-did-default-document'; -import { GeoDidType, Relationship } from '../interfaces/global-geo-did-interfaces'; -import { GeoDoctypeUtils } from '../doctype-utils/geo-doctype-utils'; - -export class ConcreteDefaultGeoDIDCollection extends ConcreteDefaultGeoDIDDocument { - - constructor(){super()} - - public getGeoDIDid(): string { - return this.geoDIDid; - } - - public async prepRootGeoDID(_ethAddress: string, _host: string, _token: string): Promise{ - - // create the GeoDID Identifier - try{ - const geoId = await GeoDoctypeUtils.createGeodidIdFromGenesis(_ethAddress); - this.geoDIDid = GeoDoctypeUtils.normalizeDocId(geoId); - - this.publicKey = [ - { - id: this.geoDIDid.concat('#controller'), - type: 'Secp256k1VerificationKey2018', - controller: this.geoDIDid, - ethereumAddress: _ethAddress - } - ]; - - this.didmetadata = { - type: GeoDidType.Collection, - created: new Date() - }; - - this.links = [ - { - id: this.geoDIDid, - type: GeoDidType.Collection, - rel: Relationship.Root - }, - { - id: this.geoDIDid, - type: GeoDidType.Collection, - rel: Relationship.Self - } - ] - - this.serviceEndpoint = [] - - this.buildDocument(); - } - catch(e){ - throw e; - } - } - - public async prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string): Promise{ - this.geoDIDid = _parentid.concat('/' + _path); - const rootGeoDID = GeoDoctypeUtils.getBaseGeoDidId(_parentid); - - this.publicKey = [ - { - id: this.geoDIDid.concat('#controller'), - type: 'Secp256k1VerificationKey2018', - controller: this.geoDIDid, - ethereumAddress: _ethAddress - } - ]; - - this.didmetadata = { - type: GeoDidType.Collection, - created: new Date() - }; - - this.links = [ - { - id: this.geoDIDid, - type: GeoDidType.Collection, - rel: Relationship.Root - }, - { - id: this.geoDIDid, - type: GeoDidType.Collection, - rel: Relationship.Self - }, - { - id: _parentid, - type: GeoDidType.Collection, - rel: Relationship.Parent - } - ]; - - this.serviceEndpoint = []; - - this.buildDocument(); - } - -} \ No newline at end of file diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-document.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-document.ts deleted file mode 100644 index f23369f..0000000 --- a/legacy/packages/core/src/geo-did/default/geo-did-default-document.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { IAbstractGeoDIDDocument } from '../interfaces/factory-interfaces'; -import { GeoDIDDocument, IMetadata, ILinks, GeoDidType, Relationship, IAsset } from '../interfaces/global-geo-did-interfaces'; -import { GeoDoctypeUtils } from '../doctype-utils/geo-doctype-utils'; -import { ServiceEndpoint, PublicKey } from 'did-resolver'; - - -export class ConcreteDefaultGeoDIDDocument implements IAbstractGeoDIDDocument{ - - public label: string; - public geoDIDid: string; - public doctype: string; - - protected publicKey: PublicKey[]; - protected didmetadata: IMetadata; - protected links: ILinks[]; - protected serviceEndpoint: ServiceEndpoint[]; - protected geoDID: GeoDIDDocument; - - // Need a specific type later - constructor(){} - - buildDocument(){ - this.geoDID = { - '@context':'https://w3id.org/did/v1', - id: this.geoDIDid, - publicKey: this.publicKey, - didmetadata: this.didmetadata, - links: this.links, - service: this.serviceEndpoint - }; - } - - // not implemented for the Base Class - async prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string): Promise { - throw new Error('Method not implemented for Default.'); - } - - async prepRootGeoDID(_ethAddress: string, _host: string, _token: string): Promise{ - throw new Error('Method not implemented for Default.'); - } - - public getDocType(): string{ - return this.doctype; - } - - public getDidDocument(): string { - return JSON.stringify(this.geoDID); - } - - public getGeoDIDid(): string { - return this.geoDIDid; - } - -} \ No newline at end of file diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-factory.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-factory.ts deleted file mode 100644 index 53c4669..0000000 --- a/legacy/packages/core/src/geo-did/default/geo-did-default-factory.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IAbstractGeoDIDFactory } from '../interfaces/factory-interfaces'; - -export class ConcreteDefaultFactory implements IAbstractGeoDIDFactory{ - // Creates the Document - public async createGeoDIDDocument(document: {new (): T}): Promise{ - return new document(); - } - -} \ No newline at end of file diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-item.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-item.ts deleted file mode 100644 index f514a02..0000000 --- a/legacy/packages/core/src/geo-did/default/geo-did-default-item.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { ConcreteDefaultGeoDIDDocument } from './geo-did-default-document'; -import { GeoDidType, Relationship, IAsset } from '../interfaces/global-geo-did-interfaces'; -import { GeoDoctypeUtils } from '../doctype-utils/geo-doctype-utils'; -import { Powergate } from '../../pin/powergate'; -import { ServiceEndpoint } from 'did-resolver'; - -export class ConcreteDefaultGeoDIDItem extends ConcreteDefaultGeoDIDDocument{ - - constructor(){ - super(); - } - - public async prepRootGeoDID(_ethAddress: string, _host: string, _token: string, _assets?: IAsset[]): Promise{ - - // create the GeoDID Identifier - try{ - const geoId = await GeoDoctypeUtils.createGeodidIdFromGenesis(_ethAddress); - this.geoDIDid = GeoDoctypeUtils.normalizeDocId(geoId); - - this.publicKey = [ - { - id: this.geoDIDid.concat('#controller'), - type: 'Secp256k1VerificationKey2018', - controller: this.geoDIDid, - ethereumAddress: _ethAddress - } - ]; - - this.didmetadata = { - type: GeoDidType.Item, - created: new Date() - }; - - this.links = [ - { - id: this.geoDIDid, - type: GeoDidType.Item, - rel: Relationship.Root - }, - { - id: this.geoDIDid, - type: GeoDidType.Item, - rel: Relationship.Self - } - ]; - - if(_assets) this.serviceEndpoint = await this.addAssetsToGenesisItem(_assets, _host, _token); - else this.serviceEndpoint = []; - - this.buildDocument(); - } - catch(e){ - throw e; - } - } - - public async prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string, _assets?: IAsset[]): Promise{ - this.geoDIDid = _parentid.concat('/' + _path); - const rootGeoDID = GeoDoctypeUtils.getBaseGeoDidId(_parentid); - - this.publicKey = [ - { - id: this.geoDIDid.concat('#controller'), - type: 'Secp256k1VerificationKey2018', - controller: this.geoDIDid, - ethereumAddress: _ethAddress - } - ]; - - this.didmetadata = { - type: GeoDidType.Item, - created: new Date() - }; - - this.links = [ - { - id: rootGeoDID, - type: GeoDidType.Collection, - rel: Relationship.Root - }, - { - id: this.geoDIDid, - type: GeoDidType.Item, - rel: Relationship.Self - }, - { - id: _parentid, - type: GeoDidType.Collection, - rel: Relationship.Parent - } - ]; - - if(_assets) try{ this.serviceEndpoint = await this.addAssetsToGenesisItem(_assets, _host, _token); }catch(e){ throw e; } - else this.serviceEndpoint = []; - - this.buildDocument(); - - } - - async pinAsset(_powergate: Powergate, _asset: IAsset): Promise { - try { - const uint8array = new TextEncoder().encode(_asset.data); - const seCID: string = await _powergate.getAssetCid(uint8array); - await _powergate.pin(seCID); - - return { - id: this.geoDIDid.concat(`#${_asset.tag}`), - type: _asset.type, - serviceEndpoint: seCID, - }; - - } catch (e) { - throw e; - } - } - - async addAssetsToGenesisItem(_assets: IAsset[], _host: string, _token: string): Promise { - - // by default creates new instance - const powergate: Powergate = await Powergate.build(_host, _token); - - let services: ServiceEndpoint[] = []; - - try { - for(let i = 0; i < _assets.length; i++){ - const service: ServiceEndpoint = await this.pinAsset(powergate, _assets[i]); - services.push(service); - } - return services; - } catch (e) { - throw e; - } - } - -} \ No newline at end of file diff --git a/legacy/packages/core/src/geo-did/doctype-utils/geo-doctype-utils.ts b/legacy/packages/core/src/geo-did/doctype-utils/geo-doctype-utils.ts deleted file mode 100644 index eb60096..0000000 --- a/legacy/packages/core/src/geo-did/doctype-utils/geo-doctype-utils.ts +++ /dev/null @@ -1,59 +0,0 @@ -import ajv from 'ajv'; -import CID from 'cids'; -// TODO: properly import and declare module multihashing-async -const multihashing = require('multihashing-async'); - -/** - * Doctype related utils - */ -export class GeoDoctypeUtils { - static validator: any = new ajv({ allErrors: true }); - - // get the base geodid id - static getBaseGeoDidId(docId: string): string { - const baseid = docId.split('/'); - return baseid[0]; // returns the base id - } - - // create the GeoDID - static async createGeodidIdFromGenesis(_id: string): Promise { - const genesisCid = await this.createCID(_id); - - const baseDocId = ['geo:/', genesisCid.toString()].join('/'); - - return baseDocId; - } - - static normalizeDocId(docId: string): string { - if (docId.startsWith('geo://')) { - return docId.replace('geo://', 'did:geo:'); - } - return docId; - } - - // still needs to be fixed - static getGenesis(docId: string): string { - const genesis = docId.startsWith('geo://') ? docId.split('//')[1] : docId.split('/')[2]; - const indexOfVersion = genesis.indexOf('?'); - if (indexOfVersion !== -1) { - return genesis.substring(0, indexOfVersion); - } - return genesis; - } - - static async createCID(_id: string): Promise { - - const event = new Date(); - const str_time = event.toString(); - - const bytes = new TextEncoder().encode(_id.concat(str_time)); - const hash = await multihashing(bytes, 'sha2-256'); - - const cid = new CID(0, 'dag-pb', hash, 'base58btc'); - - const cidreturn = cid.toString(); - - return cidreturn; - } -} - diff --git a/legacy/packages/core/src/geo-did/interfaces/factory-interfaces.ts b/legacy/packages/core/src/geo-did/interfaces/factory-interfaces.ts deleted file mode 100644 index 99c7c55..0000000 --- a/legacy/packages/core/src/geo-did/interfaces/factory-interfaces.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ConcreteDefaultGeoDIDCollection } from '../default/geo-did-default-collection'; -import { ConcreteDefaultGeoDIDItem } from '../default/geo-did-default-item'; -import { ConcreteDefaultGeoDIDDocument } from '../default/geo-did-default-document'; -import { IAsset } from './global-geo-did-interfaces' - -export interface IAbstractGeoDIDFactory { - createGeoDIDDocument(c: {new (): T}): Promise; -} - -// Acts as a Node -export interface IAbstractGeoDIDDocument { - label: string; - geoDIDid: string; - prepRootGeoDID(_ethAddress: string, _host: string, _token: string, _assets?: IAsset[]): void; - prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string, _assets?: IAsset[]): void; - getGeoDIDid(): string; - getDidDocument(): string; -} - -export type GeoDID = ConcreteDefaultGeoDIDDocument | ConcreteDefaultGeoDIDCollection | ConcreteDefaultGeoDIDItem; diff --git a/legacy/packages/core/src/geo-did/interfaces/global-geo-did-interfaces.ts b/legacy/packages/core/src/geo-did/interfaces/global-geo-did-interfaces.ts deleted file mode 100644 index d0e6d3f..0000000 --- a/legacy/packages/core/src/geo-did/interfaces/global-geo-did-interfaces.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { DIDDocument } from 'did-resolver'; -import { Powergate } from '../../pin/powergate'; - -export const enum GeoDidType{ Default = 'default', Item = 'item', Collection = 'collection' } -export const enum Relationship{ Root = 'root', Self = 'self', Parent = 'parent', Child = 'child' } -export const enum ServiceType{ Collection_Metadata = 'collection-metadata', Item_Metadata = 'item-metadata', GeoJSON = 'geojson', JSON = 'json', GeoTIFF = 'geotiff', Misc = 'misc'} - -export interface ILoadInfo { - documentInfo: IDocumentInfo; - powergateInstance: Powergate -} - -export interface IAsset { - type: string; - tag: string; - data: any; -} - -export interface IPinInfo { - geodidid: string; - cid: string; - pinDate: Date; - token: string -} - -export interface IDocumentInfo { - geodidid: string; - documentVal: any; - token?: string; - parentid?: string; -} - -export interface IAssetInfo { - id: string; - type: string; - data: any; -} - -export interface ILinks { - id: string; - type: GeoDidType; - rel: Relationship; -} - -export interface IMetadata { - type: GeoDidType; - created: Date; - updated?: Date[]; -} - -export interface GeoDIDDocument extends DIDDocument { - didmetadata?: IMetadata; - links: ILinks[]; -} diff --git a/legacy/packages/core/src/pin/powergate.ts b/legacy/packages/core/src/pin/powergate.ts deleted file mode 100644 index 47c57d7..0000000 --- a/legacy/packages/core/src/pin/powergate.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { Pow, createPow, powTypes } from '@textile/powergate-client'; - -const chalk = require('chalk'); -//import chalk from 'chalk'; - -export interface Pinning { - open(): Promise; - close(): Promise; - pin(cid: string): Promise; - //unpin(cid: CID): Promise; -} - -export enum JobStatus { - JOB_STATUS_UNSPECIFIED = 0, - JOB_STATUS_QUEUED = 1, - JOB_STATUS_EXECUTING = 2, - JOB_STATUS_FAILED = 3, - JOB_STATUS_CANCELED = 4, - JOB_STATUS_SUCCESS = 5, -} - -// create powergate instance -export class Powergate implements Pinning { - readonly endpoint?: string; - - // Readonly properties must be initialized at their declaration or in the constructor. - constructor(private _host: string, private _pow: Pow, private _token?: string) {} - - static async build(host: string, tokenval?: string): Promise { - //const host: string = "http://0.0.0.0:6002" - //const host = 'http://52.168.51.215:6002'; - const pow: Pow = createPow({ host }); - if (tokenval) { - pow.setAdminToken(tokenval); - pow.setToken(tokenval); - } else { - try { - const { user } = await pow.admin.users.create(); // save this token for later use! - tokenval = user?.token; - pow.setAdminToken(user?.token); - pow.setToken(user?.token); - } catch (err) { - throw err; - } - } - - return new Powergate(host, pow, tokenval); - } - - get pow() { - return this._pow; - } - - async open(): Promise { - this._pow = createPow({ host: this._host }); - if (this._token) { - this._pow.setAdminToken(this._token); - this._pow.setToken(this._token); - } - } - - async getToken(): Promise { - return this._token; - } - - async close(): Promise { - throw new Error('Method not implemented.'); - } - - async getAssetCid(buffer: any): Promise { - try { - const { cid } = await this._pow.data.stage(buffer); - return cid; - } catch (e) { - throw e; - } - } - - async getFromPowergate(cid: string): Promise { - try { - const bytes = await this._pow.data.get(cid); - return bytes; - } catch (e) { - //console.log(e); - throw e; - } - } - - async pin(cid: string): Promise { - try { - const { jobId } = await this._pow.storageConfig.apply(cid); - //this.waitForJobStatus(jobId); - } catch (e) { - if (e.message.includes('cid already pinned, consider using override flag')) { - // Do Nothing - } else { - throw e; - } - } - } - - protected waitForJobStatus(jobId: string): Promise { - return new Promise((resolve, reject) => { - const jobsCancel = this._pow.storageJobs.watch((job: any) => { - if (job.status === powTypes.JobStatus.JOB_STATUS_CANCELED) { - console.log('job canceled'); - } else if (job.status === powTypes.JobStatus.JOB_STATUS_FAILED) { - console.log('job failed'); - } else if (job.status === powTypes.JobStatus.JOB_STATUS_SUCCESS) { - console.log('job success!'); - } - }, jobId); - }); - } -} diff --git a/legacy/packages/core/src/resolver/geo-did-resolver.ts b/legacy/packages/core/src/resolver/geo-did-resolver.ts deleted file mode 100644 index 6517884..0000000 --- a/legacy/packages/core/src/resolver/geo-did-resolver.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { AstralClient } from '../astral-client'; -import { DIDResolver, DIDDocument, ParsedDID, ServiceEndpoint } from 'did-resolver'; -import { Powergate } from '../pin/powergate'; -import { IAssetInfo } from '../geo-did/interfaces/global-geo-did-interfaces'; - -import { setIntervalAsync, clearIntervalAsync } from 'set-interval-async/dynamic'; -import cliSpinners from 'cli-spinners'; - -import { GraphQLClient, gql } from 'graphql-request'; - -//const Ora = require('ora'); -const chalk = require('chalk'); - -export interface ResolverRegistry { - [index: string]: DIDResolver; -} - -interface Variables { - [key: string]: any; -} - -interface Response { - geoDID: { - cid: string; - }; -} - -interface Resolve { - document: any; - asset?: any; -} - -async function declareCID(data: T): Promise{ - if(data.geoDID != null){ return (data.geoDID.cid).toString() } - else{ return undefined } -} - -async function getCID(client: GraphQLClient, query: any, variables: Variables): Promise { - var data: any; - var cid: string; - - var counter: number = 0; - - //const spinner = ora('Loading document').start(); - - return await new Promise((resolve, reject) => { - const interval = setIntervalAsync(async() => { - /* - const spinner = new Ora({ - discardStdin: false, - text: `${chalk.yellow('Loading document')}`, - spinner: cliSpinners.dots - }); - - spinner.start(); - spinner.color = 'yellow';*/ - try{ - data = await client.request(query, variables) - - if (data.hasOwnProperty('geoDID')) { - cid = await declareCID(data); - } - }catch(err){ - reject(`${err}`); // reject - } - - if (cid != undefined) { - //spinner.clear(); - //spinner.succeed(`${chalk.green('Request was successful')}`); - resolve(cid); - clearIntervalAsync(interval); - //spinner.stop(); - } - else if(counter >= 30){ - //spinner.clear(); - //spinner.fail(`${chalk.red('Failed: ')}`); - reject(`${chalk.red('The Request Timed out. Please try again.')}`); - clearIntervalAsync(interval); - //spinner.stop(); - } - - counter++; - }, 5000); - }); -} - -const resolve = async ( - astral: AstralClient, - powergate: Powergate, - parseddid: string, - parsedid: string, - parsedpath?: string, - parsedfragment?: string, -): Promise => { - - const endpoint = astral._thegraphEndpoint; - - const client = new GraphQLClient(endpoint); - - let pathActual: string = ''; - - if (parsedpath != undefined) { - pathActual = parseddid.concat(parsedpath); - } else { - pathActual = parseddid; - } - - const query = gql` - query($geoDIDID: ID!) { - geoDID(id: $geoDIDID) { - cid - } - } - `; - - const variables: Variables = { - geoDIDID: pathActual, - }; - - try { - // wait for the response to return cid or timeout - const cid: string = await getCID(client, query, variables); - - // gets the document - const bytes: Uint8Array = await powergate.getFromPowergate(cid); - const strj = new TextDecoder('utf-8').decode(bytes); - - const document = JSON.parse(strj); - - return document; - - } catch(e) { - //console.log(e); - throw e; - } -}; - - - -// needs a powergate instance to call getResolver -export default { - getResolver: (astral: AstralClient, powergate: Powergate): ResolverRegistry => { - return { - geo: async (did: string, parsed: ParsedDID): Promise => { - try{ - return await resolve(astral, powergate, parsed.did, parsed.id, parsed.path, parsed.fragment); - }catch(e){ - throw e; - } - }, - }; - }, -}; diff --git a/legacy/packages/core/src/scripts/fetch.ts b/legacy/packages/core/src/scripts/fetch.ts deleted file mode 100644 index 6c69175..0000000 --- a/legacy/packages/core/src/scripts/fetch.ts +++ /dev/null @@ -1,17 +0,0 @@ -import fetch from 'cross-fetch'; - -// will be used to fetch the catalogs and items -export async function fetchJson(url: string, payload?: any): Promise { - let opts; - if (payload) { - opts = { - method: 'post', - body: JSON.stringify(payload), - headers: { 'Content-Type': 'application/json' }, - }; - } - const res = await (await fetch(url, opts)).json(); - if (res.error) throw new Error(res.error); - return res; -} - diff --git a/legacy/packages/core/tsconfig.json b/legacy/packages/core/tsconfig.json deleted file mode 100644 index a2aa06c..0000000 --- a/legacy/packages/core/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "./lib", - "rootDir": "./src", - "composite": true, - "strictNullChecks": false, - }, - "include": ["./src/**/*"] -} \ No newline at end of file diff --git a/legacy/packages/ipld-encoded-geotiff/CHANGELOG.md b/legacy/packages/ipld-encoded-geotiff/CHANGELOG.md deleted file mode 100644 index 2fe531a..0000000 --- a/legacy/packages/ipld-encoded-geotiff/CHANGELOG.md +++ /dev/null @@ -1,48 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.5...@astralprotocol/ipld-encoded-geotiff@1.0.6) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff - - - - - -## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.4...@astralprotocol/ipld-encoded-geotiff@1.0.5) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff - - - - - -## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.3...@astralprotocol/ipld-encoded-geotiff@1.0.4) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff - - - - - -## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.2...@astralprotocol/ipld-encoded-geotiff@1.0.3) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff - - - - - -## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.1...@astralprotocol/ipld-encoded-geotiff@1.0.2) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff - - - - - -## 1.0.1 (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff diff --git a/legacy/packages/ipld-encoded-geotiff/LICENSE-APACHE b/legacy/packages/ipld-encoded-geotiff/LICENSE-APACHE deleted file mode 100644 index 2ad0ad1..0000000 --- a/legacy/packages/ipld-encoded-geotiff/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2020] [astralDAO] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/legacy/packages/ipld-encoded-geotiff/LICENSE-MIT b/legacy/packages/ipld-encoded-geotiff/LICENSE-MIT deleted file mode 100644 index 1874419..0000000 --- a/legacy/packages/ipld-encoded-geotiff/LICENSE-MIT +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 astralDAO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/legacy/packages/ipld-encoded-geotiff/README.md b/legacy/packages/ipld-encoded-geotiff/README.md deleted file mode 100644 index 5af9e4d..0000000 --- a/legacy/packages/ipld-encoded-geotiff/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# `ipld-encoded-geotiff` - -> TODO: description - -## Usage - -``` -const ipldEncodedGeotiff = require('ipld-encoded-geotiff'); - -// TODO: DEMONSTRATE API -``` diff --git a/legacy/packages/ipld-encoded-geotiff/__tests__/ipld-encoded-geotiff.test.js b/legacy/packages/ipld-encoded-geotiff/__tests__/ipld-encoded-geotiff.test.js deleted file mode 100644 index d491c88..0000000 --- a/legacy/packages/ipld-encoded-geotiff/__tests__/ipld-encoded-geotiff.test.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -const ipldEncodedGeotiff = require('..'); - -describe('ipld-encoded-geotiff', () => { - it('needs tests'); -}); diff --git a/legacy/packages/ipld-encoded-geotiff/lib/index.d.ts b/legacy/packages/ipld-encoded-geotiff/lib/index.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/legacy/packages/ipld-encoded-geotiff/lib/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/legacy/packages/ipld-encoded-geotiff/lib/index.js b/legacy/packages/ipld-encoded-geotiff/lib/index.js deleted file mode 100644 index 0452e2c..0000000 --- a/legacy/packages/ipld-encoded-geotiff/lib/index.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const geotiff_1 = require("geotiff"); -const cross_fetch_1 = __importDefault(require("cross-fetch")); -function run(url) { - return __awaiter(this, void 0, void 0, function* () { - try { - const response = yield cross_fetch_1.default(url); - const arrayBuffer = yield response.arrayBuffer(); - const tiff = yield geotiff_1.fromArrayBuffer(arrayBuffer); - console.log(tiff); - const image = yield tiff.getImage(); - console.log(image); - const width = image.getWidth(); - const height = image.getHeight(); - console.log("Width " + width); - console.log("Height " + height); - const tileWidth = image.getTileWidth(); - const tileHeight = image.getTileHeight(); - console.log("Tile Width " + tileWidth); - console.log("Tile Height " + tileHeight); - } - catch (e) { - console.log(e); - } - }); -} -run('http://download.osgeo.org/geotiff/samples/gdal_eg/cea.tif'); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/legacy/packages/ipld-encoded-geotiff/lib/index.js.map b/legacy/packages/ipld-encoded-geotiff/lib/index.js.map deleted file mode 100644 index a458ac2..0000000 --- a/legacy/packages/ipld-encoded-geotiff/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,qCAA0F;AAC1F,8DAAgC;AAQhC,SAAe,GAAG,CAAC,GAAW;;QAC1B,IAAG;YACC,MAAM,QAAQ,GAAG,MAAM,qBAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,yBAAe,CAAC,WAAW,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,CAAA;YACtC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC,CAAA;SAG3C;QAAA,OAAM,CAAC,EAAC;YACL,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB;IACL,CAAC;CAAA;AAED,GAAG,CAAC,2DAA2D,CAAC,CAAC"} \ No newline at end of file diff --git a/legacy/packages/ipld-encoded-geotiff/package.json b/legacy/packages/ipld-encoded-geotiff/package.json deleted file mode 100644 index 915a311..0000000 --- a/legacy/packages/ipld-encoded-geotiff/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@astralprotocol/ipld-encoded-geotiff", - "version": "1.0.6", - "description": "IPLD Encoded GeoTIFFs to enable CID serving capabilities on IPFS. ", - "author": "Astral ", - "homepage": "https://github.com/AstralProtocol/astralprotocol#readme", - "license": "MIT OR Apache-2.0", - "main": "lib/index.ts", - "typings": "lib/index.d.ts", - "directories": { - "lib": "lib", - "test": "__tests__" - }, - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/AstralProtocol/astralprotocol.git", - "directory": "packages/ipld-encoded-geotiff" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org", - "access": "public" - }, - "scripts": { - "start": "ts-node src/index.ts", - "tsc": "tsc", - "test": "jest --coverage --runInBand", - "build": "../../node_modules/.bin/tsc -p tsconfig.json", - "prepublishOnly": "yarn run build", - "prebuild": "yarn run clean", - "lint": "eslint ./src '*/**/*.{js,ts,tsx}' --quiet --fix", - "clean": "rm -rf ./lib ./tsconfig.tsbuildinfo" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^4.9.0", - "@typescript-eslint/parser": "^4.9.0", - "cross-fetch": "^3.0.6", - "eslint": "^7.14.0", - "eslint-config-prettier": "^6.15.0", - "eslint-plugin-jest": "^24.1.3", - "eslint-plugin-prettier": "^3.1.4", - "express": "^4.17.1", - "jest": "^26.6.3", - "prettier": "^2.2.1" - }, - "dependencies": { - "geotiff": "^1.0.0-beta.14", - "ts-node": "^9.1.1" - }, - "bugs": { - "url": "https://github.com/AstralProtocol/astralprotocol/issues" - } -} diff --git a/legacy/packages/ipld-encoded-geotiff/src/index.ts b/legacy/packages/ipld-encoded-geotiff/src/index.ts deleted file mode 100644 index aa56ef2..0000000 --- a/legacy/packages/ipld-encoded-geotiff/src/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -// 1. Get the data and parse it -// 2. - -import GeoTIFF, { fromUrl, fromFile, fromUrls, fromArrayBuffer, fromBlob } from 'geotiff'; -import fetch from 'cross-fetch'; - -// To read a whole image into one big array of arrays the following method call can be used: -// const data = await image.readRasters(); - -/** - * - */ -async function run(url: string){ - try{ - const response = await fetch(url); - const arrayBuffer = await response.arrayBuffer(); - const tiff = await fromArrayBuffer(arrayBuffer); - console.log(tiff); - const image = await tiff.getImage(); - console.log(image); - const width = image.getWidth(); - const height = image.getHeight(); - console.log("Width " + width); - console.log("Height " + height); - - const tileWidth = image.getTileWidth(); - const tileHeight = image.getTileHeight(); - console.log("Tile Width " + tileWidth) //514 - console.log("Tile Height " + tileHeight) //15 - - - }catch(e){ - console.log(e); - } -} - -run('http://download.osgeo.org/geotiff/samples/gdal_eg/cea.tif'); -//run('https://storage.googleapis.com/pdd-stac/disasters/hurricane-harvey/0831/SkySat_Freeport_s03_20170831T162740Z.tif'); \ No newline at end of file diff --git a/legacy/packages/ipld-encoded-geotiff/src/tiff/gdal/cea.tif b/legacy/packages/ipld-encoded-geotiff/src/tiff/gdal/cea.tif deleted file mode 100644 index 1d521618586d74dd059b2fc5c304a9c72cab2da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269384 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

) 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�~;^`8}$l1Y2O1P7L$IAxXYYdxquhZX|ZR=Ppe)n6K;#a$=OYs8v9i5 zm`n~F=Ya(Xt)G03UID0ot*#=ca%{hFrzQlz`t%z?EI`4%gHXKvWddO?`97#`K$aq6 zHQ^AF=N;8aB+0;I(({nzR}I*p3Gs4nz&be*^`S!vMvJH6H%`={Js9sA*yv4k=vO== zVRBX)!aKO`D<$yTi80Z4>%L(!Q76+SK}9p-KkBoFeNdr|Z>c750jJQZh=2yik>m-> zm+RYAk_ez*?&j#>s@zua`{B~~{K4tyq=EzrFNkzuR(uI=H0z;rX-gym$xzLKCk;3n z?gcijf@9ITxM5$-w* z(O&-Rq?80aJU;nH{ucR?=o(ZPTx;ocWz1WBFe+8mUFPkCiV@^MHVO=r*E^TY7O+*L zwTA>NJV1P;?Puh4dvXDT+-u9@KzIn@Mn0B-BV*w1HOsK2>A3vH(nSa$ z4{8jHYqPLwvjpr~~xeh?FRBke&KGA#O3C6kKj-UwePPSd9mTcQ_}6 z7qb#?NF6~K#rSnqi8w{Fm(K{JED_1(e`Wn{k)mq#Wv?nn!mY-wV{WY1_?HhyV*NKwjKChZjI1}Q`N0kFdKyqBxOJNlLY`Yb_JcnR7WMzcIHG5*$V zV(Cht`*1@83BKVz;UkpD5s}OAXb`G70^6qnNL(>m?Yf^GlUM51X3dtednII8JuIF@ zImN9E$@q@Do5FxPMc)YRu?%t6O1hom_@pq~9iC={>OnT`MI#H69)Tn_R%U)aOfi$~ zi`Qc4a(4P7HF}%v103wnBqvH=lye$`w(AKwK-$U^3?LtvYvw`g0F9MqHzwZ9&vk+6 zh$wQWJLanS?%DT8vl~RJ-LL!h!1OXG4rl7<@J7T4CWlKT_L6V@Wsvs?I!->H1Ws}O ze1L-kP%a<7X!G$J{-jo5j02S7(i(sPYLyF6j6~Nc?GeV+tL#Jq?%cbR4t2E^&~H~7z6V2c}4DQSSgbtbV3IZ1qo2qz_3 zd~<3hK9AvyUlZtA#PTeGCEvvc{Xn)T;ppmQBg{gcGXNrf?f8EjmGirrE15=}P6AC-pNBI!t_?7_9lSmkOhC~I_m|+l8E&k>&mfqSKngah!w6rHjpWxR=;n!@bC?SPR=*!^tY=bMz=7}D*GX7Em7{&E#NkLTx! z;I{elh^K94bd^0dj@bqW$kNlSVUD7|n9afuLGe>=J1Yrtb z(;h)NLa?R-dG^9hLEf5oLq=IK2mJs(0kWci zdaYez>0&QDN}Pl}WigCnx}Mcl^=Wn6e zo>^rj@Xj&kblUw-O0EkOsbq2Nr1Vo>nHbc4GZXl_+k`tF-5+7MtXP-kWk|LiP{G1P znfN?&ky?2wp-)Z8Uvg0416cgx%91@)0+%c(E+war7Zz3f@C823%|Ouzw~8;PThj$MOA}(A-7)BAnv+pA z^QIL{@2tGW>Uk*mo?l-Nx5v~JupQ~}_4DuF?Z=$Z^YfU@FEQLel!z}%=43h^+LcTVxo)55>HVRur zzsVLrbZP7;QuVPFuL}ZoNS0yp?ksQQvTd`hU*$I=8jpC~v_7CJ5E2+EHa;TStYQ*A zi6%j99oBa$ma2-?PzTJL`VBC3H?SdzA({VnMHliiitAtU5Wkdt3BsO#RA988NsH#B zJLp65PWQ)X9KhzG)aWB!VT0d$ym#04GZR7`EG2{=@pos5Nr#Z<78#p-SPflNXY!YElI1r+vJC``g{ z?YRCD+S=~@Fy7sgG}2a7*w}XcDR0IP3U$GbNjnUH=aAJ|VKN8Wq$IoX6pHqIfI{HP zLRwC1J{Yi2zls>_zrZKxkMwaeW zo_o^pRnghq*vSYgu7N*{GQAMYhi6Xv0XKMV<3iD#`W#RsvTmoYWB}-jJAukXeCv;L zb0tm|Ih!h_<=gsf$ZuX66qn_T+H~Q54oc(tBosJ58P@-{e%$}RJ3OvRXmXnoU`ohm zS5RWv&+f1z)>AgTZ6>Vvs!s6Np;}-5(8f=G;C5M}E!Oij<3x2ZcTwi=t&jj33j}P@ z5|y1=!ak81%>1miVLLo0I^U^+$^m6ND0Fk#R%gA@bi{5=@;bbvE8#}Yja8xj<-AmP zz_s%Mlv_%8k|(fNC?D2ix&1jxsbV=4lyb|taKkZlvF1YAp6I~SfQG?oUcu{FfFTCZ zA4{0}g3&Dm00>&o&xR{2t2;ML1IVLjwrZ&`}PYkOUvHVHzxe;4uvZ zQZ@;S|7lDUG4Ilgk3MPZW4yLZN3?aAw^C~LF^6)$NFv^^=jT_hC0Rf3-3xwk^Ot_& zs(D6Dn-27PFlv*krx5e?ade^}7S`m_0bKri@mTy=O-=DEF4QIMmk>r};W;c4C(rPw z5_EL(98q6iZcU&+DkhD6xK+-H7-QW!R)(|y7Ix(Osx<(4tPu`Q9Ku<+arMa6{bTGh0Bh+}6;Nb@ zxcpf$MwkWR#?klPG2)MT0Dl-dFO-?`upL~0r~*G%LImgB z6NyaMOxaoyK2CR zXi9IS8OhIky3qN!hmi_aprTSe*ndD6884M2m?G75J&oP)W=^1gL<$kq(xB~jxAW)s za^i!u9qgG1uBViZ-PfDla!pvkCMcD9KaMv+eglocxU ze(6`q{i_pHi*cTK1t%WQ5U1?FFb?5iTfs8`08(CiEo0cIe0NEiAIgL1yjG@g+nicY z@@_a@0C0qOf1#~WF`T4t*5@M29>8pYODl+z$}rFn{mZm`RBmhl7FjHlKyHo1Q2MjJ zBAm+r>^!kC$L>;9O{_6i`Ru(Q&&n*E=|ia!Si(3zsnQu5soGIVXGO_yLJ?;!%xh7| z+D6}Ge_wm2t(Lf@Xs0ORC5;i}74|O~1?i#)^jAqfntd~l=l=jqZGd~mc7_+?{z-2s z`UDr8DV=5?)r3h`S>0bQl#*=hh~O;q)u{}&VQODTaP$@!nDy`LTE1%Bh1W{u3nK;7(;}-R()kHoeOdS zYmM&-zjqcBW+Dz!hdU^MP{4mP5KRw+L$!jy9*{j#@+2~h0J%~+-!1sL9Ei8;>pZx? z?4}GK%&v|uD;&dUo$oQbbZ|y)9UgRoxEh5dGcD=xv4iYV>~wUBFkT^GE2ADs&PIRZ z%f4h`mvReK#lTvD3lsj5|M)Ot*JKimwc(0LAs|V=hgmP5kK?ml-EMz}_1kseP~7v= zEq)1e)(5Pf_mWvjX538kT#2ghn=@$!0g_@AukJ5T0qND>YC-LcI2Oil+UK>`ol9QAsgWC0(54x*{nSQM42D7n71-le+SPm5Idx8kSvWy3!q8zqpI>jHLS2^UTe&m>^H>c zk*UUHc4fr;RWn)hb%Y;0e)z9s(46W5z;`SrG{GI18O8>e-!fb|1@TyNJLd}NkkKHl zjGFrq10?$n#c3M11!?r%V#qk!!6Na2fRVP1&2e@Y?oE2Tgaqy~E(9~0^YW(i* z(aJEAE{z`=&k(=(xbAV?<8idka?|3bc1K|!uu@7J)?D)bXi$}A6>Fr;^_U8;S`gfe z?R3Vgnt0{RgD7i>pNdw_p9v`<6XIx(vdRUW@Shk z|MP{_`komMWDSNg2L5tnMogwf9}EbrnWkh`&aKVL}cY;XoRU zOqLx`Z_&~CP>vV7w;|*!1}4{4ZmaosrT~R7y7_<(C^A%FpdTX&1~&*7i0IVG$GB#Y@{%z`JS~JW4^DO1!?kjzc1zdK`>XR~_&}lL2^<;+png+dbwv9gz7kjmXG6a{SmRUUTN7cx3d! z&XtwlsSFY{s}zY*(vvwGIOjjfI=w~w%aW_@Qren&q{%Cic}t+gLk0f6{;*(Q+kC|M ztJHtDqR*fX*UzhZ%L*@_CvJtr0jHu*ueOZx>cRAFM#imshE_|f99Vz@(_=#G1yo)v zm@HCHEe@p?$sjZLfz*V9>ccEp*0diwb_0SJiCbn($qj%^ErWLaC7$tQCf3-##gRiX z)0lJFNL#q)Vs`(c=48V>e?fJO3!QVu1?0J?0q;}qwvobY;qz!>otH6t1d>jKc)mE>%1!ZpwZgh7lK2_%yHjV$t)Uc=aaM_0zD zh$>xoperxw8i5LMVO*;L(^6=#(ar;%{KXg!1l$LmQ#p&}B+HjX zqc8vwfEW1+G-Q%!iVrFRcxy!4CbMMXe4i_3W1XpSmNMcl7)IXzn)rEmjj@ex#PBD_ z5W=9yez=#w;U>qupUJ-Wufx^c!j-bJZ4e&}pBFPN6mYqYs*KQ(xWFugzy(W#$;^Bf z`(V%Xg+J`fDwiJHA`*{=#>fyEVCg+&i&f__W}$an1Tlo*yjWfjx+c3_SHy_wbmbwRitQ?4t-}Ma@4H1 zs>9kahm~$o0bT4$ugj>MBZmhEBihfv#v_FY5HO!QWr`Sa<`M(OWAr@FYxEdvtlWXZ z7xFhkfI|t`aCr>|3g@jl{JMVq77>Xmp&{@j)fC5ZF*eTF5uPSzPYF;SVSU9iHPgB8 z%LX|s|MD0-qw@AR6bj2+wvtn0en1NYHz1(u@pful3?a8Rj2oTL=OoS0@@+@LSnerS ztigXC!{tGT9{r!F%uWp2_fyw~bDCI8_-pa?O^9g@vAL)i z4Lg7tY_l8%30-UBXvhAqkRH58sW(z$(n7hmfeC>-wz5P?NFoumwGv=G3#c3c-pq%N zIar0hQG2av=f@uMTjerjLiX2+D#AjC9smRove|lg(o50Ejl5y$wXC>K5>R3bjxvU4 zoR=rDloze{j=i9-UDi=v9nLJL;W$KsPaM`^I7QY!W?`Z-*wi4+cZTXRED%yoVkg_%>~Av4`!&DlF!P@d2nuLr4^^m4#RkGi5RdBxl%?u5pL=FQ=s zk+QfKiE#&`_KwQQ?WCFJ7YE$d2%hEU zz^T;v6AOSTwBZ5Hv_$*>%L@Ve2l_;ac-`03_q)iV*`zJ8a%Pc8MB_YWQ=U_qUQ`J| z;q13+LoEe=pm8}U!v;byxW$_4cLBZagG^X*B=qaWG3=WfTN+Jo?@$R`oyPr*G>aZ+ z_qv|CA?k_}YTfn_HAf`8!*g`tb?-H#lh<82h@Qy?Ky>CYxV%usHYSVt`$XOp-y7}M zQ3eSBFWLqN-9sn~SXP;*Fh-EZWY8;zhl`3|jl6fV$BSV{-b76I5s`zTa%UU9b0RYP zPL0?8XKOME=E`1L%WYSAVrG4p@Aq8{X(kT?YE^p*MUsm+v6G^mlPb0VU13Dh=+&SH zmyiDMM{xN=M%wmi|C5JxTw^z)Jca^+kCPS{rsW>pGbn~`MSEB?hysDbU?P}%J@|JT zg>^bGIYkUlWD-=!q!iFAEhsgh3Z#NeSTMq=bZGiZZV{1PP{wsI0=W_IP;BC42a{{+ zRr4H~CY|_9xuS0U%l=94sWXEAe!bn&B7;FvS2a@}x0n8x&wu`@qo3~g$Npsk+2!H5 z2{Ig>Xb)SLu90Ab_tUlT;4TO%bz-r%>qaO2R*mOv=`c&u$D2{`pi+f1MNbQ3XB-GH7nh0Ep8BTw<2*zA8dW?~3q$vB619uo~i7$X3%}w!p z2o~#<6B4IMYy8Xqi$nL$F zmScwrCbr)sVbWE`%n2}L0owDicb{kBNXKXiMf2}y36teSj9h%R5JXNk5yAtX2xvul z>>nB-F_PE)G($2 zG&GJkF~nQ;pqA(0!*yneY|p>mVE^2m@WCjXqC@!sO{~|LIrx!5ZPbpWi;PPH>KYuE zXIz#@Hj>EYKe~_8Z%hn3OiAHTMYOoQ&TJ(k&!{;Jx915iDhb|$g3dO{aKv%>kO0AR z$npwThI!-Uz-1VdUM$)eDxy+gyqav7-SSMRAZaUeM9D>M9Cja78^3B%=7k-bI2KFd zSTt3Ny|Ok2!6S;9mZpTER=mJI${dB*L=!ezpE}B18gjYB2MkJC0EbFXet%@^egv;* zA2A45VQ=MqFrEzE4-pLnMkxVvv(I164YTncdnWr7=w)isOt4{YA93A+z0D43s_2kQ2~z{lPda)bbS`>o3d|LMyxWAu|>paFWA(&42oKj!7VUEUAB^!i9*wV|~8 zg&(3@gNJ1e4`kQV9V3Suiq71T=&eT7!O9%{%{9<-fk_6SpU31XiK7%!`1F)YTIo)u zkWN%k#gVLj;~@JSkt7DGm*uO-Rmf`7*|~YGT|!NIksBYY1zoQ_^5i?|y=@tw@ zPd3XQterBF?UViA_Y!@ZP8M)7%JqExyh+N5a$cVY8cAe1&=!~j_WOT!rV?Yz* zEDzj9mGY1b?;b0=4xtJ5?#WdS zlEWPe*C7Dm&K~+=R9{_>Ba1okDVU%Lrm~trBgpfyU%>wKY+Do~H|Msc-HoZoC9B#D|5WrZ=yd=@j zkd%;4Ms+t{=Ygzo>zgcSDwaRSs=)j(gG)}Ii$lc^L-KsnPS@yLx6t6a!eC}(KRJqF z8-_*=JA5IswN%Z_{ikbU+*;8a+aK40)m!R~Y{)4?)Dkzuoou{Ui@Eb*ZiK!CmUlMte; z&wH0vmKAf)HrJwrO<5MRI$X}|$vz7`2^M=@jzBgD8X}qn>AW7n;HbXk4gfotzZI1M zOS%9wS)dpYC5(Dwb%C~`MfN0^t=j*xd)o2Po)8enlj<<|u&Ew7$+BUJQr%(T3^69*%bKdaY2ODY`ox` zI1eh@orf!FF#;0XOVqpi{F(rV2^iT@P)dCE+1*fg{4)$3#kvp?@h4_1xN~0H-U@SY zd1yI$qI&dsD;FLfmgCar-M}oA5HHB2z zbASceo|IR>Hk6w!FVcKh?5hnc%dFhMHEbY3H+^Wi=Qi=*R*|SzOf}5YJBcd#aY`~* zxIF1QqXd46U48`EQkLFH4A-pn2Ri$30dxoi1Ox>Wtgl@!b=-RsFrZtFBw5JE_`m67 zT~U%4C*eJ;z^8!dk^3;9a8YeraIC;dN9x^*JB(B-p_&B{OgJOxPn#;gd!1H4PX~rH z*ZMf>96*zBk6Z%!7%OmI-98W9gl3u_yQe2D1Y`0^^rHhb zM^gGh>CwY?&z#+ych+c2}5_(n!5qk$a@E|NeY6}@lQ&D)fk}IfJfRfQU^(z*Ob)qXm;3I5h@XhJV)Bik0E|gjB2+mI+vQ49X|Lo6 z;*v!)?-#lvx>P15vJm&_McqbLnYAkyDsKri8UsJX!z%COS#$v^TvanTbMwc|jnaN- zWd#T~#I@>>KWO3z5%ribND9fRHCfZ*HY6@^a#{>*R7)`07eJQ3KAyMa8clcvob%r* zKd^%sOB-%u9HnN*8(N4c#^r+i{!FxL&4mt&p&SH=N6}cI2AI(@!|OUNZ?AgF*@!Sjn|8<)<_~Zg-NXCI$(wK>GbCipqv6w)d`mD( zI!kXxxGJD<_!B|NA$3)^954$=RNOq+hEc`}NeK8JhZRoe9`Ff$UGVXZez@dT*>d)@Eh75(xQN1fV)f+JxZZKv2StJeV)w@uRVQw~ z*@3ab?sasZ1V#tloUk849qd&#X{(($b7-;=`{KO9{aU_Zj_A@%sXwb!Ha7p*xfly! z*lDhNw3Gzwq!phLH+TV;2_|409JSDqx2IPMvzda-7@~$`#d3G~nxt+%9rS^XZ2&@3 zCl*UJgfY21@aVW@0a5{H11DJe^(dG%A-p`Rur71a|0U6N7X2f}S$!zMj|ZE^Bo&1i z#uK!BRCcMU zy*B+|OX_tjNdZ3Gn4G;^PD%H<8%z|9id=;+lrmm+w@oW;Yi+{H(~%l z|BM%MD`}&L@&tt$2h9-rk4AHwsuC*8@e17^GR9`lZ}tODHs4AL&q$(g6qbHnFZKRx zmLx=ui8IVsSv(HJxx~|(VN|h?A68c4eJSO;ZW_~Iy>myM$|{?ZGZ;@L~OfXet4S#ouT89GhL+w`}<%1AonWTHK{#itjNh@=pQg}DH!h?eRJvb zPOL8~j#c|pK47u?jq=RaNEfs}#tt*$oUzG~?6v6aO&DPB;x9%8f%D0gmmrZ5)g3sc z>M}SVl_|z#<~#^!0RRqyWP6^6VIMwf4y7!ZN`#;Q6TDC;(qpLVq9n`(^+n|+$R{Rp zt9g>CC@9GngiHoiL*gE-w3-g+^{NT#Le_J(nHdns42p}OT$zsmt&~kYg<8@?{3kc0 zFLga&mSKstcDbhRb$5B3%maQPX*Q8UUyUi?dJd345l@Z~?`+1*$qhBi3a{s%Jj0Q$ z=~PtU`>T$C9}$8ueaRnTp2#hjIyj)I+XM+be@FU?t2Q^2Rs6HN>4VroQ1Qk z$(B-(ihE!m4DNUq99c_AA3)G7K2A?tM>LC7gKMI%9Site&mdpUFL_RfH|!(|jER`s z-x1i!1-^Wqhf;>fn$7J@3FJTg5E)8w1q$&cwRv)%V20}AY!6@Z&GLT!jO`ZyoNy_c z@Fv-J1W5`N9L*Ysf~*{h-I2%t#17CPgMooQ2th3g3iuY+xubR*Q_z3(B>g}oiX7f# z=l<$2CiekWi14mnO*}M>d7ev z2v0$2%;AM==uUA1C2@JUKDW>ygfu2V30sm|@u=F1akH0`!qJn6^m+dGH$WF!{3WW* zDPks^q79~_<`AS6c23`DbaKLOTyR;TY)yV`n?PAxk9Z>@%83wp(&g0h)U9Fz+5z26 z`6C5;B{CP9?G!$6q^5xtP-UcmN`H;~yj=f?p{$82+7)~bL?ej=%{|tL^YCHzRVXB= z6OuOP&S>fF<5n>eo8aWC$ni*JA&d=hkWR4O)B%7x$DH0x=DpmMyAKc%%O5eI;Eup^ zMo|^w5N~e?$T#!R-L+;S#qoT2t%q%}Oi<+17bg9HS}=s)(iVZ-CNct?q%BnYS7U;7 zYb{_rbudKDZXggPB=f^SOksFkJsVNggC!J5GweO(SIfI?$4@zhr*R^H!NJ^srZ0jj z`%guc6jM_mWPS~Nc{VEZmyv@~XXzw0reeBqVpfT3?9!efoyz|g$G`g;tTdfQ&Y{4R zPSc_%tCFGOp|41c(u-LBfDO-Mz51u&C3s_oj|Sod>$+0w7{|zfn0^)@zQ3y8H7C13 z3y*X64ykwQRu|zVj9;lTx@J9pYGQqyKjxz&GP!9`6Ma!-Pfp=Mc?W+ffkE~1c(;vn z<%%<3I%4ZXfG30jkVO~mFuxa>oolf4-rwMlt?wFl;0?4K!uLv#?6vn$` z4y)4u;0d8~Go`vSV3d7`RA0ud%iFb2Ho(|I3ITqp@stUb4|}+{COew7Z@shYkd-0Y zfB(X}@>IZJ*OWQD zHKMTw>BR@Pl@d(3VwPcC2#QE=Z(Q^x>Vy}Ll~SNXz7OTHX3ahy?+1bZW^q%RgtY@! zm1-P8`cyL~H1IgAys(!u4OtDBqvR+87rfg;_G>reyIqpU)_fuu(4-ky*!W=57O|pa zz$*bwF9Y<1I@Zn0dsjBWXA7%_n>5z=0-IJu$ML`yazzbI)Pdp!Yk)?|73~SlS2N?( z@mT;dY#two2~ey9=KhEC^0#0^dY(d7suPZsXSnz2NI3WHDiR*FyTq_`;}IPhJ`iCG zNE*w35#7WCBLx)zM^<@ciZB{NhPTw0;4Fyplw#c~0z*aw@!}2If;@;05g-!PIDotX z6SbJWQ9@|VwoFIns;a4`hLl0Vh+0#(78(sA2ox1$GzWuao$G=-uj!%0$CY8jV46R2 zKHah*SG;|G`2#qh@N66D`rTb69oEE01)!E}lD*k)frabCG|Ag~m_x7zO{=uK`fmT^ zGXSIUO>}_kC3m5T-7;PK_5NxoyP zypXT6;k;w#m^XJTfyaaK7#GQ?@mI>r!XA>-;1jxui2)R4^qR=D!*DlLAEkeqg2Yd5 z7=4c~WC7h~?7-PL-c*ZD-2qw1GLef(#!b$n!xpZGrU|7uhRpPFLm~!))9E zFwkES5s4TF2eu;{cf?L|=0Z3Gh`?f0C}B>dRB)q(73?g6=CvxMHH7l}2gvFbpvGh- zr77UmJ>u$;?}UbYeW~Q$=T`9POn0^*EG!@_K*(Ypom0rmEJxA0IXD3Ca`X5!&H(+; zxkIkp{@uA7>lu{;)PcAt!Sb{7;r37W*zNuMJGf6&mUnynJv6X#r7npJ@L>(fJTC+} zVu36XEljy9quKKsLOcS9{^WFh8coG<9Je3eNIE?AnKUhFR>V>Gii2OTx?m_By*kb* z60%t^F?h~hIEG?2GXo|BA3g&~&0SnnCWeyO+tWsF;T4XZfNk}10lPfLE7_beu)J>D z;V%b{1w_I!fuz2&2X01QAfX`6U^P&*f2&;*Vc9P-898k9qg@4S8aU*f((MUu<>zrh zc6l=8d+Vbn+C0km5&wuL2)|Hn_kLJ%w~|RkeGXev20v_XNXt3)Jz=5bSTa>2N13(C=+QwOV2x9+zz z_azpNlNtugRQh_@&V6+xr2ITnNS^=PhN1tg%X9w7jQE(%mBcMAy~J&I_&Cy>BEk|Z zw>w;Dx%7lpuz=me=p#8MBa7jDHltyb6jTP@?Qyu%m6NcX90#Et&MH=}T?4bc$g`UE2Ryc(m3;f)5B zKVpNj4aeMRA(*$S_Y&HyL(BAp4RETVXOxQMV?=NSo8N=t>LsO@bPsTr)T`ys_dbuti$-dWY z<&&38?Y3P}fGjY3%BJ$&rh>wz@Y`wsFu?r!`uF?R9KL^${-$eHu$enyllA-c^cb3) zuHfkA*!=VEC~|B?Zq5l80X`Bh0R;j?T?W9(QtiTcYbX7<*#BNk%l?M~G5&ae_`Pj0 zCvZ?>Pe;Ed(9;>!iR0r}W3r(vz=0PaoPD2{S0jmsqZ>cGU9-r3D@0;C&;Dg_Dij*wB~(|VP5ELOZ3(?Jb@{1||iC$h7Vf-WZryc3?Y z!pm8X1mM|x@9&Z#Q!Yli33K!HT9Y=46lEfAz>s=#i8V>$=v^a+kiZV2NMVior2&d0 zwe0cpOEV6#OA7rVGtqs*1nf0nSmF-H*Z$Ki5bX|zFG&1d6X-@FsXo~iL+3u1dkvh3 zqONJKRaEX;)>oF!>VW+2CAd5g?`ZfZk*Tu`DHPQ(L{fVrC)K^#*V93@+NP4yH$m0= z$9=rG<@|8Pyl7$jT{lw;pq3Zuju1_#K=m1}AV4@sG`VI(lUQ5doVK>R%P#VS$W9;N zb!_)jsK1}QPZ{v&XmeVaISvnM5fm=(zJI-j|AP$briIEUQ1tBP4 zBp-z9*VZFXkE)#@1H<}`{ueqFPm~wzVOKEG4 zuerdgV0;OBIC^=^12?4s-qK6)LULz4-yT3Dm&!2*HLIRWt08BpYxPAmFYbVtKKa-^ zayj99l}GgBuAUD!$;cfb#1f9f;orwLnh9>_%@Nv}EU$uObVL_Ty}&DT#&Q3YyKLDp z5Q(dEdNxwjx9yZRXgftQb1#VwyT+osXpU}2*AP-Ij{vdAV}_Z~9SKxHN%A4i58J={ zV&_^9F-GV>0lB;sp-I1fUfo}A&ur9+$XtfhWK!r@>ZDQ5OO{u%vWQ@l$$$(||6st7 z`%&Hs9#VEaPi{K!TXQt7T#%7pRewZEC7wvrxRqm!kXljRe&ESOQ_QNL84u`VM}pO- zD*11eQv7dZ1mh{UA1iy|ICX@!DNaB<=MK6DNR*;2f~Kv(${qLm^^mu6W7AX}8%ekwm{O*eA=DkqIGAR{W>L8@Uv$Wk(ZS*^09MHJOp%oFz=F=zx=xe#NWh$f~Fn5Cw=hcFY`SwSUL2g)g~fr$km&N&F2#JY3M zGJK=DB3Bjei{EgTun9;nzMacb4=AGx0s39ziRR0bP*yDPHKHFc1Iq;uW07QxsJ`E` zp*sc`x`%>wAd|BI^a5Mi@$i7b;CA7HckEJ!zWR@$XC;^HfqEQtnc(^nOoDGfWSk}y z#^+MHlVG7fZ)7XuZQX<+D6reVhRstHfR*+O8vWC?W^pN=(hyifIVjw2b>@o@2estA zdjlZw@Bx6Y6FsWdH;bp7Jf^@r=>XMQepU~@a4idk4pf;R0m#$)7xnM-cEVDHV4ilbk+_?!yFtY?pj;{ zTP#`Ks0Jkcj-?IO)F9@#r0oBwx6$e>$)J`E2v7gA$L#FG<~HgFk4!zQXKb`3bD1wB6#j!X(n5cRm@GcPcAYH z0r*;suDk_3{Z z{GkWQLB@vq`8Ndy95K)3y?O8A8gfxQay{iEqn$;S0EV(*(&l6JSp;t+`2`73pOHP2 z7-0+?u`K6Am@DtkYPSZ*`D|+^iMKbuuw@qI?m*#<_)-$a=lPlLl3zoXFNZ%osY28T zeY33JVzkSCL^iA|BV|o#+^tucs7#Cf3GS_+eOrhXN#l!+dQ`tubT| zTaJ{}oDqWWcPt*HK0EV0u09M{Cy88^N1J+D8?)Jy&`D*+HM$A7qk}!WK2B#xd%Z6~;td10ba) zDZ6zG#=xNVedr9^Z(mO;(vQkRAWH#{)*BV7hV-zBPz-Hb0Wx3KdB6gH9!~hIbR(@m z;#5I4uIwz+1GxDE%PH+O@)Gllud~nZpy)zvZXV2FwbsuR6wJI)II;;F8IJQj8Em@$ z+$WQ`D+^IAEzsl4j`U1d1QK~;2ep{k`uck&e$JQ<1;Jc4Z+)0iAAkbt(snI6GsC8J z1zqZvx^ItUQEAn|!ScQ4aUfEhxA z;Q!a$&+7WNO2d_|L!#bIWuDy_HHu@BN2$o*Ht2SK>#S`IK+v+vhF^iLRbXHbow|}< z!*&J=WjgkHT#inTcPpw?#5`W7R1ilE1a=%orZ%9^GBo! z6lMmECFBqtaJH2i3QEBASv-&+tI&hsxf9Pt3#_el6jL z{R7AA^Z9t$NMyMf;=nd*r>J)8e?sKqaJi8tQ;s~YpXY9Rwe^tK#)gPWx=ZjvusY^% zrz?f*y{ev!WuiRFr_UtPIaP z)_4XSe%eOh!L({dSY>*)6F*-1SG<2e8?ON^nvnr%3C0du92hBCvH+kA1gLS;oziYW zZfB*DEbW9&GW0Wwz%?6gV;-Ot6HwK-Q3BH@7MFyQrgG+v40GVL9+7mor5PF@}yM|B$3vdeNL10>tP0z zL6gRlIV=E$2U={em?RtP=~XQ;|Fs@x33r|`Mj9K0k1M*=Y$g_K=;alWCC`=9d)HK@ zoD)MJC^RP;$9F(z|3a37^t-gwZ4zj}IguVnN-jA+K5n-Mmt&wZbFcj^g_%koZMXo0 zfmUbF0>;X?c1kCkhVsE?jHt+X7oA*DvLbH9U@8^MVzBILdQM!I5RI5fAcCL38o{!6 zd3CJpoijaf3#JVmm#>v$Hf6i9BY(T04Up!hpRvm~J11`nJ?4g(HE_M_E;Mf7erXl# zQRm^~aT_o1Hxs4s!qB8GW$Kh}EPDU(l>8ukXKbT)Xg%TciI*~)`falfC-}1>K-`_B z0Sbg@d2B?J52PnFMk2G+4D=cF#A1*8B}IszMZ7Xr14*hOI6Mp~Qo&Bm^NkE*_k5~S z$oXoT#HVO|Z)a=8D?LO1It~y@o>$da++%ITRf&W!U?q=^UY1ya&ZYOn!3Ekcvvd$a zfTd5w20)f#T162>Nb+hun_gJ;h@yH{u>Z>Gn9Zr!w4}5~NuU=&&@ctHiK{Dh5Zo4e zO-Qe6GG<&^)=&V*vkzz|MQ|gC7^08_GcW*52ayTpq&@^;ht&RSHd2?-=>^20*xdqC z8uu5Y`ktTn6_M8j`R(;}OGBZ72bhu&1|QMr9R7msI| zqLsF)Jf9l~v);d5WToAEJt^7>4i_YYTkONY;|rqS12&x^jfV-?aK;>sLcn*uzakzV zujfne;MWLJkb?qzs0MyfibBX>J6;t&3Fxg$%fGT?!ZJTufZ^oeVGp{FKqB|DARvW8 z5!Aht$6z_U4-=D6gF!wrNdCXfz-XHpW!68=&J^{U0zi)KLkYF2rVWjb76R;ie++yq z`iBOT?6`jiKm?lBOB@!toyS*7a!YK~#l4mrvam8kAc5G-fX_{gBLF40P>X?IlKLpd zV!hXMBk|6SVx%sBsmB!^Jq@q4xtw%O%9*8TC2*Mu=jwZV(Q!=+0?)v0%11^0)}d}dEJ{pc)iK) zj%UEZ{We(kN*l31KJ61AgmB&Q^heTm^KjyrAg1onvtN|x%K#FBa;d(}()VJAP3@J+U>3!q_Y-Q8pun<&7Ck*MJ zrkkI_Wwmy7>ow_c%K%>vzt~(na6zZEG7`4oFDSN4lFac7?eYTr=zKq}t)ihILJ5IE zZvT*g%3GoB6TI4JG7Ps7zgT2nLWL+?1qu2={irXgeX0Pg5I|B&U}h;MTS7`M>@C8H zLV>pyMb7@hzf&O~DFva(q1H7#Nih?u&=gVwvTP57aPcxMF+k#@tXcPgK^n;=vN5j`? z$uI`kJLdi{A3;aA`FOffBkqpR1Kd+&1`B-HS4rCTyXDiIklT%v?s{?`h>gN1auqSo zLfROooFZR|>$(Fx_#Blj&tmnwew3#uoEDHTkpgBoKEm6W3TpN3VU7aZ{}f6oVyW`& z46;vYyAcAMJ@;P#aCxEffkuM6-DM^HI64OtI)q(Z$Uy+e2SNJu34RjcEY^0WgW3&T z!<~M4ERdX}kSP9YixiD&ICWxm!WNeUlap&zuD0DR8Y2$(p2WMd^I9FmgTbasB69*>7r^@@7;`|Dnw!k&^_ zNb7+sH4I!g=)}u4UdnNqVsX2!-oy%q#)2Q)+_GOHN!s2#bL$PJd)ZK;S(%1UIHZ1M zE&)Zzss0*M)V%st=>Z2JtuuX~=wFziHij7=yP3(VXu)%xD=wXjN$Vs{xPP!of*1E3 z67;H^tCu(Vjl(>;x}G){Y=VGC$@Q0|`ISw6fdCu`wU1}dcl$p)ZZF`jcrT8RJd1Wk zwcS3RAb$cVNw2Ob|+UjkT7+1x;aGzkMF>|#U}A)XO=;5{t7w^{gcW($Su$KmigJoU znpSSsp!r3Rl%$W-iSZytB>&0DmlvMSghOUy(aAk|;(JH_rU_EikYOIrzk8!ZF6fbz zEI#AvO4mpRWK?sAkmomgU!`2#u<8%Vvp6W-t&Fv#g%ruKV@?EXfz?R5NcgnxU7aDmWv7bi{eFSmEcVQj*iR39R5O|Kj&YQ#~O6R1}AF zmH(*_R4?OID!wlOe{qSO6BtStFf%TY zXUOC-(Ft=fU{IQ9>{kp7N42A*8eobm;jcB!VgkNOFhoaaz@d$uz+x8gnspOh17|K{Z7iANd7hu8kq1+g;1@G>=(d zbX*=&0-e^Ux7~02w>;u!a?*%iB#MU};km8joS9hHY)J2%gCT!`8uaw9FBeE;-wYq+ zeCUo%)x%_%&CtCsz@w*;ZAZgEn{z9HF|(!yBI@_~-K?Ao-vEI7HfLDzo`LglWEB|Q zEu{KpLC5Xqax5s&CnzszcmlW^dJL*9JYXfv>fI%7a-;|reLO{go;7EJ0ak)aE}XYl zg;SE`H4vWtb&=d@xEy{z%n3t}j*jpf^kgOk9ms@OQL}v=-`p3DD9( zau(kv+hZjf7d{NH+?=Lk(F5#t5xt3iDuApw4hn=oHJ^(NSV>;2%B@eB?gSZ(h4tD1 ze~E20gHTWT--STvbAnre8*{ z0oHII*MKi3;<<00=34x~Y=mLQ_w!;E_Wt&?my8jUa1bi#S${pBx3ewY(#iY#^AL4@ z#^?2U_QPmS_9O8#s-#Z7zOu{tXiUWpb7yu7213gJBU7+|I@f@4W$+%1}3u*VqI()cI_3?q{3$c(+ki#xzVsVwsv*V*k)qNXBwv zuGhmGV!!NcCJf zg=+LV?qCcm3${9@ff?>Qk^p>X47>w>iz!qvG)KMWlX|hf5CE)9_1YBo>VT`&ee3MQ zmQVnvFDD|Bk<9i=;EQ>KA{Rg4c2qf?9#;2z>wwt6{f#Djz9hOIQB-lx<;tL^Ec_)%XI5tz#B{UA7VGzWs87a8duL-jz0yOtD& zC>LEtCkJ|4vTV-XSo_b(FET%&5zH}^A$W8|OABc`9)|kU4Na=xm*+U{T1}ZBF2juy zwQ;MxnV1%=mp4Zf)xIf#Q=Djjxiwl(Y?8MQ)MfN6glyntBqjN(`It+EEYDiby#afj zaTZ`8R8!~&^%zbfAs-@^s-{a_uMG{r%g^S@3nVJlo8A8LX)PK4530R!w- z6vNgdltrTQOS+_xpa~k4XZ5^%M6$xK zBQZQBoJya-q@lu;GI*_8Wgx=M?B95rY5_B7r>FEqmgSvrp>cXHzTQIua2Q;=qdg%q zyM1#MHXy{l)@ zhP)ov+wuIqGk~An{dKd`C`I7hpmEA8G~aY&z`dDNzbEBILkn)E9N%Pt$T_YMIV1s) zc&JNW9^KddLsuLM0dAGc%`~U!Pgl9zw2s1hAY*7T{N;sH|ENnz5KX_JU(^-9qA!u= zgsu0kQA4A=Wx5n&vTai4lz&y2Lri8A*^GOqzRrHZ);4M##y}89?9^%U~`Bqp@d1(rOv=MOemzFdB8?paep2 zU;rGl=FCFk{$4r&k^J`M!q3MTXzlPT%;h)`SsPH3~oV+~TPCkb&} zv(1Kl$!>GD1QTG9SFMhZyIs88Ao&@bp>9j$xIrJirL<&zians67RBAxjKa}(fqsFK zJgz@l4en1NJuTx*ldXfH9{@RSs>^3j$x0DzppPr{_*m(ISlP>wp>GViT46Z6OS!A0 z(|L%^qaAy#rq<{pUa3JKY{=|-qf0){G9GD_}(FG=wst4&l`(X`d&P|)qNeW`f1Xyh}sXe{=Gn8HG;HRl$4lT#g*If(XK@ez{teM>t!$lg&zJGs=yYJ8lO+P$yvM#F=YR{ z#qgaKc|@63zX8T4y1?zlC<8Hn8#@Fm{`{(7r%shF&e!@*hy(^yp~QUoiZJ{(ss(gt8%#MrW~joW33YclS~ImM5!FXWlG5< zkI+}Sfcmj!WE@e?+U10EGyxG6u@sAAIp>(y{h(7Sm9JoBK7;bO^uvWmQ;G8CH}fxl zWw=BbWVD0kf{`Gh;9m{5$|u^qy<9?Y7gm1B&kL|5Q>>CZ=W)2C!8-6kvCpbPO^*E0 ze2#$lu^Wp4aR1`I#k41;CPMPfuKGYyAq)I=-da$6!InKO3j(5C?Q&p;mwGlr%;><+ zul`w``g{_>5|66nKzEIB!=n>)e{BDW#+Bva05p=*-AtyCo%-MB)lfMU$}XNJ``n%K<6=3J<56+(-`vt@Dim$o$YIrbRrFtk*61 zvM@tL0}BS5+y<;sE{+9Aa+v6_qZALs0GyD`Ake<6prVUkqt{szet0m}-NR)m-`h}(?cfi}MpU2deb zgMo1MtYkQCuAg7xFnkv1>8k5<;*#|N^?N|f7EP3ev8E_olwYn@-OUBaIsESrWFp zJ^2;70ar)uK}jA!pkLPmu(kH6X(b%nXl)4@C#)1KX|)ee`ADiE=$LHXKtTEyKIu*Z z6|q2gy4YgDG2d!mbLbX=-I`WXLLub_X7y1tL4sdz?7f;Q8p{25otjq$FiM5xuJmLA z2-3s_bU=KoC}gV^s9VJrG_{}Gx)bd#{!jhOUDg}{YgV%NHXQDZ1|*$wM>WK8bwV>p zV)(ImgWRxDLJm;&>73KQe`BnZc3;BiIRR}Tj<1tybj9Z|Jh-e5rbdDT5%2sWbeRe897{Zt7 zaFV}wjU4;mUj(y7#I(n7_T|9Um}5ag2)NIRr<7(4$*2}DgR2{jR5^A8QUL1kjhLPu0)Ib=X@t; zY3spkgv0HAg0%@)LUMN3y`F(0j=+6?`|aZa{S_gP(89;D0BJ;mbT<~4osQf{-}_~R8#t~3ZJdCgwAEB!+OjyO;FGwagb+W@ zcyRqrbx?&n-XHBLKAFQ;ZmH&E3M$SC^-!f?{uQ;#Izj>G11{D;uW8TgWjK78MWTa%5=y)MR%2On0hy>$7J`Mzk0$PeUm|`1fP1*czH^Z-^>$H1ip>HI47WTgOwfQr<;Gme08iTy5s`Z(77@6PfjL`o zVSGQ|JfG8mSGG@rRQ#wM0gJ{T@U4Pyz+ohHRpA5dUvy)&pR2*i5IxN zUF|xeb>2j==v0b<`Q=nKT_~r=c`Fgn1w$X6H;yNM-0i}Yb zO+{#OCym+^*%_NFS%%j1H*r6C0TAzYI~nm|fO*u(7$N7&8X!>BqRLRNV_pCTK|j!w zFbxb5!|oLbi@2{^&1L2bIRd-suIr-fhYC6#u9+9Wp&+yH4+AUoA`roOZE&x@1mG>8 zmA7+x44(*Bp8k50{rUluD|?!0Uax(9oMz z#xK0iqsis7MExG$x953hRV2~jq53lU=lJ;GNc^n*9npE+;|KH@-p+PmH@0YJWZBMe zqRsVr*R*Otfwomc>$&?N-a<9QyW)CXevA_Aq)4)G5e~Wm!ro5)PHWSgz3U*LAiGR zIN?Vk=91IqhUP9}0px+gxiTfHQkD{r1Pgd~6fR!ALZub~>7JsyTU1dEt6r}m9TR9% zIfGqf0ZiNkpXKT!*?xg^52UUqMdKkul&fm!QJ&aOrDsRymKi zcKkb}LkDm_DGu&+#@_GG9oF|gKfd0twdTFs`u5sTzHyT4%Lip}`dlkX>+9LP4@AQ7 zpQ_o~DK`mIQQ)||y?#w6^thjg=kxM>-3`DVhUvSHCS55Qu^y6D|fU}-Y=zeQ-=P`L@w80 z&g2Hdf06?!oo@)*rc?{nFgR`IfGr+Id|RXz{^;QL%9Ivd%d^fYF`bP|X18ZN7ccyA z;KaeZEwV=qrqxDVow?NLK>XjsL=aHlP&tiZjrWBmhxov6G7^F|IXHo@9bxxEpWi>23XcJCPH7f_V^9 zyPHyFv>VTjUh*o}U64o5`{#PSkqp?7PNz&iq!g$WBTE2@naXb+)1jq*{~&EUinwlH zqe}w&PA2P8R999L;>-yQ*M8aU6uCh``%U?z&MGmHE>dDEo1E>_@kszVFn1Ptbs@Z;X0x6z&?5y&0fX=?4;kya|>j1?UKYw3xix!{Y-SBs>pEr~WYOMs!Y z2En?rK|sc@9=)tiu&WPMom)mJ7Afe+9BVwjTi**0F4OS%Di%cny zq$wD%imA>lK*#&b0(=_)7-cTDBxFGi4jNJ*0hTmy18vcK=RvDXMy258Yqyg@E~X+j zb*U?1-GrZzkX@parm^VMQqYy!z0vmb_lLRwkL2E{x6)soul82piH^q$vUnTTzbJNZ zpDzFT`P>!| zk)on$JujjtdJt64&g>FAr4}oFUh0Sg?1BUrQ#V?Zh)KHQAh(Z!Wo?PRQS68o-0)NE zMsHL&=BxD|`rPTw0(kh!psR%;M;wk;5u`4s2MLkc`;>hy(p?7XaM#<(m#AQepQPIc zW&W@)N%ALAyul2~Q#9GG)%x}GA*@}u_LaJvf2WP#o0R~R{`)_lWF9(T8y3@?5MH3h zRGhzj-t2nQE5LL%8mFgMw(^xok3ch|4&3t(^7y#>rX!GYupE9zlbWD0l6oPtm-GdK ziNNUxkv2Wl|#l;?y%ZK`#U<1bWySI^+ zOGMM%9fL>_&nU;6UvE|uKQ1zupWSt+(0*Pot^#|cRPB0(tS=zq%7){lTl>?~gVQ+j zxVLHC;lvtQ(1dGI9;*8(0&0+_;>|}doXq8c*(~~FG7rZSUWVBA@(S6kYL0QS0|zy!L3O7cnh<+ zB*j|QFi${gEvq`2agb!rOkPrxfE5knk>|Eafv5s%4lE3a3ohL^1(=Vh+-w8uGchP2 z&}Wc@&Tt&ye_vo$7+t#9Tm!x7e&>^sv0?$Te7!A)pc&`BrNgKx6>AkE*`mNM9)K7^ zWKq7v0M^vrXqFKarnL;vMeTl`XVp7`Hp0?1nhVch$>UfjU-P$=Z)63l0sr;2cm7(s zE37n9N#ii7H+8(m0K1DhdkWE@;PHNO-zLk~2Lu?<#^-g?y$1+99xo*DaXliKU*6tU zXE=Hl1|>mlD)MmMJ@_}JvPp9x{V49+-L2+e-U$n)*W##LG{uIgrBx*aw&`5rE5%Y@ zgZ9J^05Qte;UNRUTkvYye72k>^}+kj!D z5_zaalCj7#jDCx$48tEm0`gP?tVv$#m{1t*qrgKEH-$yjz@IougYBz?m%Iy{KT^%X>5Wb^wd`hy`DT9aY9mKIh;;uO}Kmj7&Ic08v znaBaZ2IgMLucQ9*^m%qMor(YhU_?=`g&WYBq&V$?b4$cI?v>h}kxS-e!D~$9>l<}J zA0T?~SA#?0cg!54;|YCW91%?Nj$(lP!2klk-5@f>2C{ll-omrmt6I39og;qgqq1h;3A^6gXvRfCSBv&k!U+_!Z74EP+anSFhDVq6ci?^ zK*u#}9iAKZsPDhg3!XZI!B8J8LPY+VLUZGL7U83m>^digp@%d>GEQ!v=akd3fK-+W zqA;;Db!a>RKkLrxaUP*}@-EJiT(AM4)n5&xVhKL_lcP$P!vuWm@L#hWJWmt;(rtE+ z6YeD77}CKwCW1ifSRKAK8(@anxR79+V;o54ZQtjS2Erp5OKW$&fj!Js{FC5IhT((G;>c zL76nP0k*?>2sDRk98~=ov&3PF>-w88Yc+E=IjSVCZZfCMdHZ+eoKUB*5}{P9qptIZ!DWRCifZ74>1*(X?DcDA%>@O>rY% zQx`)yh?$IRzotpx=fsMH?M$@=hWVlqK%uq(({%5JoC*-$kK+y}Ore1ebzA6T6d<=n zh0URyCaRYjOTyGx{XsI41>DXU!HuKYtX}%fno@JU8dTrh5JO+7F!zT?dV#aLg8+Pi zS0?x8>7mm6G`D82(a4S8-#r2<#P?19H3h&8<>mGa{b-~&xQ^?wc z6#ZfzGWDN!AIMM5H#5kb+zTy)N0&(pCF?Z?s>blpHe3(IC$OU#>PQVW~2%vUJAAQ`*{f54i+1nFPeQJpZu zh+>6-pRwz<7)pxY-#RQbm~ia8+Q1C(H+*yh&f=V=&fhAX!G67cA;CM0BJk#2;^_Kg zwJ?P{=u;=32S_I)u#mn~NatD=NdD20=)Q(qf1N zT9;+tI$s$xe_W}Q9z$h3mV+)hkThF^xw5QyLL+Y>Ng{4h&Q@UY;6yKYv%==yIvnWFShXetMq;-8UkZ1#VOP-*4z3AgqSYlAus{& ztF}-h?o@E+=t%_uRwqd$iP#&0&2&5QLX8Uouv8f0UraV8CJK&tN|6eh1QSXdVuDdu>7Zy#^bnerEa&~7i&Qje=Jt+^g@T|1pTFc|Jhs}IO8oji;wu+%hLVBpqUj8=zOc>oHD z5uj>FEI5w-0}}v4(y!mJ;y;U^0i!ZmzltEx@qeiWz)0R^%32sOe&LG5@rkH=T*+ z%koYPV8r2tkYK6l+_|au4`WFf7+RMr*9fQw(HnMEh4}J%np^4kYI-x08Z^`>W70|E z%=ijJI^>zJi(UoLMU&QsjSjtG+L$!J)i1Dv_q90kCoAaEk-z~gP0y>4f{1H|PjXMa zl|hC2W}RtCi;ApiN^eCdLXQerj|OFqM8?^RfW;}K&- zhk7ypUbKFUf`DQ|;7wX#ObF`3sAC6Y#~?b~b}Vc2R)bza$UU~=TbM=tk{P4WVEE;W~ z;(}LT4ZEj+fB&4W@;ter^!=bbiIUv!B*4m-ZSYp$lNxLJ$pmmys(OZ#svhV<+^f-$ zbsbI4zwwF+O84L0`L*?CwKAz)gEQ=tn`laixFsfd)(l;3QHx5Tx`r|x`k@>^P&W%s zL7N?N3VE#cY8O0jx+R7!dXp88l{uN!a*&q~5A<0%j}QNeWU{c`$Nz z_sifHw~cBGc{e18pX>OHfy;02Tq{Lf_g#(mv|}UWActo)Lul^3-#kCZ*ZroiLvGv7 z64eGvaGb1bOkAkP_q3!toq1=T8W^X|1-L8?IjbAvv(ahQ@}0B3gJvNk?jb}4JoyUt ziU7b=e*j0`sLpUSmvY4tFC?b;)P|@bauEY`?55puqC;&E;?e-Z;gU}XxtJ+VpVXfe z3Dw>p5xJ7WygzZYE+tGQkauoU1a6<#oWfz^ge*WnCm?a{PzXFfhYJKC?%dl<0GRcG zi|3rjlF`1~D0}_^H~^oya0cc}V~QNLJ_M3wxd{~DR=1$20HK+T^966#WJVF)-$Hv!x*dnN0BM#|2Y}^1<&b~b7}(ux|8h3U z5HL%v-B-oaG{aGosYqYJM_I-MKm&ga0b&6pUf0*d^wOI;Agzz#v*!1%V?5gJsd1P+Iape2|C9tOS*#YvvgM{eE|^i}giq znWEtcH1XtB4Rj5XN8cONGSx}g9AfUkzkp#Jfs0+TO~T_W_+6K>l#ml|uMErm%L{#( zBF5iff^{{U%61V6*dUkC%Sa2O60wE+F1-kvx`e}Inf!>i;)xjy>Q1Vc*n7y@sz3-G z-V80FXk_jQnMi}h{J&yg0#?rr!|L=}kx-VA%fb(30j)zhD>cy4WG<}SZE(31gfJlZ&$>Uw|1zMez#Ehsedrp(cbTM`NrMY&gu7^nYaU##}TH zxKRazZy5}uRDuryN-7e1p&D>YQzfygTr@2xRa`=1GBu8}VJF}AO>Q15CiRK29;@}a zQ+CV<6^5;{7B+Br@naZ0!fMV@OLQU)4VfkZV}FbqvT*8%I^Z) zvRfLW^YL}zp3OCcFiaGE5cH_es1EJGL%ItG2Gi~=xp&A?Fr}B*U4DOENM4*n^Pg1q zJP=c6Rv7L2!u;rKzn4MAf})$v$%{(}BmES{%IY9*WJWFVHZDs)68I@PpqP!`sBbV) z7y29&!oK1llwmC>0EWW_3PPS9iGrE#xF;be0r?=)VUz z=W+ioHJ2`lL~im5;tc{%6HuA};Ujuhlr^HkRc%`lNj2bg zx7tD^UNZrjFhR_B>M;TS%dUtD260+g1I;O@7*Ec+nk)yzfPjDqdk_+IGtw+c4>Sqk zGH6kEZT|jp71l#~s1b)?7d5Zp!dx*~dDE`EU1rdBWdG+%qJdCA@6YP0PsDh#hy=!&*js6$lrj~@5sWw+#A$rpH#+co)u##}p7o$9H0d^z zx)Zd^T-2#{SrnWMiXdKr%GDsZU#5+K4n^$ z96%Ju~A!)r3?lbb}ydLI=aD34?Q-cmUpQibeB>N)lDx+@la8 zI3~9f^IXet9AIVOH*VJ<`akZ4a*hGT`i2pmwlm|bEssI@IgMn!L$>LCWhRP&jl-ZB zA=38Xg?s=g$i;acAAN6RUrBMCCF zFkc?&^p7A8^{oGiN_4^zP&=Q-=ok?bl}17;s@`5Ez-Xt|a=>N65o7td=d3Yv_q<9B z5|Wu&B-P^o31(GcWKy+i9gZ)CLIwhfyY%%e`Hs3#J(A7yWulZ$!|Ua^qE=A{vxwwu zcIo3}F092tq7mJ7(-j;WIlpVJ*{}k3o=m|ACaFldrzG2B4>w1G{b^`wKfg*(FB00hDs#&8>N$L)aJM7rA@ReKd zK78j5DOga)zS~#v%Z{9~-`NaHrnzQifbg3-W>bW9fOlmf?695-%GuAQ`@Y{%=|?KV zVJL@07YZd~IH;JLHkEzhF@XO(Q2N;{M z)_P4YXt5QeIJd6uvcQ5EXhOq|79AsSVu9-<+8Hrsw6#t3iaj#a$?7KlHYB$9iNxwHQh^GQ zN-Gg6j(Q<06hG*+4RUTtdk>_6I&~5CNT2R}ZDMjAqEbnQ>g|EruZRps6q6o?{ z)=1KLv?$X9#_Yj1l0hRXyoS~?T_coU2PyN{SonLKMQpN3A>Zfq94ktxTyHT0yzw=df2N0kF6#~PZ{%&rSp-eE}n3$;XraUb7CrxN& z_|oiWX_C0XvwIfqgTE)NwzE~$_`+p)@E=)N<48@VHoQ)nrq5Wd$P-pRJU#T32?ZQG zB?#%DBp{6bc*yO_LmjLjK{0%}(+JcBYCfT|ZYqU#37yW~$>xktPPhOA%y7_%3f2A+ zH|B_W62|2T+gpji@5z#FOO}<1o8Mr%g^N>GTu(1k5bQl>FhVuHi=5!hud5g#sKYDK zq*#bbOz|pIJ{(_4+bGnAY^ku6{vlaC=5JBToRgRtr}E`G(f+`Rrn^@8$&q{Pj)x^g zF5nM%>tZ(aY6~SiQqR;oVEFBF8O4`F8x`! zv5IUkHLu z%<&5 zjIzA%x=4IS1cW+dxh(@%6xCl~2p8`|T5M_<=K{l))kIlAS4^QfyTFHnm;{ABeQJUb zpw9F-gW2)dI9Nq0;Yr@($&|e9Yy{FYe$!YaHRme0gQHoM@@MO(E{Z>jFUG7Kl7{Wp z40^VHND40e!Q%J!Uh6vAA*4LD21#$5j2b`_q0d--b8p&*Ubir>38%NbZwg|N2n&Zh zE#N0j)J;raq^5)!KgxD>ZD>q0M(ANCZXeg(>wb4Vk(h1TRbIw&>H`FgS%7D8;;0}DABtr*GN&i?l)@3jhB*fL0U_bsdxzf~1NIJgyl^6pGbF|iP5XNrwZd7-VubMWED4D z;3!HaAbJ3t3Io*_d`8e1rl9nl=0fmyiRznyI2wDW@sm!X_Swrl81_*X~=4*VsF zjJs+ziP0^RV$fL{eAtbQlq~-H?U@2xOHitxbkFUVzOV0dL3hEcYYc#iHGf?&ajvDA z^~al=VeSzsHWh`Vq zKwKUFg4q92;V4XtaKv~9;D|@ytm%{>HMj3tD;p9P3(iqgT_pM*nVusEDn`e46AR9c z_wSK^d+suQ->Z07295y|Bph=V;4@4?xc18Iz)xfkY;Gh8_aBrLXe)7r$V|{7>~4&b zS;h1Qam|?$B>^8$B$EA=cd#EG3axAEBhrn*^IKL@t6<2frd!?t%Qr-h;4h6L009X3 z>G3}<#54v0`mTmcyQ4SkgI3jK;{5qp{Rxtu&Fljgib|2E!DC(j^L>pWANNRQQIiLT zh{S^ufl9=FisSyBX!zn6o0)EDtStjyJKqz#1L_gQn zr4dbHLW@_KGwxq<<4&FH?~)ZqV;=I|PpeZCu`>5DWu)y-lix{)|>@tlFG zl|BlTz8W?O@MXa->l%NY@9BMb(V76vhqsPEx~Q@Dww)}liVB*Q?Zu-`BUnZ&`cdB?gy*p9d6Y>H$?{cYM+X**;0ru2 zY6KPcTr2Ta*oCvhdb-7Q5%cf4{*D+sY*q%m)>o?@`7cmeelQqJFDN-@SKL2-3Lx;v zQGtoE>O_Oyhd@5a3DqimO572K1{?_2sMXTs{Qxo}$Su8VO6Rd12nfxTwi0S5uu-uo zJF|5V#UV3dWU^&+es0Y{VNeZC6PCP2v&7Ie4;WG}JMxlcD3zuUm`}M88M|a^_XrWV<2Au91 z6U=@2nb>s?Tx{$s22o?`jPzaZr zH+KFVV?bQHZt)_=UT`0{q5O0cz!hTDKmfxhDm#@h`e}ah5L9|)CImB=xGcSmC7!|Kr5Dw0+y@>BtJSo!2#_+kCz4$x zH`hg}N@if@G1^AnrPo>msL=wa<(%k-z*NC7EN$)p`V0dc9q;oNn*bcH66J;gV_G@{ zi2w6Z{jd*}h4aH08h(`DIX<_?@vpgN)-sd$8ark?Se1Fa-W!EL8>)E#CXx3vMe~Yr9Z2Y_!8Knn@GPhKyBMBT9^&kl&En z9O45=qE!@(G>Gu}T?t@P|A|>rZB|EaM{M%~u-e9m9XARHbK*j_$AI=L2{$;Je^w+I zT)G#{0>1GZQfBBNSl|W<*}kW6E$Xr}pqmG9J8>Y~vDfMg9iSJWM?j6ZlIDMzh2{OZ zF}m98-ew)3zS>`4fO&ZlhhEeP6?%yuKXxjHFwn`@R6z1$vA_P|=rtr6+`KRtLVkSlxYE}RI=3Cu2XXGJEBu;1e?*nHr{ zk}M$t-8(K!F=>CkK0JB*>utYg1jdOTAT67vjT$@bEikIAV}H>Wd4x@9CCb&dq6URO zc6vo|1O}RT25eIWk;cnyVc|TIvJkMUYn*iQ{AuNlfMli2bv`zrE+P7yRLSHtuFkGw zLw(51s>5<+9-sBqq*kD{5ZF#Y>}8J#&{%9vg+^Y5N;~!D%e4RO4ir+=8~KfHUQ%iBR2Rhwx`r z&JO56z08sco zUBDRTNBcNdXk-=>^VuBkkc%=>okOh8JrHP(rZA^x{_6xSK;`}$k3Oa+a_Klufm8Zc z&!$qrY^Rx1ydl)%L))n52s}13M2!fB|Lh=O11j{U$D3+R7k;<$-v< zcSFT+zD?ue@AJX6=-X$%I?q5oR|Q`B`90V$p~BliF}d-I5K&6PRBzS{lK>e}ZXkq8 zQu}lBDw^IfobqUUuAqW+>l@QiJTXi{WnponaZ}O{?##@6S|bku@Mg?7GWx@seAYWc zVpM@A`(HBW-fIdpbAiNIyDRqpqFRvpIPMKNl2!VTi|Wj{0hh=l5~{GE?8wbbn1B^< zvx&u!!(|A}1%CK9T8M4AL+cwA(FCvW`l|nZNulF(5K?-?NKml`jEfD4DKviCTXmVZ zC(K&5EV~*pdp>e<`cfV~AnHTcwiq>~}k-hHEY{0V7w`w5Lk58++ z1fPuBdx8z8W=xnOYLp$@ug1Jwy8gSv%(NK#101>g$6=b->g7NZNU}+#UNFnaY zrj?ITg`Vr)-IN8Q_xW3FfHM##5KV0iKpSfDeGD3Qm@QA`{tdNf|KhfeeIfD*-)|6& zk}pAr5+oXCAb`EJ+dYs0)QdH&aTKPXBDBob7WZ&@Qne1SfWZxM{vs0ILE};0zT9G1 z=qg;R0#x5xolFoLDMnN@{{A+JDX0)NLDXWUUv2sKwV?(mMB>B4ZF{}r-GTeG0sONJ z0tMi)GL7+ySd_YevQ}ldWf|qG*D6gMnZhF149p_NG`HGYbmm#PQQ0FGCXNI08_@vt zaNKIfnucxU*zaE-xWEn^A_RYVZ8()qBh!4W`&eDL87o-#3&{u^wsg<@>ROg?fXg4L zp1BS8+v|DQzh75bq3YsJ+&pSJBR;|NXcdY+G(ntWxg@V#9&y-Wzv=BP0P87WC=bdI zQwY%nP#CaykidEZUBIqe#aQi$&X8+E%NzRpEk1U|IX=I>69&!^Wms>Qt|_HH7=SZz zZKsvf;EMQkEYl>!tf}99p<#D~#skU56B86j@C#;qtR{X53kgAZJwp{iO*a&H{Jqn2 z-y1{{^oY*|OMz0QMZU^AUm(~FiuT(h17tYsMO09D7|E!l3NV)+#6m>SHB4l(2g%bgpH@!;qx1gj78HRA zQnj6=6Y&Deqxo)sxdJ(t-c=Is<;MOJ`%lzyHU^vclPk?{FE1}uFj}R<>TzLzwgp8N za{KU=gK{~7{bqa6Hn1F(K*JwMjM<%TYAST8q@QeYre{Lm7{e%0^uDzYoor!05Ay_T zhhP8-f?LiM?}IP=T`Jf$bl|hYw!%pW6~{MJhq?60!ZSo61+tA53(M6}B4~`~m(%SB zcOUxJ%%)e@qaKRA-0Bav+@9e~M(uT!AbwN+4)^&gL|^=lgYvzr&4a9Y$X15%;fhMZ zI`lAK^9S^Wu!cy5nnMJIMuw>NkvLL-aQjSE`;-6pdZ6(yT@(t6MhYIt3o`>A9ElgA z8yHVN5{+gZ#7-&~qh4Hul4ME@>=kPfN?T3Y8BZGY$Ic;R?1_^%gnqp1bAeG ztPxDwkela~5X4c$tZN>X&#Vae|If$U!1MH+M`|OpYD_9rblz>=XI&d=&p_OAEZIwP zW(jpwWI@-xU0HhqBB>|Q^t9)!24moz*bor~>Zf*A4#uMcDB?ckD24QZB+3XUgpvp8 zX=6TIWq}@B=b}seh;t^;w0oqfLsf($bW>%WL|z^S_b*^nu5&evBa|^pBzecFhBs@B zjP>%9-FQ9uUe%==QzAM+=#Y?`*2I@uE8vI5AvvKCp}h>PKlamk9B5Q_lt&QT!}*E^ zbVijOrIwEK%T#2M-yi&K*PCk}gD%s49c^SXF0*V5iBp@}H>%d%kM(!_z8s=aSQ!7{ zdc`6!0k}N+ys>zUlgdSu?2w^VX(vUXnrj~J<~3*36jp{{?uml+mGO+a_C{a20GIsR z=tuH+LGgnl?i>!0PAe9V6WgQ^<+uHW-NT@t+v~=PDiHQ@wM*in-^;-A%g}{pZxuWt z6_JBvaQw4F_TFm`z*CuRKyo6jE(vHHS*bn(T)%5-NEgh}K>~4B{;9yNEg+n;*-s@A z`}Z(gy#3X1oiZ?_qntZ+NUXY|Jz0?cBEEF8@kv!bP)WS3drf#_^pbtg1(bH;xN0#| z+4BCSb}WutKRRTCoHT=(!WHUGggK5{wjo6pL(~}l!bN7N*nBykmp}n|QR5a8PPpj4(M$OsV;RkD4lgeV ze}W%hp5fsVvXmQmHq`u@@9(Rrm646(_RBOYMX&>w2|DR0R$4ttc-$tu<&U4hsK;j4 zM4u9-PjLJ$n^XCq6&tkZ-xm89pob{podhSa%qnaG6En+H2z*#;*K|3Ov~>%d4^{~w z7V-V{A!#_jnF9otP;rBh8gWg`2a#lGT9XW-aHY(0_LHil@F7jf7N*$?#@g5WCNPzc zFt?Oyomylw=mVl7iqt~$)HjI9nuei9_}vZ-T}nq3Chmk!X1p$G*I3kxSTSWr2ZQgD z^gwy^HI|;yVmVB?D%-2I8DGMU!i<@KRdJNsX6JG?ouD(tGvZ#iYrVZ4lid+ymxC);ygX}dp0~Y~yT=OLMBVYTk*JOTUJ$zc@rPHfc6RY7oqNcw}N<*Mw0C}-#`eoWnZE{`zGShdZs zHmdy&MX0y z_mJ7iG!FZhM~qt2(;Y;2bCg7+al`*XV3a`~zl$ZlwG>w0kjLW-kbHG{l|Hc^9H*zO z!-fq|Ba&F@e_+?J(iG4U3?E-L!6XZZa-`9qX6T{QsiN2= zhwqN==&f%UXoF^&e507FFB5?4Hup?oAN)P zwLH+09_pe+SF32i@O3G1toYmc`4U$|31)kJ?^&M-mftV&2R^KE&Ts@I`HTH%2nzL1 z;xlul_op5+L^kN<0(j1$Bkn&0Rh4&zO%WG|!lnLf3H|}4T&Kg=IR*hlNKn?*z@52n zK5z-}AqyQbWI$Pr*M0iECi~-RN(h#mcq4v>nvRD>KgxzA13;pRiw>pY`=5h%zbA-L zUzFku8Br7;$cUznDnI;r5;=_@Ut4sx#A#VrvAi7AwwL2Y;L%a%F>(Q8`yNlQBr_8k zzQ#wZXKw)Nk35*}LLyEuKT1ehlMpY8;ZhASXj;DqmBEgi-{?G6Z}Gc(E<6PgZN@c8 zjprlFXog+u0V^89Sis==?VARLV6c5}!qod>_^6VDoYUwdF{_~+NQGaE4L-vb6w5BS zQFEgdf-`N&jWlQRqg9wg-%}Z4FZK_LGW>zO_hfVw9f&^h>x!rxljXfX%-BF3Jnpmw z6h-U(>~Lg7Y6}LCUQ>uPI)K_|S)JVP0j+fl9V%E0A9zS8dpyK9t(B0IPLLM>>wq4i zM^kCz#b6GrCj3V+u9_+!qXdn-b^u6U6kGvA((VksYHqumORfQ#S}^)oR$>^^v_JhI zKR*O|SB<#m`1uP8iAh~!-<}@LABS=STi{eMbP%c0A0naB3x)S$D^SE4_mzVIq)*4q z_{IJBj6hNeV90jH-}B}5VD#%2btv|hAxTM0F!Llhg2~i=N;~C`>aNM9(yX}c?IY;w zPk(meIzkcj9LVE^qLz#8hF}~w+CB`1Ffs}kP`##DU=$UAqe;_ zX5fSAH$h-aw(W{I_9zbRWMrbEhYQDNPfZYQupJUv|Im}hm_mr4@@<_ixI-!i!sxd? z0J2Ji4XQX#n-IzGP#LlSK^VhBt4WjPtwS~e!|_y*Ir;;@k4%Y)f))XHCnWLn4=J?! z!F9R6Lz{vqBkl+Szw0qNvcaTrHvgoOo2(1?k;|nh@>Bh9@ZE5!jax*|CH9I9-o=3Y z^Z5Mx*T1QVvN@A>`b0^9PYDkGT6Y*X4rXRe|I7wY_QpR8v1z9<$|F|IURZ#aOj9Zi zj3Y79HX|C$qBmke>+x&(uk`@O7f)*<-1$M=F;Gg@cA04GHYmW>4o16)*pP0RVl3ko z&z-Uoug;e#%ka@))JoFWhE%qUX#4wmJ94rxQUFPtHRgU+<)V}2r`DeeUPzhW=X@~{ zQsodZzmESzP{-cEA#p8{7(dzxLB6( zHRgjfBIA=BAIxi+4({rBie90*bRQh4hhN+kEXXiBHrc#S4}a?4XbYhvzRuCs-Z|{C z9{#q!>}Zvzk>a28PyJ`2M*^y(C=fY&^UJ*x^6Q$Frx~X`%2V==zbP)= zPC2abFN#99apnS2-AQ7RYdviM-0ix>`nw^7OAg)`k|6^;?q1LQG3YFQzdr}Jr4klV zoR`HquoUAAep94M3be^45;ddN*qN#K7*P*|{hE4hIwcda3AK&{0x%TP#Be%*{9Z&5 z0<`U+^>7nPh6HbF+GGOF5ScG54EN%FLj^G@}w-_TZI?)$$>HTfr=;PL(UkD z={5R|l*SM#aDcJSAljHwHpk#fB2kp^nsW7`WN071^57nO50~~gPS+35&&@JY0&+vsD`K< zqCzGxH{9cet=Ay5JG^i36S_j(8VC!aSVcK7S}wDrtpQu3{;0rL15F*w!6YNRlTSOg7M6fAep*_Aa9IcCj zFK*TQ;0ORj4?9mk9DOOcd|?oVg>xDo0W1xFtC-fIGZ$;tM$(xs_@oHkJhzut-D>4rZ1kReK=FR+(rYR@ z2=~yV@iRy+>>@{PABH(KH>1%N7pZ5$D-}&{Hk33l#Qc)SWvbH5;ro+nfF>eYvEV{# zfT^HdZJMQpyMD7_o?uC=>>D8DHQU|l9Nlrh2k6;_Lf2uP3ic&yzw2^9gKj$`N|%~5&H!B|j1UKnULU_|~7eODM%Xmsz@D+dpgkHISo*zni@42YH< zwAu~?6Vu)Ru}N%VuKj>7C3E0+1nW>2^X4JKZ1|zlWp z-*yPbV^6gp?M3~=)zQlVK$<&7!eA3ZQ(^Rpp>Q>-wPP@qI^Hh_>i4j{DrK-K<7=Q( zBB*(x6``zi*gX!!$b|d=fdi}MFdVV1Ut*JS%dn_xI>D?>b?g3^OK+09s+k@JaioGB zlH0RdFGAfOa@Z`8CE^cTUF+bNBN_afjOuhXmxp*Mmt2L zsmX7L$MXQBKR@!d`I4f{xK}elQx+F`ICUU&v-|H6nWWkvHg3-@6{}jHU{{u6BgtHP z8nh56Ae(Zj#0dn2D&qa6e;>!>Uk9nS!T1PB6G@7ljp9CAIKl$ckJt-k*n$pSk9~6R zN~#JQ4d4O;-r;Y|qx^FhxNk|3fn=&bFoc=Z*VWT(Q%?c=%Pw338_WzmBT6QYkpPl} z=)$D8MU$uxKv)o|=hu)J0M_C1CNPdL0NS9P#W7NLN5}623G8R8Oi37FIti63*k`{< zRgcD+Gk{`z9-sXbcNu^q3;pX5O%I7+f)uoxh{tdVYF-J0_Hdy2d|^=;u$K`Onhak4 zn2vw?@BD|vu;b=0I`qYm4-7~E3#+21p@9{L(MW;aNVq@$qbT6OeFyyRC#{aJ&=-Zg5_`TL;Y(yQhSr?P(q z0RYEH312R|p$BSlDx{km&^Zg?6S(=S1Wl*g@kQ;4#^AN2&j-s5H$>^j$FuzSWdF4m zrai}ifK+mC&HxRQM+3@mViuE=3RW89z!C#Ws{v9DMna&4N-n9D!k-qKZwjY!bZzKU zw75FQN#pK-CaSD+%`rBSa@YoaQAZPuXDugL@d^Ztba`y?B( zL7O)@>pgbj`SZUI`ZRwSPs9%2GlYdknY0rf2}F7!oyA!|n*(Q@hKY~qD{Dxjq0_tS z1#A%EGtBnqi_6TU^ZfVE)B;ieq;zN&PG_swO4BXrG1|PzOxMlZFOjEAJG1H+@7>$ERBMHR2Bz1+QQn zjR_PcmrHWDANz)4Sab!`vbee-`5`M6GJxW(~gKv%*N01U@No=$+8gSlNTNRTMi}!M8Nd&?se!; zU~cgDuc_?zf_xVLwstv^3!Tpj%v+Fd&2EsNLo+R+)GMl%36U5}pwAbcahnC&olt{{LU$^b4Ofo7_g zVDY`+PLyMo03>8E!Szts(m^WB3l)x-sD&I+jlxuO4nRSd7r3|kT-W$nc^D^c1q8u} zsmG8V(5ZH`wU4;HjI;U$YW=}lY;1L7A#p)u!WMBOo&1a{e=>fIvcG0^QbrO4tFWjH zfgInrltBL_{vJ0ncgW&;>cbJarHb|KAmRgJ6!6%kE|<* z7%=FAJE?;F--j=h`u8tGAaF_f?xEzj zD4rX*tskWYBcpUholcwgRsPaqmfpaV;w7ORgKiYc_R2Fb!5vE z-B{Yw&4tK?1z45jIZj0Pnn)FB$ebIo1R@+8Mkbso1P$&?O97Xt6d_0XD2fXuVw^Z( zwxvceERW+=b#aix1IOEm*Ml1<3JBaoOcv*>5X$GO070OA8`fE}1xE7}!^c-pQ~YT< z@ZU#r^Z)+N|IzdIFZ@hqQ@0<@r&&gRrU(?wgFzIR`fInAi_3`o>$YJk>n1v>zyaf* z$3|2U`Y|`ALSV7bNq9EzS0k*nkAzOe*S3rb+zO>u7)%$_et)6Svr*;<0nQsDUhASh z7+AfU0PSt?RKg5Mo}caTLR3SlyW@MMCa^SmAOL3$^~t(o{DAhBODV~#!}{nYQ<0a$ zSN$Q`ZX3c=PoI4+6#ea*jktm}jt+aFZn(WFB$-ZxJH8lNb6g>UI%1oPa7o&Q&;v3L z-D?VXjD%7|{NBU~su$IZnMOn|`18YwtbbviW22M6#tEwdM7hvJiOfVUDNib8=*ByJ zhn--oPqx2r+*l-e8XN0jO>{O?6!LIH*fn$ zM+jFN&j@d}e6P}UCMh&o7j*P)zXs%+f{=lB!_AJ=o2~v%6dM6p8!{#W{!3Zp@xcao z{mOXZuQrrWfZZ&GZCnK9!7Pm!RZsh+G;TO@6UiTJU~OaN>3#Yfs~vp2ilnKfKQ>R- z{l8y6KIbJ_6JFr*Fq42IK-T2kvHQo*5u*h(Vi+{aog`9sNk9Q+OE{u^M!EB3fx#UD zH7!%Fu^=pFrye59mzMJ$`mt351(FrDxf%me1I&iEVayUaRW3RR%;Y(ZSd@Zt}f8&&=Yd_&4OpZ}BsIy>&T=Ri@il-InF*KT#ubB?ziuM45SGWTa;PrrOz% zu;WhZszM1uYWy|jJg|JCc2zxGretCZmJZMjAV@W@tL`gu4SoG?Y@M@a}eu~NWhY@72`4@GUp zB(yAaFtSUwMK{n?StU_b{h=z)sg)&CS@Jm?uM$$e`mkaGd zvwha!gk1CxwAdvA&g?MksNf{$s?nT6SE3jMP-!9<37|W57mdg8hk*^46S5x8el{Cq7O4a7e-JrD%k|1afIxO!Nm=aeq{Y`L%Iai zi=M%eci1>AzT6nY)tAfT{)Y5?*WvowyCU(zAbV_(8M3}%913IP*sevL{#opmb_fqrdr1vxutlkD7ITz%G(bS*2$Wo&RfW%oH$Wil z_~dej=wDy>6zRWT*n^~BbIH+KT_4>t+NlYn1T3x<=>bEmZFeH-^O>2Qf=W2UrOFJt zF0Ow8f4FC)TWFF*LM{RujD}?q%)lYSU}C0 z?7;i*mp*)5pJ8LezYMTZC8*k5Gg!XH_ViJzSM(9u>^1H?3Pibtf0KVCH@R1xmHdmq zg4lD#aR8Ni7pKdGgoQI1U+pvAJ%WP6%yYR4q(NXot|26w47Bx@-6e4_i zh)LEgK+rr%{^N`rEaHJUlck2Qj z!N#A3-2n^G{-Bdg1#2gcoU@cm0xd0KZ=8V2vSp*shG97eC2~?Ai_@tO zfmh@&52aqfAgZ|yC07+)bs~ILeSios#X+P`>w~9KCyOcJtdc0s zEgN#I(k%#(%Yd{9WL2bZ3%oA*eYqnC3>q8TB0?IdN%c+mV7VziQ)Qq+BxNbCe)6N~ zN9gu;CM#c2}&<79FWo$VtSg0mvH`ed<*JcG0W(2`iTbl6`q(fKf zz`HggI%9*kU=8(}Y5XI47``JJ=3zK|h9eadb9UCsaBf@s&-qaB;s!u$xq9;iPy*!U zw;h)i2Zb9jnBq@RDh#F(q5$T3JQ&rghk+jj(!V~m5V~PAks&TdH>v;nxWpyr6J`2^4<6Y4$gz9=MdP_Xk?Uv zLN1Y<2A8onLL#S26O}fag3!&ZpsSO&?J-FRpwG^X;Kkx$=Om117&VbeQ(X))M;jei z6olo2pqHYs-&NxhU|!nkt@tTwMB2^W^U`*GD5QWy3yoI-8T1b71HoMzGSQMzHnKTg zTViR!)HDJ>{f1eIRe%F;zcF{lW8H4(Yy1ota$k`L4KXQz{eIvBRw%Ep zDp+u708K2wqvkJ+DZ+#87GNHCw? z`Kre=Ag!M%Y~cm`-Tw?gcLTVq-f2M#(q(9$aUE2ycaJ0@oKl5JV}iIS|FDR}OqF<+ zK5TS5ooC;UM~NU8kgxt4zplm`|NMhjywUM(@l^-0rOgn6Mzz}+#{%jjfF=gc9`Qu~ zl!T$?j3FGb9G!LBjHMC=2&6BIBTO9xWy%oai3fO^fTkYx*H;}Iz{%7q;|{p zRjUk`8%Pwk)e3ss)4?$WAP_%c+R*jU1c|Z+&eTX+MoYBEcM?OK!rszBWy&Z|70^XH=mWWr)xXcW`Z zV77q*daSN=HtH@EtPbBh`!{lL*WbVQQ&|HKG)PyrrcC|NZc~f$cugsQi-AqL{WHW?|~PhAu82y+|@FZxkTp5E{aijeY8H ze;VVhI}9witSvYfP}B2}j2x*EnmYtJ1W@n8)>&|4G^SsX2nb)Zu`cGI|YG|`A!ylFwXrST)$KWF#R@; z+yN$$K2Z=OL{M$2A@&-^FXAD-|51J8ge>jzFF-&_@}J$?+a0<{DdR1xU$J-r1J5+u zn|(C*4d5+JAaL~mh`Lt*#j;on!zD|WEr~>8ktLBxEE0*tB9TZe5{X1&kw_#KiR6C& z>ACmz%=Gl59&mPcva+(05T`mCE)q>E*`ymVL0lH$AUi;`dX1 zN{66GE0MFNxx}&cc8#F3zD`py3*Zr=?P8b27O`0;hO#umm}Z^TdqNLm>5sH5+&cuv z4bWeRK|6)won=-cvPy{o7>$we0#*dq<{mU1Nr9NaVK##fvH)%d3rmv%GN3V=4Ow*2 zYRRL5p=#v|{$C96kBnYe&^$nTQokHdnag0_r547Lm?erH_3;H_;K5g^Rst`1E*^b< z#sx>!{PXO7{^#KlHr~Ts{Kr4eH*xz41br}&ignJHXbe^vLy{vvFLxU;xhDxO_Zm+4 zmz6kKKccdDE$-QTe#>~yvV}WZlraq@qhiHGgopoi;(4*9q}&Me`dSb={NN=Nw6Q_B zB{juHqI(?cwCuy>mkgL;#5<2AQEF3+wY58R!+>*37J61h6(IqZQk`uwzYpX7tqNuV z?tMEix`}uftglRtsPDOk;_%fnc?;^X5L)yYxhgY%;-`m9L2R1J{}kt!L?;%8i|f?F zZA3fUh^cfhyZ9Uqe^cDiQVpC-m!l0F6UNta5einnlTuvM2SmR*Rb?Siz9e=&QtQzv zmaNMIDt_e!lyMDj>z+@ov_g3Ts<6I<)8d9yx_?aKFS+IjaBycDHtn$hPSQgT10?hm z!FZ=RgzJv#-;ZxI?e>?Y-sk8RGnNt@4u9q5Po))pjovkt1V`!iP@%8y+wTqyOjjv} zHzXbIen3VX>jjwOq;kaaaI_ zQQUGp9>U(ua^6re78y$;i*U!yCheq=#-)ZzvpB}7uunw}4yBAU-2e*U&7GQ*jS{V4 zPMh1oSaGMjZ0HZcfeW76&iaV+h4bd6g#r-|w(d}*Iw{1&`^|@J=Vxg_LCq*T$+JQ9 zrV>~wO%T3TXuj%pAvfF!5;x)(bHY!%DO{iz1_qY07(=L~v~*jlbNB3O3dR$8HE?t2 z8D!LyR-iYj8qMTJR)g^5>j?0wtc?)~6tL}6^KR&t5#XoU4ub*~@V}m;atTN1YaoJ# zY{t>}Awe%0j7_YB^e?;%3+h{P6yLz(Q@@Pc&yPm({u(mX5o;|l&=u-)G{TM%Z)aLS z^*Ue4q3b~^Q5~p>)%dG@$-&R&I`}iO%rf#Mre@K45wdbqIiQTMZ}gCG=F1P9REpxS z#r}2-t;kTqIr;E zHe0pHLIE=s)!7n>z48OCpKmq@NGUPQx0c}IR+kAUTRd|jSMrk{7 zNucjv$;;;)b`?DrM)x2vlmt6WejXED{EP@v40XKUJ2ReQzmJh(f>D$~7O#Mz4oo`@ z@{Jd?AY_R7=^+i2h9QUi`u~8y_bImWY}g4jB;hXG1hJ*}egr0&fncm?p*$sBnT}Zu zg|vPKN`c}-S*9~|)@UWKq7nD9#_!+#9t8yrJ4}R?d#oV&Gde$&h23iCL3K~MG88wP zg2RMoXB&TdvESU6+2oL`)y2#kh8X|a5{O4e1c>#*f0b#24f#5gdAKl?xST-#Cp^}N zo~M8o26-O>AA_OwZ1(00H1oGNx?4x;<89%865Q|&B>%>I`M`9)GCifdvIld5%6g5C zFn@?HGs)LcezP-KK-ou*Sk;blvw=$sHKs%Y8VvQJk_B@RwF=tMJr*X&$2Z&OdzdQ> z-RL=&z2X>5M4A2$nWUhjZN*GulXd+~KmiVdK$4I%Xcx>4t66}0Z0CNliIF(zhptZ* z0Xthv+{++{Ox>7&hv~rrR?uMf;86U}FPO>Rp(Kvb`46eg-;b=>xk}0B`8@Hy`4PQY9B$|jYMP_+ z*;e0~G8?^t{am8J*~4u65tRbLZ$lqjn3fLi8jDC{=u&1gxI z-<5GA4)uH@Q^o76?i^oI!i)Wq9V;O!MY+Lq24L+zFP1?sL?aGFQn*rqsSRAr#j_A0 zYJkK%J|NA4A%dt3#IJI+tT3i2oI;WYU+!pnd4LiU4+|3l;1_m{8zVR3!8Y3g-?)+K=MmOT1cFzOT^O1bJ!z&w9)uTDX%Rr#K|K=&9Jq*5vf!4pQHGM#I zWF%t7;9-W!Bd64i0WFN=WNRc2apPoZ$Hh9j%h&ZkJ-cY5<@mta%RHPbl$#szl?=U^ zIBk|;U5Dr8;yZ8nE7D2sUDZf5m&ta{YIVZ=+}aX_Ley4Gs*U4w!m4)s0e8yRH8JJsbb`JM8eX%XStJP)B_)bF{H%K9&?=Com^8xKi>k`uVu*<}3dJ%N zjJe3sqA!n0U>pwIN$|Awi-^R?QK8$9;ewjz=`*_%2vb*tW^{FJW{OIpwcUHggnY6y z{r?}n!AvvfNk6`4NMTO0EH1&rJdo0^gDi7*kA1&^ta3k@ok^25c~?(M2E4>y|^5M+GGAne!tJXxNv1~phDB0X{VGy&jk zE!Ko&)``d&-s;()J9HY*BZ z_3?x>lq^6kmZ%r(ZTILlr~R(I;$g!|A9JINbO$}a1|aOf z8`}^}W zwy?S2njvHygLjA`p~#+3AM3WoICl#=j48S`Y4jLNlx0A`<Z}{Vaeokl+8!>Hu*e}?x^RyYm9m)bKsFqEa1964 zM8v;r-)KSK5*ejwFc_1&cA;Xm5fB>A0LnkDOLMqTK%8;0azWS5gACTG6LpvP0%=0| z9Nh#4k#b4n34TiT4zO)$3cdYOr8`}qJ8mV?%jknWUA-sN7o^)oU}SfUYGXC~YX>?n ze@B{bQL3~{>I)t-Oum^@#v5j7F}>8jjAZcaj$6~A3+Z`LS*gO5x1gP~w$G0YDX8!H7qBY`K#L62=Xw zvY|rwMt~5w$6!E!&ZU9iX|2$lI)>k+3hJ*pe6mBTKdoat0k(_(Zw8QO+wdWa9|<_P zan{ZP9Rvx1o`!)z-PwTjdg(EK=y>dp=(uHkwxZcBbAhag18qou`*2^(eYLwp2U#7Y zzEb4S&3hND{;-4$MA+xMkQ>Te(mJ8g)ABE3+#nO7Vm>}~vwa+cQqtl1 zVLXgK_*^|xZ%%rnBR)0(_1?U4+&a2+c`(casPtgz%6s1r`Pmua$nHcil8KtVL2~UFv2Mz%&bV%lx1X9BV1#%l|g9$N@>i zTp7#bn=DNJi3~8QUgBsud9Be2y@-K~9yS~Od4BC5p0#m87nKm{L3KcyZktJOmP;5^ zZoq)?m1fjmRe!1z${>`tqs7SJmm(O00PjYaF;8y$C#6#R zGVy{kox^a=G8FF5%|+11#pV%mtkf#X{9L04KQ@Vn*vzZ3!Ow2)^9GLPRB9(3Q%|oSG8#NIxftlRQIiHRRQU8W$zT$UU5j z*JVA6+^*yIpD%2FmHsA9pWZmDh@EuWUhM`Tl;JMb=i-H#!uJT1=DMh9F)`|O5vuf# zy^EXUYFB&!R=9R99%0$2!ni<_#v6DW732+kF3GC3{?gr%qIv;zYL$gO9+AeVf&J`b z;(P}KrN_z?zQq9Jpj#5we&H2?o2is~m-pMxT`9&rc8S@>A@R%ebJ}18r~xjv%(G=} zeKessNaawfB*VpSHl+`^5TD3*+B|i-Y+ls`^trpwoEZYwm7_(74+gco$F%Y0WAFuV zFB_SP4->4z{5SK(W2*V$5*279!2Xv;M3lsle1C(FvWx|}Emz0&Gi83vD-+ge7Etbg zzVvuZc5r`9%fq7wvw^pKb6Qo0w5$3IYY;c2Oq^r;@U9{u?xxJgtTR=NG z_{?uC-9ntoJZu~HQaGm0z8?qz`9j0kGW8s3d}rsf7{? z%xrCjB7y&qU>B`KP$s+&1Et`yQ#W6YJ`{+wGMg3UE39r0BC3yZgRKeDF*NW1D)cLFcy{m`9v^~(&n-h z!cY!_eRnM#$@h0<5EIreE%%zb#p3jM-dI&n+CyKN+Naye0M?yt02U|%<%X%13VSs$ ziI{BP)2>*RLfOb@NY(leydzs~gTZk8g9*qAS>C^^pFUt4M4*wX@d>^nJO|a>a8^Fh@@1Fb)fYi@bI@cO@-tJ$*-X7; ztcPcUO-G@4Aw$cFy7JsyH?7|sb2uE@(4ApSfT|8252qEPH;}HTAMah66OgPr-tr_F z`%<9r1hCQvXN?8~1BD0=+lG~ABPYv@A+p5!2 z8GMMzC&mOXqu+)*xVKsR1;${n44CpQUA|v}x|JbsIGOqWdR^HqfW!;~e69vz-ZpzQ z0wJ}J@}hn`i8G&S`WzaUG#hRCwfkC*_p-lI(&76Ir>$~;p!Nd0(;1-u{Khyj4drT( z615^h8W0PJkRa^)I0Zt_Mu0ZpR-ZR2=x5=BzEhdOozBnqaq}faa?v!XRzkM9&Qtbe zL4v8_r20553^aX6+9N;s?8z{aZHg&M zZQ@}&11FWxafh`F>^(f-&{FY@eKyDwLZUv!Gu!PRO&EqEwG@#GGqWS$Dw6yDjXAAf z;BX*7so)rMZcbGF9PHP?RduaW+BkjDUg;ADWGo3zVIoGsB*comZ5=I*@-G`_1EYpa z9)RESAc+oiskzK+Rh5K<@dwMzK)@@)d`*(?f~txd!b#272t)(aC`w$CUz>SuoXTuFm3IxVs2`A}N^gWFZIJSoR!KNl1^@#7yZFBZk|9Om+8_Tj z0FPiaU%&}~(JsSu$9aHK(VrjVR+Ri|=6VyPy0ronzt6P%y$~Whk}`kEM*HrrQ`sny z+~}9F2MM}0`Z^%_(_$}s5oR6w<|EJX%$v~M^C3e9wWjETGDa@8z2NPocgU`fwvR*| zI(GT`6JnQMP%YV`bOaaWBK)A(xZjx;;<61RG?>hgGMHLn?ulpuIuN%hE79}BLDG{I z3A}x;&Nmmbpf7#BsQ37`IdX_{l2w3$9ZlV2##+M*&b_=6SGeD80p|l zz@208-pw-dWtUf%fK5^n7;om~xCHb{Sjy4n1bC?;_3TZ9>t*P)< zhkXOyw>#gQld2u^M#VIk0r&5!7w5ND*pS&dvpt5^{?j)yvH6J4G{i`T_0#3dtTut` zVe2dr>`?*V!^4}Xa(><=5HVxyoPv6SA!Q}_$kGl zHSVQy51;2Td%USDfTJ(V;sXfVxB(yM)XYW~({}2q0*B_FnZ7s0c9}j1G`&2p&D6mz zzIQ3Y+~cLlM0hh*0X>RU;NSap2i3_O8F!)k5BJb6kGrV}>}-aXIDxV8Azx-gI{{wUudh%RB!BM9Yd=GzVul!b>Hk8L#bT<8rv5%&f6kG0`M z5a$@RyH8Sl>gZXfZ&kgB#r(?!xS;X;9vRWD5rQ^sAa5D@^kBHuJ>>VW0 zxdTN0%<43OD?G_9H5N(<<#{##{}Yl!m-{8VqJss zD~RzHRB6-ioGg%IEx~k!af~}*vKk}31uYVuoM>-aRvl!l>{}c4g$=tts$E%PKaY*K3=GuwYv2{LK6884Nar0mSr7mZ5x{^~6fNF3nd|N?A zpbEPLAsjtOGr39oV~%BwW(pvSfTJO(*yST%IU%ew(H?e-g3aVIpw2X z8VyRkNKH!Y5C$oQLkh z@i2!bU#yGN)eW-jeU7Gbhns!Cm#8qxBca<&3~9=gkr*WbpkdOKsoC7x$XG;qf(8O> ze`GTg?SDwMlR|}eYcQmaei|?^QDFC!V>9>^-0{UFS3rV{nW5Fv{#L9f3h;_R12q97 z!LSnapTR>Z!S(h&T+hnG^TUf5|5I0`2&%lw(VP_)l;qBLu~HrgS1AxgI#J?rQb^A_ zM${|l#2QsY5dg>}7^!Bl@xtpMvV{>l;v$jDmMHRn;13azrmWnZ%iw0<4Ptv$If2FT zS*1h7q%84^Z56ae%BS$16=#f(w5V|Ea%G8f_h$NN z39{z*c*FE;?1gS0o2GFKCN*NqnxDrjPoeHDlz2=b9piS9+!zpSG!2pF7ZFp1@bB9L zV1kSfui5~E-}3v$lX2G({3j0s0GOHL$n!G9CJ3pGJ8xoNLOR$OlS!j_5p~waTTyOMvyJ*xOT;pau&xiT7PbGD6=32d%@V+tK1I*yJz=U|8~a6z4~hWF)}PwM=g zV4dd#04>jvy{I{?s}2M0cFi6ou`(-FER+OaPfU?8;;6AW6NOnVH3)H zdc&U2&N4OtMAdAw(+Nw&Lqll?;Nx+5#Y!S)BmU^N~JvGM}@uoX>lrSJO{iXh<74tBbcn9`hX zam4zM9ybucgRVyf;^Fz#K;yW>A37*>jQAZwi9yaTb&fAf$AwPnz(vrk5Jo_Rc!p$n zeH4#=#xd29dyI{8!e09%vVo7YdIU*g3Ivkh-g^D3?VX)v?mA{w{*Z^H5;$Gyx(y6h z--Y%2Xsf}wXA$==w`ZI*VG;LW6XQu;79JfSsf6;B1F;D0Zs?wkNeZg+@tVQLAa2mZ4AV;eztpLwCAT8{#OQcV_#G7_i}V&816k!DuxI_XJVN0E7(lji z8^rN0Cs_a*z#Sn%uTf)v6F6Ww3upaYGN`6+ag|n(1`4a8(|F*AJt7IA9@@>>!Xi({ z%Xgv77`H2T-n#UYCPidcGF9w>jL;Dgows#l0kfIgzsj(c*Psq_EYvNLJ(?{h{~c!o zH8iN2>9ZXztj_a;y8?PBfV~6xT*?I*Gxr|ZN$x6ACpnS-6M;&LZ&J9_(=#JzR+!op z1VaYtUg@`38I2S~280_sLjI?=K;>XGimn9Ygs5$6lZ~nfaN$c3+vi;Ur+i{juv>r_ zQDv5Jv5@b!)BO{pky@iamh3-*HLpi@@}JOmGn^;agv3KLE9M_2=o zLAJ|UjhZg2rbr!NqN8I)oT8fu8>@Dg2pFh6c#;xAZ8Y9Gm5^uvo(xgpfPAoQoa1sm zPH%*<@Zo}&?>x1s z$V@t>D6W==Ra0y7R&NVXmUa1R>ZCFaVR~sYy2^kjudd{gsD1H?>^S|1*d*jiceKJ1 z9uCuyn=SWUOD*qxT8zPM6pyc7?V$yM zXp&+S$PWW7Umq|4Pw!iBZ?R12P7~2kHwYLEU|{mZGkwL4vIBCYwr1xlZq08*#5LKQ z%YsFA(}y@vCn*bnorti_2>0TC5lfZfu*u@BfOaAcM!!23vqbqh%K&D36(JNgFh^3u zyZTU>0z6202wR8|SkspoB0}5IN^4Sp_E&2ea1}U#mQoX<3AjZ`QVn%Tbpb8^Dn_0F zK@X`AI>o$KI7$X&m_9RQ#J*;`RnrTA@Zas0oGK^F(CQcz3LF#*mIRX32{_dcTwmd= zIhGKT7K7zkm)3s_O}y-=dXWpjAJ=e8rtGT%f|l{34891E)qM1Y&k>o2-5c~9C}MUX zY9Y?HGP|^@+B*=!y9G5V-e~>1UvV&_)5SuEDZUeGm`cRZ&CHM_%lab`e&~D-$$NJ= zuj+XXB>oZC2?S9{Wi*_AA`~Wz>8-p(8c4vPj;xOQ4d+5$g>_YwjdiGgVx?BP9w)!G z=GB~z<^;~6CDKFh&U3H5lPeu#R-6b&H=?=uhbZ%mcH4O3{Zrs3dwVPaZj435Rg!XSIP4X zO^y!VtW33gjz?F;e;^kT>WiRsUD2&#h)frFgyeE|&KP4)OTgX5;V8otV98EZo`Ge4 zNC=4E$9hC8?lkd+_vva}kcCDrH5Em9$(rNC3`v;z9py^Dr~jIf>G324>)t%0v_(q= zqv43=qQ$t$Moj^u$Pqo3n$?Iip($B{9BF%s<5v*m@VvWui?6q+0;_SY{Kl=SFpMez zlK~MQ2#Hw7?HTeB?!6}XPAws-6Pz^tYETeJEu6YAU><@@Rq8g!>$nWSU+YuYFe{r< zD+opKL;KXgWdOxp=QzjSUS1JmmQeAP>fOu(Jmx%!$y1Mw$wEMFddLPoDD|8rB>X+* z(~KQ6LYs1>bY9XSz>y>woR=$MV2fgil8!vd4nSVkmR zLcFgZ{j0UxBEXGk(M$b6AE6s0G7iiEO>m_L+zH^O+bNvDYbzD8qvTbHX*stfg$Xu| zl@659z@XN8J@#x-Dk@{8&hU-V3PUY$fcYHIkJo2diF5a#Odu2Z{vk*epK2F(_SJBe zBga!F?;MeS=DNvp@K%c_9h=Izb9JSqAAorTc0&jVIaKp<$Hye0CTHC|xaI8rv6fyl znFg?MxRs$tpNB~`QQUR2XHWqdOY8-iM)R4eo}cX-ck!0D^F#lL zZFO$8QmXG=*%>Qjh#1dkmLT&KHj&$+fM2B@neJ#YOQ_NK@dzFzAsc#Q1WB;wN=yHM6#_XeKAH1y`r8lxjnaRD3WtVx{0?yrWMy<3JCN$0?OhE$qgI4vka_ zQ~HW|+%J++V?6*ajpQoEr}P6iXyc+?{EQZWOK?67R&dW$nMz@7hN3Cb{4O6}knF0j zAs)CL{=%>2Ex4-9`SEOg4vm)!?qviXSdu^^DN*VpP#uPtdYAQ=#&ZleKMM#Aa$08j zz`R-#jlwSzb&Xv)^n$!@shiQ?YnoJ^SR~Cel%7)*L;){1KuuhTsG!RTH0S$Em7m~JjwM$oj&(;v)!l}0MCxWb^IAnwJwj$%!T zjJhx|JoRNb5+4KKk`yUIiU}wY!|<~M6-XSf4iv9Keu3E*M1I42Q)8CZ?+_*FA(mPU zND(rb1)_u8j$sEJj>31JD(^9^WL!24YCovRuhC045s{d2g4IwVHzG zz;{H@0_OC@Spt)2=+^DHJ>5)J#7m3q4wI6x8W9!Les&@OB{1-C+y{s6@2!Y9?gxJm z3SgICKT^BJ1ig9qW7EH^#lIGFHeXOZn_D0Zk@*P-;L%LGwjE_~4ukLw2kTa<(vtvW z3l%&A_@HG$4P9oxnDCZol$27qN`c~@SItWZr7^bv?CfB5*q{S252kH{uakk4kWnLK zwujf{PnA6)Uu?)wJ}l&LeqCOWpp~X_204(ML~qT605|Ir>n1X*<;(Gk#u`HAry4$o zWLCB!WMKuNf|IWY7WOB7C0bcW#yN-y+C7Y0SAP+AmFYr4 zYFrBl)>L#zq~uafgQdmiAyJ5>eJRH>PFyUp!2HZp(@y4AC~2`hzX1^wvlJ1$4V)!c zRyo}lXbCJOo?r8EAzRSP-<3(?<)taRqZUJRmyJ~cAmjHqn^F<=yczb*{M{AatKn~* zxfXN&ZND4RzTjU!zTs|h7CGYvsPidt@kElikZb%)jd(k0|Bj+N5|?X6*S zhVa|~_so7tOQb*f0zB8*{E!3$YfH^me?rT_B83V9TsbB|o2tO6Slg<@6@dUmE3Z}I zBxtU0U2^6O?Vs2x)b{r3)=68m>oE@tQhYbquLwHV7v5a3EIx*_@t|))PWd z$&yG;8MDke_8JT5vTv8Sr`9{{01r&<=O2Yi#stvu1Rh_Bs(>ozI<3zCa(jFnejnY) zS;I+Ut9LzU${COZlq6xIS2>Z{5G&LJKsOaDt_?HkhYmY9z%jNlbvm&#=uRTAJp6QD zVE^n(G>Q1rXWeVX4Nz(nFyKLNQ!=QpAllk9Vc1yCQX@q$t^vkd6UdngWy=IH2W;*R z>ju}nszMCu=TYZFLI{%oIm<}7w1xTWBfMa&xyH|Td&9c6h+<{GeCKK6M z&$HAw=rIxp!7dXv;|sa|glan(!Tbe&QZTF#7`!>J{V&9a0S4x5GnyE&GF^&c2Cfv` zIf1blDwn)$kGi(3-$Mcnw_OPF%_}Z6a3udPX3&tDK~m)Kb7iS=uF2VZgm?r(1H8?B z$B3xn!W^yB&@4C1Bz1kwRR)($B9tQYOn?jQjX-PQ-iW_a0Z|T4{o^~=U_+9Tzh7?Y z6RKN-gU8)pv#)C_xl}N6JiF(hp-0H6dC)~j=glqNn;pzEsI@5=Uz%!$X;x-om7c9{ zHf6kI0|X+^9RcE9^RVNVOh>VuD38>p5Sefs2;lUwYfe7d2)}0lvHF=pdNl+uU7<#H z3)4vNDxgUYIdYgThRCEEok6B8;FraE-QL0@cUc`xzG_OkLZ722Lx+tu=ZKMJU`XQJ zvXtgx%8~z5oWK!nCd()Z-UVeR*Ohw=e}TF9yQ?D1akXqr46sx`z z2zH;C@}_2ZK{h8whwNM6wzz?&Z8zT#Z`^>X(TaVk8goiu462ITSX&EQ^?n1mVeYuB z+3j?}26CQ_PL8qm<-xPI5F zZboO|smX)2r12vZb{iv0`ID-F$a9QNO~5V#6N0XH(hMx*X4&?;#H+eFL%9r831{dj zrHyOoEXJxlwaxSrDsRyHW$h>e4Mo#14}wwprwD4r7dAyqp`$?E?X}^Bf~w^GQ~buLe`BERax4YohoM(V)e03TR&n^*t&*0Ssx*vUtuqv=Q;{<9}6lm5HjRu^&shSKB|{Bji9*M*K#&WYo; zlp9nTOa!J;3$0e%`jJ`kP#H`kHv0Tuf@6d85Pegw(2IA?ywym8NFs${WWJNLU_h%6 zwNHi0joBF6r(@{lduaxb&mReGugY8HiSmdh?pZyntg)p*Q$>M@&paCP&|u>0hVRf? zpnSM+U4#U8A!)yhC$R>s&N~G~h?AMsG7{|f18^0Pq!edeS?b!=q0H)F9Ad6wfMUKr zDA^vE?sWT{R@@u4CuA78twxrW`%zl&Ln5+F@UZY zx4gMY)a{72KF188;zK|291Y^sFIl-k#3H`n=Y3xeoavDc6G!GrcohJmcOvr_=iz_Z z;1vGcAAW81L#7}&|d+z^nU zFydz8hO6L8d&(S;@}WmhPGSPhlYaYTZ_}DZH`D345t`?yhzp&`znqES;`3Z-{l)|7 zDyPOBkci2xRRL_EH4cD+M4u^Z8MyRTxFd$KJ9|i;N^cs~S8=LIZgN6{oXiKG7#*~2 zWeH8Y=)!+w0tuWH=0PzJNqJL=O#Z1=Lo-V(V`Ep zgzF09UObUz%1!wV!usKTaTY!%Y~z9~Fv*7cl#6j2oiN z{WmcTp&|xGALZ||^TX8&7>!rMqpXpVyqfzc zi!2z-wtn?bA2xY0mVpXVAh#b(6gsHgT18>(giU`kKhtc`2Y-@65_=8@ z*Hupu|3&+5=ncpQxi`>@$Z4$QXz(SxzIP``_^x;i;a{tmU*|nUDGAH3bC&Wow%yBb z>+j)tQ0>6a!hu3yN|qQt1n0z;q#oVxKt%PhQaH^>^mcU9Oik zuIzGkN43@Q+y2z)npLLB-R9iK@l~W%l9v_8`I(=~i)ofJ2v+8+FY7X2-;Pfbcu6~# zDN|3##YU|=khxXpsVM+8*hu<=dv2snos>X}a^_ZeX&^upa&;{fMfeaL4CG9<$+_UVJXqwB z2P*VSsk{P|gKwWI72qKeR?M+VjtiP^t~-PJ0D|4mQk?-3QvLPcAlW$UE0S z${o)19H+HD;KCtR&(i$jibo@illw4)0aId#5jtW0+{f$keIu;1F8cZc@h`-HN}$rc zrV9N1MF{GdvU~jaxFGzM{f6LRvYrBfsUU4NmIN>tOyB~~cRGC74bRGSjvGzJCu_+R zi%c??e%d@55?sp70{0wLl%6u3OP+xmrLU+grCb?=jr4Y4r?LBj{nIt+A}t)z!mI`5 zeBq%_CJIgZpcY^ZkHG6VL;_k;K@xPX2xxnZ(%pE(HTk|kJeVhDF4qtJMDD$)B1nwB zgMR`k$vscuw5&VvzP0lAXO5%&7JE9%AIuvw!F3<<~Yxqu$Lda5qb!|}d;>kdHt zNC#ftuU>Gx&`gGRR$0*)(y|g;Do)z1&n5~uCli5;4n18(3nR3fNvs^OF`iy~pi;7i zlVQ89%*@bEYfKitKr;eYm-Vk8!UEh4B*S9%P~dirBT&>5kxoVJD_+M(lPepaZQLja zdcwjKjmy$14*X7Kjva|S3gk$G=1Wk6d5k=xVG?da_uj9C7PgRc(4#;k3u7mi;3*7j zAG)9Rdr4Q>w@Wc4v?og_&sJrXj>$;fIWa*dCv81w>0<2_ye2wLonY7Un-F!qz9+_0 zAe;{7za=7aUjgYF{@H_ArIB-LG9RvKI8-UZY@>j)P-Z+>GV81qF;zx#%8s%(9~t#l>oQ()0GDg@prDgCuo!lAW~ECjzHB^A?SOU8|2jZ24yre zr8&YHQi0(8SWAZXS?S1B6qx8S2MB+u7qFr+f29C+a_cmV8DvZ2~hr4BM;?}qZyEs5QbmYcTQ zxq-Su4P`CV8TDiqzBvt9l!u@mZ7(9Uku@zuSoaK6TlibosshW}MpXBcLE&OFG9}`~ zS@}DL4`F(gDMM1n)=6<~Wvt~?su9LnxbJ_)@|8OT=%fk_qQJG)I`Gc`^azNfKli%P8X!hYFyPzu*c}J}@d50>tr5TZET;knnE7Y& zfw4np`W(Oo!~k;y@yc3f0(#A_}Vw zsY)M65FN)iDMGbRWi^iTX!@>L$qvE%JpjqovyLffq$VysX<+DJ12PI=1|2Dl?5j9c z|8N~Vi&!_bGV%@8lvtXN7A1T?FIFb&&(OzS2QEud-IotcGC< z3?7PUbPd3OP(8|=LwTc;uH7=BJ|uzK?(MpJ8Ww(9n}Q1{xysvTGvdnisR8}qA<^Nr zr;8DF*7${+4-Rl46<1Xez@<_M9q=b4lUD?fMM?PE^$APvfi<^)-{#!vbrM#0MmOkge2%U#|+(G7lPE4%i1R^*yA66R2$F0qHO4H9M+ygDc ztOA5Lop7_eqz{QiAFcGeyoaI6M2L?57qARMxhE(TDWTC)Wua?(G?ijK-x5h-(mNtv z(K+Zmz%y5w%9S7Tz>Vht-KScYr4mx^mC7(6Ml>&Q3cVhgHko$#cDyDPux|@upb5ts zA7!Xaxo5Dz8|QoonDPy=J;Y?-EWeXe<1=^&>_3Wv@CdpsG4?;Epd~YQYKrxh0D2{I zO5u$caSa{5<4Bev*_9+(CQ8UkYo6kG)20Dq^dfrZ57Hr#-P^wd^Qv$X=Q;^xh<>G_ zdTOTRZD(`IW=$`ms{Zl89P;tLN%*m$J-DpW-Su|RoVnHn_AEe_@9Fr1yh-XFQB;B6 zD_UO!@v87uEwGX7&D`o7EAfj*@A{cazNpQ9du`sQ>sK!t7G_5WB~&E-wF~|iVCrVX z7%DAA4nt9UBgvLG2w5UV3-Wo;x04Vku9I{C*pm?p;us_*=8<^t3Tf_xP7*f6+O!_` z(gA|zHswm(OEPj0*qhP%h6hvTOP`lP9H3Uy3PBSYy40)3Ok(^GJ+{WN9v$cvg*9jd zzET>YL%1JI{(=$cj0NtIU6q)Bew(D}>gV3PXgR%4jPmDZ_|u9;>LQGDNfQ z+`)&!grt<1X2?XGgV(~?Z2QIR>i*7(H=n=b6&bj@uI4xMZ4OxA4IMd^FNZ-tZX**X z2eQ}Lxi>2oFU;M$5=I693yMRxvt6X-2=Vt%v#QKUqk~rzj2@N_zf%uwajcK#`kZIZzMPI#`GT7m;!a5t;%x1>h~Ptd0_p zrUp=!*;{meHwyMHhh^23|2-GaQOSj`bS(t}dd`dXCY@y`?S-br-)}F?<_i<0AM5>t zY&vk}4SM;W!G)|Eqlr2yFT@uYWRro3?7u3OVOf1gmFnYB7j9kaT0ac4s9( z?(6Os1E-p=s9;YA8E(rf&?fvMP$(y!vKJ*$OtUOYwM@&>>2-Z-;MnoMJ<((e!$>}F zCk9(nPJ)1BlDv^pDZh%pHJi;NlQcMk>aV}vzRMzqijj2?1|E!M1BfgRekAG<8*)-! z39qvpnvA2ZgKT370#8rGCRT|j{^9IWb-Oko{y!psjyM7pALY_xJ*$eELBa&ow`GDO z7g^#?^6l{m5YT3kRe&+v!!)_AW{!)R>|Ne>2-IRTRhI=cqz{hONZ`xLc`6IjVjE`**6een)*H zaqwan?d;}RW1SV7DGwfs4tpIVITZCjaR59bodqI3I#N@^9~9YhH-oZ82ZeqMWWr85 zP z;=IOApxMAvc$ls#UT>go@tE#4^FuDH7HcH^^?~~F2lJ_PW)+NH#Xx!41Ahb@(?LtJ zp#CdEI3+&m1V1NjjcGkJ;6C9p_tI-W=x(JUF__m8S)h5m`W?@&9DMw|ER{ zj?i1be`;Ey(4LHas29yOIlO);apM4RRmb9Y{qVMFnM}s$Qwq=3eDc~q(iD~Il$Oqd zb-`kw#(JVA!w^=YDONy%eP~cZu>mq;J`8?<)+;Tz)Ix%bDyV$@+IJ+Dg9-^fn~;Hz zfMbSSs%Vy4iDbolOatVMkw?)Vo`KIQq5M@N;Zp6iR5egR&~E-G7*>S3T-B!efAAQ@ zieK@-jv~1`R<0i<#{kUOIN2cZv7ycjH*}Ki$+?7QKc^g$Q5*l#CtzcFKovrza4z*q zfQveXn4M?nAH z!76o(u04ZlSmQ*_SwozlVp)kKbd$TC6_8aMM7{WFeJ=J!P1VMEN zs?=wa-HB` z)(@=$bT49`u;=)^w*cW#TEUGD(~T<|S73xSu-;`V;HI##@*Oyqq1{O&FE5Ba&~c^< zlw34Y?4pI)MCkq9h*LlA=QpD`?C$b!goPFubKNJ69!v>fW^&1Gsxl;At#g#B?1mpW z&BSxgMA?|1;a2nqlOtHax4jt4Cm3&546edoOw~llfwPVoE`S;t! zhjm0b&R;}F8^IzJGMm4TdXa?(g1hGj3`}cZ4RZa8JG~R47YRLh(71S!a!o0N_FXk@Y4J0UJ=P zRMd4}aa%2t6ospHgAi#P*$T>uaSyY%eO1=zQ!vF-9(!yQx9?L_@yLY15=?==d_i^; z8tEAk`y~MJ2qd_t$JJzrqfHX@e{_O`UzQ1!2Wu;0ZwnTrt&6zP@9^GeHtIq0>T1o( z3s}XoDfnCn6F>^M?Ax=EW7Z&h_Cb=z`g5W!H*sYcCFOe6(FEZ4?FGgH$j6|uUW_A> z;DY&W(PQ!sp6}>JRvR|pX}9<@*M#RT>`PFBirZC%5+yO$5iH;YY81kdK~P?DwAnC< z7G#qcnP(3YAsU5b0T!z`dM=%3`)K971Y{J`lZ!TOBZD$!O~e z+VwRm1V)s56q6M}CHs<7a{YJ@ue4}tS{bR3>)-lrz^VRA?TNSyE+8XdkkE&_(v1dK z;X&4@%pZzvf*`ynktZ5c0Z%r9Qo43Ja!92{ z<5CPE77x?4@oWOI^1gJ94~fH-xe3GL%88bV0rnGQBYsw=gl^A+7{HYahoXcR%3{=m z=LTdd{s1|ktjs5v=h)ntbhAlu8Ie?3P=wJ08D&G?R*vFyN|Xc>4cAjCt%SyXnl)5{zn-k`US?!Y^1h>4OgU>xKIBP8ZIare&~z`*R$IWoEu5+flEvdqIEuk zXY~Uot-$*W;Bo%MM```0p10QmJUPbX8cdLHTM$PHiejHI;J#NYv}T-9EDw0#uBl*; z9&+Sd9M6{SjSq}w<`?{5pRNna;Yq3ixUIJDNc_X)?Ldu=dOj?qzi*zVC?pI84p_$B zw^#c#wc0ncT|G&c=PG-aF(EiD6SQG{2Ty`dT&CdRU}6fQC3ztM{-pXU8~pMHyl2po zLY)$X^P(GnP$W>dFjGYfb0UmJlw3Muhd|-rOYjG*CKXoAD;Up{vG?e0EiN>6v;Y%F zKS38V_xz;0U)!lZD$~i97NMCTB!`N-CBdwUp~=>zgX&>v6ujcSccZB3Et2t(gF0IV z>?A-YyA;uFtuy%faV%)_G?5O5WxCCd*R6--a>+iV-|BISr^D*W)OiIIg6zTr!YHr@ z1!S1SDI;#6IbY+qmU7go%R5ozhXE^mc^|BTqd;#6kX(7varW;m_w5viyw<{e>``NOwb9^fnngHN%_mahh7qQkk^Hoa=?7HQmzJ`hbN!cVF6yP zSL&L(zGe0bKL&p5Y+{<|0F_$p1SVM+6vnf)bx2E?+VXrg7O@>t;xL!*{Lrlw=9W(B zT|*hfTc9FLP*o|~d&j*;p1?2z1eCQHBnQlzN;QKuV=C2Wv;r( zg&#%Z$NC0TtNte`GIQdhWa#UgjU-WKsfd&9y_wvfH>{%$`->A&NtWx&X-CKpr$f^z=4kI1ZvnR-!*r(soFd5{5;>!4G;kh=VtbxuOhJ- z*cz6gn($4aBD-%0&G1QnVuBTXZNe22MR_GG&O@Jzp~Sc$*+U+KI3{6(kHi<4HBS*d zSO=piuC>Dm0c(H6i^bfrb%_E_doYbSZ z2-in3{-70}8Cp?S@UGcFRL6!D`F0AzaIThKrgXdkwWRkRk2{_hzMT&03WGYc2~B&U zEGJc1Y!HbvawostO6XG+hBqF1Iq;()lF1u&6rEJ>NLQgV=HbgZs54PHt~ zd`EM)2C9Mg1YQT`8I=M+2AzK=@S?srKO*54Pg@Mo=; z9PxF!@$AGu&1yV8%vOBK6t`Cm#L7JeNW^uxrYtM^6!kebRjO*Z7jTbwoi)iVLg z&ljqHHQj5&Vyu`kLlN;~!<Q^78$SDm=Q;{6TO2x5_kQ)knk^+#z7gRyOhG0Z0!xp&Nkdv;1$KkrF zAOXL^8h%_|v5GHG&qXy#{{Wc{iVxvjK9plm%jRPf4XBg;VY$qXJZxQE;0$yPSFhq$1#IS*;_U!VkI-uSiOA%ia>_J3_!p zgRu%zdQln&YD}-%H#g3?vWRp9H6j6WN~&p&+p}A!4jVs)bgUy!Q1sn$+$}yOfbp0@ z7H4mDJF;SsqTBLX6>;l>6%|HWOiCd0cmtyk%(js%*Jo3Sn_JQ0s5YXsx1wnJd zcS^Vldw074@0N#KZc_iK$5LW8JR;>xoUz(}_k`@j(=Wxh;XOkYM$lezpVn8I_m3mU2e3w+YAje<${fRj>)i_ztp`8>VkL+VfdyR|_`@?n3USuhA` z^Xbq{o~ed6W-T*tA0S2FA66gE);gJiI=5;{K_)7I9ZV+3@-BRp`XHL}4LUhd=@8_( z{0>==X1+eg$ANO``hH;nLl66tf6?FKAdy=jNHZ#3Fb6XQUraDggLpZ?iDoM7F(Hj7 zsF>Ch(HMSmk-O7WyTC(Xt0UZ_@f`r} zPpSh!_C>QgxuC%3HpdUj`x$2|w_R~us|5pM;lH5Z*1K0K8>zjj(x{HaV>kAN2PbHL zY;?5j9}hE*ulvslJ!d-T_VAI4aeKrTwtwo_$Qbx4oov3t zFiZe9j)O>21l-Z?G89ioP@IYZm5Lb?*$p)!-R^lceSH>G1xf|&9PoK~pq?nAiY>Y> z>k-HS;VVqB16~Tr1C;1#=~RD{H0yY#kM!bujSBR{;sCe5)@<$?*0`TPR*`okkbF}i zf`J@DP>`X(fll1wXmo!WoSaVq!{=lHKB8p6i|=a+U?2+g$n6hhXpI*zrvowjS3XS< zK{&|jlWEV{9k zkw?4BX7=1PIjeb8o2wjPr%a>v!s$8xz{S+HQ}#IHFpb9{06gFKCQW&IQY+7Cxx4_{ zzL8&1h?wk+tGFovP4j;34|Pb3k@cFE39@3TJkdwyiIq~vLN8e_Tmvh5bh0NOwEqp6VmeFU+jR>}yRDX}QB5Y@S5;U)5Qn^#y+Y5?Gwf$yFa zbifV5NhL?vB%$RP?a2u2=aK5EFhf*I9o&@_N?0Wh!1?{n&w9U=TVOvK7bE9A12~H- zS>FN$Xr%;-=%%OC?9lUt?&tFmFNWLSm*5V>0i#(Cv(r;28R{_lkWz5pA|*%QtBp!7dE+?92PQ**=D~&0XSV+$Zy5`!|+k53` zhvVeW{ia@!LcNo8#%LuYV>5&qc=<Kc^ zy5RdTAJ~}qr%c>~rxwsYETP-)pGOO^vmaPP4uVWzN97W1V)xiz9~uD)l3GXgfu#;S z9t_ChG(W4)^|Aff<8x;Mrf5^!Ap8ndI4~z*^2*njdSX8y+loSS0a!%Q>Wqj$<_ZmL zf>DJfr!pbD5q~vhL7IPraK2yMJA5=sc@{F|$|&ZX3$jyEeiojUf#8TrL*!$I&5)C%sey^mT`Bbe0tYwjf^~EEhr96) z=unEKt8>3g13u5UI#0y}H&c1Xb|Ks1{vAI9$c2P}x!Dqqn5FCG_8b&NR@;&TY+fcz zkcixi^-tjeLU??5l#P0EDS_j&FkoqmrUewo*3J@JC?mNiSLBV{uQw-nmsn9k8OO#(9? zEWv0x?~dOjTXNOW|=n2Xv1;n9{r)vS9A+ zIp_}epA*Ov=mzn#yBcBO3KO(4hb&_FWAg#n6!8c}BevKVqG6Lq2m}dQ9g^}Xp}d|c zA5TyZTIN@bHSNoM3G`J+{>)*QUGV+ENO@2#&WWcrDU6L0kSh2S=$X+&O3m{T)6{V< z`T&Jxsl0iCO2I~jlZ5CYu6|(B+3WqeU(XD^OAkuq1AG;QB`~$T0NH+g={3Ka4)fR? zET2QUD;C8ca-6r@O^`pR5!>XO8$bsEXddu8SNEg0A+G0RFY8=+=N$xi9o#hUY=CBjzmCY@EqvO>-%)+t0CyhjbnAH z5pxX+EHt>`!(Er0Fb(kExv&l2)v@^`AK#C`Q9z8~qbe{%A`;Vw`~}pIM?@wFAZ?F~ zBnT1|PM>>%^*+0P#8d$Ai<$N=wa^)STGVOk=W2AMyf^R*=T!N-OjdjnfTGr&(r6& z>cfHG27Ms4#?&?PvAU2UQ!heOCPoJ;*Hlo$gw#<|A#uVDcs%$NX|i9!Z9AN%XeU-S z{gtFhHs<4#|(NwzL;+ z^B1mXX`ui6`@Fo7dJDvl9uUjLU3?Z`WO9L_6UBwZYqT=)YryA!2b`=*0(R5a%ciXne96rlm1v z2qJQ%ytz@wBL~tSj_flG(snHYdqcVZ(Snupk3#J52P(|vA7nXkXfE8`m$;lY86J<@ z`_W?JD}4R%519SI!F}0c?_jg7NY)nTRcAB47)Y zSKn;)+gy3L(&%)4k$(yho|kJRq!Q#P0BJTJ(P#vz#^$q{76HO}<_?7C59T#SX83>z zpdq{)V&u;qzS}yBTx5(sM+3Xl%X9GD)eZgufh=XPmka@}XFX|p=}~GM5)@Q)eDGi& zjmzoa)dv0;P`f9!MYT)jS2q+Mlq)Dg8z9cciTvzT`e+Wpj@hpwk7qx?73a^AI)lLzAgM(Kv492m{rEmh>wXhvkSZH zBbmokxF6y^qTazG+m9M0ikTB9Bncb}eC|;wK0o3D{MZ)#k3n>iTP;vRL4eFuIC~58 zKtcchP%T(2o}FbRm}WtdiU$3|C96{4#Jr@eQE*i5OV~;fi!AWv;2nP?W;;NG(&0PF z6$J#c1~xJ|##-X&GC<5!Fzn4!PJg##>+=adK)j`Z(*kaI049sO=NcTpKk;`Y794wh zBD&0QitiJt8FZ}~^YnQh?N5E7(o82jNy(I+8!py)X8}zTknWjD0S#UN6ZyYut`U_y z$MSOalFpYPgd+g>IP*$=+KoNh6qnO@?&dVee6T#)OFaS=D3*j#_IEmae2CBTbxQ2j zItO@BNdvYcTR{{98#~W^!Us5M%|-B6A)F3_#?yt5{e$L2a2ArL3*2vFfXNi@02n%^ z9VKioE$r`_O2VazX(*>;ol-|F9P+?IKo?s}50GCxV0it>Z%a_h`oR1CUc8`M`SNPW zDFuP{Pq3}hO-@ab=wGSyYt(bF*Pf20sfu1P8_L+~&3=2V?Og2=Ta;unjD1Pma&TH^e% zm-6y@T+go!LqHb1Iez6q83S?=@#9rDeDrhS&UxdaK$v4HE@)3To>cxJ2;1D7N$3%!Fuo#!x>1Iiz~5MF(o5Olb_+ zeR8vgqEMzPY+N2hj`m5xceQ?a4R6clx)7 z@;N3@V#ouhDd#1wzSqw1pM;538ExS4EVBT|{H-V^JoFo;Q1&!RM)-X<$#;BQDgLAT}-pdoKbmx_R?Jq_EWVG zI*>04@Z%OV|g|{MqK)8Rqo1B>}vTO}tNAO9> z?Yi>J4Iw|BC0Y7sb*@#+H0l8PBxk4tdfS36Opo(-h@@ZXN?24`L{UYbdSM&rmcZm0 z;KuMBqX;*AeJgVhVMMs{2c8C?t3sG@f(Md+Ukyz3Gf;_71{~!G-T?11;SB;$OZgjl zKLUqIdWC{=ic0X0V|di&XV2)suw^nSVu0zapx^mFWH21O?;ca&e^SuppFx8UTf8qH z7wvq1Ur*+aZY`fkD8#iqMQ;cmWLvC1g3QOLP49?CtV~-IPRQ*43ocKe%C`;Q z&)67MB2d5TOtXTADvew1oopN`u0>@xQIuWzzWg!@N$-?DzK^nm-3I!ZD z635^lp*_W}cdbt-nI->a1%~J9A#2>V@$zr>T&}LW`P4|Sl14MnoJZ1MnAHUpAndti z6bJsaaF06?JYD}Bt9$4yBvXSoWf6*Sd@NqA*gsgyP!JRV`i$XXmKY8e;Ebq-fDXfA zObT6qgrPz#L#28{Zwz(iM&%T4J8+*owM-y;kPiB@pPY6Xq4(icaWR~ZXyYV1|1Y2q zDsnn9)*$pS-silz}EuGuxB>$Ku_f@Bov{^|KD_E{Z5~0j2F;J#)@(B(!CWG`K9ao^y zqY@*76ybRkYa0D2KS1jONYDa-$QN}&UF8mbL1~2{koTbdY~Hn%OoUdzfFO)_>_q>u zW$E;a|ARZu<;T&X-2j60Uv9H|AE^V z??LgtIWqD;8wJd{XUcgP!6dghi$9P8FTfi~!B{J)%z=m!=M7s)C&;Gpp_mr6+N)=8 z4cr5f&pA2y;piQD;otcVJdl%z3!B{}AsCL`hbq6YNB&`<5ct}pG}IpY{;ahheIAqs zJFNx2rR9;-Yh~d#>ohONm!~IM0`Wx%z!5$(n+8OI?~NZKDJMW@3n36_FLjg}5h9tB zG9}495L}V><_!hCTjg%H`AOdhsW=&F64q%oRggd?fm)<4td|)SL?yMEa_GqlD7V9* ztj`~Sg}G?)`CB!=P|$HR1c^cy)XC)!xQ{M)37Y>qYPg+k!7GL^qMR(bAxj&HJ+Uz! z5Pok+p;i3oryVN~k(Xc&IdoMclcm-aR@h^AxRQcDiqb{-*D$5Lp*2wcKsL$%2+bm* zBmiDuGs)f6EZG)ZtHZdwI!te5| zDosS|QW@rr75Qv0@7Ad&BVcGDMCM9g6bF>6sF?r}8WwB`E27!a_jE)zR}c{QfMEky zT+nyHI8PT0Nbp-Xo~xEoh2`S?hR8iQ>cJI!SL!C3t%9Lr!8qwZ)9QXWS^v0sjDU8f zT>ooCJ7pY@Af4g)17%)`TW%xEF#6IBEb1G2A_`?JYyj%hE!5xTfqb%0ELV`VP$@B> zMXBTvncRFVaY#e(u0RR~n0@O#A`C?G_)-`Z?OLtw_;TeWWG;wNL%aRwCRhz5a6h}< z&YmIW6NVIk$CZ=%8y*W?6E(~^p4Zx+xIpc zA8ncWGHSS5k+!h<5^G=4#;q?%TIngt0+6-3%w!ubc5-*pcIrf9=j4O+kyr*JkcbPb z(-ll;P;TTQr@{)jLXgI_$4j!QL}4mDVoLa{l9F0)3_zV&9(R&3CgHbYy~|baClkmW zc+x|NsJq|!yLj&|AtZ?Xn1uX=jH|1EHn&3=e|F8BX&G)SHAF1aWou!o0Nw1pI6PS zxPjiDw;5EF9)uMg({g6v@YPVBw{-As(zFZ#{j18NZZ($8-X1#s%7PO1vm zaX=%$0uv1yOLqqtkdsF53OEgST*zK%g%q|V{!TpaU~!!;FbIYAWS}u9V^O>gKb8|r z)bk}5gfTdhDi(@TYu?iXpV9tskx^d!ykm}#vBECl$25Ldh~^PQPaa=vtsvl^k^%?s z(HAKEzb773_Z5Ji;}~_!M_g)bqU6r^8cs3_Mn^BG|8t(a^>h`((-HdWE_fXr$^c#y zEtALp-Oyyue#|(KI~=~_bG|OK@z`FFPiH{<#BZV@39L7;s2NvSfi~n06oB51lA*xH z!9<#B0BAxW4i!E+EI!u`+G#A*bRK7^o3Pz_82-wwF4r6A#Nk&03!_E|7FxUb|7C=M zQW>6Ndu}Qv>*=++aQj+Ia6j6J+t;;`z!*=cFYzi+4pK!ao|mfz=WK`#UH-&5LO~oZ zdgui{Yfb`ungUeE9|ZuTsD!8u9oK_p_8l=-wcz{fbIQV0YJ8gVNTlga%ewuz1Sbe^ zT}Bs-Fms(Sb2*?qVA|s85i*#st+$hcaTxN51!_dOT&{nETK`dYo_^7y3pa4NC4@qT z0f6mcrin*qm}GUJ%J+>7rQh26>|qko%K^p=LD@~)I{lHEqC+03%IEwYnmmgF!UNs1 ztQb7GVpr{3Fvvz36tY(?p*%3p-wzfbNbnJSz(6s^Nh5^WK}CK(-!uZB!MA-IXB~8+ zs89kqFQIdNc5aGHOYKxMT*Usni|=~|0oZ}K@35&Xu|7jc@Tx1o@Ev~2uK|DzEuSEG z|NF)6Bm}6%5sK*nz0!0EAJg^SJX*a5+_9KrwMu&zL;*;Yv*!ljLE;_t%7`D@l)C{( z%tAv46)AP>zzIRDd%fG%`mjw4%LXZgA|DmC1trd(m>WOG?;B8E8`8sgc3Wc~s@9ZI zB~rF_|DhFToX`gCVj2f#sGWTE3o;f>rq%C2e_uU{eEQ6$dOX}4yi(xiT=|MnAN$Kn3qEnp;3(5!>2qG^=2L${@11L;d zEJQN$-#!9ssL7^OBBLtm-LwtK1Q1C=(!ykS)iYmK=BxNWAzmP0sos$~1Z7A(01l%t zI)iR~ib?6JR7E7nOccrDH_Rn92CpCpEWFUriCIZXfS_cMl3Sa0f@DbjW5{2Fs?GmOZ~=ta(UDQflZkXu+i21ltGVPx1nXzeQv%9EQo%n zW$*p*jn_#!i9)cfzWf>yj`Og99*&)_EgBqTCcs8Y14)2Pb)G=-tx|T_PKF3mE*V9Z zip({x)Pf;Jj*r)!F3a&E!!Cr5)~UGS;G-X19;SeX2rEw{!Vr@MiBBup@WdxL8R3U1fk}fTJP0@K z7F|M`Bx$8bOXWQj(4@K^q^#+;oW6l83$39bo76mbIj;N0O6t%ocJT#VPtJUpWLq9O zxt#J%)!-WjA!vZYXf*sqFA!o88h`4I(O^Z!;NnVSOlUau8B{bFc2x|UPoghT#u*HP z1p7R5o?4GXDk(v0LM(n~Gyw8OYisLzvqY@e7eO9*0y>OpAV5a6dh`Rd4-x|gP!FQY zD#>2B0)7~T2nPxsauOS>L&>a^13t=`*0}mf>o1L!dp&C zP&j`&AP6vx%%Tp00&IAWKNCSZe4l7-bVVEj_@gnmq`6#Lk64}5pLTVd!17?6C6CD; z+31fQRTu5p@&uFt$AlAx<;*@)#0v2lW|#@3t|x6}al_g+;P8B^n)TP*hsP-0i(LJCxf zW+R}~K`n2yo#D|Ik?NkT%NTBInd-Fk``~Sr9*__ zMuPpi+-Q&5+!&|@HG4u{sF;ToRat%+Jz`jQI-@fjl7aa@%nDW=+D}%9jEkNgei%VJ z>yp@Q-G`U;8?4J2q?{Z_+@tuSkw@l86CyR$C`_f*gn;g{ntoi;+ta;X!C^yuyEWxb z2&M#Cu?F=WD2QYOr=SGkFrz&c{XT82^{APdfvd%`h(;(tAxTq4?K!7g)~ttUeFRo!XNrrS^b|z_VM|N!6AQx=MQM ztNQA+*amsRHqjo(poa#AhP|{D>QVaz5kmIa_!$0@pwC+PHdKJ;l0-^UB1Ps3L4(7! zqy??4N)j>fSz2;B)pa+_B;f>-fYf3Hq&Y*O`^G6`a0Ob4CLIiOh4j&{0h24_LX`^{ zrRpsw4jUzjP($i@fX0{3K$%8IChF=Rd^P4&A+L%z*yW^8f5k zxEQ%0ICJC~x*VXyPS||B0v<$Kbz_mUrjc2^sRi?d)2T;(l}HbigTiv{I=)Cm597pM z5Yi<%JNz{*D*{yoDc~7?AQcqfz1ne98$=)rXSov*Jk=5a3I7a0O_>CME+x0lOZCD5R{fsNjHn7D{2+CRppTS7J;-2(x~|t0wyXr+XTpijOt6uUZPf=Wv;#Gh z5PU#}J76WzwhbM<6Pu)AgmPv=HL5(~DcD|Jd?cYNdOmg#CYb(E3`PeoT3?-D-!G28#7>)N$?zs&+iZ~k^K~RsJoUm0pIfj$R)Rq z;G}DXahA3~Fe%N*b&m=}4Be3UZ>`!{=M_1VT-)r2HY)a=iVlTUttv|pII1l+*L30K zf<{Lqam*y2fl(suk>g2gOW6UNMJA%}t)!)~)6{>=dtet0K)Dog@Km|{U@;$9OOsC# z!q^9|^b`qbHbyM)Xvq-ExbmU-S7e8!Ym;FXDsuR3kpO1Wo(Y#}FtfN}@+K=*jV%s= zL^UY_NinHwg8{^qoG%iWP8q)OMe))Pc5POWIPno+}=^FIk`&WOYAGWivrAs6WM_y@$n z!4Fj&4%wlPf}j%!0OJ{DFxMF>IuYe30S0y0aQHv+(+qmRul_F z#3DluqkwWr@3Gyi0BC2=$c;l78`W?FbRG_sVxTSxLT~i-Lv|Qfl5VzSKZ5zR@Rer7 z7L8MZMm%Kk7w1!!G3|?_cOa5V>^P_I6}EICP6Q{l-q5yRmkG{7bO=>09~9;SEP?-q z)KjXd0kbMa)fq(!x)8Rth>b_g8o)HjSf}zAW~`T z63wytq0s^RK4m~-CyogbrXs)r4%aYi2k4cAk`lV-6O_hjjW9@N+L9E>2pM5k`cguJ z3Ic7Aqw`$$O6DF&1O+~8rUaNKh`~D4Ku*%TN5+wqz0_%?IwlPisz$T zduOB9MCY4i25q$-xMclbBJ>JB8YP}V-{aZBDshTplcUZnaLI15Y@A_ zL@ehGg9bK9D&f5)+m{)j{B^yPXcFM%vg9?y12C_eEK2qUowZlyQnnmS z!7OfNyFRJ52xDc92ns9&psJ0Rn-CQsJ|ooVivmx;UJqVTx*`J624QcJH`b4Fwy{)CFi=R z0h?rtZ8jC*o+wfX)c2$_Pcs+!7uF)JE_SrBs#zPz%*Rgoo#Ye*IT)3+U26ctNhw&< z!ZZhG)j%2O@~-B@I_M z6q*`5kD^x$WuVsgb- znePo0tC8v%IFquVcYGrEqe%;BYan#kQM}xoADMo@ckg#hbx^M{SQ|rSoauH-ILi@t z4(NAc;H+oYBMZy`1ra>~*7$2vMX*+p6u>(gA|6H3Le>6^G#N+(a~`4CkL`jvHR~h+ zDJvbUuW(4@6hSa~U%K2Yhdc-6i^&YqAW}+bYDYK>;otQ@!@L{7ga@>z@-ZC1d38tq z;p*y$Y7d*?%krWYC@x?ec%(E?1o~7;P(Uy{l?@@KO!G*$S8kp})5I0PJ3B~7<}~3U z7_^cm3uMneHh6`ZM#~=XDp66o;iUAYqb+dhSfl#e;ZKgY^Dl}=q2cR_HYjv(Dmg^! zkiN_@>aQ%9%K2cbu^#^hUwlj-B5&pqR+!v>gSX9ANhJu(H7$gfi) zUWNq7A~2I;Rl&*Hc)6ebk2e6c^Z)Wi1*j8c6+~EKlv3cMzLA!pel>~Ec>+gcOEEY@ z1JQ;eM710!6<2e*jC&oe`A2` za?<^EQ{k6LqayKA*;JR}pwIzn_ov;so>f8?f(IoNSiH`jr;Jyw20sGj>nn1Qf2TA9 ztxlmM<{A9>Yl${bBJif2GX8^vU*TNh;aiSiqmi7YS%rs0#^5*=2lCYTj_f55Mx%1D zqL7NoN`xaMm^s*;*{`G#eqv2bTaZT75axoNMLDTClQlD5-Ov)A9CNF5Q1e$B z=r{ZHxMlFi7X_cQ9a#eQz6fu}oJ@5;{eP{r&JepdoD=}XCzy{b8KunA#Rw>?yJQ(JHGwH85 za3aiow0ewtCSIVyLm)^>N{dxiLR`Ysiv|so@DkFIo2a7Eb~!|8uuIbc8@#_Lix?Rm z)%UV1S0FnjZv#*i4?)O@cTn|mBnC4$os%fA zC8dRsWX`EjsW3v46B!mKN_bM@q2EaM3wKmWIy0TXx20@!Mnm+W? z&FZc>=78DVd+L$Rrr{m;9CT*B;at)RgJ=SOqJ1me`95g0x%rOEVU4fghB?w0-Mf?qHYb2b7+DU+w@3B z;3Oix*sac`zaWRNrU<2UL181EmWJjeaxIrz((c=sdxzT>1HTzQhW|V+u31ig{6W^C zIEB#=k%xqTDbtkvKY|CTkIN*&pox5@(XN4NI>rhFnZ%8 zDoHDWlkErEh=-A$kqvLBmk5Uk5`^29HdnvSSbzrNS6`i&zMFgafj}3iW zYZ^hlATpn`O&w)NHq`xF@Zsw1Eun`o-sq)ISV__CbGAkRWZE< z{loh(LD}V6_CF>72V(JaEwTPAfakLJyuVHLKi>#6DUy)ad0dpmhS7sEJPkZl2*jxm z1yWlI z>iNJK+FgK{6-#nC2p}XiSRJnR#xfvDp*V=X7BW(oGbdq`#fXzBU2A@1u!_!0&;W>x zgj`ZruKEF55O0REBv&^8q|{dAC2}m1y(R4n^_JsArLw^#&m@OGwp#*s{O--5Fb!Q! zen}6p|6CAjDcVmRd{B8A9=>=Shmm;hbSGWz*)jbdf2oHyc8OzOu+YFeFPLZ*n4#m>h1 zkWbiF)1h{NOxn zkWsSm9j-i9px#_D;5w5U6H4t46q<~fg=h$cr^7e}VR4ct2tBI-10h)|UKfK6A=cA< z3Tzw=eN-Yd`C%gWHH-Y$LYe?2Io6?c0Nu( ze1nk0ChUa-N-=&8ancc;6QY$mg;WjlVZFj%lR!Ovz$qk3K%FOr1vD5E^wVl2Mu$^B zZJT8;vCHP$kYJ54c!gq*489BC72tx2L&yPr2jDO2$qizXGOw~ElvJ0w`_7kz=G;)a zEBZb_X!-&4$A$^zkW=q=oWepe<#6Yi`!DYmZIFM-N!fa0VDoeM3oO`VX+~>F6&MaT z7#md^*mNY0m025(3^)rxKm+MuA$%m@&ZuKr)6sH zmI}tPB{{|LRkXF$60Mnm{ov=+`CI%PQ#oJB#Dl=4bvx^uY2{J!aCs6q>}4?FrVrp8 z;t8b9$jX8-?6`Pll@$=2&Jay#fGZz!fDxA9tzN~uRL#(d5)aU)YJhNJAsN&u^Qpp3 zR6K|uJ&bcMXOm~DHNAxTvIky>2p}mbC6xd}qnU!snAmS=$CH^<&$=)lj*Nh;AUJve zg`PtH(W-WmOd}K+xTl-az=rYc4V{v&6YUNahU@2-YFN{taX1z;4Ldgt`F41M2>tW~QYS2|Gv$oC z7Ab7B0VcSql@u)iK}tvmj-}DfjuJm*2jI%+w%`iVRyc;7+!@`jX%HSsenlmIcNq5y z;vxp~oi#hOAjLF~YF4X)x``>n>Z z>H*c@29k*lYGY(AR#P`<_`n)}x~A%HbtTiv_KC>R&ogB93WQ zDu)~B=N6)>h3caMgkC6I=RMq^D1MYew0$Z$JZt;2GnB6GKgAme7!2hXl^d0x@K8a4 zz*}a!_ZJLiUDrN;exb53;*!Bu4oOPI>{FnfngOR8Yvi4#XK~}51s%c|eJ$#v2%@Se z`lBpeRfr?yf;FoNl$? zPL6Ao=)|?`4%svF;}S_qrjGrGLBiVkqfIh8s*KHu5Uh#mx`ahdgnWW2Q22`Q-Lx;V~MnriO1mq z8yvX6%uG|aYSRS;?5vf~UO6eyEyKz?!UA==;=}YaFB8voQkT0gQAmcbu`4(|zMWf) zf1%DrsVb4BoTvF+Is!Q8I!uV9!B5<)BxIGaufTlTeq`rqgrsJBIu1dszQdpH5>fwC zn_Y<_X~IU5p%&^xnT~ZxQ<*#r%4O*|xdMt&0I(-K;az;TH`iE_>H*oqab{Kx#GjHh zYrw|HC6a#>@<40>uW2A9&z4q^LSr(5n7qg+579IDpCo^xq@CH|MWwd@M6{kWq4!1hqbQ~cOUB8~K#9UY>drOEKSjR{}>=LKK$tR0E|IHr*9C`UBWQao; z*dY3(Mde0D5iILofg~<`zS<(LL!E+LGvWbCA!^;AibD^OaPqk3QWgG9PZe0uc-2wRWRl?JIj?HfddsSbja8gZ3{#2n6Mbp2Ftb753ub{H*27Y zluHa9L|Q3f_H&oTm` zdy);{8Sx*NtR8nb24tE}4mTcQ?!7@I)PqV@R`sQ`{+ zsoE`+PdFF2Q;z}5N`nw~nnRkRO%>M&mra*Ygv}-I$AON!NO@^L#8QA9ASuRQ{fHuV zgVdk|MUTn1so6&S3pgy*5*|porI0=rtcL+9d!Jp6elLeS=ADaZ+x-gB^R#pC#|11B zJFkv<$dh>l0P(uD9A85?Afda-5!&dD^$#Kx%e*ofx=M$7CKsCp9%4sIR4#zOQ{ur<@O)xX{eeWdMeacA;>PV&!eGJ- zGbbUK%1~(LT|`}g)K#JutjfsJ@YF&|4E&#?2&X}LOmhIgZEvJdhw0|}MGX954w4IE zcl^YIDzR*j+T(G`B~8sq-LxU=MpMp8YM`UR9eHXN$pWRg+u=_|fZfhs`D#r<_8?YR zBOuO_QqV{+Qo%}P`MIqGfu0S*gCVSUI3_;hRErqVAc!EFpX&!`ITAU_t+fp8EHw?u zI-i;&6Kqvz71R{{fBfgF8$p)kYV-f4HG zUgt*?M9t?#3wSitOkho-xKTFFpP)}9K<>ceV7xwNzm={4=gQ0UqOzkcLxeoByehDy z^?ibcCV)^ooW)d+*O(3WoR%cSlz~m!fRmO?9xv7-9FS2e3N7>~;j}Z-$-u0Lp2n3H zSTIMZkei}dIWg!A9k50HKIsuav#;(VaU=F1Bx{oN$c6RFZex36tN}35?>8 z51*yyW|^PL#tDCp*GD!xS7gfZLWc*Zg|~QzykglK2?8oDwEfW_(bO=(WN?VIG2_Bq ztQD0K3`{s^@B+n6y@1@5ZpqKAbMOg~RP%HUN#BH6s_;l$K!zw;5L|*PK_@7{jT6rw zPWoi3Ok=@jOiZUr=1Louz{0AgEE(S-@ojEg=R~V&k6w=w2;k>@7QIjYEG8Ks3eg_6 zI&5IX+PjpCRH~UW^!WuNjBSa*^(c|-S|p%+Ipz`)=z7rJ_NVl=mBb$u%%VIq;oy=H z>P*|&)H)7C{>KAzb+7}{y^@NUAYzDZ8X&L>Xw)4;%riaQx+|FxxzXETiy?;IFpi)Y zG=0JW&gLXXZ-zv$4$FP&*YX95Z_)s&j4fK8iT#iNmtv1Z^eBa#+hhYo2K=K$yFd^& zp$6pY;5zKB4_2*#j&kv}^fjZOx_v9ak;B(H@jQW03DyJF5)L3|)5adi2d>F)$25VF zvERr!VPfu;@TbMaz@t4ZHVxpg5v6L>L=ByxXc>d$rV>Ub1|fvNg4CaY5i&`b0~(VL z0|cr(Fxx^uN|tU;sUJlGcE}erXHX!#+n0PV$reNI$kPN70-uwAbH4X)b{@*Oj*;-j zkp#j?8Tlp}fI_R!LxLOu8N@pN@bJ<@WD}yn#kx-k#E9DtWO1gOkend9C=EA#-bMc@ z_M+iyPHR%fO-eBLF9bco@ULVI`yX>FYe0c+5=@NC>b2Kb!*eS1*^pVF#GtjpA!C3u zv{r;Fzmy4177SaFctx|MY18lVzT}c3f)M`nDLJs=6ti!+ZUy#d^Lb@O0!W1S%wQg) zYorS#|J4Zhfe@RP-pvt61IjqNg4qIKWzH9_#`Kr;4J9*yKx zwuBQi+I zgQp{#X4>hfFYYXEfY}xCS5OjZ0|G-9m1Z+Yr*x$ax0wQYsz5wKR zS4JEuCeG}}<>k6g-oudWlX>EihCSj{-29DkdHz6pk~VL|b!Edunb2z7n1 z3ATKJ8I6W!YViv)KEnNS;@J0WnqQBho{>ROlo-_leQ^OLl>m8c!pt(En$|J{H>gC$ zkuUzM@RNx*(+iF@?H)@DGysgtPDf+3o-xtd{iSMeIiKt^qT+46jSljw+2Ude#0~PZ zc&02Ayb}3{l-QhnhRVLyAWne!#5}*{f&*d&q;5#mSF9B}&|Gk!1Gghhx8-4Pna?i@ zK%kNk+z_b{D%80av&C)*FQhdXyc(i_$k73aMggwm@hoPPwg$-}45CRJBN(Tp@wp1X zQLu7wv{dEHD^4Y`18k&_kxC=|1`)p)(&=I*Du+j|c11McMnP zBvFCLBMHc+6%6PHMLWd9*EKx7-FwD}+>HZPd#$xNZQ_DybxI1jdQboiCyJ27a%PB> z@eWve@r$mRxOK%m={%CMUT%QEfs@6XDCHvy-7#W8}&aN{MBPJP?EhtRV#uf;qU1LX5u$;F*35wiUlU zRaY%ebP2T2PzdMz0EDKk(zf=b>Wo$u8W7$%FJvj?0~0KNYm(=ei%DH8PK$Y*nb!R# zg-fR6)&OoO&nuJ%`NSkK0w-bvGdX6=MHBj*XS#SbIb-?3+6giO8yJ{MteLsi#hFk?_2q=FHI`5@n#ZXxl1gaYfsX?mfdQPfT^1&w&Ih)N zJE+gdC^L&Ncm)B5VDuyk7y`7>+RCQQfCvFds8CQD!iJolmQ2!adxJi@9@8)9wFh6LbSvjRyqNFrZLGp{t z3gKcXN0v!4FYZYZNMa8O$zH}_Ofm4OmP(LZ0x-Sqj6j$yJM1UtO~|aLp73+mGYl zaAvp(;7I_fa3PFGvO~zu{Nyw14@2tswlkzWM2^e;m z1nW)7W|k+p;dG)KP&w8l!^}H9u!4H&hOXDK)#(Kn66Hst!s)Uq0T}A}L8*0gE{qgJCYm}|*y8SvpzajMk%Dm+(W9zc9C@2R=BMC{p zik!7MVnNe?3^qwV0g+XY%WLEb(6y{X*g*au`w_`VMxlRF#G!t8GgPFhIl!SnrBPcL z_2xG=P;=EG3ut(OQw6f|Ic;`GAC}!ssx%jSOm#kj2i&JT8ES^#yh_e6)W&I=oo0vh zuw$;{ugEI^6I4l&MnagDXAZh=GUBaigk1QeFctXfc$MCmm1fuL^SEaLDMnq=ORqU2 z5xJoasnik2c80l-+moFjz=4nS#!%aORyR?Cm}MC>4zQa=T(*|^m1SSBf(1H)Vxb-Y zn!**p6OiF7Cs8@JRq84q>(inotDN^Jkcguaw1$-mzP27n`lZ$Nq*NDQF#0~KAYi0? zX#@Q<8!rak?dQOqBj;?6oNYtLEHp$nru3E)CYpFtl`MZ%Z1B zmmgQuF()#q&Oog912Dvn6J|yr0E^MT(E&g}lJ^`nyD!EF8?ZIJ1@tErX3x1w-Hwkp zW_~Qss9}*cQsj_HVOSbcqy)h6DWQM@$Ym=g8G}=uxEvTDYZr-tFv zWK$tr?i@WA=6vXpjset>MDcRaglzK$D}oFLaK&(C?yx6_WxPT{0jUZh4cehEEzaqv zB{deo1+eD?%S&RVLm=dUT4hsAq%1*}L+K`rkcc1wkQz7J=m`kPJFq=W2I^)S+*C|P z%k%m=8BN8ti4jPj8Vc0eK`$@TFewy@iLeOt1?Gt0u&fR@v21h=q4I4FMx)~?eo`M1 zpnv>J9DJbH(u*R+MNu^T2sUCuqa?Tjot5!0?Z-hab>$>rAOMWp8;(n-0W&5ts5be5 zYJd^w+D_Xc#hEagnjjWjZVy#c<=$5Q_wxzU92O6 z0~-@zs5O}EghJ(0u$;OecX@)rRmr~)-zN=KNi>QG(m2G&NZL{$L85i@xDdGv3r*aD*?^sN44!G>m%ur$ z+_YRLM6Y0nD0q-AL@!NtZDVMHu<&0HmZK$@tLKDIcav10qqnJ&$)im*c?LdVKdh9V zG-AkpDLNua_O*5rS;K4jpSZ#2v^vRlO0S8IP;Q??SB5} z#E=0!t1P@tSCzDya_@z%hL`qLppMZ<(qC=Ps0oe7sQGzEeG=^Fkok+hoXQVeR}1_G z*h+9sxfR_Fup7{$-J!qwa6-mBFEr!=*0St9fa8(4rR_Ek5;7-_s1VmFHi zQ#!H+f*^c0ke-T=q%O3j|*|Qyn2Rc zqF*17`*+3u}(#eyb< zP|O)^1T0er&Iy}AJT%&TM$3-)aB{P= zw^p5VqqSG~zU%`FFs;jAMnVAn9=f?XuD|XeoA3&3o1ZZhovNwM$S15#pF4b0@?vdoBIM?=D z150^<4bYx~14Fekh|Wd#5Cr}l<-jPA16x8|nPLA><=hC~Y1u2FimXuJG)Hg^RYSS> z$V9)0U4;@+RPVew(w@MhGd~z2iw1#297Ou(ba`frC?=n4w`1`=CN{(`+wPjkLO}z5 zXcc&at@dzv?EL484$!T@)~t&b^w(t(i|A-EAu=GRSQZy|iu&v>!BZk?vb&Pu3l}8i zpO(;vklx4av9VkLT0nlQSVA7bbt-%aKxi61BrLhGIJeB`^g8RBswxO_u}C9chgzyG zXoLvP?l|YhT5IVcO(XoLt(O}nY6prpTXCpZ(PTxXg9w>VWQp}j9%C3>i{LkA7G>*I zX93xP5V3V}$Xk#F{U4_yT>`L@{CIJpc@4^fMeqxCk;5=H>3Pl<7X?#}Ct3xqRx}o&@imzx0V4iwbzS2XovrEZB&C>Koj|@tb$ECOjJ{LM9oA>ud$OiZ ze~P*oj8uU#1hE#_miT_w#4sQE-Ns}jerr~$35 z<;W-XktviHl2Wx9ro7P35Oxp>Ib&X&D?$39DZ>le(V@L;IXA-P!puNGFaShBWzoHE zGx(4!(FV*_x|vDv>#H6rk)ih7vZ7LhF4OqGG+q=oltR+m(0_sK&f6z_7 zOcler420XwW$jNjkZE;92`vYnIE&hh?}Tu5&cd7(BhW~~dXm2c4;f=Zn{AQhL-6o6 zQbb%ASDkXADK`suoG;FD4vE@ME(773R>5Qctv4r>(@Au&`VfL+Je3KJ`~x{GQ5kXo zg9KUZ95k`PMP0Y8t)psV(Mn1eq=UpL`+(FA7oP#WKO2)wl9+{(ks2N>1*ODoYKD#l zd1J$8v*okX%s!(hRH?0rS%=yJ<7E&s3=0q-51@rbY>OWoO_XwOqD4Ew9zN9ZcR>si z83Yix0FI5QQ(VfBwxVZQ_Wg5*+nG{19%(5f_7ws^Foja5@j2`cHWUEX+i3JabXHOU zP%P35U;$-jjzEx~*H9mjA`yTYpaNQVSXXj-S<24zkTrL5bb!ontg#tW-x35?E34Yg^q-j(ddtFq!i(`JM<$V4W%|a?? zrpBq*OF%3A;SFv8G~f= zX>H1&-g06*v`j&1T=dlTlxcHf#lWb*&$5}*45nSD+k@&c2Ynq!B$8M@El14lQ_#WU z4?+QHN<$AY_%Zq(1q=uV#ji!a@dWve%Q{wZ5yXj;GA2?lCp8*CrY8R)%#mqiB%mjP z>h@&ZW-c!?+(o-4K+FC)SveOLj_<6?eY|d`7HE&=<9g8R%wi}3-a8jo@@P@;pqdyR zA3uGsGc=%CI*VulhV2KbYyvhI2Mc9knu>6Sh9T&FyH4TrocTbak#o>wrR|RD+Uear9g@b#Ih$5o_-pN(iW~UI=pGw zqY)(ng&0ULH-L!djdN?EDT#Dz&jFQAFh4_&cypyj3(k>sx2X#q7C;emOfbVcQ{(ig z$8zJAC1rs?RWk3ED10$K4k6(pQ+d7=sFH-3Yfc_N}X58y1Alf>a93m7Dd zzz34@g#7^y0#zmuG688L;XMck#xX^i;c!W9aDbp@qnbiw z4^0KBAPb<))D*-&k&ezqix#q?hQBU#1RgQ0Qu$@vFBtLSHK}%Jy-teKgiEe<0QZW8ET9jH#-too=h4b z2q#MFVI#U#p;z?RqSM1^s@YRZrDoF|$>fn(iK`Hks7pCwMTA0JBNiH0$YJ5%VS^<& zq9PU)iSYz6OFlrgqc^ugiOYx!Bpo~+LdZe8K)D1olNcveG#}faU6~X1QxT&7BW22P z#Ga$49IM#sSOlCe#gQ&WvBNAbSB0J+5B?D>*82`%XQhcqs>tXnvXo73XRfB_a2q9H zzy}6TE7O*V518Bs$x;nl%RLdbtYz*a6@zoZCJ+HpciKKJSmJMxR-bR_90RAqlld-$ z1)&V96fF>^B#Afi1$r4xCk8Ap)yYg4VBB9{87{SZI!x+9t4GZKCiEH5F3d=BC&viDoG`DExDTLiZ9IEP*A?S^NV%0G)Q)9D_OB@M$r*;o_KR zlA*h$MJ5K+@Z5Cj#A=a7XG$tUGQMhBD2YMLO$uh&OYuy>k0`U)ZIFx~ug8Q9=l8oB zI9AR`npx=6=qfY31{48fN>!6GQX^hQIh7?h2l&FV^ce<#J@O?Y#H57Ea7EAs2}2+I zB^L$5X8$7uJQ$`W86w?P8QlXtpbUa=!kuSP)bt{DQ0CWH;v`C}QqhG83Ka}Az=mGp z#r!|Zjs=P+Br%kF!6?{j9WX?^`|V*G!yEk*cR^9Q#Y&Q(X(kE~NtPz~vU*%1G(}H3 z4>Wh?b=g-7iiWPab+S*NI^qm<0b(`xnWTKDjkcLj_f1~7^>vgqtk&frEpXEHLD3uZ z*$^dgwz>Dw*mI?pJ3U{53;lo`pb9zRoJ^EdY-eMZaLU?(0%Cm-P@c0R{dIZZ@mDM+ zuPa8xcg%d~{Hm5$GS$#sFYg7`a znrZe|Vz|*B1qY;mKzj%&>(D%~vrK-pdj1|Z*W^|&^@bZ`Nw$u;cVP6BX5l!iDx=r& zaH7ciczM0T5;F>2C^Wv@Tw8;{kPCftCZv-lP@I%O9bp*^X|Mx*V@(E^EW*(iAfL^; zO043kB>wOExmG1YZ6v^!D~7$(-ar3Hi`yg7#o+Z3Bs*5aH|WG zQczRAo<{WkPy0fcT@IORBAYVR5GA|`2?PvojIv|d6=2tH44~>ZRReA&ZA1Vg0rWp% z^uOzlZh#AmY!c6+2a?jG#E%4QEGX~q50}gpf!dohz>8UEEsm)GKI71I0*PRPC&?J#C3I@*fRuYk4qqq)V6@>t z1uQqab0Sg1C*dW5INo!7rG^!!nb~rI&CoM;nB3aZU zPr8-${!q`(Pz@e~;$e@ich{O9P0Wo4=y{k2E=v@QRvr~4L=#}!|S%x-{ z&rxH?s08AXoKNb32n2WG>1h&Yfqhr_0H&s?zT!70*$WvNFo$NZ$s)HaA^h-TwRWEq z2#uBo2uX*hiPCMb z@DeHkdW!mL*#7_+>rXZ*W2?@{l7Iy?tt?S<<|${5$aw?;IlMOwZv~%xfFyEj&L{Ay zqzecG(di&TYOxavqR(9!|B?p4@Fn<}0FnNG2uIO)!)ED&1dEiakyw0jI*34V2_E3_ z6bf2cJ=834jSA8V-bupSWz4Uxos72QVY^a&@0$=UB1GU<%`wBPb!LY{fo7ai_|n>Z z!$=y2QP4%)wO;S(My~LHk)0IPp=tGn$$qmp%tHoSGY6YrFlfAW+ZwpR4@@_?2n1G- zMTl&5v3*1!)?nItH|U4h1qPu$sm-0uCJr@cqQiTX^4o4tDt<1ih6r#7Y)k{tpp@K6 z(4#w<;f+?{esW1RC9yTkVQXuNffYc6X>~d$CC4_w@S_H(W=8OaHe4ElriH^A#%A5@ zG6Ujr+^HuD%YW{HLSS(y1|d@qq5(pt7Hd!>V6c)zAV>_surg3!F<6D4lTX=Q-;hzN zh)Z37${7YA&BnO_B^u0UBm)vjnGO29z>81~bj!%d5netV*oP65Dn@$%EM6?Ch#2zv z0Ve^H2|>w8^#qUsx;3g)VYfYa^1IBISdMMhz`(P2G6gt=wPru?8-r5)yKvl%HVt9AZ(Pba>{34a=GMM zgQi_t&nu(~a!5rH90mv6zGim=vXO!0tRol9kt+2Dsp?7fX;dxKkeB1&8+3rrNVX0Q zpn%b-vQM$xvtUhDv4(y{Rp!g4LjOoW8%bcI=oxuOt|631St0sGBZ_K)c||b%r|f7G zoa6gI8uv&Y%+{JhmU0#V8Z#`cL0TeYIv%}Xowfdingin;PoAJLEIwj+xY+MVuhSO? zBJZ_^bIz8lQgYUVHRIJ#0(8Gm^wE?Tufd;Kg#@)pKvzMrX#h*D<@J$>fOc~wJ+x1W zY66>L5j;54uJKpcp(G6_CKL`3p%5FuYT(?QV}lwU@r8v|xeLi1a!Gyr0R+P7UfO0lxHXY9!4x<{b!29eTz9B?SQyt2 zWvs`teU$+!a09FJ?jVJ@1l$0Achr6kyePSU?5<=IU=I_-8ECfFIgEOl7kYsYXk><{ zv+Lp<@H0vX5i!tifLy^r$-Q8oLYyV!De}Onm|K`*M?mQsDM)iZ8}3dL8Dh*9W%Wt$ z3-akLnS4vQWdXS?(;BOw$f9($w3(1-C?k*8SISI^B1qMt0}kZbH@KXhr6u-*0_vJp zXPY@DUL{8*$fRQwok<_6+Mvlp?{J1J&e|}u8S#whj%XNYQ3P9Be2kYq3j(e4a|THJ5oN*6khx8x zx%G|`g5}QI;>uDfFU8~Vh^xz1Ddl>;LL~;P_{=y}t}WZ|Eo^Vm0pk_ZK$d$eI){ve zjhFO*XP>EVS!#k&z^4#9_fK|E+D0-0fpt0e*;Ak(e2>gUaie;j@m-)w6zg*@V18_X zSFenVo2c~6k|eDN5~L1bRTYc~)+VEkwTY6`oS5#^SGcW`F}VN*o^#1qF;*eiDOkG( zDAVXER?}#MCRW7mO5|;dUdW{t9-`jC$0V09@X`S&6P~rRUfwa$Iq<;G;Di_#x_sL4 z1?YmK2%dcd6d8iV1ERfikSv{JuieSCo5cwU2XYg63)~4Ur=8tgY3jMc$eB&h!EPl6 zY!9Hqg3fFpoy-}r;W0e+8XB}C)3xwPlu#lOXpOjqE-=Au3Ast%wTywF2tj%DDB6S^ z6z(k1x{^8i^|20ND~v6HbX-S0xdTMNrMo6(o$@4zENxC7RRHeL0ZXHGrk_KQHWH3h zUt)k{AKZ>puVzLP%y4l4&^u?qV&;Ug031N-9>*Uxz}XjYg#NHXt?rPeXDne#{ZE+s zIE$v+fSO?qlVOeqfc)&g)|A?+vQzSHohIw9?X)CV>=vh*5?6Z*TDjfQ=7WO<7t+7M zcd4%N*^ayD0I&u{c9-hP27HWt55epWVguBa#njvUYAHGnlNXuLEfD_pngR#xBbSU@ z@3>I6`40JzfECe`kyuV<;PnjRibU%7!psJ5N&RFsoKRDO4U)&y=^f?#3}qJhF!&(w8Rbx-^!I9z1Ly8}630AH)I zgvo=v+1Z7W0l$kY9m53I24ng`P9A80rK=6#2J$B&4~e^(2q*#Zm3kNwpx4_9g-vOr zgq8&Yw2zP%8p?>$r?;Ah6Y>F|cxgSFjpq0Z6+6(Bx+e4`{Z76_3hROpk<|J|Co-=* zXE`WT`x?LFb$~@!CB1SInUXh?h#h2Aclu*Hn&}7g9)dVwq4*-)v3v{^P-#q z2##4`9&{chdR8L`7rPMWViB3-7o8ue<%~fp3%OP7DbF(9CZILZ7oI^BgwC+>2W*~Q z!!jfCa|qEdz$W`n{gT2mv`#p%J_%N}r{O!GHF+k~HT@G_!Ua=Ny#ELWSzgpDbx?d* z44*J2nMUyu5xfzIQFy_skE36LCGD+%x+msmy~@=P02z={fR?n_(XCk553vZQ5a3k6 z4^*WQPmK{u5jE>n-8_QnY1 zOXIK&z1GP4;RROdfV3G4^Q?snBM{%sDaK;p*dTg84vUJs6A`2T zWANdjps3k;ho{-+lFtM=pho6t;L-q{5wyj{ze_=IvGO@jGnLNBB%`p2*3c%20`s&( z$S3tAg`;A3^e^8ei%fQWTtbn?1c_rBVw&cVQbq{tB!h3yxU1B@4{msaoOYRX+5UpG z0f7aQ)n;DOEJ8q9(s6FU9R)-%^?Zqt0XRtNi5CHyp@Ow%burSM)IC_`fM^+Z^a_On zF`_J$;46obG%WqfJK9Rw@QB>j>Y&w-(FAN+lqAUt#8%^OiY?l0E=dkF2 z458EJd5Pg(UhCU*?G_Tyhqu_f){q;@r}LHstT!CtaNuu19sJJcco0|^fthR9NrT)` zT)rF{bfEkU-K3js(1POEMKE)2u);1ZE}+t6vH}ij*Fo&kU0HrgDa~cFizXH=jkWY* zHy}D|ab253*N{*IP0*`?z6%*1p$QPX76TR0ppeL+Kf^WJyro%y6KegusY)ti0${Z98oz&ARd-AYTsY{Drr^r z*)fif7rl~p1lAchAc#1V{3DRg2pe3398)_J`UVq$3S{b82fZMyVid%zfv5tms#vs< z0D)0}t_^MALcIw|2}kbd)uwufls08_p&Q}DMDKw3?upbn_?!wKO`FjNL>;dnw275W zRgxZZ?mL8-afq3bj2kg$%Ut!)5}eCe!VneY&gbd-*fnR^OsB@uZ~-%`U61pK_fF!^KqV)S+g9Qewy%qIzu>nEa3*t@Ud)xra+Fo?F$GQ&Y=-W?9 zA&(Lo)O=WhrI3JFp3`Vr(y%wLLm30$1riGyN=3*Q!<7OaPJp0k7EqFRgJTsaC?Sh0 zs7L9NK!UzS!RVZmSc@w zCqVH9@By0mG;|9})>j-Xf|Wvk+91cdDG?dSiv@SoW@ZP}xEA5lH1BjgzIgEs1cUSE zX+)p@a$pk-g7>+2I1?8^O*?Ibnlt6x#s8dwE@`cF!RkcX?4`?zSeGA>E*2pcF3N+0 zXe?nxQ~^=O72$sZPw@(3v1B?YfvHU&l;yKLB_c%&$aqUBm*fspV2)WV_p1@5|m`2-+*@BeXo)7_A8bkNXNaR;9`+8F42`^ujTcq2&LF{B)NU z7_1D91YpEzf7Xc-Na~mJ5J4G+Uc8u1hyae)R@Eg^LU8~a03>*roLwg)vq6*6QWM?G zl(W7p5eb)alvqlECo7A%QADiVQyjU4%?Hqch7dx92gbOdepu6ixyLOn^~TqqO=<<}bD%iIXEmMpP5)`(FA8 z2o#UTX5rz1Fw)YqmP4O#43*=tgu*O$p=l@rxsUX7BD9;6oca^4)N1OVWGPski===|3Qcbou&$2 zCl=#~g`LR{eWT4iFOnhlomMuu(b_Zt@LK)>ELwV3IaQ%F7pw{Sr$JJFht+CKlWHms znZfx;NIO*@Ha~|i=W9PJMC+REolVR6QY4OZ_M-TO^f;EGA&}%EykZ{ZYC8aP&xInQ zk>mBpE9D%ro$QfN0TNhsPm(w6%iNM+BGlKZ0z%-7H%joC+Xy!FQk+ce;7Z%7OS(;q zbkI@p3bOY_0OY^1OJ1kJJ27m5QD^nu|E8I0SGo4TtptED<2hr5`_DlMA{qz&!7h^0?jfaq}tSPSfT8K#P6#2Wg=2FZ6&+yXNYQ&fj4NUctMA1BbI_+$u= z_(4CRIRFVtyt+9IgM5@%g#zQZ%$Pgj(~5SmhYNDptwHox65bqtT1pRfO2ElsC1)Gt zQAUm4nN}=Kjyl~{6+R%LHZX%Vy)-(#^)~8P!hd2a%aMT5#$a7&pue6p^2Mc9!zq_E z_)VS-4HCLdX-9vYsuK7=p1hr7(EVH`DfJ8$a^-OWario!Vgw$9!{nJzF6)vSNrR%7 zv=L?2@g%?i8>h&ur}8GEmITwZDrREE4HRCx!r>R$D!x{7gdNwtFGYulS)N+6r8xXCL zltqc9QR^J7d=~@a)igX^N7G8+PyPrS4hYa5O=(HAAyAkMwj|XOva-QtIEgI;NA0`M zaL#8b`RXL|o(wa{2IC|G>Jy4e4`hTJ07@OG!98^nfb4AgyCur3%S`Nrkd+IPJK+6T zCpFbB#jsTLBY#&bKS~u_sHD4L2snsHfK&z}X?yaw;Iy=PLjY&K!20T{a(?B!U_0*t z2#=W;i)x7JB>_|gm%xzXa^ipokdB?8QV<%w>vPnBQ2K#@={rJ50x>ds9&L~&QiINh zL`De$;RN|5iE2^WLK{mcCN4lWA`zWsAYf9Ha*9=k3=9xbDQ+1C86NT*)B(RBUDJ3+ zah|o_M>8@n1Rar!MrCrHx8&L~7RmOmHVBIvMGlLANmQlWU%ySg^0$G%5P^;=y#iRs z$C7YrBbh5{N^$*jf|J=DEdQz9DEG5pakF(F>-SIr6{s5CNZrHu%W-7b`q*mhij zDb9phHEau&;#d8_L4%SB4^AVXU3U?*SqDK7t2o45B%zCpWM7Con8caTosDkF3s|W* z4}q_KS*(NmixICX*psl@PO>^PJX&26v2!;2YXf;13+qC5ePw>yhD!P&0poyx6_WxS zS-zdd5u(LVI^u35s!MwhM?)iO$^@FspA6W5m1EW^^rFnAv}JS=ZLeE+X%z(IXM_Pm zw6V6j(G^WV)`c#xJo1s54ec?doP-_@sTvtwaz?8fwy+%6w>W#DPvdzyjDgS0ub^L8-Q=3a zr6LXKOGK+9I3o_yQXEp{2kB{0kVue>)~MR2r^NK~l2)`jqoeabc!+zotBE>GF1t@D zF&QV%1IQktbr^vpjoVe;fo>sIAf5bdjjRHZI~CeE85b(z;<#!3l2%Q#{q*@`pxMhA zx*!Z*!eqhWPA|PI=ZoG)z&XGXtd#ZHQtUFVqqU$d&;P+Z@%l6Wgo_bvF<;jQwNHd1 zZzM?jL#~Wd>?E_z<;e3lqNx*gbp2Ef7Mfox^@OUBzYsZ~2_%WLI-w1c3jr_I<`$6> z6cwtQer`%2nM|AGWEKa~RQRIsD(;K4(KCy#jIK+Nv?0|uaPStz~5aO7$;@d z@A(xTU}Jp@4Jr`i$}{t6`Qo%|y}&4I6oEJxi4HmA83f=YvDrvSejactIgFFX%sPis zS-NTCxzt@96Q9L2@*ODS3u^(t%j8Eq46xqX(j~IIOo1v?oEI{bYk&aI zKLOts+tjrvI=#_8H5#@Cuw!9liKIc4!DPZtd0JDk9(2yrXlOah_dm*dn370KXIMFWpRa=W%`SGaq-k$29cT>znQK6Scm-$8WoS&!yQX zYqs^zZ@Bf+D?RpkTmNz2&GUKvsg=sMM_#k%f(tjF-*#>5=F4&oCwTsk+s}DIo-fyY z`}ODNI(^o*@w2Y3U*Yk|9{9z+Pj0SU>y z>}`H_oyYh5lrzcEnUyQbwQgQRex6VH!TwLV*>7A^K5O&$a+jOecD`%gTe;oOa&6_# zw;jFhjBOA0=Mmc;v+bO1XOvId=M~SdoK~KHWO?rHPyN}Q=iYws(@%Z2YrW^)-*dh0 zUgJ+#uUozIjqY&o{`G0QnxDAt*8boA*=m+geC;u}-T#(b?s)a%FMZlO$`$9{cfWMs z({E^g@ilk--|X7YcI)m>KkeuC?ecrdMUj+i{x`YsS=+y|{Y%?dwtua%+rNLe{p;Jm z@6orm|F!@A@~78x#XaO9YahwE!QVHy$Gat9Q?i=nne4@l{>#4n@7MXWJ==Vr|K%On zkh|~byz(xQu$%nJ&h9Duda=*H+J3aH_HE=evT+)Tx#!+(e#$*gz-M0Y(R){RkGmiL zTxIurrat`H@+oDtzrO85PyOn_pLxNxdtZCZEw?=F9WVIto?CwQ)9k~Zmp|@bA6I$l z1JC$_Gk$o++s}B<8UK97%FkYL#y8IRzs~sj8E^HIf7tr^t^KWotsma{k*!~-?DpM9 zwtiykhs&e)Z2hSJ{_v;2_wy3Id5(Tw!Xt0Z{Suvfymh}!-Bb4Oafg+x*WIg?*WbNU z&)R=d?%3hPyJq}%=B{%+ zI&s$tyB@RaXg|GV*D1R$*ma+uuE*vX&voRyN5byb3qR9hPw~^cB_a2BJvrD{bk^1T z@ArSb$K5}7m(gf9-1AgT9O7hde$u8+xcf8jUe_WaKX!X$ zpLb6U1rpqh4x1G1`tZnD+e;jS~NdHAwZEEk+wmsTU zAGPg*ZD&W1-SZB-`{sH@qy5)cf6tS#XGd+vDLXFQaY}jba(6o}*m22@iz>T!RP+3f z2koeP{P4W$);-UIJt~#+Z@%UE`);`I`dfFO2j%S9ed*rj=?~m}<{4GiEtn~? z@dXP_9QB3fZTp_H`COo0Wqaj7cv5G6S?kl>)x#=}U^6d-0WPmxS$Rt3Y3}2C zJGsxwzM%4w%F8ORs=T)H8n zlYM@?Kf@tBGEiKk3FW8%7ry%V=h zykO#&Ctfx2x`{VUymjK86Ms1I;fYU7d~V{)6Ms4J?TH^u{P&6f*s^uY!CQ{pa^Ec{ zZ+Xy`v$veL<+3eTZu!M6*KK+BmfN>1Yw{3kd9q^g0U)_4=)*o*D_ia12 z9kFfqw$tq5CEKpr*4*~&Z7}AK&ri z9pBmUqn$f>(X7>7f;qc!*{8NX2 z=ZLLGoOs0fM>LQ4OYRY@6qQSz31px9R1#-zjE~Yz3+4HbML+9 z-mkp(`|kbqd;iDu?&%AsThqTj{lV$KIcD22ryle8W1f4=Zyz%}=7;w=@;;BaPxC&n zywCgZ^H;}iIrh|J=a20i`@6?};n*MD_qh9BeBWE{`^Niz>b^fb?x^F=J?>e@Egtu= z<9=}b5ywC3_#2L2JpNCQ|NGtd+I`;c8+X59_osK?HFNCDB{R3pyme+Y^WzgvIpL}k zUV6g&PWYP>4?OYg6R$mS@x)J_c-Q@ozu#l;_k#Pq`+k3Q(g7!(ebV(O{pLxZIcfdm zQ%-);$uB?ogC~FglzX3Y=_$9L^6pdq`u>O9|Izn<_Wj>>|F6yNm_6I%gx{L|(y3cc zJ?qr#Pkr;LUwpup2R!rvH$33C9`NM{ZhzpzAGr5{Z+qZ3PCNLt^GFFOl{U0B6zXvrQ^y?4$%!B^(jI++Tk#+l4^>FOyORFEL{`WIaJ+pb{o6r2( zgAaM|MGt<_gFp1(e|pFR9`X^&_<;$4sU{v%I$ zq{gK}}=Y(^vKIg6H-1(^8k9x+Ve&WSS3mk~kN(?pPdxXUbKi09_s*L= z?^)-)=e&QMJ7aF&Tz_u;{Mz}ybpFRL*m}Xm7rgR<(S?U!c-4h(x^U&96E3>$qIX|( z*TrXD+`0JUmu$b}vP*vbl5bpk-%Fd9zVp(%>JO{`QvK7H9emjnE_>5ufBTqIAG7Z< zA9?JS$JQVF`p5qD<4$_q-p76L^2+6xUjF*a|K^HQu6XtpfAaVpkH6yaZ+`r$OuQG& zf945CJmKk2c-IsD^~$*`UvuTRuDbtKw_WwgCm#C5r#|tWPh5Y}1y6e2lkR--gP#0L zPyYN^W!8 z>-K!_+HDp?wsphf87tRfAsZtT>rxx&cESJH~iDHE_v2lp0(b(y!CsnjT@hI z3b+ppaA?dLq|Id6W>zdiSf&;6t49rnDv&-=pjPksI?p8vhuFS>oXvklw& z$rsGL;3Y5k_Aj0HOK*MQ#0#JK!cV^F#1}2R=({hz_{G2fk^^7TddXkB^o*Cj?xp|o z%TM~{k1X7G;l&Hz`IU=*<=rpa^|F00`^L*3@$$F)>b76K;a5kmc$<5lnYAHTQv_wM}t`QQKaJ0JGWcfRY`cfID_Ti$)!yMOSW zr@rS)y$gCDdhcoPee3&Np6#C4ze&L^M#$!~q?$)Eb#ryu|6(eSe2XaDS?Kl{{Y&il-te)gQt ze)My-&wcpM&;Iide*U4K|G*c{`a=IN&iae~=%J$zeDPsl{Lq&k{-uw6`H^4#*jFC? zl}~*2g0KGB*Dn3q=fD2AuYY-b)%cs=c^{Qh6w_?Q3mSI_yYAAjq`K>REJ zX6kS5SUGm(ZU1fdzrF9yhu%5(_66Vm!rwmOZ@=}O=6C+#@7jO&lkYC99zyF25|L*?`OaQb0>u~G)?1t?T?VRo??zHbf@67O6@a6Gx@&EFS z^BMD}^fdIs^-%TR_HFk2_lo!#_^A0f`N#TK`se$1{0ID){VDyr{!9Mc|84*O+wQr> diff --git a/legacy/packages/ipld-encoded-geotiff/tsconfig.json b/legacy/packages/ipld-encoded-geotiff/tsconfig.json deleted file mode 100644 index 328b226..0000000 --- a/legacy/packages/ipld-encoded-geotiff/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "./lib", - "rootDir": "./src", - "allowJs": true, - "composite": true, - "strictNullChecks": true, - "moduleResolution": "node", - "noImplicitAny": false, - "target": "es6", - "module": "commonjs" - }, - "typeRoots": [ - "./src/typings", - "./node_modules/@types/" - ], - "include": [ - "./src/**/*" - ] - , - "exclude": [ - "node_modules" - ] -} \ No newline at end of file diff --git a/legacy/packages/stac-validator-js/CHANGELOG.md b/legacy/packages/stac-validator-js/CHANGELOG.md deleted file mode 100644 index 5110bf0..0000000 --- a/legacy/packages/stac-validator-js/CHANGELOG.md +++ /dev/null @@ -1,288 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [0.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.6...@astralprotocol/stac-validator-js@0.0.7) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/stac-validator-js - - - - - -## [0.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.5...@astralprotocol/stac-validator-js@0.0.6) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/stac-validator-js - - - - - -## [0.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.4...@astralprotocol/stac-validator-js@0.0.5) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/stac-validator-js - - - - - -## [0.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.3...@astralprotocol/stac-validator-js@0.0.4) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/stac-validator-js - - - - - -## [0.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.2...@astralprotocol/stac-validator-js@0.0.3) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/stac-validator-js - - - - - -## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.1...@astralprotocol/stac-validator-js@0.0.2) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/stac-validator-js - - - - - -## 0.0.1 (2021-01-05) - -**Note:** Version bump only for package @astralprotocol/stac-validator-js - - - - - -## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.29...@astraldao/stac-validator-js@0.0.30) (2020-11-26) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.28...@astraldao/stac-validator-js@0.0.29) (2020-11-26) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.28](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.27...@astraldao/stac-validator-js@0.0.28) (2020-11-26) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.27](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.26...@astraldao/stac-validator-js@0.0.27) (2020-11-26) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.26](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.25...@astraldao/stac-validator-js@0.0.26) (2020-11-26) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.25](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.24...@astraldao/stac-validator-js@0.0.25) (2020-11-26) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.24](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.23...@astraldao/stac-validator-js@0.0.24) (2020-11-24) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.23](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.22...@astraldao/stac-validator-js@0.0.23) (2020-11-24) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.22](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.21...@astraldao/stac-validator-js@0.0.22) (2020-11-24) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.21](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.20...@astraldao/stac-validator-js@0.0.21) (2020-11-21) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.20](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.19...@astraldao/stac-validator-js@0.0.20) (2020-10-16) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.19](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.18...@astraldao/stac-validator-js@0.0.19) (2020-10-16) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.18](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.17...@astraldao/stac-validator-js@0.0.18) (2020-10-15) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.17](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.16...@astraldao/stac-validator-js@0.0.17) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.16](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.15...@astraldao/stac-validator-js@0.0.16) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.15](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.14...@astraldao/stac-validator-js@0.0.15) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.14](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.13...@astraldao/stac-validator-js@0.0.14) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.13](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.12...@astraldao/stac-validator-js@0.0.13) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.12](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.11...@astraldao/stac-validator-js@0.0.12) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.11](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.10...@astraldao/stac-validator-js@0.0.11) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.10](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.9...@astraldao/stac-validator-js@0.0.10) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.9](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.8...@astraldao/stac-validator-js@0.0.9) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.8](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.7...@astraldao/stac-validator-js@0.0.8) (2020-10-14) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.7](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.6...@astraldao/stac-validator-js@0.0.7) (2020-10-13) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.6](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.5...@astraldao/stac-validator-js@0.0.6) (2020-10-13) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.5](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.4...@astraldao/stac-validator-js@0.0.5) (2020-10-13) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## [0.0.4](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.3...@astraldao/stac-validator-js@0.0.4) (2020-10-13) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## 0.0.3 (2020-10-13) - -**Note:** Version bump only for package @astraldao/stac-validator-js - - - - - -## 0.0.2 (2020-09-28) - -**Note:** Version bump only for package @astraldao/stac-validator diff --git a/legacy/packages/stac-validator-js/LICENSE-APACHE b/legacy/packages/stac-validator-js/LICENSE-APACHE deleted file mode 100644 index 2ad0ad1..0000000 --- a/legacy/packages/stac-validator-js/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2020] [astralDAO] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/legacy/packages/stac-validator-js/LICENSE-MIT b/legacy/packages/stac-validator-js/LICENSE-MIT deleted file mode 100644 index 1874419..0000000 --- a/legacy/packages/stac-validator-js/LICENSE-MIT +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 astralDAO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/legacy/packages/stac-validator-js/lib/file.js b/legacy/packages/stac-validator-js/lib/file.js deleted file mode 100644 index c7570e8..0000000 --- a/legacy/packages/stac-validator-js/lib/file.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=file.js.map \ No newline at end of file diff --git a/legacy/packages/stac-validator-js/lib/file.js.map b/legacy/packages/stac-validator-js/lib/file.js.map deleted file mode 100644 index ba6f8b7..0000000 --- a/legacy/packages/stac-validator-js/lib/file.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/legacy/packages/stac-validator-js/package.json b/legacy/packages/stac-validator-js/package.json deleted file mode 100644 index dc92062..0000000 --- a/legacy/packages/stac-validator-js/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@astralprotocol/stac-validator-js", - "version": "0.0.7", - "description": "Node implementation of a Stac file validator ", - "author": "Astral ", - "homepage": "https://github.com/AstralProtocol/astralprotocol#readme", - "license": "MIT OR Apache-2.0", - "main": "src/stac-validator.js", - "directories": { - "lib": "lib" - }, - "files": [ - "src" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/AstralProtocol/astralprotocol.git", - "directory": "packages/stac-validator-js" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org", - "access": "public" - }, - "scripts": { - "tsc": "tsc", - "test": "jest --coverage --runInBand", - "prebuild": "yarn run clean", - "lint": "eslint ./src '*/**/*.{js,ts,tsx}' --quiet --fix", - "clean": "rm -rf ./lib", - "validate": "node ./src/index.js" - }, - "bugs": { - "url": "https://github.com/AstralProtocol/astralprotocol/issues" - }, - "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0.1", - "ajv": "^6.12.2", - "compare-versions": "^3.6.0" - }, - "gitHead": "d1177c83e76b00ec51e6b0532b6588e3bc29fa77" -} diff --git a/legacy/packages/stac-validator-js/src/file.ts b/legacy/packages/stac-validator-js/src/file.ts deleted file mode 100644 index e69de29..0000000 diff --git a/legacy/packages/stac-validator-js/src/stac-validator.js b/legacy/packages/stac-validator-js/src/stac-validator.js deleted file mode 100644 index 599cdab..0000000 --- a/legacy/packages/stac-validator-js/src/stac-validator.js +++ /dev/null @@ -1,175 +0,0 @@ -// based on https://github.com/m-mohr/stac-node-validator -// transformed into a node package for easier consumption - -const RefParser = require("@apidevtools/json-schema-ref-parser"); -const Ajv = require("ajv"); -const compareVersions = require("compare-versions"); - -let COMPILED = {}; -let ajv = new Ajv({ - allErrors: true, - missingRefs: "ignore", -}); - -module.exports = async function validate(json) { - try { - let isApiList = false; - let entries; - if (Array.isArray(json.collections)) { - entries = json.collections; - isApiList = true; - console.log( - json + - " is a /collections endpoint. Validating all " + - entries.length + - " collections, but ignoring the other parts of the response.\n" - ); - } else if (Array.isArray(json.features)) { - entries = json.features; - isApiList = true; - console.log( - json + - " is a /collections/:id/items endpoint. Validating all " + - entries.length + - " items, but ignoring the other parts of the response.\n" - ); - } else { - entries = [json]; - } - - let fileValid = true; - for (let data of entries) { - let id = json; - if (isApiList) { - id += " -> " + data.id; - } - if (typeof data.stac_version !== "string") { - console.error("-- " + id + ": Skipping; No STAC version found\n"); - fileValid = false; - continue; - } else if (compareVersions(data.stac_version, "1.0.0-beta.2", "<")) { - console.error( - "-- " + - id + - ": Skipping; Can only validate STAC version >= 1.0.0-beta.2\n" - ); - continue; - } else { - console.log("-- " + id + " (" + data.stac_version + ")"); - } - - let type; - if (typeof data.type !== "undefined") { - if (data.type === "Feature") { - type = "item"; - } else if (data.type === "FeatureCollection") { - // type = 'itemcollection'; - console.warn( - "-- " + id + ": Skipping; STAC ItemCollections not supported yet\n" - ); - continue; - } else { - console.error( - "-- " + id + ": `type` is invalid; must be `Feature`\n" - ); - fileValid = false; - continue; - } - } else { - if ( - typeof data.extent !== "undefined" || - data.license !== "undefined" - ) { - type = "collection"; - } else { - type = "catalog"; - } - } - - // Get all schema to validate against - let schemas = [type]; - if (Array.isArray(data.stac_extensions)) { - schemas = schemas.concat(data.stac_extensions); - } - - for (let schema of schemas) { - try { - let loadArgs = isUrl(schema) - ? [schema] - : // removed schemaFolder and replaced with null - [null, data.stac_version, schema]; - let validate = await loadSchema(...loadArgs); - let valid = validate(data); - if (!valid) { - console.log("---- " + schema + ": invalid"); - console.warn(validate.errors); - console.log("\n"); - fileValid = false; - if (schema === "core") { - console.info( - "--- Validation error in core, skipping extension validation" - ); - break; - } - } else { - console.info("---- " + schema + ": valid"); - } - } catch (error) { - fileValid = false; - console.error("---- " + schema + ": " + error.message); - } - } - console.log("\n"); - } - - return fileValid; - } catch (error) { - console.error(error); - } -}; - -const SUPPORTED_PROTOCOLS = ["http", "https"]; - -function isUrl(uri) { - let part = uri.match(/^(\w+):\/\//i); - if (part) { - if (!SUPPORTED_PROTOCOLS.includes(part[1].toLowerCase())) { - throw new Error('Given protocol "' + part[1] + '" is not supported.'); - } - return true; - } - return false; -} - -async function loadSchema(baseUrl = null, version = null, shortcut = null) { - version = typeof version === "string" ? "v" + version : "unversioned"; - - if (typeof baseUrl !== "string") { - baseUrl = "https://schemas.stacspec.org/" + version; - } - - let url; - if ( - shortcut === "item" || - shortcut === "catalog" || - shortcut === "collection" - ) { - url = baseUrl + "/" + shortcut + "-spec/json-schema/" + shortcut + ".json"; - } else if (typeof shortcut === "string") { - url = baseUrl + "/extensions/" + shortcut + "/json-schema/schema.json"; - } else { - url = baseUrl; - } - - if (typeof COMPILED[url] !== "undefined") { - return COMPILED[url]; - } else { - let fullSchema = await RefParser.dereference(url, { - dereference: { - circular: "ignore", - }, - }); - COMPILED[url] = ajv.compile(fullSchema); - return COMPILED[url]; - } -} diff --git a/legacy/packages/stac-validator-js/tsconfig.json b/legacy/packages/stac-validator-js/tsconfig.json deleted file mode 100644 index 2f36eea..0000000 --- a/legacy/packages/stac-validator-js/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "./lib", - "rootDir": "./src", - "composite": true, - "strictNullChecks": false - }, - "exclude": ["./lib/**/*"] -} diff --git a/legacy/packages/subgraph/CHANGELOG.md b/legacy/packages/subgraph/CHANGELOG.md deleted file mode 100644 index 8cf4232..0000000 --- a/legacy/packages/subgraph/CHANGELOG.md +++ /dev/null @@ -1,304 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [1.0.13](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.12...@astralprotocol/subgraph@1.0.13) (2021-03-29) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.11...@astralprotocol/subgraph@1.0.12) (2021-03-29) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.10...@astralprotocol/subgraph@1.0.11) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.9...@astralprotocol/subgraph@1.0.10) (2021-03-28) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.8...@astralprotocol/subgraph@1.0.9) (2021-03-17) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.7...@astralprotocol/subgraph@1.0.8) (2021-03-16) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.6...@astralprotocol/subgraph@1.0.7) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.5...@astralprotocol/subgraph@1.0.6) (2021-03-15) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.4...@astralprotocol/subgraph@1.0.5) (2021-02-25) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.3...@astralprotocol/subgraph@1.0.4) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.2...@astralprotocol/subgraph@1.0.3) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.1...@astralprotocol/subgraph@1.0.2) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [1.0.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.5...@astralprotocol/subgraph@1.0.1) (2021-02-24) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [0.1.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.4...@astralprotocol/subgraph@0.1.5) (2021-02-23) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [0.1.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.3...@astralprotocol/subgraph@0.1.4) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [0.1.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.1...@astralprotocol/subgraph@0.1.3) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [0.1.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.0.3...@astralprotocol/subgraph@0.1.1) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [0.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.0.2...@astralprotocol/subgraph@0.0.3) (2021-02-18) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.0.1...@astralprotocol/subgraph@0.0.2) (2021-02-09) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## 0.0.1 (2021-01-05) - -**Note:** Version bump only for package @astralprotocol/subgraph - - - - - -## [0.0.46](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.45...@astraldao/astral-protocol-subgraph@0.0.46) (2020-12-17) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.45](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.44...@astraldao/astral-protocol-subgraph@0.0.45) (2020-12-01) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.44](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.43...@astraldao/astral-protocol-subgraph@0.0.44) (2020-11-26) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.43](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.42...@astraldao/astral-protocol-subgraph@0.0.43) (2020-11-26) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.42](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.41...@astraldao/astral-protocol-subgraph@0.0.42) (2020-11-26) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.41](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.40...@astraldao/astral-protocol-subgraph@0.0.41) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.40](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.39...@astraldao/astral-protocol-subgraph@0.0.40) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.39](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.38...@astraldao/astral-protocol-subgraph@0.0.39) (2020-11-24) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.38](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.37...@astraldao/astral-protocol-subgraph@0.0.38) (2020-11-21) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.37](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.36...@astraldao/astral-protocol-subgraph@0.0.37) (2020-11-21) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.36](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.35...@astraldao/astral-protocol-subgraph@0.0.36) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.35](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.34...@astraldao/astral-protocol-subgraph@0.0.35) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.34](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.33...@astraldao/astral-protocol-subgraph@0.0.34) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.33](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.32...@astraldao/astral-protocol-subgraph@0.0.33) (2020-10-22) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.32](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.31...@astraldao/astral-protocol-subgraph@0.0.32) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.31](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.30...@astraldao/astral-protocol-subgraph@0.0.31) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.29...@astraldao/astral-protocol-subgraph@0.0.30) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph - - - - - -## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.28...@astraldao/astral-protocol-subgraph@0.0.29) (2020-10-19) - -**Note:** Version bump only for package @astraldao/astral-protocol-subgraph diff --git a/legacy/packages/subgraph/LICENSE-APACHE b/legacy/packages/subgraph/LICENSE-APACHE deleted file mode 100644 index 2ad0ad1..0000000 --- a/legacy/packages/subgraph/LICENSE-APACHE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2020] [astralDAO] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/legacy/packages/subgraph/LICENSE-MIT b/legacy/packages/subgraph/LICENSE-MIT deleted file mode 100644 index 1874419..0000000 --- a/legacy/packages/subgraph/LICENSE-MIT +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 astralDAO - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/legacy/packages/subgraph/README.md b/legacy/packages/subgraph/README.md deleted file mode 100644 index 7430d8f..0000000 --- a/legacy/packages/subgraph/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# @astralprotocol/subgraph - -## Description - -The @astralprotocol/subgraph serves as the indexing engine of the protocol, capturing the registration and modification events of GeoDIDs in the @astralprotocol/contracts. It acts like a decentralized querying database where it is substantially easier to make complex queries to the Spatial Assets registry. It is used to create the tree of GeoDID nodes that represents their relationships and groupings. - -The current version of the subgraph (v06) is indexing the Ethereum Roptsten network at the following graphql endpoints: - -- `https://api.thegraph.com/subgraphs/name/astralprotocol/spatialassetsv06` -- `wss://api.thegraph.com/subgraphs/name/astralprotocol/spatialassetsv06` - -You can connect to these with your GraphQL client of choice. - -## To add Astral Protocol Subgraph to your application - -``` -yarn add @astralprotocol/subgraph -``` - -## To develop or try the Astral Protocol Subgraph locally - -### Prerequisites - -- Clone the astralprotocol repository and go to packages/subgraph -- Run `sudo apt-get install libsecret-1-dev` -- [Docker Instalation](https://docs.docker.com/install/linux/docker-ce/debian/) -- Run `git clone https://github.com/graphprotocol/graph-node/` (check setup instructions for docker version on https://thegraph.com/docs/) -- Have the development steps of @astralprotocol/contracts done previously (with Ganache) - -### Deployment - -1. Ensure you have ganache running with the contracts deployed from packages/contracts -2. Update the SpatialAssets contract address that you got from the previous step in the subgraph.yaml (if needed and ensure the correct file is named according to the network of deployment - for ganache it should read as mainnet: backup the current subgraph.yamlfile and rename it to subgraphRopsten.yaml). -3. In another terminal, inside the graph-node folder, run `cd docker && docker-compose up`. If using Docker for WSL, Docker must be running on Windows. If graph-node throws an error try clearing the `data/postgres` folder, within the docker directory of graph-node, with `sudo rm -rf data/postgres`. Restart docker if needed and you are using WSL. -4. Generate subgraph typescript files with `yarn codegen`, then create and deploy the subgraph to the graph-node with `yarn create-local && yarn deploy-local` -5. You can query the subgraph and view the GeoDID tree in the local provided endpoint. - -### Testing - -The following query can be provided to the graphql endpoint to view the GeoDIDs tree (after doing the deployment steps above): - -``` -{ - geoDIDs { - id - owner - cid - storage - root - parent - edges { - id - childGeoDID { - id - } - } - active - type - } -} -``` diff --git a/legacy/packages/subgraph/abis/SpatialAssets.json b/legacy/packages/subgraph/abis/SpatialAssets.json deleted file mode 100644 index 6e325c2..0000000 --- a/legacy/packages/subgraph/abis/SpatialAssets.json +++ /dev/null @@ -1,30268 +0,0 @@ -{ - "contractName": "SpatialAssets", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "uri", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorHasParent", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorNoExistence", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorNoParent", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "ParentAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "ParentRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "cid", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bool", - "name": "canBeParent", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - { - "inputs": [], - "name": "DATA_SUPPLIER", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "getRoleMember", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleMemberCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "registerRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - } - ], - "name": "enableStorage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - } - ], - "name": "disableStorage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - }, - { - "internalType": "bytes32[]", - "name": "childrenGeoDIDIds", - "type": "bytes32[]" - }, - { - "internalType": "bytes32", - "name": "cid", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "geoDIDtype", - "type": "uint256" - } - ], - "name": "registerSpatialAsset", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "internalType": "bytes32[]", - "name": "childrenGeoDIDIds", - "type": "bytes32[]" - } - ], - "name": "addChildrenGeoDIDs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "addParentGeoDID", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "internalType": "bytes32[]", - "name": "childrenGeoDIDIds", - "type": "bytes32[]" - } - ], - "name": "removeChildrenGeoDIDs", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "removeParentGeoDID", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "internalType": "bytes32[]", - "name": "childrenToRemove", - "type": "bytes32[]" - } - ], - "name": "deactivateSpatialAsset", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "idToOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "idToCid", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "idToCanBeParent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "idToHasParent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "idToExternalStorage", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - } - ], - "name": "allowedStorages", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - }, - { - "inputs": [], - "name": "uri", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function", - "constant": true - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenErrorHasParent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenErrorNoExistence\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenErrorNoParent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ParentAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ParentRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"}],\"name\":\"SpatialAssetDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"canBeParent\",\"type\":\"bool\"}],\"name\":\"SpatialAssetRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DATA_SUPPLIER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenGeoDIDIds\",\"type\":\"bytes32[]\"}],\"name\":\"addChildrenGeoDIDs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"addParentGeoDID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"}],\"name\":\"allowedStorages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenToRemove\",\"type\":\"bytes32[]\"}],\"name\":\"deactivateSpatialAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"}],\"name\":\"disableStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"}],\"name\":\"enableStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToCanBeParent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToCid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToExternalStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToHasParent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenGeoDIDIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"geoDIDtype\",\"type\":\"uint256\"}],\"name\":\"registerSpatialAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenGeoDIDIds\",\"type\":\"bytes32[]\"}],\"name\":\"removeChildrenGeoDIDs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"removeParentGeoDID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"{SpatialAssets} registry This contract uses {AccessControl} to lock permissioned functions using the different roles - head to its documentation for details. The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant 'DATA_SUPPLIER' roles to other accounts\",\"events\":{\"ChildrenAdded(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid is added to a node\"},\"ChildrenErrorHasParent(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid already has a parent but shouldn't have\"},\"ChildrenErrorNoExistence(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid does not exist\"},\"ChildrenErrorNoParent(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid does not have a parent when trying to remove it from a parent\"},\"ChildrenRemoved(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid is removed from a node\"},\"ParentAdded(bytes32,bytes32)\":{\"details\":\"Emitted when a parent geodid is added to a node\"},\"ParentRemoved(bytes32,bytes32)\":{\"details\":\"Emitted when a parent geodid is removed from a node\"},\"SpatialAssetDeactivated(bytes32)\":{\"details\":\"Emitted when Spatial Assets of id `id` are deactivated.\"},\"SpatialAssetRegistered(address,bytes32,bytes32,bytes32,bytes32,bool)\":{\"details\":\"Emitted when Spatial Assets of id `id` are transferred to `to``.\"}},\"kind\":\"dev\",\"methods\":{\"addChildrenGeoDIDs(bytes32,bytes32[])\":{\"details\":\"Adds children GeoDIDs to an already existent geoDID Emits a {ChildrenAdded} event.\"},\"addParentGeoDID(bytes32,bytes32)\":{\"details\":\"Adds a parent GeoDID to an already existent geoDID Emits a {ParentAdded} event.\"},\"constructor\":{\"details\":\"Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that deploys the contract.\"},\"deactivateSpatialAsset(bytes32,bytes32[])\":{\"details\":\"De-registers a spatial asset\"},\"disableStorage(bytes32)\":{\"details\":\"Disables an existing storage\"},\"enableStorage(bytes32)\":{\"details\":\"Registers a new storage that can accept GeoDID document creation\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"registerRole()\":{\"details\":\"Registers a new user with the ability to register a spatial asset.\"},\"registerSpatialAsset(address,bytes32,bytes32,bytes32[],bytes32,bytes32,uint256)\":{\"details\":\"Registers one spatial asset with external storage 'data' and assigns them to `account`. Emits a {SpatialAssetRegistered} event.\"},\"removeChildrenGeoDIDs(bytes32,bytes32[])\":{\"details\":\"Removes childrenGeoDIDs from a geoDID Emits a {ChildrenRemoved} event.\"},\"removeParentGeoDID(bytes32,bytes32)\":{\"details\":\"Removes a parent GeoDID from an already existent geoDID Emits a {ParentAdded} event.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol\":\"SpatialAssets\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol\":{\"keccak256\":\"0xb63dbe4b63cf8b764fe8ce1609b0cf075366715e162a239f5fa897e68345648d\",\"license\":\"APACHE OR MIT\",\"urls\":[\"bzz-raw://17c1309fec71b328034ec5e37b1732f13e7c46ddb52f7a1561e39063eaed0a43\",\"dweb:/ipfs/QmPGJEKrVy3x8DtJtB9Z86rAFArjsmU5wovA2qvjuLY986\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4fc155a2f7837603d69a13cfa481eb5e7f5e02cb77e2ec9edbac30986db37988\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0855147e38b5e36288a8df73b8da49132f14ec7abb19041b0c98872263643aaa\",\"dweb:/ipfs/QmSrSysyFUYQq7hbJaJXG7EyZW6ezDBzEJx3SABp6eiJSS\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b506040516200236138038062002361833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052505050620000fe816200014a60201b60201c565b6200011460006200010e62000163565b62000167565b620001437fb90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f6200010e62000163565b5062000309565b80516200015f9060019060208401906200026d565b5050565b3390565b6200015f8282600082815260208181526040909120620001929183906200199b620001e6821b17901c565b156200015f57620001a262000163565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fd836001600160a01b03841662000206565b90505b92915050565b600062000214838362000255565b6200024c5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000200565b50600062000200565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b057805160ff1916838001178555620002e0565b82800160010185558215620002e0579182015b82811115620002e0578251825591602001919060010190620002c3565b50620002ee929150620002f2565b5090565b5b80821115620002ee5760008155600101620002f3565b61204880620003196000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806391d14854116100de578063c44e96a011610097578063d547741f11610071578063d547741f14610663578063eac989f81461068f578063f999be891461070c578063fd52c0d51461072f57610173565b8063c44e96a014610621578063c66f70cc14610629578063ca15c8731461064657610173565b806391d14854146103cd5780639969879b146103f9578063a217fddf14610401578063a8f904b514610409578063b22de880146104b1578063bdabcf631461057957610173565b806336568abe1161013057806336568abe146103045780636e7a6f4b146103305780637c1c6c271461034d57806384f42912146103705780638d0a9bff1461038d5780639010d07c146103aa57610173565b8063092e9f25146101785780630bfa194d146101a95780630e437b1c146101c65780631dc2a7b014610270578063248a9ca3146102a95780632f2ff15d146102d8575b600080fd5b6101956004803603602081101561018e57600080fd5b503561074c565b604080519115158252519081900360200190f35b610195600480360360208110156101bf57600080fd5b5035610761565b61026e600480360360408110156101dc57600080fd5b81359190810190604081016020820135600160201b8111156101fd57600080fd5b82018360208201111561020f57600080fd5b803590602001918460208302840111600160201b8311171561023057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610776945050505050565b005b61028d6004803603602081101561028657600080fd5b50356109b1565b604080516001600160a01b039092168252519081900360200190f35b6102c6600480360360208110156102bf57600080fd5b50356109cc565b60408051918252519081900360200190f35b61026e600480360360408110156102ee57600080fd5b50803590602001356001600160a01b03166109e1565b61026e6004803603604081101561031a57600080fd5b50803590602001356001600160a01b0316610a4d565b61026e6004803603602081101561034657600080fd5b5035610aae565b61026e6004803603604081101561036357600080fd5b5080359060200135610b5f565b6102c66004803603602081101561038657600080fd5b5035610d05565b610195600480360360208110156103a357600080fd5b5035610d17565b61028d600480360360408110156103c057600080fd5b5080359060200135610d2c565b610195600480360360408110156103e357600080fd5b50803590602001356001600160a01b0316610d4d565b6102c6610d65565b6102c6610d77565b61026e6004803603604081101561041f57600080fd5b81359190810190604081016020820135600160201b81111561044057600080fd5b82018360208201111561045257600080fd5b803590602001918460208302840111600160201b8311171561047357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d7c945050505050565b61026e600480360360e08110156104c757600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156104fd57600080fd5b82018360208201111561050f57600080fd5b803590602001918460208302840111600160201b8311171561053057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060208101359060400135610f97565b61026e6004803603604081101561058f57600080fd5b81359190810190604081016020820135600160201b8111156105b057600080fd5b8201836020820111156105c257600080fd5b803590602001918460208302840111600160201b831117156105e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611342945050505050565b61026e6115ae565b6102c66004803603602081101561063f57600080fd5b5035611625565b6102c66004803603602081101561065c57600080fd5b5035611637565b61026e6004803603604081101561067957600080fd5b50803590602001356001600160a01b031661164e565b6106976116a7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106d15781810151838201526020016106b9565b50505050905090810190601f1680156106fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026e6004803603604081101561072257600080fd5b508035906020013561173c565b61026e6004803603602081101561074557600080fd5b503561193b565b60009081526004602052604090205460ff1690565b60009081526005602052604090205460ff1690565b61077e6119b0565b6000838152600260205260409020546001600160a01b039081169116146107d65760405162461bcd60e51b8152600401808060200182810382526037815260200180611ef56037913960400191505060405180910390fd5b600082815260026020908152604080832080546001600160a01b0319169055600782528083208390556003825280832083905560048252808320805460ff191690556006909152812055805180156109815760005b8181101561097f57600083828151811061084157fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610885575060008181526004602052604090205460ff165b156108dc576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610976565b6000818152600260205260409020546001600160a01b031615801590610911575060008181526004602052604090205460ff16155b1561094857604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610976565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161082b565b505b60405183907ff02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb890600090a2505050565b6000908152600260205260409020546001600160a01b031690565b60009081526020819052604090206002015490565b600082815260208190526040902060020154610a04906109ff6119b0565b610d4d565b610a3f5760405162461bcd60e51b815260040180806020018281038252602f815260200180611ca0602f913960400191505060405180910390fd5b610a4982826119b4565b5050565b610a556119b0565b6001600160a01b0316816001600160a01b031614610aa45760405162461bcd60e51b815260040180806020018281038252602f815260200180611fe4602f913960400191505060405180910390fd5b610a498282611a1d565b610abb60006109ff6119b0565b610af65760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b60008181526008602052604090205460ff1615610b445760405162461bcd60e51b815260040180806020018281038252602d815260200180611ec8602d913960400191505060405180910390fd5b6000908152600860205260409020805460ff19166001179055565b610b79600080516020611fc48339815191526109ff6119b0565b610bb45760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610bbc6119b0565b6000838152600260205260409020546001600160a01b03908116911614610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b0316610c675760405162461bcd60e51b815260040180806020018281038252603c815260200180611e8c603c913960400191505060405180910390fd5b60008281526004602052604090205460ff16610cb45760405162461bcd60e51b8152600401808060200182810382526036815260200180611d486036913960400191505060405180910390fd5b6000828152600460209081526040808320805460ff19169055600690915280822084905551829184917f09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca99190a35050565b60009081526007602052604090205490565b60009081526008602052604090205460ff1690565b6000828152602081905260408120610d449083611a86565b90505b92915050565b6000828152602081905260408120610d449083611a92565b600080516020611fc483398151915281565b600081565b610d96600080516020611fc48339815191526109ff6119b0565b610dd15760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610dd96119b0565b6000838152600260205260409020546001600160a01b03908116911614610e315760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b80518015610f925760005b81811015610f90576000838281518110610e5257fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610e96575060008181526004602052604090205460ff165b15610eed576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610f87565b6000818152600260205260409020546001600160a01b031615801590610f22575060008181526004602052604090205460ff16155b15610f5957604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610f87565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b50600101610e3c565b505b505050565b610fb1600080516020611fc48339815191526109ff6119b0565b610fec5760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610ff582610d17565b6110305760405162461bcd60e51b8152600401808060200182810382526026815260200180611c7a6026913960400191505060405180910390fd5b6000868152600260205260409020546001600160a01b0316156110845760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b8015806110915750806001145b6110e2576040805162461bcd60e51b815260206004820181905260248201527f5370617469616c204173736574733a2077726f6e672067656f64696474797065604482015290519081900360640190fd5b60008681526003602090815260408083208690556002825280832080546001600160a01b0319166001600160a01b038c161790556007909152902082905580611143576000868152600560205260409020805460ff19166001179055611163565b8060011415611163576000868152600560205260409020805460ff191690555b846111e9576000868152600460209081526040808320805460ff1916905560068252808320899055600582529182902054825185815291820189905260ff161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a461129e565b6000868152600460209081526040808320805460ff19166001179055878352600682528083205489845260058352928190205481518681529283019390935260ff929092161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a4604051859087907fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d0690600090a35b835180158015906112bd575060008781526005602052604090205460ff165b156113385760005b818110156113365760008682815181106112db57fe5b602090810291909101810151600081815260049092526040808320805460ff191660011790555190925082918b917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a3506001016112c5565b505b5050505050505050565b61135c600080516020611fc48339815191526109ff6119b0565b6113975760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b61139f6119b0565b6000838152600260205260409020546001600160a01b039081169116146113f75760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b60008281526005602052604090205460ff166114445760405162461bcd60e51b8152600401808060200182810382526040815260200180611dc46040913960400191505060405180910390fd5b80518015610f925760005b81811015610f9057600083828151811061146557fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b0316158015906114aa575060008181526004602052604090205460ff16155b1561150c576000818152600460209081526040808320805460ff191660011790558783526006909152808220548383528183205551829187917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a36115a5565b6000818152600260205260409020546001600160a01b031615801590611540575060008181526004602052604090205460ff165b1561157757604051819086907fc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b90600090a36115a5565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161144f565b6115c8600080516020611fc48339815191526109ff6119b0565b156116045760405162461bcd60e51b8152600401808060200182810382526035815260200180611f8f6035913960400191505060405180910390fd5b611623600080516020611fc483398151915261161e6119b0565b610a3f565b565b60009081526003602052604090205490565b6000818152602081905260408120610d4790611aa7565b60008281526020819052604090206002015461166c906109ff6119b0565b610aa45760405162461bcd60e51b8152600401808060200182810382526030815260200180611e5c6030913960400191505060405180910390fd5b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156117325780601f1061170757610100808354040283529160200191611732565b820191906000526020600020905b81548152906001019060200180831161171557829003601f168201915b5050505050905090565b611756600080516020611fc48339815191526109ff6119b0565b6117915760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b6117996119b0565b6000838152600260205260409020546001600160a01b039081169116146117f15760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b03166118445760405162461bcd60e51b815260040180806020018281038252602c815260200180611e30602c913960400191505060405180910390fd5b60008281526004602052604090205460ff16156118925760405162461bcd60e51b815260040180806020018281038252602c815260200180611e04602c913960400191505060405180910390fd5b60008181526005602052604090205460ff166118df5760405162461bcd60e51b8152600401808060200182810382526046815260200180611d7e6046913960600191505060405180910390fd5b6000828152600460209081526040808320805460ff191660011790558383526006909152808220548483528183205551829184917fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d069190a35050565b61194860006109ff6119b0565b6119835760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b6000908152600860205260409020805460ff19169055565b6000610d44836001600160a01b038416611ab2565b3390565b60008281526020819052604090206119cc908261199b565b15610a49576119d96119b0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081905260409020611a359082611afc565b15610a4957611a426119b0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610d448383611b11565b6000610d44836001600160a01b038416611b75565b6000610d4782611b8d565b6000611abe8383611b75565b611af457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d47565b506000610d47565b6000610d44836001600160a01b038416611b91565b81546000908210611b535760405162461bcd60e51b8152600401808060200182810382526022815260200180611c586022913960400191505060405180910390fd5b826000018281548110611b6257fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015611c4d5783546000198083019190810190600090879083908110611bc457fe5b9060005260206000200154905080876000018481548110611be157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611c1157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610d47565b6000915050610d4756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64735370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e745370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f725370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f72616765735370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f76655370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e745370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b655370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f742065786973745370617469616c4173736574733a2073746f72616765206d757374206e6f7420626520616374697665207965745370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c2041737365745370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e6572207965745370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f2072656769737465725370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212200603174d84b92a254e194b236a6220fcb94109027f9b708b8705b69fcb21d1bd64736f6c634300060c0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c806391d14854116100de578063c44e96a011610097578063d547741f11610071578063d547741f14610663578063eac989f81461068f578063f999be891461070c578063fd52c0d51461072f57610173565b8063c44e96a014610621578063c66f70cc14610629578063ca15c8731461064657610173565b806391d14854146103cd5780639969879b146103f9578063a217fddf14610401578063a8f904b514610409578063b22de880146104b1578063bdabcf631461057957610173565b806336568abe1161013057806336568abe146103045780636e7a6f4b146103305780637c1c6c271461034d57806384f42912146103705780638d0a9bff1461038d5780639010d07c146103aa57610173565b8063092e9f25146101785780630bfa194d146101a95780630e437b1c146101c65780631dc2a7b014610270578063248a9ca3146102a95780632f2ff15d146102d8575b600080fd5b6101956004803603602081101561018e57600080fd5b503561074c565b604080519115158252519081900360200190f35b610195600480360360208110156101bf57600080fd5b5035610761565b61026e600480360360408110156101dc57600080fd5b81359190810190604081016020820135600160201b8111156101fd57600080fd5b82018360208201111561020f57600080fd5b803590602001918460208302840111600160201b8311171561023057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610776945050505050565b005b61028d6004803603602081101561028657600080fd5b50356109b1565b604080516001600160a01b039092168252519081900360200190f35b6102c6600480360360208110156102bf57600080fd5b50356109cc565b60408051918252519081900360200190f35b61026e600480360360408110156102ee57600080fd5b50803590602001356001600160a01b03166109e1565b61026e6004803603604081101561031a57600080fd5b50803590602001356001600160a01b0316610a4d565b61026e6004803603602081101561034657600080fd5b5035610aae565b61026e6004803603604081101561036357600080fd5b5080359060200135610b5f565b6102c66004803603602081101561038657600080fd5b5035610d05565b610195600480360360208110156103a357600080fd5b5035610d17565b61028d600480360360408110156103c057600080fd5b5080359060200135610d2c565b610195600480360360408110156103e357600080fd5b50803590602001356001600160a01b0316610d4d565b6102c6610d65565b6102c6610d77565b61026e6004803603604081101561041f57600080fd5b81359190810190604081016020820135600160201b81111561044057600080fd5b82018360208201111561045257600080fd5b803590602001918460208302840111600160201b8311171561047357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d7c945050505050565b61026e600480360360e08110156104c757600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156104fd57600080fd5b82018360208201111561050f57600080fd5b803590602001918460208302840111600160201b8311171561053057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060208101359060400135610f97565b61026e6004803603604081101561058f57600080fd5b81359190810190604081016020820135600160201b8111156105b057600080fd5b8201836020820111156105c257600080fd5b803590602001918460208302840111600160201b831117156105e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611342945050505050565b61026e6115ae565b6102c66004803603602081101561063f57600080fd5b5035611625565b6102c66004803603602081101561065c57600080fd5b5035611637565b61026e6004803603604081101561067957600080fd5b50803590602001356001600160a01b031661164e565b6106976116a7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106d15781810151838201526020016106b9565b50505050905090810190601f1680156106fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026e6004803603604081101561072257600080fd5b508035906020013561173c565b61026e6004803603602081101561074557600080fd5b503561193b565b60009081526004602052604090205460ff1690565b60009081526005602052604090205460ff1690565b61077e6119b0565b6000838152600260205260409020546001600160a01b039081169116146107d65760405162461bcd60e51b8152600401808060200182810382526037815260200180611ef56037913960400191505060405180910390fd5b600082815260026020908152604080832080546001600160a01b0319169055600782528083208390556003825280832083905560048252808320805460ff191690556006909152812055805180156109815760005b8181101561097f57600083828151811061084157fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610885575060008181526004602052604090205460ff165b156108dc576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610976565b6000818152600260205260409020546001600160a01b031615801590610911575060008181526004602052604090205460ff16155b1561094857604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610976565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161082b565b505b60405183907ff02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb890600090a2505050565b6000908152600260205260409020546001600160a01b031690565b60009081526020819052604090206002015490565b600082815260208190526040902060020154610a04906109ff6119b0565b610d4d565b610a3f5760405162461bcd60e51b815260040180806020018281038252602f815260200180611ca0602f913960400191505060405180910390fd5b610a4982826119b4565b5050565b610a556119b0565b6001600160a01b0316816001600160a01b031614610aa45760405162461bcd60e51b815260040180806020018281038252602f815260200180611fe4602f913960400191505060405180910390fd5b610a498282611a1d565b610abb60006109ff6119b0565b610af65760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b60008181526008602052604090205460ff1615610b445760405162461bcd60e51b815260040180806020018281038252602d815260200180611ec8602d913960400191505060405180910390fd5b6000908152600860205260409020805460ff19166001179055565b610b79600080516020611fc48339815191526109ff6119b0565b610bb45760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610bbc6119b0565b6000838152600260205260409020546001600160a01b03908116911614610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b0316610c675760405162461bcd60e51b815260040180806020018281038252603c815260200180611e8c603c913960400191505060405180910390fd5b60008281526004602052604090205460ff16610cb45760405162461bcd60e51b8152600401808060200182810382526036815260200180611d486036913960400191505060405180910390fd5b6000828152600460209081526040808320805460ff19169055600690915280822084905551829184917f09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca99190a35050565b60009081526007602052604090205490565b60009081526008602052604090205460ff1690565b6000828152602081905260408120610d449083611a86565b90505b92915050565b6000828152602081905260408120610d449083611a92565b600080516020611fc483398151915281565b600081565b610d96600080516020611fc48339815191526109ff6119b0565b610dd15760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610dd96119b0565b6000838152600260205260409020546001600160a01b03908116911614610e315760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b80518015610f925760005b81811015610f90576000838281518110610e5257fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610e96575060008181526004602052604090205460ff165b15610eed576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610f87565b6000818152600260205260409020546001600160a01b031615801590610f22575060008181526004602052604090205460ff16155b15610f5957604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610f87565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b50600101610e3c565b505b505050565b610fb1600080516020611fc48339815191526109ff6119b0565b610fec5760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610ff582610d17565b6110305760405162461bcd60e51b8152600401808060200182810382526026815260200180611c7a6026913960400191505060405180910390fd5b6000868152600260205260409020546001600160a01b0316156110845760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b8015806110915750806001145b6110e2576040805162461bcd60e51b815260206004820181905260248201527f5370617469616c204173736574733a2077726f6e672067656f64696474797065604482015290519081900360640190fd5b60008681526003602090815260408083208690556002825280832080546001600160a01b0319166001600160a01b038c161790556007909152902082905580611143576000868152600560205260409020805460ff19166001179055611163565b8060011415611163576000868152600560205260409020805460ff191690555b846111e9576000868152600460209081526040808320805460ff1916905560068252808320899055600582529182902054825185815291820189905260ff161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a461129e565b6000868152600460209081526040808320805460ff19166001179055878352600682528083205489845260058352928190205481518681529283019390935260ff929092161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a4604051859087907fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d0690600090a35b835180158015906112bd575060008781526005602052604090205460ff165b156113385760005b818110156113365760008682815181106112db57fe5b602090810291909101810151600081815260049092526040808320805460ff191660011790555190925082918b917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a3506001016112c5565b505b5050505050505050565b61135c600080516020611fc48339815191526109ff6119b0565b6113975760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b61139f6119b0565b6000838152600260205260409020546001600160a01b039081169116146113f75760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b60008281526005602052604090205460ff166114445760405162461bcd60e51b8152600401808060200182810382526040815260200180611dc46040913960400191505060405180910390fd5b80518015610f925760005b81811015610f9057600083828151811061146557fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b0316158015906114aa575060008181526004602052604090205460ff16155b1561150c576000818152600460209081526040808320805460ff191660011790558783526006909152808220548383528183205551829187917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a36115a5565b6000818152600260205260409020546001600160a01b031615801590611540575060008181526004602052604090205460ff165b1561157757604051819086907fc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b90600090a36115a5565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161144f565b6115c8600080516020611fc48339815191526109ff6119b0565b156116045760405162461bcd60e51b8152600401808060200182810382526035815260200180611f8f6035913960400191505060405180910390fd5b611623600080516020611fc483398151915261161e6119b0565b610a3f565b565b60009081526003602052604090205490565b6000818152602081905260408120610d4790611aa7565b60008281526020819052604090206002015461166c906109ff6119b0565b610aa45760405162461bcd60e51b8152600401808060200182810382526030815260200180611e5c6030913960400191505060405180910390fd5b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156117325780601f1061170757610100808354040283529160200191611732565b820191906000526020600020905b81548152906001019060200180831161171557829003601f168201915b5050505050905090565b611756600080516020611fc48339815191526109ff6119b0565b6117915760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b6117996119b0565b6000838152600260205260409020546001600160a01b039081169116146117f15760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b03166118445760405162461bcd60e51b815260040180806020018281038252602c815260200180611e30602c913960400191505060405180910390fd5b60008281526004602052604090205460ff16156118925760405162461bcd60e51b815260040180806020018281038252602c815260200180611e04602c913960400191505060405180910390fd5b60008181526005602052604090205460ff166118df5760405162461bcd60e51b8152600401808060200182810382526046815260200180611d7e6046913960600191505060405180910390fd5b6000828152600460209081526040808320805460ff191660011790558383526006909152808220548483528183205551829184917fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d069190a35050565b61194860006109ff6119b0565b6119835760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b6000908152600860205260409020805460ff19169055565b6000610d44836001600160a01b038416611ab2565b3390565b60008281526020819052604090206119cc908261199b565b15610a49576119d96119b0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081905260409020611a359082611afc565b15610a4957611a426119b0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610d448383611b11565b6000610d44836001600160a01b038416611b75565b6000610d4782611b8d565b6000611abe8383611b75565b611af457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d47565b506000610d47565b6000610d44836001600160a01b038416611b91565b81546000908210611b535760405162461bcd60e51b8152600401808060200182810382526022815260200180611c586022913960400191505060405180910390fd5b826000018281548110611b6257fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015611c4d5783546000198083019190810190600090879083908110611bc457fe5b9060005260206000200154905080876000018481548110611be157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611c1157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610d47565b6000915050610d4756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64735370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e745370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f725370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f72616765735370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f76655370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e745370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b655370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f742065786973745370617469616c4173736574733a2073746f72616765206d757374206e6f7420626520616374697665207965745370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c2041737365745370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e6572207965745370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f2072656769737465725370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212200603174d84b92a254e194b236a6220fcb94109027f9b708b8705b69fcb21d1bd64736f6c634300060c0033", - "immutableReferences": {}, - "sourceMap": "539:12282:1:-:0;;;3166:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3166:171:1;;;;;;;;;;-1:-1:-1;3166:171:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3214:12;3222:3;3214:7;;;:12;;:::i;:::-;3236:44;1772:4:3;3267:12:1;:10;:12::i;:::-;3236:10;:44::i;:::-;3290:39;2284:26;3316:12;:10;:12::i;3290:39::-;3166:171;539:12282;;11979:78;12037:13;;;;:4;;:13;;;;;:::i;:::-;;11979:78;:::o;598:104:5:-;685:10;598:104;:::o;6588:110:3:-;6666:25;6677:4;6683:7;7098:6;:12;;;;;;;;;;;:33;;7123:7;;7098:24;;;;;:33;;:::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:3;7170:7;-1:-1:-1;;;;;7152:40:3;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;6429:150:6:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:6;;6522:4;:50::i;:::-;6515:57;;6429:150;;;;;:::o;1640:404::-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:6;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:6;2015:12;;3805:127;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;539:12282:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;539:12282:1;;;-1:-1:-1;539:12282:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "539:12282:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12373:100;;;;;;;;;;;;;;;;-1:-1:-1;12373:100:1;;:::i;:::-;;;;;;;;;;;;;;;;;;12263:104;;;;;;;;;;;;;;;;-1:-1:-1;12263:104:1;;:::i;10640:1256::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10640:1256:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10640:1256:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10640:1256:1;;-1:-1:-1;10640:1256:1;;-1:-1:-1;;;;;10640:1256:1:i;:::-;;12063:96;;;;;;;;;;;;;;;;-1:-1:-1;12063:96:1;;:::i;:::-;;;;-1:-1:-1;;;;;12063:96:1;;;;;;;;;;;;;;4282:112:3;;;;;;;;;;;;;;;;-1:-1:-1;4282:112:3;;:::i;:::-;;;;;;;;;;;;;;;;4644:223;;;;;;;;;;;;;;;;-1:-1:-1;4644:223:3;;;;;;-1:-1:-1;;;;;4644:223:3;;:::i;5818:205::-;;;;;;;;;;;;;;;;-1:-1:-1;5818:205:3;;;;;;-1:-1:-1;;;;;5818:205:3;;:::i;3737:354:1:-;;;;;;;;;;;;;;;;-1:-1:-1;3737:354:1;;:::i;9923:653::-;;;;;;;;;;;;;;;;-1:-1:-1;9923:653:1;;;;;;;:::i;12479:115::-;;;;;;;;;;;;;;;;-1:-1:-1;12479:115:1;;:::i;12600:134::-;;;;;;;;;;;;;;;;-1:-1:-1;12600:134:1;;:::i;3965:136:3:-;;;;;;;;;;;;;;;;-1:-1:-1;3965:136:3;;;;;;;:::i;2950:137::-;;;;;;;;;;;;;;;;-1:-1:-1;2950:137:3;;;;;;-1:-1:-1;;;;;2950:137:3;;:::i;2244:66:1:-;;;:::i;1727:49:3:-;;;:::i;8677:1111:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8677:1111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8677:1111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8677:1111:1;;-1:-1:-1;8677:1111:1;;-1:-1:-1;;;;;8677:1111:1:i;4578:1736::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4578:1736:1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4578:1736:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4578:1736:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4578:1736:1;;-1:-1:-1;;4578:1736:1;;;-1:-1:-1;;;4578:1736:1;;;;;;;;;:::i;6446:1224::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6446:1224:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6446:1224:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6446:1224:1;;-1:-1:-1;6446:1224:1;;-1:-1:-1;;;;;6446:1224:1:i;3438:200::-;;;:::i;12165:92::-;;;;;;;;;;;;;;;;-1:-1:-1;12165:92:1;;:::i;3255:125:3:-;;;;;;;;;;;;;;;;-1:-1:-1;3255:125:3;;:::i;5101:226::-;;;;;;;;;;;;;;;;-1:-1:-1;5101:226:3;;;;;;-1:-1:-1;;;;;5101:226:3;;:::i;12740:79:1:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7798:755;;;;;;;;;;;;;;;;-1:-1:-1;7798:755:1;;;;;;;:::i;4154:247::-;;;;;;;;;;;;;;;;-1:-1:-1;4154:247:1;;:::i;12373:100::-;12429:4;12452:14;;;:10;:14;;;;;;;;;12373:100::o;12263:104::-;12321:4;12344:16;;;:12;:16;;;;;;;;;12263:104::o;10640:1256::-;10784:12;:10;:12::i;:::-;10763:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;10763:17:1;;;:33;;;10742:122;;;;-1:-1:-1;;;10742:122:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10902:1;10874:17;;;:7;:17;;;;;;;;:30;;-1:-1:-1;;;;;;10874:30:1;;;10914:16;:26;;;;;:31;;;10955:5;:15;;;;;:20;;;10985:10;:20;;;;;:28;;-1:-1:-1;;10985:28:1;;;11023:5;:15;;;;;:20;11077:23;;11115:16;;11111:730;;11150:9;11146:685;11167:12;11163:1;:16;11146:685;;;11204:22;11229:16;11246:1;11229:19;;;;;;;;;;;;;;;;;;;11305:1;11270:23;;;:7;:23;;;;;;;;11229:19;;-1:-1:-1;;;;;;11270:23:1;:37;;;;:67;;-1:-1:-1;11311:26:1;;;;:10;:26;;;;;;;;11270:67;11266:551;;;11390:5;11361:26;;;:10;:26;;;;;;;;:34;;-1:-1:-1;;11361:34:1;;;11417:5;:21;;;;;;:38;;;11482:41;11372:14;;11498:8;;11482:41;;11390:5;11482:41;11266:551;;;11588:1;11553:23;;;:7;:23;;;;;;-1:-1:-1;;;;;11553:23:1;:37;;;;:68;;-1:-1:-1;11595:26:1;;;;:10;:26;;;;;;;;11594:27;11553:68;11549:268;;;11649:47;;11681:14;;11671:8;;11649:47;;;;;11549:268;;;11748:50;;11783:14;;11773:8;;11748:50;;;;;11549:268;-1:-1:-1;11181:3:1;;11146:685;;;;11111:730;11856:33;;11880:8;;11856:33;;;;;10640:1256;;;:::o;12063:96::-;12115:7;12141:11;;;:7;:11;;;;;;-1:-1:-1;;;;;12141:11:1;;12063:96::o;4282:112:3:-;4339:7;4365:12;;;;;;;;;;:22;;;;4282:112::o;4644:223::-;4735:6;:12;;;;;;;;;;:22;;;4727:45;;4759:12;:10;:12::i;:::-;4727:7;:45::i;:::-;4719:105;;;;-1:-1:-1;;;4719:105:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4835:25;4846:4;4852:7;4835:10;:25::i;:::-;4644:223;;:::o;5818:205::-;5915:12;:10;:12::i;:::-;-1:-1:-1;;;;;5904:23:3;:7;-1:-1:-1;;;;;5904:23:3;;5896:83;;;;-1:-1:-1;;;5896:83:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:26;6002:4;6008:7;5990:11;:26::i;3737:354:1:-;3810:41;1772:4:3;3838:12:1;:10;:12::i;3810:41::-;3802:123;;;;-1:-1:-1;;;3802:123:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3943:33;;;;:16;:33;;;;;;;;:41;3935:99;;;;-1:-1:-1;;;3935:99:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4044:33;;;;:16;:33;;;;;:40;;-1:-1:-1;;4044:40:1;4080:4;4044:40;;;3737:354::o;9923:653::-;10018:36;-1:-1:-1;;;;;;;;;;;10041:12:1;:10;:12::i;10018:36::-;10010:104;;;;-1:-1:-1;;;10010:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10153:12;:10;:12::i;:::-;10132:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;10132:17:1;;;:33;;;10124:90;;;;-1:-1:-1;;;10124:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10267:1;10232:23;;;:7;:23;;;;;;-1:-1:-1;;;;;10232:23:1;10224:110;;;;-1:-1:-1;;;10224:110:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10352:20;;;;:10;:20;;;;;;;;10344:87;;;;-1:-1:-1;;;10344:87:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10465:5;10442:20;;;:10;:20;;;;;;;;:28;;-1:-1:-1;;10442:28:1;;;10480:5;:15;;;;;;:26;;;10530:39;10554:14;;10453:8;;10530:39;;10465:5;10530:39;9923:653;;:::o;12479:115::-;12541:7;12567:20;;;:16;:20;;;;;;;12479:115::o;12600:134::-;12671:4;12694:33;;;:16;:33;;;;;;;;;12600:134::o;3965:136:3:-;4038:7;4064:12;;;;;;;;;;:30;;4088:5;4064:23;:30::i;:::-;4057:37;;3965:136;;;;;:::o;2950:137::-;3019:4;3042:12;;;;;;;;;;:38;;3072:7;3042:29;:38::i;2244:66:1:-;-1:-1:-1;;;;;;;;;;;2244:66:1;:::o;1727:49:3:-;1772:4;1727:49;:::o;8677:1111:1:-;8787:36;-1:-1:-1;;;;;;;;;;;8810:12:1;:10;:12::i;8787:36::-;8779:104;;;;-1:-1:-1;;;8779:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8922:12;:10;:12::i;:::-;8901:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;8901:17:1;;;:33;;;8893:90;;;;-1:-1:-1;;;8893:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9017:24;;9056:16;;9052:730;;9091:9;9087:685;9108:12;9104:1;:16;9087:685;;;9145:22;9170:17;9188:1;9170:20;;;;;;;;;;;;;;;;;;;9247:1;9212:23;;;:7;:23;;;;;;;;9170:20;;-1:-1:-1;;;;;;9212:23:1;:37;;;;:67;;-1:-1:-1;9253:26:1;;;;:10;:26;;;;;;;;9212:67;9208:550;;;9332:5;9303:26;;;:10;:26;;;;;;;;:34;;-1:-1:-1;;9303:34:1;;;9359:5;:21;;;;;;:38;;;9424:41;9314:14;;9440:8;;9424:41;;9332:5;9424:41;9208:550;;;9529:1;9494:23;;;:7;:23;;;;;;-1:-1:-1;;;;;9494:23:1;:37;;;;:68;;-1:-1:-1;9536:26:1;;;;:10;:26;;;;;;;;9535:27;9494:68;9490:268;;;9590:47;;9622:14;;9612:8;;9590:47;;;;;9490:268;;;9689:50;;9724:14;;9714:8;;9689:50;;;;;9490:268;-1:-1:-1;9122:3:1;;9087:685;;;;9052:730;8677:1111;;;:::o;4578:1736::-;4785:36;-1:-1:-1;;;;;;;;;;;4808:12:1;:10;:12::i;4785:36::-;4777:104;;;;-1:-1:-1;;;4777:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4899:32;4915:15;4899;:32::i;:::-;4891:83;;;;-1:-1:-1;;;4891:83:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5021:1;4992:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4992:17:1;:31;4984:88;;;;-1:-1:-1;;;4984:88:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:16;;;:35;;;5110:10;5124:1;5110:15;5090:35;5082:80;;;;;-1:-1:-1;;;5082:80:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:15;;;;:5;:15;;;;;;;;:20;;;5203:7;:17;;;;;:25;;-1:-1:-1;;;;;;5203:25:1;-1:-1:-1;;;;;5203:25:1;;;;;5238:16;:26;;;;;:44;;;5297:15;5293:157;;5328:22;;;;:12;:22;;;;;:29;;-1:-1:-1;;5328:29:1;5353:4;5328:29;;;5293:157;;;5378:10;5392:1;5378:15;5374:76;;;5434:5;5409:22;;;:12;:22;;;;;:30;;-1:-1:-1;;5409:30:1;;;5374:76;5464:28;5460:478;;5531:5;5508:20;;;:10;:20;;;;;;;;:28;;-1:-1:-1;;5508:28:1;;;5550:5;:15;;;;;:26;;;5663:12;:22;;;;;;;5591:95;;;;;;;;;;;5508:28;5663:22;5591:95;;;;;;;;5631:3;;5519:8;;-1:-1:-1;;;;;5591:95:1;;;;;;;;;;;;;5460:478;;;5717:20;;;;:10;:20;;;;;;;;:27;;-1:-1:-1;;5717:27:1;5740:4;5717:27;;;5825:21;;;:5;:21;;;;;;5848:22;;;:12;:22;;;;;;;5763:108;;;;;;;;;;;;5717:27;5848:22;;;;5763:108;;;;;;;;5803:3;;5728:8;;-1:-1:-1;;;;;5763:108:1;;;;;;;;;;;;;5890:37;;5912:14;;5902:8;;5890:37;;;;;5460:478;5971:24;;6010:16;;;;;:42;;-1:-1:-1;6030:22:1;;;;:12;:22;;;;;;;;6010:42;6006:302;;;6071:9;6067:231;6088:12;6084:1;:16;6067:231;;;6125:22;6150:17;6168:1;6150:20;;;;;;;;;;;;;;;;;;;6188:26;;;;:10;:26;;;;;;;:33;;-1:-1:-1;;6188:33:1;6217:4;6188:33;;;6244:39;6150:20;;-1:-1:-1;6150:20:1;;6258:8;;6244:39;;6188:26;6244:39;-1:-1:-1;6102:3:1;;6067:231;;;;6006:302;4578:1736;;;;;;;;:::o;6446:1224::-;6553:36;-1:-1:-1;;;;;;;;;;;6576:12:1;:10;:12::i;6553:36::-;6545:104;;;;-1:-1:-1;;;6545:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6688:12;:10;:12::i;:::-;6667:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;6667:17:1;;;:33;;;6659:98;;;;-1:-1:-1;;;6659:98:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6775:22;;;;:12;:22;;;;;;;;6767:99;;;;-1:-1:-1;;;6767:99:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6900:24;;6939:16;;6935:729;;6974:9;6970:684;6991:12;6987:1;:16;6970:684;;;7028:22;7053:17;7071:1;7053:20;;;;;;;;;;;;;;;;;;;7130:1;7095:23;;;:7;:23;;;;;;;;7053:20;;-1:-1:-1;;;;;;7095:23:1;:37;;;;:68;;-1:-1:-1;7137:26:1;;;;:10;:26;;;;;;;;7136:27;7095:68;7091:549;;;7187:26;;;;:10;:26;;;;;;;;:33;;-1:-1:-1;;7187:33:1;7216:4;7187:33;;;7266:15;;;:5;:15;;;;;;;7242:21;;;;;;:39;7308;7198:14;;7272:8;;7308:39;;7187:26;7308:39;7091:549;;;7411:1;7376:23;;;:7;:23;;;;;;-1:-1:-1;;;;;7376:23:1;:37;;;;:67;;-1:-1:-1;7417:26:1;;;;:10;:26;;;;;;;;7376:67;7372:268;;;7471:48;;7504:14;;7494:8;;7471:48;;;;;7372:268;;;7571:50;;7606:14;;7596:8;;7571:50;;;;;7372:268;-1:-1:-1;7005:3:1;;6970:684;;3438:200;3488:36;-1:-1:-1;;;;;;;;;;;3511:12:1;:10;:12::i;3488:36::-;3487:37;3479:103;;;;-1:-1:-1;;;3479:103:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3592:39;-1:-1:-1;;;;;;;;;;;3618:12:1;:10;:12::i;:::-;3592:10;:39::i;:::-;3438:200::o;12165:92::-;12215:7;12241:9;;;:5;:9;;;;;;;12165:92::o;3255:125:3:-;3318:7;3344:12;;;;;;;;;;:29;;:27;:29::i;5101:226::-;5193:6;:12;;;;;;;;;;:22;;;5185:45;;5217:12;:10;:12::i;5185:45::-;5177:106;;;;-1:-1:-1;;;5177:106:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12740:79:1;12808:4;12801:11;;;;;;;;-1:-1:-1;;12801:11:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12776:13;;12801:11;;12808:4;;12801:11;;12808:4;12801:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12740:79;:::o;7798:755::-;7890:36;-1:-1:-1;;;;;;;;;;;7913:12:1;:10;:12::i;7890:36::-;7882:104;;;;-1:-1:-1;;;7882:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8025:12;:10;:12::i;:::-;8004:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;8004:17:1;;;:33;;;7996:98;;;;-1:-1:-1;;;7996:98:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8147:1;8112:23;;;:7;:23;;;;;;-1:-1:-1;;;;;8112:23:1;8104:94;;;;-1:-1:-1;;;8104:94:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8217:20;;;;:10;:20;;;;;;;;8216:21;8208:78;;;;-1:-1:-1;;;8208:78:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8304:28;;;;:12;:28;;;;;;;;8296:111;;;;-1:-1:-1;;;8296:111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8418:20;;;;:10;:20;;;;;;;;:27;;-1:-1:-1;;8418:27:1;8441:4;8418:27;;;8473:21;;;:5;:21;;;;;;;8455:15;;;;;;:39;8509:37;8479:14;;8429:8;;8509:37;;8418:20;8509:37;7798:755;;:::o;4154:247::-;4228:41;1772:4:3;4256:12:1;:10;:12::i;4228:41::-;4220:123;;;;-1:-1:-1;;;4220:123:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:5;4353:33;;;:16;:33;;;;;:41;;-1:-1:-1;;4353:41:1;;;4154:247::o;6429:150:6:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:6;;6522:4;:50::i;598:104:5:-;685:10;598:104;:::o;7025:184:3:-;7098:6;:12;;;;;;;;;;:33;;7123:7;7098:24;:33::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:3;7170:7;-1:-1:-1;;;;;7152:40:3;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;7215:188::-;7289:6;:12;;;;;;;;;;:36;;7317:7;7289:27;:36::i;:::-;7285:112;;;7373:12;:10;:12::i;:::-;-1:-1:-1;;;;;7346:40:3;7364:7;-1:-1:-1;;;;;7346:40:3;7358:4;7346:40;;;;;;;;;;7215:188;;:::o;7677:156:6:-;7751:7;7801:22;7805:3;7817:5;7801:3;:22::i;6984:165::-;7064:4;7087:55;7097:3;-1:-1:-1;;;;;7117:23:6;;7087:9;:55::i;7230:115::-;7293:7;7319:19;7327:3;7319:7;:19::i;1640:404::-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:6;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:6;2015:12;;6747:156;6820:4;6843:53;6851:3;-1:-1:-1;;;;;6871:23:6;;6843:7;:53::i;4452:201::-;4546:18;;4519:7;;4546:26;-1:-1:-1;4538:73:6;;;;-1:-1:-1;;;4538:73:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4628:3;:11;;4640:5;4628:18;;;;;;;;;;;;;;;;4621:25;;4452:201;;;;:::o;3805:127::-;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;4013:107::-;4095:18;;4013:107::o;2212:1512::-;2278:4;2415:19;;;:12;;;:19;;;;;;2449:15;;2445:1273;;2878:18;;-1:-1:-1;;2830:14:6;;;;2878:22;;;;2806:21;;2878:3;;:22;;3160;;;;;;;;;;;;;;3140:42;;3303:9;3274:3;:11;;3286:13;3274:26;;;;;;;;;;;;;;;;;;;:38;;;;3378:23;;;3420:1;3378:12;;;:23;;;;;;3404:17;;;3378:43;;3527:17;;3378:3;;3527:17;;;;;;;;;;;;;;;;;;;;;;3619:3;:12;;:19;3632:5;3619:19;;;;;;;;;;;3612:26;;;3660:4;3653:11;;;;;;;;2445:1273;3702:5;3695:12;;;;", - "source": "// SPDX-License-Identifier: APACHE OR MIT\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\n\n/**\n * @dev {SpatialAssets} registry\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant\n * 'DATA_SUPPLIER' roles to other accounts\n */\ncontract SpatialAssets is Context, AccessControl {\n /**\n * @dev Emitted when Spatial Assets of id `id` are transferred to `to``.\n */\n event SpatialAssetRegistered(address indexed to, bytes32 indexed geoDIDId, bytes32 indexed cid, bytes32 offChainStorage, bytes32 root, bool canBeParent);\n\n /**\n * @dev Emitted when Spatial Assets of id `id` are deactivated.\n */\n event SpatialAssetDeactivated(bytes32 indexed geoDIDId);\n\n /**\n * @dev Emitted when a parent geodid is added to a node\n */\n event ParentAdded(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId);\n\n /**\n * @dev Emitted when a children geodid is added to a node\n */\n event ChildrenAdded(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n /**\n * @dev Emitted when a parent geodid is removed from a node\n */\n event ParentRemoved(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId);\n\n /**\n * @dev Emitted when a children geodid is removed from a node\n */\n event ChildrenRemoved(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n \n /**\n * @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent\n */\n event ChildrenErrorNoParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n \n /**\n * @dev Emitted when a children geodid does not exist\n */\n event ChildrenErrorNoExistence(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n \n /**\n * @dev Emitted when a children geodid already has a parent but shouldn't have\n */\n event ChildrenErrorHasParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n\n bytes32 public constant DATA_SUPPLIER = keccak256(\"DATA_SUPPLIER\");\n\n string private _uri;\n\n // Mapping from GeodidID to registrant\n mapping (bytes32 => address) private _owners;\n \n // Mapping from GeodidID to Cid\n mapping (bytes32 => bytes32) private _cids;\n\n // Mapping from GeodidID to parenthood status\n mapping (bytes32 => bool) private _hasParent;\n\n // Mapping from GeodidID to parenthood type\n mapping (bytes32 => bool) private _canBeParent;\n \n // Mapping from GeodidID to root GeoDID\n mapping (bytes32 => bytes32) private _root;\n\n // Mapping from id to spatial asset external storage\n mapping (bytes32 => bytes32) private _externalStorage;\n\n // Allowed external storages signatures\n mapping (bytes32 => bool) private _allowedStorages;\n\n\n /**\n * @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that\n * deploys the contract.\n */\n constructor(string memory uri) public {\n _setURI(uri);\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n _setupRole(DATA_SUPPLIER, _msgSender());\n\n }\n\n /**\n * @dev Registers a new user with the ability to register a spatial asset.\n */\n function registerRole() public {\n require(!hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must not have a DATA_SUPPLIER role yet\");\n _setupRole(DATA_SUPPLIER, _msgSender());\n }\n\n /**\n * @dev Registers a new storage that can accept GeoDID document creation\n */\n function enableStorage(bytes32 offChainStorage) public {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"SpatialAssets: must have admin role to edit allowed offchain storages\");\n require(_allowedStorages[offChainStorage]== false, \"SpatialAssets: storage must not be active yet\");\n _allowedStorages[offChainStorage] = true;\n }\n\n /**\n * @dev Disables an existing storage\n */\n function disableStorage(bytes32 offChainStorage) public {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"SpatialAssets: must have admin role to edit allowed offchain storages\");\n _allowedStorages[offChainStorage] = false;\n }\n\n\n /**\n * @dev Registers one spatial asset with external storage 'data' and assigns them to `account`.\n *\n * Emits a {SpatialAssetRegistered} event.\n */\n function registerSpatialAsset(address owner, bytes32 geoDIDId, bytes32 parentGeoDIDId , bytes32[] memory childrenGeoDIDIds, bytes32 cid, bytes32 offChainStorage, uint256 geoDIDtype) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(allowedStorages(offChainStorage), \"SpatialAssets: storage must be allowed\");\n require(_owners[geoDIDId] == address(0), \"SpatialAssets: id must not have an owner yet\");\n require(geoDIDtype == 0 || geoDIDtype == 1, \"Spatial Assets: wrong geodidtype\");\n\n _cids[geoDIDId] =cid;\n _owners[geoDIDId] = owner;\n _externalStorage[geoDIDId] = offChainStorage;\n\n if (geoDIDtype == 0) {\n _canBeParent[geoDIDId] = true;\n } else if (geoDIDtype == 1) {\n _canBeParent[geoDIDId] = false;\n }\n\n if (parentGeoDIDId == bytes32(0)) {\n _hasParent[geoDIDId] = false;\n _root[geoDIDId] = geoDIDId;\n emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, geoDIDId, _canBeParent[geoDIDId]);\n } else {\n _hasParent[geoDIDId] = true;\n emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, _root[parentGeoDIDId], _canBeParent[geoDIDId]);\n emit ParentAdded(geoDIDId, parentGeoDIDId);\n }\n\n uint256 childrensLen = childrenGeoDIDIds.length;\n\n if (childrensLen > 0 && _canBeParent[geoDIDId]){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenGeoDIDIds[j];\n _hasParent[childrenGeoDID] = true;\n emit ChildrenAdded(geoDIDId, childrenGeoDID);\n }\n }\n }\n\n\n /**\n * @dev Adds children GeoDIDs to an already existent geoDID\n *\n * Emits a {ChildrenAdded} event.\n */\n function addChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: geoDIDId must be owned by its creator\");\n require(_canBeParent[geoDIDId], \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\");\n\n uint256 childrensLen = childrenGeoDIDIds.length;\n\n if (childrensLen > 0){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenGeoDIDIds[j];\n if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]) {\n _hasParent[childrenGeoDID] = true;\n _root[childrenGeoDID] = _root[geoDIDId];\n emit ChildrenAdded(geoDIDId, childrenGeoDID);\n } else if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]){\n emit ChildrenErrorHasParent(geoDIDId, childrenGeoDID);\n } else {\n emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);\n }\n }\n }\n }\n\n /**\n * @dev Adds a parent GeoDID to an already existent geoDID\n *\n * Emits a {ParentAdded} event.\n */\n function addParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: geoDIDId must be owned by its creator\");\n require(_owners[parentGeoDIDId] != address(0), \"SpatialAssets: parentGeoDIDId does not exist\");\n require(!_hasParent[geoDIDId], \"SpatialAssets: geoDIDId already has a parent\");\n require(_canBeParent[parentGeoDIDId], \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\");\n\n _hasParent[geoDIDId] = true;\n _root[geoDIDId] = _root[parentGeoDIDId];\n emit ParentAdded(geoDIDId, parentGeoDIDId);\n }\n\n \n /**\n * @dev Removes childrenGeoDIDs from a geoDID\n *\n * Emits a {ChildrenRemoved} event.\n */\n function removeChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: id must not have an owner yet\");\n\n uint256 childrensLen = childrenGeoDIDIds.length;\n\n if (childrensLen > 0){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenGeoDIDIds[j];\n if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) {\n _hasParent[childrenGeoDID] = false;\n _root[childrenGeoDID] = childrenGeoDID;\n emit ChildrenRemoved(geoDIDId, childrenGeoDID);\n } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){\n emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID);\n } else {\n emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);\n }\n }\n }\n }\n\n\n /**\n * @dev Removes a parent GeoDID from an already existent geoDID\n *\n * Emits a {ParentAdded} event.\n */\n function removeParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: id must not have an owner yet\");\n require(_owners[parentGeoDIDId] != address(0), \"SpatialAssets: GeoDID to be removed as parent does not exist\");\n require(_hasParent[geoDIDId], \"SpatialAssets: GeoDID does not have a parent to remove\");\n\n _hasParent[geoDIDId] = false;\n _root[geoDIDId] = geoDIDId;\n \n emit ParentRemoved(geoDIDId, parentGeoDIDId);\n }\n\n /**\n * @dev De-registers a spatial asset\n */\n function deactivateSpatialAsset(bytes32 geoDIDId, bytes32[] memory childrenToRemove) public {\n require(\n _owners[geoDIDId] == _msgSender(),\"SpatialAssets: caller is not owner of the Spatial Asset\"\n );\n _owners[geoDIDId] = address(0);\n _externalStorage[geoDIDId] = \"\";\n _cids[geoDIDId] = \"\";\n _hasParent[geoDIDId] = false;\n _root[geoDIDId] = \"\";\n\n uint256 childrensLen = childrenToRemove.length;\n\n if (childrensLen > 0){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenToRemove[j];\n if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) {\n _hasParent[childrenGeoDID] = false;\n _root[childrenGeoDID] = childrenGeoDID;\n emit ChildrenRemoved(geoDIDId, childrenGeoDID);\n } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){\n emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID);\n } else {\n emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);\n }\n }\n }\n\n emit SpatialAssetDeactivated(geoDIDId);\n }\n \n /**\n * @dev Sets a new URI for all the spatial asset types\n */\n function _setURI(string memory newuri) internal {\n _uri = newuri;\n }\n\n function idToOwner(bytes32 id) public view returns (address) {\n return _owners[id];\n }\n\n function idToCid(bytes32 id) public view returns (bytes32) {\n return _cids[id];\n }\n\n function idToCanBeParent(bytes32 id) public view returns (bool) {\n return _canBeParent[id];\n }\n\n function idToHasParent(bytes32 id) public view returns (bool) {\n return _hasParent[id];\n }\n\n function idToExternalStorage(bytes32 id) public view returns (bytes32) {\n return _externalStorage[id];\n }\n\n function allowedStorages(bytes32 offChainStorage) public view returns (bool) {\n return _allowedStorages[offChainStorage];\n }\n\n function uri() public view returns (string memory) {\n return _uri;\n }\n}\n", - "sourcePath": "/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol", - "ast": { - "absolutePath": "/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol", - "exportedSymbols": { - "SpatialAssets": [ - 1073 - ] - }, - "id": 1074, - "license": "APACHE OR MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 58, - "literals": [ - "solidity", - "^", - "0.6", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "42:23:1" - }, - { - "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol", - "file": "@openzeppelin/contracts/access/AccessControl.sol", - "id": 59, - "nodeType": "ImportDirective", - "scope": 1074, - "sourceUnit": 1360, - "src": "67:58:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", - "file": "@openzeppelin/contracts/GSN/Context.sol", - "id": 60, - "nodeType": "ImportDirective", - "scope": 1074, - "sourceUnit": 1077, - "src": "126:49:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 62, - "name": "Context", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1678, - "src": "565:7:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$1678", - "typeString": "contract Context" - } - }, - "id": 63, - "nodeType": "InheritanceSpecifier", - "src": "565:7:1" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 64, - "name": "AccessControl", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "574:13:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AccessControl_$1359", - "typeString": "contract AccessControl" - } - }, - "id": 65, - "nodeType": "InheritanceSpecifier", - "src": "574:13:1" - } - ], - "contractDependencies": [ - 1359, - 1678 - ], - "contractKind": "contract", - "documentation": { - "id": 61, - "nodeType": "StructuredDocumentation", - "src": "177:361:1", - "text": " @dev {SpatialAssets} registry\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant\n 'DATA_SUPPLIER' roles to other accounts" - }, - "fullyImplemented": true, - "id": 1073, - "linearizedBaseContracts": [ - 1073, - 1359, - 1678 - ], - "name": "SpatialAssets", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "documentation": { - "id": 66, - "nodeType": "StructuredDocumentation", - "src": "594:88:1", - "text": " @dev Emitted when Spatial Assets of id `id` are transferred to `to``." - }, - "id": 80, - "name": "SpatialAssetRegistered", - "nodeType": "EventDefinition", - "parameters": { - "id": 79, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 68, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 80, - "src": "716:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 67, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "716:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 70, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 80, - "src": "736:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 69, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "736:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 72, - "indexed": true, - "mutability": "mutable", - "name": "cid", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 80, - "src": "762:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 71, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "762:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 74, - "indexed": false, - "mutability": "mutable", - "name": "offChainStorage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 80, - "src": "783:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 73, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "783:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 76, - "indexed": false, - "mutability": "mutable", - "name": "root", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 80, - "src": "808:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 75, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "808:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 78, - "indexed": false, - "mutability": "mutable", - "name": "canBeParent", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 80, - "src": "822:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 77, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "822:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "715:124:1" - }, - "src": "687:153:1" - }, - { - "anonymous": false, - "documentation": { - "id": 81, - "nodeType": "StructuredDocumentation", - "src": "846:79:1", - "text": " @dev Emitted when Spatial Assets of id `id` are deactivated." - }, - "id": 85, - "name": "SpatialAssetDeactivated", - "nodeType": "EventDefinition", - "parameters": { - "id": 84, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 83, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 85, - "src": "960:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 82, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "960:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "959:26:1" - }, - "src": "930:56:1" - }, - { - "anonymous": false, - "documentation": { - "id": 86, - "nodeType": "StructuredDocumentation", - "src": "992:71:1", - "text": " @dev Emitted when a parent geodid is added to a node" - }, - "id": 92, - "name": "ParentAdded", - "nodeType": "EventDefinition", - "parameters": { - "id": 91, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 88, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 92, - "src": "1086:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 87, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1086:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 90, - "indexed": true, - "mutability": "mutable", - "name": "parentGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 92, - "src": "1112:30:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 89, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1112:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1085:58:1" - }, - "src": "1068:76:1" - }, - { - "anonymous": false, - "documentation": { - "id": 93, - "nodeType": "StructuredDocumentation", - "src": "1150:73:1", - "text": " @dev Emitted when a children geodid is added to a node" - }, - "id": 99, - "name": "ChildrenAdded", - "nodeType": "EventDefinition", - "parameters": { - "id": 98, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 95, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 99, - "src": "1248:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 94, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1248:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 97, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 99, - "src": "1274:32:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 96, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1274:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1247:60:1" - }, - "src": "1228:80:1" - }, - { - "anonymous": false, - "documentation": { - "id": 100, - "nodeType": "StructuredDocumentation", - "src": "1314:75:1", - "text": " @dev Emitted when a parent geodid is removed from a node" - }, - "id": 106, - "name": "ParentRemoved", - "nodeType": "EventDefinition", - "parameters": { - "id": 105, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 102, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 106, - "src": "1414:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 101, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1414:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 104, - "indexed": true, - "mutability": "mutable", - "name": "parentGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 106, - "src": "1440:30:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 103, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1440:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1413:58:1" - }, - "src": "1394:78:1" - }, - { - "anonymous": false, - "documentation": { - "id": 107, - "nodeType": "StructuredDocumentation", - "src": "1478:77:1", - "text": " @dev Emitted when a children geodid is removed from a node" - }, - "id": 113, - "name": "ChildrenRemoved", - "nodeType": "EventDefinition", - "parameters": { - "id": 112, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 109, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 113, - "src": "1582:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 108, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1582:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 111, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 113, - "src": "1608:32:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 110, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1608:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1581:60:1" - }, - "src": "1560:82:1" - }, - { - "anonymous": false, - "documentation": { - "id": 114, - "nodeType": "StructuredDocumentation", - "src": "1653:116:1", - "text": " @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent" - }, - "id": 120, - "name": "ChildrenErrorNoParent", - "nodeType": "EventDefinition", - "parameters": { - "id": 119, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 116, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 120, - "src": "1802:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 115, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1802:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 118, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 120, - "src": "1828:32:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 117, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1828:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1801:60:1" - }, - "src": "1774:88:1" - }, - { - "anonymous": false, - "documentation": { - "id": 121, - "nodeType": "StructuredDocumentation", - "src": "1873:69:1", - "text": " @dev Emitted when a children geodid does not exist" - }, - "id": 127, - "name": "ChildrenErrorNoExistence", - "nodeType": "EventDefinition", - "parameters": { - "id": 126, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 123, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 127, - "src": "1978:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 122, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1978:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 125, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 127, - "src": "2004:32:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 124, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1977:60:1" - }, - "src": "1947:91:1" - }, - { - "anonymous": false, - "documentation": { - "id": 128, - "nodeType": "StructuredDocumentation", - "src": "2049:94:1", - "text": " @dev Emitted when a children geodid already has a parent but shouldn't have" - }, - "id": 134, - "name": "ChildrenErrorHasParent", - "nodeType": "EventDefinition", - "parameters": { - "id": 133, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 130, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 134, - "src": "2177:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 129, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2177:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 132, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 134, - "src": "2203:32:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 131, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2203:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2176:60:1" - }, - "src": "2148:89:1" - }, - { - "constant": true, - "functionSelector": "9969879b", - "id": 139, - "mutability": "constant", - "name": "DATA_SUPPLIER", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2244:66:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 135, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2244:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "444154415f535550504c494552", - "id": 137, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2294:15:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f", - "typeString": "literal_string \"DATA_SUPPLIER\"" - }, - "value": "DATA_SUPPLIER" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f", - "typeString": "literal_string \"DATA_SUPPLIER\"" - } - ], - "id": 136, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "2284:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2284:26:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { - "constant": false, - "id": 141, - "mutability": "mutable", - "name": "_uri", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2317:19:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 140, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2317:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 145, - "mutability": "mutable", - "name": "_owners", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2386:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - }, - "typeName": { - "id": 144, - "keyType": { - "id": 142, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2395:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2386:28:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - }, - "valueType": { - "id": 143, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2406:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 149, - "mutability": "mutable", - "name": "_cids", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2477:42:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - }, - "typeName": { - "id": 148, - "keyType": { - "id": 146, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2486:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2477:28:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - }, - "valueType": { - "id": 147, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2497:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 153, - "mutability": "mutable", - "name": "_hasParent", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2576:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 152, - "keyType": { - "id": 150, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2585:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2576:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 151, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2596:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 157, - "mutability": "mutable", - "name": "_canBeParent", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2675:46:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 156, - "keyType": { - "id": 154, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2684:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2675:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 155, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2695:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 161, - "mutability": "mutable", - "name": "_root", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2776:42:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - }, - "typeName": { - "id": 160, - "keyType": { - "id": 158, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2785:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2776:28:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - }, - "valueType": { - "id": 159, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2796:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 165, - "mutability": "mutable", - "name": "_externalStorage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2882:53:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - }, - "typeName": { - "id": 164, - "keyType": { - "id": 162, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2891:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2882:28:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - }, - "valueType": { - "id": 163, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2902:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "constant": false, - "id": 169, - "mutability": "mutable", - "name": "_allowedStorages", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1073, - "src": "2986:50:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 168, - "keyType": { - "id": 166, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2995:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2986:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 167, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3006:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "body": { - "id": 191, - "nodeType": "Block", - "src": "3204:133:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 176, - "name": "uri", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "3222:3:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 175, - "name": "_setURI", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "3214:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory)" - } - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3214:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 178, - "nodeType": "ExpressionStatement", - "src": "3214:12:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 180, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "3247:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 181, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "3267:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3267:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 179, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1285, - "src": "3236:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3236:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 184, - "nodeType": "ExpressionStatement", - "src": "3236:44:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 186, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "3301:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 187, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "3316:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 188, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3316:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 185, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1285, - "src": "3290:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3290:39:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 190, - "nodeType": "ExpressionStatement", - "src": "3290:39:1" - } - ] - }, - "documentation": { - "id": 170, - "nodeType": "StructuredDocumentation", - "src": "3044:117:1", - "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that\n deploys the contract." - }, - "id": 192, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 173, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 172, - "mutability": "mutable", - "name": "uri", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 192, - "src": "3178:17:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 171, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "3178:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3177:19:1" - }, - "returnParameters": { - "id": 174, - "nodeType": "ParameterList", - "parameters": [], - "src": "3204:0:1" - }, - "scope": 1073, - "src": "3166:171:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 212, - "nodeType": "Block", - "src": "3469:169:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3487:37:1", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 198, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "3496:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 199, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "3511:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3511:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 197, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "3488:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 201, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3488:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574", - "id": 203, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3526:55:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ad6e74c880a0a8789cc0999bb5807e042142eac3ba8cd1a8f038e7ac1c7b18f3", - "typeString": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\"" - }, - "value": "SpatialAssets: must not have a DATA_SUPPLIER role yet" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ad6e74c880a0a8789cc0999bb5807e042142eac3ba8cd1a8f038e7ac1c7b18f3", - "typeString": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\"" - } - ], - "id": 196, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3479:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3479:103:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 205, - "nodeType": "ExpressionStatement", - "src": "3479:103:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 207, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "3603:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 208, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "3618:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3618:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 206, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1285, - "src": "3592:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3592:39:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 211, - "nodeType": "ExpressionStatement", - "src": "3592:39:1" - } - ] - }, - "documentation": { - "id": 193, - "nodeType": "StructuredDocumentation", - "src": "3343:90:1", - "text": " @dev Registers a new user with the ability to register a spatial asset." - }, - "functionSelector": "c44e96a0", - "id": 213, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "registerRole", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 194, - "nodeType": "ParameterList", - "parameters": [], - "src": "3459:2:1" - }, - "returnParameters": { - "id": 195, - "nodeType": "ParameterList", - "parameters": [], - "src": "3469:0:1" - }, - "scope": 1073, - "src": "3438:200:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 243, - "nodeType": "Block", - "src": "3792:299:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 221, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "3818:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 222, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "3838:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 223, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3838:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 220, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "3810:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3810:41:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573", - "id": 225, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3853:71:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f", - "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"" - }, - "value": "SpatialAssets: must have admin role to edit allowed offchain storages" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f", - "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"" - } - ], - "id": 219, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3802:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3802:123:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 227, - "nodeType": "ExpressionStatement", - "src": "3802:123:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 229, - "name": "_allowedStorages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "3943:16:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 231, - "indexExpression": { - "argumentTypes": null, - "id": 230, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "3960:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3943:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 232, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3979:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3943:41:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2073746f72616765206d757374206e6f742062652061637469766520796574", - "id": 234, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3986:47:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8fee17d368687c80e4deac3f133d29733581706ec6213898eb6c5db439fb45d7", - "typeString": "literal_string \"SpatialAssets: storage must not be active yet\"" - }, - "value": "SpatialAssets: storage must not be active yet" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8fee17d368687c80e4deac3f133d29733581706ec6213898eb6c5db439fb45d7", - "typeString": "literal_string \"SpatialAssets: storage must not be active yet\"" - } - ], - "id": 228, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3935:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3935:99:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 236, - "nodeType": "ExpressionStatement", - "src": "3935:99:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 237, - "name": "_allowedStorages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "4044:16:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 239, - "indexExpression": { - "argumentTypes": null, - "id": 238, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "4061:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4044:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 240, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4080:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4044:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 242, - "nodeType": "ExpressionStatement", - "src": "4044:40:1" - } - ] - }, - "documentation": { - "id": 214, - "nodeType": "StructuredDocumentation", - "src": "3644:88:1", - "text": " @dev Registers a new storage that can accept GeoDID document creation" - }, - "functionSelector": "6e7a6f4b", - "id": 244, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "enableStorage", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 217, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 216, - "mutability": "mutable", - "name": "offChainStorage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 244, - "src": "3760:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 215, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3760:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3759:25:1" - }, - "returnParameters": { - "id": 218, - "nodeType": "ParameterList", - "parameters": [], - "src": "3792:0:1" - }, - "scope": 1073, - "src": "3737:354:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 265, - "nodeType": "Block", - "src": "4210:191:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 252, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1102, - "src": "4236:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 253, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "4256:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4256:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 251, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "4228:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4228:41:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573", - "id": 256, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4271:71:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f", - "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"" - }, - "value": "SpatialAssets: must have admin role to edit allowed offchain storages" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f", - "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"" - } - ], - "id": 250, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4220:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4220:123:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 258, - "nodeType": "ExpressionStatement", - "src": "4220:123:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 259, - "name": "_allowedStorages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "4353:16:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 261, - "indexExpression": { - "argumentTypes": null, - "id": 260, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 247, - "src": "4370:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4353:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4389:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4353:41:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 264, - "nodeType": "ExpressionStatement", - "src": "4353:41:1" - } - ] - }, - "documentation": { - "id": 245, - "nodeType": "StructuredDocumentation", - "src": "4097:52:1", - "text": " @dev Disables an existing storage" - }, - "functionSelector": "fd52c0d5", - "id": 266, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "disableStorage", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 248, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 247, - "mutability": "mutable", - "name": "offChainStorage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 266, - "src": "4178:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 246, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4178:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4177:25:1" - }, - "returnParameters": { - "id": 249, - "nodeType": "ParameterList", - "parameters": [], - "src": "4210:0:1" - }, - "scope": 1073, - "src": "4154:247:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 463, - "nodeType": "Block", - "src": "4767:1547:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 287, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "4793:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 288, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "4808:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 289, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4808:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 286, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "4785:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4785:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4823:57:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - }, - "value": "SpatialAssets: must have data supplier role to register" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "id": 285, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4777:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4777:104:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 293, - "nodeType": "ExpressionStatement", - "src": "4777:104:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 296, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "4915:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 295, - "name": "allowedStorages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "4899:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32) view returns (bool)" - } - }, - "id": 297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4899:32:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564", - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4933:40:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0ae99bd2d2bc928ba974a4c0584b94117dc577f73fe645d1eace2711f12192a2", - "typeString": "literal_string \"SpatialAssets: storage must be allowed\"" - }, - "value": "SpatialAssets: storage must be allowed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0ae99bd2d2bc928ba974a4c0584b94117dc577f73fe645d1eace2711f12192a2", - "typeString": "literal_string \"SpatialAssets: storage must be allowed\"" - } - ], - "id": 294, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4891:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4891:83:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 300, - "nodeType": "ExpressionStatement", - "src": "4891:83:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 302, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "4992:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 304, - "indexExpression": { - "argumentTypes": null, - "id": 303, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5000:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4992:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 307, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5021:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 306, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5013:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 305, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5013:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 308, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5013:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "4992:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574", - "id": 310, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5025:46:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - }, - "value": "SpatialAssets: id must not have an owner yet" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - } - ], - "id": 301, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4984:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 311, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4984:88:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 312, - "nodeType": "ExpressionStatement", - "src": "4984:88:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 320, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 314, - "name": "geoDIDtype", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 282, - "src": "5090:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 315, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5105:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5090:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 319, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 317, - "name": "geoDIDtype", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 282, - "src": "5110:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 318, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5124:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "5110:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5090:35:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c204173736574733a2077726f6e672067656f64696474797065", - "id": 321, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5127:34:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e674447e79034d68bd1c7f2aa0a8d31190ad751eb2b878eced3a014448a54daa", - "typeString": "literal_string \"Spatial Assets: wrong geodidtype\"" - }, - "value": "Spatial Assets: wrong geodidtype" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e674447e79034d68bd1c7f2aa0a8d31190ad751eb2b878eced3a014448a54daa", - "typeString": "literal_string \"Spatial Assets: wrong geodidtype\"" - } - ], - "id": 313, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5082:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5082:80:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 323, - "nodeType": "ExpressionStatement", - "src": "5082:80:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 328, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 324, - "name": "_cids", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 149, - "src": "5173:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 326, - "indexExpression": { - "argumentTypes": null, - "id": 325, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5179:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5173:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 327, - "name": "cid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 278, - "src": "5190:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5173:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 329, - "nodeType": "ExpressionStatement", - "src": "5173:20:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 334, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 330, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "5203:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 332, - "indexExpression": { - "argumentTypes": null, - "id": 331, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5211:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5203:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 333, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 269, - "src": "5223:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5203:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 335, - "nodeType": "ExpressionStatement", - "src": "5203:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 336, - "name": "_externalStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 165, - "src": "5238:16:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 338, - "indexExpression": { - "argumentTypes": null, - "id": 337, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5255:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5238:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 339, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5267:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5238:44:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 341, - "nodeType": "ExpressionStatement", - "src": "5238:44:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 342, - "name": "geoDIDtype", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 282, - "src": "5297:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 343, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5311:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5297:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 354, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 352, - "name": "geoDIDtype", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 282, - "src": "5378:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5392:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "5378:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 362, - "nodeType": "IfStatement", - "src": "5374:76:1", - "trueBody": { - "id": 361, - "nodeType": "Block", - "src": "5395:55:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 355, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "5409:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 357, - "indexExpression": { - "argumentTypes": null, - "id": 356, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5422:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5409:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 358, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5434:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5409:30:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 360, - "nodeType": "ExpressionStatement", - "src": "5409:30:1" - } - ] - } - }, - "id": 363, - "nodeType": "IfStatement", - "src": "5293:157:1", - "trueBody": { - "id": 351, - "nodeType": "Block", - "src": "5314:54:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 345, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "5328:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 347, - "indexExpression": { - "argumentTypes": null, - "id": 346, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5341:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5328:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 348, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5353:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5328:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 350, - "nodeType": "ExpressionStatement", - "src": "5328:29:1" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "id": 369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 364, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 273, - "src": "5464:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 367, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5490:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 366, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5482:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 365, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5482:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 368, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5482:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5464:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 418, - "nodeType": "Block", - "src": "5703:235:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 394, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "5717:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 396, - "indexExpression": { - "argumentTypes": null, - "id": 395, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5728:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5717:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5740:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5717:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 399, - "nodeType": "ExpressionStatement", - "src": "5717:27:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 401, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 269, - "src": "5786:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 402, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5793:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 403, - "name": "cid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 278, - "src": "5803:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 404, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5808:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 405, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "5825:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 407, - "indexExpression": { - "argumentTypes": null, - "id": 406, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 273, - "src": "5831:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5825:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 408, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "5848:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 410, - "indexExpression": { - "argumentTypes": null, - "id": 409, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5861:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5848:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 400, - "name": "SpatialAssetRegistered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "5763:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bool_$returns$__$", - "typeString": "function (address,bytes32,bytes32,bytes32,bytes32,bool)" - } - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5763:108:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 412, - "nodeType": "EmitStatement", - "src": "5758:113:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 414, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5902:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 415, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 273, - "src": "5912:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 413, - "name": "ParentAdded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "5890:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5890:37:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 417, - "nodeType": "EmitStatement", - "src": "5885:42:1" - } - ] - }, - "id": 419, - "nodeType": "IfStatement", - "src": "5460:478:1", - "trueBody": { - "id": 393, - "nodeType": "Block", - "src": "5494:203:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 374, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 370, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "5508:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 372, - "indexExpression": { - "argumentTypes": null, - "id": 371, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5519:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5508:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 373, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5531:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5508:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 375, - "nodeType": "ExpressionStatement", - "src": "5508:28:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 376, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "5550:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 378, - "indexExpression": { - "argumentTypes": null, - "id": 377, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5556:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5550:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 379, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5568:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "5550:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 381, - "nodeType": "ExpressionStatement", - "src": "5550:26:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 383, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 269, - "src": "5614:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 384, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5621:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 385, - "name": "cid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 278, - "src": "5631:3:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 386, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5636:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 387, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5653:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 388, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "5663:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 390, - "indexExpression": { - "argumentTypes": null, - "id": 389, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "5676:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5663:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 382, - "name": "SpatialAssetRegistered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "5591:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bool_$returns$__$", - "typeString": "function (address,bytes32,bytes32,bytes32,bytes32,bool)" - } - }, - "id": 391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5591:95:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 392, - "nodeType": "EmitStatement", - "src": "5586:100:1" - } - ] - } - }, - { - "assignments": [ - 421 - ], - "declarations": [ - { - "constant": false, - "id": 421, - "mutability": "mutable", - "name": "childrensLen", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 463, - "src": "5948:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 420, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5948:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 424, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 422, - "name": "childrenGeoDIDIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 276, - "src": "5971:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5971:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5948:47:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 431, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 425, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "6010:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6025:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6010:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 428, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "6030:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 430, - "indexExpression": { - "argumentTypes": null, - "id": 429, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "6043:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6030:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "6010:42:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 462, - "nodeType": "IfStatement", - "src": "6006:302:1", - "trueBody": { - "id": 461, - "nodeType": "Block", - "src": "6053:255:1", - "statements": [ - { - "body": { - "id": 459, - "nodeType": "Block", - "src": "6107:191:1", - "statements": [ - { - "assignments": [ - 443 - ], - "declarations": [ - { - "constant": false, - "id": 443, - "mutability": "mutable", - "name": "childrenGeoDID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 459, - "src": "6125:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 442, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6125:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 447, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 444, - "name": "childrenGeoDIDIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 276, - "src": "6150:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 446, - "indexExpression": { - "argumentTypes": null, - "id": 445, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "6168:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6150:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6125:45:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 448, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "6188:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 450, - "indexExpression": { - "argumentTypes": null, - "id": 449, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "6199:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6188:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 451, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6217:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6188:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 453, - "nodeType": "ExpressionStatement", - "src": "6188:33:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 455, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 271, - "src": "6258:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 456, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "6268:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 454, - "name": "ChildrenAdded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99, - "src": "6244:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6244:39:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 458, - "nodeType": "EmitStatement", - "src": "6239:44:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 436, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "6084:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 437, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "6088:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6084:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 460, - "initializationExpression": { - "assignments": [ - 433 - ], - "declarations": [ - { - "constant": false, - "id": 433, - "mutability": "mutable", - "name": "j", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 460, - "src": "6071:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 432, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6071:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 435, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6081:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "6071:11:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "6102:3:1", - "subExpression": { - "argumentTypes": null, - "id": 439, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "6102:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 441, - "nodeType": "ExpressionStatement", - "src": "6102:3:1" - }, - "nodeType": "ForStatement", - "src": "6067:231:1" - } - ] - } - } - ] - }, - "documentation": { - "id": 267, - "nodeType": "StructuredDocumentation", - "src": "4408:165:1", - "text": " @dev Registers one spatial asset with external storage 'data' and assigns them to `account`.\n Emits a {SpatialAssetRegistered} event." - }, - "functionSelector": "b22de880", - "id": 464, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "registerSpatialAsset", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 283, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 269, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 464, - "src": "4608:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 268, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4608:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 271, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 464, - "src": "4623:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 270, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4623:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 273, - "mutability": "mutable", - "name": "parentGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 464, - "src": "4641:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 272, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4641:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 276, - "mutability": "mutable", - "name": "childrenGeoDIDIds", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 464, - "src": "4666:34:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 274, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4666:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 275, - "length": null, - "nodeType": "ArrayTypeName", - "src": "4666:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 278, - "mutability": "mutable", - "name": "cid", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 464, - "src": "4702:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 277, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4702:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 280, - "mutability": "mutable", - "name": "offChainStorage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 464, - "src": "4715:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 279, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4715:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 282, - "mutability": "mutable", - "name": "geoDIDtype", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 464, - "src": "4740:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 281, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4740:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4607:152:1" - }, - "returnParameters": { - "id": 284, - "nodeType": "ParameterList", - "parameters": [], - "src": "4767:0:1" - }, - "scope": 1073, - "src": "4578:1736:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 586, - "nodeType": "Block", - "src": "6535:1135:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 475, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "6561:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 476, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "6576:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6576:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 474, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "6553:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6553:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "id": 479, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6591:57:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - }, - "value": "SpatialAssets: must have data supplier role to register" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "id": 473, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6545:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6545:104:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 481, - "nodeType": "ExpressionStatement", - "src": "6545:104:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 483, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "6667:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 485, - "indexExpression": { - "argumentTypes": null, - "id": 484, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "6675:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6667:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 486, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "6688:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6688:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "6667:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72", - "id": 489, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6702:54:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"" - }, - "value": "SpatialAssets: geoDIDId must be owned by its creator" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"" - } - ], - "id": 482, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6659:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6659:98:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 491, - "nodeType": "ExpressionStatement", - "src": "6659:98:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 493, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "6775:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 495, - "indexExpression": { - "argumentTypes": null, - "id": 494, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "6788:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6775:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29", - "id": 496, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6799:66:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_35056da795db0b563126e5da17620c63bcd517d6bd90d17a597656966ba83aa1", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\"" - }, - "value": "SpatialAssets: geoDIDId must be able to be parent (a Collection)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_35056da795db0b563126e5da17620c63bcd517d6bd90d17a597656966ba83aa1", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\"" - } - ], - "id": 492, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6767:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6767:99:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 498, - "nodeType": "ExpressionStatement", - "src": "6767:99:1" - }, - { - "assignments": [ - 500 - ], - "declarations": [ - { - "constant": false, - "id": 500, - "mutability": "mutable", - "name": "childrensLen", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 586, - "src": "6877:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 499, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6877:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 503, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 501, - "name": "childrenGeoDIDIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 470, - "src": "6900:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6900:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6877:47:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 506, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 504, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "6939:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 505, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6954:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6939:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 585, - "nodeType": "IfStatement", - "src": "6935:729:1", - "trueBody": { - "id": 584, - "nodeType": "Block", - "src": "6956:708:1", - "statements": [ - { - "body": { - "id": 582, - "nodeType": "Block", - "src": "7010:644:1", - "statements": [ - { - "assignments": [ - 518 - ], - "declarations": [ - { - "constant": false, - "id": 518, - "mutability": "mutable", - "name": "childrenGeoDID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 582, - "src": "7028:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 517, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7028:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 522, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 519, - "name": "childrenGeoDIDIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 470, - "src": "7053:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 521, - "indexExpression": { - "argumentTypes": null, - "id": 520, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 508, - "src": "7071:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7053:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7028:45:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 523, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "7095:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 525, - "indexExpression": { - "argumentTypes": null, - "id": 524, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7103:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7095:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 528, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7130:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 527, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7122:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 526, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7122:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 529, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7122:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "7095:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "id": 534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "7136:27:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 531, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "7137:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 533, - "indexExpression": { - "argumentTypes": null, - "id": 532, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7148:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7137:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "7095:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 567, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 556, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "7376:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 558, - "indexExpression": { - "argumentTypes": null, - "id": 557, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7384:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7376:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 561, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7411:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7403:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 559, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7403:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 562, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7403:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "7376:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 564, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "7417:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 566, - "indexExpression": { - "argumentTypes": null, - "id": 565, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7428:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7417:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "7376:67:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 579, - "nodeType": "Block", - "src": "7544:96:1", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 575, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "7596:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 576, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7606:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 574, - "name": "ChildrenErrorNoExistence", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "7571:24:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7571:50:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 578, - "nodeType": "EmitStatement", - "src": "7566:55:1" - } - ] - }, - "id": 580, - "nodeType": "IfStatement", - "src": "7372:268:1", - "trueBody": { - "id": 573, - "nodeType": "Block", - "src": "7444:94:1", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 569, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "7494:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 570, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7504:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 568, - "name": "ChildrenErrorHasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 134, - "src": "7471:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7471:48:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 572, - "nodeType": "EmitStatement", - "src": "7466:53:1" - } - ] - } - }, - "id": 581, - "nodeType": "IfStatement", - "src": "7091:549:1", - "trueBody": { - "id": 555, - "nodeType": "Block", - "src": "7165:201:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 536, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "7187:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 538, - "indexExpression": { - "argumentTypes": null, - "id": 537, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7198:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7187:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7216:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "7187:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 541, - "nodeType": "ExpressionStatement", - "src": "7187:33:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 542, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "7242:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 544, - "indexExpression": { - "argumentTypes": null, - "id": 543, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7248:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7242:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 545, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "7266:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 547, - "indexExpression": { - "argumentTypes": null, - "id": 546, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "7272:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7266:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "7242:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 549, - "nodeType": "ExpressionStatement", - "src": "7242:39:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 551, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 467, - "src": "7322:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 552, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "7332:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 550, - "name": "ChildrenAdded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99, - "src": "7308:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7308:39:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 554, - "nodeType": "EmitStatement", - "src": "7303:44:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 511, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 508, - "src": "6987:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 512, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "6991:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6987:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 583, - "initializationExpression": { - "assignments": [ - 508 - ], - "declarations": [ - { - "constant": false, - "id": 508, - "mutability": "mutable", - "name": "j", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 583, - "src": "6974:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 507, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6974:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 510, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 509, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6984:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "6974:11:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "7005:3:1", - "subExpression": { - "argumentTypes": null, - "id": 514, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 508, - "src": "7005:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 516, - "nodeType": "ExpressionStatement", - "src": "7005:3:1" - }, - "nodeType": "ForStatement", - "src": "6970:684:1" - } - ] - } - } - ] - }, - "documentation": { - "id": 465, - "nodeType": "StructuredDocumentation", - "src": "6321:120:1", - "text": " @dev Adds children GeoDIDs to an already existent geoDID\n Emits a {ChildrenAdded} event." - }, - "functionSelector": "bdabcf63", - "id": 587, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "addChildrenGeoDIDs", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 467, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 587, - "src": "6474:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 466, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6474:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 470, - "mutability": "mutable", - "name": "childrenGeoDIDIds", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 587, - "src": "6492:34:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 468, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6492:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 469, - "length": null, - "nodeType": "ArrayTypeName", - "src": "6492:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6473:54:1" - }, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [], - "src": "6535:0:1" - }, - "scope": 1073, - "src": "6446:1224:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 660, - "nodeType": "Block", - "src": "7872:681:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 597, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "7898:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 598, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "7913:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7913:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 596, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "7890:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7890:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "id": 601, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7928:57:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - }, - "value": "SpatialAssets: must have data supplier role to register" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "id": 595, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7882:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7882:104:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 603, - "nodeType": "ExpressionStatement", - "src": "7882:104:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 610, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 605, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "8004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 607, - "indexExpression": { - "argumentTypes": null, - "id": 606, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "8012:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8004:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 608, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "8025:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8025:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "8004:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72", - "id": 611, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8039:54:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"" - }, - "value": "SpatialAssets: geoDIDId must be owned by its creator" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"" - } - ], - "id": 604, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7996:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7996:98:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 613, - "nodeType": "ExpressionStatement", - "src": "7996:98:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 615, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "8112:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 617, - "indexExpression": { - "argumentTypes": null, - "id": 616, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 592, - "src": "8120:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8112:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 620, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8147:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 619, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8139:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 618, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8139:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 621, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8139:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "8112:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374", - "id": 623, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8151:46:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_37628363356dfe049fe1dfb95b31ae659423f88203c2d0589d12bc6e2efba5fb", - "typeString": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\"" - }, - "value": "SpatialAssets: parentGeoDIDId does not exist" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_37628363356dfe049fe1dfb95b31ae659423f88203c2d0589d12bc6e2efba5fb", - "typeString": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\"" - } - ], - "id": 614, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "8104:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8104:94:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 625, - "nodeType": "ExpressionStatement", - "src": "8104:94:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8216:21:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 627, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "8217:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 629, - "indexExpression": { - "argumentTypes": null, - "id": 628, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "8228:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8217:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e74", - "id": 631, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8239:46:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_365c191fc2e3b7185ac24986ce31e56094d1588c72dcea7a382fe58e00565569", - "typeString": "literal_string \"SpatialAssets: geoDIDId already has a parent\"" - }, - "value": "SpatialAssets: geoDIDId already has a parent" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_365c191fc2e3b7185ac24986ce31e56094d1588c72dcea7a382fe58e00565569", - "typeString": "literal_string \"SpatialAssets: geoDIDId already has a parent\"" - } - ], - "id": 626, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "8208:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8208:78:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 633, - "nodeType": "ExpressionStatement", - "src": "8208:78:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 635, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "8304:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 637, - "indexExpression": { - "argumentTypes": null, - "id": 636, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 592, - "src": "8317:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8304:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29", - "id": 638, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8334:72:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2fc4c9e1419e4474d6293c8f8fe90b0fca69366a562a1be7a551c73fee1d2c1d", - "typeString": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\"" - }, - "value": "SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2fc4c9e1419e4474d6293c8f8fe90b0fca69366a562a1be7a551c73fee1d2c1d", - "typeString": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\"" - } - ], - "id": 634, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "8296:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8296:111:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 640, - "nodeType": "ExpressionStatement", - "src": "8296:111:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 645, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 641, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "8418:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 643, - "indexExpression": { - "argumentTypes": null, - "id": 642, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "8429:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8418:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 644, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8441:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "8418:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 646, - "nodeType": "ExpressionStatement", - "src": "8418:27:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 647, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "8455:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 649, - "indexExpression": { - "argumentTypes": null, - "id": 648, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "8461:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8455:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 650, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "8473:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 652, - "indexExpression": { - "argumentTypes": null, - "id": 651, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 592, - "src": "8479:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8473:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "8455:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 654, - "nodeType": "ExpressionStatement", - "src": "8455:39:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 656, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 590, - "src": "8521:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 657, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 592, - "src": "8531:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 655, - "name": "ParentAdded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92, - "src": "8509:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 658, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8509:37:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 659, - "nodeType": "EmitStatement", - "src": "8504:42:1" - } - ] - }, - "documentation": { - "id": 588, - "nodeType": "StructuredDocumentation", - "src": "7676:117:1", - "text": " @dev Adds a parent GeoDID to an already existent geoDID\n Emits a {ParentAdded} event." - }, - "functionSelector": "f999be89", - "id": 661, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "addParentGeoDID", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 593, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 590, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 661, - "src": "7823:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 589, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7823:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 592, - "mutability": "mutable", - "name": "parentGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 661, - "src": "7841:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 591, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7841:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7822:42:1" - }, - "returnParameters": { - "id": 594, - "nodeType": "ParameterList", - "parameters": [], - "src": "7872:0:1" - }, - "scope": 1073, - "src": "7798:755:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 774, - "nodeType": "Block", - "src": "8769:1019:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 672, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "8795:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 673, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "8810:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8810:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 671, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "8787:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8787:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "id": 676, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8825:57:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - }, - "value": "SpatialAssets: must have data supplier role to register" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "id": 670, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "8779:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8779:104:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 678, - "nodeType": "ExpressionStatement", - "src": "8779:104:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 680, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "8901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 682, - "indexExpression": { - "argumentTypes": null, - "id": 681, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "8909:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8901:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 683, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "8922:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8922:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "8901:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574", - "id": 686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8936:46:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - }, - "value": "SpatialAssets: id must not have an owner yet" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - } - ], - "id": 679, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "8893:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8893:90:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 688, - "nodeType": "ExpressionStatement", - "src": "8893:90:1" - }, - { - "assignments": [ - 690 - ], - "declarations": [ - { - "constant": false, - "id": 690, - "mutability": "mutable", - "name": "childrensLen", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 774, - "src": "8994:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 689, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8994:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 693, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 691, - "name": "childrenGeoDIDIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 667, - "src": "9017:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9017:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8994:47:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 696, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 694, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 690, - "src": "9056:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9071:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9056:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 773, - "nodeType": "IfStatement", - "src": "9052:730:1", - "trueBody": { - "id": 772, - "nodeType": "Block", - "src": "9073:709:1", - "statements": [ - { - "body": { - "id": 770, - "nodeType": "Block", - "src": "9127:645:1", - "statements": [ - { - "assignments": [ - 708 - ], - "declarations": [ - { - "constant": false, - "id": 708, - "mutability": "mutable", - "name": "childrenGeoDID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 770, - "src": "9145:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 707, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9145:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 712, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 709, - "name": "childrenGeoDIDIds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 667, - "src": "9170:17:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 711, - "indexExpression": { - "argumentTypes": null, - "id": 710, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 698, - "src": "9188:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9170:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9145:45:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 713, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "9212:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 715, - "indexExpression": { - "argumentTypes": null, - "id": 714, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9220:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9212:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 718, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9247:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 717, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9239:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 716, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9239:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9239:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "9212:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 721, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "9253:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 723, - "indexExpression": { - "argumentTypes": null, - "id": 722, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9264:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9253:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9212:67:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 743, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "9494:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 745, - "indexExpression": { - "argumentTypes": null, - "id": 744, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9502:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9494:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 748, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9529:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 747, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9521:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 746, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9521:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 749, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9521:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "9494:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "id": 754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "9535:27:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 751, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "9536:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 753, - "indexExpression": { - "argumentTypes": null, - "id": 752, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9547:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9536:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9494:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 767, - "nodeType": "Block", - "src": "9662:96:1", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 763, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "9714:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 764, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9724:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 762, - "name": "ChildrenErrorNoExistence", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "9689:24:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9689:50:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 766, - "nodeType": "EmitStatement", - "src": "9684:55:1" - } - ] - }, - "id": 768, - "nodeType": "IfStatement", - "src": "9490:268:1", - "trueBody": { - "id": 761, - "nodeType": "Block", - "src": "9563:93:1", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 757, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "9612:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 758, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9622:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 756, - "name": "ChildrenErrorNoParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "9590:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9590:47:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 760, - "nodeType": "EmitStatement", - "src": "9585:52:1" - } - ] - } - }, - "id": 769, - "nodeType": "IfStatement", - "src": "9208:550:1", - "trueBody": { - "id": 742, - "nodeType": "Block", - "src": "9281:203:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 725, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "9303:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 727, - "indexExpression": { - "argumentTypes": null, - "id": 726, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9314:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9303:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 728, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9332:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "9303:34:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 730, - "nodeType": "ExpressionStatement", - "src": "9303:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 735, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 731, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "9359:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 733, - "indexExpression": { - "argumentTypes": null, - "id": 732, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9365:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9359:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 734, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9383:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "9359:38:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 736, - "nodeType": "ExpressionStatement", - "src": "9359:38:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 738, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "9440:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 739, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "9450:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 737, - "name": "ChildrenRemoved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "9424:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9424:41:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 741, - "nodeType": "EmitStatement", - "src": "9419:46:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 703, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 701, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 698, - "src": "9104:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 702, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 690, - "src": "9108:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9104:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 771, - "initializationExpression": { - "assignments": [ - 698 - ], - "declarations": [ - { - "constant": false, - "id": 698, - "mutability": "mutable", - "name": "j", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 771, - "src": "9091:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 697, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 700, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 699, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9101:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "9091:11:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 705, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "9122:3:1", - "subExpression": { - "argumentTypes": null, - "id": 704, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 698, - "src": "9122:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 706, - "nodeType": "ExpressionStatement", - "src": "9122:3:1" - }, - "nodeType": "ForStatement", - "src": "9087:685:1" - } - ] - } - } - ] - }, - "documentation": { - "id": 662, - "nodeType": "StructuredDocumentation", - "src": "8564:108:1", - "text": " @dev Removes childrenGeoDIDs from a geoDID\n Emits a {ChildrenRemoved} event." - }, - "functionSelector": "a8f904b5", - "id": 775, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "removeChildrenGeoDIDs", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 668, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 664, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 775, - "src": "8708:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 663, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8708:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 667, - "mutability": "mutable", - "name": "childrenGeoDIDIds", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 775, - "src": "8726:34:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 665, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8726:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 666, - "length": null, - "nodeType": "ArrayTypeName", - "src": "8726:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8707:54:1" - }, - "returnParameters": { - "id": 669, - "nodeType": "ParameterList", - "parameters": [], - "src": "8769:0:1" - }, - "scope": 1073, - "src": "8677:1111:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 838, - "nodeType": "Block", - "src": "10000:576:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 785, - "name": "DATA_SUPPLIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 139, - "src": "10026:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 786, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "10041:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10041:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 784, - "name": "hasRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1148, - "src": "10018:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", - "typeString": "function (bytes32,address) view returns (bool)" - } - }, - "id": 788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10018:36:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "id": 789, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10056:57:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - }, - "value": "SpatialAssets: must have data supplier role to register" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "id": 783, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "10010:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 790, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10010:104:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 791, - "nodeType": "ExpressionStatement", - "src": "10010:104:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 793, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "10132:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 795, - "indexExpression": { - "argumentTypes": null, - "id": 794, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "10140:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10132:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 796, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "10153:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 797, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10153:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "10132:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574", - "id": 799, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10167:46:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - }, - "value": "SpatialAssets: id must not have an owner yet" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - } - ], - "id": 792, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "10124:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10124:90:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 801, - "nodeType": "ExpressionStatement", - "src": "10124:90:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 810, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 803, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "10232:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 805, - "indexExpression": { - "argumentTypes": null, - "id": 804, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 780, - "src": "10240:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10232:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 808, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10267:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 807, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10259:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 806, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10259:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 809, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10259:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "10232:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f74206578697374", - "id": 811, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10271:62:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_64e6913217981af21a3600f4e8d0d455b10cb50ec24445db6949f4566f751285", - "typeString": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\"" - }, - "value": "SpatialAssets: GeoDID to be removed as parent does not exist" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_64e6913217981af21a3600f4e8d0d455b10cb50ec24445db6949f4566f751285", - "typeString": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\"" - } - ], - "id": 802, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "10224:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10224:110:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 813, - "nodeType": "ExpressionStatement", - "src": "10224:110:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 815, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "10352:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 817, - "indexExpression": { - "argumentTypes": null, - "id": 816, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "10363:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10352:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f7665", - "id": 818, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10374:56:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2ab9bcfb707615a94d108c25ede9d65af23320dbf20a245340508dfbee304ef0", - "typeString": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\"" - }, - "value": "SpatialAssets: GeoDID does not have a parent to remove" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2ab9bcfb707615a94d108c25ede9d65af23320dbf20a245340508dfbee304ef0", - "typeString": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\"" - } - ], - "id": 814, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "10344:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 819, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10344:87:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 820, - "nodeType": "ExpressionStatement", - "src": "10344:87:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 825, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 821, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "10442:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 823, - "indexExpression": { - "argumentTypes": null, - "id": 822, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "10453:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10442:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 824, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10465:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10442:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 826, - "nodeType": "ExpressionStatement", - "src": "10442:28:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 827, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "10480:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 829, - "indexExpression": { - "argumentTypes": null, - "id": 828, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "10486:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10480:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 830, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "10498:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "10480:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 832, - "nodeType": "ExpressionStatement", - "src": "10480:26:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 834, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 778, - "src": "10544:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 835, - "name": "parentGeoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 780, - "src": "10554:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 833, - "name": "ParentRemoved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 106, - "src": "10530:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 836, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10530:39:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 837, - "nodeType": "EmitStatement", - "src": "10525:44:1" - } - ] - }, - "documentation": { - "id": 776, - "nodeType": "StructuredDocumentation", - "src": "9796:122:1", - "text": " @dev Removes a parent GeoDID from an already existent geoDID\n Emits a {ParentAdded} event." - }, - "functionSelector": "7c1c6c27", - "id": 839, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "removeParentGeoDID", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 781, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 778, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 839, - "src": "9951:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 777, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9951:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 780, - "mutability": "mutable", - "name": "parentGeoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 839, - "src": "9969:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 779, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9969:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9950:42:1" - }, - "returnParameters": { - "id": 782, - "nodeType": "ParameterList", - "parameters": [], - "src": "10000:0:1" - }, - "scope": 1073, - "src": "9923:653:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 980, - "nodeType": "Block", - "src": "10732:1164:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 849, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "10763:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 851, - "indexExpression": { - "argumentTypes": null, - "id": 850, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "10771:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10763:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 852, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1666, - "src": "10784:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", - "typeString": "function () view returns (address payable)" - } - }, - "id": 853, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10784:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "10763:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c204173736574", - "id": 855, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10797:57:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9236a874bf5a6a62bd70349ebeda081a8e8ed50334b7a53f944cd4f8601c274c", - "typeString": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\"" - }, - "value": "SpatialAssets: caller is not owner of the Spatial Asset" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9236a874bf5a6a62bd70349ebeda081a8e8ed50334b7a53f944cd4f8601c274c", - "typeString": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\"" - } - ], - "id": 848, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "10742:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 856, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10742:122:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 857, - "nodeType": "ExpressionStatement", - "src": "10742:122:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 865, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 858, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "10874:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 860, - "indexExpression": { - "argumentTypes": null, - "id": 859, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "10882:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10874:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10902:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10894:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 861, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10894:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 864, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10894:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "10874:30:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 866, - "nodeType": "ExpressionStatement", - "src": "10874:30:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 867, - "name": "_externalStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 165, - "src": "10914:16:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 869, - "indexExpression": { - "argumentTypes": null, - "id": 868, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "10931:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10914:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "", - "id": 870, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10943:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - }, - "src": "10914:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 872, - "nodeType": "ExpressionStatement", - "src": "10914:31:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 873, - "name": "_cids", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 149, - "src": "10955:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 875, - "indexExpression": { - "argumentTypes": null, - "id": 874, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "10961:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10955:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "", - "id": 876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10973:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - }, - "src": "10955:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 878, - "nodeType": "ExpressionStatement", - "src": "10955:20:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 879, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "10985:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 881, - "indexExpression": { - "argumentTypes": null, - "id": 880, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "10996:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10985:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 882, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11008:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10985:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 884, - "nodeType": "ExpressionStatement", - "src": "10985:28:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 885, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "11023:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 887, - "indexExpression": { - "argumentTypes": null, - "id": 886, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "11029:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "11023:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "", - "id": 888, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11041:2:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - }, - "src": "11023:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 890, - "nodeType": "ExpressionStatement", - "src": "11023:20:1" - }, - { - "assignments": [ - 892 - ], - "declarations": [ - { - "constant": false, - "id": 892, - "mutability": "mutable", - "name": "childrensLen", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 980, - "src": "11054:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 891, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 895, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 893, - "name": "childrenToRemove", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 845, - "src": "11077:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11077:23:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11054:46:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 896, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "11115:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11130:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "11115:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 975, - "nodeType": "IfStatement", - "src": "11111:730:1", - "trueBody": { - "id": 974, - "nodeType": "Block", - "src": "11132:709:1", - "statements": [ - { - "body": { - "id": 972, - "nodeType": "Block", - "src": "11186:645:1", - "statements": [ - { - "assignments": [ - 910 - ], - "declarations": [ - { - "constant": false, - "id": 910, - "mutability": "mutable", - "name": "childrenGeoDID", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 972, - "src": "11204:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 909, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11204:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 914, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 911, - "name": "childrenToRemove", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 845, - "src": "11229:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 913, - "indexExpression": { - "argumentTypes": null, - "id": 912, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "11246:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11229:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11204:44:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 915, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "11270:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 917, - "indexExpression": { - "argumentTypes": null, - "id": 916, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11278:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11270:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 920, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11305:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11297:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 918, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11297:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11297:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "11270:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 923, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "11311:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 925, - "indexExpression": { - "argumentTypes": null, - "id": 924, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11322:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11311:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11270:67:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 957, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 945, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "11553:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 947, - "indexExpression": { - "argumentTypes": null, - "id": 946, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11561:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11553:23:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 950, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11588:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 949, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "11580:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 948, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11580:7:1", - "typeDescriptions": { - "typeIdentifier": null, - "typeString": null - } - } - }, - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11580:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "11553:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "id": 956, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "11594:27:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 953, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "11595:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 955, - "indexExpression": { - "argumentTypes": null, - "id": 954, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11606:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11595:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11553:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 969, - "nodeType": "Block", - "src": "11721:96:1", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 965, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "11773:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 966, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11783:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 964, - "name": "ChildrenErrorNoExistence", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "11748:24:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11748:50:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 968, - "nodeType": "EmitStatement", - "src": "11743:55:1" - } - ] - }, - "id": 970, - "nodeType": "IfStatement", - "src": "11549:268:1", - "trueBody": { - "id": 963, - "nodeType": "Block", - "src": "11622:93:1", - "statements": [ - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 959, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "11671:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 960, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11681:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 958, - "name": "ChildrenErrorNoParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 120, - "src": "11649:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11649:47:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 962, - "nodeType": "EmitStatement", - "src": "11644:52:1" - } - ] - } - }, - "id": 971, - "nodeType": "IfStatement", - "src": "11266:551:1", - "trueBody": { - "id": 944, - "nodeType": "Block", - "src": "11339:203:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 927, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "11361:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 929, - "indexExpression": { - "argumentTypes": null, - "id": 928, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11372:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "11361:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11390:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "11361:34:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 932, - "nodeType": "ExpressionStatement", - "src": "11361:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 933, - "name": "_root", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 161, - "src": "11417:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 935, - "indexExpression": { - "argumentTypes": null, - "id": 934, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11423:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "11417:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 936, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11441:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "11417:38:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "11417:38:1" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 940, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "11498:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 941, - "name": "childrenGeoDID", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 910, - "src": "11508:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 939, - "name": "ChildrenRemoved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 113, - "src": "11482:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", - "typeString": "function (bytes32,bytes32)" - } - }, - "id": 942, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11482:41:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 943, - "nodeType": "EmitStatement", - "src": "11477:46:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 903, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "11163:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 904, - "name": "childrensLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 892, - "src": "11167:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11163:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 973, - "initializationExpression": { - "assignments": [ - 900 - ], - "declarations": [ - { - "constant": false, - "id": 900, - "mutability": "mutable", - "name": "j", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 973, - "src": "11150:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 899, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11150:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 902, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 901, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11160:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "11150:11:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 907, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "11181:3:1", - "subExpression": { - "argumentTypes": null, - "id": 906, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 900, - "src": "11181:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 908, - "nodeType": "ExpressionStatement", - "src": "11181:3:1" - }, - "nodeType": "ForStatement", - "src": "11146:685:1" - } - ] - } - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 977, - "name": "geoDIDId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "11880:8:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 976, - "name": "SpatialAssetDeactivated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "11856:23:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$", - "typeString": "function (bytes32)" - } - }, - "id": 978, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11856:33:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 979, - "nodeType": "EmitStatement", - "src": "11851:38:1" - } - ] - }, - "documentation": { - "id": 840, - "nodeType": "StructuredDocumentation", - "src": "10582:52:1", - "text": " @dev De-registers a spatial asset" - }, - "functionSelector": "0e437b1c", - "id": 981, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "deactivateSpatialAsset", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 846, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 842, - "mutability": "mutable", - "name": "geoDIDId", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 981, - "src": "10672:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 841, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10672:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 845, - "mutability": "mutable", - "name": "childrenToRemove", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 981, - "src": "10690:33:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 843, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10690:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 844, - "length": null, - "nodeType": "ArrayTypeName", - "src": "10690:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "10671:53:1" - }, - "returnParameters": { - "id": 847, - "nodeType": "ParameterList", - "parameters": [], - "src": "10732:0:1" - }, - "scope": 1073, - "src": "10640:1256:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 991, - "nodeType": "Block", - "src": "12027:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 987, - "name": "_uri", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 141, - "src": "12037:4:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 988, - "name": "newuri", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 984, - "src": "12044:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "src": "12037:13:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 990, - "nodeType": "ExpressionStatement", - "src": "12037:13:1" - } - ] - }, - "documentation": { - "id": 982, - "nodeType": "StructuredDocumentation", - "src": "11904:70:1", - "text": " @dev Sets a new URI for all the spatial asset types" - }, - "id": 992, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setURI", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 985, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 984, - "mutability": "mutable", - "name": "newuri", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 992, - "src": "11996:20:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 983, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "11996:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11995:22:1" - }, - "returnParameters": { - "id": 986, - "nodeType": "ParameterList", - "parameters": [], - "src": "12027:0:1" - }, - "scope": 1073, - "src": "11979:78:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1003, - "nodeType": "Block", - "src": "12124:35:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 999, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 145, - "src": "12141:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", - "typeString": "mapping(bytes32 => address)" - } - }, - "id": 1001, - "indexExpression": { - "argumentTypes": null, - "id": 1000, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "12149:2:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12141:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 998, - "id": 1002, - "nodeType": "Return", - "src": "12134:18:1" - } - ] - }, - "documentation": null, - "functionSelector": "1dc2a7b0", - "id": 1004, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "idToOwner", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 995, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 994, - "mutability": "mutable", - "name": "id", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1004, - "src": "12082:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 993, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12082:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12081:12:1" - }, - "returnParameters": { - "id": 998, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 997, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1004, - "src": "12115:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 996, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12115:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12114:9:1" - }, - "scope": 1073, - "src": "12063:96:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1015, - "nodeType": "Block", - "src": "12224:33:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1011, - "name": "_cids", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 149, - "src": "12241:5:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 1013, - "indexExpression": { - "argumentTypes": null, - "id": 1012, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1006, - "src": "12247:2:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12241:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1010, - "id": 1014, - "nodeType": "Return", - "src": "12234:16:1" - } - ] - }, - "documentation": null, - "functionSelector": "c66f70cc", - "id": 1016, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "idToCid", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1007, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1006, - "mutability": "mutable", - "name": "id", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1016, - "src": "12182:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1005, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12182:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12181:12:1" - }, - "returnParameters": { - "id": 1010, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1009, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1016, - "src": "12215:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1008, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12215:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12214:9:1" - }, - "scope": 1073, - "src": "12165:92:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1027, - "nodeType": "Block", - "src": "12327:40:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1023, - "name": "_canBeParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 157, - "src": "12344:12:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1025, - "indexExpression": { - "argumentTypes": null, - "id": 1024, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1018, - "src": "12357:2:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12344:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1022, - "id": 1026, - "nodeType": "Return", - "src": "12337:23:1" - } - ] - }, - "documentation": null, - "functionSelector": "0bfa194d", - "id": 1028, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "idToCanBeParent", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1019, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1018, - "mutability": "mutable", - "name": "id", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1028, - "src": "12288:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1017, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12288:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12287:12:1" - }, - "returnParameters": { - "id": 1022, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1021, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1028, - "src": "12321:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1020, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12321:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12320:6:1" - }, - "scope": 1073, - "src": "12263:104:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1039, - "nodeType": "Block", - "src": "12435:38:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1035, - "name": "_hasParent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 153, - "src": "12452:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1037, - "indexExpression": { - "argumentTypes": null, - "id": 1036, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1030, - "src": "12463:2:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12452:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1034, - "id": 1038, - "nodeType": "Return", - "src": "12445:21:1" - } - ] - }, - "documentation": null, - "functionSelector": "092e9f25", - "id": 1040, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "idToHasParent", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1031, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1030, - "mutability": "mutable", - "name": "id", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1040, - "src": "12396:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1029, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12396:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12395:12:1" - }, - "returnParameters": { - "id": 1034, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1033, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1040, - "src": "12429:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1032, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12429:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12428:6:1" - }, - "scope": 1073, - "src": "12373:100:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1051, - "nodeType": "Block", - "src": "12550:44:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1047, - "name": "_externalStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 165, - "src": "12567:16:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", - "typeString": "mapping(bytes32 => bytes32)" - } - }, - "id": 1049, - "indexExpression": { - "argumentTypes": null, - "id": 1048, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1042, - "src": "12584:2:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12567:20:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1046, - "id": 1050, - "nodeType": "Return", - "src": "12560:27:1" - } - ] - }, - "documentation": null, - "functionSelector": "84f42912", - "id": 1052, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "idToExternalStorage", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1043, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1042, - "mutability": "mutable", - "name": "id", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1052, - "src": "12508:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1041, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12508:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12507:12:1" - }, - "returnParameters": { - "id": 1046, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1045, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1052, - "src": "12541:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1044, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12541:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12540:9:1" - }, - "scope": 1073, - "src": "12479:115:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1063, - "nodeType": "Block", - "src": "12677:57:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1059, - "name": "_allowedStorages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "12694:16:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1061, - "indexExpression": { - "argumentTypes": null, - "id": 1060, - "name": "offChainStorage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1054, - "src": "12711:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12694:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1058, - "id": 1062, - "nodeType": "Return", - "src": "12687:40:1" - } - ] - }, - "documentation": null, - "functionSelector": "8d0a9bff", - "id": 1064, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "allowedStorages", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1055, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1054, - "mutability": "mutable", - "name": "offChainStorage", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1064, - "src": "12625:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1053, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12625:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12624:25:1" - }, - "returnParameters": { - "id": 1058, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1057, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1064, - "src": "12671:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1056, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12671:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12670:6:1" - }, - "scope": 1073, - "src": "12600:134:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1071, - "nodeType": "Block", - "src": "12791:28:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1069, - "name": "_uri", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 141, - "src": "12808:4:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 1068, - "id": 1070, - "nodeType": "Return", - "src": "12801:11:1" - } - ] - }, - "documentation": null, - "functionSelector": "eac989f8", - "id": 1072, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "uri", - "nodeType": "FunctionDefinition", - "overrides": null, - "parameters": { - "id": 1065, - "nodeType": "ParameterList", - "parameters": [], - "src": "12752:2:1" - }, - "returnParameters": { - "id": 1068, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1067, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1072, - "src": "12776:13:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 1066, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "12776:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12775:15:1" - }, - "scope": 1073, - "src": "12740:79:1", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - } - ], - "scope": 1074, - "src": "539:12282:1" - } - ], - "src": "42:12780:1" - }, - "legacyAST": { - "attributes": { - "absolutePath": "/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol", - "exportedSymbols": { - "SpatialAssets": [ - 1073 - ] - }, - "license": "APACHE OR MIT" - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - "^", - "0.6", - ".0" - ] - }, - "id": 58, - "name": "PragmaDirective", - "src": "42:23:1" - }, - { - "attributes": { - "SourceUnit": 1360, - "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol", - "file": "@openzeppelin/contracts/access/AccessControl.sol", - "scope": 1074, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 59, - "name": "ImportDirective", - "src": "67:58:1" - }, - { - "attributes": { - "SourceUnit": 1077, - "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", - "file": "@openzeppelin/contracts/GSN/Context.sol", - "scope": 1074, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 60, - "name": "ImportDirective", - "src": "126:49:1" - }, - { - "attributes": { - "abstract": false, - "contractDependencies": [ - 1359, - 1678 - ], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 1073, - 1359, - 1678 - ], - "name": "SpatialAssets", - "scope": 1074 - }, - "children": [ - { - "attributes": { - "text": " @dev {SpatialAssets} registry\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant\n 'DATA_SUPPLIER' roles to other accounts" - }, - "id": 61, - "name": "StructuredDocumentation", - "src": "177:361:1" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Context", - "referencedDeclaration": 1678, - "type": "contract Context" - }, - "id": 62, - "name": "UserDefinedTypeName", - "src": "565:7:1" - } - ], - "id": 63, - "name": "InheritanceSpecifier", - "src": "565:7:1" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "AccessControl", - "referencedDeclaration": 1359, - "type": "contract AccessControl" - }, - "id": 64, - "name": "UserDefinedTypeName", - "src": "574:13:1" - } - ], - "id": 65, - "name": "InheritanceSpecifier", - "src": "574:13:1" - }, - { - "attributes": { - "anonymous": false, - "name": "SpatialAssetRegistered" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when Spatial Assets of id `id` are transferred to `to``." - }, - "id": 66, - "name": "StructuredDocumentation", - "src": "594:88:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "to", - "overrides": null, - "scope": 80, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 67, - "name": "ElementaryTypeName", - "src": "716:7:1" - } - ], - "id": 68, - "name": "VariableDeclaration", - "src": "716:18:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 80, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 69, - "name": "ElementaryTypeName", - "src": "736:7:1" - } - ], - "id": 70, - "name": "VariableDeclaration", - "src": "736:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "cid", - "overrides": null, - "scope": 80, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 71, - "name": "ElementaryTypeName", - "src": "762:7:1" - } - ], - "id": 72, - "name": "VariableDeclaration", - "src": "762:19:1" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "offChainStorage", - "overrides": null, - "scope": 80, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 73, - "name": "ElementaryTypeName", - "src": "783:7:1" - } - ], - "id": 74, - "name": "VariableDeclaration", - "src": "783:23:1" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "root", - "overrides": null, - "scope": 80, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 75, - "name": "ElementaryTypeName", - "src": "808:7:1" - } - ], - "id": 76, - "name": "VariableDeclaration", - "src": "808:12:1" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "mutability": "mutable", - "name": "canBeParent", - "overrides": null, - "scope": 80, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 77, - "name": "ElementaryTypeName", - "src": "822:4:1" - } - ], - "id": 78, - "name": "VariableDeclaration", - "src": "822:16:1" - } - ], - "id": 79, - "name": "ParameterList", - "src": "715:124:1" - } - ], - "id": 80, - "name": "EventDefinition", - "src": "687:153:1" - }, - { - "attributes": { - "anonymous": false, - "name": "SpatialAssetDeactivated" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when Spatial Assets of id `id` are deactivated." - }, - "id": 81, - "name": "StructuredDocumentation", - "src": "846:79:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 85, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 82, - "name": "ElementaryTypeName", - "src": "960:7:1" - } - ], - "id": 83, - "name": "VariableDeclaration", - "src": "960:24:1" - } - ], - "id": 84, - "name": "ParameterList", - "src": "959:26:1" - } - ], - "id": 85, - "name": "EventDefinition", - "src": "930:56:1" - }, - { - "attributes": { - "anonymous": false, - "name": "ParentAdded" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when a parent geodid is added to a node" - }, - "id": 86, - "name": "StructuredDocumentation", - "src": "992:71:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 92, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 87, - "name": "ElementaryTypeName", - "src": "1086:7:1" - } - ], - "id": 88, - "name": "VariableDeclaration", - "src": "1086:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "parentGeoDIDId", - "overrides": null, - "scope": 92, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 89, - "name": "ElementaryTypeName", - "src": "1112:7:1" - } - ], - "id": 90, - "name": "VariableDeclaration", - "src": "1112:30:1" - } - ], - "id": 91, - "name": "ParameterList", - "src": "1085:58:1" - } - ], - "id": 92, - "name": "EventDefinition", - "src": "1068:76:1" - }, - { - "attributes": { - "anonymous": false, - "name": "ChildrenAdded" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when a children geodid is added to a node" - }, - "id": 93, - "name": "StructuredDocumentation", - "src": "1150:73:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 99, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 94, - "name": "ElementaryTypeName", - "src": "1248:7:1" - } - ], - "id": 95, - "name": "VariableDeclaration", - "src": "1248:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "overrides": null, - "scope": 99, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 96, - "name": "ElementaryTypeName", - "src": "1274:7:1" - } - ], - "id": 97, - "name": "VariableDeclaration", - "src": "1274:32:1" - } - ], - "id": 98, - "name": "ParameterList", - "src": "1247:60:1" - } - ], - "id": 99, - "name": "EventDefinition", - "src": "1228:80:1" - }, - { - "attributes": { - "anonymous": false, - "name": "ParentRemoved" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when a parent geodid is removed from a node" - }, - "id": 100, - "name": "StructuredDocumentation", - "src": "1314:75:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 106, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 101, - "name": "ElementaryTypeName", - "src": "1414:7:1" - } - ], - "id": 102, - "name": "VariableDeclaration", - "src": "1414:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "parentGeoDIDId", - "overrides": null, - "scope": 106, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 103, - "name": "ElementaryTypeName", - "src": "1440:7:1" - } - ], - "id": 104, - "name": "VariableDeclaration", - "src": "1440:30:1" - } - ], - "id": 105, - "name": "ParameterList", - "src": "1413:58:1" - } - ], - "id": 106, - "name": "EventDefinition", - "src": "1394:78:1" - }, - { - "attributes": { - "anonymous": false, - "name": "ChildrenRemoved" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when a children geodid is removed from a node" - }, - "id": 107, - "name": "StructuredDocumentation", - "src": "1478:77:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 108, - "name": "ElementaryTypeName", - "src": "1582:7:1" - } - ], - "id": 109, - "name": "VariableDeclaration", - "src": "1582:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "overrides": null, - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 110, - "name": "ElementaryTypeName", - "src": "1608:7:1" - } - ], - "id": 111, - "name": "VariableDeclaration", - "src": "1608:32:1" - } - ], - "id": 112, - "name": "ParameterList", - "src": "1581:60:1" - } - ], - "id": 113, - "name": "EventDefinition", - "src": "1560:82:1" - }, - { - "attributes": { - "anonymous": false, - "name": "ChildrenErrorNoParent" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent" - }, - "id": 114, - "name": "StructuredDocumentation", - "src": "1653:116:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 120, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 115, - "name": "ElementaryTypeName", - "src": "1802:7:1" - } - ], - "id": 116, - "name": "VariableDeclaration", - "src": "1802:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "overrides": null, - "scope": 120, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 117, - "name": "ElementaryTypeName", - "src": "1828:7:1" - } - ], - "id": 118, - "name": "VariableDeclaration", - "src": "1828:32:1" - } - ], - "id": 119, - "name": "ParameterList", - "src": "1801:60:1" - } - ], - "id": 120, - "name": "EventDefinition", - "src": "1774:88:1" - }, - { - "attributes": { - "anonymous": false, - "name": "ChildrenErrorNoExistence" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when a children geodid does not exist" - }, - "id": 121, - "name": "StructuredDocumentation", - "src": "1873:69:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 127, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 122, - "name": "ElementaryTypeName", - "src": "1978:7:1" - } - ], - "id": 123, - "name": "VariableDeclaration", - "src": "1978:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "overrides": null, - "scope": 127, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 124, - "name": "ElementaryTypeName", - "src": "2004:7:1" - } - ], - "id": 125, - "name": "VariableDeclaration", - "src": "2004:32:1" - } - ], - "id": 126, - "name": "ParameterList", - "src": "1977:60:1" - } - ], - "id": 127, - "name": "EventDefinition", - "src": "1947:91:1" - }, - { - "attributes": { - "anonymous": false, - "name": "ChildrenErrorHasParent" - }, - "children": [ - { - "attributes": { - "text": " @dev Emitted when a children geodid already has a parent but shouldn't have" - }, - "id": 128, - "name": "StructuredDocumentation", - "src": "2049:94:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 134, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 129, - "name": "ElementaryTypeName", - "src": "2177:7:1" - } - ], - "id": 130, - "name": "VariableDeclaration", - "src": "2177:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "mutability": "mutable", - "name": "childrenGeoDIDId", - "overrides": null, - "scope": 134, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 131, - "name": "ElementaryTypeName", - "src": "2203:7:1" - } - ], - "id": 132, - "name": "VariableDeclaration", - "src": "2203:32:1" - } - ], - "id": 133, - "name": "ParameterList", - "src": "2176:60:1" - } - ], - "id": 134, - "name": "EventDefinition", - "src": "2148:89:1" - }, - { - "attributes": { - "constant": true, - "functionSelector": "9969879b", - "mutability": "constant", - "name": "DATA_SUPPLIER", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "bytes32", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 135, - "name": "ElementaryTypeName", - "src": "2244:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f", - "typeString": "literal_string \"DATA_SUPPLIER\"" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": -8, - "type": "function (bytes memory) pure returns (bytes32)", - "value": "keccak256" - }, - "id": 136, - "name": "Identifier", - "src": "2284:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "444154415f535550504c494552", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"DATA_SUPPLIER\"", - "value": "DATA_SUPPLIER" - }, - "id": 137, - "name": "Literal", - "src": "2294:15:1" - } - ], - "id": 138, - "name": "FunctionCall", - "src": "2284:26:1" - } - ], - "id": 139, - "name": "VariableDeclaration", - "src": "2244:66:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_uri", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "string", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 140, - "name": "ElementaryTypeName", - "src": "2317:6:1" - } - ], - "id": 141, - "name": "VariableDeclaration", - "src": "2317:19:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_owners", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => address)", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => address)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 142, - "name": "ElementaryTypeName", - "src": "2395:7:1" - }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 143, - "name": "ElementaryTypeName", - "src": "2406:7:1" - } - ], - "id": 144, - "name": "Mapping", - "src": "2386:28:1" - } - ], - "id": 145, - "name": "VariableDeclaration", - "src": "2386:44:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_cids", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => bytes32)", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => bytes32)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 146, - "name": "ElementaryTypeName", - "src": "2486:7:1" - }, - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 147, - "name": "ElementaryTypeName", - "src": "2497:7:1" - } - ], - "id": 148, - "name": "Mapping", - "src": "2477:28:1" - } - ], - "id": 149, - "name": "VariableDeclaration", - "src": "2477:42:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_hasParent", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => bool)", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => bool)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 150, - "name": "ElementaryTypeName", - "src": "2585:7:1" - }, - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 151, - "name": "ElementaryTypeName", - "src": "2596:4:1" - } - ], - "id": 152, - "name": "Mapping", - "src": "2576:25:1" - } - ], - "id": 153, - "name": "VariableDeclaration", - "src": "2576:44:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_canBeParent", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => bool)", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => bool)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 154, - "name": "ElementaryTypeName", - "src": "2684:7:1" - }, - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 155, - "name": "ElementaryTypeName", - "src": "2695:4:1" - } - ], - "id": 156, - "name": "Mapping", - "src": "2675:25:1" - } - ], - "id": 157, - "name": "VariableDeclaration", - "src": "2675:46:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_root", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => bytes32)", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => bytes32)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 158, - "name": "ElementaryTypeName", - "src": "2785:7:1" - }, - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 159, - "name": "ElementaryTypeName", - "src": "2796:7:1" - } - ], - "id": 160, - "name": "Mapping", - "src": "2776:28:1" - } - ], - "id": 161, - "name": "VariableDeclaration", - "src": "2776:42:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_externalStorage", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => bytes32)", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => bytes32)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 162, - "name": "ElementaryTypeName", - "src": "2891:7:1" - }, - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 163, - "name": "ElementaryTypeName", - "src": "2902:7:1" - } - ], - "id": 164, - "name": "Mapping", - "src": "2882:28:1" - } - ], - "id": 165, - "name": "VariableDeclaration", - "src": "2882:53:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "_allowedStorages", - "overrides": null, - "scope": 1073, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(bytes32 => bool)", - "value": null, - "visibility": "private" - }, - "children": [ - { - "attributes": { - "type": "mapping(bytes32 => bool)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 166, - "name": "ElementaryTypeName", - "src": "2995:7:1" - }, - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 167, - "name": "ElementaryTypeName", - "src": "3006:4:1" - } - ], - "id": 168, - "name": "Mapping", - "src": "2986:25:1" - } - ], - "id": 169, - "name": "VariableDeclaration", - "src": "2986:50:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [ - null - ], - "name": "", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that\n deploys the contract." - }, - "id": 170, - "name": "StructuredDocumentation", - "src": "3044:117:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "uri", - "overrides": null, - "scope": 192, - "stateVariable": false, - "storageLocation": "memory", - "type": "string", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 171, - "name": "ElementaryTypeName", - "src": "3178:6:1" - } - ], - "id": 172, - "name": "VariableDeclaration", - "src": "3178:17:1" - } - ], - "id": 173, - "name": "ParameterList", - "src": "3177:19:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 174, - "name": "ParameterList", - "src": "3204:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 992, - "type": "function (string memory)", - "value": "_setURI" - }, - "id": 175, - "name": "Identifier", - "src": "3214:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 172, - "type": "string memory", - "value": "uri" - }, - "id": 176, - "name": "Identifier", - "src": "3222:3:1" - } - ], - "id": 177, - "name": "FunctionCall", - "src": "3214:12:1" - } - ], - "id": 178, - "name": "ExpressionStatement", - "src": "3214:12:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1285, - "type": "function (bytes32,address)", - "value": "_setupRole" - }, - "id": 179, - "name": "Identifier", - "src": "3236:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1102, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 180, - "name": "Identifier", - "src": "3247:18:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 181, - "name": "Identifier", - "src": "3267:10:1" - } - ], - "id": 182, - "name": "FunctionCall", - "src": "3267:12:1" - } - ], - "id": 183, - "name": "FunctionCall", - "src": "3236:44:1" - } - ], - "id": 184, - "name": "ExpressionStatement", - "src": "3236:44:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1285, - "type": "function (bytes32,address)", - "value": "_setupRole" - }, - "id": 185, - "name": "Identifier", - "src": "3290:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 186, - "name": "Identifier", - "src": "3301:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 187, - "name": "Identifier", - "src": "3316:10:1" - } - ], - "id": 188, - "name": "FunctionCall", - "src": "3316:12:1" - } - ], - "id": 189, - "name": "FunctionCall", - "src": "3290:39:1" - } - ], - "id": 190, - "name": "ExpressionStatement", - "src": "3290:39:1" - } - ], - "id": 191, - "name": "Block", - "src": "3204:133:1" - } - ], - "id": 192, - "name": "FunctionDefinition", - "src": "3166:171:1" - }, - { - "attributes": { - "functionSelector": "c44e96a0", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "registerRole", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Registers a new user with the ability to register a spatial asset." - }, - "id": 193, - "name": "StructuredDocumentation", - "src": "3343:90:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 194, - "name": "ParameterList", - "src": "3459:2:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 195, - "name": "ParameterList", - "src": "3469:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ad6e74c880a0a8789cc0999bb5807e042142eac3ba8cd1a8f038e7ac1c7b18f3", - "typeString": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 196, - "name": "Identifier", - "src": "3479:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 197, - "name": "Identifier", - "src": "3488:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 198, - "name": "Identifier", - "src": "3496:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 199, - "name": "Identifier", - "src": "3511:10:1" - } - ], - "id": 200, - "name": "FunctionCall", - "src": "3511:12:1" - } - ], - "id": 201, - "name": "FunctionCall", - "src": "3488:36:1" - } - ], - "id": 202, - "name": "UnaryOperation", - "src": "3487:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\"", - "value": "SpatialAssets: must not have a DATA_SUPPLIER role yet" - }, - "id": 203, - "name": "Literal", - "src": "3526:55:1" - } - ], - "id": 204, - "name": "FunctionCall", - "src": "3479:103:1" - } - ], - "id": 205, - "name": "ExpressionStatement", - "src": "3479:103:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1285, - "type": "function (bytes32,address)", - "value": "_setupRole" - }, - "id": 206, - "name": "Identifier", - "src": "3592:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 207, - "name": "Identifier", - "src": "3603:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 208, - "name": "Identifier", - "src": "3618:10:1" - } - ], - "id": 209, - "name": "FunctionCall", - "src": "3618:12:1" - } - ], - "id": 210, - "name": "FunctionCall", - "src": "3592:39:1" - } - ], - "id": 211, - "name": "ExpressionStatement", - "src": "3592:39:1" - } - ], - "id": 212, - "name": "Block", - "src": "3469:169:1" - } - ], - "id": 213, - "name": "FunctionDefinition", - "src": "3438:200:1" - }, - { - "attributes": { - "functionSelector": "6e7a6f4b", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "enableStorage", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Registers a new storage that can accept GeoDID document creation" - }, - "id": 214, - "name": "StructuredDocumentation", - "src": "3644:88:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "offChainStorage", - "overrides": null, - "scope": 244, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 215, - "name": "ElementaryTypeName", - "src": "3760:7:1" - } - ], - "id": 216, - "name": "VariableDeclaration", - "src": "3760:23:1" - } - ], - "id": 217, - "name": "ParameterList", - "src": "3759:25:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 218, - "name": "ParameterList", - "src": "3792:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f", - "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 219, - "name": "Identifier", - "src": "3802:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 220, - "name": "Identifier", - "src": "3810:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1102, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 221, - "name": "Identifier", - "src": "3818:18:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 222, - "name": "Identifier", - "src": "3838:10:1" - } - ], - "id": 223, - "name": "FunctionCall", - "src": "3838:12:1" - } - ], - "id": 224, - "name": "FunctionCall", - "src": "3810:41:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"", - "value": "SpatialAssets: must have admin role to edit allowed offchain storages" - }, - "id": 225, - "name": "Literal", - "src": "3853:71:1" - } - ], - "id": 226, - "name": "FunctionCall", - "src": "3802:123:1" - } - ], - "id": 227, - "name": "ExpressionStatement", - "src": "3802:123:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8fee17d368687c80e4deac3f133d29733581706ec6213898eb6c5db439fb45d7", - "typeString": "literal_string \"SpatialAssets: storage must not be active yet\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 228, - "name": "Identifier", - "src": "3935:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 169, - "type": "mapping(bytes32 => bool)", - "value": "_allowedStorages" - }, - "id": 229, - "name": "Identifier", - "src": "3943:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 216, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 230, - "name": "Identifier", - "src": "3960:15:1" - } - ], - "id": 231, - "name": "IndexAccess", - "src": "3943:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 232, - "name": "Literal", - "src": "3979:5:1" - } - ], - "id": 233, - "name": "BinaryOperation", - "src": "3943:41:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2073746f72616765206d757374206e6f742062652061637469766520796574", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: storage must not be active yet\"", - "value": "SpatialAssets: storage must not be active yet" - }, - "id": 234, - "name": "Literal", - "src": "3986:47:1" - } - ], - "id": 235, - "name": "FunctionCall", - "src": "3935:99:1" - } - ], - "id": 236, - "name": "ExpressionStatement", - "src": "3935:99:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 169, - "type": "mapping(bytes32 => bool)", - "value": "_allowedStorages" - }, - "id": 237, - "name": "Identifier", - "src": "4044:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 216, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 238, - "name": "Identifier", - "src": "4061:15:1" - } - ], - "id": 239, - "name": "IndexAccess", - "src": "4044:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 240, - "name": "Literal", - "src": "4080:4:1" - } - ], - "id": 241, - "name": "Assignment", - "src": "4044:40:1" - } - ], - "id": 242, - "name": "ExpressionStatement", - "src": "4044:40:1" - } - ], - "id": 243, - "name": "Block", - "src": "3792:299:1" - } - ], - "id": 244, - "name": "FunctionDefinition", - "src": "3737:354:1" - }, - { - "attributes": { - "functionSelector": "fd52c0d5", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "disableStorage", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Disables an existing storage" - }, - "id": 245, - "name": "StructuredDocumentation", - "src": "4097:52:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "offChainStorage", - "overrides": null, - "scope": 266, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 246, - "name": "ElementaryTypeName", - "src": "4178:7:1" - } - ], - "id": 247, - "name": "VariableDeclaration", - "src": "4178:23:1" - } - ], - "id": 248, - "name": "ParameterList", - "src": "4177:25:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 249, - "name": "ParameterList", - "src": "4210:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f", - "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 250, - "name": "Identifier", - "src": "4220:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 251, - "name": "Identifier", - "src": "4228:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1102, - "type": "bytes32", - "value": "DEFAULT_ADMIN_ROLE" - }, - "id": 252, - "name": "Identifier", - "src": "4236:18:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 253, - "name": "Identifier", - "src": "4256:10:1" - } - ], - "id": 254, - "name": "FunctionCall", - "src": "4256:12:1" - } - ], - "id": 255, - "name": "FunctionCall", - "src": "4228:41:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"", - "value": "SpatialAssets: must have admin role to edit allowed offchain storages" - }, - "id": 256, - "name": "Literal", - "src": "4271:71:1" - } - ], - "id": 257, - "name": "FunctionCall", - "src": "4220:123:1" - } - ], - "id": 258, - "name": "ExpressionStatement", - "src": "4220:123:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 169, - "type": "mapping(bytes32 => bool)", - "value": "_allowedStorages" - }, - "id": 259, - "name": "Identifier", - "src": "4353:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 247, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 260, - "name": "Identifier", - "src": "4370:15:1" - } - ], - "id": 261, - "name": "IndexAccess", - "src": "4353:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 262, - "name": "Literal", - "src": "4389:5:1" - } - ], - "id": 263, - "name": "Assignment", - "src": "4353:41:1" - } - ], - "id": 264, - "name": "ExpressionStatement", - "src": "4353:41:1" - } - ], - "id": 265, - "name": "Block", - "src": "4210:191:1" - } - ], - "id": 266, - "name": "FunctionDefinition", - "src": "4154:247:1" - }, - { - "attributes": { - "functionSelector": "b22de880", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "registerSpatialAsset", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Registers one spatial asset with external storage 'data' and assigns them to `account`.\n Emits a {SpatialAssetRegistered} event." - }, - "id": 267, - "name": "StructuredDocumentation", - "src": "4408:165:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "owner", - "overrides": null, - "scope": 464, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 268, - "name": "ElementaryTypeName", - "src": "4608:7:1" - } - ], - "id": 269, - "name": "VariableDeclaration", - "src": "4608:13:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 464, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 270, - "name": "ElementaryTypeName", - "src": "4623:7:1" - } - ], - "id": 271, - "name": "VariableDeclaration", - "src": "4623:16:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "parentGeoDIDId", - "overrides": null, - "scope": 464, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 272, - "name": "ElementaryTypeName", - "src": "4641:7:1" - } - ], - "id": 273, - "name": "VariableDeclaration", - "src": "4641:22:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenGeoDIDIds", - "overrides": null, - "scope": 464, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes32[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes32[]" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 274, - "name": "ElementaryTypeName", - "src": "4666:7:1" - } - ], - "id": 275, - "name": "ArrayTypeName", - "src": "4666:9:1" - } - ], - "id": 276, - "name": "VariableDeclaration", - "src": "4666:34:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "cid", - "overrides": null, - "scope": 464, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 277, - "name": "ElementaryTypeName", - "src": "4702:7:1" - } - ], - "id": 278, - "name": "VariableDeclaration", - "src": "4702:11:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "offChainStorage", - "overrides": null, - "scope": 464, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 279, - "name": "ElementaryTypeName", - "src": "4715:7:1" - } - ], - "id": 280, - "name": "VariableDeclaration", - "src": "4715:23:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "geoDIDtype", - "overrides": null, - "scope": 464, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 281, - "name": "ElementaryTypeName", - "src": "4740:7:1" - } - ], - "id": 282, - "name": "VariableDeclaration", - "src": "4740:18:1" - } - ], - "id": 283, - "name": "ParameterList", - "src": "4607:152:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 284, - "name": "ParameterList", - "src": "4767:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 285, - "name": "Identifier", - "src": "4777:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 286, - "name": "Identifier", - "src": "4785:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 287, - "name": "Identifier", - "src": "4793:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 288, - "name": "Identifier", - "src": "4808:10:1" - } - ], - "id": 289, - "name": "FunctionCall", - "src": "4808:12:1" - } - ], - "id": 290, - "name": "FunctionCall", - "src": "4785:36:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must have data supplier role to register\"", - "value": "SpatialAssets: must have data supplier role to register" - }, - "id": 291, - "name": "Literal", - "src": "4823:57:1" - } - ], - "id": 292, - "name": "FunctionCall", - "src": "4777:104:1" - } - ], - "id": 293, - "name": "ExpressionStatement", - "src": "4777:104:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0ae99bd2d2bc928ba974a4c0584b94117dc577f73fe645d1eace2711f12192a2", - "typeString": "literal_string \"SpatialAssets: storage must be allowed\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 294, - "name": "Identifier", - "src": "4891:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1064, - "type": "function (bytes32) view returns (bool)", - "value": "allowedStorages" - }, - "id": 295, - "name": "Identifier", - "src": "4899:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 280, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 296, - "name": "Identifier", - "src": "4915:15:1" - } - ], - "id": 297, - "name": "FunctionCall", - "src": "4899:32:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: storage must be allowed\"", - "value": "SpatialAssets: storage must be allowed" - }, - "id": 298, - "name": "Literal", - "src": "4933:40:1" - } - ], - "id": 299, - "name": "FunctionCall", - "src": "4891:83:1" - } - ], - "id": 300, - "name": "ExpressionStatement", - "src": "4891:83:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 301, - "name": "Identifier", - "src": "4984:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 302, - "name": "Identifier", - "src": "4992:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 303, - "name": "Identifier", - "src": "5000:8:1" - } - ], - "id": 304, - "name": "IndexAccess", - "src": "4992:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 305, - "name": "ElementaryTypeName", - "src": "5013:7:1" - } - ], - "id": 306, - "name": "ElementaryTypeNameExpression", - "src": "5013:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 307, - "name": "Literal", - "src": "5021:1:1" - } - ], - "id": 308, - "name": "FunctionCall", - "src": "5013:10:1" - } - ], - "id": 309, - "name": "BinaryOperation", - "src": "4992:31:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: id must not have an owner yet\"", - "value": "SpatialAssets: id must not have an owner yet" - }, - "id": 310, - "name": "Literal", - "src": "5025:46:1" - } - ], - "id": 311, - "name": "FunctionCall", - "src": "4984:88:1" - } - ], - "id": 312, - "name": "ExpressionStatement", - "src": "4984:88:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e674447e79034d68bd1c7f2aa0a8d31190ad751eb2b878eced3a014448a54daa", - "typeString": "literal_string \"Spatial Assets: wrong geodidtype\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 313, - "name": "Identifier", - "src": "5082:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 282, - "type": "uint256", - "value": "geoDIDtype" - }, - "id": 314, - "name": "Identifier", - "src": "5090:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 315, - "name": "Literal", - "src": "5105:1:1" - } - ], - "id": 316, - "name": "BinaryOperation", - "src": "5090:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 282, - "type": "uint256", - "value": "geoDIDtype" - }, - "id": 317, - "name": "Identifier", - "src": "5110:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 318, - "name": "Literal", - "src": "5124:1:1" - } - ], - "id": 319, - "name": "BinaryOperation", - "src": "5110:15:1" - } - ], - "id": 320, - "name": "BinaryOperation", - "src": "5090:35:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c204173736574733a2077726f6e672067656f64696474797065", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Spatial Assets: wrong geodidtype\"", - "value": "Spatial Assets: wrong geodidtype" - }, - "id": 321, - "name": "Literal", - "src": "5127:34:1" - } - ], - "id": 322, - "name": "FunctionCall", - "src": "5082:80:1" - } - ], - "id": 323, - "name": "ExpressionStatement", - "src": "5082:80:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 149, - "type": "mapping(bytes32 => bytes32)", - "value": "_cids" - }, - "id": 324, - "name": "Identifier", - "src": "5173:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 325, - "name": "Identifier", - "src": "5179:8:1" - } - ], - "id": 326, - "name": "IndexAccess", - "src": "5173:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 278, - "type": "bytes32", - "value": "cid" - }, - "id": 327, - "name": "Identifier", - "src": "5190:3:1" - } - ], - "id": 328, - "name": "Assignment", - "src": "5173:20:1" - } - ], - "id": 329, - "name": "ExpressionStatement", - "src": "5173:20:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 330, - "name": "Identifier", - "src": "5203:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 331, - "name": "Identifier", - "src": "5211:8:1" - } - ], - "id": 332, - "name": "IndexAccess", - "src": "5203:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 269, - "type": "address", - "value": "owner" - }, - "id": 333, - "name": "Identifier", - "src": "5223:5:1" - } - ], - "id": 334, - "name": "Assignment", - "src": "5203:25:1" - } - ], - "id": 335, - "name": "ExpressionStatement", - "src": "5203:25:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 165, - "type": "mapping(bytes32 => bytes32)", - "value": "_externalStorage" - }, - "id": 336, - "name": "Identifier", - "src": "5238:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 337, - "name": "Identifier", - "src": "5255:8:1" - } - ], - "id": 338, - "name": "IndexAccess", - "src": "5238:26:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 280, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 339, - "name": "Identifier", - "src": "5267:15:1" - } - ], - "id": 340, - "name": "Assignment", - "src": "5238:44:1" - } - ], - "id": 341, - "name": "ExpressionStatement", - "src": "5238:44:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 282, - "type": "uint256", - "value": "geoDIDtype" - }, - "id": 342, - "name": "Identifier", - "src": "5297:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 343, - "name": "Literal", - "src": "5311:1:1" - } - ], - "id": 344, - "name": "BinaryOperation", - "src": "5297:15:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 345, - "name": "Identifier", - "src": "5328:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 346, - "name": "Identifier", - "src": "5341:8:1" - } - ], - "id": 347, - "name": "IndexAccess", - "src": "5328:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 348, - "name": "Literal", - "src": "5353:4:1" - } - ], - "id": 349, - "name": "Assignment", - "src": "5328:29:1" - } - ], - "id": 350, - "name": "ExpressionStatement", - "src": "5328:29:1" - } - ], - "id": 351, - "name": "Block", - "src": "5314:54:1" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 282, - "type": "uint256", - "value": "geoDIDtype" - }, - "id": 352, - "name": "Identifier", - "src": "5378:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1", - "value": "1" - }, - "id": 353, - "name": "Literal", - "src": "5392:1:1" - } - ], - "id": 354, - "name": "BinaryOperation", - "src": "5378:15:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 355, - "name": "Identifier", - "src": "5409:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 356, - "name": "Identifier", - "src": "5422:8:1" - } - ], - "id": 357, - "name": "IndexAccess", - "src": "5409:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 358, - "name": "Literal", - "src": "5434:5:1" - } - ], - "id": 359, - "name": "Assignment", - "src": "5409:30:1" - } - ], - "id": 360, - "name": "ExpressionStatement", - "src": "5409:30:1" - } - ], - "id": 361, - "name": "Block", - "src": "5395:55:1" - } - ], - "id": 362, - "name": "IfStatement", - "src": "5374:76:1" - } - ], - "id": 363, - "name": "IfStatement", - "src": "5293:157:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 273, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 364, - "name": "Identifier", - "src": "5464:14:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bytes32", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes32)" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": null - }, - "id": 365, - "name": "ElementaryTypeName", - "src": "5482:7:1" - } - ], - "id": 366, - "name": "ElementaryTypeNameExpression", - "src": "5482:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 367, - "name": "Literal", - "src": "5490:1:1" - } - ], - "id": 368, - "name": "FunctionCall", - "src": "5482:10:1" - } - ], - "id": 369, - "name": "BinaryOperation", - "src": "5464:28:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 370, - "name": "Identifier", - "src": "5508:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 371, - "name": "Identifier", - "src": "5519:8:1" - } - ], - "id": 372, - "name": "IndexAccess", - "src": "5508:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 373, - "name": "Literal", - "src": "5531:5:1" - } - ], - "id": 374, - "name": "Assignment", - "src": "5508:28:1" - } - ], - "id": 375, - "name": "ExpressionStatement", - "src": "5508:28:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 376, - "name": "Identifier", - "src": "5550:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 377, - "name": "Identifier", - "src": "5556:8:1" - } - ], - "id": 378, - "name": "IndexAccess", - "src": "5550:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 379, - "name": "Identifier", - "src": "5568:8:1" - } - ], - "id": 380, - "name": "Assignment", - "src": "5550:26:1" - } - ], - "id": 381, - "name": "ExpressionStatement", - "src": "5550:26:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 80, - "type": "function (address,bytes32,bytes32,bytes32,bytes32,bool)", - "value": "SpatialAssetRegistered" - }, - "id": 382, - "name": "Identifier", - "src": "5591:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 269, - "type": "address", - "value": "owner" - }, - "id": 383, - "name": "Identifier", - "src": "5614:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 384, - "name": "Identifier", - "src": "5621:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 278, - "type": "bytes32", - "value": "cid" - }, - "id": 385, - "name": "Identifier", - "src": "5631:3:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 280, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 386, - "name": "Identifier", - "src": "5636:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 387, - "name": "Identifier", - "src": "5653:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 388, - "name": "Identifier", - "src": "5663:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 389, - "name": "Identifier", - "src": "5676:8:1" - } - ], - "id": 390, - "name": "IndexAccess", - "src": "5663:22:1" - } - ], - "id": 391, - "name": "FunctionCall", - "src": "5591:95:1" - } - ], - "id": 392, - "name": "EmitStatement", - "src": "5586:100:1" - } - ], - "id": 393, - "name": "Block", - "src": "5494:203:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 394, - "name": "Identifier", - "src": "5717:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 395, - "name": "Identifier", - "src": "5728:8:1" - } - ], - "id": 396, - "name": "IndexAccess", - "src": "5717:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 397, - "name": "Literal", - "src": "5740:4:1" - } - ], - "id": 398, - "name": "Assignment", - "src": "5717:27:1" - } - ], - "id": 399, - "name": "ExpressionStatement", - "src": "5717:27:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 80, - "type": "function (address,bytes32,bytes32,bytes32,bytes32,bool)", - "value": "SpatialAssetRegistered" - }, - "id": 400, - "name": "Identifier", - "src": "5763:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 269, - "type": "address", - "value": "owner" - }, - "id": 401, - "name": "Identifier", - "src": "5786:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 402, - "name": "Identifier", - "src": "5793:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 278, - "type": "bytes32", - "value": "cid" - }, - "id": 403, - "name": "Identifier", - "src": "5803:3:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 280, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 404, - "name": "Identifier", - "src": "5808:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 405, - "name": "Identifier", - "src": "5825:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 273, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 406, - "name": "Identifier", - "src": "5831:14:1" - } - ], - "id": 407, - "name": "IndexAccess", - "src": "5825:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 408, - "name": "Identifier", - "src": "5848:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 409, - "name": "Identifier", - "src": "5861:8:1" - } - ], - "id": 410, - "name": "IndexAccess", - "src": "5848:22:1" - } - ], - "id": 411, - "name": "FunctionCall", - "src": "5763:108:1" - } - ], - "id": 412, - "name": "EmitStatement", - "src": "5758:113:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 92, - "type": "function (bytes32,bytes32)", - "value": "ParentAdded" - }, - "id": 413, - "name": "Identifier", - "src": "5890:11:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 414, - "name": "Identifier", - "src": "5902:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 273, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 415, - "name": "Identifier", - "src": "5912:14:1" - } - ], - "id": 416, - "name": "FunctionCall", - "src": "5890:37:1" - } - ], - "id": 417, - "name": "EmitStatement", - "src": "5885:42:1" - } - ], - "id": 418, - "name": "Block", - "src": "5703:235:1" - } - ], - "id": 419, - "name": "IfStatement", - "src": "5460:478:1" - }, - { - "attributes": { - "assignments": [ - 421 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrensLen", - "overrides": null, - "scope": 463, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 420, - "name": "ElementaryTypeName", - "src": "5948:7:1" - } - ], - "id": 421, - "name": "VariableDeclaration", - "src": "5948:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 276, - "type": "bytes32[] memory", - "value": "childrenGeoDIDIds" - }, - "id": 422, - "name": "Identifier", - "src": "5971:17:1" - } - ], - "id": 423, - "name": "MemberAccess", - "src": "5971:24:1" - } - ], - "id": 424, - "name": "VariableDeclarationStatement", - "src": "5948:47:1" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 421, - "type": "uint256", - "value": "childrensLen" - }, - "id": 425, - "name": "Identifier", - "src": "6010:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 426, - "name": "Literal", - "src": "6025:1:1" - } - ], - "id": 427, - "name": "BinaryOperation", - "src": "6010:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 428, - "name": "Identifier", - "src": "6030:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 429, - "name": "Identifier", - "src": "6043:8:1" - } - ], - "id": 430, - "name": "IndexAccess", - "src": "6030:22:1" - } - ], - "id": 431, - "name": "BinaryOperation", - "src": "6010:42:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "assignments": [ - 433 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "j", - "overrides": null, - "scope": 460, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 432, - "name": "ElementaryTypeName", - "src": "6071:7:1" - } - ], - "id": 433, - "name": "VariableDeclaration", - "src": "6071:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 434, - "name": "Literal", - "src": "6081:1:1" - } - ], - "id": 435, - "name": "VariableDeclarationStatement", - "src": "6071:11:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 433, - "type": "uint256", - "value": "j" - }, - "id": 436, - "name": "Identifier", - "src": "6084:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 421, - "type": "uint256", - "value": "childrensLen" - }, - "id": 437, - "name": "Identifier", - "src": "6088:12:1" - } - ], - "id": 438, - "name": "BinaryOperation", - "src": "6084:16:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 433, - "type": "uint256", - "value": "j" - }, - "id": 439, - "name": "Identifier", - "src": "6102:1:1" - } - ], - "id": 440, - "name": "UnaryOperation", - "src": "6102:3:1" - } - ], - "id": 441, - "name": "ExpressionStatement", - "src": "6102:3:1" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 443 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenGeoDID", - "overrides": null, - "scope": 459, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 442, - "name": "ElementaryTypeName", - "src": "6125:7:1" - } - ], - "id": 443, - "name": "VariableDeclaration", - "src": "6125:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 276, - "type": "bytes32[] memory", - "value": "childrenGeoDIDIds" - }, - "id": 444, - "name": "Identifier", - "src": "6150:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 433, - "type": "uint256", - "value": "j" - }, - "id": 445, - "name": "Identifier", - "src": "6168:1:1" - } - ], - "id": 446, - "name": "IndexAccess", - "src": "6150:20:1" - } - ], - "id": 447, - "name": "VariableDeclarationStatement", - "src": "6125:45:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 448, - "name": "Identifier", - "src": "6188:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 443, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 449, - "name": "Identifier", - "src": "6199:14:1" - } - ], - "id": 450, - "name": "IndexAccess", - "src": "6188:26:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 451, - "name": "Literal", - "src": "6217:4:1" - } - ], - "id": 452, - "name": "Assignment", - "src": "6188:33:1" - } - ], - "id": 453, - "name": "ExpressionStatement", - "src": "6188:33:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 99, - "type": "function (bytes32,bytes32)", - "value": "ChildrenAdded" - }, - "id": 454, - "name": "Identifier", - "src": "6244:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 271, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 455, - "name": "Identifier", - "src": "6258:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 443, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 456, - "name": "Identifier", - "src": "6268:14:1" - } - ], - "id": 457, - "name": "FunctionCall", - "src": "6244:39:1" - } - ], - "id": 458, - "name": "EmitStatement", - "src": "6239:44:1" - } - ], - "id": 459, - "name": "Block", - "src": "6107:191:1" - } - ], - "id": 460, - "name": "ForStatement", - "src": "6067:231:1" - } - ], - "id": 461, - "name": "Block", - "src": "6053:255:1" - } - ], - "id": 462, - "name": "IfStatement", - "src": "6006:302:1" - } - ], - "id": 463, - "name": "Block", - "src": "4767:1547:1" - } - ], - "id": 464, - "name": "FunctionDefinition", - "src": "4578:1736:1" - }, - { - "attributes": { - "functionSelector": "bdabcf63", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "addChildrenGeoDIDs", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Adds children GeoDIDs to an already existent geoDID\n Emits a {ChildrenAdded} event." - }, - "id": 465, - "name": "StructuredDocumentation", - "src": "6321:120:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 587, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 466, - "name": "ElementaryTypeName", - "src": "6474:7:1" - } - ], - "id": 467, - "name": "VariableDeclaration", - "src": "6474:16:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenGeoDIDIds", - "overrides": null, - "scope": 587, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes32[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes32[]" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 468, - "name": "ElementaryTypeName", - "src": "6492:7:1" - } - ], - "id": 469, - "name": "ArrayTypeName", - "src": "6492:9:1" - } - ], - "id": 470, - "name": "VariableDeclaration", - "src": "6492:34:1" - } - ], - "id": 471, - "name": "ParameterList", - "src": "6473:54:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 472, - "name": "ParameterList", - "src": "6535:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 473, - "name": "Identifier", - "src": "6545:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 474, - "name": "Identifier", - "src": "6553:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 475, - "name": "Identifier", - "src": "6561:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 476, - "name": "Identifier", - "src": "6576:10:1" - } - ], - "id": 477, - "name": "FunctionCall", - "src": "6576:12:1" - } - ], - "id": 478, - "name": "FunctionCall", - "src": "6553:36:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must have data supplier role to register\"", - "value": "SpatialAssets: must have data supplier role to register" - }, - "id": 479, - "name": "Literal", - "src": "6591:57:1" - } - ], - "id": 480, - "name": "FunctionCall", - "src": "6545:104:1" - } - ], - "id": 481, - "name": "ExpressionStatement", - "src": "6545:104:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 482, - "name": "Identifier", - "src": "6659:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 483, - "name": "Identifier", - "src": "6667:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 467, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 484, - "name": "Identifier", - "src": "6675:8:1" - } - ], - "id": 485, - "name": "IndexAccess", - "src": "6667:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 486, - "name": "Identifier", - "src": "6688:10:1" - } - ], - "id": 487, - "name": "FunctionCall", - "src": "6688:12:1" - } - ], - "id": 488, - "name": "BinaryOperation", - "src": "6667:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"", - "value": "SpatialAssets: geoDIDId must be owned by its creator" - }, - "id": 489, - "name": "Literal", - "src": "6702:54:1" - } - ], - "id": 490, - "name": "FunctionCall", - "src": "6659:98:1" - } - ], - "id": 491, - "name": "ExpressionStatement", - "src": "6659:98:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_35056da795db0b563126e5da17620c63bcd517d6bd90d17a597656966ba83aa1", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 492, - "name": "Identifier", - "src": "6767:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 493, - "name": "Identifier", - "src": "6775:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 467, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 494, - "name": "Identifier", - "src": "6788:8:1" - } - ], - "id": 495, - "name": "IndexAccess", - "src": "6775:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\"", - "value": "SpatialAssets: geoDIDId must be able to be parent (a Collection)" - }, - "id": 496, - "name": "Literal", - "src": "6799:66:1" - } - ], - "id": 497, - "name": "FunctionCall", - "src": "6767:99:1" - } - ], - "id": 498, - "name": "ExpressionStatement", - "src": "6767:99:1" - }, - { - "attributes": { - "assignments": [ - 500 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrensLen", - "overrides": null, - "scope": 586, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 499, - "name": "ElementaryTypeName", - "src": "6877:7:1" - } - ], - "id": 500, - "name": "VariableDeclaration", - "src": "6877:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 470, - "type": "bytes32[] memory", - "value": "childrenGeoDIDIds" - }, - "id": 501, - "name": "Identifier", - "src": "6900:17:1" - } - ], - "id": 502, - "name": "MemberAccess", - "src": "6900:24:1" - } - ], - "id": 503, - "name": "VariableDeclarationStatement", - "src": "6877:47:1" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 500, - "type": "uint256", - "value": "childrensLen" - }, - "id": 504, - "name": "Identifier", - "src": "6939:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 505, - "name": "Literal", - "src": "6954:1:1" - } - ], - "id": 506, - "name": "BinaryOperation", - "src": "6939:16:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "assignments": [ - 508 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "j", - "overrides": null, - "scope": 583, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 507, - "name": "ElementaryTypeName", - "src": "6974:7:1" - } - ], - "id": 508, - "name": "VariableDeclaration", - "src": "6974:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 509, - "name": "Literal", - "src": "6984:1:1" - } - ], - "id": 510, - "name": "VariableDeclarationStatement", - "src": "6974:11:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 508, - "type": "uint256", - "value": "j" - }, - "id": 511, - "name": "Identifier", - "src": "6987:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 500, - "type": "uint256", - "value": "childrensLen" - }, - "id": 512, - "name": "Identifier", - "src": "6991:12:1" - } - ], - "id": 513, - "name": "BinaryOperation", - "src": "6987:16:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 508, - "type": "uint256", - "value": "j" - }, - "id": 514, - "name": "Identifier", - "src": "7005:1:1" - } - ], - "id": 515, - "name": "UnaryOperation", - "src": "7005:3:1" - } - ], - "id": 516, - "name": "ExpressionStatement", - "src": "7005:3:1" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 518 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenGeoDID", - "overrides": null, - "scope": 582, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 517, - "name": "ElementaryTypeName", - "src": "7028:7:1" - } - ], - "id": 518, - "name": "VariableDeclaration", - "src": "7028:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 470, - "type": "bytes32[] memory", - "value": "childrenGeoDIDIds" - }, - "id": 519, - "name": "Identifier", - "src": "7053:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 508, - "type": "uint256", - "value": "j" - }, - "id": 520, - "name": "Identifier", - "src": "7071:1:1" - } - ], - "id": 521, - "name": "IndexAccess", - "src": "7053:20:1" - } - ], - "id": 522, - "name": "VariableDeclarationStatement", - "src": "7028:45:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 523, - "name": "Identifier", - "src": "7095:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 524, - "name": "Identifier", - "src": "7103:14:1" - } - ], - "id": 525, - "name": "IndexAccess", - "src": "7095:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 526, - "name": "ElementaryTypeName", - "src": "7122:7:1" - } - ], - "id": 527, - "name": "ElementaryTypeNameExpression", - "src": "7122:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 528, - "name": "Literal", - "src": "7130:1:1" - } - ], - "id": 529, - "name": "FunctionCall", - "src": "7122:10:1" - } - ], - "id": 530, - "name": "BinaryOperation", - "src": "7095:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 531, - "name": "Identifier", - "src": "7137:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 532, - "name": "Identifier", - "src": "7148:14:1" - } - ], - "id": 533, - "name": "IndexAccess", - "src": "7137:26:1" - } - ], - "id": 534, - "name": "UnaryOperation", - "src": "7136:27:1" - } - ], - "id": 535, - "name": "BinaryOperation", - "src": "7095:68:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 536, - "name": "Identifier", - "src": "7187:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 537, - "name": "Identifier", - "src": "7198:14:1" - } - ], - "id": 538, - "name": "IndexAccess", - "src": "7187:26:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 539, - "name": "Literal", - "src": "7216:4:1" - } - ], - "id": 540, - "name": "Assignment", - "src": "7187:33:1" - } - ], - "id": 541, - "name": "ExpressionStatement", - "src": "7187:33:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 542, - "name": "Identifier", - "src": "7242:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 543, - "name": "Identifier", - "src": "7248:14:1" - } - ], - "id": 544, - "name": "IndexAccess", - "src": "7242:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 545, - "name": "Identifier", - "src": "7266:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 467, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 546, - "name": "Identifier", - "src": "7272:8:1" - } - ], - "id": 547, - "name": "IndexAccess", - "src": "7266:15:1" - } - ], - "id": 548, - "name": "Assignment", - "src": "7242:39:1" - } - ], - "id": 549, - "name": "ExpressionStatement", - "src": "7242:39:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 99, - "type": "function (bytes32,bytes32)", - "value": "ChildrenAdded" - }, - "id": 550, - "name": "Identifier", - "src": "7308:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 467, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 551, - "name": "Identifier", - "src": "7322:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 552, - "name": "Identifier", - "src": "7332:14:1" - } - ], - "id": 553, - "name": "FunctionCall", - "src": "7308:39:1" - } - ], - "id": 554, - "name": "EmitStatement", - "src": "7303:44:1" - } - ], - "id": 555, - "name": "Block", - "src": "7165:201:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 556, - "name": "Identifier", - "src": "7376:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 557, - "name": "Identifier", - "src": "7384:14:1" - } - ], - "id": 558, - "name": "IndexAccess", - "src": "7376:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 559, - "name": "ElementaryTypeName", - "src": "7403:7:1" - } - ], - "id": 560, - "name": "ElementaryTypeNameExpression", - "src": "7403:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 561, - "name": "Literal", - "src": "7411:1:1" - } - ], - "id": 562, - "name": "FunctionCall", - "src": "7403:10:1" - } - ], - "id": 563, - "name": "BinaryOperation", - "src": "7376:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 564, - "name": "Identifier", - "src": "7417:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 565, - "name": "Identifier", - "src": "7428:14:1" - } - ], - "id": 566, - "name": "IndexAccess", - "src": "7417:26:1" - } - ], - "id": 567, - "name": "BinaryOperation", - "src": "7376:67:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 134, - "type": "function (bytes32,bytes32)", - "value": "ChildrenErrorHasParent" - }, - "id": 568, - "name": "Identifier", - "src": "7471:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 467, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 569, - "name": "Identifier", - "src": "7494:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 570, - "name": "Identifier", - "src": "7504:14:1" - } - ], - "id": 571, - "name": "FunctionCall", - "src": "7471:48:1" - } - ], - "id": 572, - "name": "EmitStatement", - "src": "7466:53:1" - } - ], - "id": 573, - "name": "Block", - "src": "7444:94:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 127, - "type": "function (bytes32,bytes32)", - "value": "ChildrenErrorNoExistence" - }, - "id": 574, - "name": "Identifier", - "src": "7571:24:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 467, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 575, - "name": "Identifier", - "src": "7596:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 518, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 576, - "name": "Identifier", - "src": "7606:14:1" - } - ], - "id": 577, - "name": "FunctionCall", - "src": "7571:50:1" - } - ], - "id": 578, - "name": "EmitStatement", - "src": "7566:55:1" - } - ], - "id": 579, - "name": "Block", - "src": "7544:96:1" - } - ], - "id": 580, - "name": "IfStatement", - "src": "7372:268:1" - } - ], - "id": 581, - "name": "IfStatement", - "src": "7091:549:1" - } - ], - "id": 582, - "name": "Block", - "src": "7010:644:1" - } - ], - "id": 583, - "name": "ForStatement", - "src": "6970:684:1" - } - ], - "id": 584, - "name": "Block", - "src": "6956:708:1" - } - ], - "id": 585, - "name": "IfStatement", - "src": "6935:729:1" - } - ], - "id": 586, - "name": "Block", - "src": "6535:1135:1" - } - ], - "id": 587, - "name": "FunctionDefinition", - "src": "6446:1224:1" - }, - { - "attributes": { - "functionSelector": "f999be89", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "addParentGeoDID", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Adds a parent GeoDID to an already existent geoDID\n Emits a {ParentAdded} event." - }, - "id": 588, - "name": "StructuredDocumentation", - "src": "7676:117:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 661, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 589, - "name": "ElementaryTypeName", - "src": "7823:7:1" - } - ], - "id": 590, - "name": "VariableDeclaration", - "src": "7823:16:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "parentGeoDIDId", - "overrides": null, - "scope": 661, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 591, - "name": "ElementaryTypeName", - "src": "7841:7:1" - } - ], - "id": 592, - "name": "VariableDeclaration", - "src": "7841:22:1" - } - ], - "id": 593, - "name": "ParameterList", - "src": "7822:42:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 594, - "name": "ParameterList", - "src": "7872:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 595, - "name": "Identifier", - "src": "7882:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 596, - "name": "Identifier", - "src": "7890:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 597, - "name": "Identifier", - "src": "7898:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 598, - "name": "Identifier", - "src": "7913:10:1" - } - ], - "id": 599, - "name": "FunctionCall", - "src": "7913:12:1" - } - ], - "id": 600, - "name": "FunctionCall", - "src": "7890:36:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must have data supplier role to register\"", - "value": "SpatialAssets: must have data supplier role to register" - }, - "id": 601, - "name": "Literal", - "src": "7928:57:1" - } - ], - "id": 602, - "name": "FunctionCall", - "src": "7882:104:1" - } - ], - "id": 603, - "name": "ExpressionStatement", - "src": "7882:104:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841", - "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 604, - "name": "Identifier", - "src": "7996:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 605, - "name": "Identifier", - "src": "8004:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 590, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 606, - "name": "Identifier", - "src": "8012:8:1" - } - ], - "id": 607, - "name": "IndexAccess", - "src": "8004:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 608, - "name": "Identifier", - "src": "8025:10:1" - } - ], - "id": 609, - "name": "FunctionCall", - "src": "8025:12:1" - } - ], - "id": 610, - "name": "BinaryOperation", - "src": "8004:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"", - "value": "SpatialAssets: geoDIDId must be owned by its creator" - }, - "id": 611, - "name": "Literal", - "src": "8039:54:1" - } - ], - "id": 612, - "name": "FunctionCall", - "src": "7996:98:1" - } - ], - "id": 613, - "name": "ExpressionStatement", - "src": "7996:98:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_37628363356dfe049fe1dfb95b31ae659423f88203c2d0589d12bc6e2efba5fb", - "typeString": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 614, - "name": "Identifier", - "src": "8104:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 615, - "name": "Identifier", - "src": "8112:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 592, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 616, - "name": "Identifier", - "src": "8120:14:1" - } - ], - "id": 617, - "name": "IndexAccess", - "src": "8112:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 618, - "name": "ElementaryTypeName", - "src": "8139:7:1" - } - ], - "id": 619, - "name": "ElementaryTypeNameExpression", - "src": "8139:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 620, - "name": "Literal", - "src": "8147:1:1" - } - ], - "id": 621, - "name": "FunctionCall", - "src": "8139:10:1" - } - ], - "id": 622, - "name": "BinaryOperation", - "src": "8112:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\"", - "value": "SpatialAssets: parentGeoDIDId does not exist" - }, - "id": 623, - "name": "Literal", - "src": "8151:46:1" - } - ], - "id": 624, - "name": "FunctionCall", - "src": "8104:94:1" - } - ], - "id": 625, - "name": "ExpressionStatement", - "src": "8104:94:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_365c191fc2e3b7185ac24986ce31e56094d1588c72dcea7a382fe58e00565569", - "typeString": "literal_string \"SpatialAssets: geoDIDId already has a parent\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 626, - "name": "Identifier", - "src": "8208:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 627, - "name": "Identifier", - "src": "8217:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 590, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 628, - "name": "Identifier", - "src": "8228:8:1" - } - ], - "id": 629, - "name": "IndexAccess", - "src": "8217:20:1" - } - ], - "id": 630, - "name": "UnaryOperation", - "src": "8216:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e74", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: geoDIDId already has a parent\"", - "value": "SpatialAssets: geoDIDId already has a parent" - }, - "id": 631, - "name": "Literal", - "src": "8239:46:1" - } - ], - "id": 632, - "name": "FunctionCall", - "src": "8208:78:1" - } - ], - "id": 633, - "name": "ExpressionStatement", - "src": "8208:78:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2fc4c9e1419e4474d6293c8f8fe90b0fca69366a562a1be7a551c73fee1d2c1d", - "typeString": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 634, - "name": "Identifier", - "src": "8296:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 635, - "name": "Identifier", - "src": "8304:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 592, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 636, - "name": "Identifier", - "src": "8317:14:1" - } - ], - "id": 637, - "name": "IndexAccess", - "src": "8304:28:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\"", - "value": "SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)" - }, - "id": 638, - "name": "Literal", - "src": "8334:72:1" - } - ], - "id": 639, - "name": "FunctionCall", - "src": "8296:111:1" - } - ], - "id": 640, - "name": "ExpressionStatement", - "src": "8296:111:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 641, - "name": "Identifier", - "src": "8418:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 590, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 642, - "name": "Identifier", - "src": "8429:8:1" - } - ], - "id": 643, - "name": "IndexAccess", - "src": "8418:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 644, - "name": "Literal", - "src": "8441:4:1" - } - ], - "id": 645, - "name": "Assignment", - "src": "8418:27:1" - } - ], - "id": 646, - "name": "ExpressionStatement", - "src": "8418:27:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 647, - "name": "Identifier", - "src": "8455:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 590, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 648, - "name": "Identifier", - "src": "8461:8:1" - } - ], - "id": 649, - "name": "IndexAccess", - "src": "8455:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 650, - "name": "Identifier", - "src": "8473:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 592, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 651, - "name": "Identifier", - "src": "8479:14:1" - } - ], - "id": 652, - "name": "IndexAccess", - "src": "8473:21:1" - } - ], - "id": 653, - "name": "Assignment", - "src": "8455:39:1" - } - ], - "id": 654, - "name": "ExpressionStatement", - "src": "8455:39:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 92, - "type": "function (bytes32,bytes32)", - "value": "ParentAdded" - }, - "id": 655, - "name": "Identifier", - "src": "8509:11:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 590, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 656, - "name": "Identifier", - "src": "8521:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 592, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 657, - "name": "Identifier", - "src": "8531:14:1" - } - ], - "id": 658, - "name": "FunctionCall", - "src": "8509:37:1" - } - ], - "id": 659, - "name": "EmitStatement", - "src": "8504:42:1" - } - ], - "id": 660, - "name": "Block", - "src": "7872:681:1" - } - ], - "id": 661, - "name": "FunctionDefinition", - "src": "7798:755:1" - }, - { - "attributes": { - "functionSelector": "a8f904b5", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "removeChildrenGeoDIDs", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Removes childrenGeoDIDs from a geoDID\n Emits a {ChildrenRemoved} event." - }, - "id": 662, - "name": "StructuredDocumentation", - "src": "8564:108:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 775, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 663, - "name": "ElementaryTypeName", - "src": "8708:7:1" - } - ], - "id": 664, - "name": "VariableDeclaration", - "src": "8708:16:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenGeoDIDIds", - "overrides": null, - "scope": 775, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes32[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes32[]" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 665, - "name": "ElementaryTypeName", - "src": "8726:7:1" - } - ], - "id": 666, - "name": "ArrayTypeName", - "src": "8726:9:1" - } - ], - "id": 667, - "name": "VariableDeclaration", - "src": "8726:34:1" - } - ], - "id": 668, - "name": "ParameterList", - "src": "8707:54:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 669, - "name": "ParameterList", - "src": "8769:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 670, - "name": "Identifier", - "src": "8779:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 671, - "name": "Identifier", - "src": "8787:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 672, - "name": "Identifier", - "src": "8795:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 673, - "name": "Identifier", - "src": "8810:10:1" - } - ], - "id": 674, - "name": "FunctionCall", - "src": "8810:12:1" - } - ], - "id": 675, - "name": "FunctionCall", - "src": "8787:36:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must have data supplier role to register\"", - "value": "SpatialAssets: must have data supplier role to register" - }, - "id": 676, - "name": "Literal", - "src": "8825:57:1" - } - ], - "id": 677, - "name": "FunctionCall", - "src": "8779:104:1" - } - ], - "id": 678, - "name": "ExpressionStatement", - "src": "8779:104:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 679, - "name": "Identifier", - "src": "8893:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 680, - "name": "Identifier", - "src": "8901:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 664, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 681, - "name": "Identifier", - "src": "8909:8:1" - } - ], - "id": 682, - "name": "IndexAccess", - "src": "8901:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 683, - "name": "Identifier", - "src": "8922:10:1" - } - ], - "id": 684, - "name": "FunctionCall", - "src": "8922:12:1" - } - ], - "id": 685, - "name": "BinaryOperation", - "src": "8901:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: id must not have an owner yet\"", - "value": "SpatialAssets: id must not have an owner yet" - }, - "id": 686, - "name": "Literal", - "src": "8936:46:1" - } - ], - "id": 687, - "name": "FunctionCall", - "src": "8893:90:1" - } - ], - "id": 688, - "name": "ExpressionStatement", - "src": "8893:90:1" - }, - { - "attributes": { - "assignments": [ - 690 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrensLen", - "overrides": null, - "scope": 774, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 689, - "name": "ElementaryTypeName", - "src": "8994:7:1" - } - ], - "id": 690, - "name": "VariableDeclaration", - "src": "8994:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 667, - "type": "bytes32[] memory", - "value": "childrenGeoDIDIds" - }, - "id": 691, - "name": "Identifier", - "src": "9017:17:1" - } - ], - "id": 692, - "name": "MemberAccess", - "src": "9017:24:1" - } - ], - "id": 693, - "name": "VariableDeclarationStatement", - "src": "8994:47:1" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 690, - "type": "uint256", - "value": "childrensLen" - }, - "id": 694, - "name": "Identifier", - "src": "9056:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 695, - "name": "Literal", - "src": "9071:1:1" - } - ], - "id": 696, - "name": "BinaryOperation", - "src": "9056:16:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "assignments": [ - 698 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "j", - "overrides": null, - "scope": 771, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 697, - "name": "ElementaryTypeName", - "src": "9091:7:1" - } - ], - "id": 698, - "name": "VariableDeclaration", - "src": "9091:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 699, - "name": "Literal", - "src": "9101:1:1" - } - ], - "id": 700, - "name": "VariableDeclarationStatement", - "src": "9091:11:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 698, - "type": "uint256", - "value": "j" - }, - "id": 701, - "name": "Identifier", - "src": "9104:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 690, - "type": "uint256", - "value": "childrensLen" - }, - "id": 702, - "name": "Identifier", - "src": "9108:12:1" - } - ], - "id": 703, - "name": "BinaryOperation", - "src": "9104:16:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 698, - "type": "uint256", - "value": "j" - }, - "id": 704, - "name": "Identifier", - "src": "9122:1:1" - } - ], - "id": 705, - "name": "UnaryOperation", - "src": "9122:3:1" - } - ], - "id": 706, - "name": "ExpressionStatement", - "src": "9122:3:1" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 708 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenGeoDID", - "overrides": null, - "scope": 770, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 707, - "name": "ElementaryTypeName", - "src": "9145:7:1" - } - ], - "id": 708, - "name": "VariableDeclaration", - "src": "9145:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 667, - "type": "bytes32[] memory", - "value": "childrenGeoDIDIds" - }, - "id": 709, - "name": "Identifier", - "src": "9170:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 698, - "type": "uint256", - "value": "j" - }, - "id": 710, - "name": "Identifier", - "src": "9188:1:1" - } - ], - "id": 711, - "name": "IndexAccess", - "src": "9170:20:1" - } - ], - "id": 712, - "name": "VariableDeclarationStatement", - "src": "9145:45:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 713, - "name": "Identifier", - "src": "9212:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 714, - "name": "Identifier", - "src": "9220:14:1" - } - ], - "id": 715, - "name": "IndexAccess", - "src": "9212:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 716, - "name": "ElementaryTypeName", - "src": "9239:7:1" - } - ], - "id": 717, - "name": "ElementaryTypeNameExpression", - "src": "9239:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 718, - "name": "Literal", - "src": "9247:1:1" - } - ], - "id": 719, - "name": "FunctionCall", - "src": "9239:10:1" - } - ], - "id": 720, - "name": "BinaryOperation", - "src": "9212:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 721, - "name": "Identifier", - "src": "9253:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 722, - "name": "Identifier", - "src": "9264:14:1" - } - ], - "id": 723, - "name": "IndexAccess", - "src": "9253:26:1" - } - ], - "id": 724, - "name": "BinaryOperation", - "src": "9212:67:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 725, - "name": "Identifier", - "src": "9303:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 726, - "name": "Identifier", - "src": "9314:14:1" - } - ], - "id": 727, - "name": "IndexAccess", - "src": "9303:26:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 728, - "name": "Literal", - "src": "9332:5:1" - } - ], - "id": 729, - "name": "Assignment", - "src": "9303:34:1" - } - ], - "id": 730, - "name": "ExpressionStatement", - "src": "9303:34:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 731, - "name": "Identifier", - "src": "9359:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 732, - "name": "Identifier", - "src": "9365:14:1" - } - ], - "id": 733, - "name": "IndexAccess", - "src": "9359:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 734, - "name": "Identifier", - "src": "9383:14:1" - } - ], - "id": 735, - "name": "Assignment", - "src": "9359:38:1" - } - ], - "id": 736, - "name": "ExpressionStatement", - "src": "9359:38:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 113, - "type": "function (bytes32,bytes32)", - "value": "ChildrenRemoved" - }, - "id": 737, - "name": "Identifier", - "src": "9424:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 664, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 738, - "name": "Identifier", - "src": "9440:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 739, - "name": "Identifier", - "src": "9450:14:1" - } - ], - "id": 740, - "name": "FunctionCall", - "src": "9424:41:1" - } - ], - "id": 741, - "name": "EmitStatement", - "src": "9419:46:1" - } - ], - "id": 742, - "name": "Block", - "src": "9281:203:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 743, - "name": "Identifier", - "src": "9494:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 744, - "name": "Identifier", - "src": "9502:14:1" - } - ], - "id": 745, - "name": "IndexAccess", - "src": "9494:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 746, - "name": "ElementaryTypeName", - "src": "9521:7:1" - } - ], - "id": 747, - "name": "ElementaryTypeNameExpression", - "src": "9521:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 748, - "name": "Literal", - "src": "9529:1:1" - } - ], - "id": 749, - "name": "FunctionCall", - "src": "9521:10:1" - } - ], - "id": 750, - "name": "BinaryOperation", - "src": "9494:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 751, - "name": "Identifier", - "src": "9536:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 752, - "name": "Identifier", - "src": "9547:14:1" - } - ], - "id": 753, - "name": "IndexAccess", - "src": "9536:26:1" - } - ], - "id": 754, - "name": "UnaryOperation", - "src": "9535:27:1" - } - ], - "id": 755, - "name": "BinaryOperation", - "src": "9494:68:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 120, - "type": "function (bytes32,bytes32)", - "value": "ChildrenErrorNoParent" - }, - "id": 756, - "name": "Identifier", - "src": "9590:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 664, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 757, - "name": "Identifier", - "src": "9612:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 758, - "name": "Identifier", - "src": "9622:14:1" - } - ], - "id": 759, - "name": "FunctionCall", - "src": "9590:47:1" - } - ], - "id": 760, - "name": "EmitStatement", - "src": "9585:52:1" - } - ], - "id": 761, - "name": "Block", - "src": "9563:93:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 127, - "type": "function (bytes32,bytes32)", - "value": "ChildrenErrorNoExistence" - }, - "id": 762, - "name": "Identifier", - "src": "9689:24:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 664, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 763, - "name": "Identifier", - "src": "9714:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 708, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 764, - "name": "Identifier", - "src": "9724:14:1" - } - ], - "id": 765, - "name": "FunctionCall", - "src": "9689:50:1" - } - ], - "id": 766, - "name": "EmitStatement", - "src": "9684:55:1" - } - ], - "id": 767, - "name": "Block", - "src": "9662:96:1" - } - ], - "id": 768, - "name": "IfStatement", - "src": "9490:268:1" - } - ], - "id": 769, - "name": "IfStatement", - "src": "9208:550:1" - } - ], - "id": 770, - "name": "Block", - "src": "9127:645:1" - } - ], - "id": 771, - "name": "ForStatement", - "src": "9087:685:1" - } - ], - "id": 772, - "name": "Block", - "src": "9073:709:1" - } - ], - "id": 773, - "name": "IfStatement", - "src": "9052:730:1" - } - ], - "id": 774, - "name": "Block", - "src": "8769:1019:1" - } - ], - "id": 775, - "name": "FunctionDefinition", - "src": "8677:1111:1" - }, - { - "attributes": { - "functionSelector": "7c1c6c27", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "removeParentGeoDID", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev Removes a parent GeoDID from an already existent geoDID\n Emits a {ParentAdded} event." - }, - "id": 776, - "name": "StructuredDocumentation", - "src": "9796:122:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 839, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 777, - "name": "ElementaryTypeName", - "src": "9951:7:1" - } - ], - "id": 778, - "name": "VariableDeclaration", - "src": "9951:16:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "parentGeoDIDId", - "overrides": null, - "scope": 839, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 779, - "name": "ElementaryTypeName", - "src": "9969:7:1" - } - ], - "id": 780, - "name": "VariableDeclaration", - "src": "9969:22:1" - } - ], - "id": 781, - "name": "ParameterList", - "src": "9950:42:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 782, - "name": "ParameterList", - "src": "10000:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343", - "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 783, - "name": "Identifier", - "src": "10010:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1148, - "type": "function (bytes32,address) view returns (bool)", - "value": "hasRole" - }, - "id": 784, - "name": "Identifier", - "src": "10018:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 139, - "type": "bytes32", - "value": "DATA_SUPPLIER" - }, - "id": 785, - "name": "Identifier", - "src": "10026:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 786, - "name": "Identifier", - "src": "10041:10:1" - } - ], - "id": 787, - "name": "FunctionCall", - "src": "10041:12:1" - } - ], - "id": 788, - "name": "FunctionCall", - "src": "10018:36:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: must have data supplier role to register\"", - "value": "SpatialAssets: must have data supplier role to register" - }, - "id": 789, - "name": "Literal", - "src": "10056:57:1" - } - ], - "id": 790, - "name": "FunctionCall", - "src": "10010:104:1" - } - ], - "id": 791, - "name": "ExpressionStatement", - "src": "10010:104:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c", - "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 792, - "name": "Identifier", - "src": "10124:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 793, - "name": "Identifier", - "src": "10132:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 778, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 794, - "name": "Identifier", - "src": "10140:8:1" - } - ], - "id": 795, - "name": "IndexAccess", - "src": "10132:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 796, - "name": "Identifier", - "src": "10153:10:1" - } - ], - "id": 797, - "name": "FunctionCall", - "src": "10153:12:1" - } - ], - "id": 798, - "name": "BinaryOperation", - "src": "10132:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: id must not have an owner yet\"", - "value": "SpatialAssets: id must not have an owner yet" - }, - "id": 799, - "name": "Literal", - "src": "10167:46:1" - } - ], - "id": 800, - "name": "FunctionCall", - "src": "10124:90:1" - } - ], - "id": 801, - "name": "ExpressionStatement", - "src": "10124:90:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_64e6913217981af21a3600f4e8d0d455b10cb50ec24445db6949f4566f751285", - "typeString": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 802, - "name": "Identifier", - "src": "10224:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 803, - "name": "Identifier", - "src": "10232:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 780, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 804, - "name": "Identifier", - "src": "10240:14:1" - } - ], - "id": 805, - "name": "IndexAccess", - "src": "10232:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 806, - "name": "ElementaryTypeName", - "src": "10259:7:1" - } - ], - "id": 807, - "name": "ElementaryTypeNameExpression", - "src": "10259:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 808, - "name": "Literal", - "src": "10267:1:1" - } - ], - "id": 809, - "name": "FunctionCall", - "src": "10259:10:1" - } - ], - "id": 810, - "name": "BinaryOperation", - "src": "10232:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f74206578697374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\"", - "value": "SpatialAssets: GeoDID to be removed as parent does not exist" - }, - "id": 811, - "name": "Literal", - "src": "10271:62:1" - } - ], - "id": 812, - "name": "FunctionCall", - "src": "10224:110:1" - } - ], - "id": 813, - "name": "ExpressionStatement", - "src": "10224:110:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2ab9bcfb707615a94d108c25ede9d65af23320dbf20a245340508dfbee304ef0", - "typeString": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 814, - "name": "Identifier", - "src": "10344:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 815, - "name": "Identifier", - "src": "10352:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 778, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 816, - "name": "Identifier", - "src": "10363:8:1" - } - ], - "id": 817, - "name": "IndexAccess", - "src": "10352:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f7665", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\"", - "value": "SpatialAssets: GeoDID does not have a parent to remove" - }, - "id": 818, - "name": "Literal", - "src": "10374:56:1" - } - ], - "id": 819, - "name": "FunctionCall", - "src": "10344:87:1" - } - ], - "id": 820, - "name": "ExpressionStatement", - "src": "10344:87:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 821, - "name": "Identifier", - "src": "10442:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 778, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 822, - "name": "Identifier", - "src": "10453:8:1" - } - ], - "id": 823, - "name": "IndexAccess", - "src": "10442:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 824, - "name": "Literal", - "src": "10465:5:1" - } - ], - "id": 825, - "name": "Assignment", - "src": "10442:28:1" - } - ], - "id": 826, - "name": "ExpressionStatement", - "src": "10442:28:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 827, - "name": "Identifier", - "src": "10480:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 778, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 828, - "name": "Identifier", - "src": "10486:8:1" - } - ], - "id": 829, - "name": "IndexAccess", - "src": "10480:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 778, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 830, - "name": "Identifier", - "src": "10498:8:1" - } - ], - "id": 831, - "name": "Assignment", - "src": "10480:26:1" - } - ], - "id": 832, - "name": "ExpressionStatement", - "src": "10480:26:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 106, - "type": "function (bytes32,bytes32)", - "value": "ParentRemoved" - }, - "id": 833, - "name": "Identifier", - "src": "10530:13:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 778, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 834, - "name": "Identifier", - "src": "10544:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 780, - "type": "bytes32", - "value": "parentGeoDIDId" - }, - "id": 835, - "name": "Identifier", - "src": "10554:14:1" - } - ], - "id": 836, - "name": "FunctionCall", - "src": "10530:39:1" - } - ], - "id": 837, - "name": "EmitStatement", - "src": "10525:44:1" - } - ], - "id": 838, - "name": "Block", - "src": "10000:576:1" - } - ], - "id": 839, - "name": "FunctionDefinition", - "src": "9923:653:1" - }, - { - "attributes": { - "functionSelector": "0e437b1c", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "deactivateSpatialAsset", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "text": " @dev De-registers a spatial asset" - }, - "id": 840, - "name": "StructuredDocumentation", - "src": "10582:52:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "geoDIDId", - "overrides": null, - "scope": 981, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 841, - "name": "ElementaryTypeName", - "src": "10672:7:1" - } - ], - "id": 842, - "name": "VariableDeclaration", - "src": "10672:16:1" - }, - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenToRemove", - "overrides": null, - "scope": 981, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes32[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "bytes32[]" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 843, - "name": "ElementaryTypeName", - "src": "10690:7:1" - } - ], - "id": 844, - "name": "ArrayTypeName", - "src": "10690:9:1" - } - ], - "id": 845, - "name": "VariableDeclaration", - "src": "10690:33:1" - } - ], - "id": 846, - "name": "ParameterList", - "src": "10671:53:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 847, - "name": "ParameterList", - "src": "10732:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9236a874bf5a6a62bd70349ebeda081a8e8ed50334b7a53f944cd4f8601c274c", - "typeString": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\"" - } - ], - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 848, - "name": "Identifier", - "src": "10742:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 849, - "name": "Identifier", - "src": "10763:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 850, - "name": "Identifier", - "src": "10771:8:1" - } - ], - "id": 851, - "name": "IndexAccess", - "src": "10763:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [ - null - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - null - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1666, - "type": "function () view returns (address payable)", - "value": "_msgSender" - }, - "id": 852, - "name": "Identifier", - "src": "10784:10:1" - } - ], - "id": 853, - "name": "FunctionCall", - "src": "10784:12:1" - } - ], - "id": 854, - "name": "BinaryOperation", - "src": "10763:33:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c204173736574", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\"", - "value": "SpatialAssets: caller is not owner of the Spatial Asset" - }, - "id": 855, - "name": "Literal", - "src": "10797:57:1" - } - ], - "id": 856, - "name": "FunctionCall", - "src": "10742:122:1" - } - ], - "id": 857, - "name": "ExpressionStatement", - "src": "10742:122:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 858, - "name": "Identifier", - "src": "10874:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 859, - "name": "Identifier", - "src": "10882:8:1" - } - ], - "id": 860, - "name": "IndexAccess", - "src": "10874:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 861, - "name": "ElementaryTypeName", - "src": "10894:7:1" - } - ], - "id": 862, - "name": "ElementaryTypeNameExpression", - "src": "10894:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 863, - "name": "Literal", - "src": "10902:1:1" - } - ], - "id": 864, - "name": "FunctionCall", - "src": "10894:10:1" - } - ], - "id": 865, - "name": "Assignment", - "src": "10874:30:1" - } - ], - "id": 866, - "name": "ExpressionStatement", - "src": "10874:30:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 165, - "type": "mapping(bytes32 => bytes32)", - "value": "_externalStorage" - }, - "id": 867, - "name": "Identifier", - "src": "10914:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 868, - "name": "Identifier", - "src": "10931:8:1" - } - ], - "id": 869, - "name": "IndexAccess", - "src": "10914:26:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"\"", - "value": "" - }, - "id": 870, - "name": "Literal", - "src": "10943:2:1" - } - ], - "id": 871, - "name": "Assignment", - "src": "10914:31:1" - } - ], - "id": 872, - "name": "ExpressionStatement", - "src": "10914:31:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 149, - "type": "mapping(bytes32 => bytes32)", - "value": "_cids" - }, - "id": 873, - "name": "Identifier", - "src": "10955:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 874, - "name": "Identifier", - "src": "10961:8:1" - } - ], - "id": 875, - "name": "IndexAccess", - "src": "10955:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"\"", - "value": "" - }, - "id": 876, - "name": "Literal", - "src": "10973:2:1" - } - ], - "id": 877, - "name": "Assignment", - "src": "10955:20:1" - } - ], - "id": 878, - "name": "ExpressionStatement", - "src": "10955:20:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 879, - "name": "Identifier", - "src": "10985:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 880, - "name": "Identifier", - "src": "10996:8:1" - } - ], - "id": 881, - "name": "IndexAccess", - "src": "10985:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 882, - "name": "Literal", - "src": "11008:5:1" - } - ], - "id": 883, - "name": "Assignment", - "src": "10985:28:1" - } - ], - "id": 884, - "name": "ExpressionStatement", - "src": "10985:28:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 885, - "name": "Identifier", - "src": "11023:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 886, - "name": "Identifier", - "src": "11029:8:1" - } - ], - "id": 887, - "name": "IndexAccess", - "src": "11023:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"\"", - "value": "" - }, - "id": 888, - "name": "Literal", - "src": "11041:2:1" - } - ], - "id": 889, - "name": "Assignment", - "src": "11023:20:1" - } - ], - "id": 890, - "name": "ExpressionStatement", - "src": "11023:20:1" - }, - { - "attributes": { - "assignments": [ - 892 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrensLen", - "overrides": null, - "scope": 980, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 891, - "name": "ElementaryTypeName", - "src": "11054:7:1" - } - ], - "id": 892, - "name": "VariableDeclaration", - "src": "11054:20:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 845, - "type": "bytes32[] memory", - "value": "childrenToRemove" - }, - "id": 893, - "name": "Identifier", - "src": "11077:16:1" - } - ], - "id": 894, - "name": "MemberAccess", - "src": "11077:23:1" - } - ], - "id": 895, - "name": "VariableDeclarationStatement", - "src": "11054:46:1" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 892, - "type": "uint256", - "value": "childrensLen" - }, - "id": 896, - "name": "Identifier", - "src": "11115:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 897, - "name": "Literal", - "src": "11130:1:1" - } - ], - "id": 898, - "name": "BinaryOperation", - "src": "11115:16:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "assignments": [ - 900 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "j", - "overrides": null, - "scope": 973, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 899, - "name": "ElementaryTypeName", - "src": "11150:7:1" - } - ], - "id": 900, - "name": "VariableDeclaration", - "src": "11150:9:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 901, - "name": "Literal", - "src": "11160:1:1" - } - ], - "id": 902, - "name": "VariableDeclarationStatement", - "src": "11150:11:1" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 900, - "type": "uint256", - "value": "j" - }, - "id": 903, - "name": "Identifier", - "src": "11163:1:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 892, - "type": "uint256", - "value": "childrensLen" - }, - "id": 904, - "name": "Identifier", - "src": "11167:12:1" - } - ], - "id": 905, - "name": "BinaryOperation", - "src": "11163:16:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 900, - "type": "uint256", - "value": "j" - }, - "id": 906, - "name": "Identifier", - "src": "11181:1:1" - } - ], - "id": 907, - "name": "UnaryOperation", - "src": "11181:3:1" - } - ], - "id": 908, - "name": "ExpressionStatement", - "src": "11181:3:1" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 910 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "childrenGeoDID", - "overrides": null, - "scope": 972, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 909, - "name": "ElementaryTypeName", - "src": "11204:7:1" - } - ], - "id": 910, - "name": "VariableDeclaration", - "src": "11204:22:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 845, - "type": "bytes32[] memory", - "value": "childrenToRemove" - }, - "id": 911, - "name": "Identifier", - "src": "11229:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 900, - "type": "uint256", - "value": "j" - }, - "id": 912, - "name": "Identifier", - "src": "11246:1:1" - } - ], - "id": 913, - "name": "IndexAccess", - "src": "11229:19:1" - } - ], - "id": 914, - "name": "VariableDeclarationStatement", - "src": "11204:44:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 915, - "name": "Identifier", - "src": "11270:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 916, - "name": "Identifier", - "src": "11278:14:1" - } - ], - "id": 917, - "name": "IndexAccess", - "src": "11270:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 918, - "name": "ElementaryTypeName", - "src": "11297:7:1" - } - ], - "id": 919, - "name": "ElementaryTypeNameExpression", - "src": "11297:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 920, - "name": "Literal", - "src": "11305:1:1" - } - ], - "id": 921, - "name": "FunctionCall", - "src": "11297:10:1" - } - ], - "id": 922, - "name": "BinaryOperation", - "src": "11270:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 923, - "name": "Identifier", - "src": "11311:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 924, - "name": "Identifier", - "src": "11322:14:1" - } - ], - "id": 925, - "name": "IndexAccess", - "src": "11311:26:1" - } - ], - "id": 926, - "name": "BinaryOperation", - "src": "11270:67:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 927, - "name": "Identifier", - "src": "11361:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 928, - "name": "Identifier", - "src": "11372:14:1" - } - ], - "id": 929, - "name": "IndexAccess", - "src": "11361:26:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "66616c7365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "false" - }, - "id": 930, - "name": "Literal", - "src": "11390:5:1" - } - ], - "id": 931, - "name": "Assignment", - "src": "11361:34:1" - } - ], - "id": 932, - "name": "ExpressionStatement", - "src": "11361:34:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 161, - "type": "mapping(bytes32 => bytes32)", - "value": "_root" - }, - "id": 933, - "name": "Identifier", - "src": "11417:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 934, - "name": "Identifier", - "src": "11423:14:1" - } - ], - "id": 935, - "name": "IndexAccess", - "src": "11417:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 936, - "name": "Identifier", - "src": "11441:14:1" - } - ], - "id": 937, - "name": "Assignment", - "src": "11417:38:1" - } - ], - "id": 938, - "name": "ExpressionStatement", - "src": "11417:38:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 113, - "type": "function (bytes32,bytes32)", - "value": "ChildrenRemoved" - }, - "id": 939, - "name": "Identifier", - "src": "11482:15:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 940, - "name": "Identifier", - "src": "11498:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 941, - "name": "Identifier", - "src": "11508:14:1" - } - ], - "id": 942, - "name": "FunctionCall", - "src": "11482:41:1" - } - ], - "id": 943, - "name": "EmitStatement", - "src": "11477:46:1" - } - ], - "id": 944, - "name": "Block", - "src": "11339:203:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 945, - "name": "Identifier", - "src": "11553:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 946, - "name": "Identifier", - "src": "11561:14:1" - } - ], - "id": 947, - "name": "IndexAccess", - "src": "11553:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": null - }, - "id": 948, - "name": "ElementaryTypeName", - "src": "11580:7:1" - } - ], - "id": 949, - "name": "ElementaryTypeNameExpression", - "src": "11580:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 950, - "name": "Literal", - "src": "11588:1:1" - } - ], - "id": 951, - "name": "FunctionCall", - "src": "11580:10:1" - } - ], - "id": 952, - "name": "BinaryOperation", - "src": "11553:37:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 953, - "name": "Identifier", - "src": "11595:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 954, - "name": "Identifier", - "src": "11606:14:1" - } - ], - "id": 955, - "name": "IndexAccess", - "src": "11595:26:1" - } - ], - "id": 956, - "name": "UnaryOperation", - "src": "11594:27:1" - } - ], - "id": 957, - "name": "BinaryOperation", - "src": "11553:68:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 120, - "type": "function (bytes32,bytes32)", - "value": "ChildrenErrorNoParent" - }, - "id": 958, - "name": "Identifier", - "src": "11649:21:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 959, - "name": "Identifier", - "src": "11671:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 960, - "name": "Identifier", - "src": "11681:14:1" - } - ], - "id": 961, - "name": "FunctionCall", - "src": "11649:47:1" - } - ], - "id": 962, - "name": "EmitStatement", - "src": "11644:52:1" - } - ], - "id": 963, - "name": "Block", - "src": "11622:93:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 127, - "type": "function (bytes32,bytes32)", - "value": "ChildrenErrorNoExistence" - }, - "id": 964, - "name": "Identifier", - "src": "11748:24:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 965, - "name": "Identifier", - "src": "11773:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 910, - "type": "bytes32", - "value": "childrenGeoDID" - }, - "id": 966, - "name": "Identifier", - "src": "11783:14:1" - } - ], - "id": 967, - "name": "FunctionCall", - "src": "11748:50:1" - } - ], - "id": 968, - "name": "EmitStatement", - "src": "11743:55:1" - } - ], - "id": 969, - "name": "Block", - "src": "11721:96:1" - } - ], - "id": 970, - "name": "IfStatement", - "src": "11549:268:1" - } - ], - "id": 971, - "name": "IfStatement", - "src": "11266:551:1" - } - ], - "id": 972, - "name": "Block", - "src": "11186:645:1" - } - ], - "id": 973, - "name": "ForStatement", - "src": "11146:685:1" - } - ], - "id": 974, - "name": "Block", - "src": "11132:709:1" - } - ], - "id": 975, - "name": "IfStatement", - "src": "11111:730:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "tryCall": false, - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 85, - "type": "function (bytes32)", - "value": "SpatialAssetDeactivated" - }, - "id": 976, - "name": "Identifier", - "src": "11856:23:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 842, - "type": "bytes32", - "value": "geoDIDId" - }, - "id": 977, - "name": "Identifier", - "src": "11880:8:1" - } - ], - "id": 978, - "name": "FunctionCall", - "src": "11856:33:1" - } - ], - "id": 979, - "name": "EmitStatement", - "src": "11851:38:1" - } - ], - "id": 980, - "name": "Block", - "src": "10732:1164:1" - } - ], - "id": 981, - "name": "FunctionDefinition", - "src": "10640:1256:1" - }, - { - "attributes": { - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_setURI", - "overrides": null, - "scope": 1073, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "text": " @dev Sets a new URI for all the spatial asset types" - }, - "id": 982, - "name": "StructuredDocumentation", - "src": "11904:70:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "newuri", - "overrides": null, - "scope": 992, - "stateVariable": false, - "storageLocation": "memory", - "type": "string", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 983, - "name": "ElementaryTypeName", - "src": "11996:6:1" - } - ], - "id": 984, - "name": "VariableDeclaration", - "src": "11996:20:1" - } - ], - "id": 985, - "name": "ParameterList", - "src": "11995:22:1" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 986, - "name": "ParameterList", - "src": "12027:0:1" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "string storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 141, - "type": "string storage ref", - "value": "_uri" - }, - "id": 987, - "name": "Identifier", - "src": "12037:4:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 984, - "type": "string memory", - "value": "newuri" - }, - "id": 988, - "name": "Identifier", - "src": "12044:6:1" - } - ], - "id": 989, - "name": "Assignment", - "src": "12037:13:1" - } - ], - "id": 990, - "name": "ExpressionStatement", - "src": "12037:13:1" - } - ], - "id": 991, - "name": "Block", - "src": "12027:30:1" - } - ], - "id": 992, - "name": "FunctionDefinition", - "src": "11979:78:1" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "1dc2a7b0", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "idToOwner", - "overrides": null, - "scope": 1073, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "id", - "overrides": null, - "scope": 1004, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 993, - "name": "ElementaryTypeName", - "src": "12082:7:1" - } - ], - "id": 994, - "name": "VariableDeclaration", - "src": "12082:10:1" - } - ], - "id": 995, - "name": "ParameterList", - "src": "12081:12:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1004, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 996, - "name": "ElementaryTypeName", - "src": "12115:7:1" - } - ], - "id": 997, - "name": "VariableDeclaration", - "src": "12115:7:1" - } - ], - "id": 998, - "name": "ParameterList", - "src": "12114:9:1" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 998 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 145, - "type": "mapping(bytes32 => address)", - "value": "_owners" - }, - "id": 999, - "name": "Identifier", - "src": "12141:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 994, - "type": "bytes32", - "value": "id" - }, - "id": 1000, - "name": "Identifier", - "src": "12149:2:1" - } - ], - "id": 1001, - "name": "IndexAccess", - "src": "12141:11:1" - } - ], - "id": 1002, - "name": "Return", - "src": "12134:18:1" - } - ], - "id": 1003, - "name": "Block", - "src": "12124:35:1" - } - ], - "id": 1004, - "name": "FunctionDefinition", - "src": "12063:96:1" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "c66f70cc", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "idToCid", - "overrides": null, - "scope": 1073, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "id", - "overrides": null, - "scope": 1016, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1005, - "name": "ElementaryTypeName", - "src": "12182:7:1" - } - ], - "id": 1006, - "name": "VariableDeclaration", - "src": "12182:10:1" - } - ], - "id": 1007, - "name": "ParameterList", - "src": "12181:12:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1016, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1008, - "name": "ElementaryTypeName", - "src": "12215:7:1" - } - ], - "id": 1009, - "name": "VariableDeclaration", - "src": "12215:7:1" - } - ], - "id": 1010, - "name": "ParameterList", - "src": "12214:9:1" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1010 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 149, - "type": "mapping(bytes32 => bytes32)", - "value": "_cids" - }, - "id": 1011, - "name": "Identifier", - "src": "12241:5:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1006, - "type": "bytes32", - "value": "id" - }, - "id": 1012, - "name": "Identifier", - "src": "12247:2:1" - } - ], - "id": 1013, - "name": "IndexAccess", - "src": "12241:9:1" - } - ], - "id": 1014, - "name": "Return", - "src": "12234:16:1" - } - ], - "id": 1015, - "name": "Block", - "src": "12224:33:1" - } - ], - "id": 1016, - "name": "FunctionDefinition", - "src": "12165:92:1" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "0bfa194d", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "idToCanBeParent", - "overrides": null, - "scope": 1073, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "id", - "overrides": null, - "scope": 1028, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1017, - "name": "ElementaryTypeName", - "src": "12288:7:1" - } - ], - "id": 1018, - "name": "VariableDeclaration", - "src": "12288:10:1" - } - ], - "id": 1019, - "name": "ParameterList", - "src": "12287:12:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1028, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1020, - "name": "ElementaryTypeName", - "src": "12321:4:1" - } - ], - "id": 1021, - "name": "VariableDeclaration", - "src": "12321:4:1" - } - ], - "id": 1022, - "name": "ParameterList", - "src": "12320:6:1" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1022 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 157, - "type": "mapping(bytes32 => bool)", - "value": "_canBeParent" - }, - "id": 1023, - "name": "Identifier", - "src": "12344:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1018, - "type": "bytes32", - "value": "id" - }, - "id": 1024, - "name": "Identifier", - "src": "12357:2:1" - } - ], - "id": 1025, - "name": "IndexAccess", - "src": "12344:16:1" - } - ], - "id": 1026, - "name": "Return", - "src": "12337:23:1" - } - ], - "id": 1027, - "name": "Block", - "src": "12327:40:1" - } - ], - "id": 1028, - "name": "FunctionDefinition", - "src": "12263:104:1" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "092e9f25", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "idToHasParent", - "overrides": null, - "scope": 1073, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "id", - "overrides": null, - "scope": 1040, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1029, - "name": "ElementaryTypeName", - "src": "12396:7:1" - } - ], - "id": 1030, - "name": "VariableDeclaration", - "src": "12396:10:1" - } - ], - "id": 1031, - "name": "ParameterList", - "src": "12395:12:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1040, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1032, - "name": "ElementaryTypeName", - "src": "12429:4:1" - } - ], - "id": 1033, - "name": "VariableDeclaration", - "src": "12429:4:1" - } - ], - "id": 1034, - "name": "ParameterList", - "src": "12428:6:1" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1034 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 153, - "type": "mapping(bytes32 => bool)", - "value": "_hasParent" - }, - "id": 1035, - "name": "Identifier", - "src": "12452:10:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1030, - "type": "bytes32", - "value": "id" - }, - "id": 1036, - "name": "Identifier", - "src": "12463:2:1" - } - ], - "id": 1037, - "name": "IndexAccess", - "src": "12452:14:1" - } - ], - "id": 1038, - "name": "Return", - "src": "12445:21:1" - } - ], - "id": 1039, - "name": "Block", - "src": "12435:38:1" - } - ], - "id": 1040, - "name": "FunctionDefinition", - "src": "12373:100:1" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "84f42912", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "idToExternalStorage", - "overrides": null, - "scope": 1073, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "id", - "overrides": null, - "scope": 1052, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1041, - "name": "ElementaryTypeName", - "src": "12508:7:1" - } - ], - "id": 1042, - "name": "VariableDeclaration", - "src": "12508:10:1" - } - ], - "id": 1043, - "name": "ParameterList", - "src": "12507:12:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1052, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1044, - "name": "ElementaryTypeName", - "src": "12541:7:1" - } - ], - "id": 1045, - "name": "VariableDeclaration", - "src": "12541:7:1" - } - ], - "id": 1046, - "name": "ParameterList", - "src": "12540:9:1" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1046 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bytes32" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 165, - "type": "mapping(bytes32 => bytes32)", - "value": "_externalStorage" - }, - "id": 1047, - "name": "Identifier", - "src": "12567:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1042, - "type": "bytes32", - "value": "id" - }, - "id": 1048, - "name": "Identifier", - "src": "12584:2:1" - } - ], - "id": 1049, - "name": "IndexAccess", - "src": "12567:20:1" - } - ], - "id": 1050, - "name": "Return", - "src": "12560:27:1" - } - ], - "id": 1051, - "name": "Block", - "src": "12550:44:1" - } - ], - "id": 1052, - "name": "FunctionDefinition", - "src": "12479:115:1" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "8d0a9bff", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "allowedStorages", - "overrides": null, - "scope": 1073, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "offChainStorage", - "overrides": null, - "scope": 1064, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 1053, - "name": "ElementaryTypeName", - "src": "12625:7:1" - } - ], - "id": 1054, - "name": "VariableDeclaration", - "src": "12625:23:1" - } - ], - "id": 1055, - "name": "ParameterList", - "src": "12624:25:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1064, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 1056, - "name": "ElementaryTypeName", - "src": "12671:4:1" - } - ], - "id": 1057, - "name": "VariableDeclaration", - "src": "12671:4:1" - } - ], - "id": 1058, - "name": "ParameterList", - "src": "12670:6:1" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1058 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 169, - "type": "mapping(bytes32 => bool)", - "value": "_allowedStorages" - }, - "id": 1059, - "name": "Identifier", - "src": "12694:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1054, - "type": "bytes32", - "value": "offChainStorage" - }, - "id": 1060, - "name": "Identifier", - "src": "12711:15:1" - } - ], - "id": 1061, - "name": "IndexAccess", - "src": "12694:33:1" - } - ], - "id": 1062, - "name": "Return", - "src": "12687:40:1" - } - ], - "id": 1063, - "name": "Block", - "src": "12677:57:1" - } - ], - "id": 1064, - "name": "FunctionDefinition", - "src": "12600:134:1" - }, - { - "attributes": { - "documentation": null, - "functionSelector": "eac989f8", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "uri", - "overrides": null, - "scope": 1073, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 1065, - "name": "ParameterList", - "src": "12752:2:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "mutability": "mutable", - "name": "", - "overrides": null, - "scope": 1072, - "stateVariable": false, - "storageLocation": "memory", - "type": "string", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 1066, - "name": "ElementaryTypeName", - "src": "12776:6:1" - } - ], - "id": 1067, - "name": "VariableDeclaration", - "src": "12776:13:1" - } - ], - "id": 1068, - "name": "ParameterList", - "src": "12775:15:1" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 1068 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 141, - "type": "string storage ref", - "value": "_uri" - }, - "id": 1069, - "name": "Identifier", - "src": "12808:4:1" - } - ], - "id": 1070, - "name": "Return", - "src": "12801:11:1" - } - ], - "id": 1071, - "name": "Block", - "src": "12791:28:1" - } - ], - "id": 1072, - "name": "FunctionDefinition", - "src": "12740:79:1" - } - ], - "id": 1073, - "name": "ContractDefinition", - "src": "539:12282:1" - } - ], - "id": 1074, - "name": "SourceUnit", - "src": "42:12780:1" - }, - "compiler": { - "name": "solc", - "version": "0.6.12+commit.27d51765.Emscripten.clang" - }, - "networks": { - "3": { - "events": { - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - "0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - "0xa6cc161f6b65bbf394777cb57fb5f3d43cce56acfa59850ab99594ef35b99aab": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0x60d3fb6a4380f21d92b1cbafb25d8d0f693bc9e359cafc542bc0d01a0732a936": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0x33974780998cd0a6a121380888197f6af20340bc338905596e0c8819ae461a7b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "childrenGeoDIDId", - "type": "uint256" - } - ], - "name": "ChildrenAdded", - "type": "event" - }, - "0xd9446a40bb30eb7c68d45f553a8344a460470e6120827bbaa22bb731e455c3ed": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "childrenGeoDIDId", - "type": "uint256" - } - ], - "name": "ChildrenRemoved", - "type": "event" - }, - "0x00a67c7413e7cbd6fa0dfd556b6bfb0844428500ee38687ae6c65ecf371df4e2": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "parentGeoDIDId", - "type": "uint256" - } - ], - "name": "ParentAdded", - "type": "event" - }, - "0x8b572be57bab095e1edbcb8666bc126bab7989981d0724d3a8d44966f02e6583": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "parentGeoDIDId", - "type": "uint256" - } - ], - "name": "ParentRemoved", - "type": "event" - }, - "0x6958d9a5b92b38869062a9e904dc1f2343e1f6b7cd07d5bee19a677b1f253bd2": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "childrenToRemove", - "type": "uint256[]" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0xc3c858e6322b126c4de2de41f4a8f82707e31807c2f72d3a9e3a1b6552cfcdc5": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "cid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bool", - "name": "root", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "canBeParent", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0x0cc103a5869a49c97e798d0ac77b8483c91e7df0b64be636187cba93b7ae367d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "cid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "root", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "canBeParent", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0xc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenAdded", - "type": "event" - }, - "0x64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenRemoved", - "type": "event" - }, - "0xe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d06": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "ParentAdded", - "type": "event" - }, - "0x09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca9": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "ParentRemoved", - "type": "event" - }, - "0xfca200adc1021dfcfba93d50e56819ff7cd406f40d8fb784caf11d8c114a78fd": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32[]", - "name": "childrenToRemove", - "type": "bytes32[]" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0x63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "cid", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bool", - "name": "canBeParent", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0xf02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0xc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorHasParent", - "type": "event" - }, - "0x9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda0466": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorNoExistence", - "type": "event" - }, - "0x69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorNoParent", - "type": "event" - } - }, - "links": {}, - "address": "0xD57a165739C1717A1AfDb1C4B2c80f4b87d57933", - "transactionHash": "0x758b4849270a601b9e824ed832cbc64d461b7500e90323bb505152a7b808fb03" - }, - "333": { - "events": { - "0x33974780998cd0a6a121380888197f6af20340bc338905596e0c8819ae461a7b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "childrenGeoDIDId", - "type": "uint256" - } - ], - "name": "ChildrenAdded", - "type": "event" - }, - "0xd9446a40bb30eb7c68d45f553a8344a460470e6120827bbaa22bb731e455c3ed": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "childrenGeoDIDId", - "type": "uint256" - } - ], - "name": "ChildrenRemoved", - "type": "event" - }, - "0x00a67c7413e7cbd6fa0dfd556b6bfb0844428500ee38687ae6c65ecf371df4e2": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "parentGeoDIDId", - "type": "uint256" - } - ], - "name": "ParentAdded", - "type": "event" - }, - "0x8b572be57bab095e1edbcb8666bc126bab7989981d0724d3a8d44966f02e6583": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "parentGeoDIDId", - "type": "uint256" - } - ], - "name": "ParentRemoved", - "type": "event" - }, - "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - "0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - "0xa6cc161f6b65bbf394777cb57fb5f3d43cce56acfa59850ab99594ef35b99aab": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0xab0f458e596764e6af15283b8bc76a316532e1149acd758550d12f9041362f78": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "cid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0xfacd7723c5f086c22b992e5f37de5ae73ad1f38829f0636b23d493040e1470b0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "cid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bool", - "name": "root", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0x6958d9a5b92b38869062a9e904dc1f2343e1f6b7cd07d5bee19a677b1f253bd2": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "childrenToRemove", - "type": "uint256[]" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0xc2978c9c04ebd4422d798a4cd3e559a4a40d60aa4cead5bafe79a0278fc9ef37": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "cid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bool", - "name": "root", - "type": "bool" - }, - { - "indexed": false, - "internalType": "string", - "name": "geoDIDtype", - "type": "string" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0xc3c858e6322b126c4de2de41f4a8f82707e31807c2f72d3a9e3a1b6552cfcdc5": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "cid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bool", - "name": "root", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "canBeParent", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0x0cc103a5869a49c97e798d0ac77b8483c91e7df0b64be636187cba93b7ae367d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "geoDIDId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "cid", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "root", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "canBeParent", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0xc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenAdded", - "type": "event" - }, - "0x64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenRemoved", - "type": "event" - }, - "0xe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d06": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "ParentAdded", - "type": "event" - }, - "0x09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca9": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "parentGeoDIDId", - "type": "bytes32" - } - ], - "name": "ParentRemoved", - "type": "event" - }, - "0xfca200adc1021dfcfba93d50e56819ff7cd406f40d8fb784caf11d8c114a78fd": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32[]", - "name": "childrenToRemove", - "type": "bytes32[]" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0x63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "cid", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "offChainStorage", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bool", - "name": "canBeParent", - "type": "bool" - } - ], - "name": "SpatialAssetRegistered", - "type": "event" - }, - "0xf02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - } - ], - "name": "SpatialAssetDeactivated", - "type": "event" - }, - "0xc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorHasParent", - "type": "event" - }, - "0x9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda0466": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorNoExistence", - "type": "event" - }, - "0x69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "geoDIDId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "childrenGeoDIDId", - "type": "bytes32" - } - ], - "name": "ChildrenErrorNoParent", - "type": "event" - } - }, - "links": {}, - "address": "0xCfEB869F69431e42cdB54A4F4f105C19C080A601", - "transactionHash": "0x126672783b76dd30253aa8f7e0fdf5d1384fac33679d57c92c3db20d360aa027" - } - }, - "schemaVersion": "3.3.4", - "updatedAt": "2021-03-29T15:19:40.270Z", - "networkType": "ethereum", - "devdoc": { - "details": "{SpatialAssets} registry This contract uses {AccessControl} to lock permissioned functions using the different roles - head to its documentation for details. The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant 'DATA_SUPPLIER' roles to other accounts", - "events": { - "ChildrenAdded(bytes32,bytes32)": { - "details": "Emitted when a children geodid is added to a node" - }, - "ChildrenErrorHasParent(bytes32,bytes32)": { - "details": "Emitted when a children geodid already has a parent but shouldn't have" - }, - "ChildrenErrorNoExistence(bytes32,bytes32)": { - "details": "Emitted when a children geodid does not exist" - }, - "ChildrenErrorNoParent(bytes32,bytes32)": { - "details": "Emitted when a children geodid does not have a parent when trying to remove it from a parent" - }, - "ChildrenRemoved(bytes32,bytes32)": { - "details": "Emitted when a children geodid is removed from a node" - }, - "ParentAdded(bytes32,bytes32)": { - "details": "Emitted when a parent geodid is added to a node" - }, - "ParentRemoved(bytes32,bytes32)": { - "details": "Emitted when a parent geodid is removed from a node" - }, - "SpatialAssetDeactivated(bytes32)": { - "details": "Emitted when Spatial Assets of id `id` are deactivated." - }, - "SpatialAssetRegistered(address,bytes32,bytes32,bytes32,bytes32,bool)": { - "details": "Emitted when Spatial Assets of id `id` are transferred to `to``." - } - }, - "kind": "dev", - "methods": { - "addChildrenGeoDIDs(bytes32,bytes32[])": { - "details": "Adds children GeoDIDs to an already existent geoDID Emits a {ChildrenAdded} event." - }, - "addParentGeoDID(bytes32,bytes32)": { - "details": "Adds a parent GeoDID to an already existent geoDID Emits a {ParentAdded} event." - }, - "constructor": { - "details": "Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that deploys the contract." - }, - "deactivateSpatialAsset(bytes32,bytes32[])": { - "details": "De-registers a spatial asset" - }, - "disableStorage(bytes32)": { - "details": "Disables an existing storage" - }, - "enableStorage(bytes32)": { - "details": "Registers a new storage that can accept GeoDID document creation" - }, - "getRoleAdmin(bytes32)": { - "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." - }, - "getRoleMember(bytes32,uint256)": { - "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." - }, - "getRoleMemberCount(bytes32)": { - "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." - }, - "grantRole(bytes32,address)": { - "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role." - }, - "hasRole(bytes32,address)": { - "details": "Returns `true` if `account` has been granted `role`." - }, - "registerRole()": { - "details": "Registers a new user with the ability to register a spatial asset." - }, - "registerSpatialAsset(address,bytes32,bytes32,bytes32[],bytes32,bytes32,uint256)": { - "details": "Registers one spatial asset with external storage 'data' and assigns them to `account`. Emits a {SpatialAssetRegistered} event." - }, - "removeChildrenGeoDIDs(bytes32,bytes32[])": { - "details": "Removes childrenGeoDIDs from a geoDID Emits a {ChildrenRemoved} event." - }, - "removeParentGeoDID(bytes32,bytes32)": { - "details": "Removes a parent GeoDID from an already existent geoDID Emits a {ParentAdded} event." - }, - "renounceRole(bytes32,address)": { - "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`." - }, - "revokeRole(bytes32,address)": { - "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } -} \ No newline at end of file diff --git a/legacy/packages/subgraph/docs/try.graphql b/legacy/packages/subgraph/docs/try.graphql deleted file mode 100644 index 6986329..0000000 --- a/legacy/packages/subgraph/docs/try.graphql +++ /dev/null @@ -1,22 +0,0 @@ -{ - geoDIDs { - id - owner - bytes32hash - bytes32hashWithQM - errors - cid - storage - root - isRoot - parent - edges { - id - childGeoDID { - id - } - } - active - type - } -} diff --git a/legacy/packages/subgraph/generated/SpatialAssets/SpatialAssets.ts b/legacy/packages/subgraph/generated/SpatialAssets/SpatialAssets.ts deleted file mode 100644 index 8d5722b..0000000 --- a/legacy/packages/subgraph/generated/SpatialAssets/SpatialAssets.ts +++ /dev/null @@ -1,1026 +0,0 @@ -// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. - -import { - ethereum, - JSONValue, - TypedMap, - Entity, - Bytes, - Address, - BigInt -} from "@graphprotocol/graph-ts"; - -export class ChildrenAdded extends ethereum.Event { - get params(): ChildrenAdded__Params { - return new ChildrenAdded__Params(this); - } -} - -export class ChildrenAdded__Params { - _event: ChildrenAdded; - - constructor(event: ChildrenAdded) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get childrenGeoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class ChildrenErrorHasParent extends ethereum.Event { - get params(): ChildrenErrorHasParent__Params { - return new ChildrenErrorHasParent__Params(this); - } -} - -export class ChildrenErrorHasParent__Params { - _event: ChildrenErrorHasParent; - - constructor(event: ChildrenErrorHasParent) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get childrenGeoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class ChildrenErrorNoExistence extends ethereum.Event { - get params(): ChildrenErrorNoExistence__Params { - return new ChildrenErrorNoExistence__Params(this); - } -} - -export class ChildrenErrorNoExistence__Params { - _event: ChildrenErrorNoExistence; - - constructor(event: ChildrenErrorNoExistence) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get childrenGeoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class ChildrenErrorNoParent extends ethereum.Event { - get params(): ChildrenErrorNoParent__Params { - return new ChildrenErrorNoParent__Params(this); - } -} - -export class ChildrenErrorNoParent__Params { - _event: ChildrenErrorNoParent; - - constructor(event: ChildrenErrorNoParent) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get childrenGeoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class ChildrenRemoved extends ethereum.Event { - get params(): ChildrenRemoved__Params { - return new ChildrenRemoved__Params(this); - } -} - -export class ChildrenRemoved__Params { - _event: ChildrenRemoved; - - constructor(event: ChildrenRemoved) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get childrenGeoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class ParentAdded extends ethereum.Event { - get params(): ParentAdded__Params { - return new ParentAdded__Params(this); - } -} - -export class ParentAdded__Params { - _event: ParentAdded; - - constructor(event: ParentAdded) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get parentGeoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class ParentRemoved extends ethereum.Event { - get params(): ParentRemoved__Params { - return new ParentRemoved__Params(this); - } -} - -export class ParentRemoved__Params { - _event: ParentRemoved; - - constructor(event: ParentRemoved) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get parentGeoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } -} - -export class RoleAdminChanged extends ethereum.Event { - get params(): RoleAdminChanged__Params { - return new RoleAdminChanged__Params(this); - } -} - -export class RoleAdminChanged__Params { - _event: RoleAdminChanged; - - constructor(event: RoleAdminChanged) { - this._event = event; - } - - get role(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get previousAdminRole(): Bytes { - return this._event.parameters[1].value.toBytes(); - } - - get newAdminRole(): Bytes { - return this._event.parameters[2].value.toBytes(); - } -} - -export class RoleGranted extends ethereum.Event { - get params(): RoleGranted__Params { - return new RoleGranted__Params(this); - } -} - -export class RoleGranted__Params { - _event: RoleGranted; - - constructor(event: RoleGranted) { - this._event = event; - } - - get role(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get account(): Address { - return this._event.parameters[1].value.toAddress(); - } - - get sender(): Address { - return this._event.parameters[2].value.toAddress(); - } -} - -export class RoleRevoked extends ethereum.Event { - get params(): RoleRevoked__Params { - return new RoleRevoked__Params(this); - } -} - -export class RoleRevoked__Params { - _event: RoleRevoked; - - constructor(event: RoleRevoked) { - this._event = event; - } - - get role(): Bytes { - return this._event.parameters[0].value.toBytes(); - } - - get account(): Address { - return this._event.parameters[1].value.toAddress(); - } - - get sender(): Address { - return this._event.parameters[2].value.toAddress(); - } -} - -export class SpatialAssetDeactivated extends ethereum.Event { - get params(): SpatialAssetDeactivated__Params { - return new SpatialAssetDeactivated__Params(this); - } -} - -export class SpatialAssetDeactivated__Params { - _event: SpatialAssetDeactivated; - - constructor(event: SpatialAssetDeactivated) { - this._event = event; - } - - get geoDIDId(): Bytes { - return this._event.parameters[0].value.toBytes(); - } -} - -export class SpatialAssetRegistered extends ethereum.Event { - get params(): SpatialAssetRegistered__Params { - return new SpatialAssetRegistered__Params(this); - } -} - -export class SpatialAssetRegistered__Params { - _event: SpatialAssetRegistered; - - constructor(event: SpatialAssetRegistered) { - this._event = event; - } - - get to(): Address { - return this._event.parameters[0].value.toAddress(); - } - - get geoDIDId(): Bytes { - return this._event.parameters[1].value.toBytes(); - } - - get cid(): Bytes { - return this._event.parameters[2].value.toBytes(); - } - - get offChainStorage(): Bytes { - return this._event.parameters[3].value.toBytes(); - } - - get root(): Bytes { - return this._event.parameters[4].value.toBytes(); - } - - get canBeParent(): boolean { - return this._event.parameters[5].value.toBoolean(); - } -} - -export class SpatialAssets extends ethereum.SmartContract { - static bind(address: Address): SpatialAssets { - return new SpatialAssets("SpatialAssets", address); - } - - DATA_SUPPLIER(): Bytes { - let result = super.call("DATA_SUPPLIER", "DATA_SUPPLIER():(bytes32)", []); - - return result[0].toBytes(); - } - - try_DATA_SUPPLIER(): ethereum.CallResult { - let result = super.tryCall( - "DATA_SUPPLIER", - "DATA_SUPPLIER():(bytes32)", - [] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - DEFAULT_ADMIN_ROLE(): Bytes { - let result = super.call( - "DEFAULT_ADMIN_ROLE", - "DEFAULT_ADMIN_ROLE():(bytes32)", - [] - ); - - return result[0].toBytes(); - } - - try_DEFAULT_ADMIN_ROLE(): ethereum.CallResult { - let result = super.tryCall( - "DEFAULT_ADMIN_ROLE", - "DEFAULT_ADMIN_ROLE():(bytes32)", - [] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - getRoleAdmin(role: Bytes): Bytes { - let result = super.call("getRoleAdmin", "getRoleAdmin(bytes32):(bytes32)", [ - ethereum.Value.fromFixedBytes(role) - ]); - - return result[0].toBytes(); - } - - try_getRoleAdmin(role: Bytes): ethereum.CallResult { - let result = super.tryCall( - "getRoleAdmin", - "getRoleAdmin(bytes32):(bytes32)", - [ethereum.Value.fromFixedBytes(role)] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - getRoleMember(role: Bytes, index: BigInt): Address { - let result = super.call( - "getRoleMember", - "getRoleMember(bytes32,uint256):(address)", - [ - ethereum.Value.fromFixedBytes(role), - ethereum.Value.fromUnsignedBigInt(index) - ] - ); - - return result[0].toAddress(); - } - - try_getRoleMember(role: Bytes, index: BigInt): ethereum.CallResult

{ - let result = super.tryCall( - "getRoleMember", - "getRoleMember(bytes32,uint256):(address)", - [ - ethereum.Value.fromFixedBytes(role), - ethereum.Value.fromUnsignedBigInt(index) - ] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toAddress()); - } - - getRoleMemberCount(role: Bytes): BigInt { - let result = super.call( - "getRoleMemberCount", - "getRoleMemberCount(bytes32):(uint256)", - [ethereum.Value.fromFixedBytes(role)] - ); - - return result[0].toBigInt(); - } - - try_getRoleMemberCount(role: Bytes): ethereum.CallResult { - let result = super.tryCall( - "getRoleMemberCount", - "getRoleMemberCount(bytes32):(uint256)", - [ethereum.Value.fromFixedBytes(role)] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBigInt()); - } - - hasRole(role: Bytes, account: Address): boolean { - let result = super.call("hasRole", "hasRole(bytes32,address):(bool)", [ - ethereum.Value.fromFixedBytes(role), - ethereum.Value.fromAddress(account) - ]); - - return result[0].toBoolean(); - } - - try_hasRole(role: Bytes, account: Address): ethereum.CallResult { - let result = super.tryCall("hasRole", "hasRole(bytes32,address):(bool)", [ - ethereum.Value.fromFixedBytes(role), - ethereum.Value.fromAddress(account) - ]); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBoolean()); - } - - idToOwner(id: Bytes): Address { - let result = super.call("idToOwner", "idToOwner(bytes32):(address)", [ - ethereum.Value.fromFixedBytes(id) - ]); - - return result[0].toAddress(); - } - - try_idToOwner(id: Bytes): ethereum.CallResult
{ - let result = super.tryCall("idToOwner", "idToOwner(bytes32):(address)", [ - ethereum.Value.fromFixedBytes(id) - ]); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toAddress()); - } - - idToCid(id: Bytes): Bytes { - let result = super.call("idToCid", "idToCid(bytes32):(bytes32)", [ - ethereum.Value.fromFixedBytes(id) - ]); - - return result[0].toBytes(); - } - - try_idToCid(id: Bytes): ethereum.CallResult { - let result = super.tryCall("idToCid", "idToCid(bytes32):(bytes32)", [ - ethereum.Value.fromFixedBytes(id) - ]); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - idToCanBeParent(id: Bytes): boolean { - let result = super.call( - "idToCanBeParent", - "idToCanBeParent(bytes32):(bool)", - [ethereum.Value.fromFixedBytes(id)] - ); - - return result[0].toBoolean(); - } - - try_idToCanBeParent(id: Bytes): ethereum.CallResult { - let result = super.tryCall( - "idToCanBeParent", - "idToCanBeParent(bytes32):(bool)", - [ethereum.Value.fromFixedBytes(id)] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBoolean()); - } - - idToHasParent(id: Bytes): boolean { - let result = super.call("idToHasParent", "idToHasParent(bytes32):(bool)", [ - ethereum.Value.fromFixedBytes(id) - ]); - - return result[0].toBoolean(); - } - - try_idToHasParent(id: Bytes): ethereum.CallResult { - let result = super.tryCall( - "idToHasParent", - "idToHasParent(bytes32):(bool)", - [ethereum.Value.fromFixedBytes(id)] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBoolean()); - } - - idToExternalStorage(id: Bytes): Bytes { - let result = super.call( - "idToExternalStorage", - "idToExternalStorage(bytes32):(bytes32)", - [ethereum.Value.fromFixedBytes(id)] - ); - - return result[0].toBytes(); - } - - try_idToExternalStorage(id: Bytes): ethereum.CallResult { - let result = super.tryCall( - "idToExternalStorage", - "idToExternalStorage(bytes32):(bytes32)", - [ethereum.Value.fromFixedBytes(id)] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBytes()); - } - - allowedStorages(offChainStorage: Bytes): boolean { - let result = super.call( - "allowedStorages", - "allowedStorages(bytes32):(bool)", - [ethereum.Value.fromFixedBytes(offChainStorage)] - ); - - return result[0].toBoolean(); - } - - try_allowedStorages(offChainStorage: Bytes): ethereum.CallResult { - let result = super.tryCall( - "allowedStorages", - "allowedStorages(bytes32):(bool)", - [ethereum.Value.fromFixedBytes(offChainStorage)] - ); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toBoolean()); - } - - uri(): string { - let result = super.call("uri", "uri():(string)", []); - - return result[0].toString(); - } - - try_uri(): ethereum.CallResult { - let result = super.tryCall("uri", "uri():(string)", []); - if (result.reverted) { - return new ethereum.CallResult(); - } - let value = result.value; - return ethereum.CallResult.fromValue(value[0].toString()); - } -} - -export class ConstructorCall extends ethereum.Call { - get inputs(): ConstructorCall__Inputs { - return new ConstructorCall__Inputs(this); - } - - get outputs(): ConstructorCall__Outputs { - return new ConstructorCall__Outputs(this); - } -} - -export class ConstructorCall__Inputs { - _call: ConstructorCall; - - constructor(call: ConstructorCall) { - this._call = call; - } - - get uri(): string { - return this._call.inputValues[0].value.toString(); - } -} - -export class ConstructorCall__Outputs { - _call: ConstructorCall; - - constructor(call: ConstructorCall) { - this._call = call; - } -} - -export class GrantRoleCall extends ethereum.Call { - get inputs(): GrantRoleCall__Inputs { - return new GrantRoleCall__Inputs(this); - } - - get outputs(): GrantRoleCall__Outputs { - return new GrantRoleCall__Outputs(this); - } -} - -export class GrantRoleCall__Inputs { - _call: GrantRoleCall; - - constructor(call: GrantRoleCall) { - this._call = call; - } - - get role(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get account(): Address { - return this._call.inputValues[1].value.toAddress(); - } -} - -export class GrantRoleCall__Outputs { - _call: GrantRoleCall; - - constructor(call: GrantRoleCall) { - this._call = call; - } -} - -export class RenounceRoleCall extends ethereum.Call { - get inputs(): RenounceRoleCall__Inputs { - return new RenounceRoleCall__Inputs(this); - } - - get outputs(): RenounceRoleCall__Outputs { - return new RenounceRoleCall__Outputs(this); - } -} - -export class RenounceRoleCall__Inputs { - _call: RenounceRoleCall; - - constructor(call: RenounceRoleCall) { - this._call = call; - } - - get role(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get account(): Address { - return this._call.inputValues[1].value.toAddress(); - } -} - -export class RenounceRoleCall__Outputs { - _call: RenounceRoleCall; - - constructor(call: RenounceRoleCall) { - this._call = call; - } -} - -export class RevokeRoleCall extends ethereum.Call { - get inputs(): RevokeRoleCall__Inputs { - return new RevokeRoleCall__Inputs(this); - } - - get outputs(): RevokeRoleCall__Outputs { - return new RevokeRoleCall__Outputs(this); - } -} - -export class RevokeRoleCall__Inputs { - _call: RevokeRoleCall; - - constructor(call: RevokeRoleCall) { - this._call = call; - } - - get role(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get account(): Address { - return this._call.inputValues[1].value.toAddress(); - } -} - -export class RevokeRoleCall__Outputs { - _call: RevokeRoleCall; - - constructor(call: RevokeRoleCall) { - this._call = call; - } -} - -export class RegisterRoleCall extends ethereum.Call { - get inputs(): RegisterRoleCall__Inputs { - return new RegisterRoleCall__Inputs(this); - } - - get outputs(): RegisterRoleCall__Outputs { - return new RegisterRoleCall__Outputs(this); - } -} - -export class RegisterRoleCall__Inputs { - _call: RegisterRoleCall; - - constructor(call: RegisterRoleCall) { - this._call = call; - } -} - -export class RegisterRoleCall__Outputs { - _call: RegisterRoleCall; - - constructor(call: RegisterRoleCall) { - this._call = call; - } -} - -export class EnableStorageCall extends ethereum.Call { - get inputs(): EnableStorageCall__Inputs { - return new EnableStorageCall__Inputs(this); - } - - get outputs(): EnableStorageCall__Outputs { - return new EnableStorageCall__Outputs(this); - } -} - -export class EnableStorageCall__Inputs { - _call: EnableStorageCall; - - constructor(call: EnableStorageCall) { - this._call = call; - } - - get offChainStorage(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } -} - -export class EnableStorageCall__Outputs { - _call: EnableStorageCall; - - constructor(call: EnableStorageCall) { - this._call = call; - } -} - -export class DisableStorageCall extends ethereum.Call { - get inputs(): DisableStorageCall__Inputs { - return new DisableStorageCall__Inputs(this); - } - - get outputs(): DisableStorageCall__Outputs { - return new DisableStorageCall__Outputs(this); - } -} - -export class DisableStorageCall__Inputs { - _call: DisableStorageCall; - - constructor(call: DisableStorageCall) { - this._call = call; - } - - get offChainStorage(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } -} - -export class DisableStorageCall__Outputs { - _call: DisableStorageCall; - - constructor(call: DisableStorageCall) { - this._call = call; - } -} - -export class RegisterSpatialAssetCall extends ethereum.Call { - get inputs(): RegisterSpatialAssetCall__Inputs { - return new RegisterSpatialAssetCall__Inputs(this); - } - - get outputs(): RegisterSpatialAssetCall__Outputs { - return new RegisterSpatialAssetCall__Outputs(this); - } -} - -export class RegisterSpatialAssetCall__Inputs { - _call: RegisterSpatialAssetCall; - - constructor(call: RegisterSpatialAssetCall) { - this._call = call; - } - - get owner(): Address { - return this._call.inputValues[0].value.toAddress(); - } - - get geoDIDId(): Bytes { - return this._call.inputValues[1].value.toBytes(); - } - - get parentGeoDIDId(): Bytes { - return this._call.inputValues[2].value.toBytes(); - } - - get childrenGeoDIDIds(): Array { - return this._call.inputValues[3].value.toBytesArray(); - } - - get cid(): Bytes { - return this._call.inputValues[4].value.toBytes(); - } - - get offChainStorage(): Bytes { - return this._call.inputValues[5].value.toBytes(); - } - - get geoDIDtype(): BigInt { - return this._call.inputValues[6].value.toBigInt(); - } -} - -export class RegisterSpatialAssetCall__Outputs { - _call: RegisterSpatialAssetCall; - - constructor(call: RegisterSpatialAssetCall) { - this._call = call; - } -} - -export class AddChildrenGeoDIDsCall extends ethereum.Call { - get inputs(): AddChildrenGeoDIDsCall__Inputs { - return new AddChildrenGeoDIDsCall__Inputs(this); - } - - get outputs(): AddChildrenGeoDIDsCall__Outputs { - return new AddChildrenGeoDIDsCall__Outputs(this); - } -} - -export class AddChildrenGeoDIDsCall__Inputs { - _call: AddChildrenGeoDIDsCall; - - constructor(call: AddChildrenGeoDIDsCall) { - this._call = call; - } - - get geoDIDId(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get childrenGeoDIDIds(): Array { - return this._call.inputValues[1].value.toBytesArray(); - } -} - -export class AddChildrenGeoDIDsCall__Outputs { - _call: AddChildrenGeoDIDsCall; - - constructor(call: AddChildrenGeoDIDsCall) { - this._call = call; - } -} - -export class AddParentGeoDIDCall extends ethereum.Call { - get inputs(): AddParentGeoDIDCall__Inputs { - return new AddParentGeoDIDCall__Inputs(this); - } - - get outputs(): AddParentGeoDIDCall__Outputs { - return new AddParentGeoDIDCall__Outputs(this); - } -} - -export class AddParentGeoDIDCall__Inputs { - _call: AddParentGeoDIDCall; - - constructor(call: AddParentGeoDIDCall) { - this._call = call; - } - - get geoDIDId(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get parentGeoDIDId(): Bytes { - return this._call.inputValues[1].value.toBytes(); - } -} - -export class AddParentGeoDIDCall__Outputs { - _call: AddParentGeoDIDCall; - - constructor(call: AddParentGeoDIDCall) { - this._call = call; - } -} - -export class RemoveChildrenGeoDIDsCall extends ethereum.Call { - get inputs(): RemoveChildrenGeoDIDsCall__Inputs { - return new RemoveChildrenGeoDIDsCall__Inputs(this); - } - - get outputs(): RemoveChildrenGeoDIDsCall__Outputs { - return new RemoveChildrenGeoDIDsCall__Outputs(this); - } -} - -export class RemoveChildrenGeoDIDsCall__Inputs { - _call: RemoveChildrenGeoDIDsCall; - - constructor(call: RemoveChildrenGeoDIDsCall) { - this._call = call; - } - - get geoDIDId(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get childrenGeoDIDIds(): Array { - return this._call.inputValues[1].value.toBytesArray(); - } -} - -export class RemoveChildrenGeoDIDsCall__Outputs { - _call: RemoveChildrenGeoDIDsCall; - - constructor(call: RemoveChildrenGeoDIDsCall) { - this._call = call; - } -} - -export class RemoveParentGeoDIDCall extends ethereum.Call { - get inputs(): RemoveParentGeoDIDCall__Inputs { - return new RemoveParentGeoDIDCall__Inputs(this); - } - - get outputs(): RemoveParentGeoDIDCall__Outputs { - return new RemoveParentGeoDIDCall__Outputs(this); - } -} - -export class RemoveParentGeoDIDCall__Inputs { - _call: RemoveParentGeoDIDCall; - - constructor(call: RemoveParentGeoDIDCall) { - this._call = call; - } - - get geoDIDId(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get parentGeoDIDId(): Bytes { - return this._call.inputValues[1].value.toBytes(); - } -} - -export class RemoveParentGeoDIDCall__Outputs { - _call: RemoveParentGeoDIDCall; - - constructor(call: RemoveParentGeoDIDCall) { - this._call = call; - } -} - -export class DeactivateSpatialAssetCall extends ethereum.Call { - get inputs(): DeactivateSpatialAssetCall__Inputs { - return new DeactivateSpatialAssetCall__Inputs(this); - } - - get outputs(): DeactivateSpatialAssetCall__Outputs { - return new DeactivateSpatialAssetCall__Outputs(this); - } -} - -export class DeactivateSpatialAssetCall__Inputs { - _call: DeactivateSpatialAssetCall; - - constructor(call: DeactivateSpatialAssetCall) { - this._call = call; - } - - get geoDIDId(): Bytes { - return this._call.inputValues[0].value.toBytes(); - } - - get childrenToRemove(): Array { - return this._call.inputValues[1].value.toBytesArray(); - } -} - -export class DeactivateSpatialAssetCall__Outputs { - _call: DeactivateSpatialAssetCall; - - constructor(call: DeactivateSpatialAssetCall) { - this._call = call; - } -} diff --git a/legacy/packages/subgraph/generated/schema.ts b/legacy/packages/subgraph/generated/schema.ts deleted file mode 100644 index ea0cc50..0000000 --- a/legacy/packages/subgraph/generated/schema.ts +++ /dev/null @@ -1,210 +0,0 @@ -// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. - -import { - TypedMap, - Entity, - Value, - ValueKind, - store, - Address, - Bytes, - BigInt, - BigDecimal -} from "@graphprotocol/graph-ts"; - -export class GeoDID extends Entity { - constructor(id: string) { - super(); - this.set("id", Value.fromString(id)); - } - - save(): void { - let id = this.get("id"); - assert(id !== null, "Cannot save GeoDID entity without an ID"); - assert( - id.kind == ValueKind.STRING, - "Cannot save GeoDID entity with non-string ID. " + - 'Considering using .toHex() to convert the "id" to a string.' - ); - store.set("GeoDID", id.toString(), this); - } - - static load(id: string): GeoDID | null { - return store.get("GeoDID", id) as GeoDID | null; - } - - get id(): string { - let value = this.get("id"); - return value.toString(); - } - - set id(value: string) { - this.set("id", Value.fromString(value)); - } - - get bytes32hash(): Bytes { - let value = this.get("bytes32hash"); - return value.toBytes(); - } - - set bytes32hash(value: Bytes) { - this.set("bytes32hash", Value.fromBytes(value)); - } - - get bytes32hashWithQM(): Bytes { - let value = this.get("bytes32hashWithQM"); - return value.toBytes(); - } - - set bytes32hashWithQM(value: Bytes) { - this.set("bytes32hashWithQM", Value.fromBytes(value)); - } - - get owner(): string { - let value = this.get("owner"); - return value.toString(); - } - - set owner(value: string) { - this.set("owner", Value.fromString(value)); - } - - get cid(): string { - let value = this.get("cid"); - return value.toString(); - } - - set cid(value: string) { - this.set("cid", Value.fromString(value)); - } - - get storage(): Bytes { - let value = this.get("storage"); - return value.toBytes(); - } - - set storage(value: Bytes) { - this.set("storage", Value.fromBytes(value)); - } - - get root(): string { - let value = this.get("root"); - return value.toString(); - } - - set root(value: string) { - this.set("root", Value.fromString(value)); - } - - get isRoot(): boolean { - let value = this.get("isRoot"); - return value.toBoolean(); - } - - set isRoot(value: boolean) { - this.set("isRoot", Value.fromBoolean(value)); - } - - get parent(): string { - let value = this.get("parent"); - return value.toString(); - } - - set parent(value: string) { - this.set("parent", Value.fromString(value)); - } - - get edges(): Array { - let value = this.get("edges"); - return value.toStringArray(); - } - - set edges(value: Array) { - this.set("edges", Value.fromStringArray(value)); - } - - get active(): boolean { - let value = this.get("active"); - return value.toBoolean(); - } - - set active(value: boolean) { - this.set("active", Value.fromBoolean(value)); - } - - get type(): string { - let value = this.get("type"); - return value.toString(); - } - - set type(value: string) { - this.set("type", Value.fromString(value)); - } - - get errors(): Array { - let value = this.get("errors"); - return value.toStringArray(); - } - - set errors(value: Array) { - this.set("errors", Value.fromStringArray(value)); - } -} - -export class Edge extends Entity { - constructor(id: string) { - super(); - this.set("id", Value.fromString(id)); - } - - save(): void { - let id = this.get("id"); - assert(id !== null, "Cannot save Edge entity without an ID"); - assert( - id.kind == ValueKind.STRING, - "Cannot save Edge entity with non-string ID. " + - 'Considering using .toHex() to convert the "id" to a string.' - ); - store.set("Edge", id.toString(), this); - } - - static load(id: string): Edge | null { - return store.get("Edge", id) as Edge | null; - } - - get id(): string { - let value = this.get("id"); - return value.toString(); - } - - set id(value: string) { - this.set("id", Value.fromString(value)); - } - - get parentGeoDID(): string { - let value = this.get("parentGeoDID"); - return value.toString(); - } - - set parentGeoDID(value: string) { - this.set("parentGeoDID", Value.fromString(value)); - } - - get childGeoDID(): string { - let value = this.get("childGeoDID"); - return value.toString(); - } - - set childGeoDID(value: string) { - this.set("childGeoDID", Value.fromString(value)); - } - - get active(): boolean { - let value = this.get("active"); - return value.toBoolean(); - } - - set active(value: boolean) { - this.set("active", Value.fromBoolean(value)); - } -} diff --git a/legacy/packages/subgraph/package.json b/legacy/packages/subgraph/package.json deleted file mode 100644 index db2e566..0000000 --- a/legacy/packages/subgraph/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@astralprotocol/subgraph", - "version": "1.0.13", - "description": "The @astralprotocol/subgraph serves as the indexing engine of the protocol, capturing the registration and modification events of GeoDIDs in the @astralprotocol/contracts. It acts like a decentralized querying database where it is substantially easier to make complex queries to the Spatial Assets registry. It is used to create the tree of GeoDID nodes that represents their relationships and groupings.", - "author": "Astral ", - "homepage": "https://github.com/AstralProtocol/astralprotocol#readme", - "license": "MIT OR Apache-2.0", - "main": "lib/mapping.js", - "directories": { - "lib": "lib", - "test": "__tests__" - }, - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/AstralProtocol/astralprotocol.git", - "directory": "packages/subgraph" - }, - "publishConfig": { - "registry": "https://registry.npmjs.org", - "access": "public" - }, - "scripts": { - "codegen": "graph codegen", - "build": "graph build", - "deploy": "graph deploy --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ astralprotocol/spatialassetsfinalv1 --access-token TOKEN_HERE", - "create-local": "graph create --node http://localhost:8020/ astralprotocol/spatialassets", - "remove-local": "graph remove --node http://localhost:8020/ astralprotocol/spatialassets", - "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 astralprotocol/spatialassets", - "remove-subgraph": "graph remove astraldao/spatial-assets --ipfs http://localhost:5001 --node http://127.0.0.1:8020", - "clean": "rm -rf ./lib ./tsconfig.tsbuildinfo" - }, - "bugs": { - "url": "https://github.com/AstralProtocol/astralprotocol/issues" - }, - "dependencies": { - "@graphprotocol/graph-cli": "^0.19.0", - "@graphprotocol/graph-ts": "^0.19.0" - } -} diff --git a/legacy/packages/subgraph/schema.graphql b/legacy/packages/subgraph/schema.graphql deleted file mode 100644 index b0a9cad..0000000 --- a/legacy/packages/subgraph/schema.graphql +++ /dev/null @@ -1,22 +0,0 @@ -type GeoDID @entity { - id: ID! - bytes32hash: Bytes! - bytes32hashWithQM: Bytes! - owner: String! - cid: String! - storage: Bytes! - root: String! - isRoot: Boolean! - parent: String! - edges: [Edge!]! - active: Boolean! - type: String! - errors: [String!]! -} - -type Edge @entity { - id: ID! - parentGeoDID: GeoDID! - childGeoDID: GeoDID! - active: Boolean! -} diff --git a/legacy/packages/subgraph/src/helpers.ts b/legacy/packages/subgraph/src/helpers.ts deleted file mode 100644 index 79be946..0000000 --- a/legacy/packages/subgraph/src/helpers.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ByteArray } from "@graphprotocol/graph-ts"; - -// Helper adding 0x12 and 0x20 to make the proper ipfs hash -// the returned bytes32 is so [0,31] -export function addQm(a: ByteArray): ByteArray { - let out = new Uint8Array(34); - out[0] = 0x12; - out[1] = 0x20; - for (let i = 0; i < 32; i++) { - out[i + 2] = a[i]; - } - return out as ByteArray; -} diff --git a/legacy/packages/subgraph/src/mapping.ts b/legacy/packages/subgraph/src/mapping.ts deleted file mode 100644 index faf6be5..0000000 --- a/legacy/packages/subgraph/src/mapping.ts +++ /dev/null @@ -1,358 +0,0 @@ -import { - SpatialAssetRegistered, - ParentAdded, - ChildrenAdded, - ParentRemoved, - ChildrenRemoved, - SpatialAssetDeactivated, - ChildrenErrorNoParent, - ChildrenErrorNoExistence, - ChildrenErrorHasParent, -} from "../generated/SpatialAssets/SpatialAssets"; -import { GeoDID, Edge } from "../generated/schema"; -import { Bytes } from "@graphprotocol/graph-ts"; - -import { addQm } from "./helpers"; - -// this is a recursive function to change the root id in the children (and their children) -function changeRoot(edges: string[]): void { - if (edges.length > 0) { - edges.forEach((ed) => { - let edge = Edge.load(ed); - let child = GeoDID.load(edge.childGeoDID); - - child.isRoot = false; - let parent = GeoDID.load(edge.parentGeoDID); - - child.root = parent.root; - - child.save(); - if (child.edges.length > 0) { - changeRoot(child.edges); - } - }); - } -} - -export function handleSpatialAssetRegistered( - event: SpatialAssetRegistered -): void { - let hexHashId = addQm(event.params.geoDIDId) as Bytes; - let base58HashId = "did:geo:" + hexHashId.toBase58(); // imported crypto function - - let geoDID = new GeoDID(base58HashId); - geoDID.bytes32hash = event.params.geoDIDId; - geoDID.bytes32hashWithQM = hexHashId; - - geoDID.owner = event.params.to.toHexString(); - - let hexHashCid = addQm(event.params.cid) as Bytes; - let base58HashCid = hexHashCid.toBase58(); // imported crypto function - - geoDID.cid = base58HashCid; - geoDID.storage = event.params.offChainStorage; - - let hexHashRoot = addQm(event.params.root) as Bytes; - let base58HashRoot = "did:geo:" + hexHashRoot.toBase58(); // imported crypto function - - geoDID.root = base58HashRoot; - - if (hexHashId.toBase58() == hexHashRoot.toBase58()) { - geoDID.isRoot = true; - } else { - geoDID.isRoot = false; - } - - geoDID.active = true; - - geoDID.parent = ""; - - if (event.params.canBeParent) { - geoDID.type = "Collection"; - } else { - geoDID.type = "Item"; - } - - geoDID.edges = []; - geoDID.errors = []; - geoDID.save(); -} - -export function handleParentAdded(event: ParentAdded): void { - let hexHashIdParent = addQm(event.params.parentGeoDIDId) as Bytes; - let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function - let hexHashChild = addQm(event.params.geoDIDId) as Bytes; - let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function - - let edge = new Edge(base58HashParent + "-" + base58HashChild); - - edge.parentGeoDID = base58HashParent; - edge.childGeoDID = base58HashChild; - edge.active = true; - edge.save(); - - // add edge to parent - - let parentGeoDID = GeoDID.load(base58HashParent); - - let edges = parentGeoDID.edges; - - edges.push(edge.id); - - parentGeoDID.edges = edges; - - parentGeoDID.save(); - - let geoDID = GeoDID.load(base58HashChild); - - geoDID.parent = base58HashParent; - geoDID.isRoot = false; - geoDID.root = parentGeoDID.root; - - geoDID.save(); - - // change root to root of parent - if (Array.isArray(geoDID.edges)) { - changeRoot(geoDID.edges); - } -} - -export function handleChildrenAdded(event: ChildrenAdded): void { - let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes; - let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function - let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes; - let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function - - let edge = new Edge(base58HashParent + "-" + base58HashChild); - - edge.parentGeoDID = base58HashParent; - edge.childGeoDID = base58HashChild; - edge.active = true; - edge.save(); - - // add edge to parent - - let parentGeoDID = GeoDID.load(base58HashParent); - - let edges = parentGeoDID.edges; - - edges.push(edge.id); - - parentGeoDID.edges = edges; - - parentGeoDID.save(); - - let geoDID = GeoDID.load(base58HashChild); - - geoDID.parent = base58HashParent; - geoDID.isRoot = false; - geoDID.root = parentGeoDID.root; - geoDID.save(); - - // change root to root of parent - if (Array.isArray(geoDID.edges)) { - changeRoot(geoDID.edges); - } -} - -export function handleParentRemoved(event: ParentRemoved): void { - let hexHashIdParent = addQm(event.params.parentGeoDIDId) as Bytes; - let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function - let hexHashChild = addQm(event.params.geoDIDId) as Bytes; - let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function - - let edge = Edge.load(base58HashParent + "-" + base58HashChild); - - edge.active = false; - - edge.save(); - - // remove edge from parent - let parentGeoDID = GeoDID.load(base58HashParent); - - let originalEdges = parentGeoDID.edges; - - let changedEdges: Array; - - for (let i = 0; i < originalEdges.length; i++) { - let ed = Edge.load(originalEdges[i]); - if (ed.id != edge.id) { - changedEdges.push(originalEdges[i]); - } - } - - parentGeoDID.edges = changedEdges; - - parentGeoDID.save(); - - let geoDID = GeoDID.load(base58HashChild); - - geoDID.parent = ""; - - geoDID.root = geoDID.id; - geoDID.isRoot = true; - geoDID.save(); - - // change root from children to itself - if (Array.isArray(geoDID.edges)) { - changeRoot(geoDID.edges); - } -} - -export function handleChildrenRemoved(event: ChildrenRemoved): void { - let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes; - let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function - let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes; - let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function - - let edge = Edge.load(base58HashParent + "-" + base58HashChild); - - edge.active = false; - - edge.save(); - - // remove edge from parent - let parentGeoDID = GeoDID.load(base58HashParent); - - let originalEdges = parentGeoDID.edges; - - let changedEdges: Array; - - for (let i = 0; i < originalEdges.length; i++) { - let ed = Edge.load(originalEdges[i]); - if (ed.id != edge.id) { - changedEdges.push(originalEdges[i]); - } - } - - parentGeoDID.edges = changedEdges; - - parentGeoDID.save(); - - let geoDID = GeoDID.load(base58HashChild); - - geoDID.parent = ""; - geoDID.root = geoDID.id; - geoDID.isRoot = true; - geoDID.save(); - - if (Array.isArray(geoDID.edges)) { - changeRoot(geoDID.edges); - } -} - -export function handleSpatialAssetDeactivated( - event: SpatialAssetDeactivated -): void { - let hexHashId = addQm(event.params.geoDIDId) as Bytes; - let base58Hash = "did:geo:" + hexHashId.toBase58(); // imported crypto function - - let geoDID = GeoDID.load(base58Hash); - - if (geoDID.parent.length > 0) { - let edgeToParent = Edge.load(geoDID.parent + "-" + base58Hash); - - edgeToParent.active = false; - edgeToParent.save(); - - // remove edge from parent - let parentGeoDID = GeoDID.load(geoDID.parent); - - let originalEdges = parentGeoDID.edges; - - let changedEdges: Array; - - for (let i = 0; i < originalEdges.length; i++) { - let ed = Edge.load(originalEdges[i]); - if (ed.id != edgeToParent.id) { - changedEdges.push(originalEdges[i]); - } - } - - parentGeoDID.edges = changedEdges; - - parentGeoDID.save(); - } - - geoDID.owner = ""; - geoDID.root = ""; - geoDID.active = false; - geoDID.parent = ""; - - geoDID.save(); -} - -export function handleChildrenErrorNoParent( - event: ChildrenErrorNoParent -): void { - let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes; - let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function - let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes; - let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function - - let geoDID = GeoDID.load(base58HashParent); - - let originalErrors = geoDID.errors; - - let newErrors: Array; - - for (let i = 0; i < originalErrors.length; i++) { - newErrors.push(originalErrors[i]); - } - - newErrors.push("ChildrenErrorNoParent" + base58HashChild); - - geoDID.errors = newErrors; - - geoDID.save(); -} - -export function handleChildrenErrorNoExistence( - event: ChildrenErrorNoExistence -): void { - let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes; - let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function - let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes; - let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function - - let geoDID = GeoDID.load(base58HashParent); - - let originalErrors = geoDID.errors; - - let newErrors: Array; - - for (let i = 0; i < originalErrors.length; i++) { - newErrors.push(originalErrors[i]); - } - - newErrors.push("ChildrenErrorNoExistence" + base58HashChild); - - geoDID.errors = newErrors; - - geoDID.save(); -} - -export function handleChildrenErrorHasParent( - event: ChildrenErrorHasParent -): void { - let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes; - let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function - let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes; - let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function - - let geoDID = GeoDID.load(base58HashParent); - - let originalErrors = geoDID.errors; - - let newErrors: Array; - - for (let i = 0; i < originalErrors.length; i++) { - newErrors.push(originalErrors[i]); - } - - newErrors.push("ChildrenErrorHasParent" + base58HashChild); - - geoDID.errors = newErrors; - - geoDID.save(); -} diff --git a/legacy/packages/subgraph/subgraph.yaml b/legacy/packages/subgraph/subgraph.yaml deleted file mode 100644 index e52f37c..0000000 --- a/legacy/packages/subgraph/subgraph.yaml +++ /dev/null @@ -1,40 +0,0 @@ -specVersion: 0.0.2 -schema: - file: ./schema.graphql -dataSources: - - kind: ethereum/contract - name: SpatialAssets - network: ropsten - source: - address: "0x20899AcaD772bEd24A8cf385bA5688428B10a963" - abi: SpatialAssets - mapping: - kind: ethereum/events - apiVersion: 0.0.4 - language: wasm/assemblyscript - entities: - - SpatialAsset - - Node - abis: - - name: SpatialAssets - file: ./abis/SpatialAssets.json - eventHandlers: - - event: SpatialAssetRegistered(indexed address,indexed bytes32,indexed bytes32,bytes32,bytes32,bool) - handler: handleSpatialAssetRegistered - - event: SpatialAssetDeactivated(indexed bytes32) - handler: handleSpatialAssetDeactivated - - event: ParentAdded(indexed bytes32,indexed bytes32) - handler: handleParentAdded - - event: ChildrenAdded(indexed bytes32,indexed bytes32) - handler: handleChildrenAdded - - event: ParentRemoved(indexed bytes32,indexed bytes32) - handler: handleParentRemoved - - event: ChildrenRemoved(indexed bytes32,indexed bytes32) - handler: handleChildrenRemoved - - event: ChildrenErrorNoParent(indexed bytes32,indexed bytes32) - handler: handleChildrenErrorNoParent - - event: ChildrenErrorNoExistence(indexed bytes32,indexed bytes32) - handler: handleChildrenErrorNoExistence - - event: ChildrenErrorHasParent(indexed bytes32,indexed bytes32) - handler: handleChildrenErrorHasParent - file: ./src/mapping.ts diff --git a/legacy/packages/subgraph/subgraphLocal.yaml b/legacy/packages/subgraph/subgraphLocal.yaml deleted file mode 100644 index 2dfda85..0000000 --- a/legacy/packages/subgraph/subgraphLocal.yaml +++ /dev/null @@ -1,40 +0,0 @@ -specVersion: 0.0.2 -schema: - file: ./schema.graphql -dataSources: - - kind: ethereum/contract - name: SpatialAssets - network: mainnet - source: - address: "0xCfEB869F69431e42cdB54A4F4f105C19C080A601" - abi: SpatialAssets - mapping: - kind: ethereum/events - apiVersion: 0.0.4 - language: wasm/assemblyscript - entities: - - SpatialAsset - - Node - abis: - - name: SpatialAssets - file: ./abis/SpatialAssets.json - eventHandlers: - - event: SpatialAssetRegistered(indexed address,indexed bytes32,indexed bytes32,bytes32,bytes32,bool) - handler: handleSpatialAssetRegistered - - event: SpatialAssetDeactivated(indexed bytes32) - handler: handleSpatialAssetDeactivated - - event: ParentAdded(indexed bytes32,indexed bytes32) - handler: handleParentAdded - - event: ChildrenAdded(indexed bytes32,indexed bytes32) - handler: handleChildrenAdded - - event: ParentRemoved(indexed bytes32,indexed bytes32) - handler: handleParentRemoved - - event: ChildrenRemoved(indexed bytes32,indexed bytes32) - handler: handleChildrenRemoved - - event: ChildrenErrorNoParent(indexed bytes32,indexed bytes32) - handler: handleChildrenErrorNoParent - - event: ChildrenErrorNoExistence(indexed bytes32,indexed bytes32) - handler: handleChildrenErrorNoExistence - - event: ChildrenErrorHasParent(indexed bytes32,indexed bytes32) - handler: handleChildrenErrorHasParent - file: ./src/mapping.ts diff --git a/legacy/packages/subgraph/tsconfig.json b/legacy/packages/subgraph/tsconfig.json deleted file mode 100644 index 0d59dec..0000000 --- a/legacy/packages/subgraph/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./node_modules/@graphprotocol/graph-ts/tsconfig.json", - "compilerOptions": { - "types": ["@graphprotocol/graph-ts"], - "outDir": "./lib", - "rootDir": "./src", - "composite": true, - "strictNullChecks": false - } -} diff --git a/legacy/tsconfig.json b/legacy/tsconfig.json deleted file mode 100644 index 9ba1d3a..0000000 --- a/legacy/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "lib": ["es2017", "dom", "dom.iterable", "scripthost"], - "target": "es6", - "declaration": true, - "noImplicitAny": true, - "removeComments": true, - "esModuleInterop": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "sourceMap": true, - "resolveJsonModule": true, - "baseUrl": "./packages" /* Base directory to resolve non-absolute module names. */, - "paths": { - /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - "@astraldao/*": ["./*/"] - } - }, - "exclude": ["node_modules", "**/*.spec.ts", "**/*.test.ts"], - "references": [ - { "path": "./packages/core" }, - { "path": "./packages/subgraph" } - ] -} diff --git a/location-proof-protocol/README.md b/location-proof-protocol/README.md deleted file mode 100644 index 4ca3dcd..0000000 --- a/location-proof-protocol/README.md +++ /dev/null @@ -1,77 +0,0 @@ -######################### - -## For review only - -######################### - -# πŸ“ Location Proof Protocol - -The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way. - -Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies -while providing a standard data model for creating and verifying these proofs. - -This repository currently contains the code necessary to deploy the core Ethereum Attestation Service (EAS) schema for the protocol. The -standard includes a framework (in development) for building "recipes" that allow for many different strategies for proving location to be -added. - -## The Challenge - -### Broad Approaches to Location Proofs - -- **Authority-based Strategies**: Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts -- **Social Strategies**: People verify each other's claims, confirming or challenging their validity. i.e. permissionless social - confirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange -- **Near-field Machine Strategies**: Hardware devices attest to the presence of another device through information exchange or cryptographic - 'endorsement' of a claim. i.e. RFID; NFC; Bluetooth -- **Network Machine Strategies**: Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e. - Time of Flight; Time Difference of Arrival -- **Sensor Data Strategies**: Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and - location is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization - -In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a -different attributes, such as privacy, game theoretic assurances of validity, etc. - -- **Time-based Schemes**: Involves waiting or challenge periods. -- **Cryptographic Schemes**: Zero-knowledge proofs verified on-chain or in peer nodes. -- **AI-based Schemes**: Analyzing photos or contextual information. -- **Economic Schemes**: Requires payment or staking value for proof creation. - -This is an incomplete list, and we hope to support a growing set of experiments in location proof design. - -### Diverse Spatial Reference Systems - -Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial -reference systems, such as: - -- Being with a person at a particular time -- Location in a metaverse space -- Presence in a vehicle or a specific room - -Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and -relative. However, initial development of the protocol will focus on positioning objects / events on Earth. - -## Our Approach - -### Generalized Location Proof Protocol - -We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and -verifying location proofs. - -## Repository Contents - -- **Contract Deployment Scripts**: Scripts to deploy the core EAS schema for the Location Proof Protocol -- **Proof Creation Documentation**: Detailed documentation on how to interact with the EAS schema -- **Location Proof Strategy Development Guides**: Detailed information on how to create and register recipes for creating location proofs - based on different strategies - -## Core Schema v0.1 (Sepolia Testnet) - -The current working schema described [here](./schema/README.md) is deployed on Ethereum Sepolia testnet, UID -`0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e` -([view on EASScan](https://sepolia.easscan.org/schema/view/0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e)). - -## Contributing - -We welcome contributions to improve the protocol and tools. Please read our -[contributing guidelines](https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines) for more details. diff --git a/markdown-page/index.html b/markdown-page/index.html new file mode 100644 index 0000000..a046163 --- /dev/null +++ b/markdown-page/index.html @@ -0,0 +1,15 @@ + + + + + +Markdown page example | Astral Documentation + + + + + +

Markdown page example

+

You don't need React to write simple standalone pages.

+ + \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index e10c16d..0000000 --- a/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "@AstralProtocol/astralprotocol", - "description": "Tools and infrastructure for onchain location-based apps.", - "version": "1.0.0", - "author": { - "name": "AstralProtocol", - "url": "https://github.com/AstralProtocol" - }, - "dependencies": { - "@openzeppelin/contracts": "^5.0.1" - }, - "devDependencies": { - "@prb/test": "^0.6.4", - "forge-std": "github:foundry-rs/forge-std#v1.7.5", - "prettier": "3.2.5", - "solhint": "^3.6.2" - }, - "keywords": [ - "blockchain", - "ethereum", - "forge", - "foundry", - "smart-contracts", - "solidity", - "template" - ], - "private": true, - "scripts": { - "clean": "rm -rf cache out", - "build": "forge build", - "lint": "bun run lint:sol && bun run prettier:check", - "lint:sol": "forge fmt --check && bun solhint {script,src}/**/*.sol", - "prettier:check": "prettier --check '*.{json,md,yml}' --ignore-path '.prettierignore'", - "prettier:write": "prettier --write '*.{json,md,yml}' --ignore-path '.prettierignore'", - "test": "forge test", - "test:coverage": "forge coverage", - "test:coverage:report": "forge coverage --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage" - } -} diff --git a/remappings.txt b/remappings.txt deleted file mode 100644 index ed67b07..0000000 --- a/remappings.txt +++ /dev/null @@ -1,6 +0,0 @@ -@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/ -@prb/test/=node_modules/@prb/test/ -forge-std/=node_modules/forge-std/ -@interface=src/interface -@contracts=src/contracts - diff --git a/script/Base.s.sol b/script/Base.s.sol deleted file mode 100644 index 07135a2..0000000 --- a/script/Base.s.sol +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.25 <0.9.0; - -import { Script } from "forge-std/src/Script.sol"; - -abstract contract BaseScript is Script { - /// @dev Included to enable compilation of the script without a $MNEMONIC environment variable. - string internal constant TEST_MNEMONIC = "test test test test test test test test test test test junk"; - - /// @dev Needed for the deterministic deployments. - bytes32 internal constant ZERO_SALT = bytes32(0); - - /// @dev The address of the transaction broadcaster. - address internal broadcaster; - - /// @dev Used to derive the broadcaster's address if $ETH_FROM is not defined. - string internal mnemonic; - - /// @dev Initializes the transaction broadcaster like this: - /// - /// - If $ETH_FROM is defined, use it. - /// - Otherwise, derive the broadcaster address from $MNEMONIC. - /// - If $MNEMONIC is not defined, default to a test mnemonic. - /// - /// The use case for $ETH_FROM is to specify the broadcaster key and its address via the command line. - constructor() { - address from = vm.envOr({ name: "ETH_FROM", defaultValue: address(0) }); - if (from != address(0)) { - broadcaster = from; - } else { - mnemonic = vm.envOr({ name: "MNEMONIC", defaultValue: TEST_MNEMONIC }); - (broadcaster,) = deriveRememberKey({ mnemonic: mnemonic, index: 0 }); - } - } - - modifier broadcast() { - vm.startBroadcast(broadcaster); - _; - vm.stopBroadcast(); - } -} diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol deleted file mode 100644 index b39f4bd..0000000 --- a/script/Deploy.s.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity >=0.8.25 <0.9.0; - -import { RegistryFactory } from "@contracts/RegistryFactory.sol"; - -import { BaseScript } from "./Base.s.sol"; - -/// @dev See the Solidity Scripting tutorial: https://book.getfoundry.sh/tutorials/solidity-scripting -contract Deploy is BaseScript { - function run() public broadcast returns (RegistryFactory registryFactory) { - registryFactory = new RegistryFactory(); - } -} diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..213b4e0 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://docs.astral.global/blogweekly0.5https://docs.astral.global/blog/archiveweekly0.5https://docs.astral.global/blog/first-blog-postweekly0.5https://docs.astral.global/blog/long-blog-postweekly0.5https://docs.astral.global/blog/mdx-blog-postweekly0.5https://docs.astral.global/blog/tagsweekly0.5https://docs.astral.global/blog/tags/docusaurusweekly0.5https://docs.astral.global/blog/tags/facebookweekly0.5https://docs.astral.global/blog/tags/helloweekly0.5https://docs.astral.global/blog/tags/holaweekly0.5https://docs.astral.global/blog/welcomeweekly0.5https://docs.astral.global/markdown-pageweekly0.5https://docs.astral.global/docs/core-concepts/decentralized-spatial-dataweekly0.5https://docs.astral.global/docs/core-concepts/location-proofsweekly0.5https://docs.astral.global/docs/core-concepts/onchain-geospatialweekly0.5https://docs.astral.global/docs/core-concepts/what-is-spatial-dataweekly0.5https://docs.astral.global/docs/developer-resources/location-attestationsweekly0.5https://docs.astral.global/docs/developer-resources/quickstartweekly0.5https://docs.astral.global/docs/developer-resources/spatial-registriesweekly0.5https://docs.astral.global/docs/examplesweekly0.5https://docs.astral.global/docs/helloweekly0.5https://docs.astral.global/docs/introweekly0.5https://docs.astral.global/docs/introducing-astralweekly0.5https://docs.astral.global/docs/location-proof-protocol/architectureweekly0.5https://docs.astral.global/docs/location-proof-protocol/eas-schemaweekly0.5https://docs.astral.global/docs/location-proof-protocol/introductionweekly0.5https://docs.astral.global/docs/location-proof-protocol/location-typesweekly0.5https://docs.astral.global/docs/location-proof-protocol/media-typesweekly0.5https://docs.astral.global/docs/location-proof-protocol/rationaleweekly0.5https://docs.astral.global/docs/location-proof-protocol/strategies-recipesweekly0.5https://docs.astral.global/docs/spatial-registries/logbookweekly0.5https://docs.astral.global/docs/spatial-registries/spatial-solweekly0.5https://docs.astral.global/docs/tutorial-basics/congratulationsweekly0.5https://docs.astral.global/docs/tutorial-basics/create-a-blog-postweekly0.5https://docs.astral.global/docs/tutorial-basics/create-a-documentweekly0.5https://docs.astral.global/docs/tutorial-basics/create-a-pageweekly0.5https://docs.astral.global/docs/tutorial-basics/deploy-your-siteweekly0.5https://docs.astral.global/docs/tutorial-basics/markdown-featuresweekly0.5https://docs.astral.global/docs/tutorial-extras/manage-docs-versionsweekly0.5https://docs.astral.global/docs/tutorial-extras/translate-your-siteweekly0.5https://docs.astral.global/weekly0.5 \ No newline at end of file diff --git a/src/contracts/location-proof-protocol/README.md b/src/contracts/location-proof-protocol/README.md deleted file mode 100644 index 19edfb6..0000000 --- a/src/contracts/location-proof-protocol/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# πŸ“ Location Proof Protocol - -The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way. - -Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies -while providing a standard data model for creating and verifying these proofs. - -This repository currently contains the code necessary to deploy the core Ethereum Attestation Service (EAS) schema for the protocol. The -standard includes a framework (in development) for building "recipes" that allow for many different strategies for proving location to be -added. - -## The Challenge - -### Broad Approaches to Location Proofs - -- **Authority-based Strategies**: Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts -- **Social Strategies**: People verify each other's claims, confirming or challenging their validity. i.e. permissionless social - confirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange -- **Near-field Machine Strategies**: Hardware devices attest to the presence of another device through information exchange or cryptographic - 'endorsement' of a claim. i.e. RFID; NFC; Bluetooth -- **Network Machine Strategies**: Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e. - Time of Flight; Time Difference of Arrival -- **Sensor Data Strategies**: Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and - location is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization - -In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a -different attributes, such as privacy, game theoretic assurances of validity, etc. - -- **Time-based Schemes**: Involves waiting or challenge periods. -- **Cryptographic Schemes**: Zero-knowledge proofs verified on-chain or in peer nodes. -- **AI-based Schemes**: Analyzing photos or contextual information. -- **Economic Schemes**: Requires payment or staking value for proof creation. - -This is an incomplete list, and we hope to support a growing set of experiments in location proof design. - -### Diverse Spatial Reference Systems - -Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial -reference systems, such as: - -- Being with a person at a particular time -- Location in a metaverse space -- Presence in a vehicle or a specific room - -Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and -relative. However, initial development of the protocol will focus on positioning objects / events on Earth. - -## Our Approach - -### Generalized Location Proof Protocol - -We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and -verifying location proofs. - -## Repository Contents - -- **Contract Deployment Scripts**: Scripts to deploy the core EAS schema for the Location Proof Protocol -- **Proof Creation Documentation**: Detailed documentation on how to interact with the EAS schema -- **Location Proof Strategy Development Guides**: Detailed information on how to create and register recipes for creating location proofs - based on different strategies - -## Core Schema v0.1 (Sepolia Testnet) - -The current working schema described [here](./schema/README.md) is deployed on Ethereum Sepolia testnet, UID -`0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e` -([view on EASScan](https://sepolia.easscan.org/schema/view/0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e)). - -## Contributing - -We welcome contributions to improve the protocol and tools. Please read our -[contributing guidelines](https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines) for more details. diff --git a/src/contracts/location-proof-protocol/locations/README.md b/src/contracts/location-proof-protocol/locations/README.md deleted file mode 100644 index f26e46b..0000000 --- a/src/contracts/location-proof-protocol/locations/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Location Proof Protocol v0.1: `locationType` - -To ensure location proofs are as versatile as possible, we are giving users / developers the option of creating proofs that adhere to any -location type. - -This requires creating a standardized set of categories for "location types" that include various ways of representing locations such as -different coordinate systems, H3 strings, geohashes, and more. The purpose of this is to ensure interoperability and clarity in geospatial -data management, while still offering flexibility for different proof types. - -Here is a v0.1 proposed categorization. - -### Categories of Location Types - -1. **Geographic Coordinates (Lat/Long)** - - **Decimal Degrees**: Standard longitude and latitude (e.g., `[-122.4194, 37.7749]`). - - **Degrees, Minutes, Seconds (DMS)**: Latitude and longitude in degrees, minutes, and seconds (e.g., `37Β°46'30" N, 122Β°25'10" W`). -2. **Projected Coordinates** - - **Universal Transverse Mercator (UTM)**: Uses a series of zones for global coverage (e.g., `10S 551000 4182000`). - - **State Plane Coordinate System (SPCS)**: Used in the United States (e.g., `X: 2000000, Y: 500000` in a specific state plane zone). -3. **Geohashes** - - **Geohash**: A hierarchical spatial data structure which subdivides space into buckets of grid shape (e.g., `9q8yyz`). -4. **H3 Hexagons** - - **H3**: A hierarchical hexagonal grid system used for spatial indexing (e.g., `85283473fffffff`). -5. **Plus Codes** - - **Open Location Code (OLC)**: Developed by Google, it's a code that represents an area anywhere on Earth (e.g., `7FG8V4VC+G7`). -6. **Grid References** - - **Military Grid Reference System (MGRS)**: Used by NATO militaries for locating points on the Earth (e.g., `33TWN8382558454`). - - **British National Grid (OSGB)**: Used in Great Britain (e.g., `TQ 298828`). -7. **Place Names / Addresses** - - **Postal Address**: Standard mailing address (e.g., `1600 Amphitheatre Parkway, Mountain View, CA`). - - **Named Locations**: Known place names (e.g., `Eiffel Tower`). -8. **What3Words References** - - **W3W**: A geocoding system that encodes geographic coordinates into three dictionary words (e.g., ///filled.count.soap). - -Formal specification of the location types and how they are represented is in development, and will be documented here. diff --git a/src/contracts/location-proof-protocol/media/README.md b/src/contracts/location-proof-protocol/media/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/contracts/location-proof-protocol/recipes/CONTRIBUTING.md b/src/contracts/location-proof-protocol/recipes/CONTRIBUTING.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/contracts/location-proof-protocol/recipes/README.md b/src/contracts/location-proof-protocol/recipes/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/contracts/location-proof-protocol/recipes/sample-recipe/README.md b/src/contracts/location-proof-protocol/recipes/sample-recipe/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/contracts/location-proof-protocol/recipes/sample-recipe/SampleRecipe.sol b/src/contracts/location-proof-protocol/recipes/sample-recipe/SampleRecipe.sol deleted file mode 100644 index e69de29..0000000 diff --git a/src/contracts/location-proof-protocol/recipes/sample-recipe/offchain-peripherals/sample-recipe.ts b/src/contracts/location-proof-protocol/recipes/sample-recipe/offchain-peripherals/sample-recipe.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/contracts/location-proof-protocol/schema/README.md b/src/contracts/location-proof-protocol/schema/README.md deleted file mode 100644 index f0877ad..0000000 --- a/src/contracts/location-proof-protocol/schema/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Location Proof Protocol: Core Data Model v0.1 - -## Core Layer - -The core layer of the Location Proof Protocol includes a standard data model. v0.1 of the data model is described in this document. The -current working schema is deployed on Ethereum Sepolia testnet, UID `0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b` -([view on EASScan](https://sepolia.easscan.org/schema/view/0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b)). - -| Field | Description | Key | Data Type | Source | -| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------- | -| Identifier | Unique ID for the location proof. | `uid` | `bytes32` | EAS provides this | -| Prover Address | Address of the prover. | `from` | `address` | Sender address, as specified by EAS | -| Subject Identifier | Unique ID for the subject/event. | `subject` | `address` | EAS provides this, however future iterations may require IDs that are not Ethereum addresses (DIDs, for example) | -| Timestamp | Time the location proof was created. | `timestamp` | `uint256` | EAS | -| Event Timestamp | Time of the event referenced by the location proof. | `eventTimestamp` | `uint256` | User input | -| Spatial Reference System | Coordinate system within which the object is positioned. | `srs` | `string` | in v0.1, hard coded to "EPSG:4326" | -| Location Type | A string defining how the location field is structured. | `locationType` | `string` | Depends on the `recipe` / strategy, or user input | -| Location | The location of the object/event. | `location` | `bytes` | Depends on the `recipe` / strategy, or user input | -| Proof Recipe Identifier | Indicates the proof recipe used. | `recipeType` | `string[]` | Defined from a set of registered recipes, to be stored in the @/recipes directory | -| Proof Recipe Payload | Encoded data specific to the proof recipe, which could include encrypted location data, a zero-knowledge proof, or references to other verification data. | `recipePayload` | `bytes[]` | Specified in recipe definition | -| Media Type | A unique string referring to the media to be included in a `bytes` field, Media Data. This pattern is similar to OpenGraph Protocol’s `type` definition. | `mediaType` | `string[]` | Defined from a set of supported media types, to be stored in the @/media directory | -| Media Data | A `bytes` field allowing the attachment of arbitrary data to a location proof. This data is intended to be irrelevant to the location proof and not required/utilized in the proof recipe verification. | `mediaData` | `bytes[]` | Specified in media type definition | -| Memo | An arbitrary message | `memo` | `string` | User input | - -Note that this design supports location proofs that include multiple recipe types / recipe payloads and media type / media data. diff --git a/src/contracts/spatial-registry/README.md b/src/contracts/spatial-registry/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/contracts/spatial-registry/RegistryFactory.sol b/src/contracts/spatial-registry/RegistryFactory.sol deleted file mode 100644 index 30afa3d..0000000 --- a/src/contracts/spatial-registry/RegistryFactory.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-FileCopyrightText: ©️ 2024 Astral Protocol - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; - -import { Context } from "@openzeppelin/contracts/utils/Context.sol"; -import { SpatialRegistry } from "@contracts/SpatialRegistry.sol"; -import { IRegistryFactory } from "@interface/IRegistryFactory.sol"; - -/** - * @title RegistryFactory - * @author The Astral Protocol team - * @notice RegistryFactory contract is used to deploy spatial registries. - * RegistryFactory contract is operated by AstralProtocol, SpatialRegistries - * are operated by deployer - data provider - registry owner (organization). - */ - -// TODO: Add view functions OPT using ERC721Enumerable by oz. -contract RegistryFactory is IRegistryFactory, Context { - // TODO: (OPT) Restrict further, to allowed address list, is order to aviod malicious - // contract presenting themselves as Astral. - address[] public deployedRegistries; - address AstralProtocolOwner; - - constructor() { - // TODO: possibly redundant, can utilize "owner" on erc721 from oz. - AstralProtocolOwner = _msgSender(); - } - /** - * @inheritdoc IRegistryFactory - * @dev (needed for compiler https://github.com/ethereum/solidity/issues/14397) - */ - - function DeployRegistry(address owner) public { - SpatialRegistry newRegistry = new SpatialRegistry(owner); - deployedRegistries.push(address(newRegistry)); - } -} diff --git a/src/contracts/spatial-registry/SpatialRegistry.sol b/src/contracts/spatial-registry/SpatialRegistry.sol deleted file mode 100644 index 3ee78c8..0000000 --- a/src/contracts/spatial-registry/SpatialRegistry.sol +++ /dev/null @@ -1,69 +0,0 @@ -// SPDX-FileCopyrightText: ©️ 2024 Astral Protocol - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; - -import { ERC721, IERC165 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import { ERC721Enumerable } from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; -import { ISpatialRegistry } from "@interface/ISpatialRegistry.sol"; -import { Coordinates } from "@contracts/Coordinates.sol"; - -/** - * @title SpatialRegistry - * @author The Astral Protocol team - * @notice SpatialRegistry contract is used to manage spatial assets. - * It is created by the RegistryFactory.sol contract, - * Restrict state change (adding assets) to the deployer - data provider - registry organization. - */ -contract SpatialRegistry is ISpatialRegistry, ERC721 { - address owner; - uint256 private currentAssetId = 0; - /* All coords in the registry (of multiple registryAssets) */ - mapping(uint256 => registryAssets) spatialAssets; - - // TODO: add reentrancy, pausable, accessControl.. - // TODO: restrict to RegistryFactory contract. - Coordinates coordinates; - - constructor(address _owner) ERC721("AstralRegistry", "AST") { - owner = _owner; - coordinates = new Coordinates(); - } - - /** - * @inheritdoc ISpatialRegistry - * @dev (needed for compiler https://github.com/ethereum/solidity/issues/14397) - */ - function mintGISPoint(bytes32 lat, bytes32 long) external onlyOwner { - currentAssetId++; - uint256 CoordinateId = coordinates.addCoordinate(lat, long); - spatialAssets[currentAssetId] = registryAssets({ coordinateIdRange: [CoordinateId, CoordinateId] }); - _safeMint(owner, currentAssetId); - } - - /** - * @inheritdoc ISpatialRegistry - * @dev (needed for compiler https://github.com/ethereum/solidity/issues/14397) - */ - function mintGISFeature(bytes32[] calldata coords) external { - // TODO: Limit number of coords to avoid an unbounded loop. - currentAssetId++; - uint256[2] memory _coordinatesIdsRange = _iterateCoords(coords); - spatialAssets[currentAssetId] = registryAssets({ coordinateIdRange: _coordinatesIdsRange }); - _safeMint(owner, currentAssetId); - } - - function _iterateCoords(bytes32[] calldata _coords) private returns (uint256[2] memory _coordinatesIdsRange) { - for (uint256 i = 0; i < _coords.length; i += 2) { - uint256 _coordinateId = coordinates.addCoordinate(_coords[i], _coords[++i]); - if (i == 0) _coordinatesIdsRange[0] = _coordinateId; - if (i == _coords.length - 1) _coordinatesIdsRange[1] = _coordinateId; - } - return _coordinatesIdsRange; - } - - modifier onlyOwner() { - require(msg.sender == owner); - _; - } -} diff --git a/src/contracts/utils/Coordinates.sol b/src/contracts/utils/Coordinates.sol deleted file mode 100644 index c437537..0000000 --- a/src/contracts/utils/Coordinates.sol +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-FileCopyrightText: ©️ 2024 Astral Protocol - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; - -import { ICoordinate } from "@interface/ICoordinates.sol"; -import { Context } from "@openzeppelin/contracts/utils/Context.sol"; - -/** - * @title Coordinate.sol - * @author The Astral Protocol team - * @notice Coordinate contract storage, to be used only by the SpatialRegistry(.sol) that is associated to it. - * // TODO: Replace with SpatialAssets.sol. - * https://github.com/AstralProtocol/astralprotocol/blob/main/legacy/packages/contracts/contracts/SpatialAssets.sol - */ -contract Coordinates is ICoordinate, Context { - address registryAddress; - uint256 coordinateId = 0; - mapping(uint256 => Coordiante) public coordinates; - - constructor() { - registryAddress = _msgSender(); - } - - function addCoordinate(bytes32 _lat, bytes32 _long) public registryOnly returns (uint256 _coordinateId) { - coordinateId++; - coordinates[coordinateId] = Coordiante({ lat: _lat, long: _long, coordinateId: coordinateId }); - return coordinateId; - } - - modifier registryOnly() { - // TODO: (OPT) Throw custom Error() - require( - _msgSender() == registryAddress, "Coordinates.sol: Can only be called by Parent SpatialRegistry contract." - ); - _; - } -} - -/** - * @dev [TBD] coordianteSingleDimension, signed floating point representation of x,y,(z). typycally represents a - * geojson.ß - * TODO: Add represantation format type for additional formats (geoJSON used as default). - * TODO: Replace with bitwise operations, to be stored the leanest (uint64? [sign, exp, mantissa] - * OR [sign, precision, value] OR a better solution. ) - */ -// struct coordianteSingleDimension { -// uint8 sign; -// uint8 precision; -// uint8 value; -// } diff --git a/src/contracts/utils/README.md b/src/contracts/utils/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/interface/ICoordinates.sol b/src/interface/ICoordinates.sol deleted file mode 100644 index eb1e97e..0000000 --- a/src/interface/ICoordinates.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-FileCopyrightText: ©️ 2024 Astral Protocol - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; - -/** - * @title Coordinate.sol - * @author The Astral Protocol team - * @notice Coordinate contract storage, to be used only by the SpatialRegistry(.sol) that is associated to it. - * // TODO: Replace with SpatialAssets.sol. - * https://github.com/AstralProtocol/astralprotocol/blob/main/legacy/packages/contracts/contracts/SpatialAssets.sol - */ -interface ICoordinate { - /** - * @dev Coordinate, used as strings [ATM], signed floating point representation typycally represents a geojson. - */ - struct Coordiante { - uint256 coordinateId; - bytes32 lat; - bytes32 long; - } - - // TODO: add contractsOnly or a stricter RegistiresOnly modifier. - // To be used only by the parent registry. - /** - * - * @param lat Latitude coordinate in byte32. - * @param long Longitude coordinate in bytes32. - * @return coordinateId to be set on the registry asset - */ - function addCoordinate(bytes32 lat, bytes32 long) external returns (uint256 coordinateId); -} - -/** - * @dev [TBD] coordianteSingleDimension, signed floating point representation of x,y,(z). typycally represents a - * geojson.ß - * TODO: Add represantation format type for additional formats (geoJSON used as default). - * TODO: Replace with bitwise operations, to be stored the leanest (uint64? [sign, exp, mantissa] - * OR [sign, precision, value] OR a better solution. ) - */ -// struct coordianteSingleDimension { -// uint8 sign; -// uint8 precision; -// uint8 value; -// } diff --git a/src/interface/IRegistryFactory.sol b/src/interface/IRegistryFactory.sol deleted file mode 100644 index 4c76754..0000000 --- a/src/interface/IRegistryFactory.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-FileCopyrightText: ©️ 2024 Astral Protocol - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; - -/** - * @title RegistryFactory - * @author The Astral Protocol team - * @notice RegistryFactory contract is used to deploy spatial registries. - * RegistryFactory contract is operated by AstralProtocol, SpatialRegistries - * are operated by deployer - data provider - registry owner (organization). - */ -interface IRegistryFactory { - /** - * @dev DeployRegistry add deploy a new SpatialRegistry. - * @param owner registry owner. - */ - function DeployRegistry(address owner) external; - - // /** - // * @dev Emitted when a new spatial registry is created - // * TODO: optionally, inforce specific contract or interface πŸ‘‡ - // * @param associatedContract attestation, dMRV data, custom contract. - // * @param owner Registry owner - data provider - // */ - // // event SpatialRegistryDeployed(address associatedContract, address owner); -} diff --git a/src/interface/ISpatialRegistry.sol b/src/interface/ISpatialRegistry.sol deleted file mode 100644 index 9478e6b..0000000 --- a/src/interface/ISpatialRegistry.sol +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-FileCopyrightText: ©️ 2024 Astral Protocol - -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; - -import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; -import { IERC721Enumerable } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; - -/** - * @title SpatialRegistry - * @author The Astral Protocol team - * @notice SpatialRegistry contract is used to manage spatial assets. - * It is created by the RegistryFactory.sol contract, - * Restrict state change (adding assets) to the deployer - data provider - registry organization. - */ -interface ISpatialRegistry { - // // Address of the associated contract to the registry, i.e EAS attestation, zkMaps. - // address associatedContract; - // TODO: (OPT) Add multiple associated contracts, or to a specific asset, TBD. - - /** - * @dev GIS asset on the registry (point, line, polygon, etc) - */ - struct registryAssets { - uint256[2] coordinateIdRange; - } - // TODO: add geoDID, projection format, and whatever needs TBD. - // TODO: input IPFS hashes, as a light weight alternative to storing on the registry contract. - // TODO: (OPT) To be replaced with RegistryAsset.sol (legacy). - - /** - * @dev mintGISPoint add a new GIS record to the registry - * @dev multiple function for different number of coords - * @dev inherits tokenId from ERC721Enumerable - * @param lat latitude coordinate - * @param long longitude coordinate - * TODO: (opt) Remove method and use only a single coordinate array. - */ - function mintGISPoint(bytes32 lat, bytes32 long) external; - - /** - * @dev mintGISFeature add a new GIS record to the registry - * @param coords array - */ - function mintGISFeature(bytes32[] calldata coords) external; -} diff --git a/test/RegistryFactory.t.sol b/test/RegistryFactory.t.sol deleted file mode 100644 index a91adb5..0000000 --- a/test/RegistryFactory.t.sol +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity >=0.8.25; - -import { RegistryFactory } from "@contracts/RegistryFactory.sol"; - -interface IERC20 { - function balanceOf(address account) external view returns (uint256); -} - -/// @dev If this is your first time with Forge, read this tutorial in the Foundry Book: -/// https://book.getfoundry.sh/forge/writing-tests -contract RegistryFactoryTest { - RegistryFactory internal registryFactory; - - /// @dev A function invoked before each test case is run. - function setUp() public virtual { - // Instantiate the contract-under-test. - registryFactory = new RegistryFactory(); - } - - /// @dev Basic test. Run it with `forge test -vvv` to see the console log. - function test_Example() external { - registryFactory.DeployRegistry(address(this)); - } -}