From 6ecb4adcbd29960418c0cf084b1ca42fb10d2078 Mon Sep 17 00:00:00 2001 From: C4tWithShell Date: Thu, 14 Dec 2023 09:02:17 +0000 Subject: [PATCH] Auto update pages on 2023-12-14 09:02:17 --- 404.html | 20 ++ README.md | 15 + api-specification.html | 23 ++ .../authorizing-a-user-in-the-system.html | 53 +++ .../refreshing-authentication-tokens.html | 45 +++ .../retrieving-salt-values.html | 37 ++ .../assembling-a-contribution-flag.html | 51 +++ .../assembling-a-contribution.html | 53 +++ .../flagging-a-contribution.html | 41 +++ .../requesting-a-contribution-by-ID.html | 55 +++ .../retrieving-top-contributions.html | 81 +++++ .../submitting-a-contribution.html | 53 +++ .../requesting-peer-details.html | 63 ++++ .../retrieving-all-premium-peers.html | 45 +++ .../retrieving-peer-limit-status.html | 47 +++ ...emium-contributions-by-a-certain-peer.html | 49 +++ ...ncoming-premium-contribution-requests.html | 49 +++ ...utgoing-premium-contribution-requests.html | 49 +++ .../retrieving-credit-balance.html | 49 +++ assets/api-specification.md.0101f81a.js | 1 + assets/api-specification.md.0101f81a.lean.js | 1 + ...rizing-a-user-in-the-system.md.de9ef5d8.js | 31 ++ ...g-a-user-in-the-system.md.de9ef5d8.lean.js | 1 + ...shing-authentication-tokens.md.83bb59e1.js | 23 ++ ...-authentication-tokens.md.83bb59e1.lean.js | 1 + ...ller_retrieving-salt-values.md.3d55c4b6.js | 15 + ...retrieving-salt-values.md.3d55c4b6.lean.js | 1 + ...embling-a-contribution-flag.md.1a294380.js | 29 ++ ...ng-a-contribution-flag.md.1a294380.lean.js | 1 + ...r_assembling-a-contribution.md.ba760f8a.js | 31 ++ ...embling-a-contribution.md.ba760f8a.lean.js | 1 + ...ler_flagging-a-contribution.md.8045bcc6.js | 19 + ...lagging-a-contribution.md.8045bcc6.lean.js | 1 + ...esting-a-contribution-by-ID.md.f5b8ca6e.js | 33 ++ ...g-a-contribution-by-ID.md.f5b8ca6e.lean.js | 1 + ...etrieving-top-contributions.md.8a8ccdc2.js | 59 +++ ...ving-top-contributions.md.8a8ccdc2.lean.js | 1 + ...r_submitting-a-contribution.md.d3802ac5.js | 31 ++ ...mitting-a-contribution.md.d3802ac5.lean.js | 1 + ...ler_requesting-peer-details.md.b46e774b.js | 41 +++ ...equesting-peer-details.md.b46e774b.lean.js | 1 + ...etrieving-all-premium-peers.md.321bd301.js | 23 ++ ...ving-all-premium-peers.md.321bd301.lean.js | 1 + ...etrieving-peer-limit-status.md.df3df50c.js | 25 ++ ...ving-peer-limit-status.md.df3df50c.lean.js | 1 + ...ributions-by-a-certain-peer.md.b6c19900.js | 27 ++ ...ions-by-a-certain-peer.md.b6c19900.lean.js | 1 + ...emium-contribution-requests.md.81df4888.js | 27 ++ ...-contribution-requests.md.81df4888.lean.js | 1 + ...emium-contribution-requests.md.f991d04e.js | 27 ++ ...-contribution-requests.md.f991d04e.lean.js | 1 + ...r_retrieving-credit-balance.md.f0502e46.js | 27 ++ ...rieving-credit-balance.md.f0502e46.lean.js | 1 + assets/app.db3ae805.js | 1 + .../chunks/@localSearchIndexroot.2ac92fc8.js | 1 + assets/chunks/VPLocalSearchBox.0a23706f.js | 7 + assets/chunks/framework.c4d6cd72.js | 2 + assets/chunks/theme.3ff32677.js | 1 + assets/getting-started.md.0f93915a.js | 1 + assets/getting-started.md.0f93915a.lean.js | 1 + ...arted_calling-api-endpoints.md.14779e05.js | 1 + ..._calling-api-endpoints.md.14779e05.lean.js | 1 + ...d_checking-api-availability.md.f10291ac.js | 1 + ...cking-api-availability.md.f10291ac.lean.js | 1 + ...ted_public-test-environment.md.69e33594.js | 1 + ...ublic-test-environment.md.69e33594.lean.js | 1 + ...rted_registering-an-account.md.ac58196f.js | 1 + ...registering-an-account.md.ac58196f.lean.js | 1 + assets/index.md.433ae868.js | 1 + assets/index.md.433ae868.lean.js | 1 + .../inter-italic-cyrillic-ext.33bd5a8e.woff2 | Bin 0 -> 28332 bytes assets/inter-italic-cyrillic.ea42a392.woff2 | Bin 0 -> 17824 bytes assets/inter-italic-greek-ext.4fbe9427.woff2 | Bin 0 -> 12188 bytes assets/inter-italic-greek.8f4463c4.woff2 | Bin 0 -> 23264 bytes assets/inter-italic-latin-ext.bd8920cc.woff2 | Bin 0 -> 63552 bytes assets/inter-italic-latin.bd3b6f56.woff2 | Bin 0 -> 46048 bytes assets/inter-italic-vietnamese.6ce511fb.woff2 | Bin 0 -> 8784 bytes .../inter-roman-cyrillic-ext.e75737ce.woff2 | Bin 0 -> 26600 bytes assets/inter-roman-cyrillic.5f2c6c8c.woff2 | Bin 0 -> 16780 bytes assets/inter-roman-greek-ext.ab0619bc.woff2 | Bin 0 -> 11808 bytes assets/inter-roman-greek.d5a6d92a.woff2 | Bin 0 -> 21776 bytes assets/inter-roman-latin-ext.0030eebd.woff2 | Bin 0 -> 59608 bytes assets/inter-roman-latin.2ed14f66.woff2 | Bin 0 -> 42464 bytes assets/inter-roman-vietnamese.14ce25a6.woff2 | Bin 0 -> 8492 bytes assets/overview.md.7bb97411.js | 1 + assets/overview.md.7bb97411.lean.js | 1 + assets/overview_contributions.md.b0ab6068.js | 1 + ...overview_contributions.md.b0ab6068.lean.js | 1 + assets/overview_fraud-events.md.e3d26477.js | 1 + .../overview_fraud-events.md.e3d26477.lean.js | 1 + assets/overview_how-fib-works.md.c9900cfb.js | 1 + ...overview_how-fib-works.md.c9900cfb.lean.js | 1 + assets/overview_tokenomics.md.01957a7b.js | 1 + .../overview_tokenomics.md.01957a7b.lean.js | 1 + assets/overview_web-interface.md.2f541a4a.js | 1 + ...overview_web-interface.md.2f541a4a.lean.js | 1 + assets/public_README.md.a3457823.js | 1 + assets/public_README.md.a3457823.lean.js | 1 + assets/release-notes_index.md.908c2a0e.js | 1 + .../release-notes_index.md.908c2a0e.lean.js | 1 + assets/style.4c702090.css | 1 + assets/tutorials-api.md.02502bda.js | 1 + assets/tutorials-api.md.02502bda.lean.js | 1 + ...-api_authorizing-an-account.md.7f4066ec.js | 61 ++++ ...authorizing-an-account.md.7f4066ec.lean.js | 1 + ...api_flagging-a-contribution.md.4c6bdbfb.js | 163 +++++++++ ...lagging-a-contribution.md.4c6bdbfb.lean.js | 1 + ...ntribution-has-been-flagged.md.983c8ef8.js | 1 + ...ution-has-been-flagged.md.983c8ef8.lean.js | 1 + ...ls-api_generating-key-pairs.md.fcdf5ae2.js | 1 + ...i_generating-key-pairs.md.fcdf5ae2.lean.js | 1 + ...etrieving-top-contributions.md.2ee779e1.js | 141 ++++++++ ...ving-top-contributions.md.2ee779e1.lean.js | 1 + ...ls-api_signing-transactions.md.ac4233f9.js | 313 ++++++++++++++++ ...i_signing-transactions.md.ac4233f9.lean.js | 1 + ...igning-user-email-addresses.md.26112d07.js | 165 +++++++++ ...g-user-email-addresses.md.26112d07.lean.js | 1 + ...i_submitting-a-contribution.md.4e2f638d.js | 87 +++++ ...mitting-a-contribution.md.4e2f638d.lean.js | 1 + ...ribution-has-been-submitted.md.434872e9.js | 97 +++++ ...ion-has-been-submitted.md.434872e9.lean.js | 1 + assets/tutorials-web.md.7984286a.js | 1 + assets/tutorials-web.md.7984286a.lean.js | 1 + ...-web_downloading-fraud-data.md.bc499274.js | 1 + ...downloading-fraud-data.md.bc499274.lean.js | 1 + ...als-web_flagging-fraud-data.md.142aa03d.js | 1 + ...eb_flagging-fraud-data.md.142aa03d.lean.js | 1 + ...ls-web_uploading-fraud-data.md.ce234204.js | 1 + ...b_uploading-fraud-data.md.ce234204.lean.js | 1 + getting-started.html | 23 ++ getting-started/calling-api-endpoints.html | 23 ++ .../checking-api-availability.html | 23 ++ getting-started/public-test-environment.html | 23 ++ getting-started/registering-an-account.html | 23 ++ hashmap.json | 1 + index.html | 23 ++ orillion-logo.png | Bin 0 -> 12681 bytes overview.html | 23 ++ overview/contributions.html | 23 ++ overview/fraud-events.html | 23 ++ overview/how-fib-works.html | 23 ++ overview/tokenomics.html | 23 ++ overview/web-interface.html | 23 ++ public/README.html | 23 ++ release-notes/index.html | 23 ++ soramitsu-logo-1.png | Bin 0 -> 17624 bytes tutorials-api.html | 23 ++ tutorials-api/authorizing-an-account.html | 83 +++++ tutorials-api/flagging-a-contribution.html | 185 ++++++++++ ...fying-a-contribution-has-been-flagged.html | 23 ++ tutorials-api/generating-key-pairs.html | 23 ++ .../retrieving-top-contributions.html | 163 +++++++++ tutorials-api/signing-transactions.html | 335 ++++++++++++++++++ .../signing-user-email-addresses.html | 187 ++++++++++ tutorials-api/submitting-a-contribution.html | 109 ++++++ ...ing-a-contribution-has-been-submitted.html | 119 +++++++ tutorials-web.html | 23 ++ tutorials-web/downloading-fraud-data.html | 23 ++ tutorials-web/flagging-fraud-data.html | 23 ++ tutorials-web/uploading-fraud-data.html | 23 ++ 160 files changed, 4118 insertions(+) create mode 100644 404.html create mode 100644 README.md create mode 100644 api-specification.html create mode 100644 api-specification/auth-controller/authorizing-a-user-in-the-system.html create mode 100644 api-specification/auth-controller/refreshing-authentication-tokens.html create mode 100644 api-specification/auth-controller/retrieving-salt-values.html create mode 100644 api-specification/contribution-controller/assembling-a-contribution-flag.html create mode 100644 api-specification/contribution-controller/assembling-a-contribution.html create mode 100644 api-specification/contribution-controller/flagging-a-contribution.html create mode 100644 api-specification/contribution-controller/requesting-a-contribution-by-ID.html create mode 100644 api-specification/contribution-controller/retrieving-top-contributions.html create mode 100644 api-specification/contribution-controller/submitting-a-contribution.html create mode 100644 api-specification/peer-controller/requesting-peer-details.html create mode 100644 api-specification/peer-controller/retrieving-all-premium-peers.html create mode 100644 api-specification/peer-controller/retrieving-peer-limit-status.html create mode 100644 api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.html create mode 100644 api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.html create mode 100644 api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.html create mode 100644 api-specification/wallet-controller/retrieving-credit-balance.html create mode 100644 assets/api-specification.md.0101f81a.js create mode 100644 assets/api-specification.md.0101f81a.lean.js create mode 100644 assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.js create mode 100644 assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.lean.js create mode 100644 assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.js create mode 100644 assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.lean.js create mode 100644 assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.js create mode 100644 assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.lean.js create mode 100644 assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.js create mode 100644 assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.lean.js create mode 100644 assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.js create mode 100644 assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.lean.js create mode 100644 assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.js create mode 100644 assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.lean.js create mode 100644 assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.js create mode 100644 assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.lean.js create mode 100644 assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.js create mode 100644 assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.lean.js create mode 100644 assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.js create mode 100644 assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.lean.js create mode 100644 assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.js create mode 100644 assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.lean.js create mode 100644 assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.js create mode 100644 assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.lean.js create mode 100644 assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.js create mode 100644 assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.lean.js create mode 100644 assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.js create mode 100644 assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.lean.js create mode 100644 assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.js create mode 100644 assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.lean.js create mode 100644 assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.js create mode 100644 assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.lean.js create mode 100644 assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.js create mode 100644 assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.lean.js create mode 100644 assets/app.db3ae805.js create mode 100644 assets/chunks/@localSearchIndexroot.2ac92fc8.js create mode 100644 assets/chunks/VPLocalSearchBox.0a23706f.js create mode 100644 assets/chunks/framework.c4d6cd72.js create mode 100644 assets/chunks/theme.3ff32677.js create mode 100644 assets/getting-started.md.0f93915a.js create mode 100644 assets/getting-started.md.0f93915a.lean.js create mode 100644 assets/getting-started_calling-api-endpoints.md.14779e05.js create mode 100644 assets/getting-started_calling-api-endpoints.md.14779e05.lean.js create mode 100644 assets/getting-started_checking-api-availability.md.f10291ac.js create mode 100644 assets/getting-started_checking-api-availability.md.f10291ac.lean.js create mode 100644 assets/getting-started_public-test-environment.md.69e33594.js create mode 100644 assets/getting-started_public-test-environment.md.69e33594.lean.js create mode 100644 assets/getting-started_registering-an-account.md.ac58196f.js create mode 100644 assets/getting-started_registering-an-account.md.ac58196f.lean.js create mode 100644 assets/index.md.433ae868.js create mode 100644 assets/index.md.433ae868.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 create mode 100644 assets/inter-italic-cyrillic.ea42a392.woff2 create mode 100644 assets/inter-italic-greek-ext.4fbe9427.woff2 create mode 100644 assets/inter-italic-greek.8f4463c4.woff2 create mode 100644 assets/inter-italic-latin-ext.bd8920cc.woff2 create mode 100644 assets/inter-italic-latin.bd3b6f56.woff2 create mode 100644 assets/inter-italic-vietnamese.6ce511fb.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.e75737ce.woff2 create mode 100644 assets/inter-roman-cyrillic.5f2c6c8c.woff2 create mode 100644 assets/inter-roman-greek-ext.ab0619bc.woff2 create mode 100644 assets/inter-roman-greek.d5a6d92a.woff2 create mode 100644 assets/inter-roman-latin-ext.0030eebd.woff2 create mode 100644 assets/inter-roman-latin.2ed14f66.woff2 create mode 100644 assets/inter-roman-vietnamese.14ce25a6.woff2 create mode 100644 assets/overview.md.7bb97411.js create mode 100644 assets/overview.md.7bb97411.lean.js create mode 100644 assets/overview_contributions.md.b0ab6068.js create mode 100644 assets/overview_contributions.md.b0ab6068.lean.js create mode 100644 assets/overview_fraud-events.md.e3d26477.js create mode 100644 assets/overview_fraud-events.md.e3d26477.lean.js create mode 100644 assets/overview_how-fib-works.md.c9900cfb.js create mode 100644 assets/overview_how-fib-works.md.c9900cfb.lean.js create mode 100644 assets/overview_tokenomics.md.01957a7b.js create mode 100644 assets/overview_tokenomics.md.01957a7b.lean.js create mode 100644 assets/overview_web-interface.md.2f541a4a.js create mode 100644 assets/overview_web-interface.md.2f541a4a.lean.js create mode 100644 assets/public_README.md.a3457823.js create mode 100644 assets/public_README.md.a3457823.lean.js create mode 100644 assets/release-notes_index.md.908c2a0e.js create mode 100644 assets/release-notes_index.md.908c2a0e.lean.js create mode 100644 assets/style.4c702090.css create mode 100644 assets/tutorials-api.md.02502bda.js create mode 100644 assets/tutorials-api.md.02502bda.lean.js create mode 100644 assets/tutorials-api_authorizing-an-account.md.7f4066ec.js create mode 100644 assets/tutorials-api_authorizing-an-account.md.7f4066ec.lean.js create mode 100644 assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.js create mode 100644 assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.lean.js create mode 100644 assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.js create mode 100644 assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.lean.js create mode 100644 assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.js create mode 100644 assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.lean.js create mode 100644 assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.js create mode 100644 assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.lean.js create mode 100644 assets/tutorials-api_signing-transactions.md.ac4233f9.js create mode 100644 assets/tutorials-api_signing-transactions.md.ac4233f9.lean.js create mode 100644 assets/tutorials-api_signing-user-email-addresses.md.26112d07.js create mode 100644 assets/tutorials-api_signing-user-email-addresses.md.26112d07.lean.js create mode 100644 assets/tutorials-api_submitting-a-contribution.md.4e2f638d.js create mode 100644 assets/tutorials-api_submitting-a-contribution.md.4e2f638d.lean.js create mode 100644 assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.js create mode 100644 assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.lean.js create mode 100644 assets/tutorials-web.md.7984286a.js create mode 100644 assets/tutorials-web.md.7984286a.lean.js create mode 100644 assets/tutorials-web_downloading-fraud-data.md.bc499274.js create mode 100644 assets/tutorials-web_downloading-fraud-data.md.bc499274.lean.js create mode 100644 assets/tutorials-web_flagging-fraud-data.md.142aa03d.js create mode 100644 assets/tutorials-web_flagging-fraud-data.md.142aa03d.lean.js create mode 100644 assets/tutorials-web_uploading-fraud-data.md.ce234204.js create mode 100644 assets/tutorials-web_uploading-fraud-data.md.ce234204.lean.js create mode 100644 getting-started.html create mode 100644 getting-started/calling-api-endpoints.html create mode 100644 getting-started/checking-api-availability.html create mode 100644 getting-started/public-test-environment.html create mode 100644 getting-started/registering-an-account.html create mode 100644 hashmap.json create mode 100644 index.html create mode 100644 orillion-logo.png create mode 100644 overview.html create mode 100644 overview/contributions.html create mode 100644 overview/fraud-events.html create mode 100644 overview/how-fib-works.html create mode 100644 overview/tokenomics.html create mode 100644 overview/web-interface.html create mode 100644 public/README.html create mode 100644 release-notes/index.html create mode 100644 soramitsu-logo-1.png create mode 100644 tutorials-api.html create mode 100644 tutorials-api/authorizing-an-account.html create mode 100644 tutorials-api/flagging-a-contribution.html create mode 100644 tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.html create mode 100644 tutorials-api/generating-key-pairs.html create mode 100644 tutorials-api/retrieving-top-contributions.html create mode 100644 tutorials-api/signing-transactions.html create mode 100644 tutorials-api/signing-user-email-addresses.html create mode 100644 tutorials-api/submitting-a-contribution.html create mode 100644 tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.html create mode 100644 tutorials-web.html create mode 100644 tutorials-web/downloading-fraud-data.html create mode 100644 tutorials-web/flagging-fraud-data.html create mode 100644 tutorials-web/uploading-fraud-data.html diff --git a/404.html b/404.html new file mode 100644 index 0000000..030f1d1 --- /dev/null +++ b/404.html @@ -0,0 +1,20 @@ + + + + + + 404 | FIB Documentation + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6927822 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Fraud Intelligence Blockchain documentation + +This repository contains the static site as pre-built HTML files for the [FIB documentation](https://fraud-intelligence-limited.github.io/). + +[VitePress](https://vitepress.dev/) documentation generator is used to render them. + +To work with the documentation, visit the [original repository](https://github.com/fraud-intelligence-limited/documentation). + +## Troubleshooting + +Please use the [GitHub issues](https://github.com/fraud-intelligence-limited/documentation/issues) to discuss documentation contents. + +If you are experiencing any issues with FIB, please submit them at [Fraud Intelligence Blockchain Freshdesk](https://ragfraudblockchain.freshdesk.com/a/dashboard/default). Upon review, someone will get back to you to resolve the issue. + +Additionally, you may contact FIL via email at support@fraudintelligencelimited.com diff --git a/api-specification.html b/api-specification.html new file mode 100644 index 0000000..2849cf9 --- /dev/null +++ b/api-specification.html @@ -0,0 +1,23 @@ + + + + + + API Specification | FIB Documentation + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/api-specification/auth-controller/authorizing-a-user-in-the-system.html b/api-specification/auth-controller/authorizing-a-user-in-the-system.html new file mode 100644 index 0000000..3c807a3 --- /dev/null +++ b/api-specification/auth-controller/authorizing-a-user-in-the-system.html @@ -0,0 +1,53 @@ + + + + + + Authorizing a user in the system | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Authorizing a user in the system

Protocol: HTTP

EncodingJSON

Endpoint/auth/api/v1/authentication-management/session

MethodPOST

Parameters: —

Input/request structure:

Show
json5
{
+  email: 'string', //The user’s email address
+  signature: 'string', //The encoded signature of a user’s email address
+  publicKey: 'string' //The public key of the authentication key pair
+}
{
+  email: 'string', //The user’s email address
+  signature: 'string', //The encoded signature of a user’s email address
+  publicKey: 'string' //The public key of the authentication key pair
+}

Note

For instructions on how to generate signature and publicKey strings, see Generating key pairs and Signing user email addresses.

Output/response structure:

Show
json5
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: {
+    accessToken: 'string',
+    refreshToken: 'string',
+    expirationTime: 0 //integer($int64)
+  }
+}
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: {
+    accessToken: 'string',
+    refreshToken: 'string',
+    expirationTime: 0 //integer($int64)
+  }
+}

Responses

Response CodeDescription
200User authorization has been successful.
401User signature is incorrect or failed to be decoded.
404User not found.
422User signature either could not be decoded or verified, or the publicKey string is not valid.
500Internal server error.
+ + + + \ No newline at end of file diff --git a/api-specification/auth-controller/refreshing-authentication-tokens.html b/api-specification/auth-controller/refreshing-authentication-tokens.html new file mode 100644 index 0000000..8a67b09 --- /dev/null +++ b/api-specification/auth-controller/refreshing-authentication-tokens.html @@ -0,0 +1,45 @@ + + + + + + Refreshing authentication tokens | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Refreshing authentication tokens

Protocol: HTTP

Encoding: JSON

Endpoint/auth/api/v1/authentication-management/session

MethodPATCH

Header: Authorization is represented by a string that is the refreshToken value that was returned either at the authorization, or the previous time the token has been refreshed.

Parameters: —

Input/request structure:

A PATCH request to the endpoint, where the Authorization header is required.

Output/response structure:

Show
json5
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: {
+    accessToken: 'string',
+    refreshToken: 'string',
+    expirationTime: 0 //integer($int64)
+  }
+}
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: {
+    accessToken: 'string',
+    refreshToken: 'string',
+    expirationTime: 0 //integer($int64)
+  }
+}

Responses

Response CodeDescription
200Authentication tokens have been refreshed successfully.
401Either the signature or refresh token are not valid, or the Bearer token could not be parsed from the Authorization header.
404User not found.
500Internal server error.
+ + + + \ No newline at end of file diff --git a/api-specification/auth-controller/retrieving-salt-values.html b/api-specification/auth-controller/retrieving-salt-values.html new file mode 100644 index 0000000..b2d9220 --- /dev/null +++ b/api-specification/auth-controller/retrieving-salt-values.html @@ -0,0 +1,37 @@ + + + + + + Retrieving salt values | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Retrieving salt values

Protocol: HTTP

Encoding: JSON

Endpoint/auth/api/v1/authentication-management/salt

MethodGET

Parameters: —

Input/request structure:

A GET request to the endpoint.

Output/response structure:

Show
json5
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: 'string'
+}
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: 'string'
+}

Responses

Response CodeDescription
200Deterministic salt persisted on the blockchain has been retrieved successfully.
404User not found.
500Internal server error.
+ + + + \ No newline at end of file diff --git a/api-specification/contribution-controller/assembling-a-contribution-flag.html b/api-specification/contribution-controller/assembling-a-contribution-flag.html new file mode 100644 index 0000000..c7cb921 --- /dev/null +++ b/api-specification/contribution-controller/assembling-a-contribution-flag.html @@ -0,0 +1,51 @@ + + + + + + Assembling a contribution flag | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Assembling a contribution flag

Protocol: HTTP

EncodingJSON

Endpoint/data/api/v1/contribution-manager/contribution/flag/assemble

MethodPATCH

Parameters: —

Input/request structure:

Show
json5
{
+  assetIds: [
+    {
+      definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+      accountId: 'user@peerId'
+    }
+  ]
+}
{
+  assetIds: [
+    {
+      definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+      accountId: 'user@peerId'
+    }
+  ]
+}

Output/response structure:

Show
json5
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: 'string'
+}
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: 'string'
+}

Responses

Response CodeDescription
200Contribution flag has been assembled and its transaction data has been retrieved successfully.
400The request body of the contribution flag is incorrect or premium contribution can't be changed.
404Asset not found.
500Internal server error.
+ + + + \ No newline at end of file diff --git a/api-specification/contribution-controller/assembling-a-contribution.html b/api-specification/contribution-controller/assembling-a-contribution.html new file mode 100644 index 0000000..e78aa32 --- /dev/null +++ b/api-specification/contribution-controller/assembling-a-contribution.html @@ -0,0 +1,53 @@ + + + + + + Assembling a contribution | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Assembling a contribution

Protocol: HTTP

EncodingJSON

Endpoint/data/api/v1/contribution-management/contribution/assemble

MethodPOST

Parameters: —

Input/request structure:

Show
json5
[
+  {
+    id: 'string', //fraud identifier value
+    fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
+    origination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+    destination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+    expiryDate: 0 //integer($int32), Unix Epoch Time in seconds
+  }
+]
[
+  {
+    id: 'string', //fraud identifier value
+    fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
+    origination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+    destination: 'string', //two-digit country code (Alpha-2, ISO 3166)
+    expiryDate: 0 //integer($int32), Unix Epoch Time in seconds
+  }
+]

Note

This endpoint accepts requests with up to 500 entries.

Output/response structure:

Show
json5
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: 'string'
+}
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: 'string'
+}

Responses

Response CodeDescription
200Contribution has been assembled and its transaction data has been retrieved successfully.
400Contribution type is invalid.
404Account not found or the rewards table doesn't exist.
500Internal server error.
+ + + + \ No newline at end of file diff --git a/api-specification/contribution-controller/flagging-a-contribution.html b/api-specification/contribution-controller/flagging-a-contribution.html new file mode 100644 index 0000000..d640ed3 --- /dev/null +++ b/api-specification/contribution-controller/flagging-a-contribution.html @@ -0,0 +1,41 @@ + + + + + + Flagging a contribution | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Flagging a contribution

Protocol: HTTP

EncodingJSON

Endpoint/data/api/v1/contribution-management/contribution/flag

MethodPATCH

Parameters: —

Input/request structure:

Show
json5
'string'
'string'

Output/response structure:

Show
json5
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: {
+    rewarded: 0 //integer($int32)
+  }
+}
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: {
+    rewarded: 0 //integer($int32)
+  }
+}

Responses

Response CodeDescription
200Contribution has been flagged and its transaction data has been retrieved successfully.
400Invalid transaction.
500Internal server error.
+ + + + \ No newline at end of file diff --git a/api-specification/contribution-controller/requesting-a-contribution-by-ID.html b/api-specification/contribution-controller/requesting-a-contribution-by-ID.html new file mode 100644 index 0000000..391e726 --- /dev/null +++ b/api-specification/contribution-controller/requesting-a-contribution-by-ID.html @@ -0,0 +1,55 @@ + + + + + + Requesting a contribution by ID | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Requesting a contribution by ID

Protocol: HTTP

EncodingJSON

Endpoint/data/api/v1/contribution-management/contribution/{contributionID}

MethodGET

Parameters:

FieldValue TypeDescription
contributionIDstring(path)Range of id values (Fraud Identifiers), or a single one.

Input/request structure:

A GET request to the endpoint, where {contributionID} is a required parameter.

Output/response structure:

Show
json5
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: [
+    {
+      assetIds: [
+        {
+          definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+          accountId: 'user@peerId'
+        }
+      ]
+    }
+  ]
+}
{
+  status: {
+    code: 0, //integer($int32)
+    name: 'string',
+    message: 'string'
+  },
+  data: [
+    {
+      assetIds: [
+        {
+          definitionId: 'Id_range#domain', //IP/telephone number/IMEI
+          accountId: 'user@peerId'
+        }
+      ]
+    }
+  ]
+}

Responses

Response CodeDescription
200Contribution has been successfully retrieved by its ID.
400Contribution ID is incorrect or the fraud type could not be resolved by code.
500Internal server error.
+ + + + \ No newline at end of file diff --git a/api-specification/contribution-controller/retrieving-top-contributions.html b/api-specification/contribution-controller/retrieving-top-contributions.html new file mode 100644 index 0000000..1199a2d --- /dev/null +++ b/api-specification/contribution-controller/retrieving-top-contributions.html @@ -0,0 +1,81 @@ + + + + + + Retrieving top contributions | FIB Documentation + + + + + + + + + + + + +
Skip to content
Orillion logoSoramitsu logo

Retrieving top contributions

Protocol: HTTP

EncodingJSON

Endpoint/data/api/v1/contribution-management/contribution

MethodGET

Parameters:

FieldValue TypeDescription
sizeinteger($int32)The number of entries, starting with the latest, shown in the response.
Set to 50 by default.
from and tostringThe timeframe that the response entries are filtered by (set as Unix Epoch time in seconds).
The from parameter is set to 0 by default.
ftarray[string]The type of the fraud event.
Could be one of the following:
  1. Wangiri
  2. IRSF
  3. StolenDevice
  4. IPFraud
  5. SMSA2P
orgarray[string]The country of origination of the fraud event. Set as a two-digit country code (Alpha-2, ISO 3166; e.g., US, GA)
self-onlybooleanA boolean that defines whether the response should only contain contributions submitted by the requesting peer.
The self-only parameter is set to false by default.
fetch-modestringThe parameter that filters the response entries based on whether the requesting user has already seen them.
Could be one of the following:
  1. NEW — includes only the unseen by the requesting user entries.
  • OLD — includes only the already seen by the requesting user entries.
  • DEFAULT — includes all of the entries.

  • The fetch-mode parameter is set to DEFAULT by default.
    fetch-modestringThe parameter that filters the response entries based on whether the requesting user has already seen them.
    Could be one of the following:
    1. NEW — includes only the unseen by the requesting user entries.
    2. OLD — includes only the already seen by the requesting user entries.
    3. DEFAULT — includes all of the entries.

    The fetch-mode parameter is set to DEFAULT by default.
    confidence-scorebooleanA boolean that defines whether the price of the retrieved contributions is affected by the confidence index. If set to true, the price of any given contribution is expected to rise above the default conversion rate.
    The confidence-score parameter is set to false by default.

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    contributions: [
    +      {
    +        id: 'string',
    +        fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +        origination: 'string',
    +        destination: 'string',
    +        expiryDate: 0, //integer($int32)
    +        fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +        confidenceIndex: 0, //number($double)
    +        isPremium: true, //boolean
    +        peerId: 'string',
    +        flagger: 'string',
    +        premium: true //boolean
    +      }
    +    ],
    +    details: {
    +      self: 0,
    +      old: 0,
    +      new: 0,
    +      creditsSpent: 0
    +    }
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    contributions: [
    +      {
    +        id: 'string',
    +        fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +        origination: 'string',
    +        destination: 'string',
    +        expiryDate: 0, //integer($int32)
    +        fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +        confidenceIndex: 0, //number($double)
    +        isPremium: true, //boolean
    +        peerId: 'string',
    +        flagger: 'string',
    +        premium: true //boolean
    +      }
    +    ],
    +    details: {
    +      self: 0,
    +      old: 0,
    +      new: 0,
    +      creditsSpent: 0
    +    }
    +  }
    +}

    Responses

    Response CodeDescription
    200Contributions have been successfully retrieved and filtered by the specified parameters.
    400Request parameters are invalid or the fraud type could not be resolved by code.
    404Contribution subscription has not been found.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/contribution-controller/submitting-a-contribution.html b/api-specification/contribution-controller/submitting-a-contribution.html new file mode 100644 index 0000000..a0da575 --- /dev/null +++ b/api-specification/contribution-controller/submitting-a-contribution.html @@ -0,0 +1,53 @@ + + + + + + Submitting a contribution | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Submitting a contribution

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/contribution-management/contribution

    MethodPOST

    Parameters: —

    Input/request structure:

    Show
    json5
    'string'
    'string'

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenIds: [
    +      {
    +        definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +        accountId: 'user@peerId'
    +      }
    +    ],
    +    rewarded: 0 //integer($int32)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenIds: [
    +      {
    +        definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +        accountId: 'user@peerId'
    +      }
    +    ],
    +    rewarded: 0 //integer($int32)
    +  }
    +}

    Responses

    Response CodeDescription
    200Contribution has been submitted and its transaction data has been retrieved successfully.
    400Invalid transaction.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/peer-controller/requesting-peer-details.html b/api-specification/peer-controller/requesting-peer-details.html new file mode 100644 index 0000000..e9f34e9 --- /dev/null +++ b/api-specification/peer-controller/requesting-peer-details.html @@ -0,0 +1,63 @@ + + + + + + Requesting peer details | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Requesting peer details

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/peer-management/details

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accountId: 'string',
    +    domainId: 'string',
    +    accountMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    },
    +    domainMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    }
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accountId: 'string',
    +    domainId: 'string',
    +    accountMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    },
    +    domainMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    }
    +  }
    +}

    Responses

    Response CodeDescription
    200Peer details have been retrieved successfully.
    404User/domain/account/asset not found.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/peer-controller/retrieving-all-premium-peers.html b/api-specification/peer-controller/retrieving-all-premium-peers.html new file mode 100644 index 0000000..37a5b8e --- /dev/null +++ b/api-specification/peer-controller/retrieving-all-premium-peers.html @@ -0,0 +1,45 @@ + + + + + + Retrieving all premium peers | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Retrieving all premium peers

    Protocol: HTTP

    EncodingJSON

    Endpoint/auth/api/v1/peer-management/premium

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      peerId: 'string' //A unique identifier of a peer
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      peerId: 'string' //A unique identifier of a peer
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200All premium peers have been retrieved successfully.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/peer-controller/retrieving-peer-limit-status.html b/api-specification/peer-controller/retrieving-peer-limit-status.html new file mode 100644 index 0000000..6246c42 --- /dev/null +++ b/api-specification/peer-controller/retrieving-peer-limit-status.html @@ -0,0 +1,47 @@ + + + + + + Retrieving peer limit status | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Retrieving peer limit status

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/peer-management/limit

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0,
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    used: 0,
    +    total: 0,
    +    updatePeriod: 0,
    +    nextUpdate: 0
    +  }
    +}
    {
    +  status: {
    +    code: 0,
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    used: 0,
    +    total: 0,
    +    updatePeriod: 0,
    +    nextUpdate: 0
    +  }
    +}

    Responses

    Response CodeDescription
    200Peer limit status has been retrieved successfully
    404Metadata key not found or Trigger's period not specified
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.html b/api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.html new file mode 100644 index 0000000..14a4121 --- /dev/null +++ b/api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.html @@ -0,0 +1,49 @@ + + + + + + Requesting access to premium contributions by a certain peer | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Requesting access to premium contributions by a certain peer

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/premium-provider-management/application?peer={peerID}

    MethodPOST

    Parameters:

    FieldValue TypeDescription
    peerstringA unique peer identifier.
    peer is a required parameter. See Retrieving all premium peer.

    Input/request structure:

    A POST request to the endpoint, where peer is a unique peer identifier.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'PENDING' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'PENDING' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200Access to premium contributions by a certain peer has been requested.
    400The Entity field is not set.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.html b/api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.html new file mode 100644 index 0000000..52ec8b5 --- /dev/null +++ b/api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.html @@ -0,0 +1,49 @@ + + + + + + Retrieving incoming premium contribution requests | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Retrieving incoming premium contribution requests

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/premium-provider-management/incoming

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200Incoming premium contribution requests have been retrieved successfully.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.html b/api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.html new file mode 100644 index 0000000..021709e --- /dev/null +++ b/api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.html @@ -0,0 +1,49 @@ + + + + + + Retrieving outgoing premium contribution requests | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Retrieving outgoing premium contribution requests

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/premium-provider-management/outgoing

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200Outgoing premium contribution requests have been retrieved successfully.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/api-specification/wallet-controller/retrieving-credit-balance.html b/api-specification/wallet-controller/retrieving-credit-balance.html new file mode 100644 index 0000000..afd04a5 --- /dev/null +++ b/api-specification/wallet-controller/retrieving-credit-balance.html @@ -0,0 +1,49 @@ + + + + + + Retrieving credit balance | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Retrieving credit balance

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/wallet-management/balance

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenId: {
    +      definitionId: 'credit#admin',
    +      accountId: 'user@peerId'
    +    },
    +    balance: 0 //integer($int32)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenId: {
    +      definitionId: 'credit#admin',
    +      accountId: 'user@peerId'
    +    },
    +    balance: 0 //integer($int32)
    +  }
    +}

    Responses

    Response CodeDescription
    200Credit balance has been retrieved successfully.
    500Internal server error.
    + + + + \ No newline at end of file diff --git a/assets/api-specification.md.0101f81a.js b/assets/api-specification.md.0101f81a.js new file mode 100644 index 0000000..ceb14f2 --- /dev/null +++ b/assets/api-specification.md.0101f81a.js @@ -0,0 +1 @@ +import{_ as i,o as e,c as t,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"API Specification","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification.md","filePath":"api-specification.md"}'),r={name:"api-specification.md"},n=o('

    API Specification

    The following FIB API endpoints are available for implementation into the code of your own application or system:

    1. auth-controller
    2. wallet-controller
    3. peer-controller
    4. contribution-controller
    5. premium-provider-controller
    ',3),a=[n];function l(c,s,p,u,m,f){return e(),t("div",null,a)}const b=i(r,[["render",l]]);export{g as __pageData,b as default}; diff --git a/assets/api-specification.md.0101f81a.lean.js b/assets/api-specification.md.0101f81a.lean.js new file mode 100644 index 0000000..7bd8de1 --- /dev/null +++ b/assets/api-specification.md.0101f81a.lean.js @@ -0,0 +1 @@ +import{_ as i,o as e,c as t,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"API Specification","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification.md","filePath":"api-specification.md"}'),r={name:"api-specification.md"},n=o("",3),a=[n];function l(c,s,p,u,m,f){return e(),t("div",null,a)}const b=i(r,[["render",l]]);export{g as __pageData,b as default}; diff --git a/assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.js b/assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.js new file mode 100644 index 0000000..e4b224c --- /dev/null +++ b/assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.js @@ -0,0 +1,31 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const h=JSON.parse('{"title":"Authorizing a user in the system","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/auth-controller/authorizing-a-user-in-the-system.md","filePath":"api-specification/auth-controller/authorizing-a-user-in-the-system.md"}'),l={name:"api-specification/auth-controller/authorizing-a-user-in-the-system.md"},e=o(`

    Authorizing a user in the system

    Protocol: HTTP

    EncodingJSON

    Endpoint/auth/api/v1/authentication-management/session

    MethodPOST

    Parameters: —

    Input/request structure:

    Show
    json5
    {
    +  email: 'string', //The user’s email address
    +  signature: 'string', //The encoded signature of a user’s email address
    +  publicKey: 'string' //The public key of the authentication key pair
    +}
    {
    +  email: 'string', //The user’s email address
    +  signature: 'string', //The encoded signature of a user’s email address
    +  publicKey: 'string' //The public key of the authentication key pair
    +}

    Note

    For instructions on how to generate signature and publicKey strings, see Generating key pairs and Signing user email addresses.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accessToken: 'string',
    +    refreshToken: 'string',
    +    expirationTime: 0 //integer($int64)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accessToken: 'string',
    +    refreshToken: 'string',
    +    expirationTime: 0 //integer($int64)
    +  }
    +}

    Responses

    Response CodeDescription
    200User authorization has been successful.
    401User signature is incorrect or failed to be decoded.
    404User not found.
    422User signature either could not be decoded or verified, or the publicKey string is not valid.
    500Internal server error.
    `,12),t=[e];function p(r,c,i,E,y,d){return n(),a("div",null,t)}const g=s(l,[["render",p]]);export{h as __pageData,g as default}; diff --git a/assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.lean.js b/assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.lean.js new file mode 100644 index 0000000..6caad69 --- /dev/null +++ b/assets/api-specification_auth-controller_authorizing-a-user-in-the-system.md.de9ef5d8.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const h=JSON.parse('{"title":"Authorizing a user in the system","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/auth-controller/authorizing-a-user-in-the-system.md","filePath":"api-specification/auth-controller/authorizing-a-user-in-the-system.md"}'),l={name:"api-specification/auth-controller/authorizing-a-user-in-the-system.md"},e=o("",12),t=[e];function p(r,c,i,E,y,d){return n(),a("div",null,t)}const g=s(l,[["render",p]]);export{h as __pageData,g as default}; diff --git a/assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.js b/assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.js new file mode 100644 index 0000000..2ae6ffa --- /dev/null +++ b/assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.js @@ -0,0 +1,23 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Refreshing authentication tokens","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/auth-controller/refreshing-authentication-tokens.md","filePath":"api-specification/auth-controller/refreshing-authentication-tokens.md"}'),o={name:"api-specification/auth-controller/refreshing-authentication-tokens.md"},t=e(`

    Refreshing authentication tokens

    Protocol: HTTP

    Encoding: JSON

    Endpoint/auth/api/v1/authentication-management/session

    MethodPATCH

    Header: Authorization is represented by a string that is the refreshToken value that was returned either at the authorization, or the previous time the token has been refreshed.

    Parameters: —

    Input/request structure:

    A PATCH request to the endpoint, where the Authorization header is required.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accessToken: 'string',
    +    refreshToken: 'string',
    +    expirationTime: 0 //integer($int64)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accessToken: 'string',
    +    refreshToken: 'string',
    +    expirationTime: 0 //integer($int64)
    +  }
    +}

    Responses

    Response CodeDescription
    200Authentication tokens have been refreshed successfully.
    401Either the signature or refresh token are not valid, or the Bearer token could not be parsed from the Authorization header.
    404User not found.
    500Internal server error.
    `,13),p=[t];function l(r,c,i,E,d,y){return n(),a("div",null,p)}const g=s(o,[["render",l]]);export{u as __pageData,g as default}; diff --git a/assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.lean.js b/assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.lean.js new file mode 100644 index 0000000..f1042f4 --- /dev/null +++ b/assets/api-specification_auth-controller_refreshing-authentication-tokens.md.83bb59e1.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Refreshing authentication tokens","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/auth-controller/refreshing-authentication-tokens.md","filePath":"api-specification/auth-controller/refreshing-authentication-tokens.md"}'),o={name:"api-specification/auth-controller/refreshing-authentication-tokens.md"},t=e("",13),p=[t];function l(r,c,i,E,d,y){return n(),a("div",null,p)}const g=s(o,[["render",l]]);export{u as __pageData,g as default}; diff --git a/assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.js b/assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.js new file mode 100644 index 0000000..fb5fcb0 --- /dev/null +++ b/assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.js @@ -0,0 +1,15 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Retrieving salt values","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/auth-controller/retrieving-salt-values.md","filePath":"api-specification/auth-controller/retrieving-salt-values.md"}'),t={name:"api-specification/auth-controller/retrieving-salt-values.md"},o=e(`

    Retrieving salt values

    Protocol: HTTP

    Encoding: JSON

    Endpoint/auth/api/v1/authentication-management/salt

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: 'string'
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: 'string'
    +}

    Responses

    Response CodeDescription
    200Deterministic salt persisted on the blockchain has been retrieved successfully.
    404User not found.
    500Internal server error.
    `,12),l=[o];function p(r,c,i,d,E,y){return a(),n("div",null,l)}const h=s(t,[["render",p]]);export{g as __pageData,h as default}; diff --git a/assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.lean.js b/assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.lean.js new file mode 100644 index 0000000..a4eae86 --- /dev/null +++ b/assets/api-specification_auth-controller_retrieving-salt-values.md.3d55c4b6.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Retrieving salt values","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/auth-controller/retrieving-salt-values.md","filePath":"api-specification/auth-controller/retrieving-salt-values.md"}'),t={name:"api-specification/auth-controller/retrieving-salt-values.md"},o=e("",12),l=[o];function p(r,c,i,d,E,y){return a(),n("div",null,l)}const h=s(t,[["render",p]]);export{g as __pageData,h as default}; diff --git a/assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.js b/assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.js new file mode 100644 index 0000000..8b5c489 --- /dev/null +++ b/assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.js @@ -0,0 +1,29 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Assembling a contribution flag","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/assembling-a-contribution-flag.md","filePath":"api-specification/contribution-controller/assembling-a-contribution-flag.md"}'),l={name:"api-specification/contribution-controller/assembling-a-contribution-flag.md"},e=o(`

    Assembling a contribution flag

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/contribution-manager/contribution/flag/assemble

    MethodPATCH

    Parameters: —

    Input/request structure:

    Show
    json5
    {
    +  assetIds: [
    +    {
    +      definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +      accountId: 'user@peerId'
    +    }
    +  ]
    +}
    {
    +  assetIds: [
    +    {
    +      definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +      accountId: 'user@peerId'
    +    }
    +  ]
    +}

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: 'string'
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: 'string'
    +}

    Responses

    Response CodeDescription
    200Contribution flag has been assembled and its transaction data has been retrieved successfully.
    400The request body of the contribution flag is incorrect or premium contribution can't be changed.
    404Asset not found.
    500Internal server error.
    `,12),p=[e];function t(c,r,i,E,d,y){return n(),a("div",null,p)}const b=s(l,[["render",t]]);export{u as __pageData,b as default}; diff --git a/assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.lean.js b/assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.lean.js new file mode 100644 index 0000000..fb0b671 --- /dev/null +++ b/assets/api-specification_contribution-controller_assembling-a-contribution-flag.md.1a294380.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Assembling a contribution flag","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/assembling-a-contribution-flag.md","filePath":"api-specification/contribution-controller/assembling-a-contribution-flag.md"}'),l={name:"api-specification/contribution-controller/assembling-a-contribution-flag.md"},e=o("",12),p=[e];function t(c,r,i,E,d,y){return n(),a("div",null,p)}const b=s(l,[["render",t]]);export{u as __pageData,b as default}; diff --git a/assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.js b/assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.js new file mode 100644 index 0000000..f951467 --- /dev/null +++ b/assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.js @@ -0,0 +1,31 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Assembling a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/assembling-a-contribution.md","filePath":"api-specification/contribution-controller/assembling-a-contribution.md"}'),l={name:"api-specification/contribution-controller/assembling-a-contribution.md"},p=o(`

    Assembling a contribution

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/contribution-management/contribution/assemble

    MethodPOST

    Parameters: —

    Input/request structure:

    Show
    json5
    [
    +  {
    +    id: 'string', //fraud identifier value
    +    fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +    origination: 'string', //two-digit country code (Alpha-2, ISO 3166)
    +    destination: 'string', //two-digit country code (Alpha-2, ISO 3166)
    +    expiryDate: 0 //integer($int32), Unix Epoch Time in seconds
    +  }
    +]
    [
    +  {
    +    id: 'string', //fraud identifier value
    +    fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +    origination: 'string', //two-digit country code (Alpha-2, ISO 3166)
    +    destination: 'string', //two-digit country code (Alpha-2, ISO 3166)
    +    expiryDate: 0 //integer($int32), Unix Epoch Time in seconds
    +  }
    +]

    Note

    This endpoint accepts requests with up to 500 entries.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: 'string'
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: 'string'
    +}

    Responses

    Response CodeDescription
    200Contribution has been assembled and its transaction data has been retrieved successfully.
    400Contribution type is invalid.
    404Account not found or the rewards table doesn't exist.
    500Internal server error.
    `,13),t=[p];function e(c,r,i,E,y,d){return n(),a("div",null,t)}const g=s(l,[["render",e]]);export{u as __pageData,g as default}; diff --git a/assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.lean.js b/assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.lean.js new file mode 100644 index 0000000..62cd318 --- /dev/null +++ b/assets/api-specification_contribution-controller_assembling-a-contribution.md.ba760f8a.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Assembling a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/assembling-a-contribution.md","filePath":"api-specification/contribution-controller/assembling-a-contribution.md"}'),l={name:"api-specification/contribution-controller/assembling-a-contribution.md"},p=o("",13),t=[p];function e(c,r,i,E,y,d){return n(),a("div",null,t)}const g=s(l,[["render",e]]);export{u as __pageData,g as default}; diff --git a/assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.js b/assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.js new file mode 100644 index 0000000..be65002 --- /dev/null +++ b/assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.js @@ -0,0 +1,19 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Flagging a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/flagging-a-contribution.md","filePath":"api-specification/contribution-controller/flagging-a-contribution.md"}'),t={name:"api-specification/contribution-controller/flagging-a-contribution.md"},l=o(`

    Flagging a contribution

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/contribution-management/contribution/flag

    MethodPATCH

    Parameters: —

    Input/request structure:

    Show
    json5
    'string'
    'string'

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    rewarded: 0 //integer($int32)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    rewarded: 0 //integer($int32)
    +  }
    +}

    Responses

    Response CodeDescription
    200Contribution has been flagged and its transaction data has been retrieved successfully.
    400Invalid transaction.
    500Internal server error.
    `,12),e=[l];function p(c,r,i,d,E,y){return n(),a("div",null,e)}const h=s(t,[["render",p]]);export{u as __pageData,h as default}; diff --git a/assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.lean.js b/assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.lean.js new file mode 100644 index 0000000..4742938 --- /dev/null +++ b/assets/api-specification_contribution-controller_flagging-a-contribution.md.8045bcc6.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Flagging a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/flagging-a-contribution.md","filePath":"api-specification/contribution-controller/flagging-a-contribution.md"}'),t={name:"api-specification/contribution-controller/flagging-a-contribution.md"},l=o("",12),e=[l];function p(c,r,i,d,E,y){return n(),a("div",null,e)}const h=s(t,[["render",p]]);export{u as __pageData,h as default}; diff --git a/assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.js b/assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.js new file mode 100644 index 0000000..bdc7cf6 --- /dev/null +++ b/assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.js @@ -0,0 +1,33 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Requesting a contribution by ID","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/requesting-a-contribution-by-ID.md","filePath":"api-specification/contribution-controller/requesting-a-contribution-by-ID.md"}'),e={name:"api-specification/contribution-controller/requesting-a-contribution-by-ID.md"},t=o(`

    Requesting a contribution by ID

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/contribution-management/contribution/{contributionID}

    MethodGET

    Parameters:

    FieldValue TypeDescription
    contributionIDstring(path)Range of id values (Fraud Identifiers), or a single one.

    Input/request structure:

    A GET request to the endpoint, where {contributionID} is a required parameter.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      assetIds: [
    +        {
    +          definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +          accountId: 'user@peerId'
    +        }
    +      ]
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      assetIds: [
    +        {
    +          definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +          accountId: 'user@peerId'
    +        }
    +      ]
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200Contribution has been successfully retrieved by its ID.
    400Contribution ID is incorrect or the fraud type could not be resolved by code.
    500Internal server error.
    `,13),p=[t];function l(r,c,i,E,d,y){return n(),a("div",null,p)}const h=s(e,[["render",l]]);export{b as __pageData,h as default}; diff --git a/assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.lean.js b/assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.lean.js new file mode 100644 index 0000000..6f47b0b --- /dev/null +++ b/assets/api-specification_contribution-controller_requesting-a-contribution-by-ID.md.f5b8ca6e.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Requesting a contribution by ID","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/requesting-a-contribution-by-ID.md","filePath":"api-specification/contribution-controller/requesting-a-contribution-by-ID.md"}'),e={name:"api-specification/contribution-controller/requesting-a-contribution-by-ID.md"},t=o("",13),p=[t];function l(r,c,i,E,d,y){return n(),a("div",null,p)}const h=s(e,[["render",l]]);export{b as __pageData,h as default}; diff --git a/assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.js b/assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.js new file mode 100644 index 0000000..0a0f818 --- /dev/null +++ b/assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.js @@ -0,0 +1,59 @@ +import{_ as s,o as n,c as e,Q as a}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Retrieving top contributions","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/retrieving-top-contributions.md","filePath":"api-specification/contribution-controller/retrieving-top-contributions.md"}'),o={name:"api-specification/contribution-controller/retrieving-top-contributions.md"},l=a(`

    Retrieving top contributions

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/contribution-management/contribution

    MethodGET

    Parameters:

    FieldValue TypeDescription
    sizeinteger($int32)The number of entries, starting with the latest, shown in the response.
    Set to 50 by default.
    from and tostringThe timeframe that the response entries are filtered by (set as Unix Epoch time in seconds).
    The from parameter is set to 0 by default.
    ftarray[string]The type of the fraud event.
    Could be one of the following:
    1. Wangiri
    2. IRSF
    3. StolenDevice
    4. IPFraud
    5. SMSA2P
    orgarray[string]The country of origination of the fraud event. Set as a two-digit country code (Alpha-2, ISO 3166; e.g., US, GA)
    self-onlybooleanA boolean that defines whether the response should only contain contributions submitted by the requesting peer.
    The self-only parameter is set to false by default.
    fetch-modestringThe parameter that filters the response entries based on whether the requesting user has already seen them.
    Could be one of the following:
    1. NEW — includes only the unseen by the requesting user entries.
  • OLD — includes only the already seen by the requesting user entries.
  • DEFAULT — includes all of the entries.

  • The fetch-mode parameter is set to DEFAULT by default.
    fetch-modestringThe parameter that filters the response entries based on whether the requesting user has already seen them.
    Could be one of the following:
    1. NEW — includes only the unseen by the requesting user entries.
    2. OLD — includes only the already seen by the requesting user entries.
    3. DEFAULT — includes all of the entries.

    The fetch-mode parameter is set to DEFAULT by default.
    confidence-scorebooleanA boolean that defines whether the price of the retrieved contributions is affected by the confidence index. If set to true, the price of any given contribution is expected to rise above the default conversion rate.
    The confidence-score parameter is set to false by default.

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    contributions: [
    +      {
    +        id: 'string',
    +        fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +        origination: 'string',
    +        destination: 'string',
    +        expiryDate: 0, //integer($int32)
    +        fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +        confidenceIndex: 0, //number($double)
    +        isPremium: true, //boolean
    +        peerId: 'string',
    +        flagger: 'string',
    +        premium: true //boolean
    +      }
    +    ],
    +    details: {
    +      self: 0,
    +      old: 0,
    +      new: 0,
    +      creditsSpent: 0
    +    }
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    contributions: [
    +      {
    +        id: 'string',
    +        fraudType: 'string(enum)', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +        origination: 'string',
    +        destination: 'string',
    +        expiryDate: 0, //integer($int32)
    +        fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +        confidenceIndex: 0, //number($double)
    +        isPremium: true, //boolean
    +        peerId: 'string',
    +        flagger: 'string',
    +        premium: true //boolean
    +      }
    +    ],
    +    details: {
    +      self: 0,
    +      old: 0,
    +      new: 0,
    +      creditsSpent: 0
    +    }
    +  }
    +}

    Responses

    Response CodeDescription
    200Contributions have been successfully retrieved and filtered by the specified parameters.
    400Request parameters are invalid or the fraud type could not be resolved by code.
    404Contribution subscription has not been found.
    500Internal server error.
    `,13),t=[l];function p(r,c,i,E,d,y){return n(),e("div",null,t)}const h=s(o,[["render",p]]);export{F as __pageData,h as default}; diff --git a/assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.lean.js b/assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.lean.js new file mode 100644 index 0000000..840b3eb --- /dev/null +++ b/assets/api-specification_contribution-controller_retrieving-top-contributions.md.8a8ccdc2.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as e,Q as a}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Retrieving top contributions","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/retrieving-top-contributions.md","filePath":"api-specification/contribution-controller/retrieving-top-contributions.md"}'),o={name:"api-specification/contribution-controller/retrieving-top-contributions.md"},l=a("",13),t=[l];function p(r,c,i,E,d,y){return n(),e("div",null,t)}const h=s(o,[["render",p]]);export{F as __pageData,h as default}; diff --git a/assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.js b/assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.js new file mode 100644 index 0000000..5306be9 --- /dev/null +++ b/assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.js @@ -0,0 +1,31 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Submitting a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/submitting-a-contribution.md","filePath":"api-specification/contribution-controller/submitting-a-contribution.md"}'),l={name:"api-specification/contribution-controller/submitting-a-contribution.md"},p=o(`

    Submitting a contribution

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/contribution-management/contribution

    MethodPOST

    Parameters: —

    Input/request structure:

    Show
    json5
    'string'
    'string'

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenIds: [
    +      {
    +        definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +        accountId: 'user@peerId'
    +      }
    +    ],
    +    rewarded: 0 //integer($int32)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenIds: [
    +      {
    +        definitionId: 'Id_range#domain', //IP/telephone number/IMEI
    +        accountId: 'user@peerId'
    +      }
    +    ],
    +    rewarded: 0 //integer($int32)
    +  }
    +}

    Responses

    Response CodeDescription
    200Contribution has been submitted and its transaction data has been retrieved successfully.
    400Invalid transaction.
    500Internal server error.
    `,12),t=[p];function e(c,r,i,E,y,d){return n(),a("div",null,t)}const F=s(l,[["render",e]]);export{g as __pageData,F as default}; diff --git a/assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.lean.js b/assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.lean.js new file mode 100644 index 0000000..def5020 --- /dev/null +++ b/assets/api-specification_contribution-controller_submitting-a-contribution.md.d3802ac5.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Submitting a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/contribution-controller/submitting-a-contribution.md","filePath":"api-specification/contribution-controller/submitting-a-contribution.md"}'),l={name:"api-specification/contribution-controller/submitting-a-contribution.md"},p=o("",12),t=[p];function e(c,r,i,E,y,d){return n(),a("div",null,t)}const F=s(l,[["render",e]]);export{g as __pageData,F as default}; diff --git a/assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.js b/assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.js new file mode 100644 index 0000000..23cec5d --- /dev/null +++ b/assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.js @@ -0,0 +1,41 @@ +import{_ as s,o as n,c as a,Q as p}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Requesting peer details","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/peer-controller/requesting-peer-details.md","filePath":"api-specification/peer-controller/requesting-peer-details.md"}'),l={name:"api-specification/peer-controller/requesting-peer-details.md"},o=p(`

    Requesting peer details

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/peer-management/details

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accountId: 'string',
    +    domainId: 'string',
    +    accountMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    },
    +    domainMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    }
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accountId: 'string',
    +    domainId: 'string',
    +    accountMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    },
    +    domainMetadata: {
    +      additionalProp1: {},
    +      additionalProp2: {},
    +      additionalProp3: {}
    +    }
    +  }
    +}

    Responses

    Response CodeDescription
    200Peer details have been retrieved successfully.
    404User/domain/account/asset not found.
    500Internal server error.
    `,12),e=[o];function t(r,c,E,i,y,d){return n(),a("div",null,e)}const u=s(l,[["render",t]]);export{g as __pageData,u as default}; diff --git a/assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.lean.js b/assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.lean.js new file mode 100644 index 0000000..9dec261 --- /dev/null +++ b/assets/api-specification_peer-controller_requesting-peer-details.md.b46e774b.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as p}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Requesting peer details","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/peer-controller/requesting-peer-details.md","filePath":"api-specification/peer-controller/requesting-peer-details.md"}'),l={name:"api-specification/peer-controller/requesting-peer-details.md"},o=p("",12),e=[o];function t(r,c,E,i,y,d){return n(),a("div",null,e)}const u=s(l,[["render",t]]);export{g as __pageData,u as default}; diff --git a/assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.js b/assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.js new file mode 100644 index 0000000..33954e4 --- /dev/null +++ b/assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.js @@ -0,0 +1,23 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Retrieving all premium peers","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/peer-controller/retrieving-all-premium-peers.md","filePath":"api-specification/peer-controller/retrieving-all-premium-peers.md"}'),l={name:"api-specification/peer-controller/retrieving-all-premium-peers.md"},p=e(`

    Retrieving all premium peers

    Protocol: HTTP

    EncodingJSON

    Endpoint/auth/api/v1/peer-management/premium

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      peerId: 'string' //A unique identifier of a peer
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      peerId: 'string' //A unique identifier of a peer
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200All premium peers have been retrieved successfully.
    500Internal server error.
    `,12),o=[p];function t(r,c,i,E,y,d){return n(),a("div",null,o)}const g=s(l,[["render",t]]);export{u as __pageData,g as default}; diff --git a/assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.lean.js b/assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.lean.js new file mode 100644 index 0000000..22ff528 --- /dev/null +++ b/assets/api-specification_peer-controller_retrieving-all-premium-peers.md.321bd301.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Retrieving all premium peers","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/peer-controller/retrieving-all-premium-peers.md","filePath":"api-specification/peer-controller/retrieving-all-premium-peers.md"}'),l={name:"api-specification/peer-controller/retrieving-all-premium-peers.md"},p=e("",12),o=[p];function t(r,c,i,E,y,d){return n(),a("div",null,o)}const g=s(l,[["render",t]]);export{u as __pageData,g as default}; diff --git a/assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.js b/assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.js new file mode 100644 index 0000000..665f25b --- /dev/null +++ b/assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.js @@ -0,0 +1,25 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Retrieving peer limit status","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/peer-controller/retrieving-peer-limit-status.md","filePath":"api-specification/peer-controller/retrieving-peer-limit-status.md"}'),p={name:"api-specification/peer-controller/retrieving-peer-limit-status.md"},o=e(`

    Retrieving peer limit status

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/peer-management/limit

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0,
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    used: 0,
    +    total: 0,
    +    updatePeriod: 0,
    +    nextUpdate: 0
    +  }
    +}
    {
    +  status: {
    +    code: 0,
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    used: 0,
    +    total: 0,
    +    updatePeriod: 0,
    +    nextUpdate: 0
    +  }
    +}

    Responses

    Response CodeDescription
    200Peer limit status has been retrieved successfully
    404Metadata key not found or Trigger's period not specified
    500Internal server error.
    `,12),l=[o];function t(r,c,i,E,y,d){return n(),a("div",null,l)}const g=s(p,[["render",t]]);export{F as __pageData,g as default}; diff --git a/assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.lean.js b/assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.lean.js new file mode 100644 index 0000000..e6ac5c5 --- /dev/null +++ b/assets/api-specification_peer-controller_retrieving-peer-limit-status.md.df3df50c.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Retrieving peer limit status","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/peer-controller/retrieving-peer-limit-status.md","filePath":"api-specification/peer-controller/retrieving-peer-limit-status.md"}'),p={name:"api-specification/peer-controller/retrieving-peer-limit-status.md"},o=e("",12),l=[o];function t(r,c,i,E,y,d){return n(),a("div",null,l)}const g=s(p,[["render",t]]);export{F as __pageData,g as default}; diff --git a/assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.js b/assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.js new file mode 100644 index 0000000..80e52c1 --- /dev/null +++ b/assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.js @@ -0,0 +1,27 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Requesting access to premium contributions by a certain peer","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.md","filePath":"api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.md"}'),o={name:"api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.md"},t=e(`

    Requesting access to premium contributions by a certain peer

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/premium-provider-management/application?peer={peerID}

    MethodPOST

    Parameters:

    FieldValue TypeDescription
    peerstringA unique peer identifier.
    peer is a required parameter. See Retrieving all premium peer.

    Input/request structure:

    A POST request to the endpoint, where peer is a unique peer identifier.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'PENDING' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'PENDING' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200Access to premium contributions by a certain peer has been requested.
    400The Entity field is not set.
    500Internal server error.
    `,13),p=[t];function l(r,c,i,E,y,d){return n(),a("div",null,p)}const F=s(o,[["render",l]]);export{m as __pageData,F as default}; diff --git a/assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.lean.js b/assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.lean.js new file mode 100644 index 0000000..8f22cd1 --- /dev/null +++ b/assets/api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md.b6c19900.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Requesting access to premium contributions by a certain peer","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.md","filePath":"api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.md"}'),o={name:"api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.md"},t=e("",13),p=[t];function l(r,c,i,E,y,d){return n(),a("div",null,p)}const F=s(o,[["render",l]]);export{m as __pageData,F as default}; diff --git a/assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.js b/assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.js new file mode 100644 index 0000000..31239b7 --- /dev/null +++ b/assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.js @@ -0,0 +1,27 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Retrieving incoming premium contribution requests","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.md","filePath":"api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.md"}'),l={name:"api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.md"},e=o(`

    Retrieving incoming premium contribution requests

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/premium-provider-management/incoming

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200Incoming premium contribution requests have been retrieved successfully.
    500Internal server error.
    `,12),p=[e];function t(r,c,i,E,y,d){return n(),a("div",null,p)}const g=s(l,[["render",t]]);export{m as __pageData,g as default}; diff --git a/assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.lean.js b/assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.lean.js new file mode 100644 index 0000000..466d604 --- /dev/null +++ b/assets/api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md.81df4888.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Retrieving incoming premium contribution requests","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.md","filePath":"api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.md"}'),l={name:"api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.md"},e=o("",12),p=[e];function t(r,c,i,E,y,d){return n(),a("div",null,p)}const g=s(l,[["render",t]]);export{m as __pageData,g as default}; diff --git a/assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.js b/assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.js new file mode 100644 index 0000000..09057a7 --- /dev/null +++ b/assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.js @@ -0,0 +1,27 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Retrieving outgoing premium contribution requests","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.md","filePath":"api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.md"}'),l={name:"api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.md"},e=o(`

    Retrieving outgoing premium contribution requests

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/premium-provider-management/outgoing

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      domainId: 'string',
    +      requestedByPeer: 'string',
    +      status: 'string(enum)' //Could be one of the following: PENDING, DECLINED, APPROVED, NONE
    +    }
    +  ]
    +}

    Responses

    Response CodeDescription
    200Outgoing premium contribution requests have been retrieved successfully.
    500Internal server error.
    `,12),p=[e];function t(r,c,i,E,y,d){return n(),a("div",null,p)}const F=s(l,[["render",t]]);export{g as __pageData,F as default}; diff --git a/assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.lean.js b/assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.lean.js new file mode 100644 index 0000000..4435da4 --- /dev/null +++ b/assets/api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md.f991d04e.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Retrieving outgoing premium contribution requests","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.md","filePath":"api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.md"}'),l={name:"api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.md"},e=o("",12),p=[e];function t(r,c,i,E,y,d){return n(),a("div",null,p)}const F=s(l,[["render",t]]);export{g as __pageData,F as default}; diff --git a/assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.js b/assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.js new file mode 100644 index 0000000..97d8867 --- /dev/null +++ b/assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.js @@ -0,0 +1,27 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Retrieving credit balance","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/wallet-controller/retrieving-credit-balance.md","filePath":"api-specification/wallet-controller/retrieving-credit-balance.md"}'),l={name:"api-specification/wallet-controller/retrieving-credit-balance.md"},p=e(`

    Retrieving credit balance

    Protocol: HTTP

    EncodingJSON

    Endpoint/data/api/v1/wallet-management/balance

    MethodGET

    Parameters: —

    Input/request structure:

    A GET request to the endpoint.

    Output/response structure:

    Show
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenId: {
    +      definitionId: 'credit#admin',
    +      accountId: 'user@peerId'
    +    },
    +    balance: 0 //integer($int32)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    tokenId: {
    +      definitionId: 'credit#admin',
    +      accountId: 'user@peerId'
    +    },
    +    balance: 0 //integer($int32)
    +  }
    +}

    Responses

    Response CodeDescription
    200Credit balance has been retrieved successfully.
    500Internal server error.
    `,12),o=[p];function t(c,r,i,E,y,d){return n(),a("div",null,o)}const u=s(l,[["render",t]]);export{g as __pageData,u as default}; diff --git a/assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.lean.js b/assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.lean.js new file mode 100644 index 0000000..89f0ef6 --- /dev/null +++ b/assets/api-specification_wallet-controller_retrieving-credit-balance.md.f0502e46.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Retrieving credit balance","description":"","frontmatter":{},"headers":[],"relativePath":"api-specification/wallet-controller/retrieving-credit-balance.md","filePath":"api-specification/wallet-controller/retrieving-credit-balance.md"}'),l={name:"api-specification/wallet-controller/retrieving-credit-balance.md"},p=e("",12),o=[p];function t(c,r,i,E,y,d){return n(),a("div",null,o)}const u=s(l,[["render",t]]);export{g as __pageData,u as default}; diff --git a/assets/app.db3ae805.js b/assets/app.db3ae805.js new file mode 100644 index 0000000..b6ea6ff --- /dev/null +++ b/assets/app.db3ae805.js @@ -0,0 +1 @@ +import{d as l,o as m,c as f,n as g,p as h,m as y,k as u,_ as v,a1 as s,s as i,a2 as A,a3 as C,a4 as w,a5 as P,a6 as b,a7 as L,a8 as S,a9 as E,aa as R,ab as I,V as j,u as D,j as O,y as T,ac as V,ad as x,ae as B}from"./chunks/framework.c4d6cd72.js";import{t as r}from"./chunks/theme.3ff32677.js";const k="/orillion-logo.png",F="/soramitsu-logo-1.png",d=e=>(h("data-v-f647d0cb"),e=e(),y(),e),$=["data-location"],M=d(()=>u("img",{src:k,alt:"Orillion logo",width:"100"},null,-1)),N=d(()=>u("img",{src:F,alt:"Soramitsu logo",width:"140"},null,-1)),z=[M,N],G=l({__name:"CompaniesLogos",props:{location:{}},setup(e){return(a,t)=>(m(),f("div",{class:g(["logos",{"flex items-center justify-center ":a.location==="docs","space-y-4":a.location==="aside"}]),"data-location":a.location},z,10,$))}});const c=v(G,[["__scopeId","data-v-f647d0cb"]]);const H={...r,Layout(){return s(r.Layout,null,{"aside-outline-after":()=>s(c,{location:"aside"})})},enhanceApp(e){e.app.component("CompaniesLogos",c)}};function _(e){if(e.extends){const a=_(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=_(H),U=l({name:"VitePressApp",setup(){const{site:e}=D();return O(()=>{T(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),V(),x(),B(),n.setup&&n.setup(),()=>s(n.Layout)}});async function q(){const e=K(),a=J();a.provide(C,e);const t=w(e.route);return a.provide(P,t),a.component("Content",b),a.component("ClientOnly",L),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:S}),{app:a,router:e,data:t}}function J(){return E(U)}function K(){let e=i,a;return R(t=>{let o=I(t),p=null;return o&&(e&&(a=o),(e||a===o)&&(o=o.replace(/\.js$/,".lean.js")),p=j(()=>import(o),[])),i&&(e=!1),p},n.NotFound)}i&&q().then(({app:e,router:a,data:t})=>{a.go().then(()=>{A(a.route,t.site),e.mount("#app")})});export{q as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.2ac92fc8.js b/assets/chunks/@localSearchIndexroot.2ac92fc8.js new file mode 100644 index 0000000..d57e215 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.2ac92fc8.js @@ -0,0 +1 @@ +const e='{"documentCount":110,"nextId":110,"documentIds":{"0":"/api-specification.html#api-specification","1":"/api-specification/auth-controller/authorizing-a-user-in-the-system.html#authorizing-a-user-in-the-system","2":"/api-specification/auth-controller/authorizing-a-user-in-the-system.html#responses","3":"/api-specification/auth-controller/refreshing-authentication-tokens.html#refreshing-authentication-tokens","4":"/api-specification/auth-controller/refreshing-authentication-tokens.html#responses","5":"/api-specification/auth-controller/retrieving-salt-values.html#retrieving-salt-values","6":"/api-specification/auth-controller/retrieving-salt-values.html#responses","7":"/api-specification/contribution-controller/assembling-a-contribution-flag.html#assembling-a-contribution-flag","8":"/api-specification/contribution-controller/assembling-a-contribution-flag.html#responses","9":"/api-specification/contribution-controller/assembling-a-contribution.html#assembling-a-contribution","10":"/api-specification/contribution-controller/assembling-a-contribution.html#responses","11":"/api-specification/contribution-controller/flagging-a-contribution.html#flagging-a-contribution","12":"/api-specification/contribution-controller/flagging-a-contribution.html#responses","13":"/api-specification/contribution-controller/requesting-a-contribution-by-ID.html#requesting-a-contribution-by-id","14":"/api-specification/contribution-controller/requesting-a-contribution-by-ID.html#responses","15":"/api-specification/contribution-controller/retrieving-top-contributions.html#retrieving-top-contributions","16":"/api-specification/contribution-controller/retrieving-top-contributions.html#responses","17":"/api-specification/contribution-controller/submitting-a-contribution.html#submitting-a-contribution","18":"/api-specification/contribution-controller/submitting-a-contribution.html#responses","19":"/api-specification/peer-controller/requesting-peer-details.html#requesting-peer-details","20":"/api-specification/peer-controller/requesting-peer-details.html#responses","21":"/api-specification/peer-controller/retrieving-all-premium-peers.html#retrieving-all-premium-peers","22":"/api-specification/peer-controller/retrieving-all-premium-peers.html#responses","23":"/api-specification/peer-controller/retrieving-peer-limit-status.html#retrieving-peer-limit-status","24":"/api-specification/peer-controller/retrieving-peer-limit-status.html#responses","25":"/api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.html#requesting-access-to-premium-contributions-by-a-certain-peer","26":"/api-specification/premium-provider-controller/requesting-access-to-premium-contributions-by-a-certain-peer.html#responses","27":"/api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.html#retrieving-incoming-premium-contribution-requests","28":"/api-specification/premium-provider-controller/retrieving-incoming-premium-contribution-requests.html#responses","29":"/api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.html#retrieving-outgoing-premium-contribution-requests","30":"/api-specification/premium-provider-controller/retrieving-outgoing-premium-contribution-requests.html#responses","31":"/api-specification/wallet-controller/retrieving-credit-balance.html#retrieving-credit-balance","32":"/api-specification/wallet-controller/retrieving-credit-balance.html#responses","33":"/getting-started.html#getting-started","34":"/getting-started/calling-api-endpoints.html#calling-api-endpoints","35":"/getting-started/checking-api-availability.html#checking-api-availability","36":"/getting-started/public-test-environment.html#public-test-environment","37":"/getting-started/public-test-environment.html#connection-details","38":"/getting-started/registering-an-account.html#registering-an-account","39":"/getting-started/registering-an-account.html#expected-result","40":"/getting-started/registering-an-account.html#restoring-access-to-an-account","41":"/#welcome","42":"/#where-to-start","43":"/#what-is-iroha-2","44":"/#getting-help","45":"/overview.html#overview","46":"/overview/contributions.html#contributions","47":"/overview/contributions.html#operations","48":"/overview/contributions.html#submitting-contributions","49":"/overview/contributions.html#retrieving-contributions","50":"/overview/contributions.html#flagging-contributions","51":"/overview/contributions.html#api-requests-data-structure","52":"/overview/fraud-events.html#fraud-events","53":"/overview/fraud-events.html#fraud-model","54":"/overview/how-fib-works.html#how-fib-works","55":"/overview/how-fib-works.html#data-on-the-network","56":"/overview/how-fib-works.html#network-security","57":"/overview/tokenomics.html#tokenomics","58":"/overview/tokenomics.html#payment-model","59":"/overview/tokenomics.html#uploading-fraud-events","60":"/overview/tokenomics.html#downloading-fraud-events","61":"/overview/tokenomics.html#credit-balance","62":"/overview/tokenomics.html#confidence-index","63":"/overview/tokenomics.html#current-default-conversion-rate","64":"/overview/tokenomics.html#welcome-bonus","65":"/overview/tokenomics.html#premium-subscription","66":"/overview/tokenomics.html#monthly-reward-limit","67":"/overview/web-interface.html#web-interface","68":"/overview/web-interface.html#home","69":"/overview/web-interface.html#consortium-data","70":"/overview/web-interface.html#fraud-twitter-feed","71":"/overview/web-interface.html#analyse","72":"/overview/web-interface.html#upload","73":"/overview/web-interface.html#download","74":"/overview/web-interface.html#tokens","75":"/overview/web-interface.html#profile","76":"/public/README.html#fraud-intelligence-blockchain-documentation","77":"/public/README.html#troubleshooting","78":"/release-notes/#release-notes","79":"/release-notes/#version-1-2-2023-12-14","80":"/release-notes/#main-changes","81":"/release-notes/#other-improvements","82":"/release-notes/#bug-fixes","83":"/release-notes/#version-1-1-2023-04-27","84":"/release-notes/#version-1-0-2022-12-12","85":"/tutorials-api.html#tutorials-api","86":"/tutorials-api/authorizing-an-account.html#authorizing-an-account","87":"/tutorials-api/authorizing-an-account.html#expected-result","88":"/tutorials-api/flagging-a-contribution.html#flagging-a-contribution","89":"/tutorials-api/flagging-a-contribution.html#expected-result","90":"/tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.html#verifying-a-contribution-has-been-flagged","91":"/tutorials-api/generating-key-pairs.html#generating-key-pairs","92":"/tutorials-api/generating-key-pairs.html#generating-authentication-key-pair","93":"/tutorials-api/generating-key-pairs.html#generating-iroha-2-key-pair","94":"/tutorials-api/retrieving-top-contributions.html#retrieving-top-contributions","95":"/tutorials-api/retrieving-top-contributions.html#expected-result","96":"/tutorials-api/signing-transactions.html#signing-transactions","97":"/tutorials-api/signing-transactions.html#iroha-sdk-references","98":"/tutorials-api/signing-user-email-addresses.html#signing-user-email-addresses","99":"/tutorials-api/signing-user-email-addresses.html#iroha-sdk-references","100":"/tutorials-api/submitting-a-contribution.html#submitting-a-contribution","101":"/tutorials-api/submitting-a-contribution.html#expected-result","102":"/tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.html#verifying-a-contribution-has-been-submitted","103":"/tutorials-web.html#tutorials-web-ui","104":"/tutorials-web/downloading-fraud-data.html#downloading-fraud-data","105":"/tutorials-web/downloading-fraud-data.html#expected-result","106":"/tutorials-web/flagging-fraud-data.html#flagging-fraud-data","107":"/tutorials-web/flagging-fraud-data.html#expected-result","108":"/tutorials-web/uploading-fraud-data.html#uploading-fraud-data","109":"/tutorials-web/uploading-fraud-data.html#expected-result"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,58],"1":[6,1,64],"2":[1,7,34],"3":[3,1,63],"4":[1,4,35],"5":[3,1,36],"6":[1,4,23],"7":[4,1,44],"8":[1,5,39],"9":[3,1,73],"10":[1,4,34],"11":[3,1,32],"12":[1,4,21],"13":[5,1,66],"14":[1,6,29],"15":[3,1,157],"16":[1,4,37],"17":[3,1,43],"18":[1,4,21],"19":[3,1,42],"20":[1,4,22],"21":[4,1,41],"22":[1,5,16],"23":[4,1,37],"24":[1,5,26],"25":[9,1,64],"26":[1,10,27],"27":[5,1,48],"28":[1,6,17],"29":[5,1,48],"30":[1,6,17],"31":[3,1,42],"32":[1,4,15],"33":[2,1,51],"34":[3,1,98],"35":[3,1,87],"36":[3,1,76],"37":[2,3,25],"38":[3,1,60],"39":[2,4,52],"40":[5,3,61],"41":[1,1,74],"42":[4,1,93],"43":[5,1,48],"44":[2,1,35],"45":[1,1,63],"46":[1,1,33],"47":[1,1,1],"48":[2,2,44],"49":[2,2,27],"50":[2,2,32],"51":[4,1,130],"52":[2,1,50],"53":[2,2,112],"54":[3,1,74],"55":[4,3,71],"56":[2,3,111],"57":[1,1,16],"58":[2,1,31],"59":[3,1,35],"60":[3,1,56],"61":[2,1,43],"62":[2,1,95],"63":[4,1,12],"64":[2,1,17],"65":[2,1,48],"66":[3,1,48],"67":[2,1,15],"68":[1,2,10],"69":[2,3,38],"70":[3,3,50],"71":[1,2,42],"72":[1,2,22],"73":[1,2,16],"74":[1,2,10],"75":[1,2,78],"76":[4,1,27],"77":[1,4,42],"78":[2,1,1],"79":[7,2,1],"80":[2,9,82],"81":[2,9,44],"82":[2,9,53],"83":[6,2,12],"84":[6,2,7],"85":[2,1,40],"86":[3,1,54],"87":[2,4,89],"88":[3,1,172],"89":[2,4,10],"90":[6,1,35],"91":[3,1,1],"92":[4,4,41],"93":[5,4,40],"94":[3,1,105],"95":[2,4,74],"96":[2,1,105],"97":[3,2,226],"98":[4,1,71],"99":[3,4,149],"100":[3,1,120],"101":[2,4,32],"102":[6,1,109],"103":[3,1,23],"104":[3,1,85],"105":[2,4,49],"106":[3,1,57],"107":[2,4,9],"108":[3,1,121],"109":[2,4,22]},"averageFieldLength":[2.6363636363636376,2.381818181818182,51.53636363636364],"storedFields":{"0":{"title":"API Specification","titles":[]},"1":{"title":"Authorizing a user in the system","titles":[]},"2":{"title":"Responses","titles":["Authorizing a user in the system",null]},"3":{"title":"Refreshing authentication tokens","titles":[]},"4":{"title":"Responses","titles":["Refreshing authentication tokens",null]},"5":{"title":"Retrieving salt values","titles":[]},"6":{"title":"Responses","titles":["Retrieving salt values",null]},"7":{"title":"Assembling a contribution flag","titles":[]},"8":{"title":"Responses","titles":["Assembling a contribution flag",null]},"9":{"title":"Assembling a contribution","titles":[]},"10":{"title":"Responses","titles":["Assembling a contribution",null]},"11":{"title":"Flagging a contribution","titles":[]},"12":{"title":"Responses","titles":["Flagging a contribution",null]},"13":{"title":"Requesting a contribution by ID","titles":[]},"14":{"title":"Responses","titles":["Requesting a contribution by ID",null]},"15":{"title":"Retrieving top contributions","titles":[]},"16":{"title":"Responses","titles":["Retrieving top contributions",null]},"17":{"title":"Submitting a contribution","titles":[]},"18":{"title":"Responses","titles":["Submitting a contribution",null]},"19":{"title":"Requesting peer details","titles":[]},"20":{"title":"Responses","titles":["Requesting peer details",null]},"21":{"title":"Retrieving all premium peers","titles":[]},"22":{"title":"Responses","titles":["Retrieving all premium peers",null]},"23":{"title":"Retrieving peer limit status","titles":[]},"24":{"title":"Responses","titles":["Retrieving peer limit status",null]},"25":{"title":"Requesting access to premium contributions by a certain peer","titles":[]},"26":{"title":"Responses","titles":["Requesting access to premium contributions by a certain peer",null]},"27":{"title":"Retrieving incoming premium contribution requests","titles":[]},"28":{"title":"Responses","titles":["Retrieving incoming premium contribution requests",null]},"29":{"title":"Retrieving outgoing premium contribution requests","titles":[]},"30":{"title":"Responses","titles":["Retrieving outgoing premium contribution requests",null]},"31":{"title":"Retrieving credit balance","titles":[]},"32":{"title":"Responses","titles":["Retrieving credit balance",null]},"33":{"title":"Getting started","titles":[]},"34":{"title":"Calling API endpoints","titles":[]},"35":{"title":"Checking API availability","titles":[]},"36":{"title":"Public test environment","titles":[]},"37":{"title":"Connection Details","titles":["Public test environment"]},"38":{"title":"Registering an account","titles":[]},"39":{"title":"Expected Result","titles":["Registering an account",null]},"40":{"title":"Restoring access to an account","titles":["Registering an account"]},"41":{"title":"Welcome","titles":[]},"42":{"title":"Where to start?","titles":["Welcome"]},"43":{"title":"What is Iroha 2?","titles":["Welcome"]},"44":{"title":"Getting help","titles":["Welcome"]},"45":{"title":"Overview","titles":[]},"46":{"title":"Contributions","titles":[]},"47":{"title":"Operations","titles":["Contributions"]},"48":{"title":"Submitting contributions","titles":["Contributions","Operations"]},"49":{"title":"Retrieving contributions","titles":["Contributions","Operations"]},"50":{"title":"Flagging contributions","titles":["Contributions","Operations"]},"51":{"title":"API requests data structure","titles":["Contributions"]},"52":{"title":"Fraud events","titles":[]},"53":{"title":"Fraud model","titles":["Fraud events"]},"54":{"title":"How FIB works","titles":[]},"55":{"title":"Data on the network","titles":["How FIB works"]},"56":{"title":"Network security","titles":["How FIB works"]},"57":{"title":"Tokenomics","titles":[]},"58":{"title":"Payment model","titles":["Tokenomics"]},"59":{"title":"Uploading fraud events","titles":["Tokenomics"]},"60":{"title":"Downloading fraud events","titles":["Tokenomics"]},"61":{"title":"Credit balance","titles":["Tokenomics"]},"62":{"title":"Confidence index","titles":["Tokenomics"]},"63":{"title":"Current default conversion rate","titles":["Tokenomics"]},"64":{"title":"Welcome bonus","titles":["Tokenomics"]},"65":{"title":"Premium subscription","titles":["Tokenomics"]},"66":{"title":"Monthly reward limit","titles":["Tokenomics"]},"67":{"title":"Web interface","titles":[]},"68":{"title":"Home","titles":["Web interface"]},"69":{"title":"Consortium Data","titles":["Web interface","Home"]},"70":{"title":"Fraud Twitter Feed","titles":["Web interface","Home"]},"71":{"title":"Analyse","titles":["Web interface"]},"72":{"title":"Upload","titles":["Web interface"]},"73":{"title":"Download","titles":["Web interface"]},"74":{"title":"Tokens","titles":["Web interface"]},"75":{"title":"Profile","titles":["Web interface"]},"76":{"title":"Fraud Intelligence Blockchain documentation","titles":[]},"77":{"title":"Troubleshooting","titles":["Fraud Intelligence Blockchain documentation"]},"78":{"title":"Release Notes","titles":[]},"79":{"title":"Version 1.2 (2023-12-14)","titles":["Release Notes"]},"80":{"title":"Main Changes","titles":["Release Notes","Version 1.2 (2023-12-14)"]},"81":{"title":"Other Improvements","titles":["Release Notes","Version 1.2 (2023-12-14)"]},"82":{"title":"Bug Fixes","titles":["Release Notes","Version 1.2 (2023-12-14)"]},"83":{"title":"Version 1.1 (2023-04-27)","titles":["Release Notes"]},"84":{"title":"Version 1.0 (2022-12-12)","titles":["Release Notes"]},"85":{"title":"Tutorials: API","titles":[]},"86":{"title":"Authorizing an account","titles":[]},"87":{"title":"Expected result","titles":["Authorizing an account",null]},"88":{"title":"Flagging a contribution","titles":[]},"89":{"title":"Expected result","titles":["Flagging a contribution",null]},"90":{"title":"Verifying a contribution has been flagged","titles":[]},"91":{"title":"Generating key pairs","titles":[]},"92":{"title":"Generating authentication key pair","titles":["Generating key pairs",null]},"93":{"title":"Generating Iroha 2 key pair","titles":["Generating key pairs",null]},"94":{"title":"Retrieving top contributions","titles":[]},"95":{"title":"Expected result","titles":["Retrieving top contributions",null]},"96":{"title":"Signing transactions","titles":[]},"97":{"title":"Iroha SDK references","titles":["Signing transactions"]},"98":{"title":"Signing user email addresses","titles":[]},"99":{"title":"Iroha SDK references","titles":["Signing user email addresses"]},"100":{"title":"Submitting a contribution","titles":[]},"101":{"title":"Expected result","titles":["Submitting a contribution",null]},"102":{"title":"Verifying a contribution has been submitted","titles":[]},"103":{"title":"Tutorials: Web UI","titles":[]},"104":{"title":"Downloading fraud data","titles":[]},"105":{"title":"Expected result","titles":["Downloading fraud data",null]},"106":{"title":"Flagging fraud data","titles":[]},"107":{"title":"Expected result","titles":["Flagging fraud data",null]},"108":{"title":"Uploading fraud data","titles":[]},"109":{"title":"Expected result","titles":["Uploading fraud data",null]}},"dirtCount":0,"index":[["~v4s",{"2":{"102":2}}],["^nm$g=iprw",{"2":{"102":2}}],["9729e8fbcd425bfe48809cc996c9e6d3cecddf0848a51d8758582b3c84bb2caca8e41a8290018aa7064f0b9ec61d2b1a155d5e4c772bc992d918528cf6cb6308",{"2":{"99":2}}],["9l",{"2":{"88":2}}],["8l",{"2":{"102":2}}],["8",{"2":{"99":2,"102":2}}],["7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac",{"2":{"97":4,"99":2}}],["741",{"2":{"88":2}}],["=",{"2":{"97":50,"99":26}}],["+447000123460",{"2":{"108":1}}],["+447000123456",{"2":{"108":1}}],["+33000123456",{"2":{"108":1}}],["+",{"2":{"97":4,"99":2}}],["+=",{"2":{"97":2}}],["+14155552981",{"2":{"95":2}}],["+14155552671",{"2":{"95":2}}],["+kj",{"2":{"88":2}}],["xt",{"2":{"102":2}}],["x",{"2":{"88":2}}],["60rw",{"2":{"88":2}}],["za",{"2":{"108":1}}],["z2",{"2":{"88":2}}],["z3",{"2":{"88":2}}],["z^pvg6ch",{"2":{"88":2}}],["`signature`",{"2":{"99":6}}],["`keypair`",{"2":{"99":2}}],["`key",{"2":{"97":2,"99":2}}],["`b",{"2":{"88":2}}],["`xwz",{"2":{"88":2}}],["`",{"2":{"88":6,"102":2}}],["q",{"2":{"88":2}}],["qse6jlg|t+ij`0d",{"2":{"88":2}}],["qa",{"2":{"86":2,"88":4,"102":4}}],["quot",{"2":{"88":18,"97":32,"99":20,"100":4}}],["query",{"2":{"81":1}}],["quickly",{"2":{"69":1}}],["quicker",{"2":{"41":1}}],["yyyy",{"2":{"104":2}}],["ycg^usdlmu",{"2":{"88":2}}],["yi~wtyc~bk",{"2":{"88":2}}],["yet",{"2":{"51":1,"53":1}}],["you",{"2":{"33":1,"34":3,"35":2,"36":7,"38":1,"39":5,"40":5,"42":6,"44":3,"65":1,"66":1,"75":2,"77":3,"97":3,"99":1,"104":1,"105":1,"106":3,"108":3}}],["your",{"2":{"0":1,"33":2,"34":5,"35":2,"36":1,"38":1,"39":2,"40":6,"42":2,"75":1,"94":1,"96":1,"97":2,"98":1,"99":2,"105":2,"109":1}}],["16",{"2":{"97":4}}],["1666195955",{"2":{"95":2}}],["1666194511450",{"2":{"88":4}}],["1694775553",{"2":{"88":2,"95":2,"100":2,"102":2}}],["164",{"2":{"53":1}}],["14",{"0":{"79":1},"1":{"80":1,"81":1,"82":1}}],["127",{"2":{"88":12,"95":4,"100":4,"102":4}}],["12",{"0":{"79":1,"84":2},"1":{"80":1,"81":1,"82":1}}],["10",{"2":{"63":1}}],["1001",{"2":{"102":2}}],["100",{"2":{"51":1,"53":1,"80":1}}],["1",{"0":{"79":1,"83":2,"84":1},"1":{"80":1,"81":1,"82":1},"2":{"51":1,"53":1,"63":1,"64":1,"66":1,"80":1,"88":8,"95":2,"97":8,"99":6,"100":2,"102":2}}],["k",{"2":{"102":2}}],["keep",{"2":{"49":1}}],["keys",{"2":{"96":1,"97":2,"98":1,"99":2}}],["keypairfromhex",{"2":{"97":4,"99":4}}],["keypair",{"2":{"96":1,"97":24,"98":1,"99":14}}],["key",{"0":{"91":1,"92":1,"93":1},"1":{"92":1,"93":1},"2":{"1":5,"24":1,"45":1,"53":2,"56":11,"57":1,"85":1,"86":5,"92":2,"93":2,"96":1,"97":28,"98":1,"99":34}}],["known",{"2":{"41":1,"62":1,"81":1,"93":1}}],["kotlin",{"2":{"34":1,"43":2,"97":4,"99":2}}],["join",{"2":{"97":2}}],["jou",{"2":{"88":2}}],["jp",{"2":{"97":6,"99":6}}],["ji",{"2":{"88":2}}],["js",{"2":{"34":1,"97":1,"99":1}}],["json5",{"2":{"1":2,"3":1,"5":1,"7":2,"9":2,"11":2,"13":1,"15":1,"17":2,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"86":2,"87":2,"88":10,"95":2,"100":8,"102":4}}],["json",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"35":3,"87":1}}],["javascript",{"2":{"43":2,"97":1,"99":1}}],["java",{"2":{"34":2,"43":2,"97":5,"99":1}}],["$signature",{"2":{"99":2}}],["$encodedhex",{"2":{"97":2}}],["$e",{"2":{"97":2}}],["$=",{"2":{"88":2}}],["$double",{"2":{"15":2,"51":1,"95":2}}],["$int64",{"2":{"1":2,"3":2,"87":3}}],["$int32",{"2":{"1":2,"3":2,"5":2,"7":2,"9":4,"11":4,"13":2,"15":5,"17":4,"19":2,"21":2,"25":2,"27":2,"29":2,"31":4,"51":6,"87":2,"88":6,"95":4,"100":6,"102":6}}],["gb",{"2":{"108":1}}],["gf",{"2":{"102":2}}],["g0",{"2":{"102":2}}],["gcm",{"2":{"92":1}}],["gh",{"2":{"88":2}}],["github",{"2":{"77":1}}],["given",{"2":{"15":1,"62":2}}],["graphs",{"2":{"71":1}}],["globally",{"2":{"70":1}}],["globe",{"2":{"70":1}}],["guide",{"2":{"83":1}}],["guides",{"2":{"43":1}}],["guidance",{"2":{"42":1}}],["google",{"2":{"105":1}}],["going",{"2":{"61":1}}],["go",{"2":{"38":1,"40":1,"65":1}}],["gt",{"2":{"35":1,"59":2,"60":2,"80":6,"87":1,"88":14,"94":1,"96":1,"97":6,"99":6}}],["gain",{"2":{"65":1,"70":1}}],["ga",{"2":{"15":1}}],["g",{"2":{"15":1,"50":1,"54":1,"75":1,"96":1,"105":1}}],["getbyname",{"2":{"97":2}}],["getting",{"0":{"33":1,"44":1},"2":{"42":1,"82":1}}],["get",{"2":{"5":2,"13":2,"15":2,"19":2,"21":2,"23":2,"27":2,"29":2,"31":2,"42":2,"44":1,"77":1,"94":1,"95":1}}],["generator",{"2":{"76":1}}],["generating",{"0":{"91":1,"92":1,"93":1},"1":{"92":1,"93":1},"2":{"1":1,"56":1,"85":1,"86":1}}],["generated",{"2":{"56":2,"87":1,"92":2,"93":1,"94":1,"97":2}}],["generate",{"2":{"1":1,"86":1,"92":3,"93":3}}],["50",{"2":{"15":1}}],["500",{"2":{"2":1,"4":1,"6":1,"8":1,"9":1,"10":1,"12":1,"14":1,"16":1,"18":1,"20":1,"22":1,"24":1,"26":1,"28":1,"30":1,"32":1,"108":1}}],["l",{"2":{"102":2}}],["lt",{"2":{"88":6,"97":2,"99":2,"102":4}}],["length",{"2":{"97":2}}],["let",{"2":{"97":6}}],["leftover",{"2":{"82":1}}],["legitimate",{"2":{"80":1}}],["ledger",{"2":{"43":1,"94":1,"101":1,"106":1,"108":1}}],["level",{"2":{"42":1,"62":1}}],["least",{"2":{"36":1,"46":1}}],["learn",{"2":{"36":1}}],["longer",{"2":{"50":1,"53":1,"90":1}}],["looking",{"2":{"42":1}}],["log",{"2":{"40":3,"67":1,"97":2,"99":2}}],["loads",{"2":{"36":1}}],["line",{"2":{"108":1}}],["likelihood",{"2":{"51":1,"53":1}}],["lists",{"2":{"85":1,"103":1}}],["list",{"2":{"35":1,"48":1,"87":1,"90":1,"95":1,"101":1,"102":2,"106":1,"109":1}}],["limited",{"2":{"66":1}}],["limit",{"0":{"23":1,"66":1},"1":{"24":1},"2":{"0":1,"23":1,"24":1,"45":1,"66":4}}],["later",{"2":{"87":1}}],["latest",{"2":{"15":1,"49":1,"55":1,"60":1}}],["language",{"2":{"43":1,"96":1,"98":1}}],["languages",{"2":{"34":1}}],["ub",{"2":{"102":2}}],["utf",{"2":{"99":2}}],["util",{"2":{"97":2}}],["uahwi",{"2":{"88":2}}],["uint8array",{"2":{"97":6}}],["ui",{"0":{"103":1},"2":{"39":2,"42":2,"59":1,"60":1,"61":1,"65":1,"103":1,"104":1,"106":1,"108":1}}],["unsuccessful",{"2":{"87":1}}],["unseen",{"2":{"15":2}}],["until",{"2":{"51":2,"53":1,"87":1,"100":2}}],["unique",{"2":{"21":2,"25":2,"51":2,"53":2,"100":2}}],["unix",{"2":{"9":2,"15":1,"51":2,"87":1,"100":2}}],["using",{"2":{"34":1,"36":1,"38":1,"40":1,"42":1,"56":1,"67":1,"92":1,"94":1,"97":1,"99":1,"105":1}}],["uses",{"2":{"41":1,"56":1}}],["use",{"2":{"34":1,"36":1,"37":1,"56":2,"58":1,"77":1,"92":1,"97":3,"99":1}}],["used",{"2":{"23":2,"43":1,"60":1,"61":1,"76":1,"87":1,"94":1,"96":3,"98":2}}],["users",{"2":{"34":2,"56":1,"58":2,"65":1,"69":1,"70":1,"75":3,"82":1}}],["user",{"0":{"1":1,"98":1},"1":{"2":1,"99":1},"2":{"0":1,"1":5,"2":4,"4":1,"6":1,"7":2,"13":2,"15":6,"17":2,"20":1,"31":2,"35":1,"38":2,"51":4,"56":5,"85":1,"86":5,"87":3,"88":2,"92":2,"93":1,"96":1,"97":2,"98":5,"99":17,"100":2}}],["us",{"2":{"15":1,"65":1,"95":4,"108":1}}],["updating",{"2":{"55":1}}],["update",{"2":{"55":1,"60":1,"106":1}}],["updated",{"2":{"48":1,"49":1,"62":1,"80":5,"81":1,"101":1,"102":2,"109":1}}],["updateperiod",{"2":{"23":2}}],["uploaded",{"2":{"55":1,"62":1,"69":1}}],["upload",{"0":{"72":1},"2":{"45":1,"55":1,"72":1,"75":2,"106":2,"108":6}}],["uploading",{"0":{"59":1,"108":1},"1":{"109":1},"2":{"45":1,"55":1,"59":1,"63":1,"72":1,"75":1,"103":1,"108":3}}],["upon",{"2":{"44":1,"77":1}}],["up",{"2":{"9":1,"42":1,"104":2,"108":1}}],["3hga+y7p",{"2":{"88":2}}],["3",{"2":{"88":2,"99":2,"102":2}}],["300",{"2":{"87":2}}],["3166",{"2":{"9":4,"15":1,"51":4,"53":2,"100":4,"108":2}}],["39",{"2":{"1":28,"3":16,"5":12,"7":20,"9":28,"11":12,"13":16,"15":36,"17":20,"19":16,"21":12,"23":8,"25":20,"27":20,"29":20,"31":16,"86":24,"87":32,"88":108,"94":24,"95":84,"97":62,"99":52,"100":80,"102":60}}],["25519",{"2":{"97":2}}],["256",{"2":{"92":2,"93":1}}],["2cbhwebdchzuk7",{"2":{"87":2}}],["2c92384e63afd4e806fa62bd8f293c266ee5a06af0a7355b48064d0734530fb4",{"2":{"86":2}}],["2rn6fi1aw",{"2":{"87":2}}],["2d439e8e7400c11e8c727516df43f45b76d5f18e9241ca9ea7b7c0847d521dcc7008b87f9ec399259d22993146cd0b604935f031020d5a493add9d3bddf4550e",{"2":{"86":2}}],["27",{"0":{"83":1}}],["2022",{"0":{"84":1}}],["2023",{"0":{"79":1,"83":1},"1":{"80":1,"81":1,"82":1}}],["200",{"2":{"2":1,"4":1,"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"18":1,"20":1,"22":1,"24":1,"26":1,"28":1,"30":1,"32":1,"88":6,"100":2}}],["2",{"0":{"43":1,"79":1,"93":1},"1":{"80":1,"81":1,"82":1},"2":{"9":4,"15":1,"41":1,"43":3,"51":4,"53":2,"56":1,"88":8,"93":2,"95":2,"96":1,"97":8,"99":2,"100":6,"102":2,"108":2}}],["rv=|xv",{"2":{"102":2}}],["rdf",{"2":{"88":2}}],["right",{"2":{"38":1,"40":1,"104":1,"106":1,"108":1}}],["rise",{"2":{"15":1,"62":1}}],["rust",{"2":{"34":1,"43":3}}],["random",{"2":{"56":1,"92":1,"93":1}}],["range",{"2":{"7":2,"13":3,"17":2,"51":1,"53":3,"71":1,"88":6,"108":4}}],["rate",{"0":{"63":1},"2":{"15":1,"45":1,"48":1,"62":2,"101":2,"105":2,"109":2}}],["references",{"0":{"97":1,"99":1},"2":{"97":1,"99":1}}],["reference",{"2":{"96":1}}],["refer",{"2":{"87":1,"97":2}}],["refactored",{"2":{"81":1}}],["refresh",{"2":{"4":1,"87":1}}],["refreshed",{"2":{"3":1,"4":1}}],["refreshtoken",{"2":{"1":2,"3":3,"87":5}}],["refreshing",{"0":{"3":1},"1":{"4":1},"2":{"0":1}}],["render",{"2":{"76":1}}],["repository",{"2":{"76":2}}],["reports",{"2":{"75":2}}],["represents",{"2":{"80":1}}],["representation",{"2":{"62":1,"69":1,"97":2}}],["represented",{"2":{"3":1,"51":2,"87":1,"88":1,"96":1,"97":4,"100":2}}],["remained",{"2":{"82":1}}],["remain",{"2":{"55":1,"60":1}}],["recent",{"2":{"69":1}}],["receives",{"2":{"64":1}}],["receive",{"2":{"39":1}}],["recommend",{"2":{"92":1}}],["recover",{"2":{"56":1}}],["recorded",{"2":{"54":1}}],["records",{"2":{"49":1,"55":1,"60":1}}],["review",{"2":{"44":1,"77":1}}],["reviewed",{"2":{"39":1}}],["re",{"2":{"42":1,"44":1,"96":1,"97":8}}],["released",{"2":{"83":1,"84":1}}],["release",{"0":{"78":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["relevant",{"2":{"41":1,"50":1,"51":2,"53":2,"87":1,"100":2,"104":1,"108":1}}],["relies",{"2":{"56":1}}],["relation",{"2":{"70":1}}],["relationship",{"2":{"34":1}}],["related",{"2":{"34":1,"41":1,"42":1,"52":1,"54":1,"59":1,"60":1,"70":2,"72":1,"73":1,"80":1,"81":1}}],["real",{"2":{"41":1,"69":1,"70":1}}],["reasons",{"2":{"36":1,"87":1}}],["read",{"2":{"33":1}}],["registration",{"2":{"34":2,"38":1,"39":1}}],["registered",{"2":{"40":1,"59":1,"64":1,"67":2,"75":2,"82":1}}],["registering",{"0":{"38":1},"1":{"39":1,"40":1},"2":{"33":1}}],["register",{"2":{"33":1,"38":4,"40":2}}],["resilience",{"2":{"56":1}}],["resistant",{"2":{"52":1}}],["resolve",{"2":{"44":1,"77":1}}],["resolved",{"2":{"14":1,"16":1,"35":1}}],["reset",{"2":{"40":5}}],["restoring",{"0":{"40":1}}],["resulting",{"2":{"96":1,"98":1}}],["results",{"2":{"94":2}}],["result",{"0":{"39":1,"87":1,"89":1,"95":1,"101":1,"105":1,"107":1,"109":1},"2":{"94":1}}],["responses",{"0":{"2":1,"4":1,"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"18":1,"20":1,"22":1,"24":1,"26":1,"28":1,"30":1,"32":1},"2":{"35":2,"87":1}}],["response",{"2":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":6,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"35":1,"51":2,"80":5,"87":1,"88":1,"94":3,"95":1,"100":1}}],["reward",{"0":{"66":1},"2":{"45":1,"48":1,"66":2,"80":1,"101":1,"102":1}}],["rewarded",{"2":{"11":2,"17":2,"59":1}}],["rewards",{"2":{"10":1,"48":1,"54":1,"66":1}}],["requires",{"2":{"96":1,"98":1}}],["requirements",{"2":{"34":1}}],["required",{"2":{"3":1,"13":1,"25":1,"34":1,"56":1,"96":1}}],["requestoutput",{"2":{"88":1,"102":2}}],["requestinput",{"2":{"86":1,"88":2,"100":2}}],["requesting",{"0":{"13":1,"19":1,"25":1},"1":{"14":1,"20":1,"26":1},"2":{"0":3,"15":7,"51":3}}],["requested",{"2":{"26":1,"104":2}}],["requestedbypeer",{"2":{"25":2,"27":2,"29":2}}],["request",{"2":{"1":1,"3":2,"5":2,"7":1,"8":1,"9":1,"11":1,"13":2,"15":2,"16":1,"17":1,"19":2,"21":2,"23":2,"25":2,"27":2,"29":2,"31":2,"51":2,"65":1,"75":2,"86":1,"88":4,"90":1,"93":1,"94":5,"95":2,"96":1,"98":1,"100":2,"102":3,"104":2}}],["requests",{"0":{"27":1,"29":1,"51":1},"1":{"28":1,"30":1},"2":{"0":2,"9":1,"28":1,"30":1,"35":1,"45":1,"56":1,"80":2,"87":1,"96":1,"98":1}}],["returns",{"2":{"97":6,"99":2}}],["return",{"2":{"54":1,"97":16,"99":6}}],["returned",{"2":{"3":1,"51":2}}],["retrieves",{"2":{"81":1}}],["retrieve",{"2":{"35":1,"49":1,"81":1,"90":1,"94":1,"96":1,"97":2,"99":2,"102":2}}],["retrieved",{"2":{"6":1,"8":1,"10":1,"12":1,"14":1,"15":1,"16":1,"18":1,"20":1,"22":1,"24":1,"28":1,"30":1,"32":1,"35":1,"51":4,"62":1,"88":1,"96":2,"100":1,"106":1}}],["retrieving",{"0":{"5":1,"15":1,"21":1,"23":1,"27":1,"29":1,"31":1,"49":1,"94":1},"1":{"6":1,"16":1,"22":1,"24":1,"28":1,"30":1,"32":1,"95":1},"2":{"0":7,"25":1,"34":1,"35":1,"45":1,"51":1,"60":1,"61":1,"62":1,"66":1,"80":4,"85":1,"94":2}}],["wonderland",{"2":{"99":2}}],["work",{"2":{"76":1}}],["workflows",{"2":{"42":1}}],["works",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"42":1,"45":1}}],["w",{"2":{"88":2}}],["wcgoopg7f9",{"2":{"87":2}}],["wgas5xqp5mkibwd1fcxt8hyj8zgezzbo",{"2":{"87":2}}],["written",{"2":{"43":1,"66":1}}],["we",{"2":{"92":1}}],["well",{"2":{"43":1,"82":1}}],["welcome",{"0":{"41":1,"64":1},"1":{"42":1,"43":1,"44":1},"2":{"41":1,"45":1}}],["web",{"0":{"67":1,"103":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1},"2":{"39":3,"42":3,"45":1,"59":1,"60":1,"61":1,"65":1,"67":1,"75":1,"87":1,"103":1,"104":1,"106":1,"108":1}}],["website",{"2":{"38":1,"40":1}}],["what",{"0":{"43":1},"2":{"42":1,"70":1}}],["which",{"2":{"39":1,"42":1,"51":2,"53":1,"56":2,"60":1,"62":1,"69":1,"87":2,"93":1,"100":2,"105":1}}],["when",{"2":{"51":2,"53":1,"56":1,"62":2,"80":2,"94":2}}],["whether",{"2":{"15":4,"51":1,"62":1,"75":1}}],["wherever",{"2":{"97":2}}],["where",{"0":{"42":1},"2":{"3":1,"13":1,"25":1,"34":1,"36":1,"42":1,"54":1,"82":1}}],["wish",{"2":{"104":1,"106":1}}],["will",{"2":{"36":1,"44":1,"77":1,"94":1}}],["within",{"2":{"55":1,"60":1}}],["without",{"2":{"36":2}}],["with",{"2":{"9":1,"15":1,"34":1,"35":2,"36":2,"40":2,"42":5,"43":1,"49":1,"50":1,"52":1,"53":1,"54":1,"56":3,"62":3,"64":1,"66":1,"75":3,"76":1,"77":1,"80":1,"82":4,"83":1,"85":1,"87":1,"92":1,"97":6,"102":1,"103":1}}],["want",{"2":{"62":1}}],["wangiriirsfstolendeviceipfraudsmsa2p",{"2":{"15":1,"51":2,"53":1}}],["wangiri",{"2":{"9":2,"15":2,"95":4,"100":4}}],["ways",{"2":{"49":1,"94":1}}],["walks",{"2":{"42":1}}],["wallet",{"2":{"0":1,"31":1,"102":2}}],["was",{"2":{"3":1,"51":2,"53":2,"82":1,"100":2,"108":1}}],["4c",{"2":{"102":2}}],["4",{"2":{"97":4}}],["413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac",{"2":{"97":4,"99":4}}],["413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc3",{"2":{"97":2}}],["4`v",{"2":{"88":2}}],["443",{"2":{"37":2}}],["422",{"2":{"2":1}}],["400",{"2":{"8":1,"10":1,"12":1,"14":1,"16":1,"18":1,"26":1}}],["404",{"2":{"2":1,"4":1,"6":1,"8":1,"10":1,"16":1,"20":1,"24":1}}],["401",{"2":{"2":1,"4":1}}],["dd",{"2":{"104":2}}],["dropdown",{"2":{"104":2,"106":2,"108":2}}],["d",{"2":{"88":2}}],["dynamic",{"2":{"69":1}}],["date",{"2":{"51":2,"53":3,"100":2,"104":6}}],["datamodel",{"2":{"97":18}}],["database",{"2":{"55":1}}],["data",{"0":{"51":1,"55":1,"69":1,"104":1,"106":1,"108":1},"1":{"105":1,"107":1,"109":1},"2":{"1":2,"3":2,"5":2,"7":3,"8":1,"9":3,"10":1,"11":3,"12":1,"13":3,"15":3,"17":3,"18":1,"19":3,"21":2,"23":3,"25":3,"27":3,"29":3,"31":3,"34":1,"41":2,"43":1,"45":2,"46":1,"49":1,"51":4,"52":1,"53":2,"54":1,"55":1,"58":1,"59":1,"60":2,"61":1,"62":3,"69":2,"71":2,"72":2,"73":2,"75":1,"80":2,"81":2,"82":2,"87":4,"88":18,"90":2,"95":4,"97":4,"100":12,"102":12,"103":3,"104":6,"105":1,"106":4,"108":11}}],["digest",{"2":{"97":2,"99":2}}],["digital",{"2":{"56":2,"58":1,"61":1}}],["digit",{"2":{"9":4,"15":1,"51":4,"53":2,"100":4,"108":4}}],["displays",{"2":{"75":3,"80":3}}],["displayed",{"2":{"35":1}}],["discuss",{"2":{"65":1,"77":1}}],["disruptions",{"2":{"56":1}}],["difference",{"2":{"36":1}}],["different",{"2":{"34":1,"36":2}}],["during",{"2":{"34":1}}],["documented",{"2":{"80":4,"83":1}}],["document",{"2":{"66":1}}],["documentation",{"0":{"76":1},"1":{"77":1},"2":{"34":1,"41":1,"43":1,"76":3,"77":1}}],["downloaded",{"2":{"105":1}}],["download",{"0":{"73":1},"2":{"45":1,"55":2,"62":1,"73":1,"104":6}}],["downloading",{"0":{"60":1,"104":1},"1":{"105":1},"2":{"45":1,"55":1,"58":1,"60":2,"61":1,"62":1,"63":1,"73":1,"94":1,"103":1}}],["do",{"2":{"35":1}}],["doesn",{"2":{"10":1}}],["domainmetadata",{"2":{"19":2}}],["domainid",{"2":{"19":2,"25":2,"27":2,"29":2}}],["domain",{"2":{"7":2,"13":2,"17":2,"20":1,"100":4}}],["deleted",{"2":{"82":1}}],["derived",{"2":{"71":1}}],["device",{"2":{"53":1,"105":1}}],["deems",{"2":{"50":1}}],["dependencies",{"2":{"81":1,"97":4,"99":4}}],["depending",{"2":{"34":1,"39":1,"96":1,"98":1}}],["deploying",{"2":{"36":1}}],["decreased",{"2":{"105":1}}],["declared",{"2":{"102":1}}],["declined",{"2":{"25":2,"27":2,"29":2}}],["decodesignencode",{"2":{"97":2}}],["decode",{"2":{"96":1,"97":12}}],["decodedtransaction",{"2":{"97":4}}],["decoded",{"2":{"2":2,"96":1}}],["decentralized",{"2":{"41":1,"54":1}}],["definition",{"2":{"51":1}}],["definitionid",{"2":{"7":2,"13":2,"17":2,"31":2,"88":6,"100":2,"102":4}}],["defines",{"2":{"15":2}}],["default",{"0":{"63":1},"2":{"15":11,"62":3}}],["describes",{"2":{"46":1}}],["description",{"2":{"2":1,"4":1,"6":1,"8":1,"10":1,"12":1,"13":1,"14":1,"15":1,"16":1,"18":1,"20":1,"22":1,"24":1,"25":1,"26":1,"28":1,"30":1,"32":1,"51":2,"53":1,"87":1}}],["designed",{"2":{"33":1,"41":1}}],["destination",{"2":{"9":2,"15":2,"51":2,"53":2,"69":1,"88":2,"95":6,"100":4,"102":2,"108":1}}],["deterministic",{"2":{"6":1,"56":2}}],["details",{"0":{"19":1,"37":1},"1":{"20":1},"2":{"0":1,"15":2,"19":1,"20":1,"36":1,"38":3,"54":1,"82":1}}],["n",{"2":{"97":2,"99":2}}],["null",{"2":{"88":2,"95":4,"102":2}}],["numeric",{"2":{"62":1}}],["numbers",{"2":{"53":1,"71":1,"108":1}}],["number",{"2":{"7":2,"13":2,"15":3,"17":2,"48":1,"49":1,"51":4,"61":1,"88":1,"95":2,"97":2}}],["n+",{"2":{"88":2}}],["ntpj9assu9vozywskspjqcot8pta7d",{"2":{"87":2}}],["national",{"2":{"53":1}}],["name",{"2":{"1":2,"3":2,"5":2,"7":2,"9":2,"11":2,"13":2,"15":2,"17":2,"19":2,"21":2,"23":2,"25":2,"27":2,"29":2,"31":2,"75":2,"87":4,"88":12,"95":4,"100":8,"102":8}}],["now",{"2":{"39":1,"80":3}}],["no",{"2":{"35":1,"50":1,"53":1,"90":1,"94":1}}],["nodes",{"2":{"56":1}}],["node",{"2":{"34":1,"56":1,"97":2,"99":2}}],["none",{"2":{"25":2,"27":2,"29":2}}],["notice",{"2":{"66":1}}],["notifying",{"2":{"39":1}}],["not",{"2":{"2":3,"4":3,"6":1,"8":1,"10":1,"14":1,"16":2,"20":1,"24":2,"26":1,"51":1,"53":1,"84":1,"97":2}}],["notes",{"0":{"78":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["note",{"2":{"1":1,"9":1,"35":1,"75":1,"86":1,"88":2,"94":1,"97":2,"100":1,"108":2}}],["net",{"2":{"97":2}}],["network",{"0":{"55":1,"56":1},"2":{"34":1,"36":1,"39":1,"45":3,"48":1,"52":1,"54":3,"55":4,"56":7,"69":1,"71":1,"81":1,"82":1,"93":1,"101":1,"105":1,"109":1}}],["needed",{"2":{"97":2}}],["need",{"2":{"36":1,"38":1}}],["needs",{"2":{"35":1,"65":1,"94":1}}],["nextupdate",{"2":{"23":2}}],["new",{"2":{"15":4,"40":1,"42":1,"51":1,"62":1,"64":1,"80":1,"82":1,"97":2,"99":2,"108":1}}],["0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000081c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f1c65643235353139807fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac01014a3cffcfb6276cc6de039c3ab287e7614e6dffc5e152200efa817d59c04334839c9624781bb1bda7b1d5ead0f0ea1c31238cccf9a948becf71d09728c4914d0d",{"2":{"97":2}}],["0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f",{"2":{"88":2,"97":6,"100":2}}],["0tcug",{"2":{"87":2}}],["04",{"0":{"83":1}}],["000",{"2":{"64":1,"66":3}}],["0",{"0":{"84":1},"2":{"1":4,"3":4,"5":2,"7":2,"9":4,"11":4,"13":2,"15":15,"17":4,"19":2,"21":2,"23":10,"25":2,"27":2,"29":2,"31":4,"87":6,"88":36,"95":16,"97":16,"99":10,"100":18,"102":18}}],["him2g5n",{"2":{"88":2}}],["high",{"2":{"42":1}}],["html",{"2":{"76":1}}],["httpget",{"2":{"90":1,"94":1,"102":2}}],["httppatch",{"2":{"88":2}}],["httppost",{"2":{"86":1,"88":1,"96":1,"98":1,"100":2}}],["https",{"2":{"37":4}}],["http",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"35":1,"94":1}}],["hyperledger",{"2":{"41":1,"43":1}}],["ho",{"2":{"102":2}}],["hotspots",{"2":{"69":1}}],["hotspot",{"2":{"62":1}}],["home",{"0":{"68":1},"1":{"69":1,"70":1},"2":{"45":1}}],["host",{"2":{"37":2}}],["however",{"2":{"62":1,"96":1,"98":1}}],["how",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"1":1,"33":1,"36":1,"40":1,"42":3,"45":1,"48":1,"80":1,"86":1,"97":1,"99":1}}],["hextobytes",{"2":{"97":4}}],["hex",{"2":{"96":5,"97":32,"98":2,"99":18}}],["here",{"2":{"36":1,"80":4}}],["helps",{"2":{"55":1,"60":1}}],["help",{"0":{"44":1},"2":{"33":1,"42":1,"52":2,"54":1}}],["headers",{"2":{"87":1}}],["header",{"2":{"3":2,"4":1}}],["had",{"2":{"82":1}}],["have",{"2":{"4":1,"16":1,"20":1,"22":1,"28":1,"30":1,"39":1,"40":2,"51":3,"59":1,"80":1}}],["hash",{"2":{"92":2,"93":2}}],["hasn",{"2":{"51":1}}],["has",{"0":{"90":1,"102":1},"2":{"2":1,"3":1,"6":1,"8":2,"10":2,"12":2,"14":1,"15":2,"16":1,"18":2,"24":1,"26":1,"32":1,"34":1,"46":1,"48":1,"53":1,"61":1,"64":1,"75":2,"80":1,"85":2,"87":2,"90":2,"96":1,"102":4}}],["each",{"2":{"108":1}}],["earned",{"2":{"60":1}}],["earn",{"2":{"54":1,"58":1}}],["eww=vo6myf",{"2":{"88":2}}],["ed0120",{"2":{"97":2,"99":2}}],["ed",{"2":{"97":2}}],["eddsanamedcurvetable",{"2":{"97":6}}],["eddsa",{"2":{"97":2}}],["edxqky",{"2":{"88":2}}],["ed25519",{"2":{"56":2,"97":14,"99":8}}],["eyjhy2p0asi6ijzjnjg4zjy2lwi2njmtngeyni04n2vkltq3zjm4ztqxmtflyiisinn1yii6infhmebtywlslmnvbsisimv4cci6mty2mtmzmtaymcwianrpijoizwfhn2e3yjmtywm3ms00mjg2lthiogmtmje4zdywnda1ndywin0",{"2":{"87":2}}],["eyjhy2mioijxytbacweilcjzdwiioijxytbabwfpbc5jb20ilcjyb2xlijoiuk9mrv9qruvsiiwizxhwijoxnjyxmjq0otiwlcjqdgkioii2yzy4ogy2ni1injyzltrhmjytoddlzc00n2yzogu0mtexzwiifq",{"2":{"87":2}}],["eyj0exaioijkv1qilcjhbgcioijfzertqsj9",{"2":{"87":4}}],["evaluated",{"2":{"62":1}}],["every",{"2":{"53":1,"59":1,"64":1,"96":1,"98":1}}],["everything",{"2":{"42":1}}],["events",{"0":{"52":1,"59":1,"60":1},"1":{"53":1},"2":{"41":1,"45":3,"52":1,"54":1,"55":1,"59":1,"63":2,"72":1,"73":1,"75":1,"94":1,"96":1,"98":1,"104":6,"105":1,"108":1}}],["event",{"2":{"15":2,"46":2,"49":1,"51":11,"52":1,"53":16,"54":2,"58":1,"60":1,"61":1,"62":4,"71":1,"80":1,"87":1,"100":10,"104":2,"106":4,"107":1,"108":9}}],["ecosystem",{"2":{"52":1}}],["emerging",{"2":{"69":1,"70":1}}],["empty",{"2":{"51":1}}],["email",{"0":{"98":1},"1":{"99":1},"2":{"1":7,"34":1,"39":1,"40":3,"44":1,"56":2,"66":1,"77":1,"85":1,"86":11,"92":1,"93":1,"98":3,"99":17}}],["equal",{"2":{"48":1}}],["efficient",{"2":{"43":1}}],["etc",{"2":{"34":1,"54":1,"62":1,"71":1,"75":1}}],["e",{"2":{"15":1,"41":1,"50":1,"53":1,"54":1,"75":1,"88":2,"96":1,"97":4,"105":1,"108":1}}],["excel",{"2":{"105":1}}],["exclusive",{"2":{"65":1}}],["exchange",{"2":{"41":1}}],["exampleoutput",{"2":{"88":2,"100":2}}],["example",{"2":{"86":1,"87":1,"88":3,"95":1,"97":12,"99":4,"100":2,"102":1,"108":2}}],["examples",{"2":{"34":1,"35":1,"94":1}}],["exact",{"2":{"51":2,"53":2,"54":1,"87":1,"96":1,"98":1,"100":2}}],["exhaustively",{"2":{"42":1}}],["external",{"2":{"35":1}}],["expansion",{"2":{"55":1}}],["explaining",{"2":{"42":1}}],["explains",{"2":{"42":1}}],["experiencing",{"2":{"44":1,"77":1}}],["experiment",{"2":{"36":1}}],["expected",{"0":{"39":1,"87":1,"89":1,"95":1,"101":1,"105":1,"107":1,"109":1},"2":{"15":1,"62":1}}],["expiry",{"2":{"53":1}}],["expirydate",{"2":{"9":2,"15":2,"51":2,"88":2,"95":6,"100":4,"102":2}}],["expired",{"2":{"15":2,"53":2,"95":4}}],["expirationtime",{"2":{"1":2,"3":2,"87":5}}],["existing",{"2":{"42":1,"72":1}}],["exist",{"2":{"10":1}}],["epoch",{"2":{"9":2,"15":1,"51":2,"87":1,"100":2}}],["error",{"2":{"2":1,"4":1,"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"18":1,"20":1,"22":1,"24":1,"26":1,"28":1,"30":1,"32":1,"35":1}}],["either",{"2":{"2":1,"3":1,"4":1,"40":1,"72":1}}],["ending",{"2":{"108":1}}],["end",{"2":{"104":1}}],["endpoint",{"2":{"1":1,"3":2,"5":2,"7":1,"9":2,"11":1,"13":2,"15":2,"17":1,"19":2,"21":2,"23":2,"25":2,"27":2,"29":2,"31":2,"61":1,"66":1,"96":1,"98":1}}],["endpoints",{"0":{"34":1},"2":{"0":1,"33":2,"34":3,"35":1,"38":1,"39":1,"42":1,"75":1,"96":1}}],["encryption",{"2":{"92":1}}],["encountered",{"2":{"59":1}}],["encoders",{"2":{"97":2}}],["encode",{"2":{"96":1,"97":8,"98":1,"99":4}}],["encodedhex",{"2":{"97":4}}],["encoded",{"2":{"1":2,"86":2,"96":1,"97":18,"98":1,"99":4}}],["encoding",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1}}],["engine",{"2":{"81":2}}],["enhancing",{"2":{"81":1}}],["enhance",{"2":{"56":1}}],["enhances",{"2":{"55":1}}],["enabled",{"2":{"62":1}}],["enables",{"2":{"41":1,"54":1,"60":1}}],["enabling",{"2":{"34":1}}],["ensures",{"2":{"56":1}}],["ensure",{"2":{"35":1,"56":1}}],["environment",{"0":{"36":1},"1":{"37":1},"2":{"33":2,"36":5,"37":1}}],["entry",{"2":{"108":1}}],["entries",{"2":{"9":1,"15":10,"108":1}}],["entire",{"2":{"94":1}}],["entity",{"2":{"26":1}}],["enter",{"2":{"40":2,"104":2}}],["enum",{"2":{"9":2,"15":4,"27":2,"29":2,"51":3,"95":2}}],["mm",{"2":{"104":2}}],["microsoft",{"2":{"105":1}}],["mirroring",{"2":{"96":1}}],["mistakes",{"2":{"36":1}}],["m",{"2":{"88":2}}],["mbs6xx2o",{"2":{"88":2}}],["mptvi",{"2":{"88":2}}],["mpggodlscwwncfvet4ixg3wz0zfjaw",{"2":{"87":2}}],["multihash",{"2":{"97":2}}],["multiple",{"2":{"56":1,"62":1}}],["must",{"2":{"51":1,"88":3,"94":1,"100":1,"108":1}}],["monthly",{"0":{"66":1},"2":{"45":1,"66":1}}],["more",{"2":{"41":1,"52":1,"55":1,"56":1,"94":1,"97":2,"104":1,"108":1}}],["mode=new",{"2":{"94":4}}],["model",{"0":{"53":1,"58":1},"2":{"45":2,"53":1,"58":1,"97":4}}],["mode",{"2":{"15":4,"92":1,"94":2}}],["magic",{"2":{"97":2}}],["major",{"2":{"70":1}}],["map",{"2":{"69":1}}],["main",{"0":{"80":1},"2":{"53":1,"99":2}}],["malicious",{"2":{"52":1}}],["manipulation",{"2":{"62":1}}],["many",{"2":{"62":1}}],["manually",{"2":{"39":1,"104":2}}],["manage",{"2":{"43":1}}],["manager",{"2":{"7":1,"88":2}}],["management",{"2":{"1":1,"3":1,"5":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"86":2,"88":4,"90":2,"94":16,"96":4,"98":2,"100":4,"102":4}}],["make",{"2":{"36":1,"75":1}}],["may",{"2":{"35":1,"44":1,"65":1,"66":1,"77":1,"96":1,"98":1}}],["mepimb",{"2":{"102":2}}],["membership",{"2":{"75":1}}],["menu",{"2":{"38":1,"40":1,"104":3,"106":3,"108":3}}],["metrics",{"2":{"71":1}}],["metadata",{"2":{"24":1}}],["method",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"39":1}}],["message",{"2":{"1":2,"3":2,"5":2,"7":2,"9":2,"11":2,"13":2,"15":2,"17":2,"19":2,"21":2,"23":2,"25":2,"27":2,"29":2,"31":2,"40":1,"87":4,"88":6,"95":2,"99":2,"100":4,"102":4}}],["v9",{"2":{"102":2}}],["v",{"2":{"88":4,"97":4}}],["vb5ek",{"2":{"88":2}}],["vulnerabilities",{"2":{"81":1}}],["verify",{"2":{"90":1,"102":1}}],["verifying",{"0":{"90":1,"102":1},"2":{"85":2}}],["verified",{"2":{"2":1,"56":1}}],["versionedsignedtransaction",{"2":{"97":14}}],["version",{"0":{"79":1,"83":1,"84":1},"1":{"80":1,"81":1,"82":1},"2":{"83":1,"84":1,"97":8,"99":4}}],["vendor",{"2":{"75":1}}],["visit",{"2":{"76":1}}],["visualized",{"2":{"71":1}}],["visual",{"2":{"69":1}}],["vitepress",{"2":{"76":1}}],["view",{"2":{"68":1,"70":1,"71":1,"74":1,"75":1}}],["vigilant",{"2":{"55":1,"60":1}}],["via",{"2":{"39":1,"44":1,"77":1,"104":1,"106":1,"108":1}}],["vary",{"2":{"96":1,"98":1}}],["various",{"2":{"41":1,"55":1,"94":1}}],["variety",{"2":{"35":1,"42":1,"71":1}}],["val",{"2":{"97":16,"99":10}}],["valuable",{"2":{"70":1}}],["value",{"2":{"3":1,"9":2,"13":1,"15":1,"25":1,"50":1,"51":2,"56":1,"62":3,"80":2,"87":1,"88":3,"89":1,"93":1,"97":4,"99":2,"106":1}}],["values",{"0":{"5":1},"1":{"6":1},"2":{"0":1,"13":1,"88":2,"108":1}}],["valid",{"2":{"2":1,"4":1,"53":1}}],["v1",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"86":2,"88":6,"90":2,"94":16,"96":4,"97":4,"98":2,"100":4,"102":4}}],["bpdkye^s",{"2":{"102":2}}],["blake2b",{"2":{"92":1,"93":1}}],["blocked",{"2":{"35":1}}],["blockchain",{"0":{"76":1},"1":{"77":1},"2":{"6":1,"34":1,"38":1,"40":1,"41":3,"43":1,"44":1,"46":2,"53":4,"54":1,"55":1,"56":1,"60":1,"62":2,"66":1,"77":1,"80":1,"93":2}}],["b",{"2":{"88":6,"99":2}}],["bug",{"0":{"82":1},"2":{"82":3}}],["bugs",{"2":{"36":1}}],["built",{"2":{"76":1}}],["but",{"2":{"53":1}}],["back",{"2":{"44":1,"77":1}}],["backend",{"2":{"37":1,"56":2,"75":1}}],["bash",{"2":{"43":1}}],["basic",{"2":{"34":1,"42":1,"85":1,"103":1}}],["based",{"2":{"15":2,"41":1,"48":1,"92":1,"101":1,"105":1,"109":1}}],["balance`",{"2":{"102":1}}],["balance`get",{"2":{"102":1}}],["balance",{"0":{"31":1,"61":1},"1":{"32":1},"2":{"0":1,"31":3,"32":1,"45":1,"48":2,"61":2,"74":1,"101":1,"102":7,"105":1,"109":1}}],["box",{"2":{"104":2,"106":1,"108":1}}],["bouncycastle",{"2":{"97":2}}],["bonus",{"0":{"64":1},"2":{"45":1,"64":1}}],["boolean",{"2":{"15":8,"51":1,"95":4}}],["body",{"2":{"8":1,"51":4,"96":1,"98":1}}],["between",{"2":{"80":1}}],["benefits",{"2":{"65":1}}],["beneficial",{"2":{"36":1}}],["become",{"2":{"39":1}}],["begin",{"2":{"38":1}}],["below",{"2":{"36":1,"97":1,"99":1}}],["before",{"2":{"35":2,"36":1,"96":1}}],["being",{"2":{"34":1,"82":1,"96":1,"98":1}}],["bearer",{"2":{"4":1,"87":1}}],["be",{"2":{"2":2,"4":1,"8":1,"9":2,"14":1,"15":7,"16":1,"25":2,"27":2,"29":2,"35":2,"36":1,"46":1,"50":1,"51":4,"52":1,"53":3,"55":1,"56":1,"58":1,"60":1,"61":1,"62":1,"71":2,"82":1,"85":1,"88":4,"94":2,"95":4,"96":4,"98":2,"100":3,"103":1,"104":2,"105":1}}],["been",{"0":{"90":1,"102":1},"2":{"2":1,"3":1,"4":1,"6":1,"8":2,"10":2,"12":2,"14":1,"16":2,"18":2,"20":1,"22":1,"24":1,"26":1,"28":1,"30":1,"32":1,"34":1,"48":1,"51":4,"80":1,"82":1,"85":2,"87":2,"90":2,"102":4}}],["bytearray",{"2":{"97":2}}],["bytestohex",{"2":{"97":6}}],["bytes",{"2":{"93":1,"97":12,"99":2}}],["by",{"0":{"13":1,"25":1},"1":{"14":1,"26":1},"2":{"0":2,"3":1,"14":2,"15":13,"16":2,"26":1,"33":1,"36":1,"38":1,"39":1,"40":1,"42":1,"46":1,"48":1,"51":3,"52":1,"53":1,"54":1,"55":2,"56":1,"61":2,"62":2,"66":2,"69":1,"71":1,"88":3,"90":1,"100":2,"104":2,"108":2}}],["pn^j~jo",{"2":{"102":2}}],["pub",{"2":{"97":2,"99":2}}],["public",{"0":{"36":1},"1":{"37":1},"2":{"1":2,"33":1,"56":1,"83":1,"84":1,"86":2,"96":1,"97":8,"98":1,"99":8}}],["publickeyhex",{"2":{"97":6,"99":6}}],["publickey",{"2":{"1":3,"2":1,"86":5,"97":4,"99":4}}],["push",{"2":{"97":2}}],["pi",{"2":{"88":2}}],["piece",{"2":{"46":1,"93":1}}],["pc",{"2":{"88":2}}],["pg",{"2":{"88":2}}],["phone",{"2":{"53":1,"71":1,"88":1,"108":1}}],["please",{"2":{"44":1,"77":2}}],["platform",{"2":{"41":3,"57":1}}],["pop",{"2":{"104":2}}],["point",{"2":{"44":1}}],["potentially",{"2":{"56":1}}],["potential",{"2":{"41":2,"82":1}}],["port",{"2":{"37":2}}],["positive",{"2":{"50":1,"106":1}}],["possible",{"2":{"35":1,"87":1,"94":1}}],["posting",{"2":{"70":1}}],["post",{"2":{"1":1,"9":1,"17":1,"25":2,"88":1}}],["python",{"2":{"34":1,"43":2,"97":2,"99":2}}],["pending",{"2":{"25":4,"27":2,"29":2}}],["per",{"2":{"58":1,"63":2,"66":1}}],["personal",{"2":{"38":1}}],["persisted",{"2":{"6":1}}],["performed",{"2":{"81":1,"85":1,"103":1}}],["performing",{"2":{"40":1}}],["performance",{"2":{"36":1,"81":1}}],["perform",{"2":{"34":2,"38":1,"42":1,"88":1,"92":1,"93":1,"100":1,"102":1,"104":1,"106":1,"108":1}}],["period",{"2":{"24":1}}],["peer=",{"2":{"25":1}}],["peerid",{"2":{"7":2,"13":2,"15":2,"17":2,"21":2,"25":1,"31":2,"51":1,"88":2,"95":6}}],["peers",{"0":{"21":1},"1":{"22":1},"2":{"0":1,"22":1,"46":1,"49":1,"52":1,"53":1,"54":3,"55":3,"59":1,"60":1,"62":2,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1}}],["peer",{"0":{"19":1,"23":1,"25":1},"1":{"20":1,"24":1,"26":1},"2":{"0":4,"15":1,"19":1,"20":1,"21":3,"23":1,"24":1,"25":6,"26":1,"38":1,"39":1,"46":1,"48":1,"50":2,"51":2,"53":1,"61":2,"62":1,"64":1,"66":3,"75":7,"80":1,"82":5,"88":1,"90":2,"94":1,"100":1,"101":1,"102":4}}],["padstart",{"2":{"97":2}}],["package",{"2":{"97":4,"99":4}}],["paid",{"2":{"65":1}}],["pair`",{"2":{"97":2,"99":2}}],["pairs",{"0":{"91":1},"1":{"92":1,"93":1},"2":{"1":1,"56":5,"85":1,"86":1}}],["pair",{"0":{"92":1,"93":1},"2":{"1":2,"56":4,"86":2,"92":2,"93":2,"96":1,"97":6,"98":1,"99":10}}],["payload",{"2":{"97":10,"99":4}}],["pay",{"2":{"58":1,"60":1,"61":1}}],["payment",{"0":{"58":1},"2":{"45":1}}],["password",{"2":{"40":7,"56":2,"92":2,"93":1}}],["page",{"2":{"38":1,"40":2,"61":1,"65":1,"68":1,"71":1,"72":1,"73":1,"74":1,"75":3}}],["patterns",{"2":{"62":1,"70":1}}],["path",{"2":{"13":1,"96":1}}],["patch",{"2":{"3":2,"7":1,"11":1,"96":2}}],["parseint",{"2":{"97":2}}],["parsed",{"2":{"4":1}}],["param",{"2":{"97":14,"99":6}}],["parameter",{"2":{"13":1,"15":7,"25":1,"62":1}}],["parameters",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"16":2,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"80":2,"94":5,"95":1}}],["part",{"2":{"98":1}}],["party",{"2":{"81":1}}],["participants",{"2":{"41":1,"52":1,"54":1}}],["print",{"2":{"97":2,"99":2}}],["println",{"2":{"97":4,"99":4}}],["privacy",{"2":{"56":1}}],["privatekeyhex",{"2":{"97":6,"99":6}}],["privatekey",{"2":{"97":4,"99":4}}],["private",{"2":{"56":1,"96":1,"97":22,"98":1,"99":22}}],["price",{"2":{"15":2,"62":3}}],["prefix",{"2":{"97":2}}],["pre",{"2":{"76":1}}],["presence",{"2":{"62":1}}],["presented",{"2":{"33":1}}],["predicted",{"2":{"51":1,"53":1}}],["prevent",{"2":{"41":1,"52":1,"54":1,"55":1,"60":1}}],["preventing",{"2":{"35":1}}],["previous",{"2":{"3":1}}],["premium",{"0":{"21":1,"25":1,"27":1,"29":1,"65":1},"1":{"22":1,"26":1,"28":1,"30":1},"2":{"0":5,"8":1,"15":2,"21":1,"22":1,"25":2,"26":1,"27":1,"28":1,"29":1,"30":1,"45":1,"51":1,"65":2,"75":1,"95":6}}],["processing",{"2":{"82":1}}],["process",{"2":{"55":1,"56":1,"60":1}}],["proceeding",{"2":{"35":1}}],["proceed",{"2":{"35":1}}],["profile",{"0":{"75":1},"2":{"45":1,"65":1}}],["production",{"2":{"36":5}}],["programming",{"2":{"34":1,"96":1,"98":1}}],["provides",{"2":{"41":1,"42":2,"43":2,"45":1,"57":1,"58":1,"69":1,"70":1}}],["provide",{"2":{"34":1}}],["provided",{"2":{"34":2,"36":1,"40":1,"97":2}}],["provider",{"2":{"0":1,"25":1,"27":1,"29":1}}],["providing",{"2":{"33":1}}],["protocol",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"37":2}}],["csv",{"2":{"105":1}}],["class",{"2":{"99":2}}],["cli",{"2":{"62":1}}],["click",{"2":{"40":1}}],["client",{"2":{"34":2,"97":2}}],["ccm",{"2":{"92":1}}],["c",{"2":{"88":2}}],["cities",{"2":{"70":1}}],["customers",{"2":{"70":2}}],["customer",{"2":{"70":1}}],["custom",{"2":{"65":1}}],["currently",{"2":{"66":1}}],["current",{"0":{"63":1},"2":{"45":1,"48":1,"61":1,"66":1,"74":1,"101":2,"105":2,"109":2}}],["criteria",{"2":{"105":1}}],["crypto",{"2":{"97":16,"99":10}}],["crucial",{"2":{"56":2,"62":1}}],["createemailsignature",{"2":{"99":4}}],["creates",{"2":{"56":1}}],["create",{"2":{"52":1,"56":1,"92":1,"93":1,"96":1,"98":1,"99":2}}],["credentials",{"2":{"34":2,"36":2,"37":1,"67":1,"82":1}}],["credits",{"2":{"51":1,"58":2,"59":1,"60":1,"61":1,"63":1,"64":1}}],["creditsspent",{"2":{"15":2,"51":1,"80":1}}],["credit",{"0":{"31":1,"61":1},"1":{"32":1},"2":{"0":1,"31":2,"32":1,"45":1,"48":2,"54":1,"61":2,"63":1,"101":1,"102":3,"105":1,"109":1}}],["case",{"2":{"82":1,"108":1}}],["caused",{"2":{"82":1}}],["category",{"2":{"75":1}}],["catch",{"2":{"36":1,"97":2}}],["calendar",{"2":{"104":2}}],["calculated",{"2":{"62":1}}],["called",{"2":{"34":1}}],["calls",{"2":{"34":1,"35":1}}],["calling",{"0":{"34":1},"2":{"33":1,"35":1,"61":1,"66":1}}],["call",{"2":{"33":1,"82":1}}],["can",{"2":{"8":1,"34":2,"35":1,"36":5,"39":1,"40":2,"42":2,"46":1,"49":1,"50":1,"52":2,"54":4,"55":2,"56":2,"58":1,"60":1,"61":2,"62":1,"66":1,"67":1,"68":1,"70":1,"71":3,"72":1,"73":1,"74":1,"75":2,"81":1,"88":1,"94":1,"96":1,"97":3,"98":1,"99":1,"104":2,"105":1,"108":1}}],["charsets",{"2":{"99":2}}],["charts",{"2":{"71":1}}],["changes",{"0":{"80":1}}],["change",{"2":{"75":1}}],["changed",{"2":{"8":1}}],["chain",{"2":{"43":1}}],["chosen",{"2":{"39":1}}],["checkbox",{"2":{"38":1}}],["checking",{"0":{"35":1},"2":{"33":1}}],["check",{"2":{"33":1,"34":1,"35":1,"40":1,"42":1,"43":1,"61":1,"66":1,"97":2,"99":2}}],["certainty",{"2":{"62":1}}],["certain",{"0":{"25":1},"1":{"26":1},"2":{"0":1,"26":1,"50":1}}],["core",{"2":{"97":4,"99":2}}],["corresponds",{"2":{"88":1}}],["corrupted",{"2":{"82":2}}],["co",{"2":{"97":6,"99":6}}],["collected",{"2":{"71":1}}],["collaborating",{"2":{"52":1,"54":1}}],["covers",{"2":{"42":1}}],["combination",{"2":{"94":3}}],["combat",{"2":{"41":1}}],["comma",{"2":{"108":2}}],["common",{"2":{"97":2}}],["communication",{"2":{"81":1}}],["commerce",{"2":{"41":1}}],["compliant",{"2":{"53":1}}],["complete",{"2":{"48":1}}],["components",{"2":{"45":1}}],["company",{"2":{"38":1,"75":3}}],["com",{"2":{"37":2,"44":1,"65":1,"77":1,"86":2}}],["concatenation",{"2":{"97":2}}],["concerns",{"2":{"70":1}}],["concepts",{"2":{"42":1,"45":1,"57":1,"104":1,"108":1}}],["confirmation",{"2":{"62":1}}],["confirmed",{"2":{"52":1,"54":1}}],["confident",{"2":{"80":1}}],["confidentiality",{"2":{"56":1}}],["confidenceindex",{"2":{"15":2,"51":1,"88":2,"95":6,"102":2}}],["confidence",{"0":{"62":1},"2":{"15":3,"53":1,"62":6,"80":4}}],["console",{"2":{"97":2,"99":2}}],["consortium",{"0":{"69":1},"2":{"39":1,"53":1}}],["const",{"2":{"97":14,"99":4}}],["constantly",{"2":{"62":1}}],["considers",{"2":{"62":1}}],["considered",{"2":{"46":1,"51":2,"53":1,"87":1,"100":2}}],["consists",{"2":{"56":1}}],["conditions",{"2":{"38":1,"65":2,"66":1}}],["connect",{"2":{"37":1}}],["connects",{"2":{"34":1}}],["connection",{"0":{"37":1},"2":{"34":1,"35":1,"36":1}}],["conversion",{"0":{"63":1},"2":{"15":1,"45":1,"62":2,"101":1,"105":2,"109":2}}],["contents",{"2":{"77":1}}],["continuous",{"2":{"55":1}}],["contact",{"2":{"44":1,"65":1,"75":1,"77":1}}],["contains",{"2":{"76":1,"95":1,"96":1}}],["containing",{"2":{"53":1,"94":1}}],["contain",{"2":{"15":1,"108":1}}],["contributing",{"2":{"71":1}}],["contributionpost",{"2":{"100":1}}],["contributionget",{"2":{"90":1}}],["contributionid",{"2":{"13":3,"88":7}}],["contributions",{"0":{"15":1,"25":1,"46":1,"48":1,"49":1,"50":1,"94":1},"1":{"16":1,"26":1,"47":1,"48":1,"49":1,"50":1,"51":1,"95":1},"2":{"0":2,"15":4,"16":1,"26":1,"34":1,"45":4,"46":1,"48":2,"49":1,"51":8,"52":1,"54":1,"55":6,"60":1,"62":3,"80":8,"81":1,"85":1,"90":2,"94":4,"95":1,"101":1,"102":2,"109":1}}],["contribution",{"0":{"7":1,"9":1,"11":1,"13":1,"17":1,"27":1,"29":1,"88":1,"90":1,"100":1,"102":1},"1":{"8":1,"10":1,"12":1,"14":1,"18":1,"28":1,"30":1,"89":1,"101":1},"2":{"0":8,"7":2,"8":3,"9":2,"10":2,"11":2,"12":1,"13":2,"14":2,"15":3,"16":1,"17":2,"18":1,"28":1,"30":1,"46":1,"48":3,"50":4,"51":2,"59":2,"62":4,"80":2,"85":4,"88":24,"89":1,"90":5,"94":32,"96":12,"100":10,"101":1,"102":7}}],["contributors",{"2":{"52":1,"54":1}}],["contributor",{"2":{"46":1,"51":1,"102":1}}],["contributed",{"2":{"46":1,"51":1,"53":1,"80":1}}],["contracts",{"2":{"41":1,"43":1}}],["controlled",{"2":{"36":1}}],["controller",{"2":{"0":5}}],["countries",{"2":{"70":2,"104":1}}],["country",{"2":{"9":4,"15":2,"51":4,"53":2,"69":2,"71":1,"75":2,"100":4,"104":2,"108":4}}],["could",{"2":{"2":1,"4":1,"9":2,"14":1,"15":7,"16":1,"25":2,"27":2,"29":2,"51":3,"53":3,"85":1,"95":4,"97":2,"100":2,"103":1}}],["codec",{"2":{"97":2}}],["code",{"2":{"0":1,"1":2,"2":1,"3":2,"4":1,"5":2,"6":1,"7":2,"8":1,"9":6,"10":1,"11":2,"12":1,"13":2,"14":2,"15":3,"16":2,"17":2,"18":1,"19":2,"20":1,"21":2,"22":1,"23":2,"24":1,"25":2,"26":1,"27":2,"28":1,"29":2,"30":1,"31":2,"32":1,"34":2,"35":1,"51":4,"53":3,"81":1,"87":4,"88":12,"95":4,"100":12,"102":8,"108":4}}],["txnew",{"2":{"97":6}}],["txdecoded",{"2":{"97":4}}],["tx",{"2":{"97":16,"106":1}}],["ts",{"2":{"97":2,"99":2}}],["tj6ryj",{"2":{"88":2}}],["t|db~",{"2":{"88":2}}],["target",{"2":{"97":2,"99":2}}],["tailor",{"2":{"94":1}}],["tailored",{"2":{"65":1}}],["tabs",{"2":{"68":1}}],["tab",{"2":{"38":1,"65":1,"69":1,"70":1,"75":4}}],["table",{"2":{"10":1}}],["tweets",{"2":{"70":1}}],["twitter",{"0":{"70":1},"2":{"45":1,"70":1}}],["two",{"2":{"9":4,"15":1,"51":4,"53":2,"56":1,"100":4,"108":4}}],["tune",{"2":{"36":1}}],["tutorial",{"2":{"35":1,"73":1}}],["tutorials",{"0":{"85":1,"103":1},"2":{"34":2,"39":4,"42":2,"59":3,"60":3,"72":1,"85":1,"96":1,"103":1}}],["textencoder",{"2":{"99":2}}],["text",{"2":{"99":2}}],["telco",{"2":{"70":1,"75":1}}],["telecommunications",{"2":{"41":1}}],["telephone",{"2":{"7":2,"13":2,"17":2}}],["technical",{"2":{"42":1}}],["technology",{"2":{"42":1}}],["terms",{"2":{"38":2,"42":1,"66":1}}],["test",{"0":{"36":1},"1":{"37":1},"2":{"33":2,"36":6,"37":1}}],["troubleshooting",{"0":{"77":1}}],["trends",{"2":{"69":1,"70":1}}],["truncated",{"2":{"97":2}}],["trustworthy",{"2":{"52":1}}],["true",{"2":{"15":5,"95":8}}],["try",{"2":{"36":1,"42":1,"97":2}}],["trigger",{"2":{"24":1}}],["transactionhex",{"2":{"88":5,"96":1,"97":6,"100":5}}],["transactions",{"0":{"96":1},"1":{"97":1},"2":{"56":5,"85":1,"88":1,"100":1,"106":1}}],["transaction",{"2":{"8":1,"10":1,"12":2,"18":2,"56":1,"96":7,"97":60,"99":1,"106":1,"108":1}}],["types",{"2":{"52":1,"56":1,"104":2,"108":1}}],["typescript",{"2":{"43":1}}],["type",{"2":{"10":1,"13":1,"14":1,"15":2,"16":1,"25":1,"51":4,"53":2,"54":1,"69":1,"71":1,"75":4,"81":1,"82":1,"87":1,"97":2,"100":2,"104":2,"106":3,"108":3}}],["t",{"2":{"8":1,"10":1,"51":1,"88":2,"102":2}}],["timeouts",{"2":{"82":1}}],["timestamp",{"2":{"53":1}}],["timeframe",{"2":{"15":1}}],["time",{"2":{"3":1,"9":2,"15":1,"41":1,"51":6,"53":3,"54":1,"66":2,"69":1,"70":1,"87":2,"100":4}}],["third",{"2":{"81":1}}],["this",{"2":{"9":1,"33":1,"34":2,"41":2,"42":2,"45":1,"54":1,"55":2,"56":2,"57":1,"60":1,"68":1,"69":1,"70":2,"71":2,"72":1,"73":1,"74":1,"75":1,"76":1,"82":1,"85":1,"88":1,"94":1,"100":1,"103":1,"108":2}}],["those",{"2":{"70":1}}],["throw",{"2":{"97":2}}],["through",{"2":{"42":1}}],["threat",{"2":{"69":1}}],["threatmap",{"2":{"45":1}}],["that",{"2":{"3":2,"15":5,"33":1,"34":1,"35":3,"36":1,"38":1,"39":1,"40":1,"42":2,"46":2,"50":2,"51":5,"52":2,"53":2,"54":1,"55":1,"56":2,"57":1,"58":1,"59":1,"61":2,"62":1,"64":1,"75":4,"80":4,"81":2,"82":1,"85":1,"90":1,"96":1,"102":1,"103":1,"104":4,"106":4,"108":2}}],["their",{"2":{"42":1,"48":1,"49":1,"54":1,"55":2,"56":3,"60":2,"61":2,"65":1,"66":1,"67":1,"74":1,"75":1,"101":1}}],["there",{"2":{"35":1,"56":1}}],["then",{"2":{"35":1,"39":1,"40":1,"51":1,"56":1,"104":2}}],["these",{"2":{"34":1,"52":1,"55":1}}],["they",{"2":{"33":1,"49":1,"50":1,"56":1,"59":1,"62":1}}],["them",{"2":{"15":2,"41":1,"44":1,"76":1,"77":1}}],["the",{"0":{"1":1,"55":1},"1":{"2":1},"2":{"0":3,"1":8,"2":1,"3":6,"4":3,"5":1,"6":1,"8":2,"9":2,"10":1,"13":1,"14":1,"15":45,"16":2,"19":1,"21":1,"23":1,"25":3,"26":1,"27":3,"29":3,"31":1,"33":4,"34":11,"35":7,"36":11,"37":2,"38":8,"39":4,"40":9,"41":3,"42":13,"43":3,"44":1,"45":3,"46":2,"48":5,"49":1,"50":3,"51":55,"52":1,"53":35,"54":9,"55":9,"56":18,"57":2,"58":1,"59":3,"60":5,"61":4,"62":16,"65":4,"66":4,"67":1,"68":1,"69":6,"70":2,"71":2,"72":2,"73":1,"75":13,"76":4,"77":2,"80":9,"81":7,"82":3,"83":1,"85":3,"86":9,"87":6,"88":10,"89":1,"90":4,"92":3,"93":4,"94":5,"95":9,"96":17,"97":33,"98":13,"99":27,"100":28,"101":4,"102":11,"103":3,"104":22,"105":4,"106":10,"107":1,"108":22,"109":3}}],["tobytearray",{"2":{"99":2}}],["tobuffer",{"2":{"97":4}}],["tosign",{"2":{"99":4}}],["tostring",{"2":{"97":2}}],["tohex",{"2":{"99":4}}],["tohexstring",{"2":{"97":2}}],["to=1680089219",{"2":{"94":2}}],["to=",{"2":{"94":2}}],["total",{"2":{"23":2,"51":1}}],["tokenomics",{"0":{"57":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"45":1,"48":1,"80":1}}],["tokenid",{"2":{"31":2,"102":4}}],["tokenids",{"2":{"17":2}}],["token",{"2":{"3":1,"4":2,"35":3,"87":3}}],["tokens",{"0":{"3":1,"74":1},"1":{"4":1},"2":{"0":1,"4":1,"45":1,"54":1,"61":1,"80":1,"87":1}}],["to",{"0":{"25":1,"40":1,"42":1},"1":{"26":1},"2":{"0":1,"1":1,"2":1,"3":1,"5":1,"9":1,"13":1,"15":10,"19":1,"21":1,"23":1,"25":1,"26":1,"27":1,"29":1,"31":1,"33":3,"34":7,"35":5,"36":4,"37":2,"38":6,"40":4,"41":6,"42":6,"43":2,"44":2,"45":1,"48":2,"49":1,"50":1,"51":2,"52":4,"53":2,"54":2,"55":1,"56":7,"58":1,"59":2,"60":3,"61":2,"62":4,"65":5,"66":2,"67":1,"69":1,"70":5,"75":7,"76":2,"77":3,"80":3,"82":2,"84":1,"86":2,"87":1,"88":6,"89":1,"90":1,"92":2,"93":2,"94":7,"95":2,"96":6,"97":4,"98":4,"99":4,"100":2,"101":1,"102":2,"104":7,"105":3,"106":3,"107":1,"108":4}}],["topic",{"2":{"57":1}}],["topics",{"2":{"33":1}}],["top",{"0":{"15":1,"94":1},"1":{"16":1,"95":1},"2":{"0":1,"38":1,"40":1,"49":1,"51":1,"60":1,"80":4,"85":1,"90":1,"94":3,"95":1,"102":2,"104":1,"106":1,"108":1}}],["spreadsheet",{"2":{"105":1}}],["space",{"2":{"99":2}}],["spec",{"2":{"97":2}}],["specifying",{"2":{"94":1}}],["specify",{"2":{"62":1,"99":2,"104":1,"106":1,"108":1}}],["specific",{"2":{"43":1,"81":1,"94":1,"96":1,"98":1}}],["specification",{"0":{"0":1},"2":{"42":2,"80":3}}],["specified",{"2":{"16":1,"24":1,"51":1,"104":1,"105":1}}],["spend",{"2":{"58":1}}],["spent",{"2":{"51":1,"58":1}}],["slice",{"2":{"97":2}}],["sdkiroha",{"2":{"97":2,"99":2}}],["sdk",{"0":{"97":1,"99":1},"2":{"96":1,"97":4,"98":1,"99":2}}],["sdks",{"2":{"43":1,"97":3,"99":1}}],["symmetric",{"2":{"92":1}}],["sy91",{"2":{"88":2}}],["systems",{"2":{"42":1,"55":1}}],["system",{"0":{"1":1},"1":{"2":1},"2":{"0":2,"33":1,"34":3,"35":1,"36":1,"41":1,"60":1,"80":1,"87":1,"96":1,"98":2}}],["smart",{"2":{"41":1,"43":1}}],["smsa2p",{"2":{"9":2,"15":2,"95":2,"100":2}}],["sheets",{"2":{"105":1}}],["share",{"2":{"41":1}}],["sharing",{"2":{"41":1,"52":1,"54":2,"55":1}}],["should",{"2":{"15":1,"96":1,"98":1}}],["shows",{"2":{"69":1}}],["shown",{"2":{"15":1,"90":1}}],["show",{"2":{"1":2,"3":1,"5":1,"7":2,"9":2,"11":2,"13":1,"15":1,"17":2,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1}}],["software",{"2":{"105":1}}],["soramitsu",{"2":{"97":6,"99":6}}],["soon",{"2":{"39":1}}],["so",{"2":{"35":1}}],["something",{"2":{"88":2,"97":2,"99":2}}],["someone",{"2":{"44":1,"77":1}}],["some",{"2":{"34":1}}],["screen",{"2":{"104":1,"106":1,"108":1}}],["scale",{"2":{"97":2}}],["scalable",{"2":{"56":1}}],["scenarios",{"2":{"34":1,"36":2,"42":1}}],["score",{"2":{"15":2,"51":1,"53":1,"62":2,"80":2}}],["snippets",{"2":{"34":1}}],["said",{"2":{"80":1}}],["saved",{"2":{"50":1}}],["same",{"2":{"36":1,"82":1,"88":2}}],["safety",{"2":{"56":1,"81":1}}],["safe",{"2":{"36":1}}],["sandbox",{"2":{"33":1,"37":1}}],["salt",{"0":{"5":1},"1":{"6":1},"2":{"0":1,"5":1,"6":1,"56":1,"93":2}}],["simplesigner",{"2":{"99":2}}],["simulating",{"2":{"36":1}}],["since",{"2":{"94":1}}],["single",{"2":{"13":1,"46":1,"53":2,"88":1,"108":1}}],["site",{"2":{"76":1}}],["size=2",{"2":{"94":2}}],["size=10",{"2":{"94":2}}],["size=",{"2":{"94":2}}],["size",{"2":{"15":1,"94":2,"99":2}}],["signer",{"2":{"97":8}}],["signedtransaction",{"2":{"97":14}}],["signed",{"2":{"88":1,"96":2,"97":6,"99":2,"100":1,"101":1}}],["signtransaction",{"2":{"97":4}}],["sign",{"2":{"56":2,"88":1,"96":2,"97":6,"98":1,"99":14,"100":1}}],["signing",{"0":{"96":1,"98":1},"1":{"97":1,"99":1},"2":{"1":1,"56":2,"85":2,"86":1,"88":1,"100":1}}],["signatures",{"2":{"56":2,"97":4}}],["signature",{"2":{"1":5,"2":2,"4":1,"86":7,"97":8,"98":4,"99":16}}],["summary",{"2":{"57":1}}],["suspected",{"2":{"52":1,"54":1}}],["support",{"2":{"44":1,"65":1,"77":1}}],["succeed",{"2":{"88":1,"94":1,"100":1}}],["successfully",{"2":{"4":1,"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"18":1,"20":1,"22":1,"24":1,"28":1,"30":1,"32":1,"35":2,"64":1,"90":1,"102":3}}],["successful",{"2":{"2":1,"87":3}}],["such",{"2":{"34":1,"51":2,"53":1,"54":1,"62":1,"100":2,"108":1}}],["subtopic",{"2":{"80":1}}],["submission",{"2":{"80":1,"108":1}}],["submit",{"2":{"44":1,"48":1,"51":1,"52":1,"54":1,"59":1,"77":1,"88":1,"100":2}}],["submitted",{"0":{"102":1},"2":{"15":1,"18":1,"39":1,"46":1,"48":2,"51":1,"53":2,"54":1,"59":1,"62":1,"85":1,"101":1,"102":3}}],["submitting",{"0":{"17":1,"48":1,"100":1},"1":{"18":1,"101":1},"2":{"0":1,"34":1,"45":1,"48":1,"59":1,"80":1,"85":1,"96":2}}],["subscription",{"0":{"65":1},"2":{"16":1,"38":1,"45":1,"65":3,"75":7,"82":1}}],["separated",{"2":{"108":2}}],["sequence",{"2":{"96":1,"98":1}}],["se",{"2":{"88":4,"95":2,"100":4,"102":4}}],["search",{"2":{"81":1,"106":1}}],["seamlessly",{"2":{"33":1}}],["sending",{"2":{"88":3,"90":1,"94":1,"100":2}}],["send",{"2":{"56":1,"86":1,"94":1,"102":2}}],["sent",{"2":{"34":1}}],["serving",{"2":{"56":1}}],["services",{"2":{"56":1,"75":2}}],["serves",{"2":{"55":1}}],["server",{"2":{"2":1,"4":1,"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"18":1,"20":1,"22":1,"24":1,"26":1,"28":1,"30":1,"32":1,"34":2}}],["selecting",{"2":{"38":1}}],["select",{"2":{"38":2,"40":2,"65":1,"70":1,"75":1,"104":10,"106":7,"108":7}}],["self",{"2":{"15":4,"51":1,"80":1,"94":8,"102":2}}],["several",{"2":{"36":1,"104":2,"108":1}}],["second",{"2":{"96":1}}],["seconds",{"2":{"9":2,"15":1,"51":2,"87":1,"100":2}}],["security",{"0":{"56":1},"2":{"45":1,"56":3,"81":1}}],["securely",{"2":{"41":1,"56":1}}],["secure",{"2":{"41":1,"52":1,"54":1,"55":1,"92":1}}],["section",{"2":{"33":1,"42":7,"45":1,"85":1,"103":1}}],["setcrypto",{"2":{"97":4}}],["setting",{"2":{"42":1}}],["set",{"2":{"15":9,"26":1,"88":2,"89":1,"95":1,"107":1}}],["seed",{"2":{"92":2,"93":2}}],["seeking",{"2":{"65":1}}],["seen",{"2":{"15":4,"51":2}}],["see",{"2":{"1":1,"25":1,"35":1,"36":1,"39":2,"42":1,"48":2,"55":1,"56":1,"59":1,"60":1,"62":1,"70":1,"72":1,"73":1,"86":1,"88":2,"94":2,"96":1,"100":2,"101":1,"104":1,"105":1,"108":1,"109":1}}],["sessionpost",{"2":{"86":1,"98":1}}],["session",{"2":{"1":1,"3":1,"86":1,"98":1}}],["s",{"2":{"1":4,"24":1,"34":1,"35":1,"48":1,"56":4,"75":1,"86":4,"88":2,"89":1,"90":2,"96":1,"97":2,"98":3,"99":17,"101":1,"102":9}}],["step",{"2":{"42":2,"88":2}}],["steps",{"2":{"36":1,"38":1,"40":1,"88":1,"92":1,"93":1,"100":1,"102":1,"104":1,"106":1,"108":1}}],["stored",{"2":{"46":1,"53":4,"55":2,"60":1,"71":1,"81":1}}],["storage",{"2":{"43":1}}],["storing",{"2":{"41":1}}],["stolendevice",{"2":{"9":2,"15":2,"95":6,"100":2}}],["static",{"2":{"76":1}}],["statistical",{"2":{"71":1}}],["status",{"0":{"23":1},"1":{"24":1},"2":{"0":1,"1":2,"3":2,"5":2,"7":2,"9":2,"11":2,"13":2,"15":2,"17":2,"19":2,"21":2,"23":2,"24":1,"25":4,"27":4,"29":4,"31":2,"51":1,"53":2,"66":2,"87":4,"88":12,"95":4,"100":8,"102":8,"107":1}}],["stay",{"2":{"55":1,"60":1}}],["standard",{"2":{"53":1}}],["stage1",{"2":{"37":1}}],["start",{"0":{"42":1},"2":{"42":1,"104":1,"108":1}}],["started",{"0":{"33":1},"2":{"42":3}}],["starting",{"2":{"15":1,"108":1}}],["strings",{"2":{"1":1,"86":1}}],["string",{"2":{"1":14,"2":1,"3":9,"5":6,"7":6,"9":14,"11":6,"13":5,"15":23,"17":6,"19":8,"21":6,"23":4,"25":9,"27":10,"29":10,"31":4,"51":11,"86":6,"87":10,"88":15,"95":18,"96":4,"97":22,"98":2,"99":16,"100":17,"102":8}}],["structureoutput",{"2":{"87":1,"88":3,"95":1,"100":2,"102":2}}],["structureinput",{"2":{"86":1,"88":2,"94":1,"100":2}}],["structure",{"0":{"51":1},"2":{"1":2,"3":2,"5":2,"7":2,"9":2,"11":2,"13":2,"15":2,"17":2,"19":2,"21":2,"23":2,"25":2,"27":2,"29":2,"31":2,"45":1,"80":5,"81":1}}],["obtain",{"2":{"97":4,"98":1,"99":4}}],["object",{"2":{"96":1,"98":1,"99":2}}],["observing",{"2":{"51":2,"53":1}}],["ok",{"2":{"87":2,"88":12,"95":2,"100":6,"102":4}}],["our",{"2":{"65":1,"83":1}}],["out",{"2":{"34":1,"36":1,"42":1,"43":1,"51":3,"82":1}}],["output",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"80":3,"87":1,"95":1}}],["outgoing",{"0":{"29":1},"1":{"30":1},"2":{"0":1,"29":1,"30":1,"35":1}}],["occurring",{"2":{"55":1,"60":1}}],["occurred",{"2":{"54":1}}],["occurrence",{"2":{"52":1}}],["overall",{"2":{"55":1,"56":1,"81":1,"96":1,"98":1}}],["overview",{"0":{"45":1},"2":{"42":1,"80":3}}],["other",{"0":{"81":1},"2":{"41":1,"42":1,"52":2,"54":1,"58":1,"82":2,"87":1,"97":2,"104":1,"108":1}}],["otherwise",{"2":{"35":1}}],["opened",{"2":{"105":1}}],["operating",{"2":{"75":2}}],["operation",{"2":{"88":1,"94":1,"96":1,"100":1}}],["operational",{"2":{"57":1}}],["operations",{"0":{"47":1},"1":{"48":1,"49":1,"50":1},"2":{"34":2,"42":1,"45":1,"85":1,"103":1}}],["operates",{"2":{"41":1}}],["optional",{"2":{"94":1}}],["optimized",{"2":{"81":1}}],["optimize",{"2":{"36":1}}],["old",{"2":{"15":4,"51":1,"80":1}}],["once",{"2":{"34":1,"40":1,"48":1,"50":1}}],["only=trueget",{"2":{"102":1}}],["only=true",{"2":{"94":4,"102":1}}],["only=",{"2":{"94":2}}],["only",{"2":{"15":7,"36":1,"56":1,"93":1,"94":2}}],["ones",{"2":{"72":1,"97":4}}],["one",{"2":{"9":2,"13":1,"15":7,"25":2,"27":2,"29":2,"51":3,"53":6,"95":4,"96":1,"100":2}}],["on",{"0":{"55":1},"2":{"1":1,"6":1,"15":2,"33":1,"34":1,"38":2,"39":1,"40":4,"41":1,"42":2,"43":1,"45":1,"46":2,"48":3,"51":1,"53":4,"54":1,"55":3,"56":3,"57":1,"58":1,"60":1,"61":1,"65":1,"68":1,"69":2,"71":2,"72":1,"73":1,"74":1,"75":4,"80":1,"81":1,"82":1,"86":1,"92":1,"96":1,"97":1,"98":1,"99":1,"101":1,"104":2,"105":1,"106":1,"108":2,"109":1}}],["original",{"2":{"76":1}}],["originating",{"2":{"104":1}}],["origination",{"2":{"9":2,"15":3,"51":2,"53":1,"62":1,"69":1,"71":1,"88":2,"95":6,"100":4,"102":2,"108":1}}],["originated",{"2":{"51":2,"53":1,"100":2,"104":1,"108":1}}],["origin",{"2":{"54":1}}],["orillionragconsortium",{"2":{"37":1}}],["order",{"2":{"33":1,"34":1,"49":1,"59":1}}],["org=us",{"2":{"94":4}}],["org=",{"2":{"94":2}}],["organizations",{"2":{"41":1,"55":1,"60":1}}],["org",{"2":{"15":1,"94":2,"97":2}}],["or",{"2":{"0":1,"2":3,"3":1,"4":2,"8":1,"10":1,"13":1,"14":1,"16":1,"24":1,"33":1,"34":3,"39":1,"40":2,"52":1,"53":2,"54":1,"61":1,"71":1,"72":1,"80":1,"88":1,"92":1,"96":1,"98":1,"104":2,"108":1}}],["owners",{"2":{"93":1}}],["own",{"2":{"0":1,"34":2,"49":1,"55":2,"60":2}}],["offers",{"2":{"65":1}}],["of",{"2":{"0":1,"1":4,"8":1,"9":2,"13":1,"15":15,"21":2,"25":2,"27":2,"29":2,"34":3,"35":2,"36":1,"41":1,"42":1,"45":1,"46":1,"48":2,"49":1,"50":1,"51":24,"52":1,"53":15,"54":3,"55":3,"56":9,"57":1,"61":3,"62":8,"65":1,"69":2,"70":2,"71":3,"75":3,"80":1,"81":4,"82":1,"86":4,"87":2,"88":2,"90":1,"93":1,"95":5,"96":4,"97":10,"98":5,"99":12,"100":8,"101":1,"102":3,"104":1,"106":3,"108":6,"109":1}}],["illegalargumentexception",{"2":{"97":2}}],["io",{"2":{"97":2}}],["i2p",{"2":{"97":2}}],["i9xjyh1mpsb9qvpe1jdgsqoukh46vbyouk",{"2":{"87":2}}],["i",{"2":{"38":1,"87":2,"97":10,"108":1}}],["iroha2",{"2":{"97":20,"99":12}}],["iroha",{"0":{"43":1,"93":1,"97":1,"99":1},"2":{"34":1,"41":1,"43":7,"56":1,"93":2,"96":1,"97":5,"99":3}}],["irsf",{"2":{"9":2,"15":2,"95":2,"100":2}}],["it",{"2":{"33":1,"35":1,"40":1,"42":2,"43":1,"50":2,"51":1,"54":1,"56":1,"80":1,"82":1,"88":1,"90":1,"94":1,"96":1,"97":4,"102":1}}],["its",{"2":{"8":1,"10":1,"12":1,"14":1,"18":1,"56":3,"96":2}}],["if",{"2":{"15":1,"35":1,"40":1,"42":2,"44":1,"50":1,"51":1,"62":1,"75":1,"77":1,"80":1,"87":2,"88":1,"90":1,"95":1,"99":2,"102":2,"108":2}}],["import",{"2":{"97":30,"99":16}}],["important",{"2":{"35":1}}],["improvements",{"0":{"81":1}}],["improving",{"2":{"56":1}}],["implemented",{"2":{"81":1}}],["implementing",{"2":{"35":1}}],["implement",{"2":{"34":1}}],["implementation",{"2":{"0":1,"33":1,"36":1,"96":1,"98":1}}],["imei",{"2":{"7":2,"13":2,"17":2,"53":1}}],["ipfraud",{"2":{"9":2,"15":2,"88":2,"95":2,"100":4,"102":2}}],["ip",{"2":{"7":2,"13":2,"17":2,"53":1,"54":1,"71":1,"88":1,"108":1}}],["issues",{"2":{"35":1,"44":1,"77":2,"82":1}}],["issue",{"2":{"35":1,"44":1,"77":1}}],["ispremium",{"2":{"15":2,"51":1,"95":6}}],["iso",{"2":{"9":4,"15":1,"51":4,"53":2,"100":4,"108":2}}],["is",{"0":{"43":1},"2":{"2":2,"3":3,"8":1,"10":1,"13":1,"14":1,"15":7,"25":2,"26":1,"33":2,"35":4,"36":3,"39":2,"41":1,"42":1,"43":2,"46":1,"48":2,"50":3,"51":5,"52":2,"53":7,"54":2,"56":3,"62":5,"66":1,"75":3,"76":1,"80":2,"87":5,"88":2,"89":1,"90":1,"93":1,"94":1,"96":1,"97":2,"100":2,"101":3,"102":2,"105":2,"107":1,"108":2,"109":2}}],["identity",{"2":{"53":1}}],["identified",{"2":{"51":2,"53":1,"100":2,"108":1}}],["identifiers",{"2":{"13":1,"54":1,"88":2,"104":1,"108":4}}],["identifier",{"2":{"9":2,"21":2,"25":2,"51":2,"53":3,"63":2,"100":2,"106":1,"108":1}}],["identify",{"2":{"41":1,"52":1,"69":1,"70":1}}],["id",{"0":{"13":1},"1":{"14":1},"2":{"0":1,"7":2,"9":2,"13":3,"14":2,"15":2,"17":2,"50":1,"51":4,"63":2,"80":1,"88":8,"95":6,"97":2,"100":4,"102":2,"106":1,"108":1}}],["initial",{"2":{"83":1}}],["insights",{"2":{"70":1}}],["instead",{"2":{"36":1}}],["instructions",{"2":{"1":1,"33":1,"40":1,"42":1,"48":1,"86":1}}],["inherently",{"2":{"62":1}}],["info",{"2":{"62":1,"66":1}}],["informed",{"2":{"55":1,"60":1}}],["information",{"2":{"41":2,"48":1,"52":1,"54":3,"55":2,"56":2,"75":3,"80":1,"94":1,"104":1,"108":1}}],["infrastructure",{"2":{"56":1}}],["inbox",{"2":{"40":1}}],["individual",{"2":{"65":1,"104":2,"108":1}}],["indicating",{"2":{"35":1}}],["industries",{"2":{"41":1}}],["indexed",{"2":{"81":1}}],["index",{"0":{"62":1},"2":{"15":1,"53":1,"62":5,"80":2}}],["incentivize",{"2":{"59":1}}],["increases",{"2":{"56":1}}],["increased",{"2":{"48":1,"101":1,"109":1}}],["include",{"2":{"35":1,"54":1}}],["includes",{"2":{"15":6}}],["including",{"2":{"34":1,"41":1,"45":1,"85":1,"103":1,"104":1,"108":1}}],["inconsistent",{"2":{"82":1}}],["incorrect",{"2":{"2":1,"8":1,"14":1}}],["incoming",{"0":{"27":1},"1":{"28":1},"2":{"0":1,"27":1,"28":1}}],["invalid",{"2":{"10":1,"12":1,"16":1,"18":1}}],["introduction",{"2":{"42":1,"43":1,"45":1}}],["intended",{"2":{"56":1}}],["interservice",{"2":{"81":1}}],["interact",{"2":{"42":1,"56":1}}],["interface",{"0":{"67":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1},"2":{"39":1,"42":1,"45":1,"67":1}}],["international",{"2":{"53":1}}],["internals",{"2":{"42":1}}],["internal",{"2":{"2":1,"4":1,"6":1,"8":1,"10":1,"12":1,"14":1,"16":1,"18":1,"20":1,"22":1,"24":1,"26":1,"28":1,"30":1,"32":1,"58":1,"84":1}}],["internet",{"2":{"35":1}}],["intelligence",{"0":{"76":1},"1":{"77":1},"2":{"38":1,"40":1,"41":2,"44":1,"66":2,"77":1}}],["integrating",{"2":{"42":1}}],["integrate",{"2":{"33":1,"34":1}}],["integer",{"2":{"1":4,"3":4,"5":2,"7":2,"9":4,"11":4,"13":2,"15":5,"17":4,"19":2,"21":2,"25":2,"27":2,"29":2,"31":4,"51":6,"87":5,"88":6,"95":4,"100":6,"102":6}}],["into",{"2":{"0":1,"33":1,"34":1,"42":1,"70":1}}],["input",{"2":{"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"94":1,"106":1,"108":2}}],["in",{"0":{"1":1},"1":{"2":1},"2":{"0":1,"9":2,"15":2,"33":2,"34":4,"35":1,"38":1,"39":1,"40":5,"41":1,"43":1,"48":1,"49":2,"51":5,"52":1,"53":1,"54":3,"59":1,"62":2,"66":2,"67":1,"70":1,"71":1,"80":1,"82":1,"83":1,"87":3,"88":2,"90":1,"94":4,"95":1,"96":1,"97":4,"98":1,"100":2,"101":1,"102":1,"104":2,"105":1,"106":1,"108":1,"109":1}}],["aes",{"2":{"92":1}}],["again",{"2":{"82":1}}],["agree",{"2":{"38":2}}],["after",{"2":{"82":1}}],["affects",{"2":{"62":1}}],["affecting",{"2":{"36":2}}],["affected",{"2":{"15":1}}],["audit",{"2":{"81":1}}],["automatically",{"2":{"62":1,"64":1}}],["automate",{"2":{"41":1}}],["authorized",{"2":{"46":1,"54":1,"55":1,"56":1,"88":1,"94":1,"100":1}}],["authorize",{"2":{"35":1,"86":1,"98":1}}],["authorization",{"2":{"2":1,"3":3,"4":1,"87":4}}],["authorizing",{"0":{"1":1,"86":1},"1":{"2":1,"87":1},"2":{"0":1,"35":2,"85":1,"87":1,"88":1,"94":1,"100":1}}],["authentication",{"0":{"3":1,"92":1},"1":{"4":1},"2":{"0":1,"1":3,"3":1,"4":1,"5":1,"56":1,"86":4,"92":2,"98":3,"99":6}}],["auth",{"2":{"0":1,"1":1,"3":1,"5":1,"21":1,"86":2,"98":2}}],["ability",{"2":{"56":1}}],["about",{"2":{"41":1,"54":1,"55":1,"60":1,"75":2,"108":2}}],["above",{"2":{"15":1,"62":1}}],["amounts",{"2":{"102":1}}],["amount",{"2":{"48":1,"51":1}}],["among",{"2":{"41":1}}],["amp",{"2":{"38":1,"66":1,"88":4,"94":22}}],["availability",{"0":{"35":1},"2":{"33":2,"35":1,"56":1}}],["available",{"2":{"0":1,"35":2,"42":1,"97":1,"99":1,"105":1}}],["adjust",{"2":{"66":1}}],["advance",{"2":{"66":1}}],["advised",{"2":{"33":1}}],["adheres",{"2":{"53":1}}],["administrator",{"2":{"39":1}}],["admin",{"2":{"31":2,"102":2}}],["add",{"2":{"104":2,"108":1}}],["added",{"2":{"80":4,"102":1,"104":2}}],["additional",{"2":{"80":1}}],["additionally",{"2":{"44":1,"56":1,"77":1}}],["additionalprop3",{"2":{"19":4}}],["additionalprop2",{"2":{"19":4}}],["additionalprop1",{"2":{"19":4}}],["addresses",{"0":{"98":1},"1":{"99":1},"2":{"1":1,"53":1,"54":1,"71":1,"85":1,"86":1,"108":1}}],["address",{"2":{"1":4,"34":1,"40":1,"86":4,"88":1,"98":3,"99":9}}],["achieve",{"2":{"56":1}}],["activity",{"2":{"62":1}}],["activities",{"2":{"41":1,"52":2,"54":2,"55":2,"60":2,"70":1}}],["activeexpiredflagged",{"2":{"51":1}}],["active",{"2":{"15":2,"48":1,"53":1,"88":2,"95":2,"101":1,"102":2,"105":1,"109":1}}],["accordingly",{"2":{"102":1}}],["according",{"2":{"95":1,"104":1,"105":1}}],["accordance",{"2":{"62":2,"66":1,"102":1}}],["accounts",{"2":{"43":1}}],["accountmetadata",{"2":{"19":2}}],["account",{"0":{"38":1,"40":1,"86":1},"1":{"39":1,"40":1,"87":1},"2":{"10":1,"20":1,"33":2,"35":2,"38":3,"40":2,"42":1,"61":1,"75":1,"82":1,"85":1,"86":1,"88":2,"94":2,"97":2,"100":2}}],["accountid",{"2":{"7":2,"13":2,"17":2,"19":2,"31":2,"88":6,"100":2,"102":4}}],["accuracy",{"2":{"55":1}}],["accurately",{"2":{"41":1}}],["accepts",{"2":{"9":1}}],["accessing",{"2":{"38":1,"42":1}}],["accessible",{"2":{"35":1}}],["accesstoken",{"2":{"1":2,"3":2,"87":5}}],["access",{"0":{"25":1,"40":1},"1":{"26":1},"2":{"0":1,"26":1,"34":1,"36":1,"39":2,"41":1,"65":1,"75":3,"87":1}}],["analytics",{"2":{"75":1}}],["analysis",{"2":{"54":1}}],["analyse",{"0":{"71":1},"2":{"45":1,"75":1}}],["an",{"0":{"38":1,"40":1,"86":1},"1":{"39":1,"40":1,"87":1},"2":{"33":2,"35":2,"38":1,"39":1,"43":1,"45":1,"48":1,"52":1,"66":1,"81":1,"85":1,"86":1,"88":2,"92":2,"93":2,"94":1,"100":1,"101":1}}],["anyone",{"2":{"56":1}}],["any",{"2":{"15":1,"35":1,"44":2,"62":2,"77":1,"81":1,"82":1,"94":1,"95":1,"96":1,"97":1,"99":1,"105":1}}],["and",{"2":{"1":2,"8":1,"10":1,"12":1,"15":1,"16":1,"18":1,"33":1,"34":2,"35":4,"36":6,"38":3,"39":2,"40":1,"41":7,"42":4,"43":3,"45":1,"46":1,"48":2,"51":2,"52":4,"53":6,"54":2,"55":6,"56":9,"58":1,"60":2,"61":1,"62":1,"65":3,"69":2,"70":2,"71":2,"80":5,"81":1,"86":2,"88":1,"92":2,"93":2,"96":2,"97":8,"98":1,"99":4,"100":3,"101":2,"102":1,"104":1,"105":1,"106":1,"108":3,"109":1}}],["args",{"2":{"99":10}}],["around",{"2":{"70":1}}],["architecture",{"2":{"34":1}}],["array",{"2":{"15":2,"97":2,"99":4}}],["are",{"2":{"0":1,"4":1,"15":1,"16":1,"33":1,"34":3,"35":1,"42":1,"46":1,"55":1,"56":2,"57":1,"59":1,"62":1,"70":1,"75":1,"77":1,"94":1,"97":1,"99":1,"104":2,"106":2,"108":3}}],["aspect",{"2":{"56":1}}],["assigning",{"2":{"62":1}}],["assigned",{"2":{"62":1}}],["assistance",{"2":{"42":1}}],["assetdefinitionid",{"2":{"88":2}}],["assets",{"2":{"43":1}}],["asset",{"2":{"8":1,"20":1}}],["assetids",{"2":{"7":2,"13":2,"88":6}}],["assemblepost",{"2":{"100":1}}],["assemblepatch",{"2":{"88":1}}],["assembled",{"2":{"8":1,"10":1,"88":1,"100":1,"101":1}}],["assemble",{"2":{"7":1,"9":1,"88":2,"96":1,"100":2}}],["assembling",{"0":{"7":1,"9":1},"1":{"8":1,"10":1},"2":{"0":2,"51":1,"96":1}}],["as",{"2":{"15":2,"34":1,"36":1,"38":1,"39":2,"43":3,"50":1,"51":4,"53":1,"54":1,"55":2,"62":2,"76":1,"82":2,"87":2,"88":3,"96":3,"97":8,"98":2,"99":2,"100":4,"105":1,"106":1,"108":1}}],["alice",{"2":{"99":2}}],["although",{"2":{"97":2}}],["alternatively",{"2":{"65":1}}],["also",{"2":{"55":1,"56":1}}],["already",{"2":{"15":4,"51":1}}],["alpha",{"2":{"9":4,"15":1,"51":4,"53":2,"100":4,"108":2}}],["allowed",{"2":{"82":1}}],["allows",{"2":{"58":1,"69":1,"70":1,"75":3}}],["allowing",{"2":{"41":1}}],["allow",{"2":{"34":1,"55":1}}],["all",{"0":{"21":1},"1":{"22":1},"2":{"0":1,"15":2,"22":1,"25":1,"51":3,"62":1,"81":1}}],["attack",{"2":{"62":1}}],["attempts",{"2":{"41":1}}],["at",{"2":{"3":1,"36":1,"44":3,"46":1,"51":2,"53":1,"65":1,"77":2}}],["a",{"0":{"1":1,"7":1,"9":1,"11":1,"13":1,"17":1,"25":1,"88":1,"90":1,"100":1,"102":1},"1":{"2":1,"8":1,"10":1,"12":1,"14":1,"18":1,"26":1,"89":1,"101":1},"2":{"0":7,"1":2,"3":2,"5":1,"13":3,"15":4,"19":1,"21":5,"23":1,"25":4,"26":1,"27":1,"29":1,"31":1,"33":1,"35":6,"36":1,"38":2,"39":1,"40":1,"41":2,"42":2,"43":1,"46":5,"48":3,"49":1,"50":4,"51":3,"52":1,"53":7,"54":1,"55":1,"56":7,"57":1,"58":1,"59":1,"61":2,"62":7,"64":1,"65":1,"66":1,"69":1,"70":1,"71":2,"75":8,"80":6,"82":5,"85":4,"86":2,"87":4,"88":8,"90":2,"92":3,"93":5,"94":3,"95":1,"96":9,"97":4,"98":7,"99":10,"100":5,"102":4,"105":1,"108":5}}],["append",{"2":{"97":2}}],["appended",{"2":{"97":2}}],["appendsignature",{"2":{"97":4}}],["appendsignaturewithkeypair",{"2":{"97":4}}],["appendsignatures",{"2":{"97":4}}],["appears",{"2":{"38":1,"104":1,"106":1,"108":1}}],["apply",{"2":{"65":1}}],["application",{"2":{"0":1,"25":1,"33":1,"34":4,"35":1,"39":2}}],["app",{"2":{"37":1}}],["approved",{"2":{"25":2,"27":2,"29":2,"34":1,"39":1}}],["api",{"0":{"0":1,"34":1,"35":1,"51":1,"85":1},"2":{"0":1,"1":1,"3":1,"5":1,"7":1,"9":1,"11":1,"13":1,"15":1,"17":1,"19":1,"21":1,"23":1,"25":1,"27":1,"29":1,"31":1,"33":5,"34":8,"35":5,"36":2,"38":1,"39":3,"42":5,"45":1,"56":1,"59":1,"60":1,"61":1,"66":1,"75":2,"80":7,"85":1,"86":2,"88":6,"90":2,"94":16,"96":4,"98":3,"100":4,"102":4}}],["fd2tl",{"2":{"102":2}}],["fdj",{"2":{"88":2}}],["f",{"2":{"97":2,"99":2}}],["further",{"2":{"97":2}}],["full",{"2":{"97":2}}],["function",{"2":{"97":10,"99":4}}],["functionality",{"2":{"39":1,"80":1,"83":1}}],["fun",{"2":{"97":2,"99":2}}],["future",{"2":{"52":1,"54":1}}],["features",{"2":{"65":1}}],["feed",{"0":{"70":1},"2":{"45":1}}],["fetch",{"2":{"15":4,"94":6}}],["factors",{"2":{"62":1}}],["facilitates",{"2":{"55":1}}],["false",{"2":{"15":2,"50":1,"95":4,"106":1}}],["failed",{"2":{"2":1}}],["ft=stolendevice",{"2":{"94":2}}],["ft=wangiri",{"2":{"94":2}}],["ft=",{"2":{"94":2}}],["ft",{"2":{"15":1,"94":2}}],["first",{"2":{"96":1}}],["fi",{"2":{"95":2}}],["financial",{"2":{"57":1}}],["finance",{"2":{"41":1}}],["finally",{"2":{"42":1}}],["find",{"2":{"42":1,"82":1,"106":2}}],["fine",{"2":{"36":1}}],["file",{"2":{"97":2,"105":1}}],["files",{"2":{"76":1}}],["fil",{"2":{"44":1,"77":1}}],["fill",{"2":{"38":1}}],["filter",{"2":{"94":1}}],["filters",{"2":{"15":2}}],["filtered",{"2":{"15":1,"16":1,"71":1,"95":1,"104":3,"105":1}}],["fixes",{"0":{"82":1}}],["fixed",{"2":{"81":1,"82":3}}],["fix",{"2":{"36":1}}],["fields",{"2":{"80":1}}],["field",{"2":{"13":1,"15":1,"25":1,"26":1,"40":1,"51":3,"87":1}}],["fib",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"0":1,"33":1,"34":5,"35":1,"36":1,"37":1,"38":1,"39":2,"40":2,"41":3,"42":6,"45":2,"52":1,"54":2,"55":2,"56":5,"58":1,"61":1,"62":1,"64":1,"65":1,"67":2,"75":1,"76":1,"77":1,"85":1,"103":1,"104":1,"106":1,"108":1}}],["fr",{"2":{"108":1}}],["freescope",{"2":{"97":4,"99":4}}],["freemium",{"2":{"58":1,"75":1}}],["freshdesk",{"2":{"44":1,"77":1}}],["frontend",{"2":{"37":1}}],["frombuffer",{"2":{"97":2}}],["fromjson",{"2":{"97":2,"99":2}}],["from=0",{"2":{"94":2}}],["from=",{"2":{"94":2}}],["from",{"2":{"4":1,"15":2,"35":1,"38":1,"40":1,"42":1,"51":3,"53":2,"55":1,"56":3,"58":1,"60":1,"62":1,"66":1,"70":1,"71":1,"75":1,"88":1,"92":2,"93":3,"94":3,"96":2,"97":24,"98":1,"99":12,"100":3,"104":5,"106":1,"108":3}}],["frameworks",{"2":{"34":1}}],["fraudintelligencelimited",{"2":{"44":1,"65":1,"77":1}}],["fraudintelligenceltd",{"2":{"37":1}}],["fraudulent",{"2":{"41":1,"52":2,"54":2,"55":2,"60":2,"62":2,"70":1}}],["fraudstatus",{"2":{"15":2,"51":1,"88":2,"89":1,"95":6,"102":2}}],["fraudtype",{"2":{"9":2,"15":2,"51":2,"88":2,"95":6,"100":4,"102":2}}],["fraud",{"0":{"52":1,"53":1,"59":1,"60":1,"70":1,"76":1,"104":1,"106":1,"108":1},"1":{"53":1,"77":1,"105":1,"107":1,"109":1},"2":{"9":2,"13":1,"14":1,"15":2,"16":1,"38":1,"40":1,"41":6,"44":1,"45":5,"46":2,"49":1,"51":9,"52":3,"53":8,"54":1,"55":1,"58":1,"59":2,"60":2,"61":1,"62":3,"63":4,"66":2,"69":2,"70":2,"71":2,"72":3,"73":2,"75":3,"77":1,"80":1,"88":2,"94":1,"100":8,"103":3,"104":14,"105":1,"106":9,"107":1,"108":21}}],["flagpost",{"2":{"96":1}}],["flagpatch",{"2":{"88":1}}],["flagger",{"2":{"15":2,"50":1,"51":1,"80":2}}],["flagged",{"0":{"90":1},"2":{"12":1,"15":2,"50":2,"51":2,"53":2,"80":2,"85":1,"89":1,"90":2,"95":4,"107":1}}],["flagging",{"0":{"11":1,"50":1,"88":1,"106":1},"1":{"12":1,"89":1,"107":1},"2":{"0":1,"34":1,"45":1,"72":1,"80":1,"85":1,"96":1,"103":1,"106":2}}],["flag",{"0":{"7":1},"1":{"8":1},"2":{"0":1,"7":1,"8":2,"11":1,"50":1,"72":1,"80":1,"88":7,"96":1,"106":4}}],["follow",{"2":{"35":1,"36":1}}],["following",{"2":{"0":1,"9":2,"15":7,"25":2,"27":2,"29":2,"33":1,"34":1,"36":1,"37":1,"38":1,"40":1,"43":1,"51":5,"53":4,"59":1,"60":1,"61":1,"66":1,"68":1,"72":1,"73":1,"75":3,"86":1,"87":1,"88":4,"90":1,"92":1,"93":1,"94":1,"95":4,"96":3,"97":1,"98":2,"99":1,"100":5,"102":3,"104":2,"106":2,"108":4}}],["found",{"2":{"2":1,"4":1,"6":1,"8":1,"10":1,"16":1,"20":1,"24":1}}],["format",{"2":{"96":1,"97":2,"104":2}}],["form",{"2":{"54":1}}],["forgot",{"2":{"40":1}}],["forgotten",{"2":{"40":1}}],["for",{"2":{"0":1,"1":1,"34":1,"35":1,"36":2,"38":1,"39":2,"40":1,"41":1,"42":4,"43":1,"48":2,"49":1,"54":1,"55":2,"56":1,"59":1,"60":1,"61":1,"62":1,"65":2,"70":1,"76":1,"80":1,"85":1,"86":1,"87":1,"88":1,"94":2,"96":3,"97":2,"98":1,"100":1,"103":1,"104":1,"108":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.0a23706f.js b/assets/chunks/VPLocalSearchBox.0a23706f.js new file mode 100644 index 0000000..c9cb70e --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.0a23706f.js @@ -0,0 +1,7 @@ +import{V as vt,h as ne,x as ze,af as Nt,ag as kt,d as Tt,E as me,ah as Xe,g as Te,ai as It,aj as Dt,y as _t,ak as Ot,j as Ie,O as fe,S as be,al as Rt,am as Mt,W as Lt,s as Pt,an as zt,o as Z,b as Bt,k as S,$ as Vt,l as W,ao as $t,ap as Wt,aq as Kt,c as ee,n as et,e as we,D as tt,F as rt,a as de,t as he,ar as jt,p as Jt,m as Ut,as as at,at as Ht,a5 as Gt,ab as qt,_ as Qt}from"./framework.c4d6cd72.js";import{u as Yt,c as Zt}from"./theme.3ff32677.js";const Xt={root:()=>vt(()=>import("./@localSearchIndexroot.2ac92fc8.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var pt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ee=pt.join(","),yt=typeof Element>"u",oe=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Se=!yt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ae=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},er=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ae(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ee));return t&&oe.call(e,Ee)&&n.unshift(e),n=n.filter(r),n},mt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ae(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=oe.call(i,Ee);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ae(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},bt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||er(e))&&!bt(e)?0:e.tabIndex},tr=function(e,t){var r=ie(e);return r<0&&t&&!bt(e)?0:r},rr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},ar=function(e){return wt(e)&&e.type==="hidden"},nr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},ir=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(oe.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Se(e);if(u&&!u.shadowRoot&&n(u)===!0)return nt(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(lr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return nt(e);return!1},fr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},hr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=tr(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(rr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},vr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=mt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:dr}):r=gt(e,t.includeContainer,Be.bind(null,t)),hr(r)},pr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=mt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,Ce.bind(null,t)),r},se=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return oe.call(e,Ee)===!1?!1:Be(t,e)},yr=pt.concat("iframe").join(","),De=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return oe.call(e,yr)===!1?!1:Ce(t,e)};/*! +* focus-trap 7.5.2 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function it(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ot(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},wr=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},xr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ye=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Fr=function(e){return ye(e)&&!e.shiftKey},Er=function(e){return ye(e)&&e.shiftKey},ut=function(e){return setTimeout(e,0)},lt=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},ve=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),T=1;T=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=vr(c,a.tabbableOptions),p=pr(c,a.tabbableOptions),w=f.length>0?f[0]:void 0,T=f.length>0?f[f.length-1]:void 0,O=p.find(function(b){return se(b)}),P=p.slice().reverse().find(function(b){return se(b)}),g=!!f.find(function(b){return ie(b)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:g,firstTabbableNode:w,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:P,nextTabbableNode:function(z){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,j=f.indexOf(z);return j<0?G?p.slice(p.indexOf(z)+1).find(function(J){return se(J)}):p.slice(0,p.indexOf(z)).reverse().find(function(J){return se(J)}):f[j+(G?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function F(c){if(c!==!1&&c!==r.activeElement){if(!c||!c.focus){F(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,wr(c)&&c.select()}},m=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},E=function(c){var f=c.target,p=c.event,w=c.isBackward,T=w===void 0?!1:w;f=f||xe(p),v();var O=null;if(i.tabbableGroups.length>0){var P=l(f,p),g=P>=0?i.containerGroups[P]:void 0;if(P<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var b=lt(i.tabbableGroups,function(U){var H=U.firstTabbableNode;return f===H});if(b<0&&(g.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!g.nextTabbableNode(f,!1))&&(b=P),b>=0){var z=b===0?i.tabbableGroups.length-1:b-1,G=i.tabbableGroups[z];O=ie(f)>=0?G.lastTabbableNode:G.lastDomTabbableNode}else ye(p)||(O=g.nextTabbableNode(f,!1))}else{var j=lt(i.tabbableGroups,function(U){var H=U.lastTabbableNode;return f===H});if(j<0&&(g.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!g.nextTabbableNode(f))&&(j=P),j>=0){var J=j===i.tabbableGroups.length-1?0:j+1,B=i.tabbableGroups[J];O=ie(f)>=0?B.firstTabbableNode:B.firstDomTabbableNode}else ye(p)||(O=g.nextTabbableNode(f))}}else O=h("fallbackFocus");return O},x=function(c){var f=xe(c);if(!(l(f,c)>=0)){if(ve(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ve(a.allowOutsideClick,c)||c.preventDefault()}},C=function(c){var f=xe(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var w,T=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var O=l(i.mostRecentlyFocusedNode),P=i.containerGroups[O].tabbableNodes;if(P.length>0){var g=P.findIndex(function(b){return b===i.mostRecentlyFocusedNode});g>=0&&(a.isKeyForward(i.recentNavEvent)?g+1=0&&(w=P[g-1],T=!1))}}else i.containerGroups.some(function(b){return b.tabbableNodes.some(function(z){return ie(z)>0})})||(T=!1);else T=!1;T&&(w=E({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),y(w||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},N=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=E({event:c,isBackward:f});p&&(ye(c)&&c.preventDefault(),y(p))},A=function(c){if(xr(c)&&ve(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&N(c,a.isKeyBackward(c))},M=function(c){var f=xe(c);l(f,c)>=0||ve(a.clickOutsideDeactivates,c)||ve(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},L=function(){if(i.active)return st.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ut(function(){y(d())}):y(d()),r.addEventListener("focusin",C,!0),r.addEventListener("mousedown",x,{capture:!0,passive:!1}),r.addEventListener("touchstart",x,{capture:!0,passive:!1}),r.addEventListener("click",M,{capture:!0,passive:!1}),r.addEventListener("keydown",A,{capture:!0,passive:!1}),s},D=function(){if(i.active)return r.removeEventListener("focusin",C,!0),r.removeEventListener("mousedown",x,!0),r.removeEventListener("touchstart",x,!0),r.removeEventListener("click",M,!0),r.removeEventListener("keydown",A,!0),s},k=function(c){var f=c.some(function(p){var w=Array.from(p.removedNodes);return w.some(function(T){return T===i.mostRecentlyFocusedNode})});f&&y(d())},I=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(k):void 0,R=function(){I&&(I.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){I.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),w=u(c,"checkCanFocusTrap");w||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var T=function(){w&&v(),L(),R(),p==null||p()};return w?(w(i.containers.concat()).then(T,T),this):(T(),this)},deactivate:function(c){if(!i.active)return this;var f=ot({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,D(),i.active=!1,i.paused=!1,R(),st.deactivateTrap(n,s);var p=u(f,"onDeactivate"),w=u(f,"onPostDeactivate"),T=u(f,"checkCanReturnFocus"),O=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var P=function(){ut(function(){O&&y(m(i.nodeFocusedBeforeActivation)),w==null||w()})};return O&&T?(T(m(i.nodeFocusedBeforeActivation)).then(P,P),this):(P(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),D(),R(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),L(),R(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),R(),this}},s.updateContainerElements(e),s};function Cr(o,e={}){let t;const{immediate:r,...n}=e,a=ne(!1),i=ne(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return ze(()=>Nt(o),d=>{d&&(t=Ar(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),kt(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class le{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{le.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new le(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Nr=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new le(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return le.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((y,m)=>{m>=s&&(e.nodes[m].start>0&&m!==s&&(e.nodes[m].start-=h),e.nodes[m].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=le.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function kr(o){const e=new Nr(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var V=function(){return V=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function $(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Dr="ENTRIES",xt="KEYS",Ft="VALUES",K="",_e=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ue(this._path),t=e.node,r=e.keys;if(ue(r)===K)return{done:!1,value:this.result()};var n=t.get(ue(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ue(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ue(t)}).filter(function(e){return e!==K}).join("")},o.prototype.value=function(){return ue(this._path).node.get(K)},o.prototype.result=function(){switch(this._type){case Ft:return this.value();case xt:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ue=function(o){return o[o.length-1]},_r=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}Et(o.get(y),e,t,r,n,E,i,s+y)}}}catch(p){u={error:p}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Oe=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=$(Ne(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=$(Ke(i),2),u=s[0],l=s[1];try{for(var h=_(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==K&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(m){t={error:m}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,Or(this._tree,e)},o.prototype.entries=function(){return new _e(this,Dr)},o.prototype.forEach=function(e){var t,r;try{for(var n=_(this),a=n.next();!a.done;a=n.next()){var i=$(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return _r(this._tree,e,t)},o.prototype.get=function(e){var t=Ve(this._tree,e);return t!==void 0?t.get(K):void 0},o.prototype.has=function(e){var t=Ve(this._tree,e);return t!==void 0&&t.has(K)},o.prototype.keys=function(){return new _e(this,xt)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Re(this._tree,e);return r.set(K,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Re(this._tree,e);return r.set(K,t(r.get(K))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Re(this._tree,e),n=r.get(K);return n===void 0&&r.set(K,n=t()),n},o.prototype.values=function(){return new _e(this,Ft)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=_(e),i=a.next();!i.done;i=a.next()){var s=$(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),Ne=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=_(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==K&&e.startsWith(s))return t.push([o,s]),Ne(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),Ne(void 0,"",t)},Ve=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=_(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==K&&e.startsWith(i))return Ve(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Re=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Oe,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=_(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=We,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Tr(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,y,m,E,x,C,N,A,M,L,D,k,I,R,F,c;return Ir(this,function(f){switch(f.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||$e.batchSize,a=e.batchWait||$e.batchWait,i=1,f.label=1;case 1:f.trys.push([1,7,8,9]),s=_(this._index),u=s.next(),f.label=2;case 2:if(u.done)return[3,6];l=$(u.value,2),h=l[0],d=l[1];try{for(v=(I=void 0,_(d)),y=v.next();!y.done;y=v.next()){m=$(y.value,2),E=m[0],x=m[1];try{for(C=(F=void 0,_(x)),N=C.next();!N.done;N=C.next())A=$(N.value,1),M=A[0],!this._documentIds.has(M)&&(x.size<=1?d.delete(E):x.delete(M))}catch(p){F={error:p}}finally{try{N&&!N.done&&(c=C.return)&&c.call(C)}finally{if(F)throw F.error}}}}catch(p){I={error:p}}finally{try{y&&!y.done&&(R=v.return)&&R.call(v)}finally{if(I)throw I.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(p){return setTimeout(p,a)})];case 3:f.sent(),f.label=4;case 4:i+=1,f.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return L=f.sent(),D={error:L},[3,9];case 8:try{u&&!u.done&&(k=s.return)&&k.call(s)}finally{if(D)throw D.error}return[7];case 9:this._dirtCount-=r,f.label=10;case 10:return[4,null];case 11:return f.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Pe.minDirtCount,r=r||Pe.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=_(a),u=s.next();!u.done;u=s.next()){var l=$(u.value,2),h=l[0],d=l[1],v=d.score,y=d.terms,m=d.match,E=y.length,x={id:this._documentIds.get(h),score:v*E,terms:Object.keys(m),match:m};Object.assign(x,this._storedFields.get(h)),(t.filter==null||t.filter(x))&&i.push(x)}}catch(C){r={error:C}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return i.sort(dt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=V(V({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=_(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,y=v.join(" "),m=s.get(y);m!=null?(m.score+=d,m.count+=1):s.set(y,{score:d,terms:v,count:1})}}catch(L){r={error:L}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var x=_(s),C=x.next();!C.done;C=x.next()){var N=$(C.value,2),m=N[0],A=N[1],d=A.score,v=A.terms,M=A.count;E.push({suggestion:m,terms:v,score:d/M})}}catch(L){a={error:L}}finally{try{C&&!C.done&&(i=x.return)&&i.call(x)}finally{if(a)throw a.error}}return E.sort(dt),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Le.hasOwnProperty(e))return Me(Le,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,m=e.fieldLength,E=e.averageFieldLength,x=e.storedFields,C=e.dirtCount,N=e.serializationVersion;if(N!==1&&N!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var A=new o(t);A._documentCount=h,A._nextId=d,A._documentIds=Fe(v),A._idToShortId=new Map,A._fieldIds=y,A._fieldLength=Fe(m),A._avgFieldLength=E,A._storedFields=Fe(x),A._dirtCount=C||0,A._index=new Oe;try{for(var M=_(A._documentIds),L=M.next();!L.done;L=M.next()){var D=$(L.value,2),k=D[0],I=D[1];A._idToShortId.set(I,k)}}catch(b){r={error:b}}finally{try{L&&!L.done&&(n=M.return)&&n.call(M)}finally{if(r)throw r.error}}try{for(var R=_(l),F=R.next();!F.done;F=R.next()){var c=$(F.value,2),f=c[0],p=c[1],w=new Map;try{for(var T=(s=void 0,_(Object.keys(p))),O=T.next();!O.done;O=T.next()){var P=O.value,g=p[P];N===1&&(g=g.ds),w.set(parseInt(P,10),Fe(g))}}catch(b){s={error:b}}finally{try{O&&!O.done&&(u=T.return)&&u.call(T)}finally{if(s)throw s.error}}A._index.set(f,w)}}catch(b){a={error:b}}finally{try{F&&!F.done&&(i=R.return)&&i.call(R)}finally{if(a)throw a.error}}return A},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),typeof e!="string"){var n=V(V(V({},t),e),{queries:void 0}),a=e.queries.map(function(x){return r.executeQuery(x,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=V(V({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,y=d(e).flatMap(function(x){return v(x)}).filter(function(x){return!!x}),m=y.map(Br(h)),E=m.map(function(x){return r.executeQuerySpec(x,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=V(V({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(P,g){var b;return V(V({},P),(b={},b[g]=Me(s.boost,g)||1,b))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,y=V(V({},ct.weights),h),m=y.fuzzy,E=y.prefix,x=this._index.get(e.term),C=this.termResults(e.term,e.term,1,x,u,l,v),N,A;if(e.prefix&&(N=this._index.atPrefix(e.term)),e.fuzzy){var M=e.fuzzy===!0?.2:e.fuzzy,L=M<1?Math.min(d,Math.round(e.term.length*M)):M;L&&(A=this._index.fuzzyGet(e.term,L))}if(N)try{for(var D=_(N),k=D.next();!k.done;k=D.next()){var I=$(k.value,2),R=I[0],F=I[1],c=R.length-e.term.length;if(c){A==null||A.delete(R);var f=E*R.length/(R.length+.3*c);this.termResults(e.term,R,f,F,u,l,v,C)}}}catch(P){r={error:P}}finally{try{k&&!k.done&&(n=D.return)&&n.call(D)}finally{if(r)throw r.error}}if(A)try{for(var p=_(A.keys()),w=p.next();!w.done;w=p.next()){var R=w.value,T=$(A.get(R),2),O=T[0],c=T[1];if(c){var f=m*R.length/(R.length+c);this.termResults(e.term,R,f,O,u,l,v,C)}}}catch(P){a={error:P}}finally{try{w&&!w.done&&(i=p.return)&&i.call(p)}finally{if(a)throw a.error}}return C},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=je),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce(Lr[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=_(this._index),s=i.next();!s.done;s=i.next()){var u=$(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,_(h)),y=v.next();!y.done;y=v.next()){var m=$(y.value,2),E=m[0],x=m[1];d[E]=Object.fromEntries(x)}}catch(C){r={error:C}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(C){e={error:C}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var m=_(Object.keys(a)),E=m.next();!E.done;E=m.next()){var x=E.value,C=a[x],N=this._fieldIds[x],A=n.get(N);if(A!=null){var M=A.size,L=this._avgFieldLength[N];try{for(var D=(d=void 0,_(A.keys())),k=D.next();!k.done;k=D.next()){var I=k.value;if(!this._documentIds.has(I)){this.removeTerm(N,I,t),M-=1;continue}var R=i?i(this._documentIds.get(I),t,this._storedFields.get(I)):1;if(R){var F=A.get(I),c=this._fieldLength.get(I)[N],f=zr(F,M,this._documentCount,c,L,s),p=r*C*R*f,w=u.get(I);if(w){w.score+=p,$r(w.terms,e);var T=Me(w.match,t);T?T.push(x):w.match[t]=[x]}else u.set(I,{score:p,terms:[e],match:(y={},y[t]=[x],y)})}}}catch(O){d={error:O}}finally{try{k&&!k.done&&(v=D.return)&&v.call(D)}finally{if(d)throw d.error}}}}}catch(O){l={error:O}}finally{try{E&&!E.done&&(h=m.return)&&h.call(m)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,ht),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,ht),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=_(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(Jt("data-v-fadd0b86"),o=o(),Ut(),o),Kr=["aria-owns"],jr={class:"shell"},Jr=["title"],Ur=Q(()=>S("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[S("circle",{cx:"11",cy:"11",r:"8"}),S("path",{d:"m21 21l-4.35-4.35"})])],-1)),Hr=[Ur],Gr={class:"search-actions before"},qr=["title"],Qr=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"})],-1)),Yr=[Qr],Zr=["placeholder"],Xr={class:"search-actions"},ea=["title"],ta=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 14h7v7H3zM3 3h7v7H3zm11 1h7m-7 5h7m-7 6h7m-7 5h7"})],-1)),ra=[ta],aa=["disabled","title"],na=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"})],-1)),ia=[na],oa=["id","role","aria-labelledby"],sa=["aria-selected"],ua=["href","aria-label","onMouseenter","onFocusin"],la={class:"titles"},ca=Q(()=>S("span",{class:"title-icon"},"#",-1)),fa=["innerHTML"],da=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1)),ha={class:"title main"},va=["innerHTML"],pa={key:0,class:"excerpt-wrapper"},ya={key:0,class:"excerpt",inert:""},ga=["innerHTML"],ma=Q(()=>S("div",{class:"excerpt-gradient-bottom"},null,-1)),ba=Q(()=>S("div",{class:"excerpt-gradient-top"},null,-1)),wa={key:0,class:"no-results"},xa={class:"search-keyboard-shortcuts"},Fa=["aria-label"],Ea=Q(()=>S("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)),Sa=[Ea],Aa=["aria-label"],Ca=Q(()=>S("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)),Na=[Ca],ka=["aria-label"],Ta=Q(()=>S("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[S("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[S("path",{d:"m9 10l-5 5l5 5"}),S("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)),Ia=[Ta],Da=["aria-label"],_a=Tt({__name:"VPLocalSearchBox",props:{placeholder:{}},emits:["close"],setup(o,{emit:e}){var T,O,P;const t=me(),r=me(),n=me(Xt),a=Yt(),{activate:i}=Cr(t,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:s,theme:u}=a,l=Xe(async()=>{var g,b,z,G,j,J,B,U,H;return at(Mr.loadJSON((z=await((b=(g=n.value)[s.value])==null?void 0:b.call(g)))==null?void 0:z.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((G=u.value.search)==null?void 0:G.provider)==="local"&&((J=(j=u.value.search.options)==null?void 0:j.miniSearch)==null?void 0:J.searchOptions)},...((B=u.value.search)==null?void 0:B.provider)==="local"&&((H=(U=u.value.search.options)==null?void 0:U.miniSearch)==null?void 0:H.options)}))}),d=Te(()=>{var g,b;return((g=u.value.search)==null?void 0:g.provider)==="local"&&((b=u.value.search.options)==null?void 0:b.disableQueryPersistence)===!0}).value?ne(""):It("vitepress:local-search-filter",""),v=Dt("vitepress:local-search-detailed-list",((T=u.value.search)==null?void 0:T.provider)==="local"&&((O=u.value.search.options)==null?void 0:O.detailedView)===!0),y=Te(()=>{var g,b,z;return((g=u.value.search)==null?void 0:g.provider)==="local"&&(((b=u.value.search.options)==null?void 0:b.disableDetailedView)===!0||((z=u.value.search.options)==null?void 0:z.detailedView)===!1)});_t(()=>{y.value&&(v.value=!1)});const m=me([]),E=ne(!1);ze(d,()=>{E.value=!1});const x=Xe(async()=>{if(r.value)return at(new kr(r.value))},null);Ot(()=>[l.value,d.value,v.value],async([g,b,z],G,j)=>{var Je,Ue,He,Ge;let J=!1;if(j(()=>{J=!0}),!g)return;m.value=g.search(b).slice(0,16),E.value=!0;const B=z?await Promise.all(m.value.map(q=>C(q.id))):[];if(J)return;const U=new Map;for(const{id:q,mod:te}of B){const re=q.slice(0,q.indexOf("#"));let X=U.get(re);if(X)continue;X=new Map,U.set(re,X);const Y=te.default??te;if(Y!=null&&Y.render||Y!=null&&Y.setup){const ae=Ht(Y);ae.config.warnHandler=()=>{},ae.provide(Gt,a),Object.defineProperties(ae.config.globalProperties,{$frontmatter:{get(){return a.frontmatter.value}},$params:{get(){return a.page.value.params}}});const qe=document.createElement("div");ae.mount(qe),qe.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ce=>{var Ze;const ge=(Ze=ce.querySelector("a"))==null?void 0:Ze.getAttribute("href"),Qe=(ge==null?void 0:ge.startsWith("#"))&&ge.slice(1);if(!Qe)return;let Ye="";for(;(ce=ce.nextElementSibling)&&!/^h[1-6]$/i.test(ce.tagName);)Ye+=ce.outerHTML;X.set(Qe,Ye)}),ae.unmount()}if(J)return}const H=new Set;if(m.value=m.value.map(q=>{const[te,re]=q.id.split("#"),X=U.get(te),Y=(X==null?void 0:X.get(re))??"";for(const ae in q.match)H.add(ae);return{...q,text:Y}}),await fe(),J)return;await new Promise(q=>{var te;(te=x.value)==null||te.unmark({done:()=>{var re;(re=x.value)==null||re.markRegExp(w(H),{done:q})}})});const ke=((Je=t.value)==null?void 0:Je.querySelectorAll(".result .excerpt"))??[];for(const q of ke)(Ue=q.querySelector('mark[data-markjs="true"]'))==null||Ue.scrollIntoView({block:"center"});(Ge=(He=r.value)==null?void 0:He.firstElementChild)==null||Ge.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function C(g){const b=qt(g.slice(0,g.indexOf("#")));try{if(!b)throw new Error(`Cannot find file for id: ${g}`);return{id:g,mod:await vt(()=>import(b),[])}}catch(z){return console.error(z),{id:g,mod:{}}}}const N=ne(),A=Te(()=>{var g;return((g=d.value)==null?void 0:g.length)<=0});function M(g=!0){var b,z;(b=N.value)==null||b.focus(),g&&((z=N.value)==null||z.select())}Ie(()=>{M()});function L(g){g.pointerType==="mouse"&&M()}const D=ne(-1),k=ne(!1);ze(m,g=>{D.value=g.length?0:-1,I()});function I(){fe(()=>{const g=document.querySelector(".result.selected");g&&g.scrollIntoView({block:"nearest"})})}be("ArrowUp",g=>{g.preventDefault(),D.value--,D.value<0&&(D.value=m.value.length-1),k.value=!0,I()}),be("ArrowDown",g=>{g.preventDefault(),D.value++,D.value>=m.value.length&&(D.value=0),k.value=!0,I()});const R=Rt();be("Enter",g=>{if(g.target instanceof HTMLButtonElement&&g.target.type!=="submit")return;const b=m.value[D.value];if(g.target instanceof HTMLInputElement&&!b){g.preventDefault();return}b&&(R.go(b.id),e("close"))}),be("Escape",()=>{e("close")});const F={modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}},c=Zt((P=u.value.search)==null?void 0:P.options,F);Ie(()=>{window.history.pushState(null,"",null)}),Mt("popstate",g=>{g.preventDefault(),e("close")});const f=Lt(Pt?document.body:null);Ie(()=>{fe(()=>{f.value=!0,fe().then(()=>i())})}),zt(()=>{f.value=!1});function p(){d.value="",fe().then(()=>M(!1))}function w(g){return new RegExp([...g].sort((b,z)=>z.length-b.length).map(b=>`(${b.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}return(g,b)=>{var z,G,j,J;return Z(),Bt(jt,{to:"body"},[S("div",{ref_key:"el",ref:t,role:"button","aria-owns":(z=m.value)!=null&&z.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[S("div",{class:"backdrop",onClick:b[0]||(b[0]=B=>g.$emit("close"))}),S("div",jr,[S("form",{class:"search-bar",onPointerup:b[4]||(b[4]=B=>L(B)),onSubmit:b[5]||(b[5]=Vt(()=>{},["prevent"]))},[S("label",{title:g.placeholder,id:"localsearch-label",for:"localsearch-input"},Hr,8,Jr),S("div",Gr,[S("button",{class:"back-button",title:W(c)("modal.backButtonTitle"),onClick:b[1]||(b[1]=B=>g.$emit("close"))},Yr,8,qr)]),$t(S("input",{ref_key:"searchInput",ref:N,"onUpdate:modelValue":b[2]||(b[2]=B=>Kt(d)?d.value=B:null),placeholder:g.placeholder,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,Zr),[[Wt,W(d)]]),S("div",Xr,[y.value?we("",!0):(Z(),ee("button",{key:0,class:et(["toggle-layout-button",{"detailed-list":W(v)}]),type:"button",title:W(c)("modal.displayDetails"),onClick:b[3]||(b[3]=B=>D.value>-1&&(v.value=!W(v)))},ra,10,ea)),S("button",{class:"clear-button",type:"reset",disabled:A.value,title:W(c)("modal.resetButtonTitle"),onClick:p},ia,8,aa)])],32),S("ul",{ref_key:"resultsEl",ref:r,id:(G=m.value)!=null&&G.length?"localsearch-list":void 0,role:(j=m.value)!=null&&j.length?"listbox":void 0,"aria-labelledby":(J=m.value)!=null&&J.length?"localsearch-label":void 0,class:"results",onMousemove:b[7]||(b[7]=B=>k.value=!1)},[(Z(!0),ee(rt,null,tt(m.value,(B,U)=>(Z(),ee("li",{key:B.id,role:"option","aria-selected":D.value===U?"true":"false"},[S("a",{href:B.id,class:et(["result",{selected:D.value===U}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:H=>!k.value&&(D.value=U),onFocusin:H=>D.value=U,onClick:b[6]||(b[6]=H=>g.$emit("close"))},[S("div",null,[S("div",la,[ca,(Z(!0),ee(rt,null,tt(B.titles,(H,ke)=>(Z(),ee("span",{key:ke,class:"title"},[S("span",{class:"text",innerHTML:H},null,8,fa),da]))),128)),S("span",ha,[S("span",{class:"text",innerHTML:B.title},null,8,va)])]),W(v)?(Z(),ee("div",pa,[B.text?(Z(),ee("div",ya,[S("div",{class:"vp-doc",innerHTML:B.text},null,8,ga)])):we("",!0),ma,ba])):we("",!0)])],42,ua)],8,sa))),128)),W(d)&&!m.value.length&&E.value?(Z(),ee("li",wa,[de(he(W(c)("modal.noResultsText"))+' "',1),S("strong",null,he(W(d)),1),de('" ')])):we("",!0)],40,oa),S("div",xa,[S("span",null,[S("kbd",{"aria-label":W(c)("modal.footer.navigateUpKeyAriaLabel")},Sa,8,Fa),S("kbd",{"aria-label":W(c)("modal.footer.navigateDownKeyAriaLabel")},Na,8,Aa),de(" "+he(W(c)("modal.footer.navigateText")),1)]),S("span",null,[S("kbd",{"aria-label":W(c)("modal.footer.selectKeyAriaLabel")},Ia,8,ka),de(" "+he(W(c)("modal.footer.selectText")),1)]),S("span",null,[S("kbd",{"aria-label":W(c)("modal.footer.closeKeyAriaLabel")},"esc",8,Da),de(" "+he(W(c)("modal.footer.closeText")),1)])])])],8,Kr)])}}});const Pa=Qt(_a,[["__scopeId","data-v-fadd0b86"]]);export{Pa as default}; diff --git a/assets/chunks/framework.c4d6cd72.js b/assets/chunks/framework.c4d6cd72.js new file mode 100644 index 0000000..ffa9019 --- /dev/null +++ b/assets/chunks/framework.c4d6cd72.js @@ -0,0 +1,2 @@ +function fr(e,t){const n=Object.create(null),r=e.split(",");for(let s=0;s!!n[s.toLowerCase()]:s=>!!n[s]}const te={},pt=[],Re=()=>{},li=()=>!1,ci=/^on[^a-z]/,Vt=e=>ci.test(e),dr=e=>e.startsWith("onUpdate:"),ie=Object.assign,hr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ai=Object.prototype.hasOwnProperty,Y=(e,t)=>ai.call(e,t),k=Array.isArray,gt=e=>Cn(e)==="[object Map]",Bs=e=>Cn(e)==="[object Set]",K=e=>typeof e=="function",re=e=>typeof e=="string",pr=e=>typeof e=="symbol",ee=e=>e!==null&&typeof e=="object",ks=e=>ee(e)&&K(e.then)&&K(e.catch),Us=Object.prototype.toString,Cn=e=>Us.call(e),ui=e=>Cn(e).slice(8,-1),Ks=e=>Cn(e)==="[object Object]",gr=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Mt=fr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),En=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},fi=/-(\w)/g,Ne=En(e=>e.replace(fi,(t,n)=>n?n.toUpperCase():"")),di=/\B([A-Z])/g,at=En(e=>e.replace(di,"-$1").toLowerCase()),xn=En(e=>e.charAt(0).toUpperCase()+e.slice(1)),an=En(e=>e?`on${xn(e)}`:""),jt=(e,t)=>!Object.is(e,t),un=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Jn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},hi=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Wr;const Xn=()=>Wr||(Wr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function mr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(gi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function _r(e){let t="";if(re(e))t=e;else if(k(e))for(let n=0;nre(e)?e:e==null?"":k(e)||ee(e)&&(e.toString===Us||!K(e.toString))?JSON.stringify(e,Vs,2):String(e),Vs=(e,t)=>t&&t.__v_isRef?Vs(e,t.value):gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s])=>(n[`${r} =>`]=s,n),{})}:Bs(t)?{[`Set(${t.size})`]:[...t.values()]}:ee(t)&&!k(t)&&!Ks(t)?String(t):t;let be;class vi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},zs=e=>(e.w&Je)>0,Ys=e=>(e.n&Je)>0,Ei=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(f==="length"||f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?gr(n)&&l.push(i.get("length")):(l.push(i.get(it)),gt(e)&&l.push(i.get(Zn)));break;case"delete":k(e)||(l.push(i.get(it)),gt(e)&&l.push(i.get(Zn)));break;case"set":gt(e)&&l.push(i.get(it));break}if(l.length===1)l[0]&&Gn(l[0]);else{const c=[];for(const a of l)a&&c.push(...a);Gn(yr(c))}}function Gn(e,t){const n=k(e)?e:[...e];for(const r of n)r.computed&&qr(r);for(const r of n)r.computed||qr(r)}function qr(e,t){(e!==Se||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Ti(e,t){var n;return(n=pn.get(e))==null?void 0:n.get(t)}const Ai=fr("__proto__,__v_isRef,__isVue"),Qs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(pr)),Si=vr(),Oi=vr(!1,!0),Ri=vr(!0),zr=Pi();function Pi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){xt();const r=J(this)[t].apply(this,n);return Tt(),r}}),e}function Mi(e){const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}function vr(e=!1,t=!1){return function(r,s,o){if(s==="__v_isReactive")return!e;if(s==="__v_isReadonly")return e;if(s==="__v_isShallow")return t;if(s==="__v_raw"&&o===(e?t?zi:no:t?to:eo).get(r))return r;const i=k(r);if(!e){if(i&&Y(zr,s))return Reflect.get(zr,s,o);if(s==="hasOwnProperty")return Mi}const l=Reflect.get(r,s,o);return(pr(s)?Qs.has(s):Ai(s))||(e||me(r,"get",s),t)?l:ce(l)?i&&gr(s)?l:l.value:ee(l)?e?Sn(l):An(l):l}}const Fi=Zs(),Ii=Zs(!0);function Zs(e=!1){return function(n,r,s,o){let i=n[r];if(vt(i)&&ce(i)&&!ce(s))return!1;if(!e&&(!gn(s)&&!vt(s)&&(i=J(i),s=J(s)),!k(n)&&ce(i)&&!ce(s)))return i.value=s,!0;const l=k(n)&&gr(r)?Number(r)e,Tn=e=>Reflect.getPrototypeOf(e);function Xt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(t!==o&&me(s,"get",t),me(s,"get",o));const{has:i}=Tn(s),l=r?wr:n?xr:Dt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(e!==s&&me(r,"has",e),me(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&me(J(e),"iterate",it),Reflect.get(e,"size",e)}function Yr(e){e=J(e);const t=J(this);return Tn(t).has.call(t,e)||(t.add(e),je(t,"add",e,e)),this}function Jr(e,t){t=J(t);const n=J(this),{has:r,get:s}=Tn(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?jt(t,i)&&je(n,"set",e,t):je(n,"add",e,t),this}function Xr(e){const t=J(this),{has:n,get:r}=Tn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&je(t,"delete",e,void 0),o}function Qr(){const e=J(this),t=e.size!==0,n=e.clear();return t&&je(e,"clear",void 0,void 0),n}function Gt(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?wr:e?xr:Dt;return!e&&me(l,"iterate",it),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function en(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=gt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?wr:t?xr:Dt;return!t&&me(o,"iterate",c?Zn:it),{next(){const{value:h,done:g}=a.next();return g?{value:h,done:g}:{value:l?[f(h[0]),f(h[1])]:f(h),done:g}},[Symbol.iterator](){return this}}}}function ke(e){return function(...t){return e==="delete"?!1:this}}function Di(){const e={get(o){return Xt(this,o)},get size(){return Zt(this)},has:Qt,add:Yr,set:Jr,delete:Xr,clear:Qr,forEach:Gt(!1,!1)},t={get(o){return Xt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add:Yr,set:Jr,delete:Xr,clear:Qr,forEach:Gt(!1,!0)},n={get(o){return Xt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:Gt(!0,!1)},r={get(o){return Xt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:ke("add"),set:ke("set"),delete:ke("delete"),clear:ke("clear"),forEach:Gt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=en(o,!1,!1),n[o]=en(o,!0,!1),t[o]=en(o,!1,!0),r[o]=en(o,!0,!0)}),[e,n,t,r]}const[Bi,ki,Ui,Ki]=Di();function Cr(e,t){const n=t?e?Ki:Ui:e?ki:Bi;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const Wi={get:Cr(!1,!1)},Vi={get:Cr(!1,!0)},qi={get:Cr(!0,!1)},eo=new WeakMap,to=new WeakMap,no=new WeakMap,zi=new WeakMap;function Yi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ji(e){return e.__v_skip||!Object.isExtensible(e)?0:Yi(ui(e))}function An(e){return vt(e)?e:Er(e,!1,Gs,Wi,eo)}function Xi(e){return Er(e,!1,ji,Vi,to)}function Sn(e){return Er(e,!0,Hi,qi,no)}function Er(e,t,n,r,s){if(!ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=Ji(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function mt(e){return vt(e)?mt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function gn(e){return!!(e&&e.__v_isShallow)}function ro(e){return mt(e)||vt(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Ft(e){return hn(e,"__v_skip",!0),e}const Dt=e=>ee(e)?An(e):e,xr=e=>ee(e)?Sn(e):e;function Tr(e){qe&&Se&&(e=J(e),Xs(e.dep||(e.dep=yr())))}function Ar(e,t){e=J(e);const n=e.dep;n&&Gn(n)}function ce(e){return!!(e&&e.__v_isRef===!0)}function ae(e){return so(e,!1)}function Sr(e){return so(e,!0)}function so(e,t){return ce(e)?e:new Qi(e,t)}class Qi{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Dt(t)}get value(){return Tr(this),this._value}set value(t){const n=this.__v_isShallow||gn(t)||vt(t);t=n?t:J(t),jt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Dt(t),Ar(this))}}function oo(e){return ce(e)?e.value:e}const Zi={get:(e,t,n)=>oo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ce(s)&&!ce(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function io(e){return mt(e)?e:new Proxy(e,Zi)}class Gi{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Tr(this),()=>Ar(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function el(e){return new Gi(e)}class tl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Ti(J(this._object),this._key)}}class nl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function rl(e,t,n){return ce(e)?e:K(e)?new nl(e):ee(e)&&arguments.length>1?sl(e,t,n):ae(e)}function sl(e,t,n){const r=e[t];return ce(r)?r:new tl(e,t,n)}class ol{constructor(t,n,r,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new br(t,()=>{this._dirty||(this._dirty=!0,Ar(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return Tr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function il(e,t,n=!1){let r,s;const o=K(e);return o?(r=e,s=Re):(r=e.get,s=e.set),new ol(r,s,o||!s,n)}function ze(e,t,n,r){let s;try{s=r?e(...r):e()}catch(o){qt(o,t,n)}return s}function xe(e,t,n,r){if(K(e)){const o=ze(e,t,n,r);return o&&ks(o)&&o.catch(i=>{qt(i,t,n)}),o}const s=[];for(let o=0;o>>1;kt(de[r])Ie&&de.splice(t,1)}function ul(e){k(e)?_t.push(...e):(!He||!He.includes(e,e.allowRecurse?nt+1:nt))&&_t.push(e),co()}function Zr(e,t=Bt?Ie+1:0){for(;tkt(n)-kt(r)),nt=0;nte.id==null?1/0:e.id,fl=(e,t)=>{const n=kt(e)-kt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ao(e){er=!1,Bt=!0,de.sort(fl);const t=Re;try{for(Ie=0;Iere(w)?w.trim():w)),h&&(s=n.map(Jn))}let l,c=r[l=an(t)]||r[l=an(Ne(t))];!c&&o&&(c=r[l=an(at(t))]),c&&xe(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(a,e,6,s)}}function uo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!K(e)){const c=a=>{const f=uo(a,t,!0);f&&(l=!0,ie(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(ee(e)&&r.set(e,null),null):(k(o)?o.forEach(c=>i[c]=null):ie(i,o),ee(e)&&r.set(e,i),i)}function Pn(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,at(t))||Y(e,t))}let fe=null,Mn=null;function _n(e){const t=fe;return fe=e,Mn=e&&e.type.__scopeId||null,t}function Na(e){Mn=e}function $a(){Mn=null}function hl(e,t=fe,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&fs(-1);const o=_n(t);let i;try{i=e(...s)}finally{_n(o),r._d&&fs(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Bn(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:f,renderCache:h,data:g,setupState:w,ctx:E,inheritAttrs:S}=e;let $,m;const y=_n(e);try{if(n.shapeFlag&4){const A=s||r;$=Ae(f.call(A,A,h,o,w,g,E)),m=c}else{const A=t;$=Ae(A.length>1?A(o,{attrs:c,slots:l,emit:a}):A(o,null)),m=t.props?c:pl(c)}}catch(A){$t.length=0,qt(A,e,1),$=se(ve)}let N=$;if(m&&S!==!1){const A=Object.keys(m),{shapeFlag:B}=N;A.length&&B&7&&(i&&A.some(dr)&&(m=gl(m,i)),N=Xe(N,m))}return n.dirs&&(N=Xe(N),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&(N.transition=n.transition),$=N,_n(y),$}const pl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vt(n))&&((t||(t={}))[n]=e[n]);return t},gl=(e,t)=>{const n={};for(const r in e)(!dr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function ml(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Gr(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function fo(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):ul(e)}function Rr(e,t){return Fn(e,null,t)}function Ha(e,t){return Fn(e,null,{flush:"post"})}const tn={};function Ye(e,t,n){return Fn(e,t,n)}function Fn(e,t,{immediate:n,deep:r,flush:s,onTrack:o,onTrigger:i}=te){var l;const c=qs()===((l=le)==null?void 0:l.scope)?le:null;let a,f=!1,h=!1;if(ce(e)?(a=()=>e.value,f=gn(e)):mt(e)?(a=()=>e,r=!0):k(e)?(h=!0,f=e.some(A=>mt(A)||gn(A)),a=()=>e.map(A=>{if(ce(A))return A.value;if(mt(A))return ot(A);if(K(A))return ze(A,c,2)})):K(e)?t?a=()=>ze(e,c,2):a=()=>{if(!(c&&c.isUnmounted))return g&&g(),xe(e,c,3,[w])}:a=Re,t&&r){const A=a;a=()=>ot(A())}let g,w=A=>{g=y.onStop=()=>{ze(A,c,4)}},E;if(Et)if(w=Re,t?n&&xe(t,c,3,[a(),h?[]:void 0,w]):a(),s==="sync"){const A=pc();E=A.__watcherHandles||(A.__watcherHandles=[])}else return Re;let S=h?new Array(e.length).fill(tn):tn;const $=()=>{if(y.active)if(t){const A=y.run();(r||f||(h?A.some((B,W)=>jt(B,S[W])):jt(A,S)))&&(g&&g(),xe(t,c,3,[A,S===tn?void 0:h&&S[0]===tn?[]:S,w]),S=A)}else y.run()};$.allowRecurse=!!t;let m;s==="sync"?m=$:s==="post"?m=()=>pe($,c&&c.suspense):($.pre=!0,c&&($.id=c.uid),m=()=>Rn($));const y=new br(a,m);t?n?$():S=y.run():s==="post"?pe(y.run.bind(y),c&&c.suspense):y.run();const N=()=>{y.stop(),c&&c.scope&&hr(c.scope.effects,y)};return E&&E.push(N),N}function bl(e,t,n){const r=this.proxy,s=re(e)?e.includes(".")?ho(r,e):()=>r[e]:e.bind(r,r);let o;K(t)?o=t:(o=t.handler,n=t);const i=le;Ct(this);const l=Fn(s,o.bind(r),n);return i?Ct(i):lt(),l}function ho(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{ot(n,t)});else if(Ks(e))for(const n in e)ot(e[n],t);return e}function ja(e,t){const n=fe;if(n===null)return e;const r=Hn(n)||n.proxy,s=e.dirs||(e.dirs=[]);for(let o=0;o{e.isMounted=!0}),yo(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],po={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},wl={name:"BaseTransition",props:po,setup(e,{slots:t}){const n=$n(),r=vl();let s;return()=>{const o=t.default&&mo(t.default(),!0);if(!o||!o.length)return;let i=o[0];if(o.length>1){for(const S of o)if(S.type!==ve){i=S;break}}const l=J(e),{mode:c}=l;if(r.isLeaving)return kn(i);const a=es(i);if(!a)return kn(i);const f=tr(a,l,r,n);nr(a,f);const h=n.subTree,g=h&&es(h);let w=!1;const{getTransitionKey:E}=a.type;if(E){const S=E();s===void 0?s=S:S!==s&&(s=S,w=!0)}if(g&&g.type!==ve&&(!rt(a,g)||w)){const S=tr(g,l,r,n);if(nr(g,S),c==="out-in")return r.isLeaving=!0,S.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},kn(i);c==="in-out"&&a.type!==ve&&(S.delayLeave=($,m,y)=>{const N=go(r,g);N[String(g.key)]=g,$._leaveCb=()=>{m(),$._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=y})}return i}}},Cl=wl;function go(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function tr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:g,onAfterLeave:w,onLeaveCancelled:E,onBeforeAppear:S,onAppear:$,onAfterAppear:m,onAppearCancelled:y}=t,N=String(e.key),A=go(n,e),B=(_,P)=>{_&&xe(_,r,9,P)},W=(_,P)=>{const I=P[1];B(_,P),k(_)?_.every(V=>V.length<=1)&&I():_.length<=1&&I()},D={mode:o,persisted:i,beforeEnter(_){let P=l;if(!n.isMounted)if(s)P=S||l;else return;_._leaveCb&&_._leaveCb(!0);const I=A[N];I&&rt(e,I)&&I.el._leaveCb&&I.el._leaveCb(),B(P,[_])},enter(_){let P=c,I=a,V=f;if(!n.isMounted)if(s)P=$||c,I=m||a,V=y||f;else return;let M=!1;const q=_._enterCb=L=>{M||(M=!0,L?B(V,[_]):B(I,[_]),D.delayedLeave&&D.delayedLeave(),_._enterCb=void 0)};P?W(P,[_,q]):q()},leave(_,P){const I=String(e.key);if(_._enterCb&&_._enterCb(!0),n.isUnmounting)return P();B(h,[_]);let V=!1;const M=_._leaveCb=q=>{V||(V=!0,P(),q?B(E,[_]):B(w,[_]),_._leaveCb=void 0,A[I]===e&&delete A[I])};A[I]=e,g?W(g,[_,M]):M()},clone(_){return tr(_,t,n,r)}};return D}function kn(e){if(zt(e))return e=Xe(e),e.children=null,e}function es(e){return zt(e)?e.children?e.children[0]:void 0:e}function nr(e,t){e.shapeFlag&6&&e.component?nr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function mo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oie({name:e.name},t,{setup:e}))():e}const yt=e=>!!e.type.__asyncLoader;function Da(e){K(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,g()),g=()=>{let w;return c||(w=c=t().catch(E=>{if(E=E instanceof Error?E:new Error(String(E)),l)return new Promise((S,$)=>{l(E,()=>S(h()),()=>$(E),f+1)});throw E}).then(E=>w!==c&&c?c:(E&&(E.__esModule||E[Symbol.toStringTag]==="Module")&&(E=E.default),a=E,E)))};return Pr({name:"AsyncComponentWrapper",__asyncLoader:g,get __asyncResolved(){return a},setup(){const w=le;if(a)return()=>Un(a,w);const E=y=>{c=null,qt(y,w,13,!r)};if(i&&w.suspense||Et)return g().then(y=>()=>Un(y,w)).catch(y=>(E(y),()=>r?se(r,{error:y}):null));const S=ae(!1),$=ae(),m=ae(!!s);return s&&setTimeout(()=>{m.value=!1},s),o!=null&&setTimeout(()=>{if(!S.value&&!$.value){const y=new Error(`Async component timed out after ${o}ms.`);E(y),$.value=y}},o),g().then(()=>{S.value=!0,w.parent&&zt(w.parent.vnode)&&Rn(w.parent.update)}).catch(y=>{E(y),$.value=y}),()=>{if(S.value&&a)return Un(a,w);if($.value&&r)return se(r,{error:$.value});if(n&&!m.value)return se(n)}}})}function Un(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=se(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const zt=e=>e.type.__isKeepAlive;function El(e,t){_o(e,"a",t)}function xl(e,t){_o(e,"da",t)}function _o(e,t,n=le){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(In(t,r,n),n){let s=n.parent;for(;s&&s.parent;)zt(s.parent.vnode)&&Tl(r,t,n,s),s=s.parent}}function Tl(e,t,n,r){const s=In(t,e,r,!0);Ln(()=>{hr(r[t],s)},n)}function In(e,t,n=le,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;xt(),Ct(n);const l=xe(t,n,e,i);return lt(),Tt(),l});return r?s.unshift(o):s.push(o),o}}const Be=e=>(t,n=le)=>(!Et||e==="sp")&&In(e,(...r)=>t(...r),n),Al=Be("bm"),At=Be("m"),Sl=Be("bu"),Ol=Be("u"),yo=Be("bum"),Ln=Be("um"),Rl=Be("sp"),Pl=Be("rtg"),Ml=Be("rtc");function Fl(e,t=le){In("ec",e,t)}const Mr="components";function Ba(e,t){return vo(Mr,e,!0,t)||e}const bo=Symbol.for("v-ndc");function ka(e){return re(e)?vo(Mr,e,!1)||e:e||bo}function vo(e,t,n=!0,r=!1){const s=fe||le;if(s){const o=s.type;if(e===Mr){const l=fc(o,!1);if(l&&(l===t||l===Ne(t)||l===xn(Ne(t))))return o}const i=ts(s[e]||o[e],t)||ts(s.appContext[e],t);return!i&&r?o:i}}function ts(e,t){return e&&(e[t]||e[Ne(t)]||e[xn(Ne(t))])}function Ua(e,t,n,r){let s;const o=n&&n[r];if(k(e)||re(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lwn(t)?!(t.type===ve||t.type===ge&&!wo(t.children)):!0)?e:null}function Wa(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:an(r)]=e[r];return n}const rr=e=>e?Ho(e)?Hn(e)||e.proxy:rr(e.parent):null,It=ie(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rr(e.parent),$root:e=>rr(e.root),$emit:e=>e.emit,$options:e=>Fr(e),$forceUpdate:e=>e.f||(e.f=()=>Rn(e.update)),$nextTick:e=>e.n||(e.n=On.bind(e.proxy)),$watch:e=>bl.bind(e)}),Kn=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),Il={get({_:e},t){const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const w=i[t];if(w!==void 0)switch(w){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Kn(r,t))return i[t]=1,r[t];if(s!==te&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==te&&Y(n,t))return i[t]=4,n[t];sr&&(i[t]=0)}}const f=It[t];let h,g;if(f)return t==="$attrs"&&me(e,"get",t),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&Y(n,t))return i[t]=4,n[t];if(g=c.config.globalProperties,Y(g,t))return g[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Kn(s,t)?(s[t]=n,!0):r!==te&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==te&&Y(e,i)||Kn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(It,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Va(){return Ll().slots}function Ll(){const e=$n();return e.setupContext||(e.setupContext=Do(e))}function ns(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let sr=!0;function Nl(e){const t=Fr(e),n=e.proxy,r=e.ctx;sr=!1,t.beforeCreate&&rs(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:g,beforeUpdate:w,updated:E,activated:S,deactivated:$,beforeDestroy:m,beforeUnmount:y,destroyed:N,unmounted:A,render:B,renderTracked:W,renderTriggered:D,errorCaptured:_,serverPrefetch:P,expose:I,inheritAttrs:V,components:M,directives:q,filters:L}=t;if(a&&$l(a,r,null),i)for(const ne in i){const Z=i[ne];K(Z)&&(r[ne]=Z.bind(n))}if(s){const ne=s.call(n,n);ee(ne)&&(e.data=An(ne))}if(sr=!0,o)for(const ne in o){const Z=o[ne],Qe=K(Z)?Z.bind(n,n):K(Z.get)?Z.get.bind(n,n):Re,Yt=!K(Z)&&K(Z.set)?Z.set.bind(n):Re,Ze=ue({get:Qe,set:Yt});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:Pe=>Ze.value=Pe})}if(l)for(const ne in l)Co(l[ne],r,n,ne);if(c){const ne=K(c)?c.call(n):c;Reflect.ownKeys(ne).forEach(Z=>{Ul(Z,ne[Z])})}f&&rs(f,e,"c");function X(ne,Z){k(Z)?Z.forEach(Qe=>ne(Qe.bind(n))):Z&&ne(Z.bind(n))}if(X(Al,h),X(At,g),X(Sl,w),X(Ol,E),X(El,S),X(xl,$),X(Fl,_),X(Ml,W),X(Pl,D),X(yo,y),X(Ln,A),X(Rl,P),k(I))if(I.length){const ne=e.exposed||(e.exposed={});I.forEach(Z=>{Object.defineProperty(ne,Z,{get:()=>n[Z],set:Qe=>n[Z]=Qe})})}else e.exposed||(e.exposed={});B&&e.render===Re&&(e.render=B),V!=null&&(e.inheritAttrs=V),M&&(e.components=M),q&&(e.directives=q)}function $l(e,t,n=Re){k(e)&&(e=or(e));for(const r in e){const s=e[r];let o;ee(s)?"default"in s?o=bt(s.from||r,s.default,!0):o=bt(s.from||r):o=bt(s),ce(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function rs(e,t,n){xe(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Co(e,t,n,r){const s=r.includes(".")?ho(n,r):()=>n[r];if(re(e)){const o=t[e];K(o)&&Ye(s,o)}else if(K(e))Ye(s,e.bind(n));else if(ee(e))if(k(e))e.forEach(o=>Co(o,t,n,r));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ye(s,o,e)}}function Fr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>yn(c,a,i,!0)),yn(c,t,i)),ee(t)&&o.set(t,c),c}function yn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&yn(e,o,n,!0),s&&s.forEach(i=>yn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Hl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Hl={data:ss,props:os,emits:os,methods:Pt,computed:Pt,beforeCreate:he,created:he,beforeMount:he,mounted:he,beforeUpdate:he,updated:he,beforeDestroy:he,beforeUnmount:he,destroyed:he,unmounted:he,activated:he,deactivated:he,errorCaptured:he,serverPrefetch:he,components:Pt,directives:Pt,watch:Dl,provide:ss,inject:jl};function ss(e,t){return t?e?function(){return ie(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function jl(e,t){return Pt(or(e),or(t))}function or(e){if(k(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(r&&r.proxy):t}}function Kl(e,t,n,r=!1){const s={},o={};hn(o,Nn,1),e.propsDefaults=Object.create(null),xo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:Xi(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Wl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[g,w]=To(h,t,!0);ie(i,g),w&&l.push(...w)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return ee(e)&&r.set(e,pt),pt;if(k(o))for(let f=0;f-1,w[1]=S<0||E-1||Y(w,"default"))&&l.push(h)}}}const a=[i,l];return ee(e)&&r.set(e,a),a}function is(e){return e[0]!=="$"}function ls(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function cs(e,t){return ls(e)===ls(t)}function as(e,t){return k(t)?t.findIndex(n=>cs(n,e)):K(t)&&cs(t,e)?0:-1}const Ao=e=>e[0]==="_"||e==="$stable",Ir=e=>k(e)?e.map(Ae):[Ae(e)],Vl=(e,t,n)=>{if(t._n)return t;const r=hl((...s)=>Ir(t(...s)),n);return r._c=!1,r},So=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Ao(s))continue;const o=e[s];if(K(o))t[s]=Vl(s,o,r);else if(o!=null){const i=Ir(o);t[s]=()=>i}}},Oo=(e,t)=>{const n=Ir(t);e.slots.default=()=>n},ql=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),hn(t,"_",n)):So(t,e.slots={})}else e.slots={},t&&Oo(e,t);hn(e.slots,Nn,1)},zl=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=te;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ie(s,t),!n&&l===1&&delete s._):(o=!t.$stable,So(t,s)),i=t}else t&&(Oo(e,t),i={default:1});if(o)for(const l in s)!Ao(l)&&!(l in i)&&delete s[l]};function vn(e,t,n,r,s=!1){if(k(e)){e.forEach((g,w)=>vn(g,t&&(k(t)?t[w]:t),n,r,s));return}if(yt(r)&&!s)return;const o=r.shapeFlag&4?Hn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(re(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):ce(a)&&(a.value=null)),K(c))ze(c,l,12,[i,f]);else{const g=re(c),w=ce(c);if(g||w){const E=()=>{if(e.f){const S=g?Y(h,c)?h[c]:f[c]:c.value;s?k(S)&&hr(S,o):k(S)?S.includes(o)||S.push(o):g?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else g?(f[c]=i,Y(h,c)&&(h[c]=i)):w&&(c.value=i,e.k&&(f[e.k]=i))};i?(E.id=-1,pe(E,n)):E()}}}let Ue=!1;const nn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",rn=e=>e.nodeType===8;function Yl(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(m,y)=>{if(!y.hasChildNodes()){n(null,m,y),mn(),y._vnode=m;return}Ue=!1,h(y.firstChild,m,null,null,null),mn(),y._vnode=m,Ue&&console.error("Hydration completed but contains mismatches.")},h=(m,y,N,A,B,W=!1)=>{const D=rn(m)&&m.data==="[",_=()=>S(m,y,N,A,B,D),{type:P,ref:I,shapeFlag:V,patchFlag:M}=y;let q=m.nodeType;y.el=m,M===-2&&(W=!1,y.dynamicChildren=null);let L=null;switch(P){case wt:q!==3?y.children===""?(c(y.el=s(""),i(m),m),L=m):L=_():(m.data!==y.children&&(Ue=!0,m.data=y.children),L=o(m));break;case ve:q!==8||D?L=_():L=o(m);break;case Nt:if(D&&(m=o(m),q=m.nodeType),q===1||q===3){L=m;const _e=!y.children.length;for(let X=0;X{W=W||!!y.dynamicChildren;const{type:D,props:_,patchFlag:P,shapeFlag:I,dirs:V}=y,M=D==="input"&&V||D==="option";if(M||P!==-1){if(V&&Fe(y,null,N,"created"),_)if(M||!W||P&48)for(const L in _)(M&&L.endsWith("value")||Vt(L)&&!Mt(L))&&r(m,L,null,_[L],!1,void 0,N);else _.onClick&&r(m,"onClick",null,_.onClick,!1,void 0,N);let q;if((q=_&&_.onVnodeBeforeMount)&&Ce(q,N,y),V&&Fe(y,null,N,"beforeMount"),((q=_&&_.onVnodeMounted)||V)&&fo(()=>{q&&Ce(q,N,y),V&&Fe(y,null,N,"mounted")},A),I&16&&!(_&&(_.innerHTML||_.textContent))){let L=w(m.firstChild,y,m,N,A,B,W);for(;L;){Ue=!0;const _e=L;L=L.nextSibling,l(_e)}}else I&8&&m.textContent!==y.children&&(Ue=!0,m.textContent=y.children)}return m.nextSibling},w=(m,y,N,A,B,W,D)=>{D=D||!!y.dynamicChildren;const _=y.children,P=_.length;for(let I=0;I{const{slotScopeIds:D}=y;D&&(B=B?B.concat(D):D);const _=i(m),P=w(o(m),y,_,N,A,B,W);return P&&rn(P)&&P.data==="]"?o(y.anchor=P):(Ue=!0,c(y.anchor=a("]"),_,P),P)},S=(m,y,N,A,B,W)=>{if(Ue=!0,y.el=null,W){const P=$(m);for(;;){const I=o(m);if(I&&I!==P)l(I);else break}}const D=o(m),_=i(m);return l(m),n(null,y,_,D,N,A,nn(_),B),D},$=m=>{let y=0;for(;m;)if(m=o(m),m&&rn(m)&&(m.data==="["&&y++,m.data==="]")){if(y===0)return o(m);y--}return m};return[f,h]}const pe=fo;function Jl(e){return Ro(e)}function Xl(e){return Ro(e,Yl)}function Ro(e,t){const n=Xn();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:g,setScopeId:w=Re,insertStaticContent:E}=e,S=(u,d,p,v=null,b=null,T=null,R=!1,x=null,O=!!d.dynamicChildren)=>{if(u===d)return;u&&!rt(u,d)&&(v=Jt(u),Pe(u,b,T,!0),u=null),d.patchFlag===-2&&(O=!1,d.dynamicChildren=null);const{type:C,ref:H,shapeFlag:F}=d;switch(C){case wt:$(u,d,p,v);break;case ve:m(u,d,p,v);break;case Nt:u==null&&y(d,p,v,R);break;case ge:M(u,d,p,v,b,T,R,x,O);break;default:F&1?B(u,d,p,v,b,T,R,x,O):F&6?q(u,d,p,v,b,T,R,x,O):(F&64||F&128)&&C.process(u,d,p,v,b,T,R,x,O,ut)}H!=null&&b&&vn(H,u&&u.ref,T,d||u,!d)},$=(u,d,p,v)=>{if(u==null)r(d.el=l(d.children),p,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},m=(u,d,p,v)=>{u==null?r(d.el=c(d.children||""),p,v):d.el=u.el},y=(u,d,p,v)=>{[u.el,u.anchor]=E(u.children,d,p,v,u.el,u.anchor)},N=({el:u,anchor:d},p,v)=>{let b;for(;u&&u!==d;)b=g(u),r(u,p,v),u=b;r(d,p,v)},A=({el:u,anchor:d})=>{let p;for(;u&&u!==d;)p=g(u),s(u),u=p;s(d)},B=(u,d,p,v,b,T,R,x,O)=>{R=R||d.type==="svg",u==null?W(d,p,v,b,T,R,x,O):P(u,d,b,T,R,x,O)},W=(u,d,p,v,b,T,R,x)=>{let O,C;const{type:H,props:F,shapeFlag:j,transition:U,dirs:z}=u;if(O=u.el=i(u.type,T,F&&F.is,F),j&8?f(O,u.children):j&16&&_(u.children,O,null,v,b,T&&H!=="foreignObject",R,x),z&&Fe(u,null,v,"created"),D(O,u,u.scopeId,R,v),F){for(const Q in F)Q!=="value"&&!Mt(Q)&&o(O,Q,null,F[Q],T,u.children,v,b,$e);"value"in F&&o(O,"value",null,F.value),(C=F.onVnodeBeforeMount)&&Ce(C,v,u)}z&&Fe(u,null,v,"beforeMount");const G=(!b||b&&!b.pendingBranch)&&U&&!U.persisted;G&&U.beforeEnter(O),r(O,d,p),((C=F&&F.onVnodeMounted)||G||z)&&pe(()=>{C&&Ce(C,v,u),G&&U.enter(O),z&&Fe(u,null,v,"mounted")},b)},D=(u,d,p,v,b)=>{if(p&&w(u,p),v)for(let T=0;T{for(let C=O;C{const x=d.el=u.el;let{patchFlag:O,dynamicChildren:C,dirs:H}=d;O|=u.patchFlag&16;const F=u.props||te,j=d.props||te;let U;p&&Ge(p,!1),(U=j.onVnodeBeforeUpdate)&&Ce(U,p,d,u),H&&Fe(d,u,p,"beforeUpdate"),p&&Ge(p,!0);const z=b&&d.type!=="foreignObject";if(C?I(u.dynamicChildren,C,x,p,v,z,T):R||Z(u,d,x,null,p,v,z,T,!1),O>0){if(O&16)V(x,d,F,j,p,v,b);else if(O&2&&F.class!==j.class&&o(x,"class",null,j.class,b),O&4&&o(x,"style",F.style,j.style,b),O&8){const G=d.dynamicProps;for(let Q=0;Q{U&&Ce(U,p,d,u),H&&Fe(d,u,p,"updated")},v)},I=(u,d,p,v,b,T,R)=>{for(let x=0;x{if(p!==v){if(p!==te)for(const x in p)!Mt(x)&&!(x in v)&&o(u,x,p[x],null,R,d.children,b,T,$e);for(const x in v){if(Mt(x))continue;const O=v[x],C=p[x];O!==C&&x!=="value"&&o(u,x,C,O,R,d.children,b,T,$e)}"value"in v&&o(u,"value",p.value,v.value)}},M=(u,d,p,v,b,T,R,x,O)=>{const C=d.el=u?u.el:l(""),H=d.anchor=u?u.anchor:l("");let{patchFlag:F,dynamicChildren:j,slotScopeIds:U}=d;U&&(x=x?x.concat(U):U),u==null?(r(C,p,v),r(H,p,v),_(d.children,p,H,b,T,R,x,O)):F>0&&F&64&&j&&u.dynamicChildren?(I(u.dynamicChildren,j,p,b,T,R,x),(d.key!=null||b&&d===b.subTree)&&Lr(u,d,!0)):Z(u,d,p,H,b,T,R,x,O)},q=(u,d,p,v,b,T,R,x,O)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,p,v,R,O):L(d,p,v,b,T,R,O):_e(u,d,O)},L=(u,d,p,v,b,T,R)=>{const x=u.component=lc(u,v,b);if(zt(u)&&(x.ctx.renderer=ut),cc(x),x.asyncDep){if(b&&b.registerDep(x,X),!u.el){const O=x.subTree=se(ve);m(null,O,d,p)}return}X(x,u,d,p,b,T,R)},_e=(u,d,p)=>{const v=d.component=u.component;if(ml(u,d,p))if(v.asyncDep&&!v.asyncResolved){ne(v,d,p);return}else v.next=d,al(v.update),v.update();else d.el=u.el,v.vnode=d},X=(u,d,p,v,b,T,R)=>{const x=()=>{if(u.isMounted){let{next:H,bu:F,u:j,parent:U,vnode:z}=u,G=H,Q;Ge(u,!1),H?(H.el=z.el,ne(u,H,R)):H=z,F&&un(F),(Q=H.props&&H.props.onVnodeBeforeUpdate)&&Ce(Q,U,H,z),Ge(u,!0);const oe=Bn(u),Te=u.subTree;u.subTree=oe,S(Te,oe,h(Te.el),Jt(Te),u,b,T),H.el=oe.el,G===null&&_l(u,oe.el),j&&pe(j,b),(Q=H.props&&H.props.onVnodeUpdated)&&pe(()=>Ce(Q,U,H,z),b)}else{let H;const{el:F,props:j}=d,{bm:U,m:z,parent:G}=u,Q=yt(d);if(Ge(u,!1),U&&un(U),!Q&&(H=j&&j.onVnodeBeforeMount)&&Ce(H,G,d),Ge(u,!0),F&&Dn){const oe=()=>{u.subTree=Bn(u),Dn(F,u.subTree,u,b,null)};Q?d.type.__asyncLoader().then(()=>!u.isUnmounted&&oe()):oe()}else{const oe=u.subTree=Bn(u);S(null,oe,p,v,u,b,T),d.el=oe.el}if(z&&pe(z,b),!Q&&(H=j&&j.onVnodeMounted)){const oe=d;pe(()=>Ce(H,G,oe),b)}(d.shapeFlag&256||G&&yt(G.vnode)&&G.vnode.shapeFlag&256)&&u.a&&pe(u.a,b),u.isMounted=!0,d=p=v=null}},O=u.effect=new br(x,()=>Rn(C),u.scope),C=u.update=()=>O.run();C.id=u.uid,Ge(u,!0),C()},ne=(u,d,p)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,Wl(u,d.props,v,p),zl(u,d.children,p),xt(),Zr(),Tt()},Z=(u,d,p,v,b,T,R,x,O=!1)=>{const C=u&&u.children,H=u?u.shapeFlag:0,F=d.children,{patchFlag:j,shapeFlag:U}=d;if(j>0){if(j&128){Yt(C,F,p,v,b,T,R,x,O);return}else if(j&256){Qe(C,F,p,v,b,T,R,x,O);return}}U&8?(H&16&&$e(C,b,T),F!==C&&f(p,F)):H&16?U&16?Yt(C,F,p,v,b,T,R,x,O):$e(C,b,T,!0):(H&8&&f(p,""),U&16&&_(F,p,v,b,T,R,x,O))},Qe=(u,d,p,v,b,T,R,x,O)=>{u=u||pt,d=d||pt;const C=u.length,H=d.length,F=Math.min(C,H);let j;for(j=0;jH?$e(u,b,T,!0,!1,F):_(d,p,v,b,T,R,x,O,F)},Yt=(u,d,p,v,b,T,R,x,O)=>{let C=0;const H=d.length;let F=u.length-1,j=H-1;for(;C<=F&&C<=j;){const U=u[C],z=d[C]=O?Ve(d[C]):Ae(d[C]);if(rt(U,z))S(U,z,p,null,b,T,R,x,O);else break;C++}for(;C<=F&&C<=j;){const U=u[F],z=d[j]=O?Ve(d[j]):Ae(d[j]);if(rt(U,z))S(U,z,p,null,b,T,R,x,O);else break;F--,j--}if(C>F){if(C<=j){const U=j+1,z=Uj)for(;C<=F;)Pe(u[C],b,T,!0),C++;else{const U=C,z=C,G=new Map;for(C=z;C<=j;C++){const ye=d[C]=O?Ve(d[C]):Ae(d[C]);ye.key!=null&&G.set(ye.key,C)}let Q,oe=0;const Te=j-z+1;let ft=!1,kr=0;const St=new Array(Te);for(C=0;C=Te){Pe(ye,b,T,!0);continue}let Me;if(ye.key!=null)Me=G.get(ye.key);else for(Q=z;Q<=j;Q++)if(St[Q-z]===0&&rt(ye,d[Q])){Me=Q;break}Me===void 0?Pe(ye,b,T,!0):(St[Me-z]=C+1,Me>=kr?kr=Me:ft=!0,S(ye,d[Me],p,null,b,T,R,x,O),oe++)}const Ur=ft?Ql(St):pt;for(Q=Ur.length-1,C=Te-1;C>=0;C--){const ye=z+C,Me=d[ye],Kr=ye+1{const{el:T,type:R,transition:x,children:O,shapeFlag:C}=u;if(C&6){Ze(u.component.subTree,d,p,v);return}if(C&128){u.suspense.move(d,p,v);return}if(C&64){R.move(u,d,p,ut);return}if(R===ge){r(T,d,p);for(let F=0;Fx.enter(T),b);else{const{leave:F,delayLeave:j,afterLeave:U}=x,z=()=>r(T,d,p),G=()=>{F(T,()=>{z(),U&&U()})};j?j(T,z,G):G()}else r(T,d,p)},Pe=(u,d,p,v=!1,b=!1)=>{const{type:T,props:R,ref:x,children:O,dynamicChildren:C,shapeFlag:H,patchFlag:F,dirs:j}=u;if(x!=null&&vn(x,null,p,u,!0),H&256){d.ctx.deactivate(u);return}const U=H&1&&j,z=!yt(u);let G;if(z&&(G=R&&R.onVnodeBeforeUnmount)&&Ce(G,d,u),H&6)ii(u.component,p,v);else{if(H&128){u.suspense.unmount(p,v);return}U&&Fe(u,null,d,"beforeUnmount"),H&64?u.type.remove(u,d,p,b,ut,v):C&&(T!==ge||F>0&&F&64)?$e(C,d,p,!1,!0):(T===ge&&F&384||!b&&H&16)&&$e(O,d,p),v&&Dr(u)}(z&&(G=R&&R.onVnodeUnmounted)||U)&&pe(()=>{G&&Ce(G,d,u),U&&Fe(u,null,d,"unmounted")},p)},Dr=u=>{const{type:d,el:p,anchor:v,transition:b}=u;if(d===ge){oi(p,v);return}if(d===Nt){A(u);return}const T=()=>{s(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:R,delayLeave:x}=b,O=()=>R(p,T);x?x(u.el,T,O):O()}else T()},oi=(u,d)=>{let p;for(;u!==d;)p=g(u),s(u),u=p;s(d)},ii=(u,d,p)=>{const{bum:v,scope:b,update:T,subTree:R,um:x}=u;v&&un(v),b.stop(),T&&(T.active=!1,Pe(R,u,d,p)),x&&pe(x,d),pe(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},$e=(u,d,p,v=!1,b=!1,T=0)=>{for(let R=T;Ru.shapeFlag&6?Jt(u.component.subTree):u.shapeFlag&128?u.suspense.next():g(u.anchor||u.el),Br=(u,d,p)=>{u==null?d._vnode&&Pe(d._vnode,null,null,!0):S(d._vnode||null,u,d,null,null,null,p),Zr(),mn(),d._vnode=u},ut={p:S,um:Pe,m:Ze,r:Dr,mt:L,mc:_,pc:Z,pbc:I,n:Jt,o:e};let jn,Dn;return t&&([jn,Dn]=t(ut)),{render:Br,hydrate:jn,createApp:kl(Br,jn)}}function Ge({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Lr(e,t,n=!1){const r=e.children,s=t.children;if(k(r)&&k(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}const Zl=e=>e.__isTeleport,Lt=e=>e&&(e.disabled||e.disabled===""),us=e=>typeof SVGElement<"u"&&e instanceof SVGElement,lr=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Gl={__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:g,o:{insert:w,querySelector:E,createText:S,createComment:$}}=a,m=Lt(t.props);let{shapeFlag:y,children:N,dynamicChildren:A}=t;if(e==null){const B=t.el=S(""),W=t.anchor=S("");w(B,n,r),w(W,n,r);const D=t.target=lr(t.props,E),_=t.targetAnchor=S("");D&&(w(_,D),i=i||us(D));const P=(I,V)=>{y&16&&f(N,I,V,s,o,i,l,c)};m?P(n,W):D&&P(D,_)}else{t.el=e.el;const B=t.anchor=e.anchor,W=t.target=e.target,D=t.targetAnchor=e.targetAnchor,_=Lt(e.props),P=_?n:W,I=_?B:D;if(i=i||us(W),A?(g(e.dynamicChildren,A,P,s,o,i,l),Lr(e,t,!0)):c||h(e,t,P,I,s,o,i,l,!1),m)_||sn(t,n,B,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const V=t.target=lr(t.props,E);V&&sn(t,V,null,a,0)}else _&&sn(t,W,D,a,1)}Po(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:g}=e;if(h&&o(f),(i||!Lt(g))&&(o(a),l&16))for(let w=0;w0?Oe||pt:null,tc(),Ut>0&&Oe&&Oe.push(e),e}function za(e,t,n,r,s,o){return Fo(No(e,t,n,r,s,o,!0))}function Io(e,t,n,r,s){return Fo(se(e,t,n,r,s,!0))}function wn(e){return e?e.__v_isVNode===!0:!1}function rt(e,t){return e.type===t.type&&e.key===t.key}const Nn="__vInternal",Lo=({key:e})=>e??null,fn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ce(e)||K(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function No(e,t=null,n=null,r=0,s=null,o=e===ge?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Lo(t),ref:t&&fn(t),scopeId:Mn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:fe};return l?(Nr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Ut>0&&!i&&Oe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Oe.push(c),c}const se=nc;function nc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===bo)&&(e=ve),wn(e)){const l=Xe(e,t,!0);return n&&Nr(l,n),Ut>0&&!o&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(dc(e)&&(e=e.__vccOpts),t){t=rc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=_r(l)),ee(c)&&(ro(c)&&!k(c)&&(c=ie({},c)),t.style=mr(c))}const i=re(e)?1:yl(e)?128:Zl(e)?64:ee(e)?4:K(e)?2:0;return No(e,t,n,r,s,i,o,!0)}function rc(e){return e?ro(e)||Nn in e?ie({},e):e:null}function Xe(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:i}=e,l=t?sc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Lo(l),ref:t&&t.ref?n&&s?k(s)?s.concat(fn(t)):[s,fn(t)]:fn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xe(e.ssContent),ssFallback:e.ssFallback&&Xe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function $o(e=" ",t=0){return se(wt,null,e,t)}function Ya(e,t){const n=se(Nt,null,e);return n.staticCount=t,n}function Ja(e="",t=!1){return t?(Mo(),Io(ve,null,e)):se(ve,null,e)}function Ae(e){return e==null||typeof e=="boolean"?se(ve):k(e)?se(ge,null,e.slice()):typeof e=="object"?Ve(e):se(wt,null,String(e))}function Ve(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xe(e)}function Nr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Nr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Nn in t)?t._ctx=fe:s===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),r&64?(n=16,t=[$o(t)]):n=8);e.children=t,e.shapeFlag|=n}function sc(...e){const t={};for(let n=0;nle||fe;let $r,dt,ds="__VUE_INSTANCE_SETTERS__";(dt=Xn()[ds])||(dt=Xn()[ds]=[]),dt.push(e=>le=e),$r=e=>{dt.length>1?dt.forEach(t=>t(e)):dt[0](e)};const Ct=e=>{$r(e),e.scope.on()},lt=()=>{le&&le.scope.off(),$r(null)};function Ho(e){return e.vnode.shapeFlag&4}let Et=!1;function cc(e,t=!1){Et=t;const{props:n,children:r}=e.vnode,s=Ho(e);Kl(e,n,s,t),ql(e,r);const o=s?ac(e,t):void 0;return Et=!1,o}function ac(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ft(new Proxy(e.ctx,Il));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Do(e):null;Ct(e),xt();const o=ze(r,e,0,[e.props,s]);if(Tt(),lt(),ks(o)){if(o.then(lt,lt),t)return o.then(i=>{hs(e,i,t)}).catch(i=>{qt(i,e,0)});e.asyncDep=o}else hs(e,o,t)}else jo(e,t)}function hs(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ee(t)&&(e.setupState=io(t)),jo(e,n)}let ps;function jo(e,t,n){const r=e.type;if(!e.render){if(!t&&ps&&!r.render){const s=r.template||Fr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ie(ie({isCustomElement:o,delimiters:l},i),c);r.render=ps(s,a)}}e.render=r.render||Re}Ct(e),xt(),Nl(e),Tt(),lt()}function uc(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return me(e,"get","$attrs"),t[n]}}))}function Do(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return uc(e)},slots:e.slots,emit:e.emit,expose:t}}function Hn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(io(Ft(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}}))}function fc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function dc(e){return K(e)&&"__vccOpts"in e}const ue=(e,t)=>il(e,t,Et);function cr(e,t,n){const r=arguments.length;return r===2?ee(t)&&!k(t)?wn(t)?se(e,null,[t]):se(e,t):se(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&wn(n)&&(n=[n]),se(e,t,n))}const hc=Symbol.for("v-scx"),pc=()=>bt(hc),gc="3.3.1",mc="http://www.w3.org/2000/svg",st=typeof document<"u"?document:null,gs=st&&st.createElement("template"),_c={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t?st.createElementNS(mc,e):st.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{gs.innerHTML=r?`${e}`:e;const l=gs.content;if(r){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function yc(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function bc(e,t,n){const r=e.style,s=re(n);if(n&&!s){if(t&&!re(t))for(const o in t)n[o]==null&&ar(r,o,"");for(const o in n)ar(r,o,n[o])}else{const o=r.display;s?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=o)}}const ms=/\s*!important$/;function ar(e,t,n){if(k(n))n.forEach(r=>ar(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=vc(e,t);ms.test(n)?e.setProperty(at(r),n.replace(ms,""),"important"):e[r]=n}}const _s=["Webkit","Moz","ms"],Wn={};function vc(e,t){const n=Wn[t];if(n)return n;let r=Ne(t);if(r!=="filter"&&r in e)return Wn[t]=r;r=xn(r);for(let s=0;s<_s.length;s++){const o=_s[s]+r;if(o in e)return Wn[t]=o}return t}const ys="http://www.w3.org/1999/xlink";function wc(e,t,n,r,s){if(r&&t.startsWith("xlink:"))n==null?e.removeAttributeNS(ys,t.slice(6,t.length)):e.setAttributeNS(ys,t,n);else{const o=bi(t);n==null||o&&!Ws(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}function Cc(e,t,n,r,s,o,i){if(t==="innerHTML"||t==="textContent"){r&&i(r,s,o),e[t]=n??"";return}const l=e.tagName;if(t==="value"&&l!=="PROGRESS"&&!l.includes("-")){e._value=n;const a=l==="OPTION"?e.getAttribute("value"):e.value,f=n??"";a!==f&&(e.value=f),n==null&&e.removeAttribute(t);return}let c=!1;if(n===""||n==null){const a=typeof e[t];a==="boolean"?n=Ws(n):n==null&&a==="string"?(n="",c=!0):a==="number"&&(n=0,c=!0)}try{e[t]=n}catch{}c&&e.removeAttribute(t)}function ht(e,t,n,r){e.addEventListener(t,n,r)}function Ec(e,t,n,r){e.removeEventListener(t,n,r)}function xc(e,t,n,r,s=null){const o=e._vei||(e._vei={}),i=o[t];if(r&&i)i.value=r;else{const[l,c]=Tc(t);if(r){const a=o[t]=Oc(r,s);ht(e,l,a,c)}else i&&(Ec(e,l,i,c),o[t]=void 0)}}const bs=/(?:Once|Passive|Capture)$/;function Tc(e){let t;if(bs.test(e)){t={};let r;for(;r=e.match(bs);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):at(e.slice(2)),t]}let Vn=0;const Ac=Promise.resolve(),Sc=()=>Vn||(Ac.then(()=>Vn=0),Vn=Date.now());function Oc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;xe(Rc(r,n.value),t,5,[r])};return n.value=e,n.attached=Sc(),n}function Rc(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const vs=/^on[a-z]/,Pc=(e,t,n,r,s=!1,o,i,l,c)=>{t==="class"?yc(e,r,s):t==="style"?bc(e,n,r):Vt(t)?dr(t)||xc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Mc(e,t,r,s))?Cc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),wc(e,t,r,s))};function Mc(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&vs.test(t)&&K(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||vs.test(t)&&re(n)?!1:t in e}const Ke="transition",Ot="animation",Bo=(e,{slots:t})=>cr(Cl,Fc(e),t);Bo.displayName="Transition";const ko={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Bo.props=ie({},po,ko);const et=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},ws=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Fc(e){const t={};for(const M in e)M in ko||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:w=`${n}-leave-to`}=e,E=Ic(s),S=E&&E[0],$=E&&E[1],{onBeforeEnter:m,onEnter:y,onEnterCancelled:N,onLeave:A,onLeaveCancelled:B,onBeforeAppear:W=m,onAppear:D=y,onAppearCancelled:_=N}=t,P=(M,q,L)=>{tt(M,q?f:l),tt(M,q?a:i),L&&L()},I=(M,q)=>{M._isLeaving=!1,tt(M,h),tt(M,w),tt(M,g),q&&q()},V=M=>(q,L)=>{const _e=M?D:y,X=()=>P(q,M,L);et(_e,[q,X]),Cs(()=>{tt(q,M?c:o),We(q,M?f:l),ws(_e)||Es(q,r,S,X)})};return ie(t,{onBeforeEnter(M){et(m,[M]),We(M,o),We(M,i)},onBeforeAppear(M){et(W,[M]),We(M,c),We(M,a)},onEnter:V(!1),onAppear:V(!0),onLeave(M,q){M._isLeaving=!0;const L=()=>I(M,q);We(M,h),$c(),We(M,g),Cs(()=>{M._isLeaving&&(tt(M,h),We(M,w),ws(A)||Es(M,r,$,L))}),et(A,[M,L])},onEnterCancelled(M){P(M,!1),et(N,[M])},onAppearCancelled(M){P(M,!0),et(_,[M])},onLeaveCancelled(M){I(M),et(B,[M])}})}function Ic(e){if(e==null)return null;if(ee(e))return[qn(e.enter),qn(e.leave)];{const t=qn(e);return[t,t]}}function qn(e){return hi(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function tt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Cs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Lc=0;function Es(e,t,n,r){const s=e._endId=++Lc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Nc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,g),o()},g=w=>{w.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[E]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=xs(s,o),l=r(`${Ot}Delay`),c=r(`${Ot}Duration`),a=xs(l,c);let f=null,h=0,g=0;t===Ke?i>0&&(f=Ke,h=i,g=o.length):t===Ot?a>0&&(f=Ot,h=a,g=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Ot:null,g=f?f===Ke?o.length:c.length:0);const w=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:g,hasTransform:w}}function xs(e,t){for(;e.lengthTs(n)+Ts(e[r])))}function Ts(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function $c(){return document.body.offsetHeight}const As=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>un(t,n):t};function Hc(e){e.target.composing=!0}function Ss(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Xa={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e._assign=As(s);const o=r||s.props&&s.props.type==="number";ht(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=Jn(l)),e._assign(l)}),n&&ht(e,"change",()=>{e.value=e.value.trim()}),t||(ht(e,"compositionstart",Hc),ht(e,"compositionend",Ss),ht(e,"change",Ss))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e._assign=As(o),e.composing||document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===t||(s||e.type==="number")&&Jn(e.value)===t))return;const i=t??"";e.value!==i&&(e.value=i)}},jc=["ctrl","shift","alt","meta"],Dc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>jc.some(n=>e[`${n}Key`]&&!t.includes(n))},Qa=(e,t)=>(n,...r)=>{for(let s=0;sn=>{if(!("key"in n))return;const r=at(n.key);if(t.some(s=>s===r||Bc[s]===r))return e(n)},Uo=ie({patchProp:Pc},_c);let Ht,Os=!1;function kc(){return Ht||(Ht=Jl(Uo))}function Uc(){return Ht=Os?Ht:Xl(Uo),Os=!0,Ht}const Ga=(...e)=>{const t=kc().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ko(r);if(!s)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},eu=(...e)=>{const t=Uc().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ko(r);if(s)return n(s,!0,s instanceof SVGElement)},t};function Ko(e){return re(e)?document.querySelector(e):e}const tu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Kc="modulepreload",Wc=function(e){return"/"+e},Rs={},nu=function(t,n,r){if(!n||n.length===0)return t();const s=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=Wc(o),o in Rs)return;Rs[o]=!0;const i=o.endsWith(".css"),l=i?'[rel="stylesheet"]':"";if(!!r)for(let f=s.length-1;f>=0;f--){const h=s[f];if(h.href===o&&(!i||h.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${l}`))return;const a=document.createElement("link");if(a.rel=i?"stylesheet":Kc,i||(a.as="script",a.crossOrigin=""),a.href=o,document.head.appendChild(a),i)return new Promise((f,h)=>{a.addEventListener("load",f),a.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},Vc=window.__VP_SITE_DATA__;function Hr(e){return qs()?(Ci(e),!0):!1}function Le(e){return typeof e=="function"?e():oo(e)}const Wo=typeof window<"u"&&typeof document<"u",qc=Object.prototype.toString,zc=e=>qc.call(e)==="[object Object]",Kt=()=>{},Ps=Yc();function Yc(){var e;return Wo&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function Jc(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const Vo=e=>e();function Xc(e,t={}){let n,r,s=Kt;const o=l=>{clearTimeout(l),s(),s=Kt};return l=>{const c=Le(e),a=Le(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function Qc(e=Vo){const t=ae(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Sn(t),pause:n,resume:r,eventFilter:s}}function qo(...e){if(e.length!==1)return rl(...e);const t=e[0];return typeof t=="function"?Sn(el(()=>({get:t,set:Kt}))):ae(t)}function zo(e,t,n={}){const{eventFilter:r=Vo,...s}=n;return Ye(e,Jc(r,t),s)}function Zc(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=Qc(r);return{stop:zo(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Gc(e,t=!0){$n()?At(e):t?e():On(e)}function ru(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return zo(e,t,{...o,eventFilter:Xc(r,{maxWait:s})})}function su(e,t,n){let r;ce(n)?r={evaluating:n}:r=n||{};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Kt}=r,c=ae(!s),a=i?Sr(t):ae(t);let f=0;return Rr(async h=>{if(!c.value)return;f++;const g=f;let w=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const E=await e(S=>{h(()=>{o&&(o.value=!1),w||S()})});g===f&&(a.value=E)}catch(E){l(E)}finally{o&&g===f&&(o.value=!1),w=!0}}),s?ue(()=>(c.value=!0,a.value)):a}function Yo(e){var t;const n=Le(e);return(t=n==null?void 0:n.$el)!=null?t:n}const De=Wo?window:void 0;function Wt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=De):[t,n,r,s]=e,!t)return Kt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,g,w)=>(f.addEventListener(h,g,w),()=>f.removeEventListener(h,g,w)),c=Ye(()=>[Yo(t),Le(s)],([f,h])=>{if(i(),!f)return;const g=zc(h)?{...h}:h;o.push(...n.flatMap(w=>r.map(E=>l(f,w,E,g))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Hr(a),a}function ea(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function ou(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=De,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=ea(t);return Wt(s,o,f=>{f.repeat&&Le(l)||c(f)&&n(f)},i)}function ta(){const e=ae(!1);return $n()&&At(()=>{e.value=!0}),e}function na(e){const t=ta();return ue(()=>(t.value,!!e()))}function ra(e,t={}){const{window:n=De}=t,r=na(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=ae(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Rr(()=>{r.value&&(l(),s=n.matchMedia(Le(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return Hr(()=>{c(),l(),s=void 0}),o}const on=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ln="__vueuse_ssr_handlers__",sa=oa();function oa(){return ln in on||(on[ln]=on[ln]||{}),on[ln]}function Jo(e,t){return sa[e]||t}function ia(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const la={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ms="vueuse-storage";function jr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=De,eventFilter:g,onError:w=_=>{console.error(_)}}=r,E=(f?Sr:ae)(t);if(!n)try{n=Jo("getDefaultStorage",()=>{var _;return(_=De)==null?void 0:_.localStorage})()}catch(_){w(_)}if(!n)return E;const S=Le(t),$=ia(S),m=(s=r.serializer)!=null?s:la[$],{pause:y,resume:N}=Zc(E,()=>A(E.value),{flush:o,deep:i,eventFilter:g});return h&&l&&(Wt(h,"storage",D),Wt(h,Ms,W)),D(),E;function A(_){try{if(_==null)n.removeItem(e);else{const P=m.write(_),I=n.getItem(e);I!==P&&(n.setItem(e,P),h&&h.dispatchEvent(new CustomEvent(Ms,{detail:{key:e,oldValue:I,newValue:P,storageArea:n}})))}}catch(P){w(P)}}function B(_){const P=_?_.newValue:n.getItem(e);if(P==null)return c&&S!==null&&n.setItem(e,m.write(S)),S;if(!_&&a){const I=m.read(P);return typeof a=="function"?a(I,S):$==="object"&&!Array.isArray(I)?{...S,...I}:I}else return typeof P!="string"?P:m.read(P)}function W(_){D(_.detail)}function D(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){E.value=S;return}if(!(_&&_.key!==e)){y();try{(_==null?void 0:_.newValue)!==m.write(E.value)&&(E.value=B(_))}catch(P){w(P)}finally{_?On(N):N()}}}}}function ca(e){return ra("(prefers-color-scheme: dark)",e)}function aa(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=De,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},g=ca({window:s}),w=ue(()=>g.value?"dark":"light"),E=c||(i==null?qo(r):jr(i,r,o,{window:s,listenToStorageChanges:l})),S=ue(()=>E.value==="auto"?w.value:E.value),$=Jo("updateHTMLAttrs",(A,B,W)=>{const D=typeof A=="string"?s==null?void 0:s.document.querySelector(A):Yo(A);if(!D)return;let _;if(f){_=s.document.createElement("style");const P="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";_.appendChild(document.createTextNode(P)),s.document.head.appendChild(_)}if(B==="class"){const P=W.split(/\s/g);Object.values(h).flatMap(I=>(I||"").split(/\s/g)).filter(Boolean).forEach(I=>{P.includes(I)?D.classList.add(I):D.classList.remove(I)})}else D.setAttribute(B,W);f&&(s.getComputedStyle(_).opacity,document.head.removeChild(_))});function m(A){var B;$(t,n,(B=h[A])!=null?B:A)}function y(A){e.onChanged?e.onChanged(A,m):m(A)}Ye(S,y,{flush:"post",immediate:!0}),Gc(()=>y(S.value));const N=ue({get(){return a?E.value:S.value},set(A){E.value=A}});try{return Object.assign(N,{store:E,system:w,state:S})}catch{return N}}function ua(e={}){const{valueDark:t="dark",valueLight:n=""}=e,r=aa({...e,onChanged:(o,i)=>{var l;e.onChanged?(l=e.onChanged)==null||l.call(e,o==="dark",i,o):i(o)},modes:{dark:t,light:n}});return ue({get(){return r.value==="dark"},set(o){const i=o?"dark":"light";r.system.value===i?r.value="auto":r.value=i}})}function zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function iu(e,t,n={}){const{window:r=De}=n;return jr(e,t,r==null?void 0:r.localStorage,n)}function Xo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function lu(e,t=!1){const n=ae(t);let r=null,s;Ye(qo(e),l=>{const c=zn(Le(l));if(c){const a=c;s=a.style.overflow,n.value&&(a.style.overflow="hidden")}},{immediate:!0});const o=()=>{const l=zn(Le(e));!l||n.value||(Ps&&(r=Wt(l,"touchmove",c=>{fa(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=zn(Le(e));!l||!n.value||(Ps&&(r==null||r()),l.style.overflow=s,n.value=!1)};return Hr(i),ue({get(){return n.value},set(l){l?o():i()}})}function cu(e,t,n={}){const{window:r=De}=n;return jr(e,t,r==null?void 0:r.sessionStorage,n)}function au({window:e=De}={}){if(!e)return{x:ae(0),y:ae(0)};const t=ae(e.scrollX),n=ae(e.scrollY);return Wt(e,"scroll",()=>{t.value=e.scrollX,n.value=e.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}const Qo=/^[a-z]+:/i,da="vitepress-theme-appearance",Zo=/#.*$/,ha=/(index)?\.(md|html)$/,Ee=typeof document<"u",Go={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function pa(e,t,n=!1){if(t===void 0)return!1;if(e=Fs(`/${e}`),n)return new RegExp(t).test(e);if(Fs(t)!==e)return!1;const r=t.match(Zo);return r?(Ee?location.hash:"")===r[0]:!0}function Fs(e){return decodeURI(e).replace(Zo,"").replace(ha,"")}function ga(e){return Qo.test(e)}function ma(e,t){var r,s,o,i,l,c,a;const n=Object.keys(e.locales).find(f=>f!=="root"&&!ga(f)&&pa(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:ti(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function ei(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=_a(e.title,r);return`${n}${s}`}function _a(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ya(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function ti(e,t){return[...e.filter(n=>!ya(t,n)),...t]}const ba=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,va=/^[a-z]:/i;function Is(e){const t=va.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(ba,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const wa=Symbol(),ct=Sr(Vc);function uu(e){const t=ue(()=>ma(ct.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?ae(!0):n?ua({storageKey:da,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):ae(!1);return{site:t,theme:ue(()=>t.value.themeConfig),page:ue(()=>e.data),frontmatter:ue(()=>e.data.frontmatter),params:ue(()=>e.data.params),lang:ue(()=>t.value.lang),dir:ue(()=>t.value.dir),localeIndex:ue(()=>t.value.localeIndex||"root"),title:ue(()=>ei(t.value,e.data)),description:ue(()=>e.data.description||t.value.description),isDark:r}}function Ca(){const e=bt(wa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ea(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ls(e){return Qo.test(e)||!e.startsWith("/")?e:Ea(ct.value.base,e)}function xa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ee){const n="/";t=Is(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Is(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let dn=[];function fu(e){dn.push(e),Ln(()=>{dn=dn.filter(t=>t!==e)})}const Ta=Symbol(),ni="http://a.com",Aa=()=>({path:"/",component:null,data:Go});function du(e,t){const n=An(Aa()),r={route:n,go:s};async function s(l=Ee?location.href:"/"){var c,a;l=ur(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(Hs(l),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var g;if(await((g=r.onBeforePageLoad)==null?void 0:g.call(r,l))===!1)return;const f=new URL(l,ni),h=o=f.pathname;try{let w=await e(h);if(!w)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:E,__pageData:S}=w;if(!E)throw new Error(`Invalid route component: ${E}`);n.path=Ee?h:Ls(h),n.component=Ft(E),n.data=Ft(S),Ee&&On(()=>{let $=ct.value.base+S.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ct.value.cleanUrls&&!$.endsWith("/")&&($+=".html"),$!==f.pathname&&(f.pathname=$,l=$+f.search+f.hash,history.replaceState(null,"",l)),f.hash&&!c){let m=null;try{m=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(y){console.warn(y)}if(m){Ns(m,f.hash);return}}window.scrollTo(0,c)})}}catch(w){if(!/fetch|Page not found/.test(w.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(w),!a)try{const E=await fetch(ct.value.base+"hashmap.json");window.__VP_HASH_MAP__=await E.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=Ee?h:Ls(h),n.component=t?Ft(t):null,n.data=Go)}}return Ee&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:g,pathname:w,hash:E,search:S}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),$=window.location,m=w.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&g===$.origin&&!(m&&m[0]!==".html")&&(l.preventDefault(),w===$.pathname&&S===$.search?(E!==$.hash&&(history.pushState(null,"",E),window.dispatchEvent(new Event("hashchange"))),E?Ns(a,E,a.classList.contains("header-anchor")):(Hs(h),window.scrollTo(0,0))):s(h))}},{capture:!0}),window.addEventListener("popstate",l=>{i(ur(location.href),l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Sa(){const e=bt(Ta);if(!e)throw new Error("useRouter() is called without provider.");return e}function ri(){return Sa().route}function Ns(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let a=function(){!n||Math.abs(c-window.scrollY)>window.innerHeight?window.scrollTo(0,c):window.scrollTo({left:0,top:c,behavior:"smooth"})},s=ct.value.scrollOffset,o=0,i=24;if(typeof s=="object"&&"padding"in s&&(i=s.padding,s=s.selector),typeof s=="number")o=s;else if(typeof s=="string")o=$s(s,i);else if(Array.isArray(s))for(const f of s){const h=$s(f,i);if(h){o=h;break}}const l=parseInt(window.getComputedStyle(r).paddingTop,10),c=window.scrollY+r.getBoundingClientRect().top-o+l;requestAnimationFrame(a)}}function $s(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}function Hs(e){Ee&&e!==ur(location.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}function ur(e){const t=new URL(e,ni);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ct.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const js=()=>dn.forEach(e=>e()),hu=Pr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=ri(),{site:n}=Ca();return()=>cr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?cr(t.component,{onVnodeMounted:js,onVnodeUpdated:js}):"404 Page Not Found"])}}),pu=Pr({setup(e,{slots:t}){const n=ae(!1);return At(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function gu(){Ee&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function mu(){if(Ee){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className);let l="";o.querySelectorAll("span.line:not(.diff.remove)").forEach(c=>l+=(c.textContent||"")+` +`),l=l.slice(0,-1),i&&(l=l.replace(/^ *(\$|>) /gm,"").trim()),Oa(l).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const c=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,c)})}})}}async function Oa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function _u(e,t){let n=[],r=!0;const s=o=>{if(r){r=!1;return}n.forEach(i=>document.head.removeChild(i)),n=[],o.forEach(i=>{const l=Ds(i);document.head.appendChild(l),n.push(l)})};Rr(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[];document.title=ei(i,o);const a=l||i.description;let f=document.querySelector("meta[name=description]");f?f.setAttribute("content",a):Ds(["meta",{name:"description",content:a}]),s(ti(i.head,Pa(c)))})}function Ds([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function Ra(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Pa(e){return e.filter(t=>!Ra(t))}const Yn=new Set,si=()=>document.createElement("link"),Ma=e=>{const t=si();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Fa=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let cn;const Ia=Ee&&(cn=si())&&cn.relList&&cn.relList.supports&&cn.relList.supports("prefetch")?Ma:Fa;function yu(){if(!Ee||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!Yn.has(c)){Yn.add(c);const a=xa(c);a&&Ia(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):Yn.add(l))})})};At(r);const s=ri();Ye(()=>s.path,r),Ln(()=>{n&&n.disconnect()})}export{Qa as $,Ha as A,Ol as B,Ba as C,Ua as D,Sr as E,ge as F,fu as G,se as H,ka as I,Qo as J,ri as K,sc as L,bt as M,mr as N,On as O,au as P,Ya as Q,Sn as R,ou as S,Bo as T,Da as U,nu as V,lu as W,Ul as X,Za as Y,Wa as Z,tu as _,$o as a,Va as a0,cr as a1,_u as a2,Ta as a3,uu as a4,wa as a5,hu as a6,pu as a7,ct as a8,eu as a9,du as aa,xa as ab,yu as ac,mu as ad,gu as ae,Yo as af,Hr as ag,su as ah,cu as ai,iu as aj,ru as ak,Sa as al,Wt as am,yo as an,ja as ao,Xa as ap,ce as aq,qa as ar,Ft as as,Ga as at,Io as b,za as c,Pr as d,Ja as e,Ls as f,ue as g,ae as h,ga as i,At as j,No as k,oo as l,$a as m,_r as n,Mo as o,Na as p,pa as q,Ka as r,Ee as s,La as t,Ca as u,ra as v,hl as w,Ye as x,Rr as y,Ln as z}; diff --git a/assets/chunks/theme.3ff32677.js b/assets/chunks/theme.3ff32677.js new file mode 100644 index 0000000..91c6a9f --- /dev/null +++ b/assets/chunks/theme.3ff32677.js @@ -0,0 +1 @@ +import{d as g,o as a,c as i,r as u,n as C,a as x,t as L,_ as m,b as k,w as v,T as ce,e as f,u as De,i as Ee,f as ue,g as P,h as I,j as K,k as c,l as r,p as H,m as z,q as j,s as W,v as le,x as q,y as te,z as de,A as we,B as Fe,C as R,F as T,D as A,E as _e,G as Y,H as h,I as U,J as Le,K as se,L as Z,M as ne,N as Oe,O as Ge,P as Se,Q as Ue,R as je,S as ye,U as Ke,V as qe,W as Me,X as Ne,Y as Re,Z as We,$ as Ye,a0 as Je}from"./framework.c4d6cd72.js";const Xe=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),i("span",{class:C(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[x(L(e.text),1)],!0)],2))}});const Ze=m(Xe,[["__scopeId","data-v-5ed9f191"]]),Qe={key:0,class:"VPBackdrop"},et=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),k(ce,{name:"fade"},{default:v(()=>[e.show?(a(),i("div",Qe)):f("",!0)]),_:1}))}});const tt=m(et,[["__scopeId","data-v-8961c420"]]),V=De;function st(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function re(s){return/^\//.test(s)?s:`/${s}`}function J(s){if(Ee(s))return s;const{site:e}=V(),{pathname:t,search:n,hash:o}=new URL(s,"http://a.com"),l=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${n}${o}`);return ue(l)}function X({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:l}=V(),d=P(()=>{var _,$;return{label:(_=t.value.locales[n.value])==null?void 0:_.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:P(()=>Object.entries(t.value.locales).flatMap(([_,$])=>s&&d.value.label===$.label?[]:{text:$.label,link:nt($.link||(_==="root"?"/":`/${_}/`),l.value.i18nRouting!==!1&&e,o.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function nt(s,e,t,n){return e?s.replace(/\/$/,"")+re(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const ot=s=>(H("data-v-848a5d41"),s=s(),z(),s),at={class:"NotFound"},lt={class:"code"},rt={class:"title"},it=ot(()=>c("div",{class:"divider"},null,-1)),ct={class:"quote"},ut={class:"action"},dt=["href","aria-label"],_t=g({__name:"NotFound",setup(s){const{site:e,theme:t}=V(),{localeLinks:n}=X({removeCurrent:!1}),o=I("/");return K(()=>{var d;const l=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((d=n.value.find(({link:p})=>p.startsWith(l)))==null?void 0:d.link)||n.value[0].link)}),(l,d)=>{var p,_,$,w,S;return a(),i("div",at,[c("p",lt,L(((p=r(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",rt,L(((_=r(t).notFound)==null?void 0:_.title)??"PAGE NOT FOUND"),1),it,c("blockquote",ct,L((($=r(t).notFound)==null?void 0:$.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",ut,[c("a",{class:"link",href:r(ue)(o.value),"aria-label":((w=r(t).notFound)==null?void 0:w.linkLabel)??"go to home"},L(((S=r(t).notFound)==null?void 0:S.linkText)??"Take me home"),9,dt)])])}}});const vt=m(_t,[["__scopeId","data-v-848a5d41"]]);function Ie(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=re(e);const t=Object.keys(s).sort((o,l)=>l.split("/").length-o.split("/").length).find(o=>e.startsWith(re(o))),n=t?s[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function pt(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function ht(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ie(s,e){return Array.isArray(e)?e.some(t=>ie(s,t)):j(s,e.link)?!0:e.items?ie(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Q(n.items,o)),n})}function F(){const{frontmatter:s,page:e,theme:t}=V(),n=le("(min-width: 960px)"),o=I(!1),l=P(()=>{const N=t.value.sidebar,y=e.value.relativePath;return N?Ie(N,y):[]}),d=I(l.value);q(l,(N,y)=>{JSON.stringify(N)!==JSON.stringify(y)&&(d.value=l.value)});const p=P(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),_=P(()=>$?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),$=P(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),w=P(()=>p.value&&n.value),S=P(()=>p.value?pt(d.value):[]);function B(){o.value=!0}function b(){o.value=!1}function M(){o.value?b():B()}return{isOpen:o,sidebar:d,sidebarGroups:S,hasSidebar:p,hasAside:$,leftAside:_,isSidebarEnabled:w,open:B,close:b,toggle:M}}function ft(s,e){let t;te(()=>{t=s.value?document.activeElement:void 0}),K(()=>{window.addEventListener("keyup",n)}),de(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Te=I(W?location.hash:"");W&&window.addEventListener("hashchange",()=>{Te.value=location.hash});function mt(s){const{page:e}=V(),t=I(!1),n=P(()=>s.value.collapsed!=null),o=P(()=>!!s.value.link),l=I(!1),d=()=>{l.value=j(e.value.relativePath,s.value.link)};q([e,s,Te],d),K(d);const p=P(()=>l.value?!0:s.value.items?ie(e.value.relativePath,s.value.items):!1),_=P(()=>!!(s.value.items&&s.value.items.length));te(()=>{t.value=!!(n.value&&s.value.collapsed)}),we(()=>{(l.value||p.value)&&(t.value=!1)});function $(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:l,hasActiveLink:p,hasChildren:_,toggle:$}}function gt(){const{hasSidebar:s}=F(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:P(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const $t=71;function ve(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function pe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:kt(t),link:"#"+t.id,level:n}});return bt(e,s)}function kt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function bt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=o);const l=[];e:for(let d=0;d=0;_--){const $=s[_];if($.level{requestAnimationFrame(l),window.addEventListener("scroll",n)}),Fe(()=>{d(location.hash)}),de(()=>{window.removeEventListener("scroll",n)});function l(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),_=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(b=>p.some(M=>M.hash===b.hash&&b.offsetParent!==null)),$=window.scrollY,w=window.innerHeight,S=document.body.offsetHeight,B=Math.abs($+w-S)<1;if(_.length&&B){d(_[_.length-1].hash);return}for(let b=0;b<_.length;b++){const M=_[b],N=_[b+1],[y,D]=Pt(b,M,N);if(y){d(D);return}}}function d(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const _=o;_?(_.classList.add("active"),e.value.style.top=_.offsetTop+33+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Pe(s){return s.parentElement.offsetTop-$t}function Pt(s,e,t){const n=window.scrollY;return s===0&&n===0?[!0,null]:n{const o=R("VPDocOutlineItem",!0);return a(),i("ul",{class:C(t.root?"root":"nested")},[(a(!0),i(T,null,A(t.headers,({children:l,link:d,title:p})=>(a(),i("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,Vt),l!=null&&l.length?(a(),k(o,{key:0,headers:l},null,8,["headers"])):f("",!0)]))),256))],2)}}});const he=m(wt,[["__scopeId","data-v-03d07a91"]]),Lt=s=>(H("data-v-0959bcd2"),s=s(),z(),s),St={class:"content"},Mt={class:"outline-title",role:"heading","aria-level":"2"},Nt={"aria-labelledby":"doc-outline-aria-label"},It=Lt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Tt=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),n=_e([]);Y(()=>{n.value=pe(e.value.outline??t.value.outline)});const o=I(),l=I();return yt(o,l),(d,p)=>(a(),i("div",{class:C(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[c("div",St,[c("div",{class:"outline-marker",ref_key:"marker",ref:l},null,512),c("div",Mt,L(r(ve)(r(t))),1),c("nav",Nt,[It,h(he,{headers:n.value,root:!0},null,8,["headers"])])])],2))}});const Ct=m(Tt,[["__scopeId","data-v-0959bcd2"]]),Bt={class:"VPDocAsideCarbonAds"},At=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),i("div",Bt,[h(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),xt=s=>(H("data-v-f05e3d2a"),s=s(),z(),s),Ht={class:"VPDocAside"},zt=xt(()=>c("div",{class:"spacer"},null,-1)),Dt=g({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,n)=>(a(),i("div",Ht,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),h(Ct),u(t.$slots,"aside-outline-after",{},void 0,!0),zt,u(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(At,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}});const Et=m(Dt,[["__scopeId","data-v-f05e3d2a"]]);function Ft(){const{theme:s,page:e}=V();return P(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Ot(){const{page:s,theme:e,frontmatter:t}=V();return P(()=>{var _,$,w,S,B,b,M,N;const n=Ie(e.value.sidebar,s.value.relativePath),o=ht(n),l=o.findIndex(y=>j(s.value.relativePath,y.link)),d=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=(($=e.value.docFooter)==null?void 0:$.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((w=o[l-1])==null?void 0:w.docFooterText)??((S=o[l-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((B=o[l-1])==null?void 0:B.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((b=o[l+1])==null?void 0:b.docFooterText)??((M=o[l+1])==null?void 0:M.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=o[l+1])==null?void 0:N.link)}}})}const Gt={},Ut={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},jt=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Kt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),qt=[jt,Kt];function Rt(s,e){return a(),i("svg",Ut,qt)}const Wt=m(Gt,[["render",Rt]]),G=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=P(()=>e.tag??(e.href?"a":"span")),n=P(()=>e.href&&Le.test(e.href));return(o,l)=>(a(),k(U(t.value),{class:C(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?r(J)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[u(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Yt={class:"VPLastUpdated"},Jt=["datetime"],Xt=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=V(),l=P(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),d=P(()=>l.value.toISOString()),p=I("");return K(()=>{te(()=>{var _,$,w;p.value=new Intl.DateTimeFormat(($=(_=e.value.lastUpdated)==null?void 0:_.formatOptions)!=null&&$.forceLocale?o.value:void 0,((w=e.value.lastUpdated)==null?void 0:w.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(l.value)})}),(_,$)=>{var w;return a(),i("p",Yt,[x(L(((w=r(e).lastUpdated)==null?void 0:w.text)||r(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:d.value},L(p.value),9,Jt)])}}});const Zt=m(Xt,[["__scopeId","data-v-e047b66a"]]),Qt={key:0,class:"VPDocFooter"},es={key:0,class:"edit-info"},ts={key:0,class:"edit-link"},ss={key:1,class:"last-updated"},ns={key:1,class:"prev-next"},os={class:"pager"},as=["href"],ls=["innerHTML"],rs=["innerHTML"],is={class:"pager"},cs=["href"],us=["innerHTML"],ds=["innerHTML"],_s=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=V(),o=Ft(),l=Ot(),d=P(()=>e.value.editLink&&n.value.editLink!==!1),p=P(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),_=P(()=>d.value||p.value||l.value.prev||l.value.next);return($,w)=>{var S,B,b,M,N,y;return _.value?(a(),i("footer",Qt,[u($.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(a(),i("div",es,[d.value?(a(),i("div",ts,[h(G,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:v(()=>[h(Wt,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+L(r(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),i("div",ss,[h(Zt)])):f("",!0)])):f("",!0),(S=r(l).prev)!=null&&S.link||(B=r(l).next)!=null&&B.link?(a(),i("nav",ns,[c("div",os,[(b=r(l).prev)!=null&&b.link?(a(),i("a",{key:0,class:"pager-link prev",href:r(J)(r(l).prev.link)},[c("span",{class:"desc",innerHTML:((M=r(e).docFooter)==null?void 0:M.prev)||"Previous page"},null,8,ls),c("span",{class:"title",innerHTML:r(l).prev.text},null,8,rs)],8,as)):f("",!0)]),c("div",is,[(N=r(l).next)!=null&&N.link?(a(),i("a",{key:0,class:"pager-link next",href:r(J)(r(l).next.link)},[c("span",{class:"desc",innerHTML:((y=r(e).docFooter)==null?void 0:y.next)||"Next page"},null,8,us),c("span",{class:"title",innerHTML:r(l).next.text},null,8,ds)],8,cs)):f("",!0)])])):f("",!0)])):f("",!0)}}});const vs=m(_s,[["__scopeId","data-v-757e47f5"]]),ps={},hs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},fs=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),ms=[fs];function gs(s,e){return a(),i("svg",hs,ms)}const fe=m(ps,[["render",gs]]),$s={key:0,class:"VPDocOutlineDropdown"},ks={key:0,class:"items"},bs=g({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=V(),n=I(!1);Y(()=>{n.value=!1});const o=_e([]);return Y(()=>{o.value=pe(e.value.outline??t.value.outline)}),(l,d)=>o.value.length>0?(a(),i("div",$s,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:C({open:n.value})},[x(L(r(ve)(r(t)))+" ",1),h(fe,{class:"icon"})],2),n.value?(a(),i("div",ks,[h(he,{headers:o.value},null,8,["headers"])])):f("",!0)])):f("",!0)}});const ys=m(bs,[["__scopeId","data-v-b5383bf2"]]),Ps=s=>(H("data-v-895ad837"),s=s(),z(),s),Vs={class:"container"},ws=Ps(()=>c("div",{class:"aside-curtain"},null,-1)),Ls={class:"aside-container"},Ss={class:"aside-content"},Ms={class:"content"},Ns={class:"content-container"},Is={class:"main"},Ts=g({__name:"VPDoc",setup(s){const{theme:e}=V(),t=se(),{hasSidebar:n,hasAside:o,leftAside:l}=F(),d=P(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,_)=>{const $=R("Content");return a(),i("div",{class:C(["VPDoc",{"has-sidebar":r(n),"has-aside":r(o)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",Vs,[r(o)?(a(),i("div",{key:0,class:C(["aside",{"left-aside":r(l)}])},[ws,c("div",Ls,[c("div",Ss,[h(Et,null,{"aside-top":v(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Ms,[c("div",Ns,[u(p.$slots,"doc-before",{},void 0,!0),h(ys),c("main",Is,[h($,{class:C(["vp-doc",[d.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),h(vs,null,{"doc-footer-before":v(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}});const Cs=m(Ts,[["__scopeId","data-v-895ad837"]]),Bs=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=P(()=>e.href&&Le.test(e.href)),n=P(()=>e.tag||e.href?"a":"button");return(o,l)=>(a(),k(U(n.value),{class:C(["VPButton",[o.size,o.theme]]),href:o.href?r(J)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:v(()=>[x(L(o.text),1)]),_:1},8,["class","href","target","rel"]))}});const As=m(Bs,[["__scopeId","data-v-b43fdfc0"]]),xs=["src","alt"],Hs=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=R("VPImage",!0);return e.image?(a(),i(T,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",Z({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,xs)):(a(),i(T,{key:1},[h(n,Z({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(n,Z({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}});const ee=m(Hs,[["__scopeId","data-v-9cf6e029"]]),zs=s=>(H("data-v-354b9ec4"),s=s(),z(),s),Ds={class:"container"},Es={class:"main"},Fs={key:0,class:"name"},Os=["innerHTML"],Gs=["innerHTML"],Us=["innerHTML"],js={key:0,class:"actions"},Ks={key:0,class:"image"},qs={class:"image-container"},Rs=zs(()=>c("div",{class:"image-bg"},null,-1)),Ws=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ne("hero-image-slot-exists");return(t,n)=>(a(),i("div",{class:C(["VPHero",{"has-image":t.image||r(e)}])},[c("div",Ds,[c("div",Es,[u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),i("h1",Fs,[c("span",{innerHTML:t.name,class:"clip"},null,8,Os)])):f("",!0),t.text?(a(),i("p",{key:1,innerHTML:t.text,class:"text"},null,8,Gs)):f("",!0),t.tagline?(a(),i("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Us)):f("",!0)],!0),t.actions?(a(),i("div",js,[(a(!0),i(T,null,A(t.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(As,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||r(e)?(a(),i("div",Ks,[c("div",qs,[Rs,u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(ee,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}});const Ys=m(Ws,[["__scopeId","data-v-354b9ec4"]]),Js=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,n)=>r(e).hero?(a(),k(Ys,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Xs={},Zs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Qs=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),en=[Qs];function tn(s,e){return a(),i("svg",Zs,en)}const sn=m(Xs,[["render",tn]]),nn={class:"box"},on={key:0,class:"icon"},an=["innerHTML"],ln=["innerHTML"],rn=["innerHTML"],cn={key:4,class:"link-text"},un={class:"link-text-value"},dn=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),k(G,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",nn,[typeof e.icon=="object"&&e.icon.wrap?(a(),i("div",on,[h(ee,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(ee,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:2,class:"icon",innerHTML:e.icon},null,8,an)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,ln),e.details?(a(),i("p",{key:3,class:"details",innerHTML:e.details},null,8,rn)):f("",!0),e.linkText?(a(),i("div",cn,[c("p",un,[x(L(e.linkText)+" ",1),h(sn,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}});const _n=m(dn,[["__scopeId","data-v-83599323"]]),vn={key:0,class:"VPFeatures"},pn={class:"container"},hn={class:"items"},fn=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=P(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),i("div",vn,[c("div",pn,[c("div",hn,[(a(!0),i(T,null,A(n.features,l=>(a(),i("div",{key:l.title,class:C(["item",[t.value]])},[h(_n,{icon:l.icon,title:l.title,details:l.details,link:l.link,"link-text":l.linkText,rel:l.rel,target:l.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}});const mn=m(fn,[["__scopeId","data-v-139310e4"]]),gn=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,n)=>r(e).features?(a(),k(mn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),$n={class:"VPHome"},kn=g({__name:"VPHome",setup(s){return(e,t)=>{const n=R("Content");return a(),i("div",$n,[u(e.$slots,"home-hero-before",{},void 0,!0),h(Js,null,{"home-hero-info":v(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),h(gn),u(e.$slots,"home-features-after",{},void 0,!0),h(n)])}}});const bn=m(kn,[["__scopeId","data-v-b565dc7a"]]),yn={},Pn={class:"VPPage"};function Vn(s,e){const t=R("Content");return a(),i("div",Pn,[u(s.$slots,"page-top"),h(t),u(s.$slots,"page-bottom")])}const wn=m(yn,[["render",Vn]]),Ln=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,l)=>(a(),i("div",{class:C(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?u(o.$slots,"not-found",{key:0},()=>[h(vt)],!0):r(t).layout==="page"?(a(),k(wn,{key:1},{"page-top":v(()=>[u(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(bn,{key:2},{"home-hero-before":v(()=>[u(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(U(r(t).layout),{key:3})):(a(),k(Cs,{key:4},{"doc-top":v(()=>[u(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Sn=m(Ln,[["__scopeId","data-v-cdd93b33"]]),Mn={class:"container"},Nn=["innerHTML"],In=["innerHTML"],Tn=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,l)=>r(e).footer&&r(t).footer!==!1?(a(),i("footer",{key:0,class:C(["VPFooter",{"has-sidebar":r(n)}])},[c("div",Mn,[r(e).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Nn)):f("",!0),r(e).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,In)):f("",!0)])],2)):f("",!0)}});const Cn=m(Tn,[["__scopeId","data-v-fad30edd"]]),Bn={class:"header"},An={class:"outline"},xn=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),n=I(!1),o=I(0),l=I();Y(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p($){$.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ge(()=>{n.value=!1}))}function _(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return($,w)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Oe({"--vp-vh":o.value+"px"})},[$.headers.length>0?(a(),i("button",{key:0,onClick:d,class:C({open:n.value})},[x(L(r(ve)(r(t)))+" ",1),h(fe,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:_},L(r(t).returnToTopLabel||"Return to top"),1)),h(ce,{name:"flyout"},{default:v(()=>[n.value?(a(),i("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:p},[c("div",Bn,[c("a",{class:"top-link",href:"#",onClick:_},L(r(t).returnToTopLabel||"Return to top"),1)]),c("div",An,[h(he,{headers:$.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}});const Hn=m(xn,[["__scopeId","data-v-06ceb24e"]]),zn={},Dn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},En=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Fn=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),On=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Gn=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Un=[En,Fn,On,Gn];function jn(s,e){return a(),i("svg",Dn,Un)}const Kn=m(zn,[["render",jn]]),qn=["aria-expanded"],Rn={class:"menu-text"},Wn=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F(),{y:o}=Se(),l=_e([]),d=I(0);K(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{l.value=pe(t.value.outline??e.value.outline)});const p=P(()=>l.value.length===0&&!n.value),_=P(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":o.value>=d.value}));return($,w)=>r(t).layout!=="home"&&(!p.value||r(o)>=d.value)?(a(),i("div",{key:0,class:C(_.value)},[r(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":$.open,"aria-controls":"VPSidebarNav",onClick:w[0]||(w[0]=S=>$.$emit("open-menu"))},[h(Kn,{class:"menu-icon"}),c("span",Rn,L(r(e).sidebarMenuLabel||"Menu"),1)],8,qn)):f("",!0),h(Hn,{headers:l.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}});const Yn=m(Wn,[["__scopeId","data-v-6f96b96e"]]);function Jn(){const s=I(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const l=se();return q(()=>l.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Xn={},Zn={class:"VPSwitch",type:"button",role:"switch"},Qn={class:"check"},eo={key:0,class:"icon"};function to(s,e){return a(),i("button",Zn,[c("span",Qn,[s.$slots.default?(a(),i("span",eo,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const so=m(Xn,[["render",to],["__scopeId","data-v-9d7e540e"]]),no={},oo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ao=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),lo=[ao];function ro(s,e){return a(),i("svg",oo,lo)}const io=m(no,[["render",ro]]),co={},uo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},_o=Ue('',9),vo=[_o];function po(s,e){return a(),i("svg",uo,vo)}const ho=m(co,[["render",po]]),fo=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=V(),t=ne("toggle-appearance",()=>{e.value=!e.value});return(n,o)=>(a(),k(so,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(t)},{default:v(()=>[h(ho,{class:"sun"}),h(io,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const me=m(fo,[["__scopeId","data-v-c5759ef0"]]),mo={key:0,class:"VPNavBarAppearance"},go=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),i("div",mo,[h(me)])):f("",!0)}});const $o=m(go,[["__scopeId","data-v-77359c15"]]),ge=I();let Ce=!1,ae=0;function ko(s){const e=I(!1);if(W){!Ce&&bo(),ae++;const t=q(ge,n=>{var o,l,d;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(l=s.onFocus)==null||l.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});de(()=>{t(),ae--,ae||yo()})}return je(e)}function bo(){document.addEventListener("focusin",Be),Ce=!0,ge.value=document.activeElement}function yo(){document.removeEventListener("focusin",Be)}function Be(){ge.value=document.activeElement}const Po={},Vo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},wo=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Lo=[wo];function So(s,e){return a(),i("svg",Vo,Lo)}const Ae=m(Po,[["render",So]]),Mo={},No={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Io=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),To=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),Co=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Bo=[Io,To,Co];function Ao(s,e){return a(),i("svg",No,Bo)}const xo=m(Mo,[["render",Ao]]),Ho={class:"VPMenuLink"},zo=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),i("div",Ho,[h(G,{class:C({active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const oe=m(zo,[["__scopeId","data-v-c85e311c"]]),Do={class:"VPMenuGroup"},Eo={key:0,class:"title"},Fo=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",Do,[e.text?(a(),i("p",Eo,L(e.text),1)):f("",!0),(a(!0),i(T,null,A(e.items,n=>(a(),i(T,null,["link"in n?(a(),k(oe,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}});const Oo=m(Fo,[["__scopeId","data-v-7a66e83e"]]),Go={class:"VPMenu"},Uo={key:0,class:"items"},jo=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),i("div",Go,[e.items?(a(),i("div",Uo,[(a(!0),i(T,null,A(e.items,n=>(a(),i(T,{key:n.text},["link"in n?(a(),k(oe,{key:0,item:n},null,8,["item"])):(a(),k(Oo,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}});const Ko=m(jo,[["__scopeId","data-v-dd8433c9"]]),qo=["aria-expanded","aria-label"],Ro={key:0,class:"text"},Wo=["innerHTML"],Yo={class:"menu"},Jo=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=I(!1),t=I();ko({el:t,onBlur:n});function n(){e.value=!1}return(o,l)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:l[1]||(l[1]=d=>e.value=!0),onMouseleave:l[2]||(l[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:l[0]||(l[0]=d=>e.value=!e.value)},[o.button||o.icon?(a(),i("span",Ro,[o.icon?(a(),k(U(o.icon),{key:0,class:"option-icon"})):f("",!0),o.button?(a(),i("span",{key:1,innerHTML:o.button},null,8,Wo)):f("",!0),h(Ae,{class:"text-icon"})])):(a(),k(xo,{key:1,class:"icon"}))],8,qo),c("div",Yo,[h(Ko,{items:o.items},{default:v(()=>[u(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const $e=m(Jo,[["__scopeId","data-v-e16d8978"]]),Xo={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Zo=["href","aria-label","innerHTML"],Qo=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=P(()=>typeof e.icon=="object"?e.icon.svg:Xo[e.icon]);return(n,o)=>(a(),i("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Zo))}});const ea=m(Qo,[["__scopeId","data-v-54952539"]]),ta={class:"VPSocialLinks"},sa=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),i("div",ta,[(a(!0),i(T,null,A(e.links,({link:n,icon:o,ariaLabel:l})=>(a(),k(ea,{key:n,icon:o,link:n,ariaLabel:l},null,8,["icon","link","ariaLabel"]))),128))]))}});const ke=m(sa,[["__scopeId","data-v-84f62f36"]]),na={key:0,class:"group translations"},oa={class:"trans-title"},aa={key:1,class:"group"},la={class:"item appearance"},ra={class:"label"},ia={class:"appearance-action"},ca={key:2,class:"group"},ua={class:"item social-links"},da=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:o}=X({correspondingLink:!0}),l=P(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>l.value?(a(),k($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(n).length&&r(o).label?(a(),i("div",na,[c("p",oa,L(r(o).label),1),(a(!0),i(T,null,A(r(n),_=>(a(),k(oe,{key:_.link,item:_},null,8,["item"]))),128))])):f("",!0),r(e).appearance?(a(),i("div",aa,[c("div",la,[c("p",ra,L(r(t).darkModeSwitchLabel||"Appearance"),1),c("div",ia,[h(me)])])])):f("",!0),r(t).socialLinks?(a(),i("div",ca,[c("div",ua,[h(ke,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}});const _a=m(da,[["__scopeId","data-v-e93cc534"]]),va=s=>(H("data-v-4e5a1c51"),s=s(),z(),s),pa=["aria-expanded"],ha=va(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),fa=[ha],ma=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),i("button",{type:"button",class:C(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},fa,10,pa))}});const ga=m(ma,[["__scopeId","data-v-4e5a1c51"]]),$a=["innerHTML"],ka=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),k(G,{class:C({VPNavBarMenuLink:!0,active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,$a)]),_:1},8,["class","href","target","rel"]))}});const ba=m(ka,[["__scopeId","data-v-182fa02e"]]),ya=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),n=l=>"link"in l?j(t.value.relativePath,l.link,!!e.item.activeMatch):l.items.some(n),o=P(()=>n(e.item));return(l,d)=>(a(),k($e,{class:C({VPNavBarMenuGroup:!0,active:r(j)(r(t).relativePath,l.item.activeMatch,!!l.item.activeMatch)||o.value}),button:l.item.text,items:l.item.items},null,8,["class","button","items"]))}}),Pa=s=>(H("data-v-c0397a48"),s=s(),z(),s),Va={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},wa=Pa(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),La=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,n)=>r(e).nav?(a(),i("nav",Va,[wa,(a(!0),i(T,null,A(r(e).nav,o=>(a(),i(T,{key:o.text},["link"in o?(a(),k(ba,{key:0,item:o},null,8,["item"])):(a(),k(ya,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}});const Sa=m(La,[["__scopeId","data-v-c0397a48"]]);const Ma={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Na={class:"DocSearch-Button-Container"},Ia=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ta={class:"DocSearch-Button-Placeholder"},Ca=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ve=g({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(s){return(e,t)=>(a(),i("button",Ma,[c("span",Na,[Ia,c("span",Ta,L(e.placeholder),1)]),Ca]))}});const Ba={class:"VPNavBarSearch"},Aa={id:"local-search"},xa={key:1,id:"docsearch"},Ha=g({__name:"VPNavBarSearch",setup(s){const e=Ke(()=>qe(()=>import("./VPLocalSearchBox.0a23706f.js"),["assets/chunks/VPLocalSearchBox.0a23706f.js","assets/chunks/framework.c4d6cd72.js"])),t=()=>null,{theme:n,localeIndex:o}=V(),l=I(!1),d=I(!1),p=P(()=>{var M,N,y,D,O,E,be;const b=((M=n.value.search)==null?void 0:M.options)??n.value.algolia;return((O=(D=(y=(N=b==null?void 0:b.locales)==null?void 0:N[o.value])==null?void 0:y.translations)==null?void 0:D.button)==null?void 0:O.buttonText)||((be=(E=b==null?void 0:b.translations)==null?void 0:E.button)==null?void 0:be.buttonText)||"Search"});K(()=>{});function _(){l.value||(l.value=!0,setTimeout($,16))}function $(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||$()},16)}function w(b){const M=b.target,N=M.tagName;return M.isContentEditable||N==="INPUT"||N==="SELECT"||N==="TEXTAREA"}const S=I(!1);ye("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),S.value=!0)}),ye("/",b=>{w(b)||(b.preventDefault(),S.value=!0)});const B="local";return(b,M)=>{var N;return a(),i("div",Ba,[r(B)==="local"?(a(),i(T,{key:0},[S.value?(a(),k(r(e),{key:0,placeholder:p.value,onClose:M[0]||(M[0]=y=>S.value=!1)},null,8,["placeholder"])):f("",!0),c("div",Aa,[h(Ve,{placeholder:p.value,onClick:M[1]||(M[1]=y=>S.value=!0)},null,8,["placeholder"])])],64)):r(B)==="algolia"?(a(),i(T,{key:1},[l.value?(a(),k(r(t),{key:0,algolia:((N=r(n).search)==null?void 0:N.options)??r(n).algolia,onVnodeBeforeMount:M[2]||(M[2]=y=>d.value=!0)},null,8,["algolia"])):f("",!0),d.value?f("",!0):(a(),i("div",xa,[h(Ve,{placeholder:p.value,onClick:_},null,8,["placeholder"])]))],64)):f("",!0)])}}});const za=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(a(),k(ke,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}});const Da=m(za,[["__scopeId","data-v-bee3ff36"]]),Ea=["href"],Fa=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:n}=F(),{currentLang:o}=X();return(l,d)=>(a(),i("div",{class:C(["VPNavBarTitle",{"has-sidebar":r(n)}])},[c("a",{class:"title",href:r(t).logoLink??r(J)(r(o).link)},[u(l.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(ee,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),i(T,{key:1},[x(L(r(t).siteTitle),1)],64)):r(t).siteTitle===void 0?(a(),i(T,{key:2},[x(L(r(e).title),1)],64)):f("",!0),u(l.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ea)],2))}});const Oa=m(Fa,[["__scopeId","data-v-51909336"]]),Ga={},Ua={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ja=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Ka=c("path",{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 ",class:"css-c4d79v"},null,-1),qa=[ja,Ka];function Ra(s,e){return a(),i("svg",Ua,qa)}const xe=m(Ga,[["render",Ra]]),Wa={class:"items"},Ya={class:"title"},Ja=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:n}=X({correspondingLink:!0});return(o,l)=>r(t).length&&r(n).label?(a(),k($e,{key:0,class:"VPNavBarTranslations",icon:xe,label:r(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",Wa,[c("p",Ya,L(r(n).label),1),(a(!0),i(T,null,A(r(t),d=>(a(),k(oe,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}});const Xa=m(Ja,[["__scopeId","data-v-b6bfe3ec"]]),Za=s=>(H("data-v-e9e42a33"),s=s(),z(),s),Qa={class:"container"},el={class:"title"},tl={class:"content"},sl=Za(()=>c("div",{class:"curtain"},null,-1)),nl={class:"content-body"},ol=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Se(),{hasSidebar:t}=F(),{frontmatter:n}=V(),o=I({});return we(()=>{o.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(l,d)=>(a(),i("div",{class:C(["VPNavBar",o.value])},[c("div",Qa,[c("div",el,[h(Oa,null,{"nav-bar-title-before":v(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",tl,[sl,c("div",nl,[u(l.$slots,"nav-bar-content-before",{},void 0,!0),h(Ha,{class:"search"}),h(Sa,{class:"menu"}),h(Xa,{class:"translations"}),h($o,{class:"appearance"}),h(Da,{class:"social-links"}),h(_a,{class:"extra"}),u(l.$slots,"nav-bar-content-after",{},void 0,!0),h(ga,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=p=>l.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const al=m(ol,[["__scopeId","data-v-e9e42a33"]]),ll={key:0,class:"VPNavScreenAppearance"},rl={class:"text"},il=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(n,o)=>r(e).appearance?(a(),i("div",ll,[c("p",rl,L(r(t).darkModeSwitchLabel||"Appearance"),1),h(me)])):f("",!0)}});const cl=m(il,[["__scopeId","data-v-12b16b93"]]),ul=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),k(G,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const dl=m(ul,[["__scopeId","data-v-56c6a672"]]),_l={},vl={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},pl=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),hl=[pl];function fl(s,e){return a(),i("svg",vl,hl)}const ml=m(_l,[["render",fl]]),gl=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),k(G,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const He=m(gl,[["__scopeId","data-v-0f777046"]]),$l={class:"VPNavScreenMenuGroupSection"},kl={key:0,class:"title"},bl=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",$l,[e.text?(a(),i("p",kl,L(e.text),1)):f("",!0),(a(!0),i(T,null,A(e.items,n=>(a(),k(He,{key:n.text,item:n},null,8,["item"]))),128))]))}});const yl=m(bl,[["__scopeId","data-v-99599858"]]),Pl=["aria-controls","aria-expanded"],Vl={class:"button-text"},wl=["id"],Ll={key:1,class:"group"},Sl=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=I(!1),n=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(l,d)=>(a(),i("div",{class:C(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[c("span",Vl,L(l.text),1),h(ml,{class:"button-icon"})],8,Pl),c("div",{id:n.value,class:"items"},[(a(!0),i(T,null,A(l.items,p=>(a(),i(T,{key:p.text},["link"in p?(a(),i("div",{key:p.text,class:"item"},[h(He,{item:p},null,8,["item"])])):(a(),i("div",Ll,[h(yl,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,wl)],2))}});const Ml=m(Sl,[["__scopeId","data-v-1c1bbf1b"]]),Nl={key:0,class:"VPNavScreenMenu"},Il=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,n)=>r(e).nav?(a(),i("nav",Nl,[(a(!0),i(T,null,A(r(e).nav,o=>(a(),i(T,{key:o.text},["link"in o?(a(),k(dl,{key:0,item:o},null,8,["item"])):(a(),k(Ml,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Tl=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(a(),k(ke,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Cl={class:"list"},Bl=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),n=I(!1);function o(){n.value=!n.value}return(l,d)=>r(e).length&&r(t).label?(a(),i("div",{key:0,class:C(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:o},[h(xe,{class:"icon lang"}),x(" "+L(r(t).label)+" ",1),h(Ae,{class:"icon chevron"})]),c("ul",Cl,[(a(!0),i(T,null,A(r(e),p=>(a(),i("li",{key:p.link,class:"item"},[h(G,{class:"link",href:p.link},{default:v(()=>[x(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}});const Al=m(Bl,[["__scopeId","data-v-ffb11b0e"]]),xl={class:"container"},Hl=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=I(null),t=Me(W?document.body:null);return(n,o)=>(a(),k(ce,{name:"fade",onEnter:o[0]||(o[0]=l=>t.value=!0),onAfterLeave:o[1]||(o[1]=l=>t.value=!1)},{default:v(()=>[n.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",xl,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),h(Il,{class:"menu"}),h(Al,{class:"translations"}),h(cl,{class:"appearance"}),h(Tl,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}});const zl=m(Hl,[["__scopeId","data-v-69fa0165"]]),Dl={key:0,class:"VPNav"},El=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Jn(),{frontmatter:o}=V(),l=P(()=>o.value.navbar!==!1);return Ne("close-screen",t),te(()=>{W&&document.documentElement.classList.toggle("hide-nav",!l.value)}),(d,p)=>l.value?(a(),i("header",Dl,[h(al,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":v(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(zl,{open:r(e)},{"nav-screen-content-before":v(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}});const Fl=m(El,[["__scopeId","data-v-64567df4"]]),Ol=s=>(H("data-v-08d60d14"),s=s(),z(),s),Gl=["role","tabindex"],Ul=Ol(()=>c("div",{class:"indicator"},null,-1)),jl=["onKeydown"],Kl={key:1,class:"items"},ql=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:l,hasActiveLink:d,hasChildren:p,toggle:_}=mt(P(()=>e.item)),$=P(()=>p.value?"section":"div"),w=P(()=>o.value?"a":"div"),S=P(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),B=P(()=>o.value?void 0:"button"),b=P(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":l.value},{"has-active":d.value}]);function M(y){"key"in y&&y.key!=="Enter"||!e.item.link&&_()}function N(){e.item.link&&_()}return(y,D)=>{const O=R("VPSidebarItem",!0);return a(),k(U($.value),{class:C(["VPSidebarItem",b.value])},{default:v(()=>[y.item.text?(a(),i("div",Z({key:0,class:"item",role:B.value},We(y.item.items?{click:M,keydown:M}:{},!0),{tabindex:y.item.items&&0}),[Ul,y.item.link?(a(),k(G,{key:0,tag:w.value,class:"link",href:y.item.link,rel:y.item.rel,target:y.item.target},{default:v(()=>[(a(),k(U(S.value),{class:"text",innerHTML:y.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(U(S.value),{key:1,class:"text",innerHTML:y.item.text},null,8,["innerHTML"])),y.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:N,onKeydown:Re(N,["enter"]),tabindex:"0"},[h(fe,{class:"caret-icon"})],40,jl)):f("",!0)],16,Gl)):f("",!0),y.item.items&&y.item.items.length?(a(),i("div",Kl,[y.depth<5?(a(!0),i(T,{key:0},A(y.item.items,E=>(a(),k(O,{key:E.text,item:E,depth:y.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}});const Rl=m(ql,[["__scopeId","data-v-08d60d14"]]),ze=s=>(H("data-v-ffeff55d"),s=s(),z(),s),Wl=ze(()=>c("div",{class:"curtain"},null,-1)),Yl={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Jl=ze(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Xl=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const e=s,{sidebarGroups:t,hasSidebar:n}=F(),o=I(null),l=Me(W?document.body:null);return q([e,o],()=>{var d;e.open?(l.value=!0,(d=o.value)==null||d.focus()):l.value=!1},{immediate:!0,flush:"post"}),(d,p)=>r(n)?(a(),i("aside",{key:0,class:C(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=Ye(()=>{},["stop"]))},[Wl,c("nav",Yl,[Jl,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(T,null,A(r(t),_=>(a(),i("div",{key:_.text,class:"group"},[h(Rl,{item:_,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}});const Zl=m(Xl,[["__scopeId","data-v-ffeff55d"]]),Ql=g({__name:"VPSkipLink",setup(s){const e=se(),t=I();q(()=>e.path,()=>t.value.focus());function n({target:o}){const l=document.getElementById(decodeURIComponent(o.hash).slice(1));if(l){const d=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",d)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",d),l.focus(),window.scrollTo(0,0)}}return(o,l)=>(a(),i(T,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}});const er=m(Ql,[["__scopeId","data-v-2ab14c2b"]]),tr=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=F(),o=se();q(()=>o.path,n),ft(e,n);const{frontmatter:l}=V(),d=Je(),p=P(()=>!!d["home-hero-image"]);return Ne("hero-image-slot-exists",p),(_,$)=>{const w=R("Content");return r(l).layout!==!1?(a(),i("div",{key:0,class:C(["Layout",r(l).pageClass])},[u(_.$slots,"layout-top",{},void 0,!0),h(er),h(tt,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),h(Fl,null,{"nav-bar-title-before":v(()=>[u(_.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(_.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(_.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(_.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(_.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(_.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),h(Yn,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),h(Zl,{open:r(e)},{"sidebar-nav-before":v(()=>[u(_.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(_.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Sn,null,{"page-top":v(()=>[u(_.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(_.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(_.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(_.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(_.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(_.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(_.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(_.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(_.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(_.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(_.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(_.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(_.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(_.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(_.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(_.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(_.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(_.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(_.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(_.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(Cn),u(_.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(w,{key:1}))}}});const sr=m(tr,[["__scopeId","data-v-22fc12f0"]]);const or={Layout:sr,enhanceApp:({app:s})=>{s.component("Badge",Ze)}};function ar(s,e){const{localeIndex:t}=V();function n(o){var b,M;const l=o.split("."),d=s&&typeof s=="object",p=d&&((M=(b=s.locales)==null?void 0:b[t.value])==null?void 0:M.translations)||null,_=d&&s.translations||null;let $=p,w=_,S=e;const B=l.pop();for(const N of l){let y=null;const D=S==null?void 0:S[N];D&&(y=S=D);const O=w==null?void 0:w[N];O&&(y=w=O);const E=$==null?void 0:$[N];E&&(y=$=E),D||(S=y),O||(w=y),E||($=y)}return($==null?void 0:$[B])??(w==null?void 0:w[B])??(S==null?void 0:S[B])??""}return n}export{ar as c,or as t,V as u}; diff --git a/assets/getting-started.md.0f93915a.js b/assets/getting-started.md.0f93915a.js new file mode 100644 index 0000000..e7f6117 --- /dev/null +++ b/assets/getting-started.md.0f93915a.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md"}'),n={name:"getting-started.md"},r=i('

    Getting started

    This section is designed to help you integrate the FIB API seamlessly into your application or system by providing instructions on how to register an account, check the API availability, call API endpoints, and test your implementation in a sandbox environment.

    It is advised to read the following topics in the order that they are presented:

    1. Registering an account
    2. Checking API availability
    3. Calling API endpoints
    4. Public test environment
    ',4),s=[r];function o(l,d,c,g,h,p){return e(),a("div",null,s)}const u=t(n,[["render",o]]);export{m as __pageData,u as default}; diff --git a/assets/getting-started.md.0f93915a.lean.js b/assets/getting-started.md.0f93915a.lean.js new file mode 100644 index 0000000..9cf7ee5 --- /dev/null +++ b/assets/getting-started.md.0f93915a.lean.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md"}'),n={name:"getting-started.md"},r=i("",4),s=[r];function o(l,d,c,g,h,p){return e(),a("div",null,s)}const u=t(n,[["render",o]]);export{m as __pageData,u as default}; diff --git a/assets/getting-started_calling-api-endpoints.md.14779e05.js b/assets/getting-started_calling-api-endpoints.md.14779e05.js new file mode 100644 index 0000000..de52cd6 --- /dev/null +++ b/assets/getting-started_calling-api-endpoints.md.14779e05.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as i,Q as n}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Calling API endpoints","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/calling-api-endpoints.md","filePath":"getting-started/calling-api-endpoints.md"}'),a={name:"getting-started/calling-api-endpoints.md"},o=n('

    Calling API endpoints

    Once your registration application has been approved, the connection credentials are sent to the email address you provided during registration.

    Using these credentials, you can implement calls to the FIB API endpoints into the code of your own application or system.

    Following the basic API architecture, your application or system—the API client in this relationship—connects to the FIB API server.

    To integrate your API client with the FIB API server, you can use different programming languages and frameworks, including Python, Java, Node.js, RUST, depending on the requirements of your own application or system.

    Some tutorials in this documentation provide code snippets in Kotlin/Java that are required in order to perform Iroha-related operations.

    The provided FIB API endpoints allow users to access the network's blockchain data, enabling users to perform operations such as submitting, retrieving and flagging contributions, etc.

    For examples of scenarios where FIB API endpoints are being called, check out Tutorials.

    ',8),r=[o];function s(p,l,c,d,h,g){return t(),i("div",null,r)}const _=e(a,[["render",s]]);export{m as __pageData,_ as default}; diff --git a/assets/getting-started_calling-api-endpoints.md.14779e05.lean.js b/assets/getting-started_calling-api-endpoints.md.14779e05.lean.js new file mode 100644 index 0000000..3bad465 --- /dev/null +++ b/assets/getting-started_calling-api-endpoints.md.14779e05.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as i,Q as n}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Calling API endpoints","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/calling-api-endpoints.md","filePath":"getting-started/calling-api-endpoints.md"}'),a={name:"getting-started/calling-api-endpoints.md"},o=n("",8),r=[o];function s(p,l,c,d,h,g){return t(),i("div",null,r)}const _=e(a,[["render",s]]);export{m as __pageData,_ as default}; diff --git a/assets/getting-started_checking-api-availability.md.f10291ac.js b/assets/getting-started_checking-api-availability.md.f10291ac.js new file mode 100644 index 0000000..b48ca9f --- /dev/null +++ b/assets/getting-started_checking-api-availability.md.f10291ac.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const _=JSON.parse('{"title":"Checking API availability","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/checking-api-availability.md","filePath":"getting-started/checking-api-availability.md"}'),n={name:"getting-started/checking-api-availability.md"},o=i('

    Checking API availability

    Before implementing any API calls, it's important to ensure that the API is available and accessible to your application. To do so, authorize your account and retrieve a JSON token.

    To check the API availability, follow the Authorizing an account tutorial.

    If the JSON token is retrieved successfully, then the FIB API is available and you can proceed with Calling API endpoints.

    Otherwise, a response with an error code is displayed indicating the issue that needs to be resolved before proceeding.

    For a list of possible responses, see Authorizing a user in the system > Responses.

    Note

    There are a variety of external issues that may be preventing you from successfully retrieving a JSON token. Examples include blocked outgoing HTTP requests and no Internet connection.

    ',7),s=[o];function r(l,c,p,h,d,u){return t(),a("div",null,s)}const m=e(n,[["render",r]]);export{_ as __pageData,m as default}; diff --git a/assets/getting-started_checking-api-availability.md.f10291ac.lean.js b/assets/getting-started_checking-api-availability.md.f10291ac.lean.js new file mode 100644 index 0000000..1e39f09 --- /dev/null +++ b/assets/getting-started_checking-api-availability.md.f10291ac.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const _=JSON.parse('{"title":"Checking API availability","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/checking-api-availability.md","filePath":"getting-started/checking-api-availability.md"}'),n={name:"getting-started/checking-api-availability.md"},o=i("",7),s=[o];function r(l,c,p,h,d,u){return t(),a("div",null,s)}const m=e(n,[["render",r]]);export{_ as __pageData,m as default}; diff --git a/assets/getting-started_public-test-environment.md.69e33594.js b/assets/getting-started_public-test-environment.md.69e33594.js new file mode 100644 index 0000000..d963049 --- /dev/null +++ b/assets/getting-started_public-test-environment.md.69e33594.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as n,Q as o}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Public test environment","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/public-test-environment.md","filePath":"getting-started/public-test-environment.md"}'),i={name:"getting-started/public-test-environment.md"},r=o('

    Public test environment

    The test environment is a safe and controlled environment where you can try out and experiment with the FIB API without affecting the production system. Here, you can make mistakes, test different scenarios, and learn how to use the API.

    To access the test environment, you need to follow the same steps as for the production environment. The only difference is that you will be provided with test credentials instead of production credentials (see Connection details below).

    Using the test environment is beneficial for at least the following several reasons:

    • You can test your implementation without affecting the production network.
    • You can catch and fix bugs before deploying to production.
    • You can optimize and fine-tune performance by simulating different loads and scenarios.

    Connection Details

    To connect to the FIB test environment, use the following credentials:

    ',8),a=[r];function s(l,c,d,u,p,h){return t(),n("div",null,a)}const g=e(i,[["render",s]]);export{f as __pageData,g as default}; diff --git a/assets/getting-started_public-test-environment.md.69e33594.lean.js b/assets/getting-started_public-test-environment.md.69e33594.lean.js new file mode 100644 index 0000000..3f12e94 --- /dev/null +++ b/assets/getting-started_public-test-environment.md.69e33594.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as n,Q as o}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Public test environment","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/public-test-environment.md","filePath":"getting-started/public-test-environment.md"}'),i={name:"getting-started/public-test-environment.md"},r=o("",8),a=[r];function s(l,c,d,u,p,h){return t(),n("div",null,a)}const g=e(i,[["render",s]]);export{f as __pageData,g as default}; diff --git a/assets/getting-started_registering-an-account.md.ac58196f.js b/assets/getting-started_registering-an-account.md.ac58196f.js new file mode 100644 index 0000000..7a9e3b1 --- /dev/null +++ b/assets/getting-started_registering-an-account.md.ac58196f.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as n}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Registering an account","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/registering-an-account.md","filePath":"getting-started/registering-an-account.md"}'),r={name:"getting-started/registering-an-account.md"},a=n('

    Registering an account

    To begin using FIB as a peer and accessing API endpoints, you need to register a user account.

    To register an account, perform the following steps:

    1. Go to the Fraud Intelligence Blockchain website and select Register from the top right menu.
    2. On the User details for Registration page that appears, fill in your personal and company details.
    3. Agree to the Terms & Conditions by selecting the I agree to the terms checkbox.
    4. On the Subscription details tab, select Register Account.

    Expected Result

    You have now submitted your registration application which is then manually reviewed by the Consortium Administrator.

    As soon as your application is approved, you receive an email notifying you that you become a peer in the FIB network and, depending on the chosen access method, you can access the FIB functionality via Web UI and/or API endpoints.

    For Web UI tutorials, see Tutorials: Web interface.

    For API tutorials, see Tutorials: API.

    Restoring access to an account

    If you have forgotten the password on your account, you can reset it by performing the following steps:

    1. Go to the Fraud Intelligence Blockchain website and select either Register or Log in in the top right menu.
    2. On the Register or Log in page, click Forgot password?
    3. On the Enter email to reset password page, enter the email address that you registered with in the provided field, then select Reset password.
    4. Check your email inbox for a message from the FIB with instructions on how to reset your password.
    5. Once you have reset your password, you can log in to your FIB account using your new password.
    ',12),i=[a];function s(c,l,g,h,u,d){return t(),o("div",null,i)}const f=e(r,[["render",s]]);export{m as __pageData,f as default}; diff --git a/assets/getting-started_registering-an-account.md.ac58196f.lean.js b/assets/getting-started_registering-an-account.md.ac58196f.lean.js new file mode 100644 index 0000000..03b9d38 --- /dev/null +++ b/assets/getting-started_registering-an-account.md.ac58196f.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as n}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Registering an account","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/registering-an-account.md","filePath":"getting-started/registering-an-account.md"}'),r={name:"getting-started/registering-an-account.md"},a=n("",12),i=[a];function s(c,l,g,h,u,d){return t(),o("div",null,i)}const f=e(r,[["render",s]]);export{m as __pageData,f as default}; diff --git a/assets/index.md.433ae868.js b/assets/index.md.433ae868.js new file mode 100644 index 0000000..40c43d5 --- /dev/null +++ b/assets/index.md.433ae868.js @@ -0,0 +1 @@ +import{_ as t,C as a,o as r,c as o,H as i,Q as n}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Welcome","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"},h=n('

    Welcome

    Welcome to the Fraud Intelligence Blockchain (FIB) documentation.

    FIB is a blockchain-based platform designed to combat fraud in various industries, including telecommunications, finance, and e-commerce.

    This platform provides a secure and decentralized system for storing and sharing fraud-related information among participants to prevent potential fraudulent activities.

    FIB operates on the Iroha 2 Hyperledger blockchain and uses smart contracts to automate the exchange of fraud intelligence data. This platform enables organizations to securely share and access real-time information about known fraud events and other relevant data, allowing them to identify potential fraud attempts quicker and more accurately.

    Where to start?

    If you are new to FIB, start with the Overview section, which provides a high-level introduction to the technology. This section explains what the FIB is, how it works, and other related concepts and terms.

    For instructions on how to get started with the FIB, see the Getting Started section. This section covers everything from setting up your FIB account to accessing the API, and integrating it into your existing workflows and systems.

    For assistance with FIB Web UI, try the Tutorials: Web UI section that walks you through basic operations that you can perform using the web interface.

    If you're looking for step-by-step guidance on how to interact with the FIB API, check out the Tutorials: API section where you can find a variety of scenarios to help you get started with the API.

    Finally, the API Specification section provides technical specification for the available endpoints explaining their internals exhaustively.

    What is Iroha 2?

    Iroha 2 is a blockchain hyperledger used to manage accounts, assets, and on-chain data storage with efficient smart contracts. The ledger is written in Rust and provides the following SDKs:

    Check out the Iroha 2 Documentation as it provides an introduction to Iroha 2 as well as language-specific guides for Bash, Python, Rust, Kotlin/Java, and Javascript/TypeScript.

    Getting help

    If, at any point, you’re experiencing any issues, please submit them at Fraud Intelligence Blockchain Freshdesk. Upon review, someone will get back to you to resolve the issue.

    Additionally, you may contact FIL via email at support@fraudintelligencelimited.com


    ',19);function l(c,p,d,u,g,f){const e=a("CompaniesLogos");return r(),o("div",null,[h,i(e,{location:"docs"})])}const y=t(s,[["render",l]]);export{b as __pageData,y as default}; diff --git a/assets/index.md.433ae868.lean.js b/assets/index.md.433ae868.lean.js new file mode 100644 index 0000000..c0ca567 --- /dev/null +++ b/assets/index.md.433ae868.lean.js @@ -0,0 +1 @@ +import{_ as t,C as a,o as r,c as o,H as i,Q as n}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Welcome","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"},h=n("",19);function l(c,p,d,u,g,f){const e=a("CompaniesLogos");return r(),o("div",null,[h,i(e,{location:"docs"})])}const y=t(s,[["render",l]]);export{b as __pageData,y as default}; diff --git a/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 b/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2a687296748f6b8bc8076cd11bde49cd27e4442b GIT binary patch literal 28332 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 HNCp4^t1hY; literal 0 HcmV?d00001 diff --git a/assets/inter-italic-cyrillic.ea42a392.woff2 b/assets/inter-italic-cyrillic.ea42a392.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f64035158d7e4c01654e3f23dcd6e8299928a28c GIT binary patch literal 17824 zcmV(|K+(TGZYzoV0yihRy3;{L*Bm;yv3xXa1 z1Rw>42nQe=C3zL>7I?PUshK)MG!ta^L3b^d$O{#w!;WOi#caU z9epdi^~z}FXC1zMc;nw||B-~iJKZ7-`H(Kn3lKjZ5N5RqaHof~Lr#JsXW1jml58&> zQGi~|0cnL4zB|P8}0t5&U@c|JdMvNGlmzMw!d_sgsBSwh~ z<3uKERMdzOA;C{wc9u@*KWk~1ZrQFoOIvrA?XoRxnU;2`Lr2EaDbuDiOouv|*;F%- z#gKPJ>8fl=HUf*mFq&P*op#SRB5uMwrI5O=D|BV|t7*jYszMn6_y=vT5wbG)8zDBN(kmfH1b)al)=7_XtiK52#|ESncdAW0QK2HvRY`_;WiO>pz_-Xk zH!T)&YR`MAJa7J@pNA;Ve=XlUuY2Z4Y1bh`Bcza^p&9I}QLUiMj74g|4NyqjXq$hi zG1}j&v`P|}Bqr@5l@eV;qy>fq`v}SgHrfA#@*v!mV~$a+B6D&Jh-sRueXL+`%jr?vt30*Vq&Bs(79VL�!Z1%E;0yxE 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin-ext.bd8920cc.woff2 b/assets/inter-italic-latin-ext.bd8920cc.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9c1b9440ed419d4a71ba46b0db3951164f9e10df GIT binary patch literal 63552 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin.bd3b6f56.woff2 b/assets/inter-italic-latin.bd3b6f56.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..01fcf20724f915f68a974ef2fb85f86f3039b1d8 GIT binary patch literal 46048 zcmZ5`Q;aAK%;ng&ZQHhO+qP}nw&#v*+qP|czkid>ZnkOClarJ)8&}6XcX|`ed!zGB-f)m7A>|pe(@}!;R(i5_;Q;gPmmVKMFfL z8U^pD4g0RuZ}j&Yi?dvCD3+ecar)F!3E+b%ET{xw3C8M7J{@t?MBWQT zLw_ifuEbJRdIiVDI_r6xY1G<3JMm-nFEcfCjA z#v|O&s%xgb4Qu-4#eM-HHbII@&llh05HDq&f6hwq6a9iH_V7+LNmgq?gr z%&`j^DFl9a*VO(wCqECKHZo1pWFNhI!r8z5HSYFFvbWdx``e$@e{H3eAZG;>M$Q}9 zcyG=RmxTs2L?SQ<4ddA$mX6^0Up-UYw)@~WUBfW{z03Vr7Y6_e!^}-=hbYiLDQz~! zx#i5%8+$VqQqTB#_VM5K{XFsg`Tm>MS|!8%X$m8QBOR8-Jp>8o7)AhuQj7sGgmz{e zgdmP#7=+NqFbsi}Z`pful`~V_xm*Jth8hQg1|5HlcR(%<6j->ugynY%EchaWe{lYD zBYPwJO9e1V7bvRHAqgKw5=51(C7Ye*@5%n@F@zAtFn~yA2qA>|-!R4)gW!+^B!(>% zLIn{qQOrQwrio6i$|93wtJ9a$*CyRPZOv47w%2dl&-2cqvnG74QCkjvrlLQQpM6+PK4MTZd!{t~jv4_eMTh`r zQN%)c=;^Q4SN}`Igs)1y57QL;Ay8Esv#k*+G5M9;o9--`3D0dIC|Y%HJhW}dR@JfyQiShu-R zTdjfr%lvBYs!_RFlC1OM#QCo}#tgZ@QH zU#i~j((E=?*O#)ZF{;JF2)U~$7Ti+nP6BId%bzl}6cH^zh6S7f4m@!?SC(0dp!Cn<_v`0!r~C{&aL)xkluV+&?6Vk%AQK`!>7*@^Sd>6n zQCZOkU6gI(W`>$U})@ZUV?IeK!3yH`8K_n-5hZP{M_AQ2?RJ^*pl z(R1@!lkaMaAIdp2_Gl~ZIYC5_kc7Yn#wsoh8MiCiKerq_Tk47?`a{`TKMP{-JFG;= z(jat>m+U9hP4(7AmG*(>F8lRy-$j_yr@Lyco320L!|*{E0jlqb{po}2GZ8I4dt1fi zputhPkmrX7%Eu#MFaZgy00PqpCjg9V_=IKwfkz|+QstCmNKK~#R_ta@e}E!15>i;m zgt35g0i;C+9XZa@DcjBE&~-L#yN;7I@79XeZMSHyQtz!sp^HvS;pOCFO*b8pRMAWhJBoWdx+i1UN%fA&Fo2+U9IwItXAI9)L|X z!0MYhz#d@+KQr@#`)C*GjCQ#;lJ&Z?WP;o7!dq z;a#gl7s3RZyF8k!f6xdj5;vuTRq|C_y6AcGbMGf-BhY5D%9>fkc#AP)F~E2{f3jO! zxVw5%@THW80z}(dm}Hs+Fv8fAA!=0)7^<-c9x;bL=HKD#Vg}{JfL7fskd8@r!#-ao z4sMyHD25@3c??7u20|13bqtM5?%sX%z0RX4N-Jv326)bFv3IHUGjwFl7ENXg^U_ux`e~bJA!1E*+F}U6x zRYOj{wYMxZAOL>+fG)ea8+ty4+iSaY znFz(?XVn-^a#z=RxU|uVySWoSnk`Fl8*95(*^68zX#>=eq3oMVC3Vd@Ywl&vLmhJw znT5A_BefsURl~HeBfgb3kl3MV4VHT@-E4MAU#dvvN>6T2uWW(Y0yWJnPQQ9RY0YJB zQncEl*D15UlskND!0@k_8*@I=eWgU4*I#Tv!e3&qysoYIM4VYL@o&DJI~6B}3^>(* zP7s6ly0`YtEM{EU25@qPgQ5{M8B4PUIjpB_j%PXU1ElG?sV>~B?U2c3GTDsOq6uy1 zouqFGwAAf@?Ufd)nN?s+EE+gy3O!;;X1Oeox=BiMjjss6 zrb-CJFi{%)TFoY)^l}OR1e+->qlfWboYLujkMaB$W_-OKl4YnutC*!HZC*|#va1J( zq)&EClkK&y05#$5rmsWJl7Tq#i2|qtT4QT@P%Y&F0oI6Gc#|;-aEq!vHXiyCNc#Jd zfm4N@g~l(8X1C7JtF!-ZHE)k~{oAdbqw8S0s`bRH^Myhl5txkA)b~}Xn^p-ioJ%xN*QccE#L}_e6=f0g>$U&uh-nzDLLUmm5Q@2MW6NSu8zK z&a86c^S-slfdC?1xUESPfR!&$I>hXv)E-&P?!i1lCxQ$+Wgm?b?e_8t1FK!AjcZMn zUc=s1MYVKX97EGfz8aMbB{EEcohY$kKx~ZUmdvzme9s0CPNad0R^C`W%>@^sZYw($2&uFVl+2K17+0F5zi%p0G#mOe z*^}O35lo{S&BB<6)GJCxuxdYET^~Qf%*d{4wAUmb{6&S>4PY+W0s0}xB}|}L4}>#p z@{SV@oMIUkDQ=JV6rc(e5{-&u8CT!gIPX`SU*>~oLPXKDjWpFXbUV#n`dE(%Vm zIde;>{Rew?^n=S*{!y2vC`nb87AhqmY73%OiUp6NtCT!U#oyx!5-G=3o?!qzhs&^9 za`ZSQbyfJdPG8)26Xl#%mnXC)WcjRlY3)xdlUTubJrCC)o~gZW8hT8J*^p`5YBA6m!o@t#amWxKJt~bqIO3UE`;{@p>`@W zP@2<6is8>3Hf9%Y%&&)m{*TKt^hlHjbEdSBfS}G#G&?aXAuO*Zc4jthCt0P?8nDkp z&nn|E4DVM4eo^1y=mne)ODOBRMO&yswcO%Am{*zhq}Jf6{FkH_h$cp+qU}Uah2xhec691J>8bKvfO&qtBih3^ZtC72aRAmIK|s_Wn83;( zcfe-TDq$V$M|9T!w*Vn~`lMnwuGkrS-16ZJ_-}6StXufQ)fXIH z?3n|}_6M<>ZalzzphQYMv^Lz{l(olOfP+wpI|hlj;O4bk&^`!f^eJgzh)Fc)Aa5f^ zcW38b1+QIvvAMc?Ix!g7gd<=1oEdkKZe6I?O`Z#b5n1i1ECLX7P$OFp#z?N2m(lx_ z;u#AkhZLFfNa#{~S!$4`yTsd{GGth$2(!_)dmhj7Fzn6m!H;Be zYl;%&#b|8G)a5^a=}AV`%?ZMNw#J#f$4qoefe!Yu5%Hy~p1mBw(3b6U6$~;Z-fGUwnlxC@~c?_e8~5Cv2n zztXN!1Bn(5M-sFQGQ^!1@p^Ur>}Y4y3Lyhzuou+Kke`^@BtIUUuC~Lqr#~Z%k}0#_ zRO|4NN2x`8&N^yBE}|^EKzTXH%!nH@Yi8}EbO2W(bJrg(Qe5`d4M@>*=mw z@gnrvq-&$G`oK_^<_S+dir4$<`F2}cKFc8_9``-kvvKoO>EKCe`|$Uhp$%7D)P+mg zy9TDuYW*X&eQ%144@W|e20kBz%C{Z($tQD*&!0x?KmF}T2~1~xDJ)Y%GWJdOs~p~Q zETw8+2O($m62?Hicvboe@7{b|25+b$65{Pj*o`_8ELizPDhqG6e^O|1Q&WRUVQ21Q zgB4sKxB*Sp6$U4#w7A{x)RQT1a7p>)SBe+;jQFQ{JDQS_CA+!fIw>w=Atv=dah+uo zwDrjm_cXe2*K*e7yai7y^Lr`c$36%(F=IIBB$N75U1picH_F*PN~1Kz|-y63>lOpdMHig=x5TfIT$_gF>jC^a2#aWfXH z-cUgc8m$G}0*~L6^8h=z9^2Wvg#pfHb++N8ClRJB(of3NY~V%i?e_n@f8Yz2+zI|| zzVu@;8n?1ilTcOHaXlGiTL8422ubmhYX}1n_cbW$OXgS|wUAJ*wSmS>~(#pu( z)Dq8oM%~aLf9U&>{8NIkoSd+v2nBi6zBJVqs)3~yg8Vpe)fR*w##`C= zUA|z;Yo}Q!>*`DIdIWy^6zTbC5pf61fqE2ig#X>w6f>G3!PXn4&N`12!jm4{8b|He zFXjg$7pGq|!{%428b?7wl{z>)T)+rjwgic$28EsddwpFL3V}!|lOb_1Xh|djfljGZ zqcIVJLW%P8j7+XdRoM5NvseO|N|&n{HozhblSrXlMj{N0N;bs+sH0@0#z@JE*De^AhHaB#fGm4>%Z57Iw$*X{R#7ICsnBhG;8Ic^t4OEAhWjR^ z9LPFYDyRMl>APX)(&nG|yn2sOU+k-uqG`SwHtu}cBq6wsOGc4YYQ$PM*(Ixegr{sQ zNIG&-+Ghq}WpblRa55YB#4BrgOw}^P+CDY$rLXO@dM;btt~*)JKKN3e`)tfvF1pG= zP(posgrVz1O?^Af^yS|)bElbLXg*EVeG^5oK27C3+2}c!Ua0mV)psAOSQ{kOx7>5e zpTs8+KA+R~06s*nOVTx+yX4x4K1tV{@8R>jaG;)7qu;zT+?>kyO&btOye! zHB}>_cm){I;1qHqnKk4j;nlx0M|h+ZIqZfp>hOr%Rz`>>WJO6CnTS!D`HP59*oG$L zAkG8?LYo|+LeVKzRC`k`QZc16oy^DDX;~v2UsF}ST54ybrg!?8@wX8`Y=M#xS|xVLJuqxfi7>(0 zpF%*M&>9LmLT_dtMrUA%kD~+@ZFzy|r9e_O&v!d(ANw#u`q6!Jm66ekkyq5Xdy(Rp z$R^~TyrbyPNOe>Ofa9NQTqzogD-ok9pU~**p5Ap-Cdi9pqIF-+6>BzvewS#f6?JE(-s*A99Q%egOs<|F9WGZQzMhndK4_ju@P(mT#~|! ziDm>q{W3lg@p{BxSO_%=KTpfqq0>BQFZK0AS)6tIsmnuQE1iKhYrd$RilPh zHD$w2q-u%AnKTL1x6K{?HGh84PW@Shn z?-iNc{fDq?GHoSvKOj(pM_}@8CAHrW2^w&Znq}5%`oYvtka5v$mor732JqX6;&fQb zrlY;=0t?_DEh?EW(0TAx)d_#ps%C$KuYhFu!n?Utjy|R4-#}8=f!|6_oVl5MrEk9G zK4Ey!@C{ktVaK3@t9JVQ8v-j%-UtR}JgcJy!+eB7W?%Q}Fj|*z&8}&{JSeDajFdrg z2z!r}2f&!L40}A77!xAw08OTy^39~(MWPo^LwP4}Q$|+gB5>hGJC&^O9s1xR*Tu$nn&il@ofiM(-P^y4q8XYDnHIj&8L8E!0 zgf@vOm1hHuL@*8PW^Xuioh47pFiq@Sv&3z9rWsYbwpQOCu4KD^-bbSiNGriCP6Rq` zq`)W!P6oW=r3_FZ+s-FgAczxq+KdeFnRAiWH>}fvjPx^7-`6C zh@8W_-N2SHi)ZM}sxTocM_>_C_~FTr*-RofA<_miM2bmJxj8u$H;iW6RBcGns#U9Q z|BFwfT5FN2Rlid)G)B#~Y=7j5m=6xcR9l`TJx}}LvB;Uh0iU9ziqN*w? zA|jFGxZP+_&}bOLI0^tzP*p`mL?o0HQ@i$m?r8xel1cwp6~X?8zY_m{C`qO8qFi4R z>?bVXln6H~j4;Fhf&)lVmZl&GK?sV7IHqa#PC$6KxHgg|xBP;u|gzRx^=aPkgm-Wm$w1HR_itl&5HBq2k_wp>bUNo|qLwtddN zAJu3Nj0|Jjv{1Hf)BUG$g1G*4@kABOEWdhHuqm^|Y|{f~71)tAF<5eEmD@3SZC_NA zPV9v$r^gtN{1qF(^{Y+{EcOu9Ad@V+Qne+fjoNKGU5+LKYaC}_%yBD9qqKld%$Yh? znlNi4LHFayi*LpS{n4l;BIVrtxw;KRyG`xw{`L~LyK|CvRh&yk4r4iAY?*^QKp0zY zZ15co9D#fEA`g)ek${gva1w!=sgiRqK!a;~l2uNi zw!lGZhEn?E!@T(_>Qa%ZtuN3j|4yRXGQhZ2KGykEdYu@IUMs1;4NS^6fd+iCO&dI& zt|Y^2;wRMHpx@1fOgIMi=9VMpAh{`(eDHmuXUsmjA!Gn%l&Ba_L8<;3aR;w_dg4CU z#J@0eVX0|@x#WLWlF6Jg()l>vf!1-`y3O0ETRHQxQ8y%4OP#6Bvyyka;-o#75A~AQ z*1`wYR4MD29elN!-dIjJI}SaOK5)Tm{DSYap>|i-GE*ST5IHs7**j*WZ0a8i6uI5eE8xEe zLX?$rie&lgtCN(VtWNUttQWx)3(kbui&Ix^d7@?%Krf2$VU@+9ZB&pSM3SY3T--ZO zkRM6|Svy+AJ_)l670kZoU;rA1gNmT~j|_)j>SMZeai9=c(o+P-U(ck1U%t?SDjseO zKXu|!e?Ku~vUmis^nI5hhA&1CRW<(j#lD*PntRr2uJ4U{fd8EBDvU)VAK2{*SLj5^ zMkg2>r~HPkUBX*~lDleW#yn2VL%9ZJugkK=X?^_8WjL`-b?bn~FhQcY+U7{82q|=} zO%@bw>2B!c;GtVO-zKIQesY71q8=N@n|C+o9A`)3gW;@P2cofN7b09vTXSyD}5 zNlvh&(nj(bB3{=w@~M#*Js`0=m2W?AP){C+VN%$RSpQ^2+V}^0$Rg{AD0TP&a|z-| zn7Lb^5z;CPo~S#mTR@8GnsAGnz>e^NLuZVs1cjJB!74O#k))ecij01KZ#tn`1A|1H z&NGmuYmvio(M!z0Mu1C*&5#1h7doH^coli~j;P zCJ4BY1?Yr#{3S=?wbN4j7j{5yv!{8OtK6%mV(VRN4Yq zcR^aC+*lzt0~QS&7OSke$q2;&+>PD&g%_*p8tW+&E(S0Kpc4QVKnvo$dQZWwcn991 z|E3RbM=z!BXCTmtq4%ABcrEY3JpFerhs1)YyX8*JRU_UZQ8O~pLo$&BQu4VF-Lxo? zB6gu2N8E8S7}*Wz#mqE{S!YCcdz4uu;2#1_A|Y@}X5;+CHIkON@-*e>K)WH>UrHBB z)w~HY524Ya*v7i)WzpZkhrE}#s`;HVPmE7))*b&I!gGiw9}+CqO9GQKh$V4 zgkCW(>|xXVFO5ka>=Lzz7igh*Bp>`_bU`=BWwk+HRD?T059De#K`$(_efX(y$eY2V z@U?j--_eK6oO(okz&qSFc0cTVQ>Zhz75L>RUN890NAPRD&dguzgvJy%o`63L@cbXM z=ARuOOV1bczb&~xE>vfAHX>?sgPo`eU;dCX`(!Ks1*JVJKU_vVV@rR_2hCY2dql@I zC35G=(GnHsc#RF#6x}ME<+9+W3k7u;@#KRelXE(;PK@A@kkvV*+#0ODuQC!XK^9&H=dt6UD!tI5YN~%zo!6#K;t;U_MjcQTXC+ z2c^W#Wb7eJ1|z+-j_)a4wm6ig2RTvf&kSttea|auyhox5Bc~nUHExAYn=i{%3c;{R zLh8Nt)X8!5_UVjiREcM?$W7bpex!4nJE&N7HxWe10%0}+i52QJE#wH73>hWKLq;0X z62Z9Y@sq4!~RTDm$frI%7Qg=I-CC|SBR8&a>K zE9w6=@s8qlxG(W~f1~!8aPR4P#sl4&^@athU`mZE4I+eKeu)5s|Ei*@ID#M=>vFYp zaJk1s3l^`lbjr1hG!SlOt&~bVlxU|UqEwLQ7gunrz*grt*+h*UOf$MLCfp&A>4QgU z9`fPMIn7-EntQIweKzXJ@z|59^QNW$j&H^DwsKv?PA*_zB!l!E09fWGAfwCkvRg&qqh8M>_G z=XE9Ky1B{i?5OT!k(HOy2m%YR3H4dIAe$Ib-f+`6zPeO?)ZGz}PKnQJ&FkZA)a2jP z35by%a$?*oI?He|JoK>7zI}{25x}nmz-OKoeC^$@3Lt=AkMCdD6-IeoK5?gj65vQL z__-VKG(OgjO$y}21;io<@}E_3SH9_gry?UzT`Jo~;`LL6 z*h4X!L(RVXc4NN_+x$;upg=l0%`xUP3b~&-6))EYG4?ZKUigpXsRofIAo@ZH6P#j& zOi(6}1}7*~G7>$b-`f!Hc=YnrlTFyCh*Yt0#%+oYF(+zgfY^tkDF*@x}HCGbTN8YDT~}BO*WIWEUG= zvLj+9(Xq45vQ0?k4{*Q$deS{GA*h1C9lc!u1boK5K*WpX*1Y08xWlSrPuim-QIo0~C=@|6w-@MuqOL%1em%@k=hi7l5Fc8}qA^)X+fuNQbDklM9TlYr+m zo5Z42ok)73ARS~G)o4)pRN1cHn;mkc8D>4Syx$lbw!hQR^Mm;PSa4Q=)srr|UQWEY zbE$mFsKhAzX$%Ks40##GE#R+GN^Vw9i;gUBR#UizGtaKRe@JtNzPG}@wk0A1>}$NF zUh_mpI|Ew`WX*zURwg5qwSb@xOe9!Go!7}kEovqH)Z#s^G&&gO;8A2 zC#7$g${po}{-)%)*@WVC`d!m1;^34SaVcgtreWC1)pMb()rS6ab z>K&DSPL?vAY3)-HdE6fCV2+@~Tj-JlcEb`tu;BQ^kUkP@%wLmM&g44%A3-x~@{T`l zZNq)UhaUf8&dHpUXdr9_(KGA{Lwjm0$#t##6Qz~MeYXeSZ&${;*zX#BAlGK7F$#?MjqGloIBLu=q@ori7 zYL8UaeRceoXD0P`y^@!03soQ|yy@fd95r?^@Z>2Mr9@W*rw?8Pj?pbjxej`1LTyKs zmtL1kTLE|x1H3phQ08nX;uy&FyJFhFOf66Bq%nM7hmDz2nm`F1P8275azk?ln^eJ+ zPQ4A32L_|f!hmB7S@*0HsDOv(x~?~yubbn*v6e%_>2Fqgf;tg;W`>Z{-9vg=ee_T# z%I^;Z<-RjBw$i6^3t7E8%M(wEa$p*dODepSHL$^rOAB|rdN6@iZ;fwJZA9*1z6_RVuyMP_xv+PML# zK<#+0sEQ0+J$HV+&ve$Kt1?4QsfWETEEduu0`8n{)@iO{)&P(iM) zWEDsJDt%&C^R!bZtANS5`MZ1U=06)D!)4q>qzX(rlza zUltz-i}XO6SCgF9;FSu3BG*VX8L;c_AlLGg9mOZY3&_tZgFES7&NnRUxJY0GN+N{; zOx7BAH-xrlkkkQ7v-a*~sSfSXdSTj4sO?&GVTjl9@K^LzbTF3~wX}sHj^lx!(bWn2 zWTrj7+d0W~*KDPpt9|ss^v-UvwBUrY5uz*+|IzL{3e*?xF+cL1sJC{o3{X`Z46K$U zz_0W@t|D4tp9w69uOEcqoeQbWW$_*SQOA+c52PIJp@W{jqpa<}5=@g`qhb; z+ZL9f2)B%|J3(t~cwU;-ro?bT*Yd%^XcLF2j20CcedZoh2DHjzyo>3Du#<(=H#?7J z@OSh41=#!87dm5v?5pSUW|n#lHE^>dc?v(6I^vl?^uX-1e-r2`zfa|X32BIcS_pc~5S5 zYFzlZCZ`0E#TG7?%PltMc(yK<~VnpO%X%nG-+Bgf5S-%fDuq6_InHRbGCF*btd`Zl*a$p`in>dNZ6E z5-8WQw@Y)bw5T2-rprO(7rs9Om1DWC)IZ z?7`q%OqN7#2iXAWP0D?@s5N(IpAY+@WtJtYHYs1X8>hbjG*q%38?jpUjnt_-?6#>4n|ta~e8>D9jsts5ZUQzXU?{Iu zhW=y|w>>aJ`NBw2Iu&}0&j7+$)vcb2Q*Xenz8a8Zz~z;9z#8LKR8aLD&bimK1&MWeldSkddeAiqj76R;f@u zuBp2NFi1J&fzRvLOr^w1y%8tCby>*^uB-H(cL`G0vHr%>69Rbz&J9zU08gN^qoT~G zgpNl+tl(M~_e^`!8UC`9kTwNcdAhu4M#;VYPy=hm?wP+6p@ELyVnfb^$t_q0ifK@s zjArY6Pvt7$`GGpM%AO$w!oG-1yvJGBxu1r&=Se^S5p$`oBtnc0cUz=8>7u$et4{JK znEBzkz~}yxG?Mq$zJ^H&=VDjIo@?4_XV~Yl*PI9wcJwL#P@z)*iY*RPIV}j(n_3Row4^2m!hEnNp^kw~v z%sA4Nw`4t788?~#E^eGzyTqd?w_bixE(vzE{1*+^Xu2cu9e=+-C=8B@<>`;B+ih`l zT*vugWQ~pR>uyYhEcL5`z2qWG{I1`g=P3=&%1aJ?}yF+ZN%{%G^9Kt|dRk(I=e$%?%NNCM*b{vCeAdzqa=ddAFD!*ku6UXFB5xS(*#z3um30 z;~vt7-^P*QUgHc`or|o+ccKZ?=OsSH_d@xMl#T$&F_WwrJ$amreu)aeCr>^r?Wye* zXTX+9)4_SP95S_GZ*6mT5WX3n*~+VAK1=1|J5PyA)Rht!>*KaQJ3R<_MJ*FitrSxb zT7q%AzQ2=^iKO)2(%Nx`j4n?41xj^(kBMPK@1a8Ku`9Sbti3;=Nv^iGLQTyF{e6N2 znNt?p1?H;PGk3TG&hznrZRxrNseH?=q@#d3oUf2JR{*{>OB5b$&%f#+w(v=h{A(ET7~ygAhl2M>_(= zb92~x^~v8pVQ>zkTn5Hh#5zSag7a)Rzfx@YY7zYb2G=aY_Rj0xyh8RDa^5waovAkN zU#tn|?$XVnSC2{;U8(z?;C8UDL&?r7tEcuuMW8<rBYQU5)#fORx~8k6_mqeP{}FVo@p2RSFUWBLO~qi zrS7Dx=Dh^HNBHhV8EgE#^3@)Z|2_8}uAX`gkU zw{kE~zgnC2|7B<*sLV7xQT@HQ>Lru~oWIIt>tqI3%{YR|WXy80{1?Q=rK40S^+wgu z79K(x?MxrG077Dme*i*DEdQPCb9Dc|uT+!HSfxeff0E}#a0qxzjYrCQf-b%^66V8g z9jd!YnCf{8%mcrvDU8V5ETo)Xqp8oDzHhD!wr;%_JX3_xB;ud1aHjROKH?q%r;#z- zs&>aKe$agZcjSNUYPvh$RUPjP&APo)$6ped3R>q0C@$9*{!V|A-KAAp0n zl#`!%DdRPZFL5V+yF34qDEGsWz`a!f<&av8K{qxxuQykQR^rpOZ4^`xf+tY|d7C-V z)iwXU(o_PHsXupPHT-*z!J(07%<5VSSn<*l@de&OWHsI**FX~eB4y8(^q=#eeXdgE z>W@U4w=W~@b1#|Guo~5qR92pm z{+W8%X&b<6s+LE&D<7`*=l*@rE!etVJj#>*ftC1hZWk*qM(5h{dX--;KFOG)7j|ec z{yj-+bWeK5&Y8;_S;!L|4LVQ03|O=w8E?c|y_48O@po!6)0BNOa<-v2^guQ&zcb^c zXg~;L`;KG9k`oq_(sN&?VL`<8GvB~z2@A0{CiUcWt_jm@_*jQnWM52|9h0y1INajS zgkK%DU%`fDHUGYljn}KGwA{3+T+UC!LPY(hX$xkO|7>c6nFDAonN#OA{M^cA0{(tF0{2`vLBO%G_fOG;uLo zd4{GAp(nEoye0{?Kcx=ig-7KweI!dON%q?9>408LaPOstoBNKSZD;xJ$!VirD|hfc zdNTtq*1XUsji5*QwEIg}aJG%6@L6l)jkZqWX8+ya1aVBp-@qQZ6$Tks%h$f-f9uO` z=Q_^43-EbG9-$<3dQEU+Pdvz?;Wsr-+SWckBJ{W1icq{OP|Oq(m^+h%qPmXXSwa%@ zbrJWXTic#{kSbzW?^U^L8@K5y#e*OAsux8~zTn_R8at~WL6tABZuKZ5wjJV8?mIm_ zp*hKu2o(geA`rsCKn?WOMtn#7*B(Qpm_7iqjfYbKN=tDvlIE|v0G1MEF(lZ@`wpOa zouFLk25>?|koe7mIl>8pnkK-D?_E>`&m64P7~01|Vltx}7JoRBoNTMa_=;`(@-k7C zvT;{$%QV}v=OEIv4TWD@>xHoy;;6l#(1@&~>#=;;-1 zzobcSL-WI2qE)tjzoY=HpaJHcMD&mev~4b#IL|AZg-qX|7i!KOA6pt9h9B27Q1H%B z1M|GlRd1$Ph<)D=8_4(0gYNw&M3!_`3~my_7FY!=v=l#Y9Sh_?})5 zIhu;w79aC5nUo!BQfeV3+f(d+9^-$*0zthztK)PQd`>#4GoyxFA8w>9=CqcxD6ETAWCYAM$Io8hC;msf(J7%}$+f9HxT3()o6mVw_p zC&!g<^8G>cX<#k=THjwz27`RYpD*_JE&4v{HC-kpy+~o|Q+UAYS+uoE@G*%~klMXF zzgpz)N*lJyPnOpo&0xpySI1-TM0X0rBvI)7m|ocAT-cG$IN>dIG?!pDgN*Etdx(?B zA1*27`KkK7X8BF`v8c+_pU%@#bXos;3(PuQ?lsKGdq>;!Li9=VU#a->y>BBZt|vAi zDewfGPOiAe>PP&oRJMw7IsIv@J=K>>(artrOn|j}g%-}lpS>6^O`@MbIKNBF|H)GW zU+WD*$<~w&jPo2G7cp98QJ6e;+7SaMxHT<2-rZWiGbTQE+Y8=&SzR2q#O0tQ5O&SXUe5*X>SUR;+6L& zTc3ltY6qsSBSK!7+)b|sJxjS6XWL1d8x`ez(|$^s+nvRPow7tflNQ%nYwdPeHpj%= zwP2$XqpKWE{ZCizIG7$<+`nmdp1TYdpR2EW_#9!c(p$c!)42ODK7uSesoK1m!(!Q75^OmzP+ znGLEmb2+RHqvL|kjIxRz#`7$dx7C{;CDNZbQWLaoV1jl(B3NNmI_Jg1XMmpk%Q) zK1rE6|B?P-@DY7vJFkI%vbb-etr%ITo+Tw5BQ$54Z|Xczk`>c^$1}eCc94PVQ1^!X zR@+?99epgzR~`^&0|fV+LDz|Mp?AFL7_AN^SD?P$>Hguo@Ob&K?H$mljqS1Ar+V-m zTPD|>i&`N9>U zCS3~D3_usL#E5_O9;#hReL1=dWikNUFpye1Y1CH*=qXflaQdhMQJUtRuY3pnrQ3!3V2WQ{+^36X-oe}y9#0Y}H;w()LNDvIY2_RHG( z8FY#SvG;tXeLVYd&oQ-8bRruae2plnATjA|Ip`da0p={SqyXgdBH;=@RsU9;rHTZ?ukr+2LJm{{B@crQqJOVoydJYh9T8fcrgQYPd-&}L zJhnUw!_s_ou8hVgiLqm>^>L~nFAgq^a$4_&#gQ@uUMF~LYv~@e;!OZI17HOD{5!h~ zu1soeh`_jfgkS4ew>@Ga`}^GGld{cGdAv^5uaMz?0X9I%zw`Hq*(>=UWCTiAIK(fP z`ua{>S|g_UD2;N|zFan4JS`Zc;EM+p?rLn~r+RmAEdCIb!xi@e%6_839XxP=gxZ!i zyr9zn6R8H(2O7(2V4JidxiGXrlH^a$z6~f3RE&@x8y+cv{lW%O$hRKgPq}#f06>aI zpP{bOW4XUi&7REkTf=5z&eqO6=AO;InZ^7SlPP_+ZuT(;I1)Q$($tGV%j+?_m?8XTdas;et^tQv++n5cw^*3+qp z#1#}N#wU!!-TiJ>j0BL`(T>cVd2}M-1|Tg1{5Z_r|7PU~lgx>BW@gMwkNHbL^32BB ztw}rHT9^h=s64X?BWwcV9pw?d+@!dF}>v#?6ykEd)=sXVG>2;VG@)D8t%*_DR+oXVi27X zz?E`=P`Sb4eXvt*#>bfjP#ex&qTnRBGnAST42DBm!Ed08Xmo;&@>--8QCsx$5LgM3 z@2|Qy8xR%M?iUpN$;bGV@7YXr>I+H)AR8$i)IOtQL<|+4d4psm##2U_58nsZf z0y)v?2fZ7;FmjQ*60bb2FlpNZg|Da=X*cWS*w4nhZeyE47E$PS7OrKK{HfyDJj}`7 z@L+236NNGqiq>q3fCk#)_s;PLMiOpxWH>#!TvZT?LW_jHdps^TIu1w_e!z|9UCLnZ zO7u$RpzE&5jalCt^}Do}T+MF)ElNZBo3lD$hUPH{SGZdk_pGS_0+YI-%(RgVIZ*8M z6x$+Wy#ulXuBHcoaO{9ercjuvGBALgS3=dyfqoI@$Wn>^e0|tk7k96-) zhU($rnHk#)bo+op?<$B$V92cP*!71eBLpTX~(%Fz}-poIhbR zkyqK@bP-p9YY`v#1EB77AlbOeX5q)|y4Me-iBE3X#+N&p>{A5MIt-f;cs?zq^1L=_ zeX3t?g4$jHRRd6}^%KfioVsdcNvqEFq8aI%({l4YsDPk8#2FlahOFX8AqGC<5%C>8 z_Y^OsK7Nukie^V-hKD!sLBx{U9#mAD_ey#oURCK9;l`>eedtxFnn{L$_dlU(+QHoS z3O&TG)89CD>jH;?S8smaycql5ReXo#M_;V;&$6)(uSGD^s%=h$Y#;Y=aEv2XqXMB0 z5%qORt~k+8q&`Flu733P&-n$NTUk-R%XfXi)wOgKb0*`_iBN`Nq@UeXz~(7m2ZwmI z8blzJ7SdRo;*Epo8g(E-WHQgq{*hSKb}!%acjUrXgil~TE@gVAL2M@6bN+u&g=W}j zyFT|7=q06qW1>Jx@Kpyv93ZPVgYsYtalDXkl%p?ReB{nvylYbVyGOqIl)Ge14pEj0^@I?5OhZaZRx54b@c zfkh4RbD#(rqKqHz+R?*9X_AzfRoLPx7{|SSpsgpREulpcK6-}N#%N1vY0nRzxim}s zRryxboiiy{=9KR!&qObQA109~Dbf{{$3{2Sp;T)C!8h+lM>?jQf!aVFqe6rH%UB4v zRb1ndxyi}NMQoj<4K1y_EydSAwk-}yh0^#8jvuDp zEvhvT>Ui7R%|EEgA4*+@2j$n^_2lJW@O7w#dm~t#F_BORADdN;PK3Lc6hCqY5)1g= z;^#HQZNG(G(RJLQU_t9Al9qdzhElCTGmxsJ@P?mhWmf`k|$ze|bWzZk5htxD;I7P`;k3=X{G971tI>??i{AV+(s% zf>OI|c_uC)?TEnGxFBkVnOmrd7%MCSoJydB{q=MJ6hwjM-(!x4@9XkPP$TZ^Yd5e6 zAZ2w`>R7UHELAv#!wqYk=Kwo<-iZ!-mwfjc&IQ&}2Bh!GDNpw~l{T(2Jo8@!|B%VW zq{9Bp5$d_GGFyzC07+a~dA`pDMa`T4H25d37?X_nriQQMy6V$-$_F^+@iA;HCu4Gf z%g^uRnop)YSBgnYpPJ*G=UPmCyB3BDw62SfO{g$dg9lmGHaNJovB~HIP3tb;)hQJHrWKc?4FPA&o4n7>Pix~^ zCe4_d=BDKjaH*4De!L=X^WrliTfkyMro#3??s6YmRg#FHdXXAlELoL?D^LKFM{w{-9kKT;MvqUkaw~t?Te` z;8Al=K(cl~C%WW9*Vd^jDt$x4Rjr$L`MJVoiaoBYaREuto zOW<05ozF9MSEm`csGl+o@~av};@W?`k!RmWIx~0u>tg zv+Rmhw;%bfdbsTpiv(9^Xkr|ehvk3nS;Mpk<(omN;TsubkOTo_n*&Vm8d=>1zD+p4 zviEsHBml>SF#zC;N2m*xj?~J#HIG4_-y|_%eGmWbW$O*$_99~XaIgCWFJP&yFE4@9SFnhssEFx5z@2`G*(%?%i<@fYsq z_~XW0a{=m(lh!|QU;o9b>j9MVXirwuIyP175O9GT+1<~@#n{O069ME)z!u>KI?-}o zk69gUNA?`S--Nq^RHOQFmjY__xGa@wvPfMUHz}aH+pI%u0-2o-G80B}JJ`$J#nS7W zVpX7@i;Jya)$K5Kp`{;ObO(wcpN-!)m?oh-2*4TUwYa^&V?4GL)%WruN0N@PfdogQ zSVa7x?on|+hEE)no@eRqr)TKMjDb5s>6vkWY7=_NxYjeT^NRp*dcFm9ChEsk@1$XN zYDlHPaf3z1Mn{{o*^#j)#|IMtlKPz}oRFczuoww_V3I$_hnCtm*acqrgirZ`FZqUJ z!?DS?`3L@qf8?J#0q>n9b?CX)-$8uzG#y=@c0h$-jvML)Isv)W*wt*_s;pthN)PRyLWHZeH?ED*kTBv z#7ON3@0HET29|YsswCH!Xst9q5`}D*T6($GLhG~^y9EI`hM#7bR!1eXda7wzS5=qf z)@C}oWQ3EpSl{&fn%Ft=+Ss1oq9ivIwhT3`)n@dZ#j?4EN{4fe$(9AW!{z;rY;t4rlS(2}!DYE?nW<$D4TSR|ho7AJT0YX^TwZ`j^-9+OW^l z1w+t2uX+9f+b%r)F3rPNR5;3B_Hlqi9RBHus&Jvi2{6rjHsL$U?X~X`?}ZI;j=Xw9(XPK_ustw<}hVs4%P*ev6qCN|S1JQq8g*>nWPa6O;joL4HcKGWv z=L1~_VAT2Hmb?l8Sg!eD&S)(_z8N5I+t~PuUfqa^oV@WryC~C08RXe`&^kfZgKfbY zaT2VP5w0%W2)vO)GqX9VvQcF>|IGZ<5D(hYV7Eq~?5PN@?}>>8x297>dUcS=n*VTr zK6I=;g#jZT7C)QWz)qfbbbJr6_xb6P>JCgmko4amleI7QS*UE3>h5>rA3FBuFJrRm zzEpNJxU_!Sl?SPz|9MdF8UUPGH;wq_Zf7yGOvTKCcIg)QTL+VeI8hCrL_OX;^Ap&S ze&@jsg>wtL+<7wm9h%?JX8@+IMzq8TU}`c5(+c;*t0p7Dq|C)G3`lai)o&Fma^{j zlxHyX?jfiv#rDmlI95TNc1e8ZB>A?Wx^vRh49Sbsj9f0I3%9Q(MrSsrVFDb)+3N7u z7O6QgqqKek>ZL~Tx4^NfzT^YRui9xTdnqreaH%Az2C0Wo z5vU%N3{8MZ!Q@~hxCk5#{|x`n@^@e|@)hzUDjf9$EkM_zJJFZW-=$ln-(ql>6PO%K zC8h&2j1|F}W1X>K*yl3JGI}!gvZrLJvR7nhWFN?G$o>x(h1-%N$z71wmCux)mw%|B zu3)S{QSeYWqcE)S0y3pgVs&0`&w_b{?ImAio*JJ9%>ZR!2(^u3F z*FU3Qr9Z5HOMhAaz(C!=)gZ~B)L_IAW@v6$W;kj1!3b@1(uiTiF?Svfs*`lTt+wAggY^lvjcvmmoMvpsWD z^G@?g3lobDi%S;M7AqF7EIwKsSV~yRS{}DFwxn3PTZULBSY}ujTh?1%vHZnK#Y)F2 z!>Y)t$Lg}xq}6k)J+dU(f*emyBNvcs$Q|S%@&tL7yh?sSen-S6#BSVf#%{&#`IY<5Zr|>w-T&S8s`lRtZ=8LX z{k;8qnmEmhc9zylTc<0~Bk0BSA^Ix)DSeCn(E;Y5?_lmgb#Qj@aR_sWb4Yf`b*OQK zJDNHMIkq~^J3ey!KLf!~Wau(17(q@1r#Polr$wi2r*F<7&PmRh=Cixcs7oXt*!{uo z&vyT|`_DU%yYt~aAMN>k&$m3M;AmPKz(4`efMNjP4v0};i$W;(SqM=i!5pAb);cpu)I7QAsGAc4Uh6an) zCojg6Gd6in@-d}GSz7WI&E3r1%HzWcwTs9nKlju#6!PzK4sZGzzVrlt;XZ9G%2_tC zTIn|8#}#VoXsD2`cY;vU5*BjJd6$}Zb|Hp}Es2n@5+24kgD>Tiar3S|*HP?|?u^$y z`%&ikMIsXGD{{U3&SHgQhcvTQX3bPE0g2^7#CT|lLEzn@vBVg9cH)A#$>B%Bt?|tm z`}mgDG(d9fqBM&O%%K}#g=y13` zX6$@S@F2K;H6?@eel2%y9}I3wH5nBgehWiP7}!Eau-K3mhTA&NKpThQ14pd@?c}IX z=bTqablPmuO$cT&Ax6|lgaumBe*&#e<$pVOQbzv;pM4SUO(u`utC2kN5Z`KkHr?I8 zjtH9%4jF0t0&yAI#g}Rs()0}{3J@NfQZfTZiZlPXveG5_KxZcUR zThnRePZ%%GrL$92xlFk^2IS(1jW1*+2&eR?2yj+sJK2Uk@gWc zMrjB9etJ1_$Ice%_sdYChSl&nu$rt|3m3`Q#=y*YWTRlC7QJyZ>x#z%yMSL6vLK?TJef-)l-1K4u1 z{YUvg3RIEWV+f6Fp4&fIW*C}cQ2lBj*tQBlC1)??-h_S$t^|WnX;85j>3Bxw7a~V7 z*L`qZncHI&cP9x!pqBV;qKOi6ru9z&P_P}Y@H@VzQD1VyCS(RkqLc{qo z#}bU-?zKS3WwH)=>m0fl;lyRK#eBKWs64-_UXmL(EBzF=WVj{Awf@;hr41T<8}zF~ z{kta-khwg%Zm0ruXd}Zd{h!zc1Jevvo0X4bU4oJ6!bpi}08iVQe@h0XUq2fI%hKi% zL>(Qi8eZ7++wso%jY3BZ z4wzT3!slmPf|c!(VOSi2lj7RDZMR9ECR{}uFu1DX09`nDW1?(=6z!FfNRN*Xv2el*W%4;C#9#72F5j$Qoks0ao?oIc$Z(k_RB zvs;xrs}484jTt;zjBXPJrESqLD@SbrSXE*fN@JCb*QtI$A~0Ek zy4SAyT1vVDrmxMZ&@ijIKA9C;rXPHd$D(Op#YM|Yso5BNxmsx17^6a-0e10JPsDsY za^DZ!tG*o=NpF^$+Xn|~8Y&{$+|%)C5gbOYbzxfGu!sez23f>|Z&fF2u2zE4iL|~C zHZ=~YLd~>bV6{hJ9cTg$SDZ=MJrfiywai3H9{_l9#3B>NsPMQ`ZTIs*e9{_0WgTE# zNk0I6?#)epY}S`)su9u$&~2EZc2En62n?`&U=F`_H9G<5tiJXL0(x+y1~w|SqsLAY zVL(7_)6m%jBcVY@K&ucWR9TSFdl-CA!Q6nDW0atLd>Au4C6#3Dq=%q`&#Awna+-E- zjZz$~cinW24_ST_@^c_>md^mnW7S%hxJF?lB8Tq)2B)_m{IZoDj47%djVunraoY|p z*U?2D*c?cb(7^3Px?}6y1HWEP!4H^_19TyndTVs@X+tzEd3=Oz3atgD9}hi|uytBN zlsf+JB0DJc7642!4Xg|2fg4Te%-%6R_(qsrEoSH(HBf#t;jLXZ+KMh*_I2sk(bbu` zEcjX*>>}`t6pV^T_*W?(wOQaZPU@PnpI*R!_~3?#gI67NaEW7&N~<3-5T*#u@`MC( z6-;?1+a|k=^`uY)tN|Oa=HlKl*~SWCiRI`9MmS; z{FMg5Z!V?Z@RDh4Qbb7sb3D|XI2Yxsp6{NCFdrDc$^|icx$~tn3QXp$Y#g?Infws( zfqrFpoZ8X0b&n1=wp7Qo@}P!U5xkOOdsr*PH(W&XcvY+3p&vIts_4t1)B1J z3o>d}tzs5A3-&uI)qti)TusJ-y?n=hov(?27oSd6V(afP!0Z1=zv-xk39S~zj;oI)cY*gN=6iwHC^tr(lEnXQDN6KQQ9 zj2j2Eq3hMGi3b^#43oYt4p`Dm^uprZD=wb^*2>yCGHm(Ea+HDrYWhNs;X4XnMk!6b zwP5-s*FX1Oy{LX?21b=+bsU)|Q-nk_nm!UD5G`l|s1=oV} zf-*;a5mb%k{V3n?r=4cp=6t=cs-8#?^)|}jBB8neF3E{vM_-XE!1s0o|Te3aOa+Tb)}0Gk7M-u-luBqYXgh z$td(T`gCCIn5QbT=$cpdkuXTqaX10_TSrv$17N=S+qbvF^YxBY9EO`*6c=vT-p&&X zKRaE5*m~~J84#v#*C%Aum!ohxlERV_6rG1EG+H9$U}S@$*kD977uGmy{$qo}^1rQs zdMMJ2oViAqe4r&)!W|RuzA^(mcJMf=V2c1fey;k4VaTBW1K&X zMSD#0=Pi{t{6R(@?FNj>FbWd9fY-W}1`Tl)^z-U-zbXLC+>0#h`%7ZyGkk97U z^L7t$xKDoRtdtu$uDTU5rdvfJ?K@^z2?(GR!gt#N@!$_Wr}$ajdIi}zVs&f%$xsd^cu7%o!%s7H@@;)pJt}$>s#zbyvF15PLhB(YTbNtf zna>8Yjd4Wv^bAWN9WB$B62w7fRF<5>2FhU3BTWLD@&r=5{z zjfTenW+1Y=6B^tlY?D03vCR{~h(DnU*r>8bM#PBkeX?wk4SE!!feC71jMg_@kP3&h zS_mJqUC>DSbQFNd>X%vgt=P#`i3KFe0p+MUA~*OwbM(yIcFKUgU5au?sJj6reax|u^D_^Ji z(dYM|K&2@P@F>#U`9jJ_v%M=HmbQ!jPjx*58@(27COq->$ADI7b(C*dFA{At)KIKP$jLBGYh#K_ET5Ms8ODwC?3?gA0N{O>zAVSICDk5>CkzQdFO7>M}vp z9AyC-v~p;Uw&S2LBVV9%y(WMYxBejy5lT?V3_!~#WcrtCrBGa(C`KrR9{8$h!!%kl zV<_0}4qvu0w$5u{6bmHO*FdD7KCXEYl?YsDN*9x1gkWLd=*2QYLI0?Ln(heT56_81 zBDz=;o3rG*V7#YIVa2K#jD8yZn)WN4*jl;4%WS1p;=(b{z+6p4YIKfgwC^>rG^(Ez zXtfv-y(w`Z(lg0SMMTN5Ac4k8=Fk&HcM(&yg^F6&scyR=5g8s#$$6#N!8>euRwTAVrX0_rO2H7Zi5}^&2pd%CL{G9sF ziVq&1b{e%GeET?Ubs(jQ!MQMC+QpdOmy(nFDG?;DqY3;^rqqwEyg}1wO*$j5-7D0{ z6sq13^)}Gx)0U(Ct|R@!r|gmOq`8%X9&;972Cb49ohaW+?t{h00e^eseI@q)pm3sI zs9l)NHmYy+4?BuPuY^5d)aWWWw`FqK+(F(oWV5vc`9I0k_wO9{D8s#d=G!@g7Vj*w zpIAyHpQvaPK}v|XL$bYe9x(ak`MXCU=sjlde>aouDJOoSLbPCkp2?JdYnXQthj;i= zFpq@8;SOW;95p?LQck19L!w9UTXYetKXNyqrFV%Z>@F=PcuS6HU3SI#A0rvF2&aU? z5k>x2hN_R)T7a`Dyyj7@ujMBEk%+u4aPTpX>SM?W+YvMOfFnC&?-_1~maS%{h+@D^ zoksgH*N7R$mhN0&d13}}?(OOM;r2BGaax5d^$N2eD z?N|_HB2%%S_PbBSavE?y21;>DwCpsCAmX=)M6FxI63{ox zTujOOy&_P_-K#0{mUh2ke)+Ob8!vG9b{FLBip)kbJMXe8Czl?_-u+`cqFE0R&wsG zI7k8$W0;0Q!3B6)2RGluGlRp}U2o>A&Qoj*m^46!gmS`HLbFJ62h(+*XuxH-%>kZ+ zn?7u2Ksz|)1gh_BTb&vjaq?6Jg-c`enY?V39O}1fSJe>@ZZjeTJ}vZ4Za#n9dSdA0 zG?0obQJO?=4iQ4u^+iSMFm;#5VwVd0tQK_Mjvnl`dD#RwN)WSJt{Q1C0V}QSl))|I zOc2t^0k*t5xf?bpKNC~f?Q{SEFE=9meTXbP0I!owNm(jIZ1Pl7%Ap{?P(c*NeVe&H7vs9fIDZ z8?M10-lIkA3&!$YIgMp6y{BVh6NtqvO|C?92hGwwJqiB#>91?18#qvkKMai!58(mT zySTbQf%g8bY%A8S)Mdi~8CnuZ$FiLH`5d2i?OK?L?37&Fhe@e_Q9Y_olTQC{O0TSv z-t)2pxt+)*-nd`BDcA^q$X2zceEPU}`kREr-Zk(z&V3y4yXicWV%nZD|*4UIxl+~UIB~#ha4iNw$*^USj4{sAEOEHS&a{#3x?0G4&;!J^G}+rwJn> z?XM;$<|;7h*gF`v~-~%IN$c~pZ z1=lvpJScVKO2XnHYa>OI3A=w~o*f^(D7a5n(IxIQA?;QYvnPYLsROM|NjLFu1NNu= zVcfeN<`CpG91hcvc0^gr@Tnn9r5SU5?y{>s zex1eo#XP7zBf}0xc31_q_}>BZa_}V^Fh+AkPEIw4ogU_vMKY|~!bcTDS%agnle}36 zT1AN@-by04w!Znv+LjGD3P}T_>}mZdE;vV}O=3`DSyc?yHOk`GBIq4st*cA*to`Zg zm}R1SXs_KeYW|8@uRy-db_yAazf zWjM;0l{8SG`?GV2tawVN-#5vSq1td#a&VzsJ!ah0WlPB(=uCR-cRucbci{(jGnyCx zQ+iEt{1kNaeUe65m$3!d+;&;FQ@Uq5zM+A~sZAjMJPM=Fatj63ih6u$h!G%go&c*j zVlZ_FLr@fX5ML~uKsmXDztgnpNuy9ekgudCLv-ctGLZh}czk1beVZKKus#1f^}u!s zf>#Zy=Aax04e1{zC+eaBL%6XTKSk-C)G46^?mdyN+Is+0qCab>95BV`aF9;$jrirIPB zD_Cj*h|7ieu$1QDI6BPW{Rt@GC@F83$ANl%B?GNhT{i3Ub^7 zLMFt3^gx!gm%zqDgXNn~@G4GK*4Jhh@j!2WgQ1FuIrW zPFUa8C6T;jlmyUfNEAjD4_c+Lr~zmvlF39FtT&r$_p+}S`SxCBWu0;g5bO<@ALz@l z!;?5SQafXH2JcJ>a(We$o1BVItbK+=s%&om$rSvgkxNz|0q<^4p=X?unAJ7 zz=~3>VEb=irGD&A-wb{uurN`HquurDJ7`Y^rkDl%eVR8m#A47l5LT_LPu|+uw}Kcg z{jF2p@^;kl7(7Y-xZ$U=CBxm=A@D9?p&i_NaCTO$;!s#p`ZI>~Lif0sQx@;Gb8aML z_Io07RyFznyoBU9h*Krg5(%Jjb6Yy}g4d1lIzzc>I@|fHCIjlE9SmvU2o>;56LPFN zro@+RVni(r2hc^~X}mB*Kt~mqx~n{XM-*C$1u+X4 zc2tTM&3E*bRuGFI99an<8qJ|TKRW8SP7h`0k{G!u6CW`nj)a%m%r<6d$K4BkHUFgWsIo*|){@qJlMU&l zRNyFu!GIB;AvHXv7uud*qpJNtx$K`bTreV({Z zW>@JXvSsvb0%KwY{*w!A4}|=AUFm184o*H9HXK3?J=pMwsynoUopjnQ#1Xn zY)|(7?ZwnEL~bAXnP;iby<&hSa>nW zV*Y&caaC0nU<#xWWI8wEh3uFx&OuJbkWT-OqEQ-d4nBeOYf*?}hWTNp|REAAnu<0W?m z&Q@cvDqdBTV`+yWL1m(yto@kRUU+xxw3=w*O_ z??Msm=VN4))scn2v`H^&o08LmYT~z|l`;K((9YW%dO1no%`G>jLpYxadtE+h-PY%R zzB+C10_!)(8RKi2XbIL#Q)f>rn?Cv6#w~;%Q2=8*cbwQ*GoRu{2l43z6zSir5J5+= zP%9V|ydb#SaGZ2M!^DXI>R3+2+J$T#ImrJi$N(Cus z$ZKI56q^Rl;*dfw^srl+BD8g8hGa~9%qfB59_9b$GbFMy95Qe&H@EgOF-F+QB>60O zI7ArCAyt?iJB$BT>&Tz{0~;P+-!@nyR$SbrXIQCyu3=VDzOn6v4*lH+;}jx!PEnar ze~n1RI0cz$=q}6fZuO+&Rut<8%)3qNfgscvYTfA@9i7c+xpjA&gcwQHk(>k9Si7sh zw51d4#sR_`^ei0QH8%qQsg~?@ER}iGvlt9-;=mUR2sTfI|lxL(Rvo3L<3I3}$gp!S?cB zz;B9QIVtD-nzCsMks(gkw2~zo6TJcOQY=g#-Ry7~PBKx(UB1v7WE^VnR-dMfQVa!9 z)Z&ZX!Re~Q@69u-+HEDasmr^1Nk-HO@Z*=^mg@bJ;t5j;!%^lWO}!=|tBghEiD8P^ z3AM+Xv8Lrcn(op$B321bP5oh0<|jtlu$`KqHsHT7YGJgg8l6C$QE?+PtEshZQ?ZNEzeW6IST4?9C znqRfW^1I@{KOW%-URm-`-*9dN1m_|p_)58CO##C9VzF4I z+p;KPC+@Ec_l_SJPDaWp&`3i=wjXFKm^PnZ$&!jpRvY3P%OmlhzhG190;~}hs@|t* z!go_q!lwj;;6c-g49oJhI+0T&DSt=|G$rkc0~5N7BbKE0Jw|(vW~P&=ivdsKWz+%k z?ewC;O`o)W)-b~maeTV#zeE#E=y=TS#5o)0KrKlqP*o0R>rY0gkespDcA%3s$n*fO z%;AukG0Dj5P$c~L^wKOM%9yU7#QXv>*jM#T*b0YIhPw~QX58?OF9-ucy!GcmH{fsU z{(_HGe&-~s{GV8_!J7xaGb6O%)D0eN)?c}pEY8U@u|-YMQQ zvGK)YqaPa_$^xnQvaKAVu!pLaF`;P-L@+pL>MUF5x?TqXP5Vq;$!(=~a*i?`stb!n z-0g~T^a}X99a*!H)$;HiivtJQI0<8Ow_iE!l$r3V60tOiDtxhm^{QII`dojhMqZb! znn`gg&*#jY$k_>u6Gjd9ZD*?#c6Zn#-4SMKGqL)ES&;>>Pv|CQNUOkHRuv6=#gZW_ z5DJL_&K1zg$yckIafe{$S3YpQO@SJRr?h!EIwHdg4&Hj-U_Ay;-q%<#?=H(NuS2hl zKx8kHJ4-dZ*!^Q`^d;5&>+x6Lw-nE_o-UVXRzeR5dsAr&YWkJk2$hGc)uKeK($#q0%kPWo)*2dv<1SlJxa%;Pm5^46{V_&@9Es zy(B_@Nts*^TQak6)uU476=h*QuKg zjO#kNe;|7G$>VHEVX`#g2CIlz+)M);f>J72`#0u_Wr3~`)qGybu-{JL@B4A_jg7!; z0yZsZevv6|Q$X8J4m^ubz^4Ggx9K|Mif(efG8##TW>^EOfjDplWcL!E+>2?s$A$17 zMdWR1#^TNSKmD|_W4?6F*E}JaDqcV#+mh$|6xFyQ9sU{Ml`1ouL@BTa{4oc+hTxzs z=Sc7$6;7LAO=0t+M?E@@c^FS(FFvMesR#+^_v+t%x(T-8ppDHxwT*OGp=O(iuumXu-q`N=1)kVuq)VW0j+(bj znQ~v$fx^*?@GsPWh%8QP^44DOmCwqJw!SAcEhG8d8_T%AyIp3|!r?f;dHgCwFcNuD zScW`huIT-H+3g(O>L|Iz{8jhqJ11S5aXu2f)+}u<%ecosyphnfMy6aM4Cb^HQb$gq zjwoKPMDuU863WZLvrr>8Nj`G!#a$xC@ij`%c^PfxJx8sH%~m4ny*))|@>2ZPkY=<7 z&w>8=yjuQAJBy7jsjO)U)Wki!7;d=`h}h%TU)EcM5|vwW2}aYi&}TFlKYVG&FT<6gwUm$h}eOh zQBpnC^eeBmx@QoM1Qi1 zxu|N}s1!|sXAL9tnQz$H^e)R5aEO=*b$4uD5kw;1#o(}%1o4**xasn_j}VTe>Kvy_ zlMQ_Oi@hNbyWvMYI$?Fw82ksHb*swOd|ogl2^lZp(h=ys!RwU*N8g{gml>$1l}OXz z@O{Q5l)TV#2HnbqaKL}{07}hZ?vXXp@f@Pv5BfBgk;iC}4!Zh)EY`Cf{2`g^j+}oL z4&2)bwe{cpVlsW7O4`nx+1E~$cld3u^GC1R@f1BX`XSb|E=qxd;jpsV zn+a2+HU2tLYe@*!7hu zgy8p7IdjNC=`b)aLYX+YxYc_~4SMFVWC;NH*}=-c_BQnnWbw8`vkSR{(p4?+bNqKB zW5Vv`!_%`uWABzuhlubYvvdzeKMYxSbu?=&Rw^Y)7QvhyVaXmz473jC*2;`VBDNZ> z+Xsam(KJ15H~Wx+RYK#snya;I!6->-f7-BJcN2}n1Jg(uJ2_1Azx2~ImD2OiG@&WD z1xa(Ac*#3JmbUO%-Ibhr8gA3@bd3<<3+;Cv_?m;$69al&AF-XalR~Qu{;%yn2(4r9 zVSBAxy5=AN*cD*=rh3MFlB0hQm(`U)pwo9^S-f!mS zc>9hbwi*NZ2>fZ|s#|9#(g208l9-C9Soxf9{`bjtKT8~C)G(!0{me9JM>Fjhx;Ll| z+&@EdD9Y2{8dlyueRW+I%37#21n1t**7n?g^x*;Hk_uD^s3@4ZRl!egFYIB;A;-&T zv$blWAIxIiGz}2s+fKh07TrKk6+3Vr@zWXLw`gn2T`E()R|e;-1kSu0IRgZ{SdT=} z`{OhEq6j7UN>3MbK1s6bE}R3-`F6%o3NZ_-n;&H1jaN(cX(?;ex|S%(S;|EYsQ>+{ z&2Wer7U1pP9WRJE(4t%$lj?tfUW2>6>xyW9P`3O3e3#sdG!Y0vT=z6EB=nW<31f1P z*tj`Ut7ZW{{BodxCZn??PB*ks*9Yoiqdy1>9n=l^j8J8GcI0YI>l#QY%`Iv&oXM0$ zq+Pb#rw*zK@)$@3ehKtWT;?TpVLJ7Q2oT-mbKqbU-A!Xf@eY=2oKQPzZ&J_`E&ONm zGMdSO5FZabB7APAC8FXYY3fKGX>e7r{vHi9z;Xik9Y=ByK{}~oTcVUJ-wTZ7EjhAH zBiHYKD>dHQOc>K@EO9e6 zj)05CZbjS(;N?0JhkB(+iS8m5it4nUmc$M*p~}hpaosOc4TaOJJ$u1=&uXS$(=(EV z=~M@vlG8@y8#I_1c#6dI@i~SHCm3G$)HiqmlTh^a=awRRdo?GIx5^!L<2ap-CrHW) z{7`p#CUB)LY3nWikYtxID)VfhRYSdP&*^SBSTXtd3Q_Vs_+|LJumLs!T{EK0;|d?H z9jU+_WE56{4SmSd?&3SrJxwr;#~sKD5b?#xh&(9!HC?jVT!4O6epQN}x(I`72G%P< z!(n~*^zx!|mABtnRz(AJ16lP-n$qA`mfwOf%)}KI6!8t0n@=eU52Ek7LBD*f8tzIY zdmj=^;GUhV>VCqxCbk2~Z9Oewy&NciV#gdhk$pIYk$3@rB93)H4sHR>58T!MIEcMo zCS^H`$YA0eHM(L6N)G#5lB11o0!!YDPDDY_1oe~^MqUlguqv+h?dMu4K<{dE_ICnm z+LpF8z+!yq8Z?34jDU{Mr}f%6@_aP`o+=MC>TvQHX{lD)9_dTO$1V#LVM)uY(!VEP z!QqMO)O&KaiX5)UoqU-0g<#QN=k1CqZB)Z$;(kS&p8u6#_BQ%TyK#+P>-#Q<1&_l z3gTl?HAuW~U>MgPIeg`zK++M~k0i`fP6Z9b!%Q5r+EhW)a+*>|VC0@P&=cB@g`kn2 zfQ&?q7bm(nd-q|E<_q|O4Q8eCt(z;=5JZNAH4q`JB<7r|uUV-BUA>t8Z-P7NDe~pl zetchY3hlNieA9j91(J8k$MS;Dc6Oo{-!Z$Iy2v#Txi*<+*x$x71~?GN3v_(vbd5|= zN>WtcjyiyO?`W2u(_;Qft22c0tYTuC!`>`)D^IZPAf+t_-A7iVI^UbC!%5G2DJ(Bi z!beJHA`P6xNTD-aG}dZu9Z;&i^`z+_Nq7z8T-n&Y&s9m0*5NTzKl}NEAybPd64BZ& zE=7i)-p-6f5K<{6SOamv78zM7A=FqEUrL>Ub8oFr>?wbta^L2s8hGH>;HW1{U#;){cmp7d$1fV* zr!+`-K>{({TF*z2FNuP|f8f`t#)M^MQH?*RGcLhn2WHZzcbisblIq9YXuiMAs*K7% z8&S4Q6jtZ1aw<*2NI1-$&bF~~Ner=7q?(Ou<~_%+%I4u_cr+8?CHbWV6q#Vj?#yc< z$>be=er7@H*(f4fwl#h8Z1&SCIO(9TXi)kbr+R*U z97XnHB|JZ7jKMYjWvrAfUPmo;1lF`5S$)L`|s)dP`X%|aV(0dPt?&7W@<%MRhoW-2CO~(-6Kn6w6n=^ zVrPN+kF+ET8>&jj>c=yObF4cfG4tyrYR6?vK7)6bkL4m*D_v8OUtFJEVimQY`21hp znyAh@YgsF>k>_#}icN=)5-H?yDM?T51RIythN=4hKv+sNxeZxPoqc zyfw-TL0++d>#opPBdtxBssk(Ycte-49*<&{tQ>WoQ}#PQ)z0RF5J$HP+I*r>pLuSG z+0`Z`@G@pqcy{*%O;NPny;`|zp^LJAZy@wx@cy@8*gMsmF zg-25&88|D`XC$$Fv>K|deg0e^BrlH>4jK6}@LX#EmrtK~`+Kwgc+9jM*Ll+a3oEVA zwO2Xg4=S@ll3>XBZ|0;~5zpgc#%X(SISPC~Pu|gM`>qp<9awvZ(ylwtf`)cw0}7Rk z)Mlk#Kv*5U{8J0kXqDE={e6z!%&?#WgabSdG{=;x?I0J0kwH#n%c)$?R=(}OJgSrf zwezIo3ERJKL^Gt#c)4J{QFtNsF=#=1R>w^BIU|2JekAH@M8O*w^;c>p4B>oeaj1JR zr8|f@n&}GbeS3q8ByQhs6Y{b=r)Ie%%- zSYKy{)Umg3EHksrfXf2(Y=z%_ekSKmT{F$ASB9;zsrjYlg*gf~Jvjv; z5GA)L>I8sRWF6784=r-u@0?@0iz2{^XpXi;H$JosQlK8S^sZh-0;0(O+dcn2-c_Ny zo&_~Bj4$uBjmsYKh?gqGPJyecq6Q3jJ1&>&oenZzNm6+$Ug+N=UCt0hxdJ;s-euE{ zte~?d(Z1^oBp~%|N(BliB(E30L=|>jLn<$lu;i=(Vn0>7a@WU{mA4$kb%(jTS+p6$ z5B$3Js1Zha!C(`Rp)7lBVP=y-8|182`T}|MbRcDxuAXY(7F_43^^}y}$EXC0kzD9y zpCaz?Zr^`A8||Y=Z7>(j*h+Rh7W*3>Y$;(1Bvxm-WA!zfXr5ms+jGAoeMOAX@s@sGF_RM1$Y+!QDd&|J^x1 z?Z75$_D|bPASQ2W`(t=Wj#LBr@0gE7YBKr7R8f{;9-Ca5$lGG*+kQLIsU8^bXIBtVL81Rs+Z!ggPdT+=T zpf7m_lqWt+S%-fKi4`9dvQqwE1YF~Q+q5V&s0iH2+p@(b@LQ$@MWjUA-bI^OIit8kcF5H=}32z37_kwVCPGcTOw}pBa*eD>+Q(Ys07a#n65ShkHkiP z<2VcFMnH<>>huUOOGOHGl*RwI>_HZOIncXi2JSe@Qd@C3rSo$c4P)!|WI9udXZ^OD zf!d~C!P{cx)iU>WUnlwQd7E^d>92)~T+1K7)0Wv-!joEvqcjTaZ(miY}+_v1CiqVH0)2_v(IUDbLbL|qnmL>(TPNlH}zXm6@uWwgQ<#og1b zpOY@+)p#vzs5ovZVb!}lZTh?6?s%cF_z7D=%EVCIz(S4P3Y((4TPn}(bRg}pvK+Tt z4z72h;k&`itl2dqq5xRzN2}oW7_icktA+*8T2}6LO`hry0pAlup+XJPZFW`a9!QEO z>MVd&2ZI;law#Bnjpf2p+|}F_^=QgU>6A^@mP0fhK9PO|Nmy{dfyT|6wD9UR`j(_? zW?Q_;u+GD_x9_%}{r2Kz2q0>zQGlW*ex}VAn;|9@L*WbbjDc1JKc|zR_Na=eZck`~ z1zmaaa;kpMrYYk_-9`)uuZDF9P1_WFjwNXcGF2SNM`4&d%Hj>9_gfGSmppNRR)~+H zgc=b&3K})&SqI_1!}1~QU$E6<1{RKRXf$Bs$P-PnbdU~4i=l^cQ2LLw;0e_D{kY&Q zG0-?X{IF8hy`BBuJ~WoM#pKGRFJyeiwVSt zHM-wp?0w;3CZ-cfnEXSL!nRYk4K;Ue^|mowI-9iUU}&18&eR6HDG~^nFDqD|=pWqa zh4WFZr4T zopFyQv>maz(^!v3pS_}W`s`1!;Sp=f@r9OsG`vE5z|hCgYg5ac+3@o3+Jh+Lfseax zrx0e2Q_XlJf9EEc-Q_k?77E`_aW&C<>B&;ALqrjf+}Bg?$2m6kq%LS5oE=PNM&L+5X2lR0ojIy>Wl63U$M9{2S=8C|cp17$(;QTxVPYb=lC=9$ddYWe zBpWmFLyd{)Xrjfd~ zmO{6uti|(vpYV^@-=m64ODiXc^(!;`kls7w|58JW`BWUw`oqyfpTG8T{k^w;YTRwi z@Fq%s<7;4l;4-o8ZDYV~c({2U4szyU`^kbOa>sdG#I}jZBgOZRM5sF<7(H%173C|S z<@R_8+5Q@}c9HO>aUUI0VL-On_mH@hH4H+_+rPxv(d9VCvu0n9)Xa^>7#PeX ztkc`#^6I~$7FRU@z|ckpsDo1?VM|$gHdsAz%qe7RL{_V9EYK;)9!v`iC8;cYZogGB z6!7G4F^=D^_zR2N?zZm)z@?%TeL3yGYBW*mwms`6UzhU?G0(&Qcs7rhK=tp6FRtXrL#XZpch^-Zk>6Z0-f5v$95L5mFwWM#axgGTWn~>CLrm4 z_K&W8V}8%V?TcJMM!K{6y1(emIxqh#NGHO2H7X5Wmyo=D5Z>jMN=d@}G)+g=q%~cj zfhX<(uJ~mSlBv~wHAxklm|A4rK(17I-C~+16T!n@adcSU1;r*>Vi?1FwQ40g(sgDk zjs{GJ3$R^GqXvfY<#h{CrHIYTG8E?5N{P^EuhS zeP#7gt&mkBHptf@=9ml=DmN$jo=ykA#PB6*70PxLUPIgdml|uG>ifaHa<`Jy2}&9n!fj}4YV6o#l(cHGMR{(x~62y+aCVKu!uz7 z9iHzoFjSXxG$4szBsqu+Lg3Tax=UrKYm7A&{v=SNW14_#Eb|B_ekJZ1yR;Q@9)(b* z!A%%D3CXd+dW$$2q(g2AkZfByxZ5c)&R%x{IqZS|Uw2wNKm=#4Xh+MIJk@-}!0nXA zkKPPMZHmb++}IH4gsK+o=k4W1rF!^<#fO3u$Bl>xo!x;dbVzX zGzNhn7YA3)Q7pgvE_SF#-OH+hlqYx2j_xtPLZbN4oZJckOe`0hxo<{-BRcoCgRI_~{{O(@Q zShKV`sb9@-EJI@v=WUYupee9yfmg2zi()wk+U~KtI$u7Zz7U<+v91+)$jd2+ABMq>C6DQ)e_b%>>06A4{u@5n8xm@az|YL{K2JD0ijY^>_Yd@a}V z`nZ+0Z%kPBc81t8lpF;jXdmdK%09C$xMy#P^z1Y6z$n}ShshwtCKK02^0<)YIi~dk z(D}t_7P#sHCLg+bv?nQKbW%m#9tw|cAK+glL1A)K{*N>WWiAbhb$~J&Sy-Fz^X4ZM z>hF-nHg$j(z*QEd4QuoZtY9yu62ojzdWiu_vE=A~@z0^Q0kXgLwR~k}pvGvEmcbpL zY@_*t2|v&pQ5qSjf131AzD&H-T+92;3wbcuRdK5?kx8&| z9Zhd=5jD|6J%E1u^(AGe^wFPV%$lX?H)~vaJH4x56~g5bDlHzP(uI5bU!tHloGwjE zVxuUp%%#ngAIF*&LmM@nsS8A2va6PnXp9qHF~LW$!UzCekth~cK@-UGP5oMd0x3X0 z44-g6bSgmWC|=@slG`x@XHwGi;8DZ8ZgIN;UbH*UM~cE$)(KXJXu~i|52o$B4p8(W z=AqqZAAVWdf5N5iC;Ik@?9G7)=V4f+r_$7% zOv5feQ3}tlm85C!j3r$uHxwG0 zDJr+xPcGL|3&jrpVC@{WabaN0JX77vWj__OT-0IWwOpj`63 zX$P~S+2#v1Kl?nbD9?cO+=~`+L)cs)R;x+PZTzxL?AJbrf_|kC3w%J|4zk!FGk_I^ zs)5)%gDX{v9#*dFIIrW>P2wo-K~) z?t+$AeUx*m>ZD4W8vx`K#^}*hQs39tmRW?W6Wj=fV@aiM9$!#*7&j+$s6tf+4hj{Y zWZ5Drx_DFHT%Ib7%$RVDq&F2oLFo>shxut|`lcY1*!&0Sc7&C>$CkWs3`Ztp zz@khB+2OXKnUY;%Rpzpp2o;;fN=;aT&@=L+Wp#F{aVxh~fpYCyoMHN9 z*rA*vka8hOa_k@VQChJ8gC*1~TZ7PaAfYR) zQNC5!MhzV=1=FLecBye82x{cIWv7EeH`5%gI$&6Mb?K5cYee~$K9~7dUse8bjC(~3 z4YD^V`R}(b0OeVb!HJq&_oBqmzd%bBB=CWi)^bS6`?;U~w_t)F!?D9crud)6rmRY?Y->CTEO zaJ^@6nl}n+IqQ7Tm50FMOvmuUR1`Y?kVKL^zcx?PORGX6nMJMne6W=c#y?Y7cCr-l zLx6l328N23^k@wkhvP#xfc`tW-T}-qSAyvF3>6}}ca)sQvu-;o@%xC-0v^Pl7(FuCv1U=Z)?kpQ9I$KLoxkkp2 zwkm}CBTCEheA37=`gPzbPpJc)i80{5=T}&kXiwuABdH;Lq!!aYSN`L;J4kK#c_z66 zOcu|^Mml@f!6|#F-N52Y@LSJCxwNP#%qvLWW{l_4DKVTasikTt{Jx+h*ul5tT&d0! z*?%5`efC8rPn7RHxv;sE;1h?@Df}z0u=F$OaUGC>MsEYA%(lHo&Xev$?kTV_kmn=OFXiaP51un z@518pNC~+2&#X=;mT5}D)Fq|UzEHyn>+#sR}lR&tXZkzEjhk>zKpx;S+B=V3tw-#ny( zNd;n5UE%yzzFB3OIXksA`K=D#IKxuY)Xy9wT<5viu&Flk1 zG3cnp6s~6&ZOSp$SZX4O41=Fq-YTN{DA1FindZ=VHdmYw2WMrGo|N4sr5JLL3ER<4 z*7Ke=W=2J)lv>3bb)+_j<3~dn9aJU(r*s5C7to|OxsqWtlz*vbq$@lhTuz1M4Hnkd zPmU}RT@<+gVC0CQnfn})MSf7`*d$8EE!|YqSVS2JbQAco$S%_89_(Tf)x?*!J*u!8ZaJ(0X_9>>g=Lm2nlsd|AAK3g~(siEC$q?gf?TWOxCu zV7!n?Bvz_)P%gPyjz$k#c~zS~AO%J9SQF~@L zx`CZ@ZNH|U_+r=2`YCbWr{7}hPgR{U&{3rkl78%0 zxP{(aNNHMpd`SSKQB+*iUUON-VJAr>$5GP>r8eo{7j(%|>Ro%hoT4(!&QXfYWT=5J0~3$_+iW`Vwf5}REC8M&FD z^?RH>5*RE}_Rwh#6iA~;opWJ!1r_&2{#2f+EbR;t@kcUd*o8uht*d?^)@jCT zmzM)ye(*}D`GZG~O>XG#JV%oqK2>qClapFKl|`}Tu56y$8b}#dyW4q*&Xi*gU8cd^ z>&~3FwOY8bs2A-UnO!lj_p_f7{=dD^V+ zy;ncp)v~3Nbdn;)uKogos9wSVY=Vu3dt{~$yR?wSoU=|KhArp zt!eT8CBr+iZ1k1pN>TND+h5r$gB6=cHx6sPMM3Nm+nDKOhk;I+62(fy1PYZ@!CK?d zjx7Wx-47h13)JD`w2upsyj_Qk9V2YJNjPb4vDe};dVp?;0Oo4__FLS>(9>Y~54@55 zo-f#6ka5N;FP!Z9g6P0c=FX*kAGGd5>UpXDAdydgY{Mjs{Yms_r`!s?YE$roKDH2} ztv;2eppRQ8jb8QG2P1E{AIt$1tyag*sD@#Nl7-!FZ51=RyR7Qp*}Tdl$Xha;3nP!? zD|Z3ufqg@E9KimjV(Kn3X2-rfty1NsAsE!^COv;v{YZb(n9%hn^_D%8 z%DE42c-dJf#VRWE)pF_AJbDX>6?BRjG>G-DM!_C8dbx#DDd44j@A3TB0UD36`)SVx zl{o}q-x5L3!#T*8P?w{ph0R2aq3*UpC48-E?kf7n_YGs8X@0myzqj9gS>9RTF@ zuUm$AKMqJw?ZL>)SgyVb!WzI62Of;eESjan1rrLADbBM+nDH+c=i^%Pihj0{!Vajd z9ljs98md4g^DG0;lok`r1t1KnWV;6JX+E-nBZN1AjlU8O0?JOD`k?YC|B9khfPY|+ z^K3liu;)9pu0t4G#)m{3^RMJJJ#xm-8T-pUwt7=Kl%Ono+_}c$ct{J<-Jdg}Rq=?#WuNp+0;Mq#p$_Z+`beio zR`dQX8Ah(eT-288v!FlSITWB#Z^7N3#%4Hq9Dl@zlWV#iR&c|5X8g3=k`u)~}7vCi0eo<#r! zN&rxC(Xo|>uc-KXXt9BK@gBRiFqtw=5~VEhOIit{0Y@igQz8LM=Gz@WVwBeVGpuy| z!ln@fiM;L_BMJ6FK@CE)6PUuyUKYj_-PFcG7NuOjt5TOA+)Kb9Lf^sHJs z`dDm?6c~*-?#mK_xFWLZub_@aQs)m8_nsL2@pt+ExH>4UCrkTlw0U5V=uLY&%^kS` zn$~}Q;HL78qHv5e)gJZ>=Yy>!c#t&xpQL67IY2xX)38g-G3TYMU)BIgxOy07ku#DZ!BMg(n20YZvao))C*pE>vY&zrMcKe& z!#F5F_qv)zfyWiJ0gxgHGkU#|(ktPO6G(TC0>;Ax2#h!t0XiaXM}TU}IJjM&X~HTl z!WzzBBCzvZMAg!qm`stqIJSisJWBj^(d)tIPc=J|GL6~zR@`>%Md(wOySCK`W;K8w z!=wR-k3{62*&~X=D4u_JR^8Lj#H?*&6Tn?8N#7)@W!Uqq4rz6yi8FqfA}g1KlL;-N*3t@s6xVH444(rs>Goow74I4Us3kc zoP)`EAs0^$C#79)a!e3$4lRk$?UDzMQcEMWTb0|Jl?5(U-w+rhAmoCX4yC~?mY0b$ zy^I#f9#E@dRcm%r&RH8$xDvmMqVp!bs8gsnsW6T3v85sSa;Nc zn`IYpc?WRyfeJmi90Dwb%6Q-%N$j0is|L5KBr@A?_P;5og$zma6Z7leqBpt|E};!g zM}iv<0SZ=#bc!atf8)%*<;lx`*8#Mv{m}IyxaC4L!K!2=S(36dHEfeuL2vn~FU-Xi z#x_4PauW&4?@G=?AV7z#8%1vziM@V2-%wRmSpf!%^B_Gq3G!H5=_tP2l7={sceREg zBIlj)pC){ImzfqEuHgSCZ*=eG*JHMUFVb2zW#I-I4*xqt&V?=SpXf$vGx9P!*>etV zat`L+U3j?Av+!HKLb5t6Zac_DbAQPVFN7BEEM#-xd;r%L!^Ced1QxjV!}g0@_66Cl@gH?r z2#D%Xsl=R6VKKW#(}gEIBsD%c?pDN-P~g%Q4KK;fSS7)sL9imI2cXW|We+y2jqg5| zFCfYl%?K+=rDhuQXXfvTqp>?G`XDozVj`U)XaLb_F)K^npI=n{i`Ny@AWJyjp& z-oMCP4`C$IePhJ|X9@Wmpvr}s?&o9vZ_1OIsj`!EA|}m0CUpLy=I(>968v`K_;wj< z-azB6xRw*pEfGt?(h5z2>M4&_0+63y){G#LsUSE^+cJ{oH5s72Wyj%`g95oS65$Xx zf(RXWDlz^V#x9E;1xtZkfxI9Bp!F3Q2Tg;g(K^|>@Wn&1@CR4e+wE-Iz@H=TWcBNq z)?6TdkR~S;z5xH2B+&2Ctmb0+8uFku?Qq4>0RVh!PQM0^sg*}~>sf}n*U^IBo5ZEE z^i4;ROW667m0x}N#R(Y&e@1}jTx^Gxei?ahV&F!+zkghpew_23{B$i)*m}OC!cjHE z#7FrV%GQX&2Q)SssDOF7PHd~7?@A~d3TQuD)Zk-V>VD6*@XjYFXoXzG}G zx%28cdjq2Y;MI1H&Vw6?~aZR4OzA^2t>J-Tb@~>IfkU%g!j)c zMJy1);B!4#U*eWm9sXbpz2dNYJh2udk*_5dGF6It<;F~AW&sF#u{%I%Jl+tDCdd-Z zD6U1_D#qV46Ksr=);A^|-6T)eBzC)AE{@cug&G_v)rIkeDl(u0wN5aIJ|v?M`z}59 zvl%8-xbLJ0<4RNG*l^JAMp>bTQnl$8I7ja8drMMwwp(_nd=RspZS+DaPrFF&H@D!k z?AP%BZ9Cbde>#08;`&3eZ8~-niTBbpS1@DQGiZW#Qj2H>#?t3Awe3C+#lRmCKRDl7 zef?HEfpObYrHNT9zS9ORHRAWS!4*FXZ+IF4h5saQq~+m`lyn%7ZrKR})cBbS0v~1I z%IQry=E%YTB!v~mWyBDEe*p9l zjtyL1nVLabZ=4d$VHh$#$E7YnNE2`njl!!NKORt4l3~P>Z!aa`@C$u1IZb4Oqy1Y? zf|I#G^W@=-LiOvew@tB_EbGSw`RtuK)CjBjbK{yDUPtNatH$gPc69qd^vwc6KfCum zWxD0F?mp8TwJZFW>&;`%*o7aMww>K12+zcmgb8Y9Sc2OmnZ(`Kk;vo?qKl{%RDU9_ zr8*H)Wyz2T{FvSo?=^aXsd)>3cBCW>#RB!XEk#KJ{0{jUVbIIyMRarxmt!Yi|L)6g z;$Isx-c)HyDHogdd{j92s-Aayl@PXyqbd>El4bin%iGiKfMmmp1U$f`>3cK>E}A3W zzJsI(?v)ruPHsXVsiD?YhkeMm3p`>9B8g?5D1^=KsiT7tX2(FhymsIs0Kk!-esA#e z0M+W|X>0ze4c`U;(E7`xgNg7gZuwK$@g3E57{JIFpi=x#&mEDw!TkNteRmb%0B@T=H~bX6I5i;v?u%r7aFZIPMhlUbaOH zZ-DJ81r7J{dZ)@vyhLnBi?XFb>B1Bz%Rk9D#A)0tjxBhl7fR!&(^#aw1>DTre7er^ zKRuT*?uiT`85x`JOAM6voEJk16WYUa$JE zF6OpH^4(;vwnimi_UJuK%5yzEH$$}+6T8{LWL<hbMtWZEjpt>qFj z$gjsQG*{8N9jEzb%bn>s*epHcP#_uluxAHSGgM8opGziS;ed`)6dy zA%+{nG5*_0F7AL1Z(-dd@$D#ZyK;Qk1-UgQ>*tLzshX{7BbYT#x~A||7iw`(GA*UH z321e894LjbX(hboshY0(SN%~%?mq38D=PR2MF^10=jxjVbe9JJ-P{Yu?Rvma4r|S4~)SwdwQHz79$KNoBs^Od*PH<~j zh}q#S)DDok5q_9a>TOzYWJ<$>k2Q${9q7W&>uD&wBeU5d>Pk+1gxTTY9cciU)eMKs z=!7w}m}T;2JN6lXwv45d4>GWt7235{?=y95M{|>c1uL;P)(AmgeIU6i_%;Ip=*;NJ zePrv=V5}Q>b>5>*Hz8H13N9`<%-g;oUVyNWqzIexMZHIj(Jzjq#9>$ zaJq*|bbh47 sTvrFz?t0n@H_#3+vfR8EsEJ8i^wZs1kF6SeYo*uNMpK#ALjQbW28Ud03IG5A literal 0 HcmV?d00001 diff --git a/assets/inter-italic-vietnamese.6ce511fb.woff2 b/assets/inter-italic-vietnamese.6ce511fb.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e4f788ee02bb687bc1d5045483ff0d381e7654e0 GIT binary patch literal 8784 zcmV-WBCp+dPew8T0RR9103uKT5dZ)H07v)$03qf80|eaw00000000000000000000 z0000Qfg~G@2plRuNLE2of^r66KT}jeRDl`*f;ca13aUh<5HP?}0X7081B4(8f)W4( zAO(d82Ot{>Lo)-x#sL^4@1Z66za(%|6q8eQ+Z$6!gJ(^}bq0;sONFdCj08aplr^jN?-K#&i3_{-NOKRw33LCqts3fdRWZHY0E~MB`M9Kq3P73JDO>nrZmz>DYaut z$W&>Z5Q1t|%c{QrGvW>qa(4M0P9mpnR$H7Pu&;>Po03^G;;MVIS)*nTgdU*W^Am>Pm(3j$ zgtL}x(jNb#P?F!;gr2f^EZ*!;G#1;7(a>Lb@PomSO$MW2$o=N;Rn_%BJb(h}Mu3(n zcQSVjl`bn~HY05*rH=M4fPg^?z(u6wJ5jb=YX5>Om0pxyr{-2FmDb9f%%x5lhAmS! zTQiq{rG~);EK%=uo9QaDw=_!VULzEpP>k_tg6aFZ+X4X%qiOpD3VLWuU?6lt5wlRj zCfGRzmpY-rA>ptNA>f$MEiCjJ7Gh)}Wg@%~fs75{Q2>g7QGy*(GqAw=crIKQvSLwU z!Nk)ke{5&J;H8y-4i?oYUwa?~eX=h-20a)6s9>#54W-7|A|RN)7Az>}U_?Lx;Fs+r zI=Gt;P$<#Xo@u*8jQp!h{SGQ5NQ?@UDhLXdDr2>ujh#c4YBiiZd=5K9w;o|`|k^e~VC#s+tw3G=Z43sJybXx3Z#^dL|IH%6nI9L6ZhfwG28fewbC zDvV+jqZq{~Mlp&}*_(v*V~3)7d_YI&`%&RAJ@JgdI_`Ca1r%ckZj=zE4y{f_wZxhO zoI@{hW-TG`TfyNlj#;xSBp6-%w4HlPm=0TxbS~xd+JPIZq6LNN8h)eh;G8%pw>J{F zA#0}Sd-E6MzP|Yp#Sdl(=yED~R8qAp`MC=jhMjtv5s3yAxN3^PT+BxS_hF@8T}QD6 z4`B!Pw2z{|^PvjVt|Ga>Ov_G-3J0)oaME&P4ieBb=%%kwF&%ni_jx#O7$t)=aHvNH zNn;&$T>^BP8(Cdd{gKis0n8y<&7nH1aWQ%c0?Gx@s6wDxXK)B0Isp?z&?uLJ{g$%Y zgrbj~-voFAh+v@sC)7hL1Rw!36S^5ZpzbFLz{SZRWMyt{t*jT)hzQ3BxhtATYh)T{w(4Tjf{%{2`F1CkrC2^8tu zpTN!Ay;$82pl3UZ;cXFu3a8cK{Zc8lri3G?JQ0i{hX9QW8@CFw1znv>**QlWMI11iUTBLEF1{9WkJu!uAZpGYIQ$1CP6nvb%TaO1DX$y7P~) zyWqInU3iLuaIPrn09|N8t6bL%u>ctHXi$VE2JKgzd{4iFGFMybT^0nG_Iehgl-_*P+3J!-{mP5L2R;T^x;e3=UDjLycA%_^@cBg_jPEa?p%J zi(E+bXkrjxbh;gmFgZiMpaMq~>LNI1mmX$er#Vg(vD?}9IAO1oETZ=5Q>tH?0akP=tjDypd3Pij+=dDnlq!+Bq{p#(6BvgjVkc!tpy065(dsTX%acQ-YEr z%BhO;$aeHStd7I#dJ3#D@VA0tS8MjYyL~HLp$U-9S;d$3)$c*d`L))?q=% z7poD=+QJTGkiIw@&LJjWJEv(3Qi7`1Y+E=ge>a&Qb?o~wnFjOxAi<8dAnQODjQgk^Alh|^>Zu@&;E zRDE>xLbzaLU}%WlLv4Sd=(f6-`x$&WMRMz`FtCIzz!uc(10nx&UQq)(8H%k!I|l_z z!b&~Yq#2Wz{5Usnb!lkFYE#=t1Fu8cpc@ILd+BAH`87lsvi}t1D%x$Xpda}rh^bBa z)&_C^IvkP9lw~v`b9DuWTl6@1c={&Y2r?#J7J)Ffl*lheWe=Ipu_}X}Fn#}QOFLF8 zT`=Qt12#JX7Y0U^RsGE{x{G|h1uTfKpRbD}qWpu{Mq3&HB6EN-*|T|7;4ER;$HHLe zH%<1zzm(Zmsmgzqw<1F&**}QGIm4@z?FPB}R=TDtQxAR#&VhUy*hyW8Bg`l_QhWsD zR6?89CQs6@uqcIw9zE zJ?meyc6Vnu-I5t(dOei5jxGN!%5w2P%Tj0Dtu`9g6HCsK!esB08R8ZE1w@|^+)2H( zcmkb2???gYrA#0v4@N6)DgAsAx%#lyixotj>#+BExZkH5q|cm(!a)Ep3cQCjxn&5u z$PjC5({5S&eT!g?vMDj2!BqGu|M^v@*Z9(=_(Eoa!j}BUH^Cm`vm1loj&+bk4hePY z!cHCT8~kyioh*FtjYkKZW`XFLj3)}Ow{W{+C!!NQ4ciT>bojcZm1SVc8@?#}kwz8H z>yW`Sc)n$!$Olk3Sew-^Sor;-C;DgG1E%PGw?Klu?W$0B>e7SQYhpu%X=bWrGMspZ z&D=^g3p@aYaXke}cry~H=~mf%_F$VZwZyAvyM#4)_slBqQ2z}lP$2u*0|42_ph97l z%H=QTf;!ad`-}|z;cR|)b3o{?&1aY#VZ z1(Hzz%8gPxPlYu*1!LpD0AK}y4bcJE^7zP|Wzm5rcvqWD1|u;O$jqFblD!{~3{h{c z%+d~&?dINYCTEjlT0%T$cPnQm)q|aYVAo}54Yiyk$ zAUSM4;V;>ajE``R^OrnnatLQIV#0^llVyo9eXX%hp4txDX6lZ%W!Yln$bMF=x~;@} z8wpi)S6e`6XKyf{1Tm#J8}N;xt#w1rI}W(l;16F+V;krVDK2wt%fnoH&ID9QiOSr0 zzpuN$bA#D`=A_sSZ=|18Ls+z;C#C%AKrT6kNYD4Mg@AVspX|Q#c|&z$=e~P;7?VQu z=&1_VwG>ANE30@@z2n4i9^G}}DxcHuD5`jy0zzxW$??@;qIZA*pn=&qga-Wc2NHmP z?$Ac*{Mist#=qjhZ1A5SE~MbQAaEpoC(2+t22pWI-f7xg{b?2=chHAYEs8DK!1nt45b1BWl<(w zcqfHhZ+3FvYg{M1pturhnE4*{X9K{9E4v0&AC9n{@J@n~8jNc)WpHNanKe+bfOl@M z9||j(KIX;-mR=uK1&Tf_GU=M|083}OI6B^D>5Mf;=jN~q0~=3)v#tdSne8`CRCE3r zPzOLg9wRPWM#j1lWmD*)m<&1WVj0E@Uldm33}hIoG;`F;(JJWC|7?{7?b%e~wZv-V z0n~rRxBkE1fBye$>&U$sNO}Nx1q-L&2&^eDMlVzp6>hNJPmHy_Q zNV9W&KVl-E4OLyK4K!rajHz!Xjai~(~miYxrLd<+{3)Z{Kg`5JFqfX9jq1B1KW)~j>G2c z#3|#9agI1Tj)BX?jo_AWPjFvw`*<>59&d~f$FuM&1Z1v*U`EIz+$56pY2pzgmn2Ba zC%KLTWJ#_B4$6Q)1prcqsv4dS^EHeU1X3paMIbvodn`$$@ejW1nUD?k5BbirzMWC5xdsn673jK!yx*%n4Fv{44<+(e;BR z^AmaWvqi59jrOCMULIzXh)guT)*pBaI04!xqG2K#2uu;tGNF^5)*09d0n)XWq0VMf zxi!m-2QGa#vLxcIqpfdvo=fw7f5!=Nl8%0mYFZ7p>3csb8E3qpSKBLAtuiSQufp)h zm?4W9UQ_vBv56`n;FTY{xI_W!b~!X{v)zKELjV7~rZ3M8a zx`_oxy1P*;NYQ4~%A`a2kKfbDVxvYdN_fH-mqWlf*&>XMP|F`3t-T8OF1l&L_JWph zQK$+m-O~Gx4H-FLFIAMBTAu*r_X4?=yW=QC4J;hXD`UaT9DvBqGL_DP9YSO{;V6jx z_mjEIw;L^Da~*8``aI@*_t&vs4Y!+~ z+Vp#W-_Kt=Y!!aA)dOF8EcNR>dm$j%zTgF+q!xER*9u?TI88=Q<88xO)F2H+k9WD# zF8+!X9N;WeT=>C_{ZuB33~t3nlo+=Woq>UBgBHmHlU6PK)Pt6UBxK({@WF;x+w;TQ zw#)gn$k5vkj^F3Ol)%2Kt~SMwcj)?psFNl!V!~cb`Qwi)UT8GxvxtZ+Uhg{xKpPgE zS`XPTGUFr*dvL?a5+_Y3|0GtT;Sx$*85U@`XcBO~v4eXoJJ}=Uc_-vxuDyP(DFx+a zfJWW9VF>G@wjd2d7cQbMD^4L;nKfId&Rvahnt>GqOsH0~3PTZiRO*eOjpC<@2QTgiO-j1wq ztCB&hs-o^ok(8dOR(#ltX(Da}Mo!f3?_1r4clbK$P1>E?L3zI#3T2q1RvDI?*L*&j zNrbLaVjYC!9I&)WQ#cKguf)$H)>7sAG-a+7ZWgqRCKe_5bD7(f0u7C@wLrnbLJ_!h zQuz0P##R?6$H1v!J*eEKfqkTOEPy~NzFS*> z(4CcoV2F;AcpyV#DR6Y%i5S1!M5wYF55SppS(GGoStCW^o2`_A&W7L zv3lKmO`0j=#`%eraiMM_(*3pSX9nD)Ogr?QVWJI}LXXswCQ=P|&tR=8g7|3(vx;to zT3;x5FcmKr2`{p;!nqrdelW}quVO4XXtm&otnC~+t+NjI2J>3txOIFNX@>KvqhN~U z#-li14{x~;pMeFUPn8LPLaDlVpKg2O266Qo&+@`Z;I;qBa{k7|t3}B(ugi0SM_h-b z)njL`fmqa*+&Z?hhB4STpIt2)|-WM~iq-c#}A{;b-`?)SL9yobJQ`gA3BGh%n4wu12k~LV+E%WV_lnJq zj4~axmLR^>VjyNy3ufiLvq4;M;*l0JQ4k|7W|XYjayy6tR;YjjE1W}0s{#JzZzP{K z^P$xQSu#!lUmi?t$|m-o?pAZ_X9RT?iN!1x6%Y1&!7WOA)2#@ZHs*NT4^p^1n`nBr z+#J%9r)|yBe@lQqTP4;C`08WIo_CAicY*J^z$4!P1a3%dQG%R)7Ox4OAmVX1c~z1D z9#-RqAAKIGT?_JUds|wxL}@Pm!PwY`GxH0#9_fy{@YVn6K8ppZc9aLMsLePo7q4Rs zc2gz_^n-irz8Tpxz12S?jvq+W#%-Ve|IC?bVN?CdR`eJ$l1Nz6rF!6^+Y+H?bbZn0dmz z#bu)}e=&>YAFF!yaYh%~VBSSyaPNt4whFaLevE^2gP?<#do0#p*-!TQV~mWhTAm;E z`vZaD$=(+^IK@%m4mb@C*P!)_%yT^UIJ(#OSm_XVDC>LN>kxg-?eUUB3^sQbGmha` zRsD0|^h)J2(3Ta?0u5D2(+GBz-C>ONw)8V)a6tslG6X^>#bR-JKJ)q1 zL@ahs#Q;&lQ$hxE*Xuw^78pFJRz%(Ct%6Jy=LZ~;X)gR@U5|xg5i;PkC7~OJzR%+6 ztwwb^ZZAy74i2YG{+sEJBM@i`cn?2OW-olWs z$(PuX_IThXgTV>jNC_T=YO|=K6pnU&u3yY%iyrK5h*^@9ObH)`iN1D13A4wpTYu<6 zuCz!>ZyWSMsPICiP{_vP*@DNKXek(^!Q76~_&wo~f4ImgQUg+@kaZSWA-KS~_&a0z z%4)HUK*3sl>#6Tm`E^QJy8JPe>pm0`o>u4SQzM=T!z`Jcci$IY{N60Ce_ANYTlU>v zM-kuT$eTbYO5%0gVD)Tep~cZS+YZ`C^GhSC`7W3HaSd-wbv1xW*gv=U^@h=|ICyop z2Zs$FmP*TWAH8p(_HdUKzP8O>6t*tPJg#TUU$+ok)OTX%X3`yxuJG}*Dqfq-dTX@^ zPqo#$%Vs#U1qYzI6yfebLfn+I&g12sF}DADQ?vD0bG9~;|K1p@{bQ;P$=?lA<15Hu-$hg<79$kyn`ZF@p+J z122TX-7vT0kpeIUhkyE+otOO52s%0lH#WrA8s4rXkS8=YGi>=%;r z>|`)WUS>(>HtRgly#eps*_Z|+W zo%X=~efRv|!sB|_4kD4mfuTSo9K1(6JzgFg`yf}O8nsB0z@^enOei;$Z&Z}|xiy~l z`iTnm9ofES{!~VzJt^U>tK_GtG@rikbxt(SXJ+IWNWlXXN~z~ErKVNWuWB&oa^DFH zJWp^Nr8QYr48z#{D45Lo%Gc|(U1;S`U4I^XZ)lGxDQV4Woo(Ty_pQN0`}eue%nbJq zylFFMR6kV>cS^Xr@I;n{rsdcKr4e{}NVN~wgGcvLm3`N@PZ?+gs?f7jEVOU4&G zPyU?KtoAhXA7hKA9m~^**G|2L?MHZe#s-{ZgQRulkj>lvV zb)*$FLgRM5I%L5LyGx6d=PY!26}jDOV!G+tflW?d-Ey9nQ|qfOP3OrF|`Wh`rI;V615~;2U^jj z(djgvjsikl{9=N<+F&U=*b~8cm07d9Xm)1>mK8pr16(h4-#TBJTQ890t+@s3R@UDV zz2|7?#Ibv2Bz3T{tFRwCNc^l9FszNiG`y;`Qg0ezfUW6^u z5%-^kv}zaDrIY2`?x{JMv8o-?#-Z^xTDlAeZ2icC+}_#b%yt);Nia5=bTl3PQ<>?w zWS1;W;%irK%JZ48iXI6oR8ovexSbjFI|he+Sj8|-gM}(GHRr>{;2;Gb>a{0=9X+FS znV|!atS{f$A~oY*T4KOC5)OGzjwHsT&R9HQe3o0#L*YECgmvi~jxH-2zf*15_=fl3 zA4t}Zwm`dadt5=SoU#QzeStBd#ylxdB)T`w1`%CB3#RVVjyA#jWg0W}_Lc zc&t33^-9oS547IH)i{Xx=r<=)#eeZkT^iYvh*uvs6JS8l*KFFAFxU0S?3Ec^?;6A^ z{6|~2g8dceomy5|S>Ml4f1A6XULa$tC8e27@?F5UJn;2k`J^NB5(hVVuDLeB+ldn_ zk=2Fw1_Z!`=l~uv4G5;X3T9;RHz+_DEr1ZL`v`Oh`6zHW;iFM0F*1Ymso-+`Na|Qm zBo7>(bv~W~|MMBJ*z_3@VlsEg$>1|l6uU1UG3~wr3Nq{~WKZUnL_o-`*cd09mJ&B2 zCQbCS#aT7-0;TVjz6?u&x#~H*>BTGF)NtGD-;+-13VKkszf8AIy;(km4 G0002QVTgqQ literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic-ext.e75737ce.woff2 b/assets/inter-roman-cyrillic-ext.e75737ce.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..28593ccb8a4d849a746f2b970678fe426cb136e8 GIT binary patch literal 26600 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-cyrillic.5f2c6c8c.woff2 b/assets/inter-roman-cyrillic.5f2c6c8c.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a20adc161f433a7c4e3d92306301b9228bcf9fb4 GIT binary patch literal 16780 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

    KZ;k8ywA} z5k-SpDU(i8*gg^cv8>58r3@ub4OcK9&& znNhG_@GxqjVK3B&J%{D^HbH;deaX7Mp9Z32&^3D3f90mP=tF!fe9&>s;W0m~7?~A3 zux4`Z+_2B&&IRlyCT>ODZ`DXBg;?l>VcO7-v}Qn30>_G#L1tGZ60ycSW|dPuxCY~C z?DBUN4%cm!9{5w@zZ1rtvV6t&#meNl)pp}^FESGHmRz)CQKWID{e* zKl&Jl=Nczd7`2WWH@A)KYebMQNnqpHcr{eH5E61_)_fc#_p$9HX1N4TnjTJg-%wWH zoq3G1+6~rHwRoT!c1E-&qYs_3xi#$fI(6%GlvNp~MUmFlAu`Q+Aa;zrmahphCCG}z z0y;PaNCP>ruFkBkB;~qvNr}(}C+wTEUKCkk+*V_on5fG3DN%xiKzSk#3FGD1ut~Lt z^w~RQ$7Jwk)6g@$ICnR$+9l9SPld{*PkotiKI(+q(R~t;(U^h;-`ly|GZwjNukIR3 zZZy16I<`IW={p?5Hpoa7@rR}ZL~6p8EN_CWl6QP)wre$ha9MQ@W$csCm3+r!rzVG zx!T-w3Y0SrGE^(c^j=TXYZ)WoQ$z68k4d}y*m)BwN`KQ+4lR)8mFnO_%}^BGtC#DqKj zsiy#o)h5GqQwNXI^!m$bKqyP4dq^G;Stj9AG=8NZ;#|?4Tyy-|5bOl!Q)paeVE>yJ zuixF^`PGr0)8kVsCQkBj&{;$w2JFcfKBqLLz{vs59pkEXIBMN>!gZuKW`^>ZM5d!Z zdtW`z?~$Vc&(G7&wYjulSCXV=0YkS3u?AB8{)D=lld)i{-6PoSA09a9! zBKcMT7hg+|U}vzwa3?iA9NwU8YOxVlCk_EUe9%nIY1jhY6h-u&sQ zo~O3G8DUww5+pR$DZi4{K;GtL2NFf*uT7L}E3w=)T^1||9ej$q)%lDowBv7+?!~e_6 zcszLNdUHpKLJ3`bQG#^v^-~e2b!6fIi88l~FM9Lm6MHiTpLhCg92#G4-riia;MU$E zJu;x$YiIqmr)3SK38&$5IvWV2QiYy+r>tk?4QH!#k0}%H{}!~+`zY4HQ^z+>pj}d`krItpcjKIlWE>kp1b;D;pG(3ut>NJ1P>G>z#yH|x3;marSq~R zL;vRLF6aEH6Yn@{7TcvY7MpzJ-Io7Gux(NgfmvRle{GAcfM{0#20Dza>wY68gnB_y zkAgJ@M*v4GqN>XI4X)`m2=nD26)6BZiV(G@Ty$u}XRUVqTO3f; zl$&n1Z!3uto*%&!O~d~BSd8#e99SaHL-anSvoo>S@%fTGiR>b&6=bY_H6g4D_D(vTPN@jVlle&rLPv#80IFF* z6(&zPi4Ef`is03;Yl)>-TdbQu6{fX&xTKk{8((IxfidA)eHGUfHqattu}56Nj_t6&cOl)314;z(c99T~X^aD*%S* zT}i8&MW3qMgsm3k?@ylWz0=(o(r$nJHfzmqsBl=3E5FC z4}slCp-}ONBuqFbDJWZViA5Txy)XdJRI&3dZ^zI>%gR7!H{Ch#B|kKv1tW9IuOwfs za6?s=(L0Xzb!rQD!p#nX%lhLF!L)JY#CacD>5el$(S+Xh`_FjM8;{o%bTGXUAm?5J zp=8Oi>8P}3JtGAmtvOl#z7l{p#t{Vx!xCo=l~F=4&;)3r8iG@tBMd3+UAJpZQu%)g zArhsZ?&Q7|@WO#@wtt6>Y($LbGLGyvsHZ}`p>N4UqMH`F=tsCcmF5N|dR?DOePv{0 z`KYo(KCHjecqmmacJ0HU#`YWH{!v#xm%m* zFprO$_g|ZOr9KygX5Y?g$38Rr<;qK5O=6C-sIRVM-)RGSZONPRxml-iza!0QdpnTT zfM2X|3^FW`B2osEqRjcbQQCbzsWgdfpBD;g?$j1%Qo-e+orc`*Tj|W>Z*$k4d%T8Q zANqsEqL7)n4akzOv3qZ}ByFgsF|M@rKIf6Rg<2J(s)a@}+)k~ z+GLuI@rxP^LZx9umelc-Y?2q%{VJKCjkJP9M*PYb*gb(ZE0)QY7nPNA6s$4Q(GlPm zb%F-gFA3j(?}y-6HqwtT=0EIJ`2P0ZZLOW*cf^z#wpkY8hof$rK6igIs<<>eJ28?9 z-qO?9TZ@D}ATEX9#CmGYa7QRRJj1KW+!n9e8x_oiVdA+A%NDU}PPz5l+NLp%C`w0O zDvko#g-WKTBGbFwlg;I=drj1A41O;T@_=MnRML{GJHkn)Yr~}8-b;RT!(;QQ@QYkje2^bGk(Z{@u;X*SZSw6el@?CiO*z^T?N$*%{NIT z;UEinEsSGJOHMS9!>o^q%zL;qN@UB>YDmoQc*S8YQa zH`RVqR?x;E{-aRFmT2FiD?l0Wa>Des;w^AS)B;vBne6ug3N(qCu@!P2Xx|<2{ zUM#$xs*~qq7D3YW984#)(xQsV-wz&dkfb#npZXC|F!(&LySwe!``5&*_V54lR-Uk^ zZT-!MY_=$0J~jH`ArVf=TbRX69;!W(qZ5m95OYM#r)1uQ$9v8>eHk4No~1i|B5T4kL+W zv13|^R1ldoZGyFDfEvmz;Lh67dh zv-2Q;pa~9>tmyBok@aBWN4~2w`s~JM#;~;(8D#8j5PceKenmq>5?AsmT~^$Kv!5{36@B5>{_4lhVOmfC!f0 zHj*Pw29#JKbWF?v)I7{>xR902Ec%Latk!WInzIminxD);6Ob8@$OcDSC4;R(8-EIB z4RuI1z?7UKaYg+d5yKT+Er!pHND@NMNv=?YOAG!n`K@mg%XTn&`WixU#GqEKNlqPVPm1mtwo+zK@V zl)!WOhtx8RU-u&a!<`ad>{`3Z)*CivaJhQpKro@r#7Z_J%{d4=%t9<6n#1~B{b3n| zdV!&TI&CCmWfK~pSvQTR1B4=EH+OeMnES32!GCeJ%Gs~~oVtoZwb%o4-8sPv1QK}z z{AY^xOoE;BbHi8NjArzmxc{?dPcH(Piz#ARY;qViqR#Khd=Q}3nE`osNC3t7kz zj^#df!|oK!8e}*jZR(1_-3D7exio%B7NgSApN9W-eCcnyRHWvkNm#V^jTfR-*@$W& z+ei<-6Gqz*5w4&mCaIJbGq-zn6pEv%dvo67jcbvnJntZOkC9#BGmB8|IAXI6E|q$3 z+rWA*zZMX3;#308!i7C(_IleiulGTc%GOg;!%^xNze*KVl}ujh{_)pS#MR9zU9ei` zM2Oq2Af2;;7KdZIP>^cm?l&vpWxt3^(m5vy+(0vg^D4?VZ9~mAdCC<(HDoYLmzQLE zpEoOrPYT@KW2K)yVE%HxWb#&RuI)0f_xS+0>RETjKV01vwwMsB{ z&iv&IFI)Igd;Uc~29O~wn0;byhT(3e6qe$75`i;tS@O_}I!`d;!aFU0?}fo655vvH zu`jwkPLD0#`~JbKvJV#*dK@UBDZA%k+BM(5MjjvOWcvDo!9OD~>NCme_7$S~R@8S) z_k$)B8tKWkj*TykBG2eM9kJ-Ry{u+EZ8w*uHv9VHSSOs zK~9X{a{WUAsw;VKgKN*m?=cCoYP=6aa8}{)bWjur+x+Q7@WiAg>|XL|NwP~st>E@R z$|TlpYx?V~5cw+Tv+UJ`A91^fy(@4{_Ds?$XEGRcW;16-D>%Xe9SGKJN@8>~TfXhV z;+qp^wX7oXzqULse6t*Ml_8pXrn>7)GWoNs-^nx8x#_k$IgE$jr?M{rl}90+e!Y>6 zrj~tID_WI_6(nle5QztkplzgYRsH*zgihBs2#sbTYP>}l8gJ7TrgY+NCGQa9tjJh6 zX4K8|?%91X*ahz6jH}?f5PC* z70GZe#Jm#m#emauwCJ@3pHaxB^2Wxum|u-NYgW@zLnON*bzV;~)b~_V(Z+aag@egv zcpmN2_)zI|3Z1HS z7c(%Ww&mxHie+d{D-v1iQKHPsiTt&S0LP5?>nS&{<woNkCT~l)8Zv+lb zfB*#kGH^)+uN*`(ByF4|gv9QmgDBl$_UmZ^$q*v)9jbsiZnr#n=uf7K;nhnfZYh(` zwOSXZA7p6pU|P0T73E#=wO_%BFocO)TWvr@z#(lKC4?d~O8ukO38cx|aL+ z5YY_MP>*s!*^o4#en?VhW9}b+65N=o+z@AFH-)UENjn~AmjO#`=K1tMsvU#Omc6uf%G}Ks zSMpGQ4_z@blevfN1NEH<@1!k2reiTl3Lth`*}36rOF`92_pi4;x)r>Ant(7;+qS3# z;t-ao6r($~NucV}px&{}K%hPg4R>v=sL5A_OqYdhCnEzTdOuu49V$D(LT70&SOiy> zG%kUw=ODa9*NsaEuT3L{eq;tdo3cPm+FhL^WtssSAIY7a2v4nv7U@DqdanRcmZ7Er zWC5H0ZFF%v)WRDQO0-K*sx_mb)S;oJYRJR~;qI~I??v>Hd3dK30u&PaTsIj-=2+*1 zi_~kd0iUc?n**xP!tdH*)Rz<#s|1LppO)A(NHiykMA0n7f%S9sdB}*K<9|_Gkax3O zm^{CoZ+g45?L502drX3P@s$kV2Yy8EQ|1AYtjgY0i8o{rRtq33DRmR*5Oz}-aKg=C zm&jRVfi*tBInDl`i|gOt1}@+Eczrh=7(mTOD_53k@vWVy%7E z7M$Jj5)lC-AtH=nibx0}AOuFhNHA*Ry?^}3y@pc>JU>E`S@`eEeb$W#DWxwH;I6x8 zRAhSy&K>}lnf}$l14LB$4v4wkvxhyvws*sc6DKK6OlFj*Q&AcF85$ZYD%w(1R8&-) zm`h0+%()gBPRgZZOV`{Cm2xR56&WfmGFodbqog^N3Jnz%H{^+McfTZ{G|o#R5?|xi`GS-yUNeCYZql_zi;k+yUEO!rscdM#n{GH zMONwCymLS7e!{}>HEKQ(JM&e{nI)G%8FA|2>;C8e%bd>*A|2xRV^f>|ifN3uA!5v- zl#cz4Ffz!s%w2~<9{&C3L*N(z;Thv0Ody3IGYi7YUWPD-3c?~45SB4OsPqQPOpKF=PVxM=-@$r?2I2K_ECUChmCkZT708}K#zcor}O`hBR%i{4q#+%$yt-vbW!Km z`t^RpWzAJpNEuRxDmoS2CNaNFd|UBt&G#i?;>XgThK<<3jbwq#mKV{O4*T`o_%@z$R#mF||L#w?h=hxpT} zK0>@CgGMQ^No`6}OS`m&k~#y@KwJjnkVZqv?exh+n775jCJrb8r~t!185M&4IVfmc0iK zyj?#FXR=tnwsf6h-pcn%&pwh_s)e9)hOu=s4)oGyUK_@q*=k+m!Z{x%XGJX!8V+u< zy{oNVwZ`D6GuCK#*W@*;^_|TIgMOF29?))_*`Wg6!E^}VYsIGcF1|A7Py?W#qqzL7 zzx$lC0DK)r{NdG06%4QTR={2aKmr3`Hx>v87zn_6bb#$BPkf-xh~xmUR-xxiBs14i zYg9r2u+?b6-@Y{j`qrATZ=Kou)?1=)gRA>Cy0>pr@VuL&rWhO`sO${7-!{}y08ZjT z$==nCST$mU)YhA0u_a#hnm6rrT06gA{NaCzT~)#^BkG9NLK#O++4RO(&a95xS(kPD z)BRoll&-A*ox|S?{G@q3eTg1)AN=^Orw=TretelZo?^fMep~=#z~@CnL0ABG5@3&! zM&Wx_k{{@r<~^YnF%JEq{L)XOeLZ8gP^^=gFby`kig_Ty(T5XLT`s{bp zVYhtlwhB>x|MtY+*ipxfB~)yj=ZU=FMO}W??KeGscg-Jk z)>&@@y^S{6tj=2)Fkz8JzW>DBao7KveWJy2tqP4W#&gDtyD#C4c3*hptaGNBZU(8x zo)~b+Wmi1)rSk&5H_vzc4=bbwN^4Qw`P8~5;jv`LNKW1H;+!O|thmjiHT&>RQS3xE}m z0Mgf4cDtrDrw54lj;&R0BxZ@rNm(KH+X4%4VxMj7vUd3=Q_%3x?nV?$82s0x(;)TTZ(KfE_K^Ka&kf z&5B2W$fPXPLbJ3udqgc>**q@BNj$tAt-c*iPN=hsQ73Tl&b@LM_g)*qs~B}@md(HF z=UP}SI}|7vNypzR)zF^n;XOi}pUwE{HI6rR&$bHv#rJf-+bjq=2N%WW1Rs5Gnukc(BvbI?gQTaf?ZRm0irtPNOd0f_O5%w9A6u<{@rf zz&1f&&7EU{YZzl ztR?W>U`l{3w){G6*ZH3U1^PS&u)a^xqM2TtSLWn|IdIAEfA)7V_TdXW?$k2}elk>9 zFKsW~uwdEb{i}2he;t@tVEevR)s8ij6vMBS4lgdAPK@6^V%3|@HP6o~EF1Gu;n-ps zVHIlTF8FN0)a_-B&u%N%LJ|zRz8`LPhMk^R_}^X0ClmIcp{ElL7_k*FKyBE$2*huG zJ4n*fK@!V}`TYOO819Y23+KkN(5*g~nO>pRK1_zt}z8nq+NQb@~(2 zb=g~=b2c?y*)wh2o*i3z<(3(t(>-OCdO`KHeFwhBHk>|9TX*DgZhexo_QLMNN4~1r zplRNE+ymS)r!xjL==(E!g7J@ir=0)nss=waJO(sqfA0^U7~Ct?T!1VZ#1{32sWS>^ zX5EbRtjLwWbN;ix;K~(1RZ@uo2G&3yvZ?71go)k5se@2lPW6iT!I!%fT=R?&vpS>KgWllpmBoKLKRTKC zrdmga)@@&GcCj{mx^8=jtbWja;mMEwbXFGsKHhcLKa5(m`}QcFw(lHuQ;PucX$ZVJ z0OJD?e(CieeP8|c7+>h=TF2=c6t*NfsD+&oE z%L{YH(``40%CD=O{LbcW^Tw8U5c?&~xy%nvU96tGxagG^R7Ddf&sEPjljA&fuDX0l zQTYpViY8BhWB$Ub=x9+>Wfo~;%2EtOXvV-cO*!z}&=Gtxv5*Whp8Y)I9o8TQK#N&z5H~F2M#5b5v&C zz@*gaNyl%@o4Z)Ducszt>|>6K4~5#yeV$rT|86Vp%eiEK!O{`lYb9Gs8aX_9o(w`<+CTN^x6BXd?2L? zL<7AhrGWPDPe=&TgPsh*7at<#W{zgAlZPOeuRNd7055y$SH(bI2na_*Ov`uu#mQQ! zTtui%FcP*3?ma*8S&n2R7ku==br+?|`ky^wkqSWqVwa2~o_U;w21v~)(TW$51f*&- z`EAjTKKQ*jtpES!{+Wk&JT0M^D#eQkA_TL(n2}WBxzPxD;*0y57n-<$4<`>F@M0w= z@L~xs@IpN|@Zr|U59C%q&~1??J(bw%LWA0~M$#j3xK%=BIa!A+ChG94mgH3I4g#oW zn;a)`5?D>C80xUmvuJ?ZVr#!&N@I0)Lqa9%&n6>ms?>d`Y!@V1vnVZYdD+*Vc^DV z4+?dGLXf~Dm8?SjmJ5R0M`Gh8~t zHuiP#AAc_VuSc%gV?meOb{D# zOm*Q5YT{_X#ChNGpyHo{#5TKk>!cva;z1&UTppw&$ml>)56@dBFQH4t7aIznuehGt z!fi@vn~_0nvl`SktBu-b5^I~)q_&x~+Gdh!o000=Ho%PpiEXY{r)!AT=kMy{|Id43 zrs>HSAi;QHud@}$xdxBXq00hFw4V^TkmwTP+X2I^*MJDXQS=VN^MBXsG)=TVe^~N3UK9EfR zJ|fy6!At8^yVK-uJ=Qnh8W{Lyn-h8cM`WpP)&;%$V+slYTmm`)R&=I6?Z-&bMj+Wz z&lH_#@-7$v8AA?rNiBn#{Lr4wWiH#P4^TdIigkcke%Qc$1nV>+AL z1ia?oJ*USU5Qw0UfrJiT#=@{ehGq<(dr2>(L=bb3t)V^)NP`+2&}|aZb)W=XH(VGwbZTD-PCuehpD%zk7y%l zFVYCwBH9|->$Do0gZ4=#BXelx=*$V3<(aBXZDwWW07l1#U`5z3ST7dGNcu|p2zoJH zLRZk2($~}9px4nG=_lyt7%wtP8Lu#2V{BxY7&gWsMl0hi<1*t{Mjzu5lg8vQM>8if z38sp(q?VVs>yO> zHD`IUzRwD0#j*ynv$Kb17iUYd71{4(f0%tT`>X6=b~yXL?13C+&aj-ZIg@i{8@Z42Sa}6`#d*{6lzG~`gLxP7zR&wD?^fO;HpHk3*&BG6X%_e*7x$-*F&x?DX&f<$z686IUFO@Sm`7p)ml z0}8FQVj@V;OdvI7_0==Ng&T&Il7xt9c3=S=5TFB)En#U}HsKY=kvbSWA}(|Up_G!Q z+5n*$nn_6ZyD?jIWB0rZ5oonAXH5$4_KOmQT`rD{l%#aU(5ldl__(E-g*RDR_qf7n z7?z7+gjkZ>g%uH48~h%vF@-`s(P)p$^=YfWJ#gCXZj%eN6mFrXAoBHIAP#0lYCPzs z0pO>Vk{a(pza~BX714jMJ5nqTha-`{ z{!6o18F8+CnVaD#&FX7D+?rueA14sHm%wqBC%1ri?~O?HoxhGEP_mw$NLh&ySrOUD zB{@u&mI0}g8%0xD_|}GEP{t$%!;JeA#qMje8={z81B?_)q~bJ&5zBK0EQ#?t_(zi2 z21LuF*927S=85bl25#O1EQE6stf{;b{oSB=n>8{(9^&lkXb5FFk0$p#`TbA+c+YT+ zahh8(lGXz9>q0-ZKN;YR;KNIAc9@cTzOnAS8;MdVg}mzV9Sk|%~#9* z6vJ?T`1(jBgR52L31s6+VxkYD6l%;vKY}CI)J^G*+Y@M1XW!$st{wwmN=)?Z32%-i zgU4l|PU3+kpEzngIv6b0J?K2=~} z-wk|lGZ+fC&`Ftra1=sc6jA|HOeIDjrX`XGeie2!KTi##!^`;6hl?3 zV$OnL6(J-+K-D%Tv}`;fKe);@VNz*9O5<^yN@6-Ow0-u}8b4LwYk&q=+FAT^$2CpN zUkYXt<|OfRJ#g^oxvNzt5INT|ttmN=gG)*%3jQgjAWRD(VNMjzch)unC`7l0p(IW> zDq%nkJdC02Y)JHH?*T5*FF%V1(Aw>nEk%G@`ip$ETM-w^&{$Zt<%ME_2 zrI{#Z;8rQ43P~tJNttq!HU8lhWzrL|h}y-9T#V3BIyw%ne}o-kn0#F5>AMDs5xhK) z1hTMu6epKF42GwmN<`)6g?&OeOHHrPca*lZb2C=c=*p<$>WE>eW(mtanfdEA>4YFOzOe*UZ1rTTmEvr zR8;t&%P-=CLXlK21Dm9hh8;xrA|PZu6hbI8BCzMKMn+Sz-MwdN9>gJcl_eu57f#J< znou;E=BHr(JbXtg)A#RU{xsmhSP-5Z!czlF&l3m7bvQ7n^B*9M62@%s)F;2ZDkbii*i7-r)=Cmu9$Bs+&rkl-q zlxg)R(Wa(9-<*iml72g3e=_beU70slG-M|-EI5k>i;c~8$J?%yfh}vE zDxMd!*}=C6DJ01TE9~u1DZVq#ASu>(^84H0nbX#NK9S_i4eM#&KlkD&FJE;rj(sIi z3r%tmo`s@PHjkvjeQy2%k*wfOXR~3*Dk&BURZB5fEvG~;SP9svQ^Z6FpM{h}0;I-y zK{1&el_;0dy~k0$Qe$3E`c@4Njwc+e&ypamoIF@kNUJ8tQ6k>^$P}0z{`%cPKRkR4#4G5L$6-*p``~=1P%ZUDY;)H*)KtrFnAaXOXWTV3VUQ?P#uAXc^)@3FmK-!EstS9$WIm z$8+%JJYo^?dP_+|O7{-0n*4?dq-*7{2M4@fBFJ%)z_7?$GE&hXYX24J2nZUQHHRyW zK`sYnF_%GKcCO#YMlnCjf@TgDh&PtO_m`b>ks%xeg)f{)c?ois0C}_An<8erFJUOc zsp;2(Y#u~EO(XzuTnt|WoWn?e&!%csyWtpBgT z*(3J4y1g=TVU4Hbth%~zIK`h-GI_+Ez)^zSq9symu{QX7?d_%HL{0SCmKJHcgW1y3 z^7mb#dfBpNaJKdHbIzk=l9E(wF<(gWC-cQgD>EK%ZVtq)8BI{P!w04QvRz6dZWA~xTp4kY{_aj_ZnV$h%(;#E8kNdQCJ*~2v^ zuHF|X!3ZDD9wPRENgVqIQ9oRLK2}PL3NuDShtclZ42`mIAD{XnaCQ~GRf*vQyV_z` zZH8K2xQ=`?=D_+G95iw6CJaF_oDX3q(U-e2Io?2}V~as^o&Yc)Ygs+ZVoyJzK ztbNdwvh-k@IP6q5GMgh9IfAE4TR4m}-Bf{NeoZOZFt-&Gxt!<`+3NlO9=^e`I(f562tVFbPU_n&7DeM} zzFZ0+LS8{ftog}DksvSTUw5M4{t?7Xy7oYz>z=S;S23|w)6R%+UTDKV!}gn})=@CntBn#wXJp9Oc7T64LcCfo@q zt2&F1@@YT}8R5yD;=?Eu#JvdT66dNDiuur6sv$8o9KmeCHc`lKaYhTGUZdRdMwF}R zggW@(4XBKkmdl=ZWC_=D7{iWVYqyq? zn^f66S9t&0DH*v#ReHT?yW9fZ1uH0+ZKoF_J;!CFu4vi*fTC0?#gaolj1CeC3UKyA zY5g=ln`%MngK%6c0|#c?<-)|*D6m4}B2N4QYB|gmek91%W~~tMI%Uwz=X^L+y{4V^ z@RI*hEH7UQ&LQy(@7}k*Z|_gnRm$KPK3t9S97#N>9InyBHBO?%nZZ;rp!U<>9wpu? zgC?|Y=O>f@{hP4lq@JQhq7fL5v!y;oa2&Is1NWlQFJ)u}W?M%ORf5&5y@3A&bfd;7 zCf{`EuG*|8IvnI6EOd%=f4Neq!&D-d)cw2yU_xfv{cc&Nab<_RyC-RaNie4c$7U-j zaX9MgjyW0}DnDCjz9!l8;UhLe1@u$z)*~(cB)g;C)~J) zUwK5FBqTyMLG`PIB{!CWk2v?mEBL3BVDMiH<-aIe4Ndb}CboLnRO%CedBR8T@i3U4 z&$!akGv2N(nAtn#8p(p9oLF@v(mf zVDo~|>ta?g>VgnEw>-fVhkQfC($By-ewfnr5iwv&IS$dl@Gan0m;M(s>}Yt{^^ho^ z$XR0+5exZDV4)}_xJ2kScfNYD&jgswdeRsvN2oA873~Jfadl2}X|9_gVGoBv*%1sV zfobWGI#jqIgY??HZLO6d)t~(EL+J=o8B4iP>{6Z7C;QKn!eR*vk?f5!C4L9vAUKi> z*GU>39vC11-{Ux~LEMjn)X)!$XyrS6>R$UCSK`q7t56i3sItBk1a4{!Lex<4i3T7f zBP1{?O7bSkb&b|cDYWy-%09{B4ajI#v5Z&bqAV0=Q8;2HYa%3|gFPl+L&+QW|M~gL6KDDD zZ(UuNLP?AL>~GOtR@pLZt9O#;@MF!z2R> zd#PF3+11slo4ups20C<72{5XwDeIAAZ zvZ{raOu=6Fu||iE(b&XsH0G#kyo6vYM z-I@MBok~AUC(;kdsag~7`ZQBc62*L_*2$FKJ?28`v1{{5w&()H_N9dqsZ15pp`*sG z0m;=&txSzydOYs0Kw4eZ)##Mj&lUVAd$i|@q;nCQO~hkb&`dfE%Bx261_3?OLSyno zx#`Hc1{bGw+%9--_7rO+oVR_*r^sofDL<+L$%bwkJ5Ae4jTA$Q8+^uo9K63b8W$c! zK1bS-b1+wrb6kkix9T+a$+sX=5FD=3dafUEBugps>S~me)lbvOVtJ?SDk;q`uJ6)| zEa>g--hXJ-DD9u#?%NiMNWV+J+e&toHT=;z+`L5V&*E5n&;ZG)t{_rFk&6Qpa`jYK z6}uGC9pS+&EmuK|JnFe|L_w5x?cGjDmSM++D0oC24T^)0dA5&14^UqMz>-+(33G>& zH&51{18~=B6pGxf0UG%oswM0>LE076$})XjmGkJt)C>%gSIc_M(j} z1zRy^N`zuY5DFzVj2eW@&5jT4J3uPV<8K`Kxfh6i=|LK2rV5^Fpx4Bi4~Onm?mqy= z^i=M68t1x?isXDM-GX`Y5fk0q@S6)@4yx~;)FP)t?)43KR?{@!uB6rX%BR654 z%~+;rH2REW@ncVo`^6G|6vL)hY?px>CvLV^Ovg&f!D;Q68`nmqR=cqj%$S!6mPM0h zsnxSeUTc$mK2CBFAmhJ!1HZ&}&w>#N79;NgxgS5JxFB6%}pdx*ZD& zcm-x%`XRl|hrSGkI)D19^WxX-_fvh{fBw}S?D)Osk-)irkF7ht&5!m_dFBM+SAXrk>c9ANsEkyt^4{!fu15R#-h*owUj;$}YE)a>tJW@6FEbc894@zD^c1;# zhEUC|&v5wh`&ok&8>#z4WO7uC!2~Eym)BqlkX%VlRx6CbC?n^uThY{93^71jyQ_0L zH`ZP>Fe$>iawTFb-Q#)li(mZa#l@WGw0l&3Eu{BaD^f`c1y7|cL<%jERYXAVS6D!7 z30)=qDIm7QC#x!>PzZANkEfEUIUk@v)mcM^-|uz3{{2sW@=Z70_)>d8ovOUy-ELSV zFhLqUDVcjeubs2^QQM)fYlaXPuRBU}^H^IB-tD;(u``w+XQ4G3HGD-mK}aOi#)u8O z5&DC#e=bs;5lN3CoUkf$K`$on(RwkjSEi`k~L$-s;q`!bVM zw?d;)tCy53VOu;&U=F)0jvAKVk3=XcDI&uIpL-zAPLotxp`X+u zV=0)iZjq*pktnr>zEmnfXO}?u?T9jHAz)#V_4k)){pveZwZjs+*`GK}Rl1wmR-w>o zbY+`;k&SmvapXi<%Z`@{ch~iyE%j;~Fr(gr-7t7PAP7RCtc}x=)p?bXOXaB1`fpsv zu&^RcK}SFmx8yilJKKL;&W6? z$F|t^Tf2ghIunbx<|go4z8E-`S&6BVO%I}EAQs}mUJScFkMo^$eX4sMp<1K$_3PSS zkIYlXiBnbX!FvHPd`tZD7yfB7^*ym(Pd{XilmGmPLGcz0>;3 z#5g!=sfod$)2&;+M5Ej~B6P#G0s|n>KMy}~|9tr>$wO=y69D-BUoULeM@5H-CDv`v_uK^}!< zV^Erk$<#;?0T(IM)`aSU9wmD+O-+ogoroIKKx>~Q;}bP#m+|&P20IxTgh>UJiLuSz z1?H53WUq#rP6_fp35ucF1}!TA`C#nol=tgN2`DC9&?h_CGs9K=1gQG}8JGw_GQ`cS z0~k@WI_ZK4A}W%Zoqy?$1$Olew5fl|WPqM5=rIU^57|}HVb+}i2frBscp(9;U;rJc z2Xsjefu(Yf`oBmAf=wKnm9UTb!<_J$#Y)08lVWQKDgFj*&`1MP7=>io;W4rXb{tYL zp=Y*6%*;k4ok=mF3jTXOl6`&%V@gSLUMpbNQH4Q!r?*W>kH??px@4O!w_b}GBiAx+~DDSFdG>j0z1!L z84e7aPMOUN-cV_swRDVl+SdLTi84H@46M$~vMKPcR#~W2X|wgCwW@KZ)V6&_XET>? zZDh{hnrri4sJB98o||HknT$IyUpQ_OSz$s(Wa5w!Ss7ZZEoIi(To>|;H;#z8$);MH z`EW+X252$&f>94$XOnVO-byRR6~cnw=A73}ZJpa@qXlQ!_?A2}o9StPatorKc~!K^ O1{o}0SRMEP0000Yp_Hru literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek.d5a6d92a.woff2 b/assets/inter-roman-greek.d5a6d92a.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f790e047daa346583880da2be470431e35aa6054 GIT binary patch literal 21776 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 De!(H( literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin-ext.0030eebd.woff2 b/assets/inter-roman-latin-ext.0030eebd.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..715bd903b9b14d22a056f10e6d13b8d7e0acce57 GIT binary patch literal 59608 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

    Overview

    This section provides an introduction to the key components and concepts of the FIB network, including:

    1. How FIB works
    1. Fraud events
    1. Contributions
    1. Tokenomics
    1. Web interface
    ',12),l=[a];function n(v,s,h,c,m,w){return i(),t("div",null,l)}const d=e(r,[["render",n]]);export{f as __pageData,d as default}; diff --git a/assets/overview.md.7bb97411.lean.js b/assets/overview.md.7bb97411.lean.js new file mode 100644 index 0000000..43daede --- /dev/null +++ b/assets/overview.md.7bb97411.lean.js @@ -0,0 +1 @@ +import{_ as e,o as i,c as t,Q as o}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Overview","description":"","frontmatter":{},"headers":[],"relativePath":"overview.md","filePath":"overview.md"}'),r={name:"overview.md"},a=o("",12),l=[a];function n(v,s,h,c,m,w){return i(),t("div",null,l)}const d=e(r,[["render",n]]);export{f as __pageData,d as default}; diff --git a/assets/overview_contributions.md.b0ab6068.js b/assets/overview_contributions.md.b0ab6068.js new file mode 100644 index 0000000..55486ae --- /dev/null +++ b/assets/overview_contributions.md.b0ab6068.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as i}from"./chunks/framework.c4d6cd72.js";const p=JSON.parse('{"title":"Contributions","description":"","frontmatter":{},"headers":[],"relativePath":"overview/contributions.md","filePath":"overview/contributions.md"}'),d={name:"overview/contributions.md"},r=i('

    Contributions

    Contribution — a piece of data that describes a fraud event on the blockchain.

    Contributions can be submitted by authorized peers, and are stored on the blockchain.

    A peer that has contributed at least a single fraud event is considered a contributor.

    Operations

    Submitting contributions

    Once a contribution has been submitted, the peer’s list of contributions is updated, and their credit balance is increased by an amount equal to the number of contributions submitted based on the current reward rate active in the network.

    For complete instructions on how to submit a contribution, see Submitting a contribution.

    For information on the credit balance and rewards, see Tokenomics.

    Retrieving contributions

    In order for peers to keep their own records updated with the latest fraud event data, they can retrieve top contributions in a number of ways.

    Flagging contributions

    If a peer deems a certain contribution to no longer be relevant (e.g., it is a false positive), they can flag that contribution. Once a contribution is flagged, the ID of the peer that flagged it is saved with the contribution as flagger value.

    API requests data structure

    When retrieving top contributions, the following data is returned in the body of the response:

    Response body
    FieldValue TypeDescription
    idstringFraud event identifier.
    fraudTypeenum stringThe type of the fraud event.
    Could be one of the following:
    1. Wangiri
    2. IRSF
    3. StolenDevice
    4. IPFraud
    5. SMSA2P
    originationstringThe two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
    destinationstringThe two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).
    expiryDateinteger($int32)The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds).
    fraudStatusenum stringThe status of the event at the time of observing.
    Could be one of the following:
    1. Active
    2. Expired
    3. Flagged
    confidenceIndexnumber($double)The predicted fraud likelihood score in the range from 1 to 100.
    isPremiumbooleanThe definition of whether the contributor is a premium user.
    peerIdstringThe unique ID of the peer that contributed the data.
    flaggerstringThe unique ID of the peer that flagged the data. If a contribution hasn't been flagged at the time of observing, the field is returned empty.
    selfinteger($int32)Out of all the retrieved contributions, the number of contributions that have been submitted by the requesting user.
    oldinteger($int32)Out of all the retrieved contributions, the number of contributions that have already been seen by the requesting user.
    newinteger($int32)Out of all the retrieved contributions, the number of contributions that have not yet been seen by the requesting user.
    creditsSpentinteger($int32)The total amount of credits spent on the retrieved contributions.

    When assembling a contribution to then submit it, the following data must be specified in the body of the request:

    Request body
    FieldValue TypeDescription
    idstringFraud event identifier.
    fraudTypeenum stringThe type of the fraud event.
    Could be one of the following:
    1. Wangiri
    2. IRSF
    3. StolenDevice
    4. IPFraud
    5. SMSA2P
    originationstringThe two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
    destinationstringThe two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).
    expiryDateinteger($int32)The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds).
    ',18),n=[r];function a(c,s,h,u,l,b){return e(),o("div",null,n)}const g=t(d,[["render",a]]);export{p as __pageData,g as default}; diff --git a/assets/overview_contributions.md.b0ab6068.lean.js b/assets/overview_contributions.md.b0ab6068.lean.js new file mode 100644 index 0000000..5ba9b78 --- /dev/null +++ b/assets/overview_contributions.md.b0ab6068.lean.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as i}from"./chunks/framework.c4d6cd72.js";const p=JSON.parse('{"title":"Contributions","description":"","frontmatter":{},"headers":[],"relativePath":"overview/contributions.md","filePath":"overview/contributions.md"}'),d={name:"overview/contributions.md"},r=i("",18),n=[r];function a(c,s,h,u,l,b){return e(),o("div",null,n)}const g=t(d,[["render",a]]);export{p as __pageData,g as default}; diff --git a/assets/overview_fraud-events.md.e3d26477.js b/assets/overview_fraud-events.md.e3d26477.js new file mode 100644 index 0000000..570fd06 --- /dev/null +++ b/assets/overview_fraud-events.md.e3d26477.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as n}from"./chunks/framework.c4d6cd72.js";const p=JSON.parse('{"title":"Fraud events","description":"","frontmatter":{},"headers":[],"relativePath":"overview/fraud-events.md","filePath":"overview/fraud-events.md"}'),r={name:"overview/fraud-events.md"},a=n('

    Fraud events

    Fraud event — an occurrence that is suspected or confirmed to be fraudulent.

    FIB peers can submit data related to these fraud events—contributions—to help identify and prevent future fraudulent activities. By sharing information and collaborating with other participants in the network, contributors can help create a more secure and trustworthy ecosystem that is resistant to fraud and other types of malicious activities.

    Fraud model

    Every fraud event that is submitted and stored on the blockchain adheres to the following model:

    DataDescription
    Fraud IdentifierThe main identifier of the fraud event.
    Could be one of the following:
    1. A range of phone numbers (or a single one) compliant with the E.164 international standard and containing a valid National Destination Code.
    2. A range of IP addresses (or a single one).
    3. A unique IMEI identifier of a device.
    Fraud TypeThe type of the fraud event.
    Could be one of the following:
    1. Wangiri
    2. IRSF
    3. StolenDevice
    4. IPFraud
    5. SMSA2P
    Event OriginationThe two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
    Event DestinationThe two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).
    Event StatusThe status of the event at the time of observing.
    Could be one of the following:
    1. Active — the event is stored on the blockchain and has not yet expired.
    2. Expired — the event is stored on the blockchain, but is no longer relevant.
    3. Flagged — the event is stored on the blockchain and is flagged by one of the peers.
    Event Expiry DateThe exact time and date until which the event is considered relevant.
    Event TimestampThe exact time and date of when the event was submitted.
    Confidence IndexThe predicted fraud likelihood score in the range from 1 to 100.
    Consortium Identity KeyThe unique key of the peer that contributed the data.
    ',6),d=[a];function i(s,l,h,c,u,f){return e(),o("div",null,d)}const g=t(r,[["render",i]]);export{p as __pageData,g as default}; diff --git a/assets/overview_fraud-events.md.e3d26477.lean.js b/assets/overview_fraud-events.md.e3d26477.lean.js new file mode 100644 index 0000000..cfc9d23 --- /dev/null +++ b/assets/overview_fraud-events.md.e3d26477.lean.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as n}from"./chunks/framework.c4d6cd72.js";const p=JSON.parse('{"title":"Fraud events","description":"","frontmatter":{},"headers":[],"relativePath":"overview/fraud-events.md","filePath":"overview/fraud-events.md"}'),r={name:"overview/fraud-events.md"},a=n("",6),d=[a];function i(s,l,h,c,u,f){return e(),o("div",null,d)}const g=t(r,[["render",i]]);export{p as __pageData,g as default}; diff --git a/assets/overview_how-fib-works.md.c9900cfb.js b/assets/overview_how-fib-works.md.c9900cfb.js new file mode 100644 index 0000000..ba4a2e6 --- /dev/null +++ b/assets/overview_how-fib-works.md.c9900cfb.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as r,Q as a}from"./chunks/framework.c4d6cd72.js";const w=JSON.parse('{"title":"How FIB works","description":"","frontmatter":{},"headers":[],"relativePath":"overview/how-fib-works.md","filePath":"overview/how-fib-works.md"}'),n={name:"overview/how-fib-works.md"},i=a('

    How FIB works

    FIB is a decentralized network that enables the secure sharing and analysis of data related to fraud events.

    Authorized participants—peers—can submit information about suspected or confirmed fraudulent activities to the FIB network, where it is recorded on the blockchain. The submitted information can include details such as origin identifiers (e.g., IP addresses), the type of event, the exact time the event occurred, etc.

    By sharing this information and collaborating with other peers in the network, contributors can help prevent future fraudulent activities. In return for their contributions, peers can earn rewards in the form of credit tokens.

    Data on the network

    The FIB network serves as a secure database of various fraud events that are stored on the blockchain as contributions.

    Authorized peers can upload and download these contributions.

    Contributions uploaded by peers allow for the continuous expansion and updating of the FIB network. This facilitates information sharing and enhances the overall accuracy of data stored on the network.

    The contributions on the network can also be download by peers to update their own records and stay informed about the latest fraudulent activities. This process helps organizations remain vigilant and prevent fraudulent activities from occurring within their own systems.

    For more information, see Uploading contributions and Downloading contributions.

    Network security

    The security of the FIB network is crucial to ensure the safety of its users and transactions. To achieve this, the network uses scalable backend services serving requests to create and send transactions to a blockchain node securely.

    The network consists of multiple nodes, which increases its resilience and availability, potentially improving its ability to recover from disruptions.

    The security of the FIB network also relies on the use of key pairs and digital signatures.

    There are two types of key pairs that are required to interact with the FIB API backend:

    1. Authentication key pair — a deterministic Ed25519 key pair generated from the user’s email and password.
    2. Iroha 2 key pair — a deterministic Ed25519 key pair generated from the user’s emailpassword, and a random salt value.

    When a user creates a transaction on the FIB network, they sign it with their private key, which can then be verified by anyone using their public key. This process ensures that only the intended user is authorized to sign their transactions.

    Additionally, signing transactions with key pairs can enhance the privacy and confidentiality of the user's information on the network. Overall, the use of key pairs and digital signatures is a crucial aspect of the FIB network's security infrastructure.

    For more information, see Generating key pairs and Signing transactions.

    ',19),o=[i];function s(h,c,d,l,u,p){return t(),r("div",null,o)}const k=e(n,[["render",s]]);export{w as __pageData,k as default}; diff --git a/assets/overview_how-fib-works.md.c9900cfb.lean.js b/assets/overview_how-fib-works.md.c9900cfb.lean.js new file mode 100644 index 0000000..d4ebc2b --- /dev/null +++ b/assets/overview_how-fib-works.md.c9900cfb.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as r,Q as a}from"./chunks/framework.c4d6cd72.js";const w=JSON.parse('{"title":"How FIB works","description":"","frontmatter":{},"headers":[],"relativePath":"overview/how-fib-works.md","filePath":"overview/how-fib-works.md"}'),n={name:"overview/how-fib-works.md"},i=a("",19),o=[i];function s(h,c,d,l,u,p){return t(),r("div",null,o)}const k=e(n,[["render",s]]);export{w as __pageData,k as default}; diff --git a/assets/overview_tokenomics.md.01957a7b.js b/assets/overview_tokenomics.md.01957a7b.js new file mode 100644 index 0000000..7179eda --- /dev/null +++ b/assets/overview_tokenomics.md.01957a7b.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Tokenomics","description":"","frontmatter":{},"headers":[],"relativePath":"overview/tokenomics.md","filePath":"overview/tokenomics.md"}'),n={name:"overview/tokenomics.md"},o=i('

    Tokenomics

    This topic provides a summary of the key financial concepts that are operational on the platform.

    Payment model

    The FIB provides a freemium pay-per-use model that allows users to earn and spend internal digital credits.

    Credits can be spent on downloading fraud event data from other users.

    Uploading fraud events

    In order to incentivize the registered peers to submit the fraud events that they have encountered, credits are rewarded for every submitted contribution.

    See the following related tutorials:

    Downloading fraud events

    The earned credits can be used to pay for downloading the fraud event data stored on the blockchain, which enables peers to update their own records and stay informed about the latest fraudulent activities. This process helps organizations to remain vigilant and prevent fraudulent activities from occurring within their own system.

    See the following related tutorials:

    Credit balance

    The number of digital credits that a peer has on their account, and that can be used to pay for downloading of fraud event data.

    A peer can check their current credit balance by going to the Tokens page of the FIB Web UI or by calling the following API endpoint: Retrieving credit balance.

    Confidence index

    All of the contributions submitted to the blockchain are automatically evaluated and assigned a score—confidence index—which is a numeric representation of the level of certainty that a contribution is fraudulent.

    When assigning a contribution with a confidence index value, FIB considers many crucial factors, such as the presence of CLI manipulation, origination from a known hotspot of fraudulent activity, attack patterns, event confirmation by multiple peers, etc.

    The confidence index value inherently affects the price of downloading the fraud event data. By default, peers download fraud event data in accordance with the default conversion rate. However, when retrieving contributions (see the confidence-score parameter) a peer can specify whether they want the price of the retrieved contributions to be calculated in accordance with the confidence index. If enabled, the price of any given contribution is expected to rise above the default conversion rate.

    Info

    As new fraud event data is uploaded to the blockchain, the confidence index value for any given contribution is constantly updated.

    Current default conversion rate

    • Uploading fraud events: 10 credits per id fraud identifier.
    • Downloading fraud events: 1 credit per id fraud identifier.

    Welcome bonus

    Every new peer that has successfully registered with FIB, automatically receives a 1,000 credits bonus.

    Premium subscription

    Our premium subscription offers custom paid conditions for users seeking to gain access to exclusive features and benefits, tailored to their individual needs.

    To apply for a premium subscription and discuss the conditions, go to the Profile page of the FIB Web UI and select Request on the Subscription tab.

    Alternatively, you may contact us at support@fraudintelligencelimited.com.

    Monthly reward limit

    The monthly reward limit is currently 1,000,000,000 rewards per peer.

    A peer can check their current limit status by calling the following API endpoint: Retrieving peer limit status.

    Info

    Fraud Intelligence Limited may from time to time, by an in-advance written email notice to you, adjust the reward limit, in accordance with the Fraud Intelligence Blockchain Terms & Conditions document.

    ',33),r=[o];function c(l,d,s,u,h,p){return t(),a("div",null,r)}const b=e(n,[["render",c]]);export{m as __pageData,b as default}; diff --git a/assets/overview_tokenomics.md.01957a7b.lean.js b/assets/overview_tokenomics.md.01957a7b.lean.js new file mode 100644 index 0000000..a6cc9f4 --- /dev/null +++ b/assets/overview_tokenomics.md.01957a7b.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const m=JSON.parse('{"title":"Tokenomics","description":"","frontmatter":{},"headers":[],"relativePath":"overview/tokenomics.md","filePath":"overview/tokenomics.md"}'),n={name:"overview/tokenomics.md"},o=i("",33),r=[o];function c(l,d,s,u,h,p){return t(),a("div",null,r)}const b=e(n,[["render",c]]);export{m as __pageData,b as default}; diff --git a/assets/overview_web-interface.md.2f541a4a.js b/assets/overview_web-interface.md.2f541a4a.js new file mode 100644 index 0000000..0fdf31b --- /dev/null +++ b/assets/overview_web-interface.md.2f541a4a.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Web interface","description":"","frontmatter":{},"headers":[],"relativePath":"overview/web-interface.md","filePath":"overview/web-interface.md"}'),r={name:"overview/web-interface.md"},i=o('

    Web interface

    Registered FIB peers can log in to the FIB Web Interface using their registered credentials.

    Home

    On this page peers can view the following tabs:

    Consortium Data

    This tab provides a dynamic visual representation of the recent fraud data uploaded by peers on the network. The threat map shows real-time data on the type of fraud, the origination country, and the destination country, which allows users to quickly identify emerging trends and hotspots.

    Fraud Twitter Feed

    This tab provides a real-time view of customer fraud-related tweets for major cities around the globe. Peers can select countries to see what customers from those countries are posting to Twitter in relation to fraudulent activities. This allows users to gain valuable insights into the fraud-related concerns of telco customers globally and to identify emerging trends and patterns.

    Analyse

    On this page peers can view a range of statistical metrics derived from the collected fraud event data stored on the network. This data can be visualized in a variety of charts and graphs, and can be filtered by fraud type, country of origination, contributing IP addresses or phone numbers, etc.

    Upload

    On this page peers can either upload fraud events or flag the existing ones.

    See the following related tutorials:

    Download

    On this page peers can download fraud events data.

    See the following related tutorial:

    Tokens

    On this page peers can view their current balance.

    Profile

    On this page peers can view the following information about their account:

    • About tab — displays peer's contact information.
    • Subscription tab — displays the following subscription information:
      • Membership type: the category of the company that a peer is registered with (e.g., telco, fraud vendor, etc.).
      • Subscription type: the type of subscription that a peer has.
      • Company name: the name of the company that a peer is registered with.
      • Operating country: the country that a peer is operating from.
    • Services tab — displays whether a peer has access to the following FIB services:
      • Uploading: allows users to upload fraud events data on the Upload page.
      • Web API: allows users to access backend API endpoints.
      • Reports: allows users to access the fraud analytics reports on the Analyse page.

    Note

    If you are a peer with a freemium subscription, you can select Request on the Subscription tab to make a request to change your subscription type to premium.

    ',24),n=[i];function s(l,d,h,c,u,p){return t(),a("div",null,n)}const b=e(r,[["render",s]]);export{g as __pageData,b as default}; diff --git a/assets/overview_web-interface.md.2f541a4a.lean.js b/assets/overview_web-interface.md.2f541a4a.lean.js new file mode 100644 index 0000000..67354a2 --- /dev/null +++ b/assets/overview_web-interface.md.2f541a4a.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Web interface","description":"","frontmatter":{},"headers":[],"relativePath":"overview/web-interface.md","filePath":"overview/web-interface.md"}'),r={name:"overview/web-interface.md"},i=o("",24),n=[i];function s(l,d,h,c,u,p){return t(),a("div",null,n)}const b=e(r,[["render",s]]);export{g as __pageData,b as default}; diff --git a/assets/public_README.md.a3457823.js b/assets/public_README.md.a3457823.js new file mode 100644 index 0000000..ae2688b --- /dev/null +++ b/assets/public_README.md.a3457823.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Fraud Intelligence Blockchain documentation","description":"","frontmatter":{},"headers":[],"relativePath":"public/README.md","filePath":"public/README.md"}'),o={name:"public/README.md"},r=i('

    Fraud Intelligence Blockchain documentation

    This repository contains the static site as pre-built HTML files for the FIB documentation.

    VitePress documentation generator is used to render them.

    To work with the documentation, visit the original repository.

    Troubleshooting

    Please use the GitHub issues to discuss documentation contents.

    If you are experiencing any issues with FIB, please submit them at Fraud Intelligence Blockchain Freshdesk. Upon review, someone will get back to you to resolve the issue.

    Additionally, you may contact FIL via email at support@fraudintelligencelimited.com

    ',8),n=[r];function l(s,c,d,u,h,p){return t(),a("div",null,n)}const _=e(o,[["render",l]]);export{f as __pageData,_ as default}; diff --git a/assets/public_README.md.a3457823.lean.js b/assets/public_README.md.a3457823.lean.js new file mode 100644 index 0000000..7007405 --- /dev/null +++ b/assets/public_README.md.a3457823.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Fraud Intelligence Blockchain documentation","description":"","frontmatter":{},"headers":[],"relativePath":"public/README.md","filePath":"public/README.md"}'),o={name:"public/README.md"},r=i("",8),n=[r];function l(s,c,d,u,h,p){return t(),a("div",null,n)}const _=e(o,[["render",l]]);export{f as __pageData,_ as default}; diff --git a/assets/release-notes_index.md.908c2a0e.js b/assets/release-notes_index.md.908c2a0e.js new file mode 100644 index 0000000..52e6af8 --- /dev/null +++ b/assets/release-notes_index.md.908c2a0e.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Release Notes","description":"","frontmatter":{"sidebar":false,"prev":false,"next":false},"headers":[],"relativePath":"release-notes/index.md","filePath":"release-notes/index.md"}'),n={name:"release-notes/index.md"},a=i('

    Release Notes

    Version 1.2 (2023-12-14)

    Main Changes

    • When submitting a contribution or a flag, the API response now displays the reward for the said submission in tokens.

      Documented here:
      API Specification > Retrieving top contributionsconfidence-score added to Parameters and Output/response structure updated.

    • When retrieving top contributions, the API response now displays additional information.

      Documented here:
      Overview > ContributionsAPI requests data structure updated with flagger, self, old, new and creditsSpent fields.
      API Specification > Retrieving top contributionsOutput/response structure updated.

    • Contributions on the blockchain now have a flagger value that displays the ID of a peer that flagged the contribution if it has been flagged.

      Documented here:
      Overview > ContributionsFlagging contributions and API requests data structure updated.

    • Added functionality related to the confidence index, a value between 1 and 100 that represents how confident the system is that a contributed fraud event is legitimate.

      Documented here:
      Overview > TokenomicsConfidence Index subtopic added.
      API Specification > Retrieving top contributionsconfidence-score added to Parameters and Output/response structure updated.

    Other Improvements

    • Performed an audit of the interservice communication safety, fixed known security-related vulnerabilities, updated the implemented third-party dependencies.

    • Indexed data on the network, enhancing the overall performance of the search engine that retrieves stored contributions.

    • Refactored and optimized the code structure of the query engine that can retrieve all data of any specific type.

    Bug Fixes

    • Fixed a bug where leftover data with peer details remained on the network after a peer had been deleted; this caused a new peer account to be corrupted in case it was registered again with the same credentials, as well as potential issues with other peer data getting corrupted.

    • Fixed a bug that allowed users to find out the subscription type of any other peer.

    • Fixed a bug with call processing timeouts being inconsistent.

    Version 1.1 (2023-04-27)

    Initial public version released with the functionality documented in our Guide.

    Version 1.0 (2022-12-12)

    Internal version not released to public.

    ',12),r=[a];function s(d,c,l,u,h,p){return t(),o("div",null,r)}const g=e(n,[["render",s]]);export{f as __pageData,g as default}; diff --git a/assets/release-notes_index.md.908c2a0e.lean.js b/assets/release-notes_index.md.908c2a0e.lean.js new file mode 100644 index 0000000..ae815a3 --- /dev/null +++ b/assets/release-notes_index.md.908c2a0e.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Release Notes","description":"","frontmatter":{"sidebar":false,"prev":false,"next":false},"headers":[],"relativePath":"release-notes/index.md","filePath":"release-notes/index.md"}'),n={name:"release-notes/index.md"},a=i("",12),r=[a];function s(d,c,l,u,h,p){return t(),o("div",null,r)}const g=e(n,[["render",s]]);export{f as __pageData,g as default}; diff --git a/assets/style.4c702090.css b/assets/style.4c702090.css new file mode 100644 index 0000000..ee9e205 --- /dev/null +++ b/assets/style.4c702090.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-gray-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-5ed9f191]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.vp-doc h1>.VPBadge[data-v-5ed9f191]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-5ed9f191]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-5ed9f191]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-5ed9f191],.vp-doc h5>.VPBadge[data-v-5ed9f191],.vp-doc h6>.VPBadge[data-v-5ed9f191]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-5ed9f191]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-5ed9f191]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-5ed9f191]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-5ed9f191]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-8961c420]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-8961c420],.VPBackdrop.fade-leave-to[data-v-8961c420]{opacity:0}.VPBackdrop.fade-leave-active[data-v-8961c420]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-8961c420]{display:none}}.NotFound[data-v-848a5d41]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-848a5d41]{padding:96px 32px 168px}}.code[data-v-848a5d41]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-848a5d41]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-848a5d41]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-848a5d41]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-848a5d41]{padding-top:20px}.link[data-v-848a5d41]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-848a5d41]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-03d07a91]{position:relative;z-index:1}.nested[data-v-03d07a91]{padding-left:16px}.outline-link[data-v-03d07a91]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-03d07a91]:hover,.outline-link.active[data-v-03d07a91]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-03d07a91]{padding-left:13px}.VPDocAsideOutline[data-v-0959bcd2]{display:none}.VPDocAsideOutline.has-outline[data-v-0959bcd2]{display:block}.content[data-v-0959bcd2]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-0959bcd2]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-0959bcd2]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-f05e3d2a]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-f05e3d2a]{flex-grow:1}.VPDocAside[data-v-f05e3d2a] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-f05e3d2a] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-f05e3d2a] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e047b66a]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e047b66a]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-757e47f5]{margin-top:64px}.edit-info[data-v-757e47f5]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-757e47f5]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-757e47f5]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-757e47f5]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-757e47f5]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-757e47f5]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-757e47f5]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-757e47f5]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-757e47f5]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-757e47f5]{margin-left:auto;text-align:right}.desc[data-v-757e47f5]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-757e47f5]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-b5383bf2]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-b5383bf2]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-b5383bf2]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-b5383bf2]{color:var(--vp-c-text-1)}.icon[data-v-b5383bf2]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-b5383bf2] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-b5383bf2]{transform:rotate(90deg)}.items[data-v-b5383bf2]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-895ad837]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-895ad837]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-895ad837]{display:block}}@media (min-width: 768px){.VPDoc[data-v-895ad837]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-895ad837]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-895ad837]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-895ad837]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-895ad837]{display:flex;justify-content:center}.VPDoc .aside[data-v-895ad837]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-895ad837]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-895ad837]{max-width:1104px}}.container[data-v-895ad837]{margin:0 auto;width:100%}.aside[data-v-895ad837]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-895ad837]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-895ad837]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-895ad837]::-webkit-scrollbar{display:none}.aside-curtain[data-v-895ad837]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-895ad837]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-895ad837]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-895ad837]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-895ad837]{order:1;margin:0;min-width:640px}}.content-container[data-v-895ad837]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-895ad837]{max-width:688px}.external-link-icon-enabled[data-v-895ad837] :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.VPButton[data-v-b43fdfc0]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-b43fdfc0]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-b43fdfc0]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-b43fdfc0]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-b43fdfc0]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-b43fdfc0]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-b43fdfc0]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-b43fdfc0]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-b43fdfc0]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-b43fdfc0]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-b43fdfc0]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-b43fdfc0]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-b43fdfc0]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-9cf6e029]{display:none}.dark .VPImage.light[data-v-9cf6e029]{display:none}.VPHero[data-v-354b9ec4]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-354b9ec4]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-354b9ec4]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-354b9ec4]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-354b9ec4]{flex-direction:row}}.main[data-v-354b9ec4]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-354b9ec4]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-354b9ec4]{text-align:left}}@media (min-width: 960px){.main[data-v-354b9ec4]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-354b9ec4]{max-width:592px}}.name[data-v-354b9ec4],.text[data-v-354b9ec4]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-354b9ec4],.VPHero.has-image .text[data-v-354b9ec4]{margin:0 auto}.name[data-v-354b9ec4]{color:var(--vp-home-hero-name-color)}.clip[data-v-354b9ec4]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-354b9ec4],.text[data-v-354b9ec4]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-354b9ec4],.text[data-v-354b9ec4]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-354b9ec4],.VPHero.has-image .text[data-v-354b9ec4]{margin:0}}.tagline[data-v-354b9ec4]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-354b9ec4]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-354b9ec4]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-354b9ec4]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-354b9ec4]{margin:0}}.actions[data-v-354b9ec4]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-354b9ec4]{justify-content:center}@media (min-width: 640px){.actions[data-v-354b9ec4]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-354b9ec4]{justify-content:flex-start}}.action[data-v-354b9ec4]{flex-shrink:0;padding:6px}.image[data-v-354b9ec4]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-354b9ec4]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-354b9ec4]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-354b9ec4]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-354b9ec4]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-354b9ec4]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-354b9ec4]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-354b9ec4]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-354b9ec4]{width:320px;height:320px}}[data-v-354b9ec4] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-354b9ec4] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-354b9ec4] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-83599323]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-83599323]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-83599323]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-83599323]>.VPImage{margin-bottom:20px}.icon[data-v-83599323]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-83599323]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-83599323]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-83599323]{padding-top:8px}.link-text-value[data-v-83599323]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-83599323]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-139310e4]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-139310e4]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-139310e4]{padding:0 64px}}.container[data-v-139310e4]{margin:0 auto;max-width:1152px}.items[data-v-139310e4]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-139310e4]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-139310e4],.item.grid-4[data-v-139310e4],.item.grid-6[data-v-139310e4]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-139310e4],.item.grid-4[data-v-139310e4]{width:50%}.item.grid-3[data-v-139310e4],.item.grid-6[data-v-139310e4]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-139310e4]{width:25%}}.VPHome[data-v-b565dc7a]{padding-bottom:96px}.VPHome[data-v-b565dc7a] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-b565dc7a]{padding-bottom:128px}}.VPContent[data-v-cdd93b33]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-cdd93b33]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-cdd93b33]{margin:0}@media (min-width: 960px){.VPContent[data-v-cdd93b33]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-cdd93b33]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-cdd93b33]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-fad30edd]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-fad30edd]{display:none}@media (min-width: 768px){.VPFooter[data-v-fad30edd]{padding:32px}}.container[data-v-fad30edd]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-fad30edd],.copyright[data-v-fad30edd]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-06ceb24e]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-06ceb24e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-06ceb24e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-06ceb24e]{color:var(--vp-c-text-1)}.icon[data-v-06ceb24e]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-06ceb24e] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-06ceb24e]{transform:rotate(90deg)}.items[data-v-06ceb24e]{position:absolute;top:64px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.header[data-v-06ceb24e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-06ceb24e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-06ceb24e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-06ceb24e]{transition:all .2s ease-out}.flyout-leave-active[data-v-06ceb24e]{transition:all .15s ease-in}.flyout-enter-from[data-v-06ceb24e],.flyout-leave-to[data-v-06ceb24e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-6f96b96e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-6f96b96e]{position:fixed}.VPLocalNav.reached-top[data-v-6f96b96e]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-6f96b96e]{display:none}}.menu[data-v-6f96b96e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-6f96b96e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-6f96b96e]{padding:0 32px}}.menu-icon[data-v-6f96b96e]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-6f96b96e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-6f96b96e]{padding:12px 32px 11px}}.VPSwitch[data-v-9d7e540e]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-9d7e540e]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-9d7e540e]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-9d7e540e]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-9d7e540e] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-9d7e540e] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-c5759ef0]{opacity:1}.moon[data-v-c5759ef0],.dark .sun[data-v-c5759ef0]{opacity:0}.dark .moon[data-v-c5759ef0]{opacity:1}.dark .VPSwitchAppearance[data-v-c5759ef0] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-77359c15]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-77359c15]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-c85e311c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-c85e311c]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-c85e311c]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-c85e311c]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-7a66e83e]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-7a66e83e]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-7a66e83e]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-7a66e83e]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-dd8433c9]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-dd8433c9] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-dd8433c9] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-dd8433c9] .group:last-child{padding-bottom:0}.VPMenu[data-v-dd8433c9] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-dd8433c9] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-dd8433c9] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-dd8433c9] .action{padding-left:24px}.VPFlyout[data-v-e16d8978]{position:relative}.VPFlyout[data-v-e16d8978]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-e16d8978]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-e16d8978]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-e16d8978]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-e16d8978]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-e16d8978],.button[aria-expanded=true]+.menu[data-v-e16d8978]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e16d8978]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-e16d8978]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-e16d8978]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-e16d8978]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-e16d8978]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-e16d8978]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-e16d8978]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-54952539]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-54952539]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-54952539]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-84f62f36]{display:flex;justify-content:center}.VPNavBarExtra[data-v-e93cc534]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-e93cc534]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-e93cc534]{display:none}}.trans-title[data-v-e93cc534]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-e93cc534],.item.social-links[data-v-e93cc534]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-e93cc534]{min-width:176px}.appearance-action[data-v-e93cc534]{margin-right:-2px}.social-links-list[data-v-e93cc534]{margin:-4px -8px}.VPNavBarHamburger[data-v-4e5a1c51]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-4e5a1c51]{display:none}}.container[data-v-4e5a1c51]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-4e5a1c51]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-4e5a1c51]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-4e5a1c51]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-4e5a1c51]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-4e5a1c51]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-4e5a1c51]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-4e5a1c51],.VPNavBarHamburger.active:hover .middle[data-v-4e5a1c51],.VPNavBarHamburger.active:hover .bottom[data-v-4e5a1c51]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-4e5a1c51],.middle[data-v-4e5a1c51],.bottom[data-v-4e5a1c51]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-4e5a1c51]{top:0;left:0;transform:translate(0)}.middle[data-v-4e5a1c51]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-4e5a1c51]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-182fa02e]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-182fa02e],.VPNavBarMenuLink[data-v-182fa02e]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-c0397a48]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-c0397a48]{display:flex}}/*! @docsearch/css 3.5.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-bee3ff36]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-bee3ff36]{display:flex;align-items:center}}.title[data-v-51909336]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-51909336]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-51909336]{border-bottom-color:var(--vp-c-divider)}}[data-v-51909336] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-b6bfe3ec]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-b6bfe3ec]{display:flex;align-items:center}}.title[data-v-b6bfe3ec]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-e9e42a33]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-e9e42a33]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-e9e42a33]{padding:0}.VPNavBar[data-v-e9e42a33]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-e9e42a33]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-e9e42a33],.container>.content[data-v-e9e42a33]{pointer-events:none}.container[data-v-e9e42a33] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-e9e42a33]{max-width:100%}}.title[data-v-e9e42a33]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-e9e42a33]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-e9e42a33]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-e9e42a33]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-e9e42a33]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-e9e42a33]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-e9e42a33]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-e9e42a33]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-e9e42a33]{column-gap:.5rem}}.menu+.translations[data-v-e9e42a33]:before,.menu+.appearance[data-v-e9e42a33]:before,.menu+.social-links[data-v-e9e42a33]:before,.translations+.appearance[data-v-e9e42a33]:before,.appearance+.social-links[data-v-e9e42a33]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-e9e42a33]:before,.translations+.appearance[data-v-e9e42a33]:before{margin-right:16px}.appearance+.social-links[data-v-e9e42a33]:before{margin-left:16px}.social-links[data-v-e9e42a33]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-e9e42a33]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-e9e42a33]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-e9e42a33]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-12b16b93]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-12b16b93]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-56c6a672]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-56c6a672]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-0f777046]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-0f777046]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-99599858]{display:block}.title[data-v-99599858]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-1c1bbf1b]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-1c1bbf1b]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-1c1bbf1b]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-1c1bbf1b]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-1c1bbf1b]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-1c1bbf1b]{transform:rotate(45deg)}.button[data-v-1c1bbf1b]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-1c1bbf1b]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-1c1bbf1b]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-1c1bbf1b]:first-child{padding-top:0}.group+.group[data-v-1c1bbf1b],.group+.item[data-v-1c1bbf1b]{padding-top:4px}.VPNavScreenTranslations[data-v-ffb11b0e]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-ffb11b0e]{height:auto}.title[data-v-ffb11b0e]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-ffb11b0e]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-ffb11b0e]{margin-right:8px}.icon.chevron[data-v-ffb11b0e]{margin-left:4px}.list[data-v-ffb11b0e]{padding:4px 0 0 24px}.link[data-v-ffb11b0e]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-69fa0165]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-69fa0165],.VPNavScreen.fade-leave-active[data-v-69fa0165]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-69fa0165],.VPNavScreen.fade-leave-active .container[data-v-69fa0165]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-69fa0165],.VPNavScreen.fade-leave-to[data-v-69fa0165]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-69fa0165],.VPNavScreen.fade-leave-to .container[data-v-69fa0165]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-69fa0165]{display:none}}.container[data-v-69fa0165]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-69fa0165],.menu+.appearance[data-v-69fa0165],.translations+.appearance[data-v-69fa0165]{margin-top:24px}.menu+.social-links[data-v-69fa0165]{margin-top:16px}.appearance+.social-links[data-v-69fa0165]{margin-top:16px}.VPNav[data-v-64567df4]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-64567df4]{position:fixed}}.VPSidebarItem.level-0[data-v-08d60d14]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-08d60d14]{padding-bottom:10px}.item[data-v-08d60d14]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-08d60d14]{cursor:pointer}.indicator[data-v-08d60d14]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-08d60d14],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-08d60d14],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-08d60d14],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-08d60d14]{background-color:var(--vp-c-brand-1)}.link[data-v-08d60d14]{display:flex;align-items:center;flex-grow:1}.text[data-v-08d60d14]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-08d60d14]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-08d60d14],.VPSidebarItem.level-2 .text[data-v-08d60d14],.VPSidebarItem.level-3 .text[data-v-08d60d14],.VPSidebarItem.level-4 .text[data-v-08d60d14],.VPSidebarItem.level-5 .text[data-v-08d60d14]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-08d60d14],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-08d60d14],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-08d60d14],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-08d60d14],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-08d60d14],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-08d60d14]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-08d60d14],.VPSidebarItem.level-1.has-active>.item>.text[data-v-08d60d14],.VPSidebarItem.level-2.has-active>.item>.text[data-v-08d60d14],.VPSidebarItem.level-3.has-active>.item>.text[data-v-08d60d14],.VPSidebarItem.level-4.has-active>.item>.text[data-v-08d60d14],.VPSidebarItem.level-5.has-active>.item>.text[data-v-08d60d14],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-08d60d14],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-08d60d14],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-08d60d14],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-08d60d14],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-08d60d14],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-08d60d14]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-08d60d14],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-08d60d14],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-08d60d14],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-08d60d14],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-08d60d14],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-08d60d14]{color:var(--vp-c-brand-1)}.caret[data-v-08d60d14]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-08d60d14]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-08d60d14]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-08d60d14]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-08d60d14]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-08d60d14],.VPSidebarItem.level-2 .items[data-v-08d60d14],.VPSidebarItem.level-3 .items[data-v-08d60d14],.VPSidebarItem.level-4 .items[data-v-08d60d14],.VPSidebarItem.level-5 .items[data-v-08d60d14]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-08d60d14]{display:none}.VPSidebar[data-v-ffeff55d]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-ffeff55d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-ffeff55d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-ffeff55d]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-ffeff55d]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-ffeff55d]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-ffeff55d]{outline:0}.group+.group[data-v-ffeff55d]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-ffeff55d]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-2ab14c2b]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-2ab14c2b]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-2ab14c2b]{top:14px;left:16px}}.Layout[data-v-22fc12f0]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-ca5e141e]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-ca5e141e]{margin:0 auto;max-width:1152px}.love[data-v-ca5e141e]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-ca5e141e]{width:28px;height:28px;fill:currentColor}.message[data-v-ca5e141e]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-ca5e141e]{padding-top:32px}.action[data-v-ca5e141e]{padding-top:40px;text-align:center}.VPTeamPage[data-v-4e4c9005]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-4e4c9005]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-4e4c9005-s],.VPTeamMembers+.VPTeamPageSection[data-v-4e4c9005-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-4e4c9005-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-4e4c9005-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-4e4c9005-s],.VPTeamMembers+.VPTeamPageSection[data-v-4e4c9005-s]{margin-top:96px}}.VPTeamMembers[data-v-4e4c9005-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-4e4c9005-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-4e4c9005-s]{padding:0 64px}}.VPTeamPageTitle[data-v-f4e9683f]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-f4e9683f]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-f4e9683f]{padding:80px 64px 48px}}.title[data-v-f4e9683f]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-f4e9683f]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-f4e9683f]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-f4e9683f]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-2bf788e4]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-2bf788e4]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-2bf788e4]{padding:0 64px}}.title[data-v-2bf788e4]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-2bf788e4]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-2bf788e4]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-2bf788e4]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-2bf788e4]{padding-top:40px}.VPTeamMembersItem[data-v-1d150852]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-1d150852]{padding:32px}.VPTeamMembersItem.small .data[data-v-1d150852]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-1d150852]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-1d150852]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-1d150852]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-1d150852]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-1d150852]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-1d150852]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-1d150852]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-1d150852]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-1d150852]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-1d150852]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-1d150852]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-1d150852]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-1d150852]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-1d150852]{text-align:center}.avatar[data-v-1d150852]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-1d150852]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-1d150852]{margin:0;font-weight:600}.affiliation[data-v-1d150852]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-1d150852]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-1d150852]:hover{color:var(--vp-c-brand-1)}.desc[data-v-1d150852]{margin:0 auto}.desc[data-v-1d150852] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-1d150852]{display:flex;justify-content:center;height:56px}.sp-link[data-v-1d150852]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-1d150852]:hover,.sp .sp-link.link[data-v-1d150852]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-1d150852]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-5f49accf]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-5f49accf]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-5f49accf]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-5f49accf]{max-width:876px}.VPTeamMembers.medium .container[data-v-5f49accf]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-5f49accf]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-5f49accf]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-5f49accf]{max-width:760px}.container[data-v-5f49accf]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPLocalSearchBox[data-v-fadd0b86]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-fadd0b86]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-fadd0b86]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-fadd0b86]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-fadd0b86]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-fadd0b86]{padding:0 8px}}.search-bar[data-v-fadd0b86]:focus-within{border-color:var(--vp-c-brand-1)}.search-icon[data-v-fadd0b86]{margin:8px}@media (max-width: 767px){.search-icon[data-v-fadd0b86]{display:none}}.search-input[data-v-fadd0b86]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-fadd0b86]{padding:6px 4px}}.search-actions[data-v-fadd0b86]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-fadd0b86]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-fadd0b86]{display:none}}.search-actions button[data-v-fadd0b86]{padding:8px}.search-actions button[data-v-fadd0b86]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-fadd0b86]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-fadd0b86]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-fadd0b86]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-fadd0b86]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-fadd0b86]{display:none}}.search-keyboard-shortcuts kbd[data-v-fadd0b86]{background:rgba(128,128,128,.1);border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-fadd0b86]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-fadd0b86]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-fadd0b86]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-fadd0b86]{margin:8px}}.titles[data-v-fadd0b86]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-fadd0b86]{display:flex;align-items:center;gap:4px}.title.main[data-v-fadd0b86]{font-weight:500}.title-icon[data-v-fadd0b86]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-fadd0b86]{opacity:.5}.result.selected[data-v-fadd0b86]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-fadd0b86]{position:relative}.excerpt[data-v-fadd0b86]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-fadd0b86]{opacity:1}.excerpt[data-v-fadd0b86] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-fadd0b86] mark,.excerpt[data-v-fadd0b86] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-fadd0b86] .vp-code-group .tabs{display:none}.excerpt[data-v-fadd0b86] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-fadd0b86]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-fadd0b86]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-fadd0b86],.result.selected .title-icon[data-v-fadd0b86]{color:var(--vp-c-brand-1)!important}.no-results[data-v-fadd0b86]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-fadd0b86]{flex:none}.logos[data-v-f647d0cb]{margin:16px 0;padding:16px;background-color:var(--vp-c-white);border-radius:8px;min-width:0}img[data-v-f647d0cb]{min-width:0}.logos[data-location=docs] img+img[data-v-f647d0cb]{padding-left:8px;margin-left:8px;border-left:1px solid var(--vp-c-divider)}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.static{position:static}.grid{display:grid}.m21{margin:5.25rem}.m9{margin:2.25rem}.me{margin-inline-end:1rem}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}.h1{height:.25rem}.h2{height:.5rem}.h3{height:.75rem}.h4{height:1rem}.h5{height:1.25rem}.h6{height:1.5rem}.flex{display:flex}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.flex-wrap{flex-wrap:wrap}.table{display:table}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.items-center{align-items:center}.justify-center{justify-content:center}.space-y-4>:not([hidden])~:not([hidden]){--un-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--un-space-y-reverse)));margin-bottom:calc(1rem * var(--un-space-y-reverse))}.border{border-width:1px}.px{padding-left:1rem;padding-right:1rem}.uppercase{text-transform:uppercase}.tab{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.outline{outline-style:solid}.blur{--un-blur:blur(8px);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.filter{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)} diff --git a/assets/tutorials-api.md.02502bda.js b/assets/tutorials-api.md.02502bda.js new file mode 100644 index 0000000..5d33794 --- /dev/null +++ b/assets/tutorials-api.md.02502bda.js @@ -0,0 +1 @@ +import{_ as i,o as t,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const d=JSON.parse('{"title":"Tutorials: API","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api.md","filePath":"tutorials-api.md"}'),n={name:"tutorials-api.md"},r=e('

    Tutorials: API

    This section lists the tutorials for the basic operations that could be performed with the FIB API, including:

    1. Generating key pairs
    2. Signing user email addresses
    3. Signing transactions
    4. Authorizing an account
    5. Retrieving top contributions
    6. Submitting a contribution
    7. Flagging a contribution
    ',3),o=[r];function l(s,u,c,h,g,p){return t(),a("div",null,o)}const m=i(n,[["render",l]]);export{d as __pageData,m as default}; diff --git a/assets/tutorials-api.md.02502bda.lean.js b/assets/tutorials-api.md.02502bda.lean.js new file mode 100644 index 0000000..f1c856c --- /dev/null +++ b/assets/tutorials-api.md.02502bda.lean.js @@ -0,0 +1 @@ +import{_ as i,o as t,c as a,Q as e}from"./chunks/framework.c4d6cd72.js";const d=JSON.parse('{"title":"Tutorials: API","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api.md","filePath":"tutorials-api.md"}'),n={name:"tutorials-api.md"},r=e("",3),o=[r];function l(s,u,c,h,g,p){return t(),a("div",null,o)}const m=i(n,[["render",l]]);export{d as __pageData,m as default}; diff --git a/assets/tutorials-api_authorizing-an-account.md.7f4066ec.js b/assets/tutorials-api_authorizing-an-account.md.7f4066ec.js new file mode 100644 index 0000000..811c4b6 --- /dev/null +++ b/assets/tutorials-api_authorizing-an-account.md.7f4066ec.js @@ -0,0 +1,61 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Authorizing an account","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/authorizing-an-account.md","filePath":"tutorials-api/authorizing-an-account.md"}'),p={name:"tutorials-api/authorizing-an-account.md"},e=l(`

    Authorizing an account

    To authorize an account, send the following request:

    http
    POST /auth/api/v1/authentication-management/session
    POST /auth/api/v1/authentication-management/session
    json5
    {
    +  email: 'string', //The user’s email address
    +  signature: 'string', //The encoded signature of a user’s email address
    +  publicKey: 'string' //The public key of the authentication key pair
    +}
    {
    +  email: 'string', //The user’s email address
    +  signature: 'string', //The encoded signature of a user’s email address
    +  publicKey: 'string' //The public key of the authentication key pair
    +}
    json5
    {
    +  email: 'qa@email.com',
    +  signature: '2d439e8e7400c11e8c727516df43f45b76d5f18e9241ca9ea7b7c0847d521dcc7008b87f9ec399259d22993146cd0b604935f031020d5a493add9d3bddf4550e',
    +  publicKey: '2c92384e63afd4e806fa62bd8f293c266ee5a06af0a7355b48064d0734530fb4'
    +}
    {
    +  email: 'qa@email.com',
    +  signature: '2d439e8e7400c11e8c727516df43f45b76d5f18e9241ca9ea7b7c0847d521dcc7008b87f9ec399259d22993146cd0b604935f031020d5a493add9d3bddf4550e',
    +  publicKey: '2c92384e63afd4e806fa62bd8f293c266ee5a06af0a7355b48064d0734530fb4'
    +}

    Note

    For instructions on how to generate signature and publicKey strings, see Generating key pairs and Signing user email addresses.

    Expected result

    If authorization is successful, a response with the following JSON web tokens is generated:

    FieldValue TypeDescription
    accessTokenstringThe access token, which is later used in headers of other requests as a bearer token.
    refreshTokenstringThe refresh token.
    expirationTimeinteger($int64)The exact time until which the event is considered relevant (represented as Unix Epoch time in seconds).
    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accessToken: 'string',
    +    refreshToken: 'string',
    +    expirationTime: 0 //integer($int64)
    +  }
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: {
    +    accessToken: 'string',
    +    refreshToken: 'string',
    +    expirationTime: 0 //integer($int64)
    +  }
    +}
    json5
    {
    +  status: {
    +    code: 0,
    +    name: 'Ok',
    +    message: 'User authorization has been successful'
    +  },
    +  data: {
    +    accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSJ9.eyJhY2MiOiJxYTBAcWEiLCJzdWIiOiJxYTBAbWFpbC5jb20iLCJyb2xlIjoiUk9MRV9QRUVSIiwiZXhwIjoxNjYxMjQ0OTIwLCJqdGkiOiI2YzY4OGY2Ni1iNjYzLTRhMjYtODdlZC00N2YzOGU0MTExZWIifQ.wgAs5xQP5MKIBwd1fCxT8HyJ8zGEZzbO-NTpJ9assU9voZYWskSpJQcoT8pTA7D_WcgOopG7f9_I-2RN6Fi1Aw',
    +    refreshToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSJ9.eyJhY2p0aSI6IjZjNjg4ZjY2LWI2NjMtNGEyNi04N2VkLTQ3ZjM4ZTQxMTFlYiIsInN1YiI6InFhMEBtYWlsLmNvbSIsImV4cCI6MTY2MTMzMTAyMCwianRpIjoiZWFhN2E3YjMtYWM3MS00Mjg2LThiOGMtMjE4ZDYwNDA1NDYwIn0.i9Xjyh1mpSb9QVPe1JdgsQoukH46vbYoUK-2cbHWEBDCHzuK7-0TcUg-mPgGodlSCwWnCfVet4IxG3wz0zfJAw',
    +    expirationTime: 300
    +  }
    +}
    {
    +  status: {
    +    code: 0,
    +    name: 'Ok',
    +    message: 'User authorization has been successful'
    +  },
    +  data: {
    +    accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSJ9.eyJhY2MiOiJxYTBAcWEiLCJzdWIiOiJxYTBAbWFpbC5jb20iLCJyb2xlIjoiUk9MRV9QRUVSIiwiZXhwIjoxNjYxMjQ0OTIwLCJqdGkiOiI2YzY4OGY2Ni1iNjYzLTRhMjYtODdlZC00N2YzOGU0MTExZWIifQ.wgAs5xQP5MKIBwd1fCxT8HyJ8zGEZzbO-NTpJ9assU9voZYWskSpJQcoT8pTA7D_WcgOopG7f9_I-2RN6Fi1Aw',
    +    refreshToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSJ9.eyJhY2p0aSI6IjZjNjg4ZjY2LWI2NjMtNGEyNi04N2VkLTQ3ZjM4ZTQxMTFlYiIsInN1YiI6InFhMEBtYWlsLmNvbSIsImV4cCI6MTY2MTMzMTAyMCwianRpIjoiZWFhN2E3YjMtYWM3MS00Mjg2LThiOGMtMjE4ZDYwNDA1NDYwIn0.i9Xjyh1mpSb9QVPe1JdgsQoukH46vbYoUK-2cbHWEBDCHzuK7-0TcUg-mPgGodlSCwWnCfVet4IxG3wz0zfJAw',
    +    expirationTime: 300
    +  }
    +}

    If authorization is unsuccessful, refer to Authorizing a user in the system > Responses for a list of possible reasons.

    `,9),o=[e];function t(c,r,i,E,y,d){return a(),n("div",null,o)}const F=s(p,[["render",t]]);export{u as __pageData,F as default}; diff --git a/assets/tutorials-api_authorizing-an-account.md.7f4066ec.lean.js b/assets/tutorials-api_authorizing-an-account.md.7f4066ec.lean.js new file mode 100644 index 0000000..257d959 --- /dev/null +++ b/assets/tutorials-api_authorizing-an-account.md.7f4066ec.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Authorizing an account","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/authorizing-an-account.md","filePath":"tutorials-api/authorizing-an-account.md"}'),p={name:"tutorials-api/authorizing-an-account.md"},e=l("",9),o=[e];function t(c,r,i,E,y,d){return a(),n("div",null,o)}const F=s(p,[["render",t]]);export{u as __pageData,F as default}; diff --git a/assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.js b/assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.js new file mode 100644 index 0000000..b0fa250 --- /dev/null +++ b/assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.js @@ -0,0 +1,163 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Flagging a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/flagging-a-contribution.md","filePath":"tutorials-api/flagging-a-contribution.md"}'),p={name:"tutorials-api/flagging-a-contribution.md"},o=l(`

    Flagging a contribution

    Note

    A peer account must be authorized for this operation to succeed. See Authorizing an account.

    To flag a contribution, perform the following steps:

    1. Request to flag a contribution by sending the following request:

      http
      POST /data/api/v1/contribution-management/contribution/{contributionID} //{contributionID} is a range of 'id' values (Fraud identifiers)
      POST /data/api/v1/contribution-management/contribution/{contributionID} //{contributionID} is a range of 'id' values (Fraud identifiers)
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: [
      +    {
      +      assetIds: [
      +        {
      +          definitionId: 'MPtVi@4\`V}YI~WtYc~BK(2!E_Z^pvG6ch{ycg^usDlMu>UAhwI_:C/>B:D#$=*]3{;-,\\\\,%t"vB5EK:3hGa+Y7p&mBS6xx2O>@?V_Pg\\\\B,{B!PC;\`&N+>Z3{edxQkY!##*RDF!%/w-Z2]_:tO',
      +          accountId: 'V)60Rw";qse6jLG|T+ij\`0D.sy91[eWW=vO6mYF@jI<741{%FDj(<s"[gh_\`XWz?jOu;(+kJ/(\\'\\\\\`b_him2G5N:@{T|db~)X@TJ6rYj>Q_?>,-9l\\'M\\\\{;Pi'
      +        }
      +      ]
      +    }
      +  ]
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: [
      +    {
      +      assetIds: [
      +        {
      +          definitionId: 'MPtVi@4\`V}YI~WtYc~BK(2!E_Z^pvG6ch{ycg^usDlMu>UAhwI_:C/>B:D#$=*]3{;-,\\\\,%t"vB5EK:3hGa+Y7p&mBS6xx2O>@?V_Pg\\\\B,{B!PC;\`&N+>Z3{edxQkY!##*RDF!%/w-Z2]_:tO',
      +          accountId: 'V)60Rw";qse6jLG|T+ij\`0D.sy91[eWW=vO6mYF@jI<741{%FDj(<s"[gh_\`XWz?jOu;(+kJ/(\\'\\\\\`b_him2G5N:@{T|db~)X@TJ6rYj>Q_?>,-9l\\'M\\\\{;Pi'
      +        }
      +      ]
      +    }
      +  ]
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: [
      +    {
      +      assetDefinitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      contribution: {
      +        id: '127.0.0.1-127.0.0.2',
      +        fraudType: 'IPFraud',
      +        origination: 'SE',
      +        destination: 'SE',
      +        expiryDate: 1694775553,
      +        fraudStatus: 'Active',
      +        confidenceIndex: null
      +      }
      +    }
      +  ]
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: [
      +    {
      +      assetDefinitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      contribution: {
      +        id: '127.0.0.1-127.0.0.2',
      +        fraudType: 'IPFraud',
      +        origination: 'SE',
      +        destination: 'SE',
      +        expiryDate: 1694775553,
      +        fraudStatus: 'Active',
      +        confidenceIndex: null
      +      }
      +    }
      +  ]
      +}

      Note

      If the {contributionID} corresponds to a phone number or an IP address, it can be represented as a single value.

    2. Assemble a contribution flag by sending the following request:

      http
      PATCH /data/api/v1/contribution-manager/contribution/flag/assemble
      PATCH /data/api/v1/contribution-manager/contribution/flag/assemble
      json5
      {
      +  assetIds: [
      +    {
      +      definitionId: 'id_range_something#contribution', //<id_range> must be the same as \`{contributionID}\` value set in Step 1
      +      accountId: 'user@peerId'
      +    }
      +  ]
      +}
      {
      +  assetIds: [
      +    {
      +      definitionId: 'id_range_something#contribution', //<id_range> must be the same as \`{contributionID}\` value set in Step 1
      +      accountId: 'user@peerId'
      +    }
      +  ]
      +}
      json5
      {
      +  assetIds: [
      +    {
      +      definitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      accountId: 'qa@qa'
      +    }
      +  ]
      +}
      {
      +  assetIds: [
      +    {
      +      definitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      accountId: 'qa@qa'
      +    }
      +  ]
      +}
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
    3. Sign the transactionHex string (see Signing transactions) retrieved from the response.

    4. Submit the assembled and signed contribution flag by sending the following request:

      http
      PATCH /data/api/v1/contribution-management/contribution/flag
      PATCH /data/api/v1/contribution-management/contribution/flag
      json5
      'transactionHex'
      'transactionHex'
      json5
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {}
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {}
      +}

    Expected result

    The contribution’s fraudStatus value is set to Flagged.

    `,6),e=[o];function t(c,r,E,i,y,d){return a(),n("div",null,e)}const g=s(p,[["render",t]]);export{u as __pageData,g as default}; diff --git a/assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.lean.js b/assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.lean.js new file mode 100644 index 0000000..29d8e2d --- /dev/null +++ b/assets/tutorials-api_flagging-a-contribution.md.4c6bdbfb.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Flagging a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/flagging-a-contribution.md","filePath":"tutorials-api/flagging-a-contribution.md"}'),p={name:"tutorials-api/flagging-a-contribution.md"},o=l("",6),e=[o];function t(c,r,E,i,y,d){return a(),n("div",null,e)}const g=s(p,[["render",t]]);export{u as __pageData,g as default}; diff --git a/assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.js b/assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.js new file mode 100644 index 0000000..27870b4 --- /dev/null +++ b/assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as n}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Verifying a contribution has been flagged","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.md","filePath":"tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.md"}'),i={name:"tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.md"},o=n('

    Verifying a contribution has been flagged

    To verify that a contribution has been flagged, retrieve the peer's top contributions by sending the following request:

    http
    GET /data/api/v1/contribution-management/contribution
    GET /data/api/v1/contribution-management/contribution

    If a contribution has been flagged successfully, it is no longer shown in the list of the peer’s contributions.

    ',4),s=[o];function r(c,l,g,p,d,u){return t(),a("div",null,s)}const h=e(i,[["render",r]]);export{f as __pageData,h as default}; diff --git a/assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.lean.js b/assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.lean.js new file mode 100644 index 0000000..afc76c9 --- /dev/null +++ b/assets/tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md.983c8ef8.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as n}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Verifying a contribution has been flagged","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.md","filePath":"tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.md"}'),i={name:"tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.md"},o=n("",4),s=[o];function r(c,l,g,p,d,u){return t(),a("div",null,s)}const h=e(i,[["render",r]]);export{f as __pageData,h as default}; diff --git a/assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.js b/assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.js new file mode 100644 index 0000000..d29c768 --- /dev/null +++ b/assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as r,Q as t}from"./chunks/framework.c4d6cd72.js";const _=JSON.parse('{"title":"Generating key pairs","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/generating-key-pairs.md","filePath":"tutorials-api/generating-key-pairs.md"}'),n={name:"tutorials-api/generating-key-pairs.md"},i=t('

    Generating key pairs

    Generating authentication key pair

    To generate an authentication key pair, perform the following steps:

    1. Create a Blake2b-256 hash from a user email and password.
    2. Use symmetric encryption to generate a random seed based on the generated hash and user password. We recommend using AES-256 with GCM or CCM secure mode.
    3. Generate an authentication key pair from the generated seed.

    Generating Iroha 2 key pair

    To generate an Iroha 2 key pair, perform the following steps:

    1. Request a salt value, which is a random piece of bytes only known to the network owners.
    2. Create a Blake2b-256 hash from a user email and password.
    3. Generate a blockchain seed from the generated hash and salt.
    4. Generate an Iroha 2 key pair from the blockchain seed.
    ',7),o=[i];function s(g,l,h,p,c,d){return a(),r("div",null,o)}const f=e(n,[["render",s]]);export{_ as __pageData,f as default}; diff --git a/assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.lean.js b/assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.lean.js new file mode 100644 index 0000000..4d6d1fb --- /dev/null +++ b/assets/tutorials-api_generating-key-pairs.md.fcdf5ae2.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as r,Q as t}from"./chunks/framework.c4d6cd72.js";const _=JSON.parse('{"title":"Generating key pairs","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/generating-key-pairs.md","filePath":"tutorials-api/generating-key-pairs.md"}'),n={name:"tutorials-api/generating-key-pairs.md"},i=t("",7),o=[i];function s(g,l,h,p,c,d){return a(),r("div",null,o)}const f=e(n,[["render",s]]);export{_ as __pageData,f as default}; diff --git a/assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.js b/assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.js new file mode 100644 index 0000000..c6e62db --- /dev/null +++ b/assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.js @@ -0,0 +1,141 @@ +import{_ as s,o as n,c as a,Q as p}from"./chunks/framework.c4d6cd72.js";const d=JSON.parse('{"title":"Retrieving top contributions","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/retrieving-top-contributions.md","filePath":"tutorials-api/retrieving-top-contributions.md"}'),l={name:"tutorials-api/retrieving-top-contributions.md"},o=p(`

    Retrieving top contributions

    Note

    A peer account must be authorized for this operation to succeed. See Authorizing an account.

    When downloading fraud events—retrieving contributions—it is possible to filter the results generated in the response in various ways, using the request parameters.

    Request parameters can be used in any combination to tailor response results to your specific needs.

    Since request parameters are optional, specifying no parameters when sending a request will result in a response containing top contributions from the entire ledger.

    For more information, see Retrieving top contributions > Parameters.

    To retrieve top contributions, send the following request:

    http
    GET /api/v1/contribution-management/contribution?size=''&from=''&to=''&ft=''&org=''&self-only=''
    GET /api/v1/contribution-management/contribution?size=''&from=''&to=''&ft=''&org=''&self-only=''
    http
    // size
    +/api/v1/contribution-management/contribution?size=10
    +
    +// from & to
    +/api/v1/contribution-management/contribution?from=0&to=1680089219
    +
    +// ft
    +/api/v1/contribution-management/contribution?ft=wangiri
    +
    +// org
    +/api/v1/contribution-management/contribution?org=US
    +
    +// self-only
    +/api/v1/contribution-management/contribution?self-only=true
    +
    +// fetch-mode
    +/api/v1/contribution-management/contribution?fetch-mode=new
    +
    +// combination
    +/api/v1/contribution-management/contribution?size=2&ft=StolenDevice&org=US&self-only=true&fetch-mode=new
    // size
    +/api/v1/contribution-management/contribution?size=10
    +
    +// from & to
    +/api/v1/contribution-management/contribution?from=0&to=1680089219
    +
    +// ft
    +/api/v1/contribution-management/contribution?ft=wangiri
    +
    +// org
    +/api/v1/contribution-management/contribution?org=US
    +
    +// self-only
    +/api/v1/contribution-management/contribution?self-only=true
    +
    +// fetch-mode
    +/api/v1/contribution-management/contribution?fetch-mode=new
    +
    +// combination
    +/api/v1/contribution-management/contribution?size=2&ft=StolenDevice&org=US&self-only=true&fetch-mode=new

    Expected result

    The response to the GET request contains a list of the top contributions, filtered according to the parameters set in the request, if any.

    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      id: 'string',
    +      fraudType: 'Wangiri', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +      origination: 'string',
    +      destination: 'string',
    +      expiryDate: 0, //integer($int32)
    +      fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +      confidenceIndex: 0, //number($double)
    +      isPremium: true, //boolean
    +      peerId: 'string',
    +      premium: true //boolean
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      id: 'string',
    +      fraudType: 'Wangiri', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +      origination: 'string',
    +      destination: 'string',
    +      expiryDate: 0, //integer($int32)
    +      fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +      confidenceIndex: 0, //number($double)
    +      isPremium: true, //boolean
    +      peerId: 'string',
    +      premium: true //boolean
    +    }
    +  ]
    +}
    json5
    {
    +  status: {
    +    code: 0,
    +    name: 'Ok'
    +  },
    +  data: [
    +    {
    +      id: '+14155552671-+14155552981',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'FI',
    +      expiryDate: 1666195955,
    +      fraudStatus: 'Expired',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    },
    +    {
    +      id: '127.0.0.1-127.0.0.2',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'SE',
    +      expiryDate: 1694775553,
    +      fraudStatus: 'Flagged',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0,
    +    name: 'Ok'
    +  },
    +  data: [
    +    {
    +      id: '+14155552671-+14155552981',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'FI',
    +      expiryDate: 1666195955,
    +      fraudStatus: 'Expired',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    },
    +    {
    +      id: '127.0.0.1-127.0.0.2',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'SE',
    +      expiryDate: 1694775553,
    +      fraudStatus: 'Flagged',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    }
    +  ]
    +}
    `,11),e=[o];function t(c,r,E,i,y,F){return n(),a("div",null,e)}const m=s(l,[["render",t]]);export{d as __pageData,m as default}; diff --git a/assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.lean.js b/assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.lean.js new file mode 100644 index 0000000..06da395 --- /dev/null +++ b/assets/tutorials-api_retrieving-top-contributions.md.2ee779e1.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as p}from"./chunks/framework.c4d6cd72.js";const d=JSON.parse('{"title":"Retrieving top contributions","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/retrieving-top-contributions.md","filePath":"tutorials-api/retrieving-top-contributions.md"}'),l={name:"tutorials-api/retrieving-top-contributions.md"},o=p("",11),e=[o];function t(c,r,E,i,y,F){return n(),a("div",null,e)}const m=s(l,[["render",t]]);export{d as __pageData,m as default}; diff --git a/assets/tutorials-api_signing-transactions.md.ac4233f9.js b/assets/tutorials-api_signing-transactions.md.ac4233f9.js new file mode 100644 index 0000000..b43ccc3 --- /dev/null +++ b/assets/tutorials-api_signing-transactions.md.ac4233f9.js @@ -0,0 +1,313 @@ +import{_ as s,o as n,c as a,Q as p}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Signing transactions","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/signing-transactions.md","filePath":"tutorials-api/signing-transactions.md"}'),l={name:"tutorials-api/signing-transactions.md"},o=p(`

    Signing transactions

    Every operation that contains …/assemble in its path and has a mirroring endpoint (e.g., assembling a contribution -> submitting a contribution) requires its transaction to be represented as a transactionHex string retrieved from the first request to be signed as a Hex before it is used for the second one.

    For reference, see any of the following tutorials:

    The exact implementation to your system may vary depending on the specific SDK or programming language being used. However, the overall sequence of events to sign a transaction should be the following:

    1. Create a keyPair object from the public and private keys of the user's Iroha 2 key pair.
    2. Retrieve the Hex string of the required transaction.
    3. Decode the retrieved transaction Hex string.
    4. Sign the decoded transaction.
    5. Re-encode the signed transaction to Hex format.

    The resulting encoded transaction Hex string can be used as the body for requests to the following endpoints:

    http
    POST /api/v1/contribution-management/contribution
    +PATCH /api/v1/contribution-management/contribution/flag
    POST /api/v1/contribution-management/contribution
    +PATCH /api/v1/contribution-management/contribution/flag

    Iroha SDK references

    You can use any Iroha SDK available to sign a transaction. Below are references on how to sign a transaction using the following Iroha SDKs:

    kotlin
    // Your package value:
    +package something
    +
    +// Import dependencies:
    +import jp.co.soramitsu.iroha2.appendSignatures
    +import jp.co.soramitsu.iroha2.generated.datamodel.transaction.VersionedSignedTransaction
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable
    +import org.bouncycastle.util.encoders.Hex
    +import java.io.File
    +
    +// Example transaction Hex string:
    +// transactionHex = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +fun decodeSignEncode(transactionHex: String): String {
    +    // Example ed25519 public key:
    +    val publicKey = "7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +    // Example ed25519 private key:
    +    // Note: In Kotlin/Java SDK the truncated representation is more common, although you can refer to full ones represented as concatenation of private and public ones in other SDKs
    +    val privateKey = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc3"
    +
    +    // Obtain 'keyPair' from the public and private keys of the Iroha 2 key pair:
    +    val keyPair = keyPairFromHex(
    +        publicKey,
    +        privateKey,
    +        EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.ED_25519)
    +    )
    +
    +    // Decode the transaction:
    +    val transaction: ByteArray = try {
    +        Hex.decode(transactionHex)
    +    } catch (e: IllegalArgumentException) {
    +        println("Could not decode transaction from hex format: $e")
    +        throw e
    +    }
    +    val decodedTransaction = transaction.let { VersionedSignedTransaction.decode(it) }
    +
    +    // Sign the transaction:
    +    val signedTransaction = decodedTransaction.appendSignatures(keyPair)
    +
    +    // Re-encode the transaction:
    +    val encoded = signedTransaction.let { VersionedSignedTransaction.encode(it) }
    +    val encodedHex = Hex.toHexString(encoded)
    +
    +    // Use the value wherever needed further:
    +    println("Signed transaction (Hex): $encodedHex")
    +    return encodedHex
    +}
    // Your package value:
    +package something
    +
    +// Import dependencies:
    +import jp.co.soramitsu.iroha2.appendSignatures
    +import jp.co.soramitsu.iroha2.generated.datamodel.transaction.VersionedSignedTransaction
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable
    +import org.bouncycastle.util.encoders.Hex
    +import java.io.File
    +
    +// Example transaction Hex string:
    +// transactionHex = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +fun decodeSignEncode(transactionHex: String): String {
    +    // Example ed25519 public key:
    +    val publicKey = "7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +    // Example ed25519 private key:
    +    // Note: In Kotlin/Java SDK the truncated representation is more common, although you can refer to full ones represented as concatenation of private and public ones in other SDKs
    +    val privateKey = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc3"
    +
    +    // Obtain 'keyPair' from the public and private keys of the Iroha 2 key pair:
    +    val keyPair = keyPairFromHex(
    +        publicKey,
    +        privateKey,
    +        EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.ED_25519)
    +    )
    +
    +    // Decode the transaction:
    +    val transaction: ByteArray = try {
    +        Hex.decode(transactionHex)
    +    } catch (e: IllegalArgumentException) {
    +        println("Could not decode transaction from hex format: $e")
    +        throw e
    +    }
    +    val decodedTransaction = transaction.let { VersionedSignedTransaction.decode(it) }
    +
    +    // Sign the transaction:
    +    val signedTransaction = decodedTransaction.appendSignatures(keyPair)
    +
    +    // Re-encode the transaction:
    +    val encoded = signedTransaction.let { VersionedSignedTransaction.encode(it) }
    +    val encodedHex = Hex.toHexString(encoded)
    +
    +    // Use the value wherever needed further:
    +    println("Signed transaction (Hex): $encodedHex")
    +    return encodedHex
    +}
    js
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import * as datamodel from '@iroha2/data-model' // version: 4.1.0
    +import { signTransaction, setCrypto, Signer } from '@iroha2/client' // version: 4.1.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +setCrypto(crypto)
    +
    +/**
    + * @param {Uint8Array} bytes
    + * @returns {string}
    + */
    +function bytesToHex(bytes) {
    +  return Array.from(bytes, (v) => v.toString(16).padStart(2, '0')).join('')
    +}
    +
    +/**
    + * @param {string} hex
    + * @returns {Uint8Array}
    + */
    +function hexToBytes(hex) {
    +  /** @type {number[]} */
    +  const bytes = []
    +  for (let i = 0; i < hex.length; i += 2) {
    +    bytes.push(parseInt(hex.slice(i, i + 2), 16))
    +  }
    +  return Uint8Array.from(bytes)
    +}
    +
    +/**
    + * @param {datamodel.SignedTransaction} tx
    + * @param {import('@iroha2/crypto-core').KeyPair} keyPair
    + * @return {datamodel.SignedTransaction}
    + */
    +function appendSignatureWithKeyPair(tx, keyPair) {
    +  const signer = new Signer(tx.payload.account_id, keyPair)
    +  const signature = signTransaction(tx.payload, signer)
    +  return datamodel.SignedTransaction({
    +    payload: tx.payload,
    +    signatures: [...tx.signatures, signature]
    +  })
    +}
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} transaction - hex of the transaction
    + * @returns {string} - hex of the transaction with the appended signature
    + */
    +function appendSignature(publicKeyHex, privateKeyHex, transaction) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key:
    +        // magic ed25519 multihash prefix
    +        'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    const txDecoded = datamodel.VersionedSignedTransaction.fromBuffer(
    +      hexToBytes(transaction)
    +    )
    +
    +    const txNew = datamodel.VersionedSignedTransaction(
    +      'V1',
    +      appendSignatureWithKeyPair(txDecoded.as('V1'), keyPair)
    +    )
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +  })
    +}
    +
    +// example transaction
    +const tx = appendSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
    +)
    +
    +console.log(tx)
    +// => 0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000081c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f1c65643235353139807fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac01014a3cffcfb6276cc6de039c3ab287e7614e6dffc5e152200efa817d59c04334839c9624781bb1bda7b1d5ead0f0ea1c31238cccf9a948becf71d09728c4914d0d
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import * as datamodel from '@iroha2/data-model' // version: 4.1.0
    +import { signTransaction, setCrypto, Signer } from '@iroha2/client' // version: 4.1.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +setCrypto(crypto)
    +
    +/**
    + * @param {Uint8Array} bytes
    + * @returns {string}
    + */
    +function bytesToHex(bytes) {
    +  return Array.from(bytes, (v) => v.toString(16).padStart(2, '0')).join('')
    +}
    +
    +/**
    + * @param {string} hex
    + * @returns {Uint8Array}
    + */
    +function hexToBytes(hex) {
    +  /** @type {number[]} */
    +  const bytes = []
    +  for (let i = 0; i < hex.length; i += 2) {
    +    bytes.push(parseInt(hex.slice(i, i + 2), 16))
    +  }
    +  return Uint8Array.from(bytes)
    +}
    +
    +/**
    + * @param {datamodel.SignedTransaction} tx
    + * @param {import('@iroha2/crypto-core').KeyPair} keyPair
    + * @return {datamodel.SignedTransaction}
    + */
    +function appendSignatureWithKeyPair(tx, keyPair) {
    +  const signer = new Signer(tx.payload.account_id, keyPair)
    +  const signature = signTransaction(tx.payload, signer)
    +  return datamodel.SignedTransaction({
    +    payload: tx.payload,
    +    signatures: [...tx.signatures, signature]
    +  })
    +}
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} transaction - hex of the transaction
    + * @returns {string} - hex of the transaction with the appended signature
    + */
    +function appendSignature(publicKeyHex, privateKeyHex, transaction) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key:
    +        // magic ed25519 multihash prefix
    +        'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    const txDecoded = datamodel.VersionedSignedTransaction.fromBuffer(
    +      hexToBytes(transaction)
    +    )
    +
    +    const txNew = datamodel.VersionedSignedTransaction(
    +      'V1',
    +      appendSignatureWithKeyPair(txDecoded.as('V1'), keyPair)
    +    )
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +  })
    +}
    +
    +// example transaction
    +const tx = appendSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
    +)
    +
    +console.log(tx)
    +// => 0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000081c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f1c65643235353139807fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac01014a3cffcfb6276cc6de039c3ab287e7614e6dffc5e152200efa817d59c04334839c9624781bb1bda7b1d5ead0f0ea1c31238cccf9a948becf71d09728c4914d0d
    python
    # Import dependencies:
    +from iroha2.data_model.transaction import SignedTransaction
    +from iroha2.crypto import KeyPair
    +
    +# Example signed transaction, encoded with SCALE codec and represented as hex string:
    +encoded_transaction = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +
    +# Example ed25519 private key:
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain \`key_pair\` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Decode the transaction:
    +transaction = SignedTransaction.decode(encoded_transaction)
    +
    +# Sign the transaction with the provided private key:
    +transaction.append_signature(key_pair)
    +
    +# Re-encode the transaction:
    +re_encoded_transaction = transaction.encode()
    +
    +# Retrieve the encoded Hex string of the transaction:
    +print(f"Signed and encoded transaction:\\n{re_encoded_transaction}")
    # Import dependencies:
    +from iroha2.data_model.transaction import SignedTransaction
    +from iroha2.crypto import KeyPair
    +
    +# Example signed transaction, encoded with SCALE codec and represented as hex string:
    +encoded_transaction = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +
    +# Example ed25519 private key:
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain \`key_pair\` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Decode the transaction:
    +transaction = SignedTransaction.decode(encoded_transaction)
    +
    +# Sign the transaction with the provided private key:
    +transaction.append_signature(key_pair)
    +
    +# Re-encode the transaction:
    +re_encoded_transaction = transaction.encode()
    +
    +# Retrieve the encoded Hex string of the transaction:
    +print(f"Signed and encoded transaction:\\n{re_encoded_transaction}")
    `,11),e=[o];function c(t,r,y,E,i,d){return n(),a("div",null,e)}const f=s(l,[["render",c]]);export{F as __pageData,f as default}; diff --git a/assets/tutorials-api_signing-transactions.md.ac4233f9.lean.js b/assets/tutorials-api_signing-transactions.md.ac4233f9.lean.js new file mode 100644 index 0000000..3fb3893 --- /dev/null +++ b/assets/tutorials-api_signing-transactions.md.ac4233f9.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as p}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Signing transactions","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/signing-transactions.md","filePath":"tutorials-api/signing-transactions.md"}'),l={name:"tutorials-api/signing-transactions.md"},o=p("",11),e=[o];function c(t,r,y,E,i,d){return n(),a("div",null,e)}const f=s(l,[["render",c]]);export{F as __pageData,f as default}; diff --git a/assets/tutorials-api_signing-user-email-addresses.md.26112d07.js b/assets/tutorials-api_signing-user-email-addresses.md.26112d07.js new file mode 100644 index 0000000..87986b5 --- /dev/null +++ b/assets/tutorials-api_signing-user-email-addresses.md.26112d07.js @@ -0,0 +1,165 @@ +import{_ as s,o as a,c as n,Q as p}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Signing user email addresses","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/signing-user-email-addresses.md","filePath":"tutorials-api/signing-user-email-addresses.md"}'),l={name:"tutorials-api/signing-user-email-addresses.md"},e=p(`

    Signing user email addresses

    Every API request to authorize a user in the system requires a signature of the user's email address.

    The exact implementation to your system may vary depending on the specific SDK or programming language being used. However, the overall sequence of events to sign a user email address should be the following:

    1. Create a keyPair object from the public and private keys of the user's authentication key pair.
    2. Obtain a signature of the user's email address.
    3. Encode the signature as a Hex string.

    The resulting encoded signature Hex string can be used as a part of the body for requests to the following endpoint:

    http
    POST /auth/api/v1/authentication-management/session
    POST /auth/api/v1/authentication-management/session

    Iroha SDK references

    You can use any Iroha SDK available to sign a user's email address. Below are references on how to sign a transaction using the following Iroha SDKs:

    kotlin
    // Your package value
    +package something
    +
    +// Import dependencies
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import jp.co.soramitsu.iroha2.sign
    +import jp.co.soramitsu.iroha2.toHex
    +
    +class SimpleSigner {
    +
    +    fun main(args: Array<String>) {
    +        if (args.size != 3) {
    +            println("Specify public_key, private_key and text to sign")
    +            return
    +        }
    +
    +        // The public key of the user's authentication key pair
    +        val publicKey = args[0]
    +
    +        // The private key of the user's authentication key pair
    +        val privateKey = args[1]
    +
    +        // The user's email address
    +        val toSign = args[2]
    +
    +        // Create a \`keyPair\` object from the Hex string of the public and private keys of the user's authentication key pair
    +        val keyPair = keyPairFromHex(publicKey, privateKey)
    +
    +        // Obtain a \`signature\` of the user's email address
    +        val signature = keyPair.private.sign(toSign.toByteArray(Charsets.UTF_8)).toHex()
    +
    +        // Encode the \`signature\` as a Hex string
    +        println("Signed message (Hex): $signature")
    +    }
    +}
    // Your package value
    +package something
    +
    +// Import dependencies
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import jp.co.soramitsu.iroha2.sign
    +import jp.co.soramitsu.iroha2.toHex
    +
    +class SimpleSigner {
    +
    +    fun main(args: Array<String>) {
    +        if (args.size != 3) {
    +            println("Specify public_key, private_key and text to sign")
    +            return
    +        }
    +
    +        // The public key of the user's authentication key pair
    +        val publicKey = args[0]
    +
    +        // The private key of the user's authentication key pair
    +        val privateKey = args[1]
    +
    +        // The user's email address
    +        val toSign = args[2]
    +
    +        // Create a \`keyPair\` object from the Hex string of the public and private keys of the user's authentication key pair
    +        val keyPair = keyPairFromHex(publicKey, privateKey)
    +
    +        // Obtain a \`signature\` of the user's email address
    +        val signature = keyPair.private.sign(toSign.toByteArray(Charsets.UTF_8)).toHex()
    +
    +        // Encode the \`signature\` as a Hex string
    +        println("Signed message (Hex): $signature")
    +    }
    +}
    js
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} email
    + * @returns {string} - email signature hex
    + */
    +function createEmailSignature(publicKeyHex, privateKeyHex, email) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key: 'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    return keyPair
    +      .sign('array', new TextEncoder().encode(email))
    +      .payload('hex')
    +  })
    +}
    +
    +// example signature
    +const signature = createEmailSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  'alice@wonderland.space'
    +)
    +
    +console.log(signature)
    +// => 9729e8fbcd425bfe48809cc996c9e6d3cecddf0848a51d8758582b3c84bb2caca8e41a8290018aa7064f0b9ec61d2b1a155d5e4c772bc992d918528cf6cb6308
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} email
    + * @returns {string} - email signature hex
    + */
    +function createEmailSignature(publicKeyHex, privateKeyHex, email) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key: 'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    return keyPair
    +      .sign('array', new TextEncoder().encode(email))
    +      .payload('hex')
    +  })
    +}
    +
    +// example signature
    +const signature = createEmailSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  'alice@wonderland.space'
    +)
    +
    +console.log(signature)
    +// => 9729e8fbcd425bfe48809cc996c9e6d3cecddf0848a51d8758582b3c84bb2caca8e41a8290018aa7064f0b9ec61d2b1a155d5e4c772bc992d918528cf6cb6308
    python
    # Import dependencies
    +from iroha2.crypto import KeyPair
    +
    +# Example ed25519 private key
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain \`key_pair\` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Sign the user's email address:
    +signature = key_pair.sign(b"email@address")
    +
    +# Retrieve the encoded Hex string of the user's \`signature\`
    +print(f"Encoded signature:\\n{bytes(signature).hex()}")
    # Import dependencies
    +from iroha2.crypto import KeyPair
    +
    +# Example ed25519 private key
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain \`key_pair\` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Sign the user's email address:
    +signature = key_pair.sign(b"email@address")
    +
    +# Retrieve the encoded Hex string of the user's \`signature\`
    +print(f"Encoded signature:\\n{bytes(signature).hex()}")
    `,9),o=[e];function c(t,r,y,i,E,d){return a(),n("div",null,o)}const g=s(l,[["render",c]]);export{F as __pageData,g as default}; diff --git a/assets/tutorials-api_signing-user-email-addresses.md.26112d07.lean.js b/assets/tutorials-api_signing-user-email-addresses.md.26112d07.lean.js new file mode 100644 index 0000000..dd4ffe0 --- /dev/null +++ b/assets/tutorials-api_signing-user-email-addresses.md.26112d07.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as p}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Signing user email addresses","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/signing-user-email-addresses.md","filePath":"tutorials-api/signing-user-email-addresses.md"}'),l={name:"tutorials-api/signing-user-email-addresses.md"},e=p("",9),o=[e];function c(t,r,y,i,E,d){return a(),n("div",null,o)}const g=s(l,[["render",c]]);export{F as __pageData,g as default}; diff --git a/assets/tutorials-api_submitting-a-contribution.md.4e2f638d.js b/assets/tutorials-api_submitting-a-contribution.md.4e2f638d.js new file mode 100644 index 0000000..c46a9df --- /dev/null +++ b/assets/tutorials-api_submitting-a-contribution.md.4e2f638d.js @@ -0,0 +1,87 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Submitting a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/submitting-a-contribution.md","filePath":"tutorials-api/submitting-a-contribution.md"}'),p={name:"tutorials-api/submitting-a-contribution.md"},o=l(`

    Submitting a contribution

    Note

    A peer account must be authorized for this operation to succeed. See Authorizing an account.

    To submit a contribution, perform the following steps:

    1. Assemble a contribution by sending the following request:

      http
      POST /data/api/v1/contribution-management/contribution/assemble
      POST /data/api/v1/contribution-management/contribution/assemble
      json5
      {
      +  id: 'string', //A unique fraud event identifier
      +  fraudType: 'Wangiri', //The type of the fraud event. Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
      +  origination: 'string', //The two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166)
      +  destination: 'string', //The two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166)
      +  expiryDate: 0 //integer($int32) //The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds)
      +}
      {
      +  id: 'string', //A unique fraud event identifier
      +  fraudType: 'Wangiri', //The type of the fraud event. Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
      +  origination: 'string', //The two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166)
      +  destination: 'string', //The two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166)
      +  expiryDate: 0 //integer($int32) //The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds)
      +}
      json5
      {
      +  id: '127.0.0.1-127.0.0.2',
      +  fraudType: 'IPFraud',
      +  origination: 'SE',
      +  destination: 'SE',
      +  expiryDate: 1694775553
      +}
      {
      +  id: '127.0.0.1-127.0.0.2',
      +  fraudType: 'IPFraud',
      +  origination: 'SE',
      +  destination: 'SE',
      +  expiryDate: 1694775553
      +}
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
    2. Sign the transactionHex string (see Signing transactions) retrieved from the response.

    3. Submit the assembled and signed contribution by sending the following request:

      http
      POST /data/api/v1/contribution-management/contribution
      POST /data/api/v1/contribution-management/contribution
      json5
      'transactionHex'
      'transactionHex'
      json5
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      json5
      {
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {
      +    definitionId: '***#domain',
      +    accountId: 'user@domain'
      +  }
      +}
      {
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {
      +    definitionId: '***#domain',
      +    accountId: 'user@domain'
      +  }
      +}

    Expected result

    An assembled and signed contribution is submitted to the ledger, the peer’s list of contributions is updated and their credit balance is increased based on the current reward rate active in the network (see Current conversion rate).

    `,6),e=[o];function t(c,r,i,E,y,d){return a(),n("div",null,e)}const b=s(p,[["render",t]]);export{F as __pageData,b as default}; diff --git a/assets/tutorials-api_submitting-a-contribution.md.4e2f638d.lean.js b/assets/tutorials-api_submitting-a-contribution.md.4e2f638d.lean.js new file mode 100644 index 0000000..a069f34 --- /dev/null +++ b/assets/tutorials-api_submitting-a-contribution.md.4e2f638d.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.c4d6cd72.js";const F=JSON.parse('{"title":"Submitting a contribution","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/submitting-a-contribution.md","filePath":"tutorials-api/submitting-a-contribution.md"}'),p={name:"tutorials-api/submitting-a-contribution.md"},o=l("",6),e=[o];function t(c,r,i,E,y,d){return a(),n("div",null,e)}const b=s(p,[["render",t]]);export{F as __pageData,b as default}; diff --git a/assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.js b/assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.js new file mode 100644 index 0000000..5f47d09 --- /dev/null +++ b/assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.js @@ -0,0 +1,97 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Verifying a contribution has been submitted","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.md","filePath":"tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.md"}'),p={name:"tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.md"},o=l(`

    Verifying a contribution has been submitted

    To verify that a contribution has been successfully submitted and the contributor’s balance has been updated accordingly, perform the following steps:

    1. Retrieve a list of the peer’s top contributions:

      • Send the following request:

        http
        GET /data/api/v1/contribution-management/contribution?self-only=true
        GET /data/api/v1/contribution-management/contribution?self-only=true
        json5
        {
        +  status: {
        +    code: 0, //integer($int32)
        +    name: 'string',
        +    message: 'string'
        +  },
        +  data: []
        +}
        {
        +  status: {
        +    code: 0, //integer($int32)
        +    name: 'string',
        +    message: 'string'
        +  },
        +  data: []
        +}
        json5
        {
        +  status: {
        +    code: 0,
        +    name: 'Ok'
        +  },
        +  data: [
        +    {
        +      id: '127.0.0.1-127.0.0.2',
        +      fraudType: 'IPFraud',
        +      origination: 'SE',
        +      destination: 'SE',
        +      expiryDate: 1694775553,
        +      fraudStatus: 'Active',
        +      confidenceIndex: null
        +    }
        +  ]
        +}
        {
        +  status: {
        +    code: 0,
        +    name: 'Ok'
        +  },
        +  data: [
        +    {
        +      id: '127.0.0.1-127.0.0.2',
        +      fraudType: 'IPFraud',
        +      origination: 'SE',
        +      destination: 'SE',
        +      expiryDate: 1694775553,
        +      fraudStatus: 'Active',
        +      confidenceIndex: null
        +    }
        +  ]
        +}
      • If a contribution has been submitted successfully, it is added to the top of the list of the peer’s contributions.

    2. Retrieve the peer’s credit balance:

      • Send the following request:

        http
        GET \`/data/api/v1/wallet-management/balance\`
        GET \`/data/api/v1/wallet-management/balance\`
        json5
        {
        +  status: {
        +    code: 0, //integer($int32)
        +    name: 'string',
        +    message: 'string'
        +  },
        +  data: {
        +    tokenId: {
        +      definitionId: '<##g0?Fd2Tl@L.;XT<3!T#gf#^nm$g=IpRW,uB/BpdKye^s',
        +      accountId: '8*rV=|xv@PN^J~JO(V9\\\\K[Ho-4C:,MEpIMb-?~v4s[S._s;8l'
        +    },
        +    balance: 0 //integer($int32)
        +  }
        +}
        {
        +  status: {
        +    code: 0, //integer($int32)
        +    name: 'string',
        +    message: 'string'
        +  },
        +  data: {
        +    tokenId: {
        +      definitionId: '<##g0?Fd2Tl@L.;XT<3!T#gf#^nm$g=IpRW,uB/BpdKye^s',
        +      accountId: '8*rV=|xv@PN^J~JO(V9\\\\K[Ho-4C:,MEpIMb-?~v4s[S._s;8l'
        +    },
        +    balance: 0 //integer($int32)
        +  }
        +}
        json5
        {
        +  status: {
        +    code: 0,
        +    name: 'Ok'
        +  },
        +  data: {
        +    tokenId: {
        +      definitionId: 'credit#admin',
        +      accountId: 'qa@qa'
        +    },
        +    balance: 1001
        +  }
        +}
        {
        +  status: {
        +    code: 0,
        +    name: 'Ok'
        +  },
        +  data: {
        +    tokenId: {
        +      definitionId: 'credit#admin',
        +      accountId: 'qa@qa'
        +    },
        +    balance: 1001
        +  }
        +}
      • If a contribution has been submitted successfully, the peer’s balance is updated in accordance with the declared reward amounts.

    `,3),e=[o];function t(c,r,E,i,y,d){return n(),a("div",null,e)}const b=s(p,[["render",t]]);export{u as __pageData,b as default}; diff --git a/assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.lean.js b/assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.lean.js new file mode 100644 index 0000000..2ce4fc5 --- /dev/null +++ b/assets/tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md.434872e9.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.c4d6cd72.js";const u=JSON.parse('{"title":"Verifying a contribution has been submitted","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.md","filePath":"tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.md"}'),p={name:"tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.md"},o=l("",3),e=[o];function t(c,r,E,i,y,d){return n(),a("div",null,e)}const b=s(p,[["render",t]]);export{u as __pageData,b as default}; diff --git a/assets/tutorials-web.md.7984286a.js b/assets/tutorials-web.md.7984286a.js new file mode 100644 index 0000000..f804232 --- /dev/null +++ b/assets/tutorials-web.md.7984286a.js @@ -0,0 +1 @@ +import{_ as a,o as t,c as e,Q as o}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Tutorials: Web UI","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web.md","filePath":"tutorials-web.md"}'),i={name:"tutorials-web.md"},r=o('

    Tutorials: Web UI

    This section lists the tutorials for the basic operations that could be performed with the FIB Web UI, including:

    1. Uploading fraud data
    2. Flagging fraud data
    3. Downloading fraud data
    ',3),l=[r];function s(d,n,u,_,c,h){return t(),e("div",null,l)}const p=a(i,[["render",s]]);export{b as __pageData,p as default}; diff --git a/assets/tutorials-web.md.7984286a.lean.js b/assets/tutorials-web.md.7984286a.lean.js new file mode 100644 index 0000000..4a18b3a --- /dev/null +++ b/assets/tutorials-web.md.7984286a.lean.js @@ -0,0 +1 @@ +import{_ as a,o as t,c as e,Q as o}from"./chunks/framework.c4d6cd72.js";const b=JSON.parse('{"title":"Tutorials: Web UI","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web.md","filePath":"tutorials-web.md"}'),i={name:"tutorials-web.md"},r=o("",3),l=[r];function s(d,n,u,_,c,h){return t(),e("div",null,l)}const p=a(i,[["render",s]]);export{b as __pageData,p as default}; diff --git a/assets/tutorials-web_downloading-fraud-data.md.bc499274.js b/assets/tutorials-web_downloading-fraud-data.md.bc499274.js new file mode 100644 index 0000000..fc539ac --- /dev/null +++ b/assets/tutorials-web_downloading-fraud-data.md.bc499274.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Downloading fraud data","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web/downloading-fraud-data.md","filePath":"tutorials-web/downloading-fraud-data.md"}'),r={name:"tutorials-web/downloading-fraud-data.md"},n=o('

    Downloading fraud data

    To download fraud event data via FIB Web UI, perform the following steps:

    1. From the top right menu, select Download.
    2. On the Download Fraud Data screen that appears, specify the following data:
      • Select Fraud Type dropdown menu — select the fraud type of the fraud events you wish to download, then select Add; several individual fraud types can be added to the request.
      • Select Originating Country dropdown menu — select the country that the fraud events originated from, then select Add; several individual countries can be added to the request.
      • From Date box — from the pop-up calendar, select the start date that the requested fraud events are filtered by; or enter the date manually in the DD.MM.YYYY format.
      • To Date box — from the pop-up calendar, select the end date that the requested fraud events are filtered by; or enter the date manually in the DD.MM.YYYY format.
    3. Select Download to download the fraud events data filtered according to the data specified.

    For more information on fraud event data, including fraud identifiers, fraud types, and other relevant concepts, see Fraud Events.

    Expected result

    The fraud events data, filtered according to your specified criteria, is downloaded to your device as a .csv file, which can be opened using any spreadsheet software available to you (e.g., Microsoft Excel, Google Sheets); and the credit balance is decreased based on the current conversion rate active in the network (see Current conversion rate).

    ',6),d=[n];function i(s,l,c,u,h,f){return t(),a("div",null,d)}const m=e(r,[["render",i]]);export{g as __pageData,m as default}; diff --git a/assets/tutorials-web_downloading-fraud-data.md.bc499274.lean.js b/assets/tutorials-web_downloading-fraud-data.md.bc499274.lean.js new file mode 100644 index 0000000..4295ad8 --- /dev/null +++ b/assets/tutorials-web_downloading-fraud-data.md.bc499274.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Downloading fraud data","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web/downloading-fraud-data.md","filePath":"tutorials-web/downloading-fraud-data.md"}'),r={name:"tutorials-web/downloading-fraud-data.md"},n=o("",6),d=[n];function i(s,l,c,u,h,f){return t(),a("div",null,d)}const m=e(r,[["render",i]]);export{g as __pageData,m as default}; diff --git a/assets/tutorials-web_flagging-fraud-data.md.142aa03d.js b/assets/tutorials-web_flagging-fraud-data.md.142aa03d.js new file mode 100644 index 0000000..0a1af00 --- /dev/null +++ b/assets/tutorials-web_flagging-fraud-data.md.142aa03d.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as e,Q as r}from"./chunks/framework.c4d6cd72.js";const p=JSON.parse('{"title":"Flagging fraud data","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web/flagging-fraud-data.md","filePath":"tutorials-web/flagging-fraud-data.md"}'),o={name:"tutorials-web/flagging-fraud-data.md"},n=r('

    Flagging fraud data

    To flag fraud event data via FIB Web UI, perform the following steps:

    1. From the top right menu, select Upload.
    2. On the Upload Fraud Data screen that appears, specify the following data:
      • Select Fraud Type dropdown menu — select the fraud type of the fraud event that you are flagging.
      • Select Transaction Type dropdown menu — select Flag Fraud Data as False Positive.
      • Search Value box — input the id fraud identifier of the fraud event that you are flagging.
    3. Select Find in Ledger to update the list of retrieved transactions.
    4. Find the fraud event that you wish to flag and select Flag Tx.

    Expected result

    The fraud event status is set to Flagged.

    ',5),l=[n];function d(i,s,g,u,c,f){return a(),e("div",null,l)}const _=t(o,[["render",d]]);export{p as __pageData,_ as default}; diff --git a/assets/tutorials-web_flagging-fraud-data.md.142aa03d.lean.js b/assets/tutorials-web_flagging-fraud-data.md.142aa03d.lean.js new file mode 100644 index 0000000..a208f8c --- /dev/null +++ b/assets/tutorials-web_flagging-fraud-data.md.142aa03d.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as e,Q as r}from"./chunks/framework.c4d6cd72.js";const p=JSON.parse('{"title":"Flagging fraud data","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web/flagging-fraud-data.md","filePath":"tutorials-web/flagging-fraud-data.md"}'),o={name:"tutorials-web/flagging-fraud-data.md"},n=r("",5),l=[n];function d(i,s,g,u,c,f){return a(),e("div",null,l)}const _=t(o,[["render",d]]);export{p as __pageData,_ as default}; diff --git a/assets/tutorials-web_uploading-fraud-data.md.ce234204.js b/assets/tutorials-web_uploading-fraud-data.md.ce234204.js new file mode 100644 index 0000000..1302c7e --- /dev/null +++ b/assets/tutorials-web_uploading-fraud-data.md.ce234204.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Uploading fraud data","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web/uploading-fraud-data.md","filePath":"tutorials-web/uploading-fraud-data.md"}'),r={name:"tutorials-web/uploading-fraud-data.md"},n=o('

    Uploading fraud data

    To upload fraud event data via FIB Web UI, perform the following steps:

    1. From the top right menu, select Upload.

    2. On the Upload Fraud Data screen that appears, specify the following data:

      • Select Fraud Type dropdown menu — select the fraud type of the fraud event that you are uploading.
      • Select Transaction Type dropdown menu — select Add Fraud Data.
      • Data Upload box — input the following data about the fraud event, separated by comma:
        • The id fraud identifier.
        • The two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
        • The two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).

      Example: +33000123456, FR, ZA

      Note

      If you are uploading a range of fraud identifiers (i.e., a range of phone numbers or IP addresses), select This is a Fraud data range.

      In this case, the following data about the fraud event is input, separated by comma: The starting and ending values for the range of fraud identifiers, the origination country two-digit code, and the destination country two-digit code.

      Example: +447000123456, +447000123460, GB, US

    3. Select Upload to Ledger to upload the fraud event data.

    For more information on fraud event data, including fraud identifiers, fraud types, and other relevant concepts, see Fraud Events.

    Note

    If you are uploading several individual fraud identifiers, each entry must start from a new line.

    A single fraud event data submission can contain up to 500 entries.

    Expected result

    Your list of contributions is updated and the credit balance is increased based on the current conversion rate active in the network (see Current conversion rate).

    ',7),i=[n];function d(s,l,u,p,c,f){return t(),a("div",null,i)}const m=e(r,[["render",d]]);export{g as __pageData,m as default}; diff --git a/assets/tutorials-web_uploading-fraud-data.md.ce234204.lean.js b/assets/tutorials-web_uploading-fraud-data.md.ce234204.lean.js new file mode 100644 index 0000000..f959963 --- /dev/null +++ b/assets/tutorials-web_uploading-fraud-data.md.ce234204.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.c4d6cd72.js";const g=JSON.parse('{"title":"Uploading fraud data","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials-web/uploading-fraud-data.md","filePath":"tutorials-web/uploading-fraud-data.md"}'),r={name:"tutorials-web/uploading-fraud-data.md"},n=o("",7),i=[n];function d(s,l,u,p,c,f){return t(),a("div",null,i)}const m=e(r,[["render",d]]);export{g as __pageData,m as default}; diff --git a/getting-started.html b/getting-started.html new file mode 100644 index 0000000..58c4182 --- /dev/null +++ b/getting-started.html @@ -0,0 +1,23 @@ + + + + + + Getting started | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Getting started

    This section is designed to help you integrate the FIB API seamlessly into your application or system by providing instructions on how to register an account, check the API availability, call API endpoints, and test your implementation in a sandbox environment.

    It is advised to read the following topics in the order that they are presented:

    1. Registering an account
    2. Checking API availability
    3. Calling API endpoints
    4. Public test environment
    + + + + \ No newline at end of file diff --git a/getting-started/calling-api-endpoints.html b/getting-started/calling-api-endpoints.html new file mode 100644 index 0000000..4dd0289 --- /dev/null +++ b/getting-started/calling-api-endpoints.html @@ -0,0 +1,23 @@ + + + + + + Calling API endpoints | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Calling API endpoints

    Once your registration application has been approved, the connection credentials are sent to the email address you provided during registration.

    Using these credentials, you can implement calls to the FIB API endpoints into the code of your own application or system.

    Following the basic API architecture, your application or system—the API client in this relationship—connects to the FIB API server.

    To integrate your API client with the FIB API server, you can use different programming languages and frameworks, including Python, Java, Node.js, RUST, depending on the requirements of your own application or system.

    Some tutorials in this documentation provide code snippets in Kotlin/Java that are required in order to perform Iroha-related operations.

    The provided FIB API endpoints allow users to access the network's blockchain data, enabling users to perform operations such as submitting, retrieving and flagging contributions, etc.

    For examples of scenarios where FIB API endpoints are being called, check out Tutorials.

    + + + + \ No newline at end of file diff --git a/getting-started/checking-api-availability.html b/getting-started/checking-api-availability.html new file mode 100644 index 0000000..de9d195 --- /dev/null +++ b/getting-started/checking-api-availability.html @@ -0,0 +1,23 @@ + + + + + + Checking API availability | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Checking API availability

    Before implementing any API calls, it's important to ensure that the API is available and accessible to your application. To do so, authorize your account and retrieve a JSON token.

    To check the API availability, follow the Authorizing an account tutorial.

    If the JSON token is retrieved successfully, then the FIB API is available and you can proceed with Calling API endpoints.

    Otherwise, a response with an error code is displayed indicating the issue that needs to be resolved before proceeding.

    For a list of possible responses, see Authorizing a user in the system > Responses.

    Note

    There are a variety of external issues that may be preventing you from successfully retrieving a JSON token. Examples include blocked outgoing HTTP requests and no Internet connection.

    + + + + \ No newline at end of file diff --git a/getting-started/public-test-environment.html b/getting-started/public-test-environment.html new file mode 100644 index 0000000..0c81325 --- /dev/null +++ b/getting-started/public-test-environment.html @@ -0,0 +1,23 @@ + + + + + + Public test environment | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Public test environment

    The test environment is a safe and controlled environment where you can try out and experiment with the FIB API without affecting the production system. Here, you can make mistakes, test different scenarios, and learn how to use the API.

    To access the test environment, you need to follow the same steps as for the production environment. The only difference is that you will be provided with test credentials instead of production credentials (see Connection details below).

    Using the test environment is beneficial for at least the following several reasons:

    • You can test your implementation without affecting the production network.
    • You can catch and fix bugs before deploying to production.
    • You can optimize and fine-tune performance by simulating different loads and scenarios.

    Connection Details

    To connect to the FIB test environment, use the following credentials:

    + + + + \ No newline at end of file diff --git a/getting-started/registering-an-account.html b/getting-started/registering-an-account.html new file mode 100644 index 0000000..36dbc8f --- /dev/null +++ b/getting-started/registering-an-account.html @@ -0,0 +1,23 @@ + + + + + + Registering an account | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo
    + + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 0000000..f662aa3 --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"tutorials-web_flagging-fraud-data.md":"142aa03d","api-specification_auth-controller_refreshing-authentication-tokens.md":"83bb59e1","api-specification_contribution-controller_flagging-a-contribution.md":"8045bcc6","getting-started_public-test-environment.md":"69e33594","getting-started_registering-an-account.md":"ac58196f","index.md":"433ae868","api-specification_peer-controller_retrieving-all-premium-peers.md":"321bd301","api-specification_contribution-controller_retrieving-top-contributions.md":"8a8ccdc2","api-specification_premium-provider-controller_retrieving-incoming-premium-contribution-requests.md":"81df4888","overview_contributions.md":"b0ab6068","overview_how-fib-works.md":"c9900cfb","overview_fraud-events.md":"e3d26477","api-specification_premium-provider-controller_retrieving-outgoing-premium-contribution-requests.md":"f991d04e","api-specification_peer-controller_requesting-peer-details.md":"b46e774b","overview_tokenomics.md":"01957a7b","tutorials-web.md":"7984286a","api-specification_auth-controller_authorizing-a-user-in-the-system.md":"de9ef5d8","api-specification_contribution-controller_assembling-a-contribution-flag.md":"1a294380","api-specification_contribution-controller_assembling-a-contribution.md":"ba760f8a","api-specification.md":"0101f81a","api-specification_premium-provider-controller_requesting-access-to-premium-contributions-by-a-certain-peer.md":"b6c19900","api-specification_contribution-controller_submitting-a-contribution.md":"d3802ac5","api-specification_peer-controller_retrieving-peer-limit-status.md":"df3df50c","api-specification_contribution-controller_requesting-a-contribution-by-id.md":"f5b8ca6e","getting-started_checking-api-availability.md":"f10291ac","overview_web-interface.md":"2f541a4a","tutorials-api_flagging-a-contribution_verifying-a-contribution-has-been-flagged.md":"983c8ef8","overview.md":"7bb97411","tutorials-api_retrieving-top-contributions.md":"2ee779e1","api-specification_wallet-controller_retrieving-credit-balance.md":"f0502e46","tutorials-api.md":"02502bda","release-notes_index.md":"908c2a0e","getting-started.md":"0f93915a","tutorials-web_uploading-fraud-data.md":"ce234204","tutorials-api_submitting-a-contribution.md":"4e2f638d","tutorials-web_downloading-fraud-data.md":"bc499274","tutorials-api_generating-key-pairs.md":"fcdf5ae2","api-specification_auth-controller_retrieving-salt-values.md":"3d55c4b6","tutorials-api_flagging-a-contribution.md":"4c6bdbfb","tutorials-api_signing-transactions.md":"ac4233f9","getting-started_calling-api-endpoints.md":"14779e05","tutorials-api_signing-user-email-addresses.md":"26112d07","public_readme.md":"a3457823","tutorials-api_submitting-a-contribution_verifying-a-contribution-has-been-submitted.md":"434872e9","tutorials-api_authorizing-an-account.md":"7f4066ec"} diff --git a/index.html b/index.html new file mode 100644 index 0000000..32dbafe --- /dev/null +++ b/index.html @@ -0,0 +1,23 @@ + + + + + + Welcome | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Welcome

    Welcome to the Fraud Intelligence Blockchain (FIB) documentation.

    FIB is a blockchain-based platform designed to combat fraud in various industries, including telecommunications, finance, and e-commerce.

    This platform provides a secure and decentralized system for storing and sharing fraud-related information among participants to prevent potential fraudulent activities.

    FIB operates on the Iroha 2 Hyperledger blockchain and uses smart contracts to automate the exchange of fraud intelligence data. This platform enables organizations to securely share and access real-time information about known fraud events and other relevant data, allowing them to identify potential fraud attempts quicker and more accurately.

    Where to start?

    If you are new to FIB, start with the Overview section, which provides a high-level introduction to the technology. This section explains what the FIB is, how it works, and other related concepts and terms.

    For instructions on how to get started with the FIB, see the Getting Started section. This section covers everything from setting up your FIB account to accessing the API, and integrating it into your existing workflows and systems.

    For assistance with FIB Web UI, try the Tutorials: Web UI section that walks you through basic operations that you can perform using the web interface.

    If you're looking for step-by-step guidance on how to interact with the FIB API, check out the Tutorials: API section where you can find a variety of scenarios to help you get started with the API.

    Finally, the API Specification section provides technical specification for the available endpoints explaining their internals exhaustively.

    What is Iroha 2?

    Iroha 2 is a blockchain hyperledger used to manage accounts, assets, and on-chain data storage with efficient smart contracts. The ledger is written in Rust and provides the following SDKs:

    Check out the Iroha 2 Documentation as it provides an introduction to Iroha 2 as well as language-specific guides for Bash, Python, Rust, Kotlin/Java, and Javascript/TypeScript.

    Getting help

    If, at any point, you’re experiencing any issues, please submit them at Fraud Intelligence Blockchain Freshdesk. Upon review, someone will get back to you to resolve the issue.

    Additionally, you may contact FIL via email at support@fraudintelligencelimited.com


    Orillion logoSoramitsu logo
    + + + + \ No newline at end of file diff --git a/orillion-logo.png b/orillion-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..281ac14f45e3344a7f899fd23a3536befa5451bf GIT binary patch literal 12681 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 literal 0 HcmV?d00001 diff --git a/overview.html b/overview.html new file mode 100644 index 0000000..a603123 --- /dev/null +++ b/overview.html @@ -0,0 +1,23 @@ + + + + + + Overview | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    + + + + \ No newline at end of file diff --git a/overview/contributions.html b/overview/contributions.html new file mode 100644 index 0000000..4922a5b --- /dev/null +++ b/overview/contributions.html @@ -0,0 +1,23 @@ + + + + + + Contributions | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Contributions

    Contribution — a piece of data that describes a fraud event on the blockchain.

    Contributions can be submitted by authorized peers, and are stored on the blockchain.

    A peer that has contributed at least a single fraud event is considered a contributor.

    Operations

    Submitting contributions

    Once a contribution has been submitted, the peer’s list of contributions is updated, and their credit balance is increased by an amount equal to the number of contributions submitted based on the current reward rate active in the network.

    For complete instructions on how to submit a contribution, see Submitting a contribution.

    For information on the credit balance and rewards, see Tokenomics.

    Retrieving contributions

    In order for peers to keep their own records updated with the latest fraud event data, they can retrieve top contributions in a number of ways.

    Flagging contributions

    If a peer deems a certain contribution to no longer be relevant (e.g., it is a false positive), they can flag that contribution. Once a contribution is flagged, the ID of the peer that flagged it is saved with the contribution as flagger value.

    API requests data structure

    When retrieving top contributions, the following data is returned in the body of the response:

    Response body
    FieldValue TypeDescription
    idstringFraud event identifier.
    fraudTypeenum stringThe type of the fraud event.
    Could be one of the following:
    1. Wangiri
    2. IRSF
    3. StolenDevice
    4. IPFraud
    5. SMSA2P
    originationstringThe two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
    destinationstringThe two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).
    expiryDateinteger($int32)The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds).
    fraudStatusenum stringThe status of the event at the time of observing.
    Could be one of the following:
    1. Active
    2. Expired
    3. Flagged
    confidenceIndexnumber($double)The predicted fraud likelihood score in the range from 1 to 100.
    isPremiumbooleanThe definition of whether the contributor is a premium user.
    peerIdstringThe unique ID of the peer that contributed the data.
    flaggerstringThe unique ID of the peer that flagged the data. If a contribution hasn't been flagged at the time of observing, the field is returned empty.
    selfinteger($int32)Out of all the retrieved contributions, the number of contributions that have been submitted by the requesting user.
    oldinteger($int32)Out of all the retrieved contributions, the number of contributions that have already been seen by the requesting user.
    newinteger($int32)Out of all the retrieved contributions, the number of contributions that have not yet been seen by the requesting user.
    creditsSpentinteger($int32)The total amount of credits spent on the retrieved contributions.

    When assembling a contribution to then submit it, the following data must be specified in the body of the request:

    Request body
    FieldValue TypeDescription
    idstringFraud event identifier.
    fraudTypeenum stringThe type of the fraud event.
    Could be one of the following:
    1. Wangiri
    2. IRSF
    3. StolenDevice
    4. IPFraud
    5. SMSA2P
    originationstringThe two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
    destinationstringThe two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).
    expiryDateinteger($int32)The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds).
    + + + + \ No newline at end of file diff --git a/overview/fraud-events.html b/overview/fraud-events.html new file mode 100644 index 0000000..3c4d043 --- /dev/null +++ b/overview/fraud-events.html @@ -0,0 +1,23 @@ + + + + + + Fraud events | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Fraud events

    Fraud event — an occurrence that is suspected or confirmed to be fraudulent.

    FIB peers can submit data related to these fraud events—contributions—to help identify and prevent future fraudulent activities. By sharing information and collaborating with other participants in the network, contributors can help create a more secure and trustworthy ecosystem that is resistant to fraud and other types of malicious activities.

    Fraud model

    Every fraud event that is submitted and stored on the blockchain adheres to the following model:

    DataDescription
    Fraud IdentifierThe main identifier of the fraud event.
    Could be one of the following:
    1. A range of phone numbers (or a single one) compliant with the E.164 international standard and containing a valid National Destination Code.
    2. A range of IP addresses (or a single one).
    3. A unique IMEI identifier of a device.
    Fraud TypeThe type of the fraud event.
    Could be one of the following:
    1. Wangiri
    2. IRSF
    3. StolenDevice
    4. IPFraud
    5. SMSA2P
    Event OriginationThe two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
    Event DestinationThe two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).
    Event StatusThe status of the event at the time of observing.
    Could be one of the following:
    1. Active — the event is stored on the blockchain and has not yet expired.
    2. Expired — the event is stored on the blockchain, but is no longer relevant.
    3. Flagged — the event is stored on the blockchain and is flagged by one of the peers.
    Event Expiry DateThe exact time and date until which the event is considered relevant.
    Event TimestampThe exact time and date of when the event was submitted.
    Confidence IndexThe predicted fraud likelihood score in the range from 1 to 100.
    Consortium Identity KeyThe unique key of the peer that contributed the data.
    + + + + \ No newline at end of file diff --git a/overview/how-fib-works.html b/overview/how-fib-works.html new file mode 100644 index 0000000..a44d644 --- /dev/null +++ b/overview/how-fib-works.html @@ -0,0 +1,23 @@ + + + + + + How FIB works | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    How FIB works

    FIB is a decentralized network that enables the secure sharing and analysis of data related to fraud events.

    Authorized participants—peers—can submit information about suspected or confirmed fraudulent activities to the FIB network, where it is recorded on the blockchain. The submitted information can include details such as origin identifiers (e.g., IP addresses), the type of event, the exact time the event occurred, etc.

    By sharing this information and collaborating with other peers in the network, contributors can help prevent future fraudulent activities. In return for their contributions, peers can earn rewards in the form of credit tokens.

    Data on the network

    The FIB network serves as a secure database of various fraud events that are stored on the blockchain as contributions.

    Authorized peers can upload and download these contributions.

    Contributions uploaded by peers allow for the continuous expansion and updating of the FIB network. This facilitates information sharing and enhances the overall accuracy of data stored on the network.

    The contributions on the network can also be download by peers to update their own records and stay informed about the latest fraudulent activities. This process helps organizations remain vigilant and prevent fraudulent activities from occurring within their own systems.

    For more information, see Uploading contributions and Downloading contributions.

    Network security

    The security of the FIB network is crucial to ensure the safety of its users and transactions. To achieve this, the network uses scalable backend services serving requests to create and send transactions to a blockchain node securely.

    The network consists of multiple nodes, which increases its resilience and availability, potentially improving its ability to recover from disruptions.

    The security of the FIB network also relies on the use of key pairs and digital signatures.

    There are two types of key pairs that are required to interact with the FIB API backend:

    1. Authentication key pair — a deterministic Ed25519 key pair generated from the user’s email and password.
    2. Iroha 2 key pair — a deterministic Ed25519 key pair generated from the user’s emailpassword, and a random salt value.

    When a user creates a transaction on the FIB network, they sign it with their private key, which can then be verified by anyone using their public key. This process ensures that only the intended user is authorized to sign their transactions.

    Additionally, signing transactions with key pairs can enhance the privacy and confidentiality of the user's information on the network. Overall, the use of key pairs and digital signatures is a crucial aspect of the FIB network's security infrastructure.

    For more information, see Generating key pairs and Signing transactions.

    + + + + \ No newline at end of file diff --git a/overview/tokenomics.html b/overview/tokenomics.html new file mode 100644 index 0000000..991dd0a --- /dev/null +++ b/overview/tokenomics.html @@ -0,0 +1,23 @@ + + + + + + Tokenomics | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Tokenomics

    This topic provides a summary of the key financial concepts that are operational on the platform.

    Payment model

    The FIB provides a freemium pay-per-use model that allows users to earn and spend internal digital credits.

    Credits can be spent on downloading fraud event data from other users.

    Uploading fraud events

    In order to incentivize the registered peers to submit the fraud events that they have encountered, credits are rewarded for every submitted contribution.

    See the following related tutorials:

    Downloading fraud events

    The earned credits can be used to pay for downloading the fraud event data stored on the blockchain, which enables peers to update their own records and stay informed about the latest fraudulent activities. This process helps organizations to remain vigilant and prevent fraudulent activities from occurring within their own system.

    See the following related tutorials:

    Credit balance

    The number of digital credits that a peer has on their account, and that can be used to pay for downloading of fraud event data.

    A peer can check their current credit balance by going to the Tokens page of the FIB Web UI or by calling the following API endpoint: Retrieving credit balance.

    Confidence index

    All of the contributions submitted to the blockchain are automatically evaluated and assigned a score—confidence index—which is a numeric representation of the level of certainty that a contribution is fraudulent.

    When assigning a contribution with a confidence index value, FIB considers many crucial factors, such as the presence of CLI manipulation, origination from a known hotspot of fraudulent activity, attack patterns, event confirmation by multiple peers, etc.

    The confidence index value inherently affects the price of downloading the fraud event data. By default, peers download fraud event data in accordance with the default conversion rate. However, when retrieving contributions (see the confidence-score parameter) a peer can specify whether they want the price of the retrieved contributions to be calculated in accordance with the confidence index. If enabled, the price of any given contribution is expected to rise above the default conversion rate.

    Info

    As new fraud event data is uploaded to the blockchain, the confidence index value for any given contribution is constantly updated.

    Current default conversion rate

    • Uploading fraud events: 10 credits per id fraud identifier.
    • Downloading fraud events: 1 credit per id fraud identifier.

    Welcome bonus

    Every new peer that has successfully registered with FIB, automatically receives a 1,000 credits bonus.

    Premium subscription

    Our premium subscription offers custom paid conditions for users seeking to gain access to exclusive features and benefits, tailored to their individual needs.

    To apply for a premium subscription and discuss the conditions, go to the Profile page of the FIB Web UI and select Request on the Subscription tab.

    Alternatively, you may contact us at support@fraudintelligencelimited.com.

    Monthly reward limit

    The monthly reward limit is currently 1,000,000,000 rewards per peer.

    A peer can check their current limit status by calling the following API endpoint: Retrieving peer limit status.

    Info

    Fraud Intelligence Limited may from time to time, by an in-advance written email notice to you, adjust the reward limit, in accordance with the Fraud Intelligence Blockchain Terms & Conditions document.

    + + + + \ No newline at end of file diff --git a/overview/web-interface.html b/overview/web-interface.html new file mode 100644 index 0000000..8e29cf0 --- /dev/null +++ b/overview/web-interface.html @@ -0,0 +1,23 @@ + + + + + + Web interface | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Web interface

    Registered FIB peers can log in to the FIB Web Interface using their registered credentials.

    Home

    On this page peers can view the following tabs:

    Consortium Data

    This tab provides a dynamic visual representation of the recent fraud data uploaded by peers on the network. The threat map shows real-time data on the type of fraud, the origination country, and the destination country, which allows users to quickly identify emerging trends and hotspots.

    Fraud Twitter Feed

    This tab provides a real-time view of customer fraud-related tweets for major cities around the globe. Peers can select countries to see what customers from those countries are posting to Twitter in relation to fraudulent activities. This allows users to gain valuable insights into the fraud-related concerns of telco customers globally and to identify emerging trends and patterns.

    Analyse

    On this page peers can view a range of statistical metrics derived from the collected fraud event data stored on the network. This data can be visualized in a variety of charts and graphs, and can be filtered by fraud type, country of origination, contributing IP addresses or phone numbers, etc.

    Upload

    On this page peers can either upload fraud events or flag the existing ones.

    See the following related tutorials:

    Download

    On this page peers can download fraud events data.

    See the following related tutorial:

    Tokens

    On this page peers can view their current balance.

    Profile

    On this page peers can view the following information about their account:

    • About tab — displays peer's contact information.
    • Subscription tab — displays the following subscription information:
      • Membership type: the category of the company that a peer is registered with (e.g., telco, fraud vendor, etc.).
      • Subscription type: the type of subscription that a peer has.
      • Company name: the name of the company that a peer is registered with.
      • Operating country: the country that a peer is operating from.
    • Services tab — displays whether a peer has access to the following FIB services:
      • Uploading: allows users to upload fraud events data on the Upload page.
      • Web API: allows users to access backend API endpoints.
      • Reports: allows users to access the fraud analytics reports on the Analyse page.

    Note

    If you are a peer with a freemium subscription, you can select Request on the Subscription tab to make a request to change your subscription type to premium.

    + + + + \ No newline at end of file diff --git a/public/README.html b/public/README.html new file mode 100644 index 0000000..27c54a8 --- /dev/null +++ b/public/README.html @@ -0,0 +1,23 @@ + + + + + + Fraud Intelligence Blockchain documentation | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Fraud Intelligence Blockchain documentation

    This repository contains the static site as pre-built HTML files for the FIB documentation.

    VitePress documentation generator is used to render them.

    To work with the documentation, visit the original repository.

    Troubleshooting

    Please use the GitHub issues to discuss documentation contents.

    If you are experiencing any issues with FIB, please submit them at Fraud Intelligence Blockchain Freshdesk. Upon review, someone will get back to you to resolve the issue.

    Additionally, you may contact FIL via email at support@fraudintelligencelimited.com

    + + + + \ No newline at end of file diff --git a/release-notes/index.html b/release-notes/index.html new file mode 100644 index 0000000..245b10f --- /dev/null +++ b/release-notes/index.html @@ -0,0 +1,23 @@ + + + + + + Release Notes | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Release Notes

    Version 1.2 (2023-12-14)

    Main Changes

    • When submitting a contribution or a flag, the API response now displays the reward for the said submission in tokens.

      Documented here:
      API Specification > Retrieving top contributionsconfidence-score added to Parameters and Output/response structure updated.

    • When retrieving top contributions, the API response now displays additional information.

      Documented here:
      Overview > ContributionsAPI requests data structure updated with flagger, self, old, new and creditsSpent fields.
      API Specification > Retrieving top contributionsOutput/response structure updated.

    • Contributions on the blockchain now have a flagger value that displays the ID of a peer that flagged the contribution if it has been flagged.

      Documented here:
      Overview > ContributionsFlagging contributions and API requests data structure updated.

    • Added functionality related to the confidence index, a value between 1 and 100 that represents how confident the system is that a contributed fraud event is legitimate.

      Documented here:
      Overview > TokenomicsConfidence Index subtopic added.
      API Specification > Retrieving top contributionsconfidence-score added to Parameters and Output/response structure updated.

    Other Improvements

    • Performed an audit of the interservice communication safety, fixed known security-related vulnerabilities, updated the implemented third-party dependencies.

    • Indexed data on the network, enhancing the overall performance of the search engine that retrieves stored contributions.

    • Refactored and optimized the code structure of the query engine that can retrieve all data of any specific type.

    Bug Fixes

    • Fixed a bug where leftover data with peer details remained on the network after a peer had been deleted; this caused a new peer account to be corrupted in case it was registered again with the same credentials, as well as potential issues with other peer data getting corrupted.

    • Fixed a bug that allowed users to find out the subscription type of any other peer.

    • Fixed a bug with call processing timeouts being inconsistent.

    Version 1.1 (2023-04-27)

    Initial public version released with the functionality documented in our Guide.

    Version 1.0 (2022-12-12)

    Internal version not released to public.

    + + + + \ No newline at end of file diff --git a/soramitsu-logo-1.png b/soramitsu-logo-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f555cf460359184c0067a3819fbe7087d44b848f GIT binary patch literal 17624 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 literal 0 HcmV?d00001 diff --git a/tutorials-api.html b/tutorials-api.html new file mode 100644 index 0000000..e6d671e --- /dev/null +++ b/tutorials-api.html @@ -0,0 +1,23 @@ + + + + + + Tutorials: API | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    + + + + \ No newline at end of file diff --git a/tutorials-api/authorizing-an-account.html b/tutorials-api/authorizing-an-account.html new file mode 100644 index 0000000..ac9ed72 --- /dev/null +++ b/tutorials-api/authorizing-an-account.html @@ -0,0 +1,83 @@ + + + + + + Authorizing an account | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo
    + + + + \ No newline at end of file diff --git a/tutorials-api/flagging-a-contribution.html b/tutorials-api/flagging-a-contribution.html new file mode 100644 index 0000000..29516d8 --- /dev/null +++ b/tutorials-api/flagging-a-contribution.html @@ -0,0 +1,185 @@ + + + + + + Flagging a contribution | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Flagging a contribution

    Note

    A peer account must be authorized for this operation to succeed. See Authorizing an account.

    To flag a contribution, perform the following steps:

    1. Request to flag a contribution by sending the following request:

      http
      POST /data/api/v1/contribution-management/contribution/{contributionID} //{contributionID} is a range of 'id' values (Fraud identifiers)
      POST /data/api/v1/contribution-management/contribution/{contributionID} //{contributionID} is a range of 'id' values (Fraud identifiers)
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: [
      +    {
      +      assetIds: [
      +        {
      +          definitionId: 'MPtVi@4`V}YI~WtYc~BK(2!E_Z^pvG6ch{ycg^usDlMu>UAhwI_:C/>B:D#$=*]3{;-,\\,%t"vB5EK:3hGa+Y7p&mBS6xx2O>@?V_Pg\\B,{B!PC;`&N+>Z3{edxQkY!##*RDF!%/w-Z2]_:tO',
      +          accountId: 'V)60Rw";qse6jLG|T+ij`0D.sy91[eWW=vO6mYF@jI<741{%FDj(<s"[gh_`XWz?jOu;(+kJ/(\'\\`b_him2G5N:@{T|db~)X@TJ6rYj>Q_?>,-9l\'M\\{;Pi'
      +        }
      +      ]
      +    }
      +  ]
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: [
      +    {
      +      assetIds: [
      +        {
      +          definitionId: 'MPtVi@4`V}YI~WtYc~BK(2!E_Z^pvG6ch{ycg^usDlMu>UAhwI_:C/>B:D#$=*]3{;-,\\,%t"vB5EK:3hGa+Y7p&mBS6xx2O>@?V_Pg\\B,{B!PC;`&N+>Z3{edxQkY!##*RDF!%/w-Z2]_:tO',
      +          accountId: 'V)60Rw";qse6jLG|T+ij`0D.sy91[eWW=vO6mYF@jI<741{%FDj(<s"[gh_`XWz?jOu;(+kJ/(\'\\`b_him2G5N:@{T|db~)X@TJ6rYj>Q_?>,-9l\'M\\{;Pi'
      +        }
      +      ]
      +    }
      +  ]
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: [
      +    {
      +      assetDefinitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      contribution: {
      +        id: '127.0.0.1-127.0.0.2',
      +        fraudType: 'IPFraud',
      +        origination: 'SE',
      +        destination: 'SE',
      +        expiryDate: 1694775553,
      +        fraudStatus: 'Active',
      +        confidenceIndex: null
      +      }
      +    }
      +  ]
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: [
      +    {
      +      assetDefinitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      contribution: {
      +        id: '127.0.0.1-127.0.0.2',
      +        fraudType: 'IPFraud',
      +        origination: 'SE',
      +        destination: 'SE',
      +        expiryDate: 1694775553,
      +        fraudStatus: 'Active',
      +        confidenceIndex: null
      +      }
      +    }
      +  ]
      +}

      Note

      If the {contributionID} corresponds to a phone number or an IP address, it can be represented as a single value.

    2. Assemble a contribution flag by sending the following request:

      http
      PATCH /data/api/v1/contribution-manager/contribution/flag/assemble
      PATCH /data/api/v1/contribution-manager/contribution/flag/assemble
      json5
      {
      +  assetIds: [
      +    {
      +      definitionId: 'id_range_something#contribution', //<id_range> must be the same as `{contributionID}` value set in Step 1
      +      accountId: 'user@peerId'
      +    }
      +  ]
      +}
      {
      +  assetIds: [
      +    {
      +      definitionId: 'id_range_something#contribution', //<id_range> must be the same as `{contributionID}` value set in Step 1
      +      accountId: 'user@peerId'
      +    }
      +  ]
      +}
      json5
      {
      +  assetIds: [
      +    {
      +      definitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      accountId: 'qa@qa'
      +    }
      +  ]
      +}
      {
      +  assetIds: [
      +    {
      +      definitionId: '127.0.0.1-127.0.0.2_1666194511450#contribution',
      +      accountId: 'qa@qa'
      +    }
      +  ]
      +}
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
    3. Sign the transactionHex string (see Signing transactions) retrieved from the response.

    4. Submit the assembled and signed contribution flag by sending the following request:

      http
      PATCH /data/api/v1/contribution-management/contribution/flag
      PATCH /data/api/v1/contribution-management/contribution/flag
      json5
      'transactionHex'
      'transactionHex'
      json5
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {}
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {}
      +}

    Expected result

    The contribution’s fraudStatus value is set to Flagged.

    + + + + \ No newline at end of file diff --git a/tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.html b/tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.html new file mode 100644 index 0000000..73d8045 --- /dev/null +++ b/tutorials-api/flagging-a-contribution/verifying-a-contribution-has-been-flagged.html @@ -0,0 +1,23 @@ + + + + + + Verifying a contribution has been flagged | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Verifying a contribution has been flagged

    To verify that a contribution has been flagged, retrieve the peer's top contributions by sending the following request:

    http
    GET /data/api/v1/contribution-management/contribution
    GET /data/api/v1/contribution-management/contribution

    If a contribution has been flagged successfully, it is no longer shown in the list of the peer’s contributions.

    + + + + \ No newline at end of file diff --git a/tutorials-api/generating-key-pairs.html b/tutorials-api/generating-key-pairs.html new file mode 100644 index 0000000..52d0b8e --- /dev/null +++ b/tutorials-api/generating-key-pairs.html @@ -0,0 +1,23 @@ + + + + + + Generating key pairs | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Generating key pairs

    Generating authentication key pair

    To generate an authentication key pair, perform the following steps:

    1. Create a Blake2b-256 hash from a user email and password.
    2. Use symmetric encryption to generate a random seed based on the generated hash and user password. We recommend using AES-256 with GCM or CCM secure mode.
    3. Generate an authentication key pair from the generated seed.

    Generating Iroha 2 key pair

    To generate an Iroha 2 key pair, perform the following steps:

    1. Request a salt value, which is a random piece of bytes only known to the network owners.
    2. Create a Blake2b-256 hash from a user email and password.
    3. Generate a blockchain seed from the generated hash and salt.
    4. Generate an Iroha 2 key pair from the blockchain seed.
    + + + + \ No newline at end of file diff --git a/tutorials-api/retrieving-top-contributions.html b/tutorials-api/retrieving-top-contributions.html new file mode 100644 index 0000000..64a0f39 --- /dev/null +++ b/tutorials-api/retrieving-top-contributions.html @@ -0,0 +1,163 @@ + + + + + + Retrieving top contributions | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Retrieving top contributions

    Note

    A peer account must be authorized for this operation to succeed. See Authorizing an account.

    When downloading fraud events—retrieving contributions—it is possible to filter the results generated in the response in various ways, using the request parameters.

    Request parameters can be used in any combination to tailor response results to your specific needs.

    Since request parameters are optional, specifying no parameters when sending a request will result in a response containing top contributions from the entire ledger.

    For more information, see Retrieving top contributions > Parameters.

    To retrieve top contributions, send the following request:

    http
    GET /api/v1/contribution-management/contribution?size=''&from=''&to=''&ft=''&org=''&self-only=''
    GET /api/v1/contribution-management/contribution?size=''&from=''&to=''&ft=''&org=''&self-only=''
    http
    // size
    +/api/v1/contribution-management/contribution?size=10
    +
    +// from & to
    +/api/v1/contribution-management/contribution?from=0&to=1680089219
    +
    +// ft
    +/api/v1/contribution-management/contribution?ft=wangiri
    +
    +// org
    +/api/v1/contribution-management/contribution?org=US
    +
    +// self-only
    +/api/v1/contribution-management/contribution?self-only=true
    +
    +// fetch-mode
    +/api/v1/contribution-management/contribution?fetch-mode=new
    +
    +// combination
    +/api/v1/contribution-management/contribution?size=2&ft=StolenDevice&org=US&self-only=true&fetch-mode=new
    // size
    +/api/v1/contribution-management/contribution?size=10
    +
    +// from & to
    +/api/v1/contribution-management/contribution?from=0&to=1680089219
    +
    +// ft
    +/api/v1/contribution-management/contribution?ft=wangiri
    +
    +// org
    +/api/v1/contribution-management/contribution?org=US
    +
    +// self-only
    +/api/v1/contribution-management/contribution?self-only=true
    +
    +// fetch-mode
    +/api/v1/contribution-management/contribution?fetch-mode=new
    +
    +// combination
    +/api/v1/contribution-management/contribution?size=2&ft=StolenDevice&org=US&self-only=true&fetch-mode=new

    Expected result

    The response to the GET request contains a list of the top contributions, filtered according to the parameters set in the request, if any.

    json5
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      id: 'string',
    +      fraudType: 'Wangiri', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +      origination: 'string',
    +      destination: 'string',
    +      expiryDate: 0, //integer($int32)
    +      fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +      confidenceIndex: 0, //number($double)
    +      isPremium: true, //boolean
    +      peerId: 'string',
    +      premium: true //boolean
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0, //integer($int32)
    +    name: 'string',
    +    message: 'string'
    +  },
    +  data: [
    +    {
    +      id: 'string',
    +      fraudType: 'Wangiri', //Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
    +      origination: 'string',
    +      destination: 'string',
    +      expiryDate: 0, //integer($int32)
    +      fraudStatus: 'string(enum)', //Could be one of the following: Active, Expired, Flagged
    +      confidenceIndex: 0, //number($double)
    +      isPremium: true, //boolean
    +      peerId: 'string',
    +      premium: true //boolean
    +    }
    +  ]
    +}
    json5
    {
    +  status: {
    +    code: 0,
    +    name: 'Ok'
    +  },
    +  data: [
    +    {
    +      id: '+14155552671-+14155552981',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'FI',
    +      expiryDate: 1666195955,
    +      fraudStatus: 'Expired',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    },
    +    {
    +      id: '127.0.0.1-127.0.0.2',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'SE',
    +      expiryDate: 1694775553,
    +      fraudStatus: 'Flagged',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    }
    +  ]
    +}
    {
    +  status: {
    +    code: 0,
    +    name: 'Ok'
    +  },
    +  data: [
    +    {
    +      id: '+14155552671-+14155552981',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'FI',
    +      expiryDate: 1666195955,
    +      fraudStatus: 'Expired',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    },
    +    {
    +      id: '127.0.0.1-127.0.0.2',
    +      fraudType: 'StolenDevice',
    +      origination: 'US',
    +      destination: 'SE',
    +      expiryDate: 1694775553,
    +      fraudStatus: 'Flagged',
    +      confidenceIndex: null,
    +      isPremium: true,
    +      peerId: 'string',
    +      premium: false
    +    }
    +  ]
    +}
    + + + + \ No newline at end of file diff --git a/tutorials-api/signing-transactions.html b/tutorials-api/signing-transactions.html new file mode 100644 index 0000000..aa4468f --- /dev/null +++ b/tutorials-api/signing-transactions.html @@ -0,0 +1,335 @@ + + + + + + Signing transactions | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Signing transactions

    Every operation that contains …/assemble in its path and has a mirroring endpoint (e.g., assembling a contribution -> submitting a contribution) requires its transaction to be represented as a transactionHex string retrieved from the first request to be signed as a Hex before it is used for the second one.

    For reference, see any of the following tutorials:

    The exact implementation to your system may vary depending on the specific SDK or programming language being used. However, the overall sequence of events to sign a transaction should be the following:

    1. Create a keyPair object from the public and private keys of the user's Iroha 2 key pair.
    2. Retrieve the Hex string of the required transaction.
    3. Decode the retrieved transaction Hex string.
    4. Sign the decoded transaction.
    5. Re-encode the signed transaction to Hex format.

    The resulting encoded transaction Hex string can be used as the body for requests to the following endpoints:

    http
    POST /api/v1/contribution-management/contribution
    +PATCH /api/v1/contribution-management/contribution/flag
    POST /api/v1/contribution-management/contribution
    +PATCH /api/v1/contribution-management/contribution/flag

    Iroha SDK references

    You can use any Iroha SDK available to sign a transaction. Below are references on how to sign a transaction using the following Iroha SDKs:

    kotlin
    // Your package value:
    +package something
    +
    +// Import dependencies:
    +import jp.co.soramitsu.iroha2.appendSignatures
    +import jp.co.soramitsu.iroha2.generated.datamodel.transaction.VersionedSignedTransaction
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable
    +import org.bouncycastle.util.encoders.Hex
    +import java.io.File
    +
    +// Example transaction Hex string:
    +// transactionHex = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +fun decodeSignEncode(transactionHex: String): String {
    +    // Example ed25519 public key:
    +    val publicKey = "7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +    // Example ed25519 private key:
    +    // Note: In Kotlin/Java SDK the truncated representation is more common, although you can refer to full ones represented as concatenation of private and public ones in other SDKs
    +    val privateKey = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc3"
    +
    +    // Obtain 'keyPair' from the public and private keys of the Iroha 2 key pair:
    +    val keyPair = keyPairFromHex(
    +        publicKey,
    +        privateKey,
    +        EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.ED_25519)
    +    )
    +
    +    // Decode the transaction:
    +    val transaction: ByteArray = try {
    +        Hex.decode(transactionHex)
    +    } catch (e: IllegalArgumentException) {
    +        println("Could not decode transaction from hex format: $e")
    +        throw e
    +    }
    +    val decodedTransaction = transaction.let { VersionedSignedTransaction.decode(it) }
    +
    +    // Sign the transaction:
    +    val signedTransaction = decodedTransaction.appendSignatures(keyPair)
    +
    +    // Re-encode the transaction:
    +    val encoded = signedTransaction.let { VersionedSignedTransaction.encode(it) }
    +    val encodedHex = Hex.toHexString(encoded)
    +
    +    // Use the value wherever needed further:
    +    println("Signed transaction (Hex): $encodedHex")
    +    return encodedHex
    +}
    // Your package value:
    +package something
    +
    +// Import dependencies:
    +import jp.co.soramitsu.iroha2.appendSignatures
    +import jp.co.soramitsu.iroha2.generated.datamodel.transaction.VersionedSignedTransaction
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable
    +import org.bouncycastle.util.encoders.Hex
    +import java.io.File
    +
    +// Example transaction Hex string:
    +// transactionHex = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +fun decodeSignEncode(transactionHex: String): String {
    +    // Example ed25519 public key:
    +    val publicKey = "7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +    // Example ed25519 private key:
    +    // Note: In Kotlin/Java SDK the truncated representation is more common, although you can refer to full ones represented as concatenation of private and public ones in other SDKs
    +    val privateKey = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc3"
    +
    +    // Obtain 'keyPair' from the public and private keys of the Iroha 2 key pair:
    +    val keyPair = keyPairFromHex(
    +        publicKey,
    +        privateKey,
    +        EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.ED_25519)
    +    )
    +
    +    // Decode the transaction:
    +    val transaction: ByteArray = try {
    +        Hex.decode(transactionHex)
    +    } catch (e: IllegalArgumentException) {
    +        println("Could not decode transaction from hex format: $e")
    +        throw e
    +    }
    +    val decodedTransaction = transaction.let { VersionedSignedTransaction.decode(it) }
    +
    +    // Sign the transaction:
    +    val signedTransaction = decodedTransaction.appendSignatures(keyPair)
    +
    +    // Re-encode the transaction:
    +    val encoded = signedTransaction.let { VersionedSignedTransaction.encode(it) }
    +    val encodedHex = Hex.toHexString(encoded)
    +
    +    // Use the value wherever needed further:
    +    println("Signed transaction (Hex): $encodedHex")
    +    return encodedHex
    +}
    js
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import * as datamodel from '@iroha2/data-model' // version: 4.1.0
    +import { signTransaction, setCrypto, Signer } from '@iroha2/client' // version: 4.1.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +setCrypto(crypto)
    +
    +/**
    + * @param {Uint8Array} bytes
    + * @returns {string}
    + */
    +function bytesToHex(bytes) {
    +  return Array.from(bytes, (v) => v.toString(16).padStart(2, '0')).join('')
    +}
    +
    +/**
    + * @param {string} hex
    + * @returns {Uint8Array}
    + */
    +function hexToBytes(hex) {
    +  /** @type {number[]} */
    +  const bytes = []
    +  for (let i = 0; i < hex.length; i += 2) {
    +    bytes.push(parseInt(hex.slice(i, i + 2), 16))
    +  }
    +  return Uint8Array.from(bytes)
    +}
    +
    +/**
    + * @param {datamodel.SignedTransaction} tx
    + * @param {import('@iroha2/crypto-core').KeyPair} keyPair
    + * @return {datamodel.SignedTransaction}
    + */
    +function appendSignatureWithKeyPair(tx, keyPair) {
    +  const signer = new Signer(tx.payload.account_id, keyPair)
    +  const signature = signTransaction(tx.payload, signer)
    +  return datamodel.SignedTransaction({
    +    payload: tx.payload,
    +    signatures: [...tx.signatures, signature]
    +  })
    +}
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} transaction - hex of the transaction
    + * @returns {string} - hex of the transaction with the appended signature
    + */
    +function appendSignature(publicKeyHex, privateKeyHex, transaction) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key:
    +        // magic ed25519 multihash prefix
    +        'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    const txDecoded = datamodel.VersionedSignedTransaction.fromBuffer(
    +      hexToBytes(transaction)
    +    )
    +
    +    const txNew = datamodel.VersionedSignedTransaction(
    +      'V1',
    +      appendSignatureWithKeyPair(txDecoded.as('V1'), keyPair)
    +    )
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +  })
    +}
    +
    +// example transaction
    +const tx = appendSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
    +)
    +
    +console.log(tx)
    +// => 0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000081c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f1c65643235353139807fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac01014a3cffcfb6276cc6de039c3ab287e7614e6dffc5e152200efa817d59c04334839c9624781bb1bda7b1d5ead0f0ea1c31238cccf9a948becf71d09728c4914d0d
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import * as datamodel from '@iroha2/data-model' // version: 4.1.0
    +import { signTransaction, setCrypto, Signer } from '@iroha2/client' // version: 4.1.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +setCrypto(crypto)
    +
    +/**
    + * @param {Uint8Array} bytes
    + * @returns {string}
    + */
    +function bytesToHex(bytes) {
    +  return Array.from(bytes, (v) => v.toString(16).padStart(2, '0')).join('')
    +}
    +
    +/**
    + * @param {string} hex
    + * @returns {Uint8Array}
    + */
    +function hexToBytes(hex) {
    +  /** @type {number[]} */
    +  const bytes = []
    +  for (let i = 0; i < hex.length; i += 2) {
    +    bytes.push(parseInt(hex.slice(i, i + 2), 16))
    +  }
    +  return Uint8Array.from(bytes)
    +}
    +
    +/**
    + * @param {datamodel.SignedTransaction} tx
    + * @param {import('@iroha2/crypto-core').KeyPair} keyPair
    + * @return {datamodel.SignedTransaction}
    + */
    +function appendSignatureWithKeyPair(tx, keyPair) {
    +  const signer = new Signer(tx.payload.account_id, keyPair)
    +  const signature = signTransaction(tx.payload, signer)
    +  return datamodel.SignedTransaction({
    +    payload: tx.payload,
    +    signatures: [...tx.signatures, signature]
    +  })
    +}
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} transaction - hex of the transaction
    + * @returns {string} - hex of the transaction with the appended signature
    + */
    +function appendSignature(publicKeyHex, privateKeyHex, transaction) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key:
    +        // magic ed25519 multihash prefix
    +        'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    const txDecoded = datamodel.VersionedSignedTransaction.fromBuffer(
    +      hexToBytes(transaction)
    +    )
    +
    +    const txNew = datamodel.VersionedSignedTransaction(
    +      'V1',
    +      appendSignatureWithKeyPair(txDecoded.as('V1'), keyPair)
    +    )
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +
    +    return bytesToHex(datamodel.VersionedSignedTransaction.toBuffer(txNew))
    +  })
    +}
    +
    +// example transaction
    +const tx = appendSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
    +)
    +
    +console.log(tx)
    +// => 0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000081c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f1c65643235353139807fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac01014a3cffcfb6276cc6de039c3ab287e7614e6dffc5e152200efa817d59c04334839c9624781bb1bda7b1d5ead0f0ea1c31238cccf9a948becf71d09728c4914d0d
    python
    # Import dependencies:
    +from iroha2.data_model.transaction import SignedTransaction
    +from iroha2.crypto import KeyPair
    +
    +# Example signed transaction, encoded with SCALE codec and represented as hex string:
    +encoded_transaction = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +
    +# Example ed25519 private key:
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain `key_pair` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Decode the transaction:
    +transaction = SignedTransaction.decode(encoded_transaction)
    +
    +# Sign the transaction with the provided private key:
    +transaction.append_signature(key_pair)
    +
    +# Re-encode the transaction:
    +re_encoded_transaction = transaction.encode()
    +
    +# Retrieve the encoded Hex string of the transaction:
    +print(f"Signed and encoded transaction:\n{re_encoded_transaction}")
    # Import dependencies:
    +from iroha2.data_model.transaction import SignedTransaction
    +from iroha2.crypto import KeyPair
    +
    +# Example signed transaction, encoded with SCALE codec and represented as hex string:
    +encoded_transaction = "0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f"
    +
    +# Example ed25519 private key:
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain `key_pair` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Decode the transaction:
    +transaction = SignedTransaction.decode(encoded_transaction)
    +
    +# Sign the transaction with the provided private key:
    +transaction.append_signature(key_pair)
    +
    +# Re-encode the transaction:
    +re_encoded_transaction = transaction.encode()
    +
    +# Retrieve the encoded Hex string of the transaction:
    +print(f"Signed and encoded transaction:\n{re_encoded_transaction}")
    + + + + \ No newline at end of file diff --git a/tutorials-api/signing-user-email-addresses.html b/tutorials-api/signing-user-email-addresses.html new file mode 100644 index 0000000..8ac8d7b --- /dev/null +++ b/tutorials-api/signing-user-email-addresses.html @@ -0,0 +1,187 @@ + + + + + + Signing user email addresses | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Signing user email addresses

    Every API request to authorize a user in the system requires a signature of the user's email address.

    The exact implementation to your system may vary depending on the specific SDK or programming language being used. However, the overall sequence of events to sign a user email address should be the following:

    1. Create a keyPair object from the public and private keys of the user's authentication key pair.
    2. Obtain a signature of the user's email address.
    3. Encode the signature as a Hex string.

    The resulting encoded signature Hex string can be used as a part of the body for requests to the following endpoint:

    http
    POST /auth/api/v1/authentication-management/session
    POST /auth/api/v1/authentication-management/session

    Iroha SDK references

    You can use any Iroha SDK available to sign a user's email address. Below are references on how to sign a transaction using the following Iroha SDKs:

    kotlin
    // Your package value
    +package something
    +
    +// Import dependencies
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import jp.co.soramitsu.iroha2.sign
    +import jp.co.soramitsu.iroha2.toHex
    +
    +class SimpleSigner {
    +
    +    fun main(args: Array<String>) {
    +        if (args.size != 3) {
    +            println("Specify public_key, private_key and text to sign")
    +            return
    +        }
    +
    +        // The public key of the user's authentication key pair
    +        val publicKey = args[0]
    +
    +        // The private key of the user's authentication key pair
    +        val privateKey = args[1]
    +
    +        // The user's email address
    +        val toSign = args[2]
    +
    +        // Create a `keyPair` object from the Hex string of the public and private keys of the user's authentication key pair
    +        val keyPair = keyPairFromHex(publicKey, privateKey)
    +
    +        // Obtain a `signature` of the user's email address
    +        val signature = keyPair.private.sign(toSign.toByteArray(Charsets.UTF_8)).toHex()
    +
    +        // Encode the `signature` as a Hex string
    +        println("Signed message (Hex): $signature")
    +    }
    +}
    // Your package value
    +package something
    +
    +// Import dependencies
    +import jp.co.soramitsu.iroha2.keyPairFromHex
    +import jp.co.soramitsu.iroha2.sign
    +import jp.co.soramitsu.iroha2.toHex
    +
    +class SimpleSigner {
    +
    +    fun main(args: Array<String>) {
    +        if (args.size != 3) {
    +            println("Specify public_key, private_key and text to sign")
    +            return
    +        }
    +
    +        // The public key of the user's authentication key pair
    +        val publicKey = args[0]
    +
    +        // The private key of the user's authentication key pair
    +        val privateKey = args[1]
    +
    +        // The user's email address
    +        val toSign = args[2]
    +
    +        // Create a `keyPair` object from the Hex string of the public and private keys of the user's authentication key pair
    +        val keyPair = keyPairFromHex(publicKey, privateKey)
    +
    +        // Obtain a `signature` of the user's email address
    +        val signature = keyPair.private.sign(toSign.toByteArray(Charsets.UTF_8)).toHex()
    +
    +        // Encode the `signature` as a Hex string
    +        println("Signed message (Hex): $signature")
    +    }
    +}
    js
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} email
    + * @returns {string} - email signature hex
    + */
    +function createEmailSignature(publicKeyHex, privateKeyHex, email) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key: 'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    return keyPair
    +      .sign('array', new TextEncoder().encode(email))
    +      .payload('hex')
    +  })
    +}
    +
    +// example signature
    +const signature = createEmailSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  'alice@wonderland.space'
    +)
    +
    +console.log(signature)
    +// => 9729e8fbcd425bfe48809cc996c9e6d3cecddf0848a51d8758582b3c84bb2caca8e41a8290018aa7064f0b9ec61d2b1a155d5e4c772bc992d918528cf6cb6308
    // @ts-check
    +
    +import { crypto } from '@iroha2/crypto-target-node' // version: 1.0.0
    +import { freeScope } from '@iroha2/crypto-core' // version: 1.0.0
    +
    +/**
    + * @param {string} publicKeyHex - ed25519 pub key hex
    + * @param {string} privateKeyHex - ed25519 private key hex
    + * @param {string} email
    + * @returns {string} - email signature hex
    + */
    +function createEmailSignature(publicKeyHex, privateKeyHex, email) {
    +  return freeScope(() => {
    +    const keyPair = crypto.KeyPair.fromJSON({
    +      public_key: 'ed0120' + publicKeyHex,
    +      private_key: {
    +        digest_function: 'ed25519',
    +        payload: privateKeyHex
    +      }
    +    })
    +
    +    return keyPair
    +      .sign('array', new TextEncoder().encode(email))
    +      .payload('hex')
    +  })
    +}
    +
    +// example signature
    +const signature = createEmailSignature(
    +  '7fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  '413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac',
    +  'alice@wonderland.space'
    +)
    +
    +console.log(signature)
    +// => 9729e8fbcd425bfe48809cc996c9e6d3cecddf0848a51d8758582b3c84bb2caca8e41a8290018aa7064f0b9ec61d2b1a155d5e4c772bc992d918528cf6cb6308
    python
    # Import dependencies
    +from iroha2.crypto import KeyPair
    +
    +# Example ed25519 private key
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain `key_pair` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Sign the user's email address:
    +signature = key_pair.sign(b"email@address")
    +
    +# Retrieve the encoded Hex string of the user's `signature`
    +print(f"Encoded signature:\n{bytes(signature).hex()}")
    # Import dependencies
    +from iroha2.crypto import KeyPair
    +
    +# Example ed25519 private key
    +private_key = "413b285d1819a6166b0daa762bb6bef2d082cffb9a13ce041cb0fda5e2f06dc37fbedb314a9b0c00caef967ac5cabb982ec45da828a0c58a9aafc854f32422ac"
    +
    +# Obtain `key_pair` from a user's private key:
    +key_pair = KeyPair.from_private(private_key)
    +
    +# Sign the user's email address:
    +signature = key_pair.sign(b"email@address")
    +
    +# Retrieve the encoded Hex string of the user's `signature`
    +print(f"Encoded signature:\n{bytes(signature).hex()}")
    + + + + \ No newline at end of file diff --git a/tutorials-api/submitting-a-contribution.html b/tutorials-api/submitting-a-contribution.html new file mode 100644 index 0000000..15933bc --- /dev/null +++ b/tutorials-api/submitting-a-contribution.html @@ -0,0 +1,109 @@ + + + + + + Submitting a contribution | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Submitting a contribution

    Note

    A peer account must be authorized for this operation to succeed. See Authorizing an account.

    To submit a contribution, perform the following steps:

    1. Assemble a contribution by sending the following request:

      http
      POST /data/api/v1/contribution-management/contribution/assemble
      POST /data/api/v1/contribution-management/contribution/assemble
      json5
      {
      +  id: 'string', //A unique fraud event identifier
      +  fraudType: 'Wangiri', //The type of the fraud event. Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
      +  origination: 'string', //The two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166)
      +  destination: 'string', //The two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166)
      +  expiryDate: 0 //integer($int32) //The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds)
      +}
      {
      +  id: 'string', //A unique fraud event identifier
      +  fraudType: 'Wangiri', //The type of the fraud event. Could be one of the following: Wangiri, IRSF, StolenDevice, IPFraud, SMSA2P
      +  origination: 'string', //The two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166)
      +  destination: 'string', //The two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166)
      +  expiryDate: 0 //integer($int32) //The exact time and date until which the event is considered relevant (represented as Unix Epoch time in seconds)
      +}
      json5
      {
      +  id: '127.0.0.1-127.0.0.2',
      +  fraudType: 'IPFraud',
      +  origination: 'SE',
      +  destination: 'SE',
      +  expiryDate: 1694775553
      +}
      {
      +  id: '127.0.0.1-127.0.0.2',
      +  fraudType: 'IPFraud',
      +  origination: 'SE',
      +  destination: 'SE',
      +  expiryDate: 1694775553
      +}
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: 'string'
      +}
      json5
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
      // 200 "OK"
      +
      +{
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: 'transactionHex'
      +}
    2. Sign the transactionHex string (see Signing transactions) retrieved from the response.

    3. Submit the assembled and signed contribution by sending the following request:

      http
      POST /data/api/v1/contribution-management/contribution
      POST /data/api/v1/contribution-management/contribution
      json5
      'transactionHex'
      'transactionHex'
      json5
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      '0114616c69636528776f6e6465726c616e640004000d09001468656c6c6f00002cde318c87010000a0860100000000000000041c65643235353139807233bfc89dcbd68c19fde6ce6158225298ec1131b6a130d1aeb454c1ab5183c00101bef276fc36ba638abd422e76fd0e6df319df1c3d336ab60d7276333b4010bb7d962d04b273d9caf91cb8509581c0b55e1cdee371c52863a8b4b62c67fbfc870f'
      json5
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      {
      +  status: {
      +    code: 0, //integer($int32)
      +    name: 'string',
      +    message: 'string'
      +  },
      +  data: {}
      +}
      json5
      {
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {
      +    definitionId: '***#domain',
      +    accountId: 'user@domain'
      +  }
      +}
      {
      +  status: {
      +    code: 0,
      +    name: 'Ok'
      +  },
      +  data: {
      +    definitionId: '***#domain',
      +    accountId: 'user@domain'
      +  }
      +}

    Expected result

    An assembled and signed contribution is submitted to the ledger, the peer’s list of contributions is updated and their credit balance is increased based on the current reward rate active in the network (see Current conversion rate).

    + + + + \ No newline at end of file diff --git a/tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.html b/tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.html new file mode 100644 index 0000000..37083f2 --- /dev/null +++ b/tutorials-api/submitting-a-contribution/verifying-a-contribution-has-been-submitted.html @@ -0,0 +1,119 @@ + + + + + + Verifying a contribution has been submitted | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo
    + + + + \ No newline at end of file diff --git a/tutorials-web.html b/tutorials-web.html new file mode 100644 index 0000000..2e24249 --- /dev/null +++ b/tutorials-web.html @@ -0,0 +1,23 @@ + + + + + + Tutorials: Web UI | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Tutorials: Web UI

    This section lists the tutorials for the basic operations that could be performed with the FIB Web UI, including:

    1. Uploading fraud data
    2. Flagging fraud data
    3. Downloading fraud data
    + + + + \ No newline at end of file diff --git a/tutorials-web/downloading-fraud-data.html b/tutorials-web/downloading-fraud-data.html new file mode 100644 index 0000000..427d646 --- /dev/null +++ b/tutorials-web/downloading-fraud-data.html @@ -0,0 +1,23 @@ + + + + + + Downloading fraud data | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Downloading fraud data

    To download fraud event data via FIB Web UI, perform the following steps:

    1. From the top right menu, select Download.
    2. On the Download Fraud Data screen that appears, specify the following data:
      • Select Fraud Type dropdown menu — select the fraud type of the fraud events you wish to download, then select Add; several individual fraud types can be added to the request.
      • Select Originating Country dropdown menu — select the country that the fraud events originated from, then select Add; several individual countries can be added to the request.
      • From Date box — from the pop-up calendar, select the start date that the requested fraud events are filtered by; or enter the date manually in the DD.MM.YYYY format.
      • To Date box — from the pop-up calendar, select the end date that the requested fraud events are filtered by; or enter the date manually in the DD.MM.YYYY format.
    3. Select Download to download the fraud events data filtered according to the data specified.

    For more information on fraud event data, including fraud identifiers, fraud types, and other relevant concepts, see Fraud Events.

    Expected result

    The fraud events data, filtered according to your specified criteria, is downloaded to your device as a .csv file, which can be opened using any spreadsheet software available to you (e.g., Microsoft Excel, Google Sheets); and the credit balance is decreased based on the current conversion rate active in the network (see Current conversion rate).

    + + + + \ No newline at end of file diff --git a/tutorials-web/flagging-fraud-data.html b/tutorials-web/flagging-fraud-data.html new file mode 100644 index 0000000..6c04fb2 --- /dev/null +++ b/tutorials-web/flagging-fraud-data.html @@ -0,0 +1,23 @@ + + + + + + Flagging fraud data | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Flagging fraud data

    To flag fraud event data via FIB Web UI, perform the following steps:

    1. From the top right menu, select Upload.
    2. On the Upload Fraud Data screen that appears, specify the following data:
      • Select Fraud Type dropdown menu — select the fraud type of the fraud event that you are flagging.
      • Select Transaction Type dropdown menu — select Flag Fraud Data as False Positive.
      • Search Value box — input the id fraud identifier of the fraud event that you are flagging.
    3. Select Find in Ledger to update the list of retrieved transactions.
    4. Find the fraud event that you wish to flag and select Flag Tx.

    Expected result

    The fraud event status is set to Flagged.

    + + + + \ No newline at end of file diff --git a/tutorials-web/uploading-fraud-data.html b/tutorials-web/uploading-fraud-data.html new file mode 100644 index 0000000..d5ebfb4 --- /dev/null +++ b/tutorials-web/uploading-fraud-data.html @@ -0,0 +1,23 @@ + + + + + + Uploading fraud data | FIB Documentation + + + + + + + + + + + + +
    Skip to content
    Orillion logoSoramitsu logo

    Uploading fraud data

    To upload fraud event data via FIB Web UI, perform the following steps:

    1. From the top right menu, select Upload.

    2. On the Upload Fraud Data screen that appears, specify the following data:

      • Select Fraud Type dropdown menu — select the fraud type of the fraud event that you are uploading.
      • Select Transaction Type dropdown menu — select Add Fraud Data.
      • Data Upload box — input the following data about the fraud event, separated by comma:
        • The id fraud identifier.
        • The two-digit code of the country the fraud event originated from (Alpha-2, ISO 3166).
        • The two-digit code of the country the fraud event was identified as such (Alpha-2, ISO 3166).

      Example: +33000123456, FR, ZA

      Note

      If you are uploading a range of fraud identifiers (i.e., a range of phone numbers or IP addresses), select This is a Fraud data range.

      In this case, the following data about the fraud event is input, separated by comma: The starting and ending values for the range of fraud identifiers, the origination country two-digit code, and the destination country two-digit code.

      Example: +447000123456, +447000123460, GB, US

    3. Select Upload to Ledger to upload the fraud event data.

    For more information on fraud event data, including fraud identifiers, fraud types, and other relevant concepts, see Fraud Events.

    Note

    If you are uploading several individual fraud identifiers, each entry must start from a new line.

    A single fraud event data submission can contain up to 500 entries.

    Expected result

    Your list of contributions is updated and the credit balance is increased based on the current conversion rate active in the network (see Current conversion rate).

    + + + + \ No newline at end of file

    ZW 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�zBE;A6`RoYnYVbGchb9$^iIU2 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-vietnamese.14ce25a6.woff2 b/assets/inter-roman-vietnamese.14ce25a6.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5a9f9cb9ca0cd78b6ea2f3e5c9d2838dc8895598 GIT binary patch literal 8492 zcmV+{A=BP>Pew8T0RR9103j>@5dZ)H07h5<03gEv0|eaw00000000000000000000 z0000Qfg~G@2plRuNLE2of^Y_4KT}jeRDl`*f;ca13aJRB4KTl60X7081B4(8f)W4( zAO(aP2Ot}wL8BwA#{rDwTbk^j37MN0nnkm<&CYCgamAG{BQEv-@{h({JoW2WsiKJ{ zny6DpNHPoG)7pQYy0^RMEdaY!8%0bCP)`3Bl0b67#zmoxM+wMNKk&@$|J=(RT-bHH z&ZRfSMH4riXiQO2mtGhuDmm0S*_?%n8{4L$t(=MqgOqF)PiZY%M!9Mg`Sy%wXsdWi zi&vE7_{K|0QofPlA|)dwE)T@Ldw-UVjnSme!@vrsm!}gjPXlfXhXJSKzO~;D_{{Ft zj#v{*BuL~hh*>+q?$fMk0}-VxizyHmlss&T2(Vn%$U|B3849(nV*F&`?B==1_Ccqdm|ZONTW&&@StM@DVh$ga-iLzu~Y&GUY_3sURj%X_ncfPmoA3C17NwajDXbzt)aEFj@Hu#+DKbyD?gcrUjTvlky0JwkaT2p z8AY2Qu-I6`8`6=EbfhC4=}1R9)LA0?t`iZ766832kO=LeFLgp3u?_&16bTh}*?wY` z29u=(+z0CbsIRUF)!9(t07}m;w`r94SH>0B--x_ovEiXmZ)gc(sTKfsm$@cOl_kKB zN)2Gol=8c&Goqr1n?d6e5Jt%HJd<)iXHgQ)^Rhmn93`fF;Kl{9m&So$tpP#T0KFe7K@E#vfJ8{t0S5CS zV4r0~E^7FF25T$%Y^d(U#(j8H@?`KvynmwSL7-2301rqk_+P&ibaEe_Wl#Eizfb8? zhcppoL>neROy zplht+UGz3~5sWb+6fE|u>f6a8;ijibrcN!R z%OtvX+N^2PENMf_Qh3-^ZZBP0X~#^do&u@bUbbu<9d(f8Z;AjxmY~QZqKntoYS(Di zuT}zdatJqJdZomZdPuNFvMCpctqloDU1yo2=sWVGFV@xOZs z8Je~B$nL}1Z$Ztb6hwWg5$8fQapIDgi53Qph^mk*Hojm4My|x$^mrcA%T`Sw%dY^} znZTQ{7W1K8YB{;I0Fw~8eEfiYFyufL?gUqb%oUWvLO~8<`P~D}eM2AkS6`i^g#Dt( zs7erIq=p4jf=yCgC)NEzzVhZKFM99dw$7%-d+enbyZcUaUTOK=Qz`MmVcC*x((=No zf=eB6X&VM<(ju}X3Cu>1$rdt2H7O0#$CpeKG|Q8X6ar`_F6r@xQM)B!XfbODc&O_Q zYuK=*qg3fxHX8EAGMe{pF<4BgBpdBUCLh^A!qyp`s>or4AgGzw9IG?7!)~nCUHi02 zR=O_GM(k#zdYSbSujOV(`(?9{=^5o5Nh@6-on%Z#U0)fldj0x&5kM!L@R5=B~ zvSP~{r#D|*3UxTEyXk4ArojO;^ z83*hm!k#W19N#u`S!$4EzN@o}Usi<>v{*o09>D?P1H{Uf4v~WDJ}OFq@w;d=_t=G# zE%!2SG|7D_ELvRgPWq?7BKmsp!@JY%061j8VVu9pYxG_w!Z$mfzG$EKp_Abu98A?< z-y@*>`n#7Ib_*@bmHh>OtL6=E6MuZ}oM=+c6W?`V_sp3rAg1Q~`(FGHX1(FMh%HY* zhCKBpziR8y@4u_2$xBmx`7>MAV@;%O@4x?ttt-(3mNQHVe+Lh>hyC5hH&lIih2v0w z*?~XBIz+|)Sp1nvk2<4n$!**fOAv8ReOGv?z?*U6Lbes-*E z?bVuv&jtEM7j>-gm3rEC|L>!8GDPg$vGZ)rrjc&nw#^^tB0uT*UB!C~YB%Jckm?K# z`_7o4(kJjuJ^z+IefzB~<^MU~b82&=>E+^d5^#ur$A9IC1OM9mcQf{8zn(YT2XlOaA8EgPb28~R%>6Rd`Af}br*}^MPVWj1b~Sx9^pyGe;E`=V z9JHV6Onqm1abu5kTkGVS>x-v6`R=K|bP$0JN!Y+y21{<*s8DR)xTK3OuMSePASCt3QVw$5(AEq846U_kcCO$xzWTefN|@I83w!$aq#D8jekW+S2#lO31#a z0f;h%9lCR|c-}>Li>*KbBw)jieH((n|B54rsjLtfns z$=v;w4V;%RhF|P#vTS@TAEZcjUtDnZ7vb1}*c%rvg!cX|UcA1sy``aX+~dazV^<6H zwRaxBipRFREF3v-`HfG`{Vy-FcwJ*tlf0@m4MVJdZbr3}%PaOg+>rm|f4^*BzsjUs zfy3;>;i%=x+rCeJeA^OTT&HVkXNNQ@-HhZs`uqbP?xlA*L62Q_ibXqGp&NP=*eq^O9O`zjCtX$b1JNT10; zWdB}Vu*d*N#7M6P80jS}lcZ$TV~nbl{@N#{WsN7&?W>Yp; zaKmrtVi3`pRYGE`}^zOw$bWb%$ ziQnIwTGk;Z!)h6adRfb~kECc5r)t@f+G%gSE+g7?hafW)btanagbSWC8wvpy=MJ7_ ze*X6=v*Xv-bDs^N005u@I3ivu6K3IRcRqnoRX!i2C?b`tPRVR1@eDJ=Ap0$cjSY}N z&5Pm+P?Jx1c+#`6g*7&kICA0PL40khY-&E88iKVLV9peyYdMfz%0vi#dU_Q zMmKJXfgk6&EIhV=o1&={9FEpTqf@w8#e}IQWWVG%xp}#K8^3`Wl=$nnVy-$RGifWc z1|sd)BW@hHx{H`7l8B*Wz=KQA(uTNv#-nN&;1s2fiNXkOU|ayJ^VYLQ0MyPUVwFWQ zI4x?}P}87E3v&64-vTNos%fCG!H_rO#9f`PQI$(k=wx?5#L3zXM6~Q-1G=~b4qza0 zS6pY)b)|kPX_WXVt5>^>2Nyu&(P)VCcA*5|wc*3t0RV=fYf(8?rU`=Ck>7zLRJ2 z^OBG4DErHE<#>6wcuSysS8mjzT3TmSMO{;G)%%UhrdnB(Hbv7kUE9(2x98d`?cL!x zrJPDmHRmJF=bZoJT<6@z5uC&y!XLrc;m!Ed_#yly{2sTHdx+b^?dN{TJ+Sl(} z_r3V*{4M@a8hn@o2oM1RGXQ{gt%^Zzt(A!l3`XUQ$tFdCwzfYbhcxL7hmA%nji`}~ zdl}M?XaR!(1~3sMC=<}qSe}tHq)FkpoKadiH={rR7ZBhAfSKqRGt#gk2NSYK;0XXl z5LC{zw*X9K0P#sUfGAHC$Ym@yi-Z9xC{6%@o8Hy~svJC_DgcU}MW3rwnLA$LgwNvUxz3#2p?C`sQ&L@KfbuCpEVuVn)+ zhjp(fzo-4!{-8~`wf8zLOLi4T-q^x}{~Y!RldOBki-#E51D z;*5QQ98TCCQ2{$Uo1pePMKb*sCoXh;_T)L{mC%2)#{L4r`2e?10AWIs}%D7cM)J8`7>|HI{^-K~ z`~&!H3K+oF%eE4@@q&WUHr7jVs~o!Xm$uWAk~?8t!#gDsx?KU?rcI{f`L$dEW_&~la&8Am z@?1DTchW&s2!#$DCxBOj-R+$k(`GvWG<`}{qP6yBme=CKn9y4v0v#KsWYCFR#V!ye z1Sf3;Fb!4UYSuT2D?n$K1nAmpw*>LIEAO2N`+)>?E{Q4aRDUUN({FrChiA-lW#+*24fC;3RAro57J;ybWtb_Ui+n7tg40{LiL)*lc4T}1d;naJ(?vaQ{=>li%GA7sVy4m8M~!XD9q7PH{r;?nzlR$x#- z?_y{%R%AmC`U(f{^L`cd%*dzC+ih-}Z1yG3-LiP`(pHzfOU|^pW2R#N)25?*fT@bX#D>Bjl1R| zwHfh9A3UqLgI2Gvo_4rzaBN&MbJ_2seV5~}Q9>6-uvHla0{dp{-TB%r(XJ(Mk$YsY zYM<14e#X~hS3n>*B`03?@S%sWkn(g3(}%`X*o7o840lp5klv zx^}8*=nkC_vvSJkfz*EcK;<_&M6z|indvep%PAjL)Dn82dmse+eie>@n9v1#Wx%_rut1);n&qm>u9ID(=q6k#DK zcus&+PEBY`3h-j0zq4JXTJ2@m14PG|moJ;5X{Qsy`W#+I6i3t{8^Z2a9*B`pQk>~5gEur>|DYp{w5AMiy?&}b0 zGA5tI{`~9o%w3GkpS|@*zQGpk+i2ec?3*JFPm~++OVLP9v}V5ox~nmA{~B>v$!xc> z7;U@4;-z5bnutQn9Oe-;x5PwVJXv58m4U*}!xRu8fGsQVpN}Zkn;?(;j919PMqsX@ zQ8|DEY&p|fKM{7mlgr)ti#?_9YOan>oT!#V4@a`JLQp)x@A64!wo64J}ETfgGJqe5F)r{N;AKFDTj8uSL1Uy zwA&et&*{)^_%-WN0}$d8kB5ID;|qcdadL?UmSy77!OAXjiH=~=brMP zfL5=C$LD8;-R?-_77-kCGehZ@t5S4biNGhmHH&_UKn?YZCRe&ehX{Y8iG++2)UJ3t zj4oG;PFw(s{&fZ3jr+)r^A|@kR3xF9jtB?Ea>nSVi@9$YT-}18go5d?&TY|UPFmy) zWvZirs~H=wefj+$e)sy<9_Jtpsi0}65+af!bCCz({78enTM*tv1zaM;nP?OEEpl+- z>ZndzVdFWAqjJ{v@PlHz^i7&B-7P6m4U{6h#2jPcS<%GCL)|jbq3k&t`Z{XFI%uZ0 zpJE{pivnmm0gh<+vXw=qQsjSK*rhieL@MnPhjw!z zj!S8#J$rk*w-irciA2onjU}uKNRknT@cGryFEtWI!e$ytS9c>Z zpI=d!2BNT#oJ4D)!#`qNPWHFN$SKJ53AMEk2EFz_9}WcHa=ULyYZpJJJ)zz@LAdo+ zUr*&txE|>QmJ1<|8_H`6J#I8!jV}pM&Mb-${H3d>06#%ysF^yVTF9zD$Qz$ zw=+g0;v^-=5sBt0%cUdWtU*|yf=}yv65wlsd_|bkc<)B zKx9dc^{DrQN=qkaJ$sJP#%VtP<-@b^)7JV?OJzGE&)s8$Bb^(xjKwgD_8^5}>Fn!} z7RqEoE0|7#FeBKPXdWC13#Tm5wC*cb%E60cd;)cX1-m-LLa$nY-G#9OZg;>sZX2^( zEI-`t^qVd+wKJ)7@^edzn)ea0S{lq{WcA=Le!u^hP97G<4Rfe)J*~7Grt@_~rqoZ@ zFDfdI9(|!&*6MLLxMKG9d$0C5kG^rDZwa%)1U`MaD@Hn(v`qFxkN0u(_I-?+F3$X! z<2^8@z*-GWUB#R{Kb{dYXG^B#xUJhUW|723Kw{x%205rX^N%&pEE@qJ| zpUvmT<3C4!42KDVoBlhS^%b{btyAr%r|;`xn8icS%{6PzocUMJQfA+G+UBfY4|?xNGi80s-MeEJcw)>?`o?XX8z;_Px+~5Jl6CB7FFRLhgO9VhW~F=A3uA!U}Jnj^|FB z>73KT!6*vD^cZdd+=}Bs5=mS@YG`mswX4SEkzOxJ21u9J>mtPIDEi=4Q*W-5QBK*M zhcR34QZI@x?*TovT2QG#K!dpn1X4;Uq^v6F#YqPa2I$6)lJ2M_=efg+$z-X&(_)c8 zAVQ5RaPg9r(~r6DnFHQzg>GC^FvJ`Ei!Vn{oOtc%GRELm*La#M>IXR0#7Hw_A5URe z6^2nbe)~?5P~L11PMIQEFuBCaE*8h6CW(p$^CA(RkK;Hc6xArfT=4zOO}OuUvR;yO zkfb-A9y2)YHby&D^K;NG^@x-gyt{Kx3oWLF&6h^uogboCQdS!5 z(JnC1;4ON!tmDa*#Q^&8a1J*wahPt7GeVeNUM{WI)NR=#2RpXdc{tEQy(E^XY(5rr zqjsR*6?}hS=*(cP$2*kzZy<f5&+Pk01)`@QF`0@L`kO=K*aX5dtz~l49AG-2TI$o zIxGnfH7A)0N7Xc%AdAJYbvjLhGaUmnTYGhF*-j9V;ewesc7tm>K#m60!Azw%uHJ*g z@-W&oRM>+PqmKb{ktFTvB5G%I>?fVt!cl3zn3WTLJrRt=`%>6f0lF>48E0!}NY+r^ z3h-t%6D}#Dz<-Uve^lD^xfK=|SE5yxqD@I-86OBkf*ge~GY)rnmCIY@5-do}1>h3U zhY>urVN`*~!z?qkmt*E|p1F>fv32J{3V{$3VG>+4JeKj|;UakMS>wiuAY2R)VBrTS z3drzy@Srq2f#RUzxlr(eMO53tXpdc5G&ATR@NW2Lk@N}F?%>wG<+h)wTkRT4W0xIT zZMDU^Q0^%m40cfdq}AXWTQz^#?KbIUb?087&Qc3T=&Q6KLz~P|x#hXGlGv=yAnI$e z!+x{`W}8W((tHawYtdnb1FkoNFuZQsV!I_e)m=7CQyVV(H~HA@Nxcm|Wt+7lZo9OA a!Vc~9U7SGB8$q3Ii#9CnAx#qS0RRAsKuhfa literal 0 HcmV?d00001 diff --git a/assets/overview.md.7bb97411.js b/assets/overview.md.7bb97411.js new file mode 100644 index 0000000..44e12b1 --- /dev/null +++ b/assets/overview.md.7bb97411.js @@ -0,0 +1 @@ +import{_ as e,o as i,c as t,Q as o}from"./chunks/framework.c4d6cd72.js";const f=JSON.parse('{"title":"Overview","description":"","frontmatter":{},"headers":[],"relativePath":"overview.md","filePath":"overview.md"}'),r={name:"overview.md"},a=o('