diff --git a/.github/workflows/docusaurus_deploy.yml b/.github/workflows/docusaurus_deploy.yml
new file mode 100644
index 00000000..9b34ca9c
--- /dev/null
+++ b/.github/workflows/docusaurus_deploy.yml
@@ -0,0 +1,50 @@
+name: Deploy static content to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ['docusaurus']
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow one concurrent deployment
+concurrency:
+ group: 'pages'
+ cancel-in-progress: true
+
+jobs:
+ # Single deploy job since we're just deploying
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ steps:
+ - name: Get the repo (checkout)
+ uses: actions/checkout@v3
+ - name: Set up Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18
+ cache: 'npm'
+ - name: Install dependencies
+ run: npm install
+ - name: Build
+ run: npm run build
+ - name: Setup Pages
+ uses: actions/configure-pages@v3
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v1
+ with:
+ # Upload dist repository
+ path: './build'
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v1
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..00ad71fb
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "typescript.tsdk": "node_modules\\typescript\\lib"
+}
\ No newline at end of file
diff --git a/docs/cfw/_category_.json b/docs/cfw/_category_.json
new file mode 100644
index 00000000..7e1705e3
--- /dev/null
+++ b/docs/cfw/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Installing an OS",
+ "position": 5,
+ "link": {
+ "type": "generated-index",
+ "description": "What is possible with a Custom OS"
+ }
+}
diff --git a/docs/cfw/choose-a-cfw.md b/docs/cfw/choose-a-cfw.md
new file mode 100644
index 00000000..dc48a7d4
--- /dev/null
+++ b/docs/cfw/choose-a-cfw.md
@@ -0,0 +1,19 @@
+---
+title: "Choose a Custom OS"
+sidebar_position: 1
+pagination_next: null
+pagination_prev: null
+---
+
+:::info
+
+You need an unlocked calculator. [To unlock it go here](../intro)
+
+:::
+
+There are multiple Custom OSs you can install on your calculator, most of them install in the same way. Here are a few of them
+
+| OS | Advantages |
+|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [Omega](/docs/cfw/omega) | The most popular Custom OS for Numworks, forked from Epsilon 15.5.0. It bings back symbolic calculation, allows installing external apps, and adds Python libraries |
+| [Upsilon](/docs/cfw/upsilon) | Forked from Omega, Upsilon brings more features and conveience compared to Omega, like a LaTeX reader, more storage for Python scripts, and a better bootloader |
diff --git a/docs/cfw/install-epsilon-from-softloader.md b/docs/cfw/install-epsilon-from-softloader.md
new file mode 100644
index 00000000..ddb8f546
--- /dev/null
+++ b/docs/cfw/install-epsilon-from-softloader.md
@@ -0,0 +1,54 @@
+---
+title: "Install Epsilon from softloader"
+sidebar_position: 4
+pagination_next: null
+pagination_prev: cfw/choose-a-cfw
+---
+
+:::danger
+
+Following this guide may put your calculator at risk. Installing Epsilon on your calculator the wrong way may lock it. **STRICTLY** follow what's said on this page to make sure your calculator is safe
+
+:::
+
+:::caution
+
+The latest Epsilon version may not be safe, check the latest version. Latest known safe version: **21.2.0**
+
+:::
+
+:::info
+
+This page is irrelevant if you have an n0100, because you can switch between any Custom OS and Epsilon without locking your calculator. And the n0100 can't have any custom bootloader.
+
+:::
+
+### Required Reading
+
+We will now install Epsilon on one slot of your calculator, assuming you have a bootloader that allows it
+
+### What You Need
+
+- A PC with a chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly)
+- A compatible custom bootloader installed (if you don't know, see [this page](/docs/cfw/choose-a-cfw))
+
+### Section I - Open the bootloader
+
+If your Custom OS includes a custom bootloader that allows installing a firmware from it, you should now open the bootloader and make it ready to install anything. Some help can be found on [this page](/docs/cfw/choose-a-cfw)
+
+### Section II - Install
+
+1. Make sure your calculator is in the bootloader, ready to install anything. It **MUST NOT** be in recovery mode (black screen + red led) as this would allow Numworks to lock your calculator.
+2. Open [Numworks' Update page](https://numworks.com/update)
+3. Follow instructions but if it asks you to do anything on your calculator, don't do it unless it's connecting it to your PC. The website should see version 0.0.0
+4. At the end the installer will get stuck and may even fail, it's because it can't reboot the calculator. Don't worry Epsilon is installed, just press reset and you are good
+
+Now you have Epsilon with a custom bootloader so your calculator isn't locked.
+
+Epsilon has normally been installed on both slots. So if you had a Custom OS, it has been erased, only the bootloader is remaining. To reinstall it you can do it normally from the bootloader or in recovery mode, just make sure you are not installing Epsilon again.
+
+It's recommended to keep your Custom OS in Slot A.
+
+### GG
+
+You now have Epsilon and your Custom OS at the same time, Epsilon on one slot, your Custom OS on the other. You can now switch between them whenever you want, it works differently depending on your Custom OS but the goal is just to switch between slots.
diff --git a/docs/cfw/omega.md b/docs/cfw/omega.md
new file mode 100644
index 00000000..46dbd9e4
--- /dev/null
+++ b/docs/cfw/omega.md
@@ -0,0 +1,76 @@
+---
+title: "Omega"
+sidebar_position: 2
+pagination_next: null
+pagination_prev: cfw/choose-a-cfw
+---
+
+:::info
+
+You need an unlocked calculator. [To unlock it go here](/docs/intro)
+
+:::
+
+This page will explain how to install Omega, assuming you have an unlocked calculator
+
+### What you need
+
+- A PC with a chromium based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly)
+- An unlocked Numworks calculator
+
+### Section I - Prepare recovery mode
+
+if your model is n0110, enter recovery mode by holding "6" and pressing "reset"
+if your model is n0100, enter recovery mode by plugging your calculator and pressing reset
+
+### Section II - Install Omega
+
+1. Open [Omega website](https://getomega.dev/install)
+2. Click "Recovery" and select "STM32 BOOTLOADER"
+3. Wait a bit until the calculator shows "Recovery Mode" on the screen
+4. If the calculator doesn't get automatically connected, click "Detect Calculator" and select "Numworks Calculator"
+5. Now you can click "Install Omega" and in a few seconds Omega should be installed on your calculator.
+
+### Section III - How to use your new calculator (not for n0100)
+
+There are new features to your calculator now, you need to know them
+There is a new "Slot" system. Your calculator has 2 slots and can store 2 firmwares, they can't run at the same time but by using reset you can switch between them:
+- Hold 1 and press reset to start Slot A (containing Omega by default)
+- Hold 2 and press reset to start Slot B (may be empty or contains Epsilon)
+- Hold 4 and press reset to open the bootloader, you will be able to see which slot contain which firmware and also be able to install any firmware without locking the calculator.
+- You can’t start another firmware if you enable exam mode, you have to disable it to do so
+
+### Section IV - How to update ?
+
+To update Omega, open the bootloader by holding 4 and pressing reset, plug your calculator in your PC, go to the Omega website, and install it normally.
+
+To update the bootloader, access recovery mode by pressing reset while holding 6, plug the calculator in your PC, go to the Omega website, connect your calculator in Recovery mode and install Omega this way.
+
+### Optional features
+
+Now that Omega is installed, there are a few steps you can take:
+
+#### External apps (not for n0100)
+
+Omega support external apps, there are a few but they are useful. Here is how to install them:
+1. Open [External apps page](https://external.getomega.dev/)
+2. Select the apps you want to install
+3. Add any file you may need to use with your apps
+4. Add a wallpaper if you want
+5. Enable icons support to have good looking icons on your apps
+6. Click install
+
+#### Installing Epsilon (not for n0100)
+
+You can install Epsilon on the bootloader without locking the calculator.
+
+See [Install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader)
+
+
+#### Create your own version
+
+Omega is open-source, you can get the code and use it however you want. You will find everything on [Omega's github repo](https://github.com/Omega-Numworks/Omega)
+
+### Finished
+
+You now have Omega installed on your calculator. You can add python scripts in the same way as before from [Numworks' workshop](https://my.numworks.com/python/)
diff --git a/docs/cfw/upsilon.md b/docs/cfw/upsilon.md
new file mode 100644
index 00000000..c86ed152
--- /dev/null
+++ b/docs/cfw/upsilon.md
@@ -0,0 +1,94 @@
+---
+title: "Upsilon"
+sidebar_position: 3
+pagination_next: null
+pagination_prev: cfw/choose-a-cfw
+---
+
+:::info
+
+You need an unlocked calculator. [To unlock it go here](/docs/intro)
+
+:::
+
+This page will explain how to install Upsilon, assuming you have an unlocked calculator
+
+### What you need
+
+- A PC with a chromium based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly)
+- An unlocked Numworks calculator
+
+### Section I - Prepare recovery mode
+
+if your model is n0110, enter recovery mode by holding "6" and pressing "reset"
+if your model is n0100, enter recovery mode by plugging your calculator and pressing reset
+
+### Section II - Install Upsilon
+
+1. Open [Upsilon website](https://getupsilon.web.app/install)
+2. Click "Recovery" and select "STM32 BOOTLOADER"
+3. Wait a bit until the calculator shows "Recovery Mode" on the screen
+4. If the calculator doesn't get automatically connected, click "Connect" and select "Numworks Calculator"
+5. Select your settings like the theme. For the slot, if you don't know which one to choose, select "A"
+6. Now you can click "Install Upsilon" and in a few seconds Upsilon should be installed on your calculator.
+
+:::tip
+
+Upsilon tends to crash when you start it and the calculator is connected to a PC. Disconnect it before starting
+
+:::
+
+### Section III - How to use your new calculator (not for n0100)
+
+There are new features to your calculator now, you need to know them
+There is a new "Slot" system. Your calculator has 2 slots and can store 2 firmwares, they can't run at the same time but by using reset you can switch between them.
+You now have a menu on boot, it allows you do to a lot. You can acces it just by pressing "reset".
+
+In this menu you can:
+- Choose your slot. There are 3, 2 of them can recieve a standard firmware, you can select them by pressing 1 for Slot A or 3 for Slot B. The 3rd, selected by pressing 2, is meant for very specific use cases, most people don't need it.
+- Open Install mode. There are 2 modes: Flash Slots, that allows you to safely install any other firmware on your calculator, and Flash Bootloader, that allows you to update the bootloader by getting you to recovery mode (it may not work, to access recovery mode you can still use 6 + reset)
+
+Also note that once plugged into the PC, (unless in recovery mode) your calculator will be named "Upsilon Calculator" or "Upsilon Bootloader" instead of "NumWorks Calculator".
+
+### Section IV - How to update ?
+
+To update Upsilon, open Install Mode and Flash Slots (see above how to), plug your calculator in your PC, go to the Upsilon website, and install it normally.
+
+To update the bootloader, access recovery mode by pressing reset while holding 6, plug the calculator in your PC, go to the Upsilon website, connect your calculator in Recovery mode and install Upsilon this way.
+
+### Optional features
+
+Now that Upsilon is installed, there are a few steps you can take:
+
+#### External apps (not for n0100)
+
+Upsilon support external apps, there are a few but they are useful. Here is how to install them:
+1. Open [External apps page](https://upsilonnumworks.github.io/Upsilon-External/)
+2. Select the apps you want to install
+3. Add any file you may need to use with your apps
+4. Add a wallpaper if you want
+5. Click install
+
+#### Reader (not for n0100)
+
+Upsilon has a reader app. It can display text files and LaTeX expressions.
+
+Any file with the `.txt` extension can be read, however if you want to use LaTeX expressions, you need to change the extension to `.urt`. What is inside the file stays the same but Upsilon will display LaTeX expressions.
+All the LaTeX expressions are documented [here](https://getupsilon.web.app/doc/reader).
+
+To transfer your file, send it through the [External apps page](https://upsilonnumworks.github.io/Upsilon-External/).
+
+#### Installing Epsilon (not for n0100)
+
+You can install Epsilon on the bootloader without locking the calculator.
+
+See [Install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader)
+
+
+#### Create your own version
+
+Upsilon is open-source, you can get the code and use it however you want. You will find everything on [Upsilon's github repo](https://github.com/UpsilonNumworks/Upsilon)
+
+### Finished
+
+You now have Upsilon installed on your calculator. You can add python scripts in the same way as before from [Numworks' workshop](https://my.numworks.com/python/)
diff --git a/docs/credits.md b/docs/credits.md
new file mode 100644
index 00000000..d72bdc7a
--- /dev/null
+++ b/docs/credits.md
@@ -0,0 +1,28 @@
+---
+sidebar_position: 99
+title: "Credits"
+pagination_next: null
+pagination_prev: null
+---
+
+:::note
+Special thanks to:
+- M4x1m3, the original creator the guide
+- Rathmox for completing the guide.
+- WonderHunter for the french translation
+- Rathmox and BloomyInDev for porting the guide to docusaurus
+:::
+
+If we forgot you here, [contact us](https://github.com/Omega-Numworks/Omega-Guide) and we will add your name.
+
++ AngeDieu
++ BloomyInDev
++ darthnithin
++ hdboye
++ M4x1m3
++ orkeilius
++ Rathmox
++ siim0n
++ Syycorax
++ TomVdt
++ WonderHunter
diff --git a/docs/faq.md b/docs/faq.md
new file mode 100644
index 00000000..f0950b94
--- /dev/null
+++ b/docs/faq.md
@@ -0,0 +1,31 @@
+---
+sidebar_position: 98
+title: "FAQ"
+pagination_next: null
+pagination_prev: null
+---
+
+# Pre-Installation FAQ
+
+**Q:** *Will this guide void my warranty ?*
+
+**A:** No, at least not in europe. This is a software modification, if Numworks
+refuses you a legitimate warranty claim after that, sue the fuck out of them.
+
+**Q:** *How risky is jailbreaking my Numworks?*
+
+**A:** Full on hardware bricks are quasi-impossible. The worst you can get is a
+calculator with write protection enabled with an empty flash, which can always be solved
+with a hardware mod, but the chance of having that kind of issue is very very unlikely.
+
+**Q:** *Can I do this without a computer (e.g. an Android phone)?*
+
+**A:** All you need is a device capable of running a web browser supporting WebUSB. Android
+phones can be used with an USB OTG cable.
+
+# Post-Installation FAQ
+
+**Q:** *Is it safe to update Epsilon while having a Custom OS installed ?*
+
+**A:** At the moment, Numworks' installer doesn't check for modded bootloaders, neither does
+Epsilon, so yes (unless you don't have a bootloader which is probably not the case).
diff --git a/docs/flowchart.md b/docs/flowchart.md
new file mode 100644
index 00000000..8ff384d0
--- /dev/null
+++ b/docs/flowchart.md
@@ -0,0 +1,57 @@
+---
+sidebar_position: 50
+title: "Site map"
+pagination_next: null
+pagination_prev: null
+---
+
+
+```mermaid
+flowchart TD
+ calc_unlocked([Your calculator is unlocked, yay!])
+ calc_locked_no_modif([What you can do without a Custom OS])
+ start([Start]) --> want_cfw[Want Custom OS ?]
+ style start stroke:#00f500,stroke-width:4px
+ want_cfw --No--> calc_locked_no_modif
+ want_cfw --->|Yes| model_number[Read model number]
+
+
+ model_number --N0100--> calc_unlocked
+ model_number ---->|N0110| check_version_n0110
+ model_number ---->|N0115 or N0120| calc_locked_new_calcs
+ model_number --Other--> goto_discord([Go to Omega Discord server])
+
+ click model_number "./intro"
+ click calc_locked_no_modif "./what-to-do-locked"
+ click calc_unlocked "./cfw/choose-a-cfw"
+ click goto_discord "https://discord.gg/X2TWhh9"
+
+ subgraph n0110 [Branch N0110]
+ style n0110 fill:transparent,stroke-width:4px
+ calc_locked_n0110([Your calculator is locked, but you can do other things with it])
+ calc_unlocked_n0110([Your calculator is unlocked, yay!])
+ check_version_n0110[Which version ?]
+ check_version_n0110 --11.2.0 to 16.2.0--> calc_unlocked_n0110
+ check_version_n0110 ==16.3.0 to 16.4.2\n17.0.0 to 18.2.0==> phi[Use Phi]
+ check_version_n0110 --16.4.3 or 18.2.3--> install_18_2_0[Install Epsilon 18.2.0]
+ check_version_n0110 --19.0.0 to 21.3.0--> downgrade_check[Check eligibility]
+ downgrade_check --Eligible--> install_18_2_0
+ downgrade_check --Not eligible--> downgrade_fail(( )) --Open the calculator--> hardware_method[Follow the hardware method]
+ downgrade_fail --Don't want to open the calculator--> calc_locked_n0110
+ install_18_2_0 --> phi
+ phi & hardware_method --> calc_unlocked_n0110
+
+ click check_version_n0110 "./unlock/n0110-is-locked"
+ click downgrade_check "./unlock/phi/check-version-change-eligibility"
+ click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0"
+ click phi "./unlock/phi"
+ click hardware_method "./unlock/hardware/n0110-hardware-unlock"
+ click calc_locked_n0110 "./what-to-do-locked"
+ click calc_unlocked_n0110 "./cfw/choose-a-cfw"
+
+ end
+
+ calc_locked_new_calcs([Your calculator is locked, but you can do other things with it])
+
+ click calc_locked_new_calcs "./what-to-do-locked"
+```
diff --git a/docs/how-does-it-work.md b/docs/how-does-it-work.md
new file mode 100644
index 00000000..8eefc3eb
--- /dev/null
+++ b/docs/how-does-it-work.md
@@ -0,0 +1,105 @@
+---
+sidebar_position: 80
+title: "How does it work ?"
+pagination_next: null
+pagination_prev: null
+---
+
+This page is made to explain how does the calculator work and what happens when we unlock it
+You will also learn a bit from the history of the calculator
+
+### 1 - How is the calculator made ?
+
+First, understand that the power button of the calculator only put the it in sleep mode, instead of powering it down completely. The calculator powers on automatically when the battery is connected. The reset button on the back only cuts the power while it's held. When you release it, the calculator powers on.
+
+There are currently 3 models of Numworks calculators: n0100, n0110, n0120.
+
+The calculator uses a MCU (Microcontroller Unit) made by ST Microelectronics to do all the work.
+- The MCU used in n0100 is the [STM32F412](https://www.st.com/en/microcontrollers-microprocessors/stm32f412.html). This one has one storage partition, named "flash" because it's flash memory.
+- The MCU used in n0110 is the [STM32F730](https://www.st.com/en/microcontrollers-microprocessors/stm32f730r8.html). This one has 2 flashs. Named "internal" and "external"
+- The MCU used in n0120 is the [STM32H725](https://www.st.com/en/microcontrollers-microprocessors/stm32h725-735.html). This one also has 2 flashs, but is also more powerful than n0110's one
+
+So we can make 2 categories:
+- n0100: With internal flash only
+- n0110 and n0120: With internal and external flash
+
+:::note
+
+Every calculator, thanks to the MCU, has a recovery mode. It can usually be accessed by holding 6 while the calculator is starting (on n0100 it has to be plugged into a PC when it starts, you don't need to hold 6). It's represented by a black screen with the LED turned on red. But if you try it may not behave like this, we will understand why later.
+
+:::
+
+### 2 - How is the hardware used ?
+
+With 1 flash, it's easy to understand, everything is in the flash, this is the case on n0100. But with 2 flashs, it's more complicated:
+
+- The External flash: It contains the firmware, what you usually know about, the interface, the calculation program, and everything you use from this calculator.
+- The Internal flash: It contains a small program made to start what is installed in the External flash. It's the first thing run by the calculator, if the internal flash is empty, the calculator can't start, and the LED turns red.
+
+### 3 - What is installed in the flashs ?
+
+The internal flash used to store a simple program that just starts the firmware installed in the external flash. But nowdays, since Epsilon 16, it's more complicated:
+
+Since Epsilon 16, the internal flash now contains a bootloader that is used to lock the calculator.
+- **How does it do that ?** It check is the firmware installed is signed by Numworks, if it isn't, the bootloader doesn't start the firmware.
+- **Can't the recovery mode help ?** Numworks thought about that, they configured the MCU to prevent writing in the internal flash and they put a message to tell that it's in recovery mode while it acually isn't.
+- **Why isn't the n0100 locked ?** The n0100 has only one flash, and may need to be updated. So locking it was stupid as it would prevent updating it without special debugging tools.
+
+:::note
+
+Now that we know how Numworks uses the calculator, let's know how custom firmwares use it.
+
+:::
+
+### 4 - What changes with a Custom OS ?
+
+Originally, a Custom OS was just replacing the external flash. To bypass some limitations, some Custom OSs like Omega and Delta started changing the internal flash, but it was not far from what Numworks originally did.
+
+Delta introduced external apps, which were then reused in Omega. They are installed in the external flash alongside the firmware. A similar system has been added to Epsilon later.
+
+But everything changed when custom bootloaders were released alongside with Phi.
+
+Most custom bootloaders contains more features like being able to have 2 firmwares stored on the external flash and starting one or another. And preventing writing over the internal flash from the firmware
+
+:::note
+
+Now that you understand how the internal flash works, let's understand how Phi works
+
+:::
+
+### 5 - How does Phi work ?
+
+:::info
+
+Phi is **NOT** a program or exploit that directly allows a Custom OS to run and doesn't do anything once the calculator is unlocked
+
+:::
+
+Phi is an app that can unlock calculators running Epsilon between 16.3.0 and 18.2.0 (but not 16.4.3)
+
+It can be installed on Epsilon and exploits a bug named [Screenhax](https://blog.mfriess.xyz/screenhax/) to erase the internal flash and write over it from Epsilon, and also re-enabling recovery mode.
+
+It can also install a simple bootloader.
+
+Numworks patched it by releasing Epsilon 18.2.3.
+
+### 6 - So, what happens when you follow the guide ?
+
+The process in the guide is now easy to understand:
+- on n0100 we just start in recovery mode then erase the internal flash
+- on n0110 we erase the internal flash, unlock and re-enable the recovery mode to install whatever we want on both flashs
+
+### 7 - Why n0120 can't be unlocked ?
+
+The n0120 is in a particular case:
+It can be unlocked with a hardware modification, but the reason why we don't advertize it in this guide is because there is no Custom OS you can install on it.
+
+The n0120 was released first with Epsilon 16, but a patched version that can't be unlocked with Phi. So there is no n0120 that can currently be unlocked without hardware.
+
+Also, since Epsilon 16, Numworls stopped giving the drivers for the MCU, these drivers are requiered to create a bootloader. Developers can get them from Epsilon 15 for n0100 and n0110, but for n0120, they just never got released publically (and they can't get extracted from Epsilon), so they need to be developed from scratch which is really hard and long. This is why there is no Custom OS for n0120, and we can't tell you how to unlock it.
+
+:::note
+
+Now you understand everything about how unlocking the calculator works.
+
+:::
diff --git a/docs/intro.md b/docs/intro.md
index 8a2e69d9..ede0e9a9 100644
--- a/docs/intro.md
+++ b/docs/intro.md
@@ -1,47 +1,49 @@
---
sidebar_position: 1
+title: Get Started
+pagination_next: null
+pagination_prev: null
---
-# Tutorial Intro
+:::caution
+Thoroughly read all of the introductory pages (including this one!) before proceeding.
+:::
-Let's discover **Docusaurus in less than 5 minutes**.
+**Before starting this guide, you need to understand some words you will see in this guide.**
-## Getting Started
+### Definitions
-Get started by **creating a new site**.
+This guide will refer to some names, before starting you have to know what these names refer to:
-Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
+1. Epsilon: This is the firmware originally sold with the calculator, made by Numworks. After version 16, they started to lock the calculator to prevent any Custom OS installation ([see why here](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)).
+2. Custom OS: Custom operating system, a firmware that is made to replace Epsilon. Common ones are Omega and Upsilon
+3. Phi: This is an app that is made to unlock locked calculators.
+4. Recovery mode ("STM32 DFU bootloader" or "hwloader"): This is a mode on the calculator that allows to change anything, and the one that Numworks locked. It's usually accessed when pressing "reset" on the back of the calculator while holding the "6" key and it can be recognized when you get a black screen with the led turned on red. This is what you need to get at the end to be able to install anything you want.
+5. Bootloader ("softloader"): This is a menu you can get in different ways, it depends on the Custom OS you choose. It allows you to reinstall the firmware and can prevent you from locking your calculator if you update it. Phi allows you to install one if you want.
-### What you'll need
+:::info
-- [Node.js](https://nodejs.org/en/download/) version 16.14 or above:
- - When installing Node.js, you are recommended to check all checkboxes related to dependencies.
+If you don't want to deeply modify your calculator, [there are still a few things you can do](what-to-do-locked).
-## Generate a new site
+:::
-Generate a new Docusaurus site using the **classic template**.
+### Prerequisites
-The classic template will automatically be added to your project after you run the command:
+- Numworks Calculator
+- Driver if you have Windows or Linux: open the [Rescue page](https://numworks.com/rescue) on Numworks’ website and it will give it and tell you how to install it. **Don’t plug in your calculator to make sure you don’t lock it**. If you have macOS, you don't need it.
-```bash
-npm init docusaurus@latest my-website classic
-```
+### Model check
-You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
+1. Turn your calculator around
+2. On its back, there should be a little writing, either N0120, N0110 or N0100. This is your model number.
+3. If you can't read that:
+ 1. Turn the calculator on
+ 2. Go in the settings app
+ 3. Go in "about"
+ 4. Look at the FCC ID. It should end with one of the model names below.
-The command also installs all necessary dependencies you need to run Docusaurus.
-
-## Start your site
-
-Run the development server:
-
-```bash
-cd my-website
-npm run start
-```
-
-The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
-
-The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
-
-Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
+| Calculator Model | What to do |
+|------------------|-------------------------------------------------------------------------------------------------|
+| N0100 | [Your calculator is already unlocked. Choose a Custom OS](cfw/choose-a-cfw) |
+| N0110 | [Check if your calculator is locked](unlock/n0110-is-locked) |
+| N0115 - N0120 | [You can't install a Custom OS on it. But there are still a few things you can do](what-to-do-locked) |
diff --git a/docs/restore-stock-firmware.md b/docs/restore-stock-firmware.md
new file mode 100644
index 00000000..8a3b6aa9
--- /dev/null
+++ b/docs/restore-stock-firmware.md
@@ -0,0 +1,22 @@
+---
+sidebar_position: 10
+title: "Restore Stock Firmware"
+pagination_next: null
+pagination_prev: null
+---
+
+:::danger
+
+Restoring your calculator to stock firmware **WILL LOCK IT** and you won't be able to install any Custom OS on it ever again, unless you use a hardware method to unlock it again. We highly advise using the bootloader from any compatible Custom OS and [install Epsilon from softloader](/docs/cfw/install-epsilon-from-softloader) to still use the latest versions without locking your calculator.
+
+:::
+
+
+This page will tell you how to go back to a fully stock firmware and therefore locking your calculator.
+
+1. Open [Numworks' restore page](https://numworks.com/rescue)
+2. Put your calculator in Recovery Mode holding 6 and pressing "reset" at the same time
+3. Plug your calculator in your computer
+4. follow the instructions to restore stock firmware.
+
+You now have a fully stock Numworks calculator.
diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md
new file mode 100644
index 00000000..a50e5d89
--- /dev/null
+++ b/docs/troubleshooting.md
@@ -0,0 +1,142 @@
+---
+sidebar_position: 95
+title: "Troubleshooting"
+pagination_next: null
+pagination_prev: null
+---
+
+### Black screen and red LED
+
+Your calculator is in Recovery mode, it's waiting to receive a firmware, so it's unlocked. **If you update from Numworks' website, your calculator will be locked**
+
+[Choose a Custom OS](./cfw/choose-a-cfw) to install on your calculator. (If you want to install Epsilon without locking your calculator, install first a compatible Custom OS while in recovery mode, then install Epsilon while **NOT** in recovery mode)
+
+### Black screen, yellow cable, and `numworks.com/rescue`
+
+This is Numworks' bootloader. It shows up when the calculator is locked and you started the Recovery mode by holding 6 and pressing reset, or when the calculator couldn't start.
+
+If you want to unlock your calculator, don't go to the `numworks.com/rescue` website, but follow the guide from [Installing Epsilon 18.2.0](/docs/unlock/phi/install-epsilon-18-2-0).
+
+### Black screen, nothing else
+
+There are 5 possible reasons:
+- Your calculator is in sleep mode, press the power button to turn it back on.
+- Your calculator may have any wierd bug, try pressing the reset button on the back.
+- Your calculator may be discharged, try letting it charge a few minutes.
+- The battery is disconnected, you may need to open your calculator to plug it back in.
+- If you have an n0100, you may be in Recovery Mode, unplug the cable, and press the reset button on the back.
+
+If this doesn't solve the problem, contact Numworks.
+
+### Huge battery consumption
+
+There are 2 possible reasons:
+- You have enabled the clock in the settings, some custom firmwares include it. The clock consumes a lot of battery and it's highly recommended to disable it.
+- Your calculator keeps the led green. This is a hardware issue that tricks the calculator into thinking it's constantly charging and so fully charged while it's not the case. You should contact Numworks to replace your calculator
+
+### Calculator not detected
+
+it means the driver or config file isn't installed on Windows or Linux.
+
+Open the [Rescue page](https://numworks.com/rescue/) on Numworks' website and it will give it and tell you how to install it. **Don't plug in your calculator to make sure you don't lock it**
+
+If you are using Linux, it may still not be detected. It can happen if your web browser is installed as a flatpak.
+
+In this case, you will need to install [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal), select your web browser, and add `/run/udev` in the "Other files" into the "Filesystem" category.
+
+You can also run this command: `flatpak override --user --filesystem=/run/udev [Application ID]` (Replace `[Application ID]` with your web browser's ID, try to run `flatpak list` to find it)
+
+Don't forget that you may need to restart your web browser if you unplug and replug the calculator.
+
+### "CommandName is not defined"
+
+You are trying to do something with the calculator but the calculator isn't in the right mode, like trying to install apps with the calculator in Recovery Mode or on n0100.
+
+Try to use the right mode, for external apps just run it in normal mode.
+
+### "Unable to claim interface"
+
+This error is displayed when you try to connect your calculator but it's already used by another tab or software. It usually happens when you try to install external apps but the tab you used to install your custom firmware is still open.
+
+This can easily be fixed if you close the tab or software already connected to it. Only one tab (or software) at a time can establish the connection to the calculator.
+
+### "Could not detect the calculator model" / "N????"
+
+This means your calculator is protected against CFM installation. If you want to install a Custom OS, you need to unlock it.
+
+Follow [this guide](intro) to unlock it.
+
+### Recovery mode (Black Screen + Red Led), calculator not recognized
+
+Your calculator looks like it's in recovery mode but it isn't.
+
+Hold 6 and click reset to start it in recovery mode, it will look the same but this time, it will be recognized.
+
+### "Memory is corrupted" when adding python scripts
+
+It can happen when the custom bootloader is too old. To update it : go to your custom firmware's website, put the calculator in recovery mode (holding 6 and clicking reset on the calculator's back), connect the calculator to the computer, then select "recovery" on custom firmware's website.
+
+### Screen and led blinking
+
+You are trying to run Epsilon 19 with an old custom bootloader.
+
+Update the bootloader : go to your custom firmware's website, put the calculator in recovery mode (holding 6 and clicking reset on the calculator's back), connect the calculator to the computer, then select "recovery" on custom firmware's website.
+
+### Installation takes infinite amout of time
+
+This can happen on Omega's website and on Numworks' website. Unless your calculator is locked, the firmware is already installed but the website is trying to boot the calculator and it can't.
+
+Just click reset on the calculator and it should be fixed
+
+### "Address 0x90000000 outside of memory map"
+
+You are trying to flash the external partition but the calculator is not in the right mode. This can't work.
+
+You need to flash while in Numworks' bootloader, the custom bootloader or recovery mode flasher (the screen saying "Recovery mode" when installing Omega in Recovery mode)
+
+### Calculator restarts when trying to install custom firmware
+
+Your calculator is running Epsilon 19 or higher, it can happen when the calculator is locked or when you are running it from custom bootloader.
+
+Just restart the calculator in bootloader or any other firmware that isn't Epsilon 19 or higher
+
+### "ControlTransferIn" / "ControlTransferOut"
+
+Something interrupted the connection with the calculator.
+
+Make sure you are in the right mode and no other app or tab is using the calculator.
+
+### "DFU DOWNLOAD FAILED"
+
+You may not be using the right WebDFU, make sure you are using [TI-Planet's WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/)
+
+### "Access Denied" when trying to connect the calculator in Recovery mode
+
+This can happen on Windows and Linux:
+- On Linux it means you haven't installed the config file, [Numworks' update page](https://numworks.com/update/) will give it to you.
+- On Windows it means you are in recovery mode and the wrong driver is selected, there are a few steps you can follow to fix this
+ 1. If it's not installed, install the driver from [Numworks' rescue page](https://numworks.com/rescue/)
+ 2. Open Device manager, press Win+R, type `devmgmt.msc`, and press enter
+ 3. Search for a device with STM in the name
+ 4. Right click on it, and press "Update Driver"
+ 5. Dont search automatically for drivers, Search for it manually. Then decide to choose in a list.
+ 6. Select the Numworks driver, then press next
+ 7. The driver should be correctly installed, you can now connect in recovery mode and it should work.
+
+### Crash when starting Upsilon
+
+Upsilon tends to crash when you start it and the calculator is connected to a PC. Disconnect it before starting.
+
+### In Dualboot, KhiCAS makes the calculator crash
+
+KhiCAS is a heavy app and dual-booting with this app installed is not possible.
+
+You may have installed KhiCAS, then Epsilon, which erased a part of KhiCAS, preventing it from starting.
+
+If you want to use KhiCAS, you will need to reinstall it.
+
+___
+
+:::info
+Is you error not listed ? The provided solution didn't fix your problem ? Don't hesitate to ask on the [Omega Discord](https://discord.gg/X2TWhh9)
+:::
diff --git a/docs/tutorial-basics/_category_.json b/docs/tutorial-basics/_category_.json
deleted file mode 100644
index 2e6db55b..00000000
--- a/docs/tutorial-basics/_category_.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "label": "Tutorial - Basics",
- "position": 2,
- "link": {
- "type": "generated-index",
- "description": "5 minutes to learn the most important Docusaurus concepts."
- }
-}
diff --git a/docs/tutorial-basics/congratulations.md b/docs/tutorial-basics/congratulations.md
deleted file mode 100644
index 04771a00..00000000
--- a/docs/tutorial-basics/congratulations.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-sidebar_position: 6
----
-
-# Congratulations!
-
-You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
-
-Docusaurus has **much more to offer**!
-
-Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
-
-Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
-
-## What's next?
-
-- Read the [official documentation](https://docusaurus.io/)
-- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config)
-- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration)
-- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
-- Add a [search bar](https://docusaurus.io/docs/search)
-- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
-- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
diff --git a/docs/tutorial-basics/create-a-blog-post.md b/docs/tutorial-basics/create-a-blog-post.md
deleted file mode 100644
index ea472bba..00000000
--- a/docs/tutorial-basics/create-a-blog-post.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-sidebar_position: 3
----
-
-# Create a Blog Post
-
-Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
-
-## Create your first Post
-
-Create a file at `blog/2021-02-28-greetings.md`:
-
-```md title="blog/2021-02-28-greetings.md"
----
-slug: greetings
-title: Greetings!
-authors:
- - name: Joel Marcey
- title: Co-creator of Docusaurus 1
- url: https://github.com/JoelMarcey
- image_url: https://github.com/JoelMarcey.png
- - name: Sébastien Lorber
- title: Docusaurus maintainer
- url: https://sebastienlorber.com
- image_url: https://github.com/slorber.png
-tags: [greetings]
----
-
-Congratulations, you have made your first post!
-
-Feel free to play around and edit this post as much you like.
-```
-
-A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
diff --git a/docs/tutorial-basics/create-a-document.md b/docs/tutorial-basics/create-a-document.md
deleted file mode 100644
index ffddfa8e..00000000
--- a/docs/tutorial-basics/create-a-document.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-sidebar_position: 2
----
-
-# Create a Document
-
-Documents are **groups of pages** connected through:
-
-- a **sidebar**
-- **previous/next navigation**
-- **versioning**
-
-## Create your first Doc
-
-Create a Markdown file at `docs/hello.md`:
-
-```md title="docs/hello.md"
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
-
-## Configure the Sidebar
-
-Docusaurus automatically **creates a sidebar** from the `docs` folder.
-
-Add metadata to customize the sidebar label and position:
-
-```md title="docs/hello.md" {1-4}
----
-sidebar_label: 'Hi!'
-sidebar_position: 3
----
-
-# Hello
-
-This is my **first Docusaurus document**!
-```
-
-It is also possible to create your sidebar explicitly in `sidebars.js`:
-
-```js title="sidebars.js"
-module.exports = {
- tutorialSidebar: [
- 'intro',
- // highlight-next-line
- 'hello',
- {
- type: 'category',
- label: 'Tutorial',
- items: ['tutorial-basics/create-a-document'],
- },
- ],
-};
-```
diff --git a/docs/tutorial-basics/create-a-page.md b/docs/tutorial-basics/create-a-page.md
deleted file mode 100644
index 20e2ac30..00000000
--- a/docs/tutorial-basics/create-a-page.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-sidebar_position: 1
----
-
-# Create a Page
-
-Add **Markdown or React** files to `src/pages` to create a **standalone page**:
-
-- `src/pages/index.js` → `localhost:3000/`
-- `src/pages/foo.md` → `localhost:3000/foo`
-- `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
-
-## Create your first React Page
-
-Create a file at `src/pages/my-react-page.js`:
-
-```jsx title="src/pages/my-react-page.js"
-import React from 'react';
-import Layout from '@theme/Layout';
-
-export default function MyReactPage() {
- return (
-
- My React page
- This is a React page
-
- );
-}
-```
-
-A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page).
-
-## Create your first Markdown Page
-
-Create a file at `src/pages/my-markdown-page.md`:
-
-```mdx title="src/pages/my-markdown-page.md"
-# My Markdown page
-
-This is a Markdown page
-```
-
-A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page).
diff --git a/docs/tutorial-basics/deploy-your-site.md b/docs/tutorial-basics/deploy-your-site.md
deleted file mode 100644
index 1c50ee06..00000000
--- a/docs/tutorial-basics/deploy-your-site.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-sidebar_position: 5
----
-
-# Deploy your site
-
-Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**).
-
-It builds your site as simple **static HTML, JavaScript and CSS files**.
-
-## Build your site
-
-Build your site **for production**:
-
-```bash
-npm run build
-```
-
-The static files are generated in the `build` folder.
-
-## Deploy your site
-
-Test your production build locally:
-
-```bash
-npm run serve
-```
-
-The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/).
-
-You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**).
diff --git a/docs/tutorial-basics/markdown-features.mdx b/docs/tutorial-basics/markdown-features.mdx
deleted file mode 100644
index 0337f34d..00000000
--- a/docs/tutorial-basics/markdown-features.mdx
+++ /dev/null
@@ -1,150 +0,0 @@
----
-sidebar_position: 4
----
-
-# Markdown Features
-
-Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
-
-## Front Matter
-
-Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
-
-```text title="my-doc.md"
-// highlight-start
----
-id: my-doc-id
-title: My document title
-description: My document description
-slug: /my-custom-url
----
-// highlight-end
-
-## Markdown heading
-
-Markdown text with [links](./hello.md)
-```
-
-## Links
-
-Regular Markdown links are supported, using url paths or relative file paths.
-
-```md
-Let's see how to [Create a page](/create-a-page).
-```
-
-```md
-Let's see how to [Create a page](./create-a-page.md).
-```
-
-**Result:** Let's see how to [Create a page](./create-a-page.md).
-
-## Images
-
-Regular Markdown images are supported.
-
-You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
-
-```md
-![Docusaurus logo](/img/docusaurus.png)
-```
-
-![Docusaurus logo](/img/docusaurus.png)
-
-You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
-
-```md
-![Docusaurus logo](./img/docusaurus.png)
-```
-
-## Code Blocks
-
-Markdown code blocks are supported with Syntax highlighting.
-
- ```jsx title="src/components/HelloDocusaurus.js"
- function HelloDocusaurus() {
- return (
-
Hello, Docusaurus!
- )
- }
- ```
-
-```jsx title="src/components/HelloDocusaurus.js"
-function HelloDocusaurus() {
- return Hello, Docusaurus!
;
-}
-```
-
-## Admonitions
-
-Docusaurus has a special syntax to create admonitions and callouts:
-
- :::tip My tip
-
- Use this awesome feature option
-
- :::
-
- :::danger Take care
-
- This action is dangerous
-
- :::
-
-:::tip My tip
-
-Use this awesome feature option
-
-:::
-
-:::danger Take care
-
-This action is dangerous
-
-:::
-
-## MDX and React Components
-
-[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**:
-
-```jsx
-export const Highlight = ({children, color}) => (
- {
- alert(`You clicked the color ${color} with label ${children}`)
- }}>
- {children}
-
-);
-
-This is Docusaurus green !
-
-This is Facebook blue !
-```
-
-export const Highlight = ({children, color}) => (
- {
- alert(`You clicked the color ${color} with label ${children}`);
- }}>
- {children}
-
-);
-
-This is Docusaurus green !
-
-This is Facebook blue !
diff --git a/docs/tutorial-extras/_category_.json b/docs/tutorial-extras/_category_.json
deleted file mode 100644
index a8ffcc19..00000000
--- a/docs/tutorial-extras/_category_.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "label": "Tutorial - Extras",
- "position": 3,
- "link": {
- "type": "generated-index"
- }
-}
diff --git a/docs/tutorial-extras/img/docsVersionDropdown.png b/docs/tutorial-extras/img/docsVersionDropdown.png
deleted file mode 100644
index 97e41646..00000000
Binary files a/docs/tutorial-extras/img/docsVersionDropdown.png and /dev/null differ
diff --git a/docs/tutorial-extras/img/localeDropdown.png b/docs/tutorial-extras/img/localeDropdown.png
deleted file mode 100644
index e257edc1..00000000
Binary files a/docs/tutorial-extras/img/localeDropdown.png and /dev/null differ
diff --git a/docs/tutorial-extras/manage-docs-versions.md b/docs/tutorial-extras/manage-docs-versions.md
deleted file mode 100644
index e12c3f34..00000000
--- a/docs/tutorial-extras/manage-docs-versions.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-sidebar_position: 1
----
-
-# Manage Docs Versions
-
-Docusaurus can manage multiple versions of your docs.
-
-## Create a docs version
-
-Release a version 1.0 of your project:
-
-```bash
-npm run docusaurus docs:version 1.0
-```
-
-The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created.
-
-Your docs now have 2 versions:
-
-- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs
-- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs**
-
-## Add a Version Dropdown
-
-To navigate seamlessly across versions, add a version dropdown.
-
-Modify the `docusaurus.config.js` file:
-
-```js title="docusaurus.config.js"
-module.exports = {
- themeConfig: {
- navbar: {
- items: [
- // highlight-start
- {
- type: 'docsVersionDropdown',
- },
- // highlight-end
- ],
- },
- },
-};
-```
-
-The docs version dropdown appears in your navbar:
-
-![Docs Version Dropdown](./img/docsVersionDropdown.png)
-
-## Update an existing version
-
-It is possible to edit versioned docs in their respective folder:
-
-- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello`
-- `docs/hello.md` updates `http://localhost:3000/docs/next/hello`
diff --git a/docs/tutorial-extras/translate-your-site.md b/docs/tutorial-extras/translate-your-site.md
deleted file mode 100644
index caeaffb0..00000000
--- a/docs/tutorial-extras/translate-your-site.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-sidebar_position: 2
----
-
-# Translate your site
-
-Let's translate `docs/intro.md` to French.
-
-## Configure i18n
-
-Modify `docusaurus.config.js` to add support for the `fr` locale:
-
-```js title="docusaurus.config.js"
-module.exports = {
- i18n: {
- defaultLocale: 'en',
- locales: ['en', 'fr'],
- },
-};
-```
-
-## Translate a doc
-
-Copy the `docs/intro.md` file to the `i18n/fr` folder:
-
-```bash
-mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/
-
-cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md
-```
-
-Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French.
-
-## Start your localized site
-
-Start your site on the French locale:
-
-```bash
-npm run start -- --locale fr
-```
-
-Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated.
-
-:::caution
-
-In development, you can only use one locale at a same time.
-
-:::
-
-## Add a Locale Dropdown
-
-To navigate seamlessly across languages, add a locale dropdown.
-
-Modify the `docusaurus.config.js` file:
-
-```js title="docusaurus.config.js"
-module.exports = {
- themeConfig: {
- navbar: {
- items: [
- // highlight-start
- {
- type: 'localeDropdown',
- },
- // highlight-end
- ],
- },
- },
-};
-```
-
-The locale dropdown now appears in your navbar:
-
-![Locale Dropdown](./img/localeDropdown.png)
-
-## Build your localized site
-
-Build your site for a specific locale:
-
-```bash
-npm run build -- --locale fr
-```
-
-Or build your site to include all the locales at once:
-
-```bash
-npm run build
-```
diff --git a/docs/unlock/_category_.json b/docs/unlock/_category_.json
new file mode 100644
index 00000000..5a61549b
--- /dev/null
+++ b/docs/unlock/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Unlock before installation",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "How to Unlock your Numworks to allow Custom OS installation"
+ }
+}
diff --git a/docs/unlock/hardware/_category_.json b/docs/unlock/hardware/_category_.json
new file mode 100644
index 00000000..5c48c8cd
--- /dev/null
+++ b/docs/unlock/hardware/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Hardware method",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "Unlock your calculator with an hardware method"
+ }
+}
diff --git a/docs/unlock/hardware/n0110-hardware-unlock.md b/docs/unlock/hardware/n0110-hardware-unlock.md
new file mode 100644
index 00000000..6b265b01
--- /dev/null
+++ b/docs/unlock/hardware/n0110-hardware-unlock.md
@@ -0,0 +1,21 @@
+---
+title: "Hardware unlock (N0110)"
+sidebar_position: 1
+pagination_next: unlock/n0110-unlocked
+pagination_prev: unlock/n0110-is-locked
+---
+
+### Requiered reading
+
+The hardware unlock way require special tools.
+
+The goal is to force recovery mode to allow installation, your calculator should show a black screen and a red LED.
+
+### Select a method
+
+There are multiple methods.
+
+We recommend [this post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), it is very complete and will guide you very well.
+
+If you have another way to get Recovery mode, you can follow it instead. **We are not responsible for anything that goes wrong with your device**
+
diff --git a/docs/unlock/n0110-is-locked.md b/docs/unlock/n0110-is-locked.md
new file mode 100644
index 00000000..7687b52c
--- /dev/null
+++ b/docs/unlock/n0110-is-locked.md
@@ -0,0 +1,57 @@
+---
+title: "Is your calculator locked ? (N0110)"
+sidebar_position: 1
+pagination_next: null
+pagination_prev: intro
+---
+
+This page will tell you if you need to unlock your calculator and how.
+
+#### Section I - Epsilon Version check
+
+1. Power on your device
+2. Go in the settings app
+3. Go in "about"
+4. Look at the "Software version" or "Epsilon version" field.
+5. This is your Epsilon version.
+
+#### Section II - Flash lock check
+
+1. Press the "6" key
+2. While pressing the "6" key, press the reset button at the back of the device.
+
+If you see a screen like this one, you can proceed :
+
+![Epsilon 16 bootloader](/img/e16bl.png)
+
+:::caution
+
+If the screen stays black and the LED turns red, STOP - your calculator is already unlocked! Continue from [here](/docs/unlock/n0110-unlocked).
+
+:::
+
+Press the reset button at the back of the calculator to return to the firmware.
+
+#### Section III - Select a Method {#principal-methods}
+
+Use the version table below to select a method. A few things to note:
+ + The version table below is *inclusive*. For example, "from 16.3.0 to 18.0.0" includes 16.3.0, 18.0.0, and all versions in between.
+ + Version 16.4.3 does not follow this rule.
+
+| System Version | What to do |
+|----------------|----------------------------------------------------------------------|
+| 11.2.0-16.2.0 | [Now what ?](n0110-unlocked) |
+| 16.3.0-16.4.2 | [Phi](phi) |
+| 16.4.3 | [Install Epsilon 18.2.0](phi/install-epsilon-18-2-0) |
+| 17.0.0-18.2.0 | [Phi](phi) |
+| 18.2.3 | [Install Epsilon 18.2.0](phi/install-epsilon-18-2-0) |
+| 19.0.0-21.2.0 | [Check version change eligibility](phi/check-version-change-eligibility) |
+
+---
+#### Alternate Methods {#alt-methods}
+
+If possible, you should follow one of the software methods listed above.
+
+Otherwise, methods that work on all versions are available, but require additional hardware:
+
+1. [Hardware Unlock](hardware/n0110-hardware-unlock) - requires special tools
diff --git a/docs/unlock/n0110-unlocked.md b/docs/unlock/n0110-unlocked.md
new file mode 100644
index 00000000..c6e04b44
--- /dev/null
+++ b/docs/unlock/n0110-unlocked.md
@@ -0,0 +1,10 @@
+---
+sidebar_position: 10
+title: "Unlocked (N0110)"
+pagination_next: cfw/choose-a-cfw
+pagination_prev: unlock/n0110-is-locked
+---
+
+Your Numworks is unlocked, yay!
+
+You can now install a Custom OS to extend your calculator abilities
diff --git a/docs/unlock/phi/_category_.json b/docs/unlock/phi/_category_.json
new file mode 100644
index 00000000..f6a29872
--- /dev/null
+++ b/docs/unlock/phi/_category_.json
@@ -0,0 +1,8 @@
+{
+ "label": "Phi",
+ "position": 2,
+ "link": {
+ "type": "generated-index",
+ "description": "Unlock your calculator easily with Phi"
+ }
+}
diff --git a/docs/unlock/phi/check-version-change-eligibility.md b/docs/unlock/phi/check-version-change-eligibility.md
new file mode 100644
index 00000000..4c406412
--- /dev/null
+++ b/docs/unlock/phi/check-version-change-eligibility.md
@@ -0,0 +1,41 @@
+---
+title: "Check version change eligibility"
+sidebar_position: 1
+---
+
+### Introduction
+
+You may need to change Epsilon's version to unlock your calculator, we usually install Epsilon 18.2.0. There are some cases where you can install Epsilon 18.2.0 and some you can't, this page explains how to know if you are eligible or not.
+
+### If you have Epsilon 15 or lower
+
+You don't need to change your version, just go to [Now What ?](/docs/unlock/n0110-unlocked)
+
+### If you have Epsilon 16 to 18.2.0 (but not 16.4.3)
+
+You don't need to change your version, just go to [Phi](/docs/unlock/phi)
+
+### If you have Epsilon 16.4.3 or 18.2.3
+
+You are eligible, you can continue normally
+
+### If you have Epsilon 19 or higher
+
+It depends on the version you had before updating to Epsilon 19 and over.
+
+- If you had 15 or lower, Omega, or Upsilon: You can't change your version
+- If you had 16 to 18.2.3 (but not 16.4.3): You can change your version
+- If you had 16.4.3, 19 or higher: You can't change your version
+
+### And If you don't know
+
+Don't worry, trying to change your version won't break your calculator.
+If you were not eligible, after the process, the calculator will be stuck on Numworks recovery screen and you will be able to update from Numworks website and your calculator will work normally.
+
+___
+
+:::info
+
+If you are not eligible, you need to use an [Alternate Method](/docs/unlock/n0110-is-locked#alt-methods)
+
+:::
diff --git a/docs/unlock/phi/install-epsilon-18-2-0.md b/docs/unlock/phi/install-epsilon-18-2-0.md
new file mode 100644
index 00000000..6f5b8993
--- /dev/null
+++ b/docs/unlock/phi/install-epsilon-18-2-0.md
@@ -0,0 +1,53 @@
+---
+title: "Install Epsilon 18.2.0"
+sidebar_position: 2
+---
+
+### Required Reading
+
+We will now install Epsilon 18.2.0
+
+:::info
+
+If you are not sure if you can install Epsilon 18.2.0, go check [this page](/docs/unlock/phi/check-version-change-eligibility)
+
+:::
+
+
+### What You Need
+
+- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly)
+- Epsilon 18.2.0 `18-2-0.dfu` (since Numworks deleted this file from their website because of Phi, we cannot give you a link here)
+- Python ([Link for Windows and macOS](https://www.python.org/))
+- This Python script: [Linux and macOS version](/resources/unpack.py), [Windows version](/resources/unpack-win.py)
+
+### Section I - Extracting the external binary
+
+Since Epsilon is now proprietary, we can't distribute the external flash image directly.
+We thus have to make you extract it.
+
+1. Install Python on your platform
+2. Download Epsilon 18.2.0
+3. Create a new folder
+4. Put the Python script in that folder
+5. Put 18-2-0.dfu in that folder
+6. Run the script
+
+You should now have an internal.bin and an external.bin file
+
+### Section II - Install
+
+1. Open [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) in a chromium-based browser
+2. Hold the 6 key on your numworks and press the reset button
+3. You should now see the Epsilon bootloader interface
+4. Select `external.bin` in WebDFU
+5. Click "flash external"
+6. Once flashing is done, press the reset button on your Numworks
+
+You should now see version 18.2.0 in Settings > About.
+
+:::caution
+
+If it is not the case or your Numworks doesn't boot, you can only use an [alternate method](../n0110-is-locked#alt-methods).
+
+:::
diff --git a/docs/unlock/phi/phi.md b/docs/unlock/phi/phi.md
new file mode 100644
index 00000000..7d6ef513
--- /dev/null
+++ b/docs/unlock/phi/phi.md
@@ -0,0 +1,81 @@
+---
+title: "Installing Phi"
+sidebar_position: 3
+pagination_next: unlock/n0110-unlocked
+---
+
+### Required Reading
+
+Phi has multiple entrypoints (method of launching).
+The exploit used at the moment is compatible with Epsilon 16.3.0 trough 18.2.0.
+
+### What You Need
+
+- A chromium-based browser (we recommend using [chromium](https://www.chromium.org/chromium-projects/) directly)
+- The [Phi Installer](https://phi.getomega.dev/)
+
+### Section I - Installing Phi
+
+1. Power on your device
+2. Plug your device to a computer
+3. Open Chromium
+4. Go to the [Phi Installer](https://phi.getomega.dev/)
+5. Click "Connect to Numworks calculator" and select your calculator
+6. The calculator will show a message reading "Third party applications"
+7. Press Back
+
+### Section II - Running Phi
+
+1. Scroll down in the apps list and select "Phi Installer"
+2. Press OK
+3. The screen should blink and you should see a screen similar to this one:
+
+![Phi launch screen](/img/phi-launch.png)
+
+:::info
+If the screen turns Yellow, the version or Epsilon you're using isn't yet supported. You may need to [change your version](/docs/unlock/phi/check-version-change-eligibility).
+:::
+
+:::caution
+If the screen turns Red, the exploit failed. Reset the calculator and try again. If it doesn't work the second time, please join the [Omega Discord](https://discord.gg/X2TWhh9).
+:::
+
+### Section III - Unlocking the calculator
+
+We are now going to unlock the internal flash and remove the write protection:
+
+1. Press 1 to unlock the internal flash.
+2. Press OK to confirm
+3. You should see something like this :
+
+![Phi unlock screen](/img/phi-unlock.png)
+
+The "Reset RDP" stage can take a bit of time. You'll be put back on the main menu after a second, when the unlocking is done.
+
+### Section IV - Erasing the internal flash
+
+Removing the write protection should have erased the internal flash, but we are going to do it again, just to be sure:
+
+1. Press 2 to reset the internal flash
+2. Press OK to confirm
+3. You should see something like this :
+
+![Phi erase screen](/img/phi-erase.png)
+
+The "Erase flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the erasing is done.
+
+### Section V - Installing a custom bootloader
+
+1. Press 3
+2. Press OK to confirm
+3. You should see something like this :
+
+![Phi launch screen](/img/phi-write.png)
+
+The "Write flash" stage can take a bit of time. You'll be put back on the main menu after a second, when the flashing is done.
+
+Press 4, then OK. You should now boot back into Epsilon.
+
+:::info
+If you don't boot back into Epsilon, don't worry, installing a Custom OS will fix it later.
+:::
diff --git a/docs/unlock/what-to-do-locked.md b/docs/unlock/what-to-do-locked.md
new file mode 100644
index 00000000..b2cafd02
--- /dev/null
+++ b/docs/unlock/what-to-do-locked.md
@@ -0,0 +1,28 @@
+---
+sidebar_position: 20
+title: "Cannot unlock your calculator ?"
+pagination_next: null
+pagination_prev: intro
+---
+
+### Introduction
+
+If you are here it's probably because your calculator can't be unlocked or you don't wont to deeply modify it. There is no shame about that.
+There are still some things that Epsilon allows you to do.
+
+### Python scripts
+
+Still good to mention, you can get python games on your calculator, you can find them on [Numworks' Workshop](https://my.numworks.com/python/). To install them just follow the instructions
+
+### External apps
+
+Since Epsilon 16 for n0110, or Epsilon 20 for n0120, you can install custom apps, they aren't as powerful as Omega ones but they are good. Find them on [Nwagyu](https://www.nwagyu.com/).
+There is [a page explaining how to install the apps](https://www.nwagyu.com/pages/how-to/) with also a way to have more space for apps.
+Also when you enable exam mode or press "reset" they will be disabled
+
+### Userland
+
+Epsilon is still partially open-source, you can modify the code to create your own version and install it, however it's userland only and if you reset it will be removed and you are back to stock. You will also have a popup telling you that you are running a modified software.
+Note that since Epsilon 16, sharing a modified version is illegal. You should never share the version you created yourself.
+
+[Numworks' instructions](https://www.numworks.com/resources/engineering/software/build/)
diff --git a/docusaurus.config.js b/docusaurus.config.js
index a8561d1a..7fb91f72 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -6,22 +6,22 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula');
/** @type {import('@docusaurus/types').Config} */
const config = {
- title: 'My Site',
- tagline: 'Dinosaurs are cool',
+ title: 'Numworks Guide',
+ tagline: 'Everything to take control of your calculator',
favicon: 'img/favicon.ico',
// Set the production url of your site here
- url: 'https://your-docusaurus-test-site.com',
+ url: 'https://guide.getomega.dev',
// Set the // pathname under which your site is served
// For GitHub pages deployment, it is often '//'
baseUrl: '/',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
- organizationName: 'facebook', // Usually your GitHub org/user name.
- projectName: 'docusaurus', // Usually your repo name.
+ organizationName: 'Omega-Numworks', // Usually your GitHub org/user name.
+ projectName: 'Omega-Guide', // Usually your repo name.
- onBrokenLinks: 'throw',
+ onBrokenLinks: 'warn',
onBrokenMarkdownLinks: 'warn',
// Even if you don't use internalization, you can use this field to set useful
@@ -29,9 +29,16 @@ const config = {
// to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'en',
- locales: ['en'],
+ locales: ['en', 'fr'],
},
+ // Activate Mermaid Graphs in Markdown
+ markdown: {
+ mermaid: true,
+ },
+ themes: ['@docusaurus/theme-mermaid'],
+
+
presets: [
[
'classic',
@@ -41,9 +48,8 @@ const config = {
sidebarPath: require.resolve('./sidebars.js'),
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
- editUrl:
- 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
},
+ /*
blog: {
showReadingTime: true,
// Please change this to your repo.
@@ -51,6 +57,7 @@ const config = {
editUrl:
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
},
+ */
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
@@ -64,52 +71,46 @@ const config = {
// Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',
navbar: {
- title: 'My Site',
+ title: 'Numworks Guide',
logo: {
alt: 'My Site Logo',
- src: 'img/logo.svg',
+ src: 'img/favicon.ico',
},
items: [
{
type: 'docSidebar',
sidebarId: 'tutorialSidebar',
position: 'left',
- label: 'Tutorial',
+ label: 'Guide',
},
- {to: '/blog', label: 'Blog', position: 'left'},
+// {to: '/blog', label: 'Blog', position: 'left'},
{
- href: 'https://github.com/facebook/docusaurus',
+ href: 'https://github.com/Omega-Numworks/Omega-Guide',
label: 'GitHub',
position: 'right',
},
+ {
+ type: 'localeDropdown',
+ position: 'right',
+ },
+
],
},
footer: {
style: 'dark',
links: [
- {
- title: 'Docs',
- items: [
- {
- label: 'Tutorial',
- to: '/docs/intro',
- },
- ],
- },
{
title: 'Community',
items: [
+ /*
{
- label: 'Stack Overflow',
- href: 'https://stackoverflow.com/questions/tagged/docusaurus',
+ label: 'Blog',
+ href: '/blog',
},
+ */
{
label: 'Discord',
- href: 'https://discordapp.com/invite/docusaurus',
- },
- {
- label: 'Twitter',
- href: 'https://twitter.com/docusaurus',
+ href: 'https://discord.gg/X2TWhh9',
},
],
},
@@ -117,17 +118,17 @@ const config = {
title: 'More',
items: [
{
- label: 'Blog',
- to: '/blog',
+ label: 'GitHub',
+ href: 'https://github.com/Omega-Numworks/Omega-Guide',
},
{
- label: 'GitHub',
- href: 'https://github.com/facebook/docusaurus',
+ label: 'Credits',
+ href: '/docs/credits',
},
],
},
],
- copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
+ copyright: `Copyright © ${new Date().getFullYear()} Omega Community, Built with Docusaurus.`,
},
prism: {
theme: lightCodeTheme,
diff --git a/i18n/fr/code.json b/i18n/fr/code.json
new file mode 100644
index 00000000..cbfac4b2
--- /dev/null
+++ b/i18n/fr/code.json
@@ -0,0 +1,336 @@
+{
+ "theme.ErrorPageContent.title": {
+ "message": "Cette page a planté.",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.NotFound.title": {
+ "message": "Page introuvable",
+ "description": "The title of the 404 page"
+ },
+ "theme.NotFound.p1": {
+ "message": "Nous n'avons pas trouvé ce que vous recherchez.",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "Veuillez contacter le propriétaire du site qui vous a lié à l'URL d'origine et leur faire savoir que leur lien est cassé.",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.admonition.note": {
+ "message": "remarque",
+ "description": "The default label used for the Note admonition (:::note)"
+ },
+ "theme.admonition.tip": {
+ "message": "astuce",
+ "description": "The default label used for the Tip admonition (:::tip)"
+ },
+ "theme.admonition.danger": {
+ "message": "danger",
+ "description": "The default label used for the Danger admonition (:::danger)"
+ },
+ "theme.admonition.info": {
+ "message": "info",
+ "description": "The default label used for the Info admonition (:::info)"
+ },
+ "theme.admonition.caution": {
+ "message": "attention",
+ "description": "The default label used for the Caution admonition (:::caution)"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "Retour au début de la page",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.blog.archive.title": {
+ "message": "Archive",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "Archive",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "Pagination de la liste des articles du blog",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "Nouvelles entrées",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "Anciennes entrées",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "Pagination des articles du blog",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "Article plus récent",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "Article plus ancien",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.blog.post.plurals": {
+ "message": "Un article|{count} articles",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} tagués avec « {tagName} »",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "Voir tous les tags",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "Basculer entre le mode sombre et clair (actuellement {mode})",
+ "description": "The ARIA label for the navbar color mode toggle"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "mode sombre",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "mode clair",
+ "description": "The name for the light color mode"
+ },
+ "theme.docs.breadcrumbs.navAriaLabel": {
+ "message": "Fil d'Ariane",
+ "description": "The ARIA label for the breadcrumbs"
+ },
+ "theme.docs.DocCard.categoryDescription": {
+ "message": "{count} éléments",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "Pages de documentation",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "Précédent",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "Suivant",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "Un document tagué|{count} documents tagués",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged} avec \"{tagName}\"",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "Version: {versionLabel}"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "Ceci est la documentation de la prochaine version {versionLabel} de {siteTitle}.",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "Ceci est la documentation de {siteTitle} {versionLabel}, qui n'est plus activement maintenue.",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "Pour une documentation à jour, consultez la {latestVersionLink} ({versionLabel}).",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "dernière version",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "Éditer cette page",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "Lien direct vers {heading}",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": " le {date}",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": " par {user}",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "Dernière mise à jour{atDate}{byUser}",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "Versions",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "Tags :",
+ "description": "The label alongside a tag list"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Fermer",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "Navigation article de blog récent",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "Copié",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "Copier le code",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "Copier",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.CodeBlock.wordWrapToggle": {
+ "message": "Activer/désactiver le retour à la ligne",
+ "description": "The title attribute for toggle word wrapping button of code block lines"
+ },
+ "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": {
+ "message": "Plier/Déplier la catégorie '{label}' de la barre latérale",
+ "description": "The ARIA label to toggle the collapsible sidebar category"
+ },
+ "theme.NavBar.navAriaLabel": {
+ "message": "Main",
+ "description": "The ARIA label for the main navigation"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "Langues",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "Sur cette page",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.blog.post.readMore": {
+ "message": "Lire plus",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "En savoir plus sur {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.docs.breadcrumbs.home": {
+ "message": "Page d'accueil",
+ "description": "The ARIA label for the home page in the breadcrumbs"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "Une minute de lecture|{readingTime} minutes de lecture",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.sidebar.navAriaLabel": {
+ "message": "Docs sidebar",
+ "description": "The ARIA label for the sidebar navigation"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "Réduire le menu latéral",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "Réduire le menu latéral",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+ "message": "Fermer la barre de navigation",
+ "description": "The ARIA label for close button of mobile sidebar"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "← Retour au menu principal",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+ "message": "Ouvrir/fermer la barre de navigation",
+ "description": "The ARIA label for hamburger menu button of mobile navigation"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "Déplier le menu latéral",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "Déplier le menu latéral",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "Réessayer",
+ "description": "The label of the button to try again rendering when the React error boundary captures an error"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "Aller au contenu principal",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Tags",
+ "description": "The title of the tag list page"
+ },
+ "home.page.tagline": {
+ "message": "Tout pour prendre le contrôle de votre calculatrice"
+ },
+ "home.page.cfw.title": {
+ "message": "OS Custom"
+ },
+ "home.page.cfw.text1": {
+ "message": "Les OS Custom sont des modifications logicielles pour la Numworks. Ces modifications vous permettent de faire tout ce qu'il est possible physiquement avec la Numworks, et pas seulement ce que Numworks décide ce qu'il est possible de faire avec son matériel"
+ },
+ "home.page.cfw.text2": {
+ "message": "Les utilisation communes des OS Custom sont:"
+ },
+ "home.page.cfw.possibilities.1": {
+ "message": "Executer des logiciels et jeux fait-maison (Homebrew) fait ou portés sur la Numworks"
+ },
+ "home.page.cfw.possibilities.2": {
+ "message": "Installer des applications comme des émulateurs"
+ },
+ "home.page.cfw.possibilities.3.part1": {
+ "message": "Installer "
+ },
+ "home.page.cfw.possibilities.3.part2": {
+ "message": ", un logiciel de calcul formel (CAS) très avancé"
+ },
+ "home.page.cfw.possibilities.4.part1": {
+ "message": "Installer "
+ },
+ "home.page.cfw.possibilities.4.part2": {
+ "message": "d'autres OS Custom"
+ },
+ "home.page.cfw.possibilities.4.part3": {
+ "message": ", comme "
+ },
+ "home.page.cfw.possibilities.4.part4": {
+ "message": " ou "
+ },
+ "home.page.whatContent.title": {
+ "message": "Que contient ce guide"
+ },
+ "home.page.whatContent.text": {
+ "message": "Ce guide va expliquer comment:"
+ },
+ "home.page.whatContent.list.1": {
+ "message": "Débloquer votre calculatrice si besoin"
+ },
+ "home.page.whatContent.list.2": {
+ "message": "Installer un OS Custom sur votre calculatrice"
+ },
+ "home.page.whatContent.list.3": {
+ "message": "Installer un bootloader customisé"
+ },
+ "home.page.whatKnow.title": {
+ "message": "Qu'est ce que j'ai besoin de savoir avant de commencer ?"
+ },
+ "home.page.whatKnow.text1": {
+ "message": "Les méthodes utilisées ici sont à leur débuts. Il y a une petite chance que ces méthodes briquent votre calculatrice. Nous ne sommes dans aucun cas responsable de tout problème lié à votre calculatrice."
+ },
+ "home.page.whatKnow.text2": {
+ "message": "Ce guide est compatible avec tout les modèles de calculatrices Numworks vendus"
+ },
+ "home.page.goto.guide": {
+ "message": "Démarrer"
+ }
+}
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current.json b/i18n/fr/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 00000000..d9790511
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,38 @@
+{
+ "version.label": {
+ "message": "Next",
+ "description": "The label for version current"
+ },
+ "sidebar.tutorialSidebar.category.Hardware method": {
+ "message": "Méthode Hardware",
+ "description": "The label for category Hardware method in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Hardware method.link.generated-index.description": {
+ "message": "Débloquer votre calculatrice via une méthode Hardware",
+ "description": "The generated-index page description for category Hardware method in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Phi": {
+ "message": "Phi",
+ "description": "The label for category Phi in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Phi.link.generated-index.description": {
+ "message": "Débloquez votre calculatrice facilement avec Phi",
+ "description": "The generated-index page description for category Phi in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Unlock before installation": {
+ "message": "Débloquer avant installation",
+ "description": "The label for category Unlock before installation in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Unlock before installation.link.generated-index.description": {
+ "message": "Comment débloquer sa Numworks pour installer un OS Custom",
+ "description": "The generated-index page description for category Unlock before installation in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Installing an OS": {
+ "message": "Installer un OS",
+ "description": "The label for category Custom OS in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Installing an OS.link.generated-index.description": {
+ "message": "Qu'est-il possible avec un OS Custom ?",
+ "description": "The generated-index page description for category Custom OS in sidebar tutorialSidebar"
+ }
+}
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md
new file mode 100644
index 00000000..8cd3156a
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/choose-a-cfw.md
@@ -0,0 +1,19 @@
+---
+title: "Choisir un OS Custom"
+sidebar_position: 1
+pagination_next: null
+pagination_prev: null
+---
+
+:::info
+
+Vous avez besoin d’une calculatrice débloquée. [Pour la débloquer continuez ici](../intro)
+
+:::
+
+Il y a plusieurs OS Custom que vous pouvez installer sur votre calculatrice, la plupart s’installent de la même manière. En voici certains
+
+| OS | Avantages |
+|-----|-----------|
+| [Omega](/docs/cfw/omega) | L'OS Custom le plus populaire pour Numworks, basé sur Epsilon 15.5.0. Il restaure le calcul symbolique, permet l'installation d'applications externes, et ajoute des libraries Python |
+| [Upsilon](/docs/cfw/upsilon) | Basé sur Omega, Upsilon apporte plus de fonctions et de confort comparé à Omega, comme une liseuse LaTeX, plus de stockage pour les scripts Python, et un meilleur bootloader |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/install-epsilon-from-softloader.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/install-epsilon-from-softloader.md
new file mode 100644
index 00000000..9fe84fe9
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/install-epsilon-from-softloader.md
@@ -0,0 +1,48 @@
+---
+title: "Installer Epsilon depuis le softloader"
+sidebar_position: 4
+pagination_next: null
+pagination_prev: cfw/choose-a-cfw
+---
+
+:::danger
+Suivre ce guide peut mettre en danger votre calculatrice. Installer Epsilon de la mauvaise manière sur votre calculatrice pourrait la bloquer.. Suivez **STRICTEMENT** ce qui est dir sur cette page pour être sur que votre calculatrice n'est pas en danger
+:::
+
+:::caution
+La dernière version d'Epsilon pourrait ne pas être sûre, vérifiez la dernière version [pour n0110](https://my.numworks.com/firmwares/n0110/stable.json) (connexion au compte Numworks nécessaire). Dernière version sûre connue: **21.3.0**
+:::
+
+:::info
+Cette page est inutile si vous avez une n0100, étant donné que vous pouvez changer entre un CFW et Epsilon sans bloquer votre calculatrice. La n0100 n'est pas compatible avec les bootloader custom.
+:::
+
+### Lecture obligatoire
+
+Nous allons maintenant installer Epsilon sur un slot de la calculatrice, en considérant que vous avez un bootloader qui le permet
+
+### Ce dont vous avez besoin
+
+- Un PC avec un navigateur basé Chromium (on recommande d'utiliser directement [chromium](https://www.chromium.org/chromium-projects/))
+- Un bootloader custom compatible installé (si vous ne savez pas, regardez [cette page](/docs/cfw/choose-a-cfw))
+
+### Section I - Ouvrir le bootloader
+
+Si votre CFW inclut un bootloader qui permet d'installer un firmware depuis celui-ci, vous devriez donc ouvrir le bootloader et le rendre prêt à installer quoi que ce soit. De l'aide eut être trouvée sur [cette page](/docs/cfw/choose-a-cfw)
+
+### Section II - Installation
+
+1. Vérifiez que votre calculatrice est dans le bootloader, prête à installer quoi que ce soit. Elle **NE DOIT PAS** être en mode Recovery (écran noir + LED rouge) étant donné que ça permettrait à Numworks de bloquer votre calculatrice
+2. Ouvrez la [page de mise à jour Numworks](https://numworks.com/update)
+3. Suivez les instructions mais si il vous demande de faire quoi que ce soit sur votre calculatrice, ne le faites pas à moins que ce soit la connecter à votre PC. Le site devrait voir la version 0.0.0
+4. À la fin l'installer sera bloqué et pourrait donner une erreur, c'est car il ne peut pas redémarrer la calculatrice. Ne vous inquiétez pas Epsilon est installé, appuyez juste sur reset et tout est bon
+
+Maintenant vous avez Epsilon avec un bootloader custom donc votre calculatrice n'est pas bloquée
+
+Epsilon a normalement été installé sur les deux slots. Donc si vous aviez un CFW, il a été effacé, seul le bootloader reste. Pour le réinstaller vous pouvez le faire normalement depuis le bootloader ou en mode Recovery, faites juste attention de ne pas installer Epsilon à la place.
+
+Il est recommandé de garder votre CFW en Slot A.
+
+### GG
+
+Vous avez maintenant Epsion et un CFW en même temps, Epsilon sur un slot, votre CFW sur l'autre. Vous pouvez maintenant changer quand vous voulez, cela fonctionne différemment en fonction de votre CFW mais l'objectif est juste de changer entre les deux slots.
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md
new file mode 100644
index 00000000..fd2413b1
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/omega.md
@@ -0,0 +1,73 @@
+---
+title: "Omega"
+sidebar_position: 2
+pagination_next: null
+pagination_prev: cfw/choose-a-cfw
+---
+
+:::info
+Vous avez besoin d'une calculatrice débloquée. [Pour la débloquer continuez ici](/docs/intro)
+:::
+
+Cette page expliquera comment installer Omega, en considérant que vous avez une calculatrice débloquée
+
+### Ce dont vous avez besoin
+
+- Un PC avec un navigateur basé Chromium (on recommande d'utiliser directement [chromium](https://www.chromium.org/chromium-projects/))
+- Une calculatrice Numworks débloquée
+
+### Section I - Préparer le mode Recovery
+
+si votre modèle est n0110, entrez le mode Recovery en mainteant "6" et en appuyant sur "reset"
+si votre modèle est n0110, entrez le mode Recovery en branchant votre calculatrice et en appuyant sur "reset"
+
+### Section II - Installation d'Omega
+
+1. Ouvrez [le site web d'Omega](https://getomega.dev/install)
+2. Cloquez sur "Récupération" et sélectionnez "STM32 BOOTLOADER"
+3. Attendez un peu jusqu'a ce que la calculatrice affiche "Recovery Mode" sur l'écran
+4. Si la calculatrice n'est pas connectée automatiquement, cliquez sur "Détecter la calculatrice" et sélectionnez "Numworks Calculator"
+5. Maintenant vous pouvez cliquer sur "Installer Omega" et au bout de quelques secondes, Omega devrait être installé sur votre calculatrice.
+
+### Section III - Comment utiliser votre nouvelle calculatrice (pas pour n0100)
+
+Il y a de nouvelles fonctions sur votre calculatrice, vous devez les connaitre
+Il y a un nouveau système de "Slot". Votre calculatrice a 2 slots et peut stocker 2 firmwares. ils ne peuvent pas fonctionner en même temps mais en utilisant reset vous pouvez passer de l'un à l'autre:
+- Maintenez 1 et appuyez sur reset pour lancer le Slot A (contient Omega par défaut)
+- Maintenez 2 et appuyez sur reset pour lancer le Slot B (peut être vite ou contenir Epsilon)
+- Maintenez 4 et appuyez sur reset pour ouvrir le bootloader, vous serez en mesure de voir quel slot contient quel firmware et vous pourrez installer n'importe quel firmware sans bloquer la calculatrice.
+- Vous ne pouvez pas lancer un autre firmware si vous activez le mode examen, vous devez le désactiver pour le faire
+
+#### Section IV - Comment mettre à jour ?
+
+Pour mettre à jour Omega, ouvrez le bootloader en maintenant 4 et en appuyant sur reset, branchez votre calculatrice au PC, ouvrez le site web d'Omega, et installez-le normalement.
+
+Pour mettre à jour le bootloader, démarrez en mode recovery en cliquant sur reset en maintenant la touche 6, branchez votre calculatrice au PC, ouvrez le site web d'Omega, connectez la calculatrice en mode recovery, et installez Omega de cette manière.
+
+### Fonctions facultatives
+
+Maintenant qu'Omega est installé, il y a certaines choses que vous pouvez faire:
+
+#### Applis externes (pas pour n0100)
+
+Omega supporte les applis externes, il y en a quelques unes mais elles sont utiles. Voici comment les installer:
+1. Ouvrez la [page des applis externes](https://external.getomega.dev/)
+2. Sélectionnez les applis que vous voulez installer
+3. Ajoutez n'importe quel fichier que vous voulez utiliser avec vos applis
+4. Ajoutez un fond d'écran si vous le souhaitez
+5. Activez le support des icones si vous voulez de jolies icones sur vos applis
+6. Cliquez sur installer
+
+#### Installer Epsilon (pas pour n0100)
+
+Vous pouvez installer Epsilon sur bootloader sans bloquer le calculatrice.
+
+Allez voir [Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader)
+
+#### Créer votre propre version
+
+Omega est open-source, vous pouvez récupérer le code et l'utiliser comme vous le souhaitez. Vous trouverez tout sur le [repo github d'Omega](https://github.com/Omega-Numworks/Omega)
+
+### Fini
+
+Vous avez maintenant Omega installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/)
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md
new file mode 100644
index 00000000..63882b0b
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/cfw/upsilon.md
@@ -0,0 +1,89 @@
+---
+title: "Upsilon"
+sidebar_position: 3
+pagination_next: null
+pagination_prev: cfw/choose-a-cfw
+---
+
+:::info
+Vous avez besoin d'une calculatrice débloquée. [Pour la débloquer continuez ici](/docs/intro)
+:::
+
+tte page expliquera comment installer Upsilon, en considérant que vous avez une calculatrice débloquée
+
+### Ce dont vous avez besoin
+
+- Un PC avec un navigateur basé Chromium (on recommande d'utiliser directement [chromium](https://www.chromium.org/chromium-projects/))
+- Une calculatrice Numworks débloquée
+
+### Section I - Préparer le mode Recovery
+
+Si votre modèle est n0110, entrez le mode Recovery en mainteant "6" et en appuyant sur "reset"
+Si votre modèle est n0110, entrez le mode Recovery en branchant votre calculatrice et en appuyant sur "reset"
+
+### Section II - Installation d'Upsilon
+
+1. Ouvrez [le site web d'Upsilon](https://getupsilon.web.app/install)
+2. Cliquez sur "Mode de récupération" et sélectionnez "STM32 BOOTLOADER"
+3. Attendez un peu jusqu'a ce que la calculatrice affiche "Recovery Mode" sur l'écran
+4. Si la calculatrice n'est pas connectée automatiquement, cliquez sur "Connecter" et sélectionnez "Numworks Calculator"
+5. Sélectionnez vos paramètres comme le thème. Pour le slot, si vous ne savez pas lequel choisir, sélectionnez "A"
+6. Maintenant vous pouvez cliquer sur "Installer Upsilon" et au bout de quelques secondes, Upsilon devrait être installé sur votre calculatrice.
+
+:::tip
+Upsilon a tendance à planter quand vous le démarrez alors que la calculatrice est connectée à un PC. Déconnectez la avant de démarrer.
+:::
+
+### Section III - Comment utiliser votre nouvelle calculatrice (pas pour n0100)
+
+Il y a de nouvelles fonctions sur votre calculatrice, vous devez les connaitre
+Il y a un nouveau système de "Slot". Votre calculatrice a 2 slots et peut stocker 2 firmwares. ils ne peuvent pas fonctionner en même temps mais en utilisant reset vous pouvez passer de l'un à l'autre:
+Vous avez maintenant un menu au démarrage, il vous permet de faire beaucoup de choses. Vous pouvez y accéder simplement en appuyant sur "reset".
+
+Dans ce menu vous pouvez:
+- Chosir votre slot. Il y en a 3, 2 d'entre eux peuvent accepter un firmware classique, vous pouvez les sélectionner en appuyant sur 1 pour le Slot A ou 3 pour Slot B. Le 3ème, sélectionné en appuyant sur 2, est conçu pour des cas très spécifiques, la plupart des gens n'en ont pas besoin.
+- Ouvrir "Install mode". Il y a 2 modes: Flash Slots, qui permet d'installer n'importe quel autre firmware en toute sécurité, et Flash Bootloader, qui permer de mettre à jour le bootloader en lançant le mode Recovery (il pourrait ne pas marcher, pour accéder au mide Recovery vous pouvez toujours utiliser 6 + reset)
+
+Notez aussi qu'une fois votre calculatrice branchée à un PC, (a moins qu'elle soit en mode Recovery) votre calculatrice sera nommée "Upsilon Calculator" ou "Upsilon Bootloader" au lieu de "NumWorks Calculator".
+
+#### Section IV - Comment mettre à jour ?
+
+Pour mettre à jour Upsilon, ouvrez le "Install Mode" puis "Flash Slots" (voir ci-dessus comment faire), branchez votre calculatrice au PC, ouvrez le site web d'Upsilon, et installez-le normalement.
+
+Pour mettre à jour le bootloader, démarrez en mode recovery en cliquant sur reset en maintenant la touche 6, branchez votre calculatrice au PC, ouvrez le site web d'Upsilon, connectez la calculatrice en mode de récupération, et installez Upsilon de cette manière.
+
+### Fonctions facultatives
+
+Maintenant qu'Upsilon est installé, il y a certaines choses que vous pouvez faire:
+
+#### Applis externes (pas pour n0100)
+
+Upsilon supporte les applis externes, il y en a quelques unes mais elles sont utiles. Voici comment les installer:
+1. Ouvrez la [page des applis externes](https://upsilonnumworks.github.io/Upsilon-External/)
+2. Sélectionnez les applis que vous voulez installer
+3. Ajoutez n'importe quel fichier que vous voulez utiliser avec vos applis
+4. Ajoutez un fond d'écran si vous le souhaitez
+5. Cliquez sur installer
+
+#### Lisuse (pas pour n0100)
+
+Upsilon a une appli Liseuse. Elle peut afficher des fichiers texte et des expressions LaTeX.
+
+N'importe quel fichier avec l'extension `.txt` peut être lu, mais si vous voulez utiliser des expressions LaTex, vous devez changer l'extension en `.urt`. Le contenu du fichier reste le même mais Upsilon va afficher les expressions LaTeX
+Toutes les expressions LaTeX sont documentées [ici](https://getupsilon.web.app/doc/reader).
+
+Pour transférer votre fichier, envoyez-le avec la [page des applis externes](https://upsilonnumworks.github.io/Upsilon-External/).
+
+#### Installer Epsilon (pas pour n0100)
+
+Vous pouvez installer Epsilon sur bootloader sans bloquer le calculatrice.
+
+Allez voir [Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader)
+
+#### Créer votre propre version
+
+Upsilon est open-source, vous pouvez récupérer le code et l'utiliser comme vous le souhaitez. Vous trouverez tout sur le [repo github d'Upsilon](https://github.com/UpsilonNumworks/Upsilon)
+
+### Fini
+
+Vous avez maintenant Upsilon installé sur votre calculatrice. Vous pouvez ajouter des scripts Python de la même manière qu'avant depuis le [workshop de Numworks](https://my.numworks.com/python/)
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/credits.md b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md
new file mode 100644
index 00000000..58680fbc
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/credits.md
@@ -0,0 +1,28 @@
+---
+sidebar_position: 99
+title: "Crédits"
+pagination_next: null
+pagination_prev: null
+---
+
+:::note
+Un grand merci à:
+- M4x1m3, le créateur original du guide
+- Rathmox d'avoir complété le guide.
+- WonderHunter pour la traduction en Français.
+- Rathmox and BloomyInDev d'avoir porté le guide à [Docusaurus](https://docusaurus.io/)
+:::
+
+Si nous vous avons oublié ici, [contactez-nous](https://github.com/Omega-Numworks/Omega-Guide) et nous vous ajouterons dans la liste des contributeurs
+
++ AngeDieu
++ BloomyInDev
++ darthnithin
++ hdboye
++ M4x1m3
++ orkeilius
++ Rathmox
++ siim0n
++ Syycorax
++ TomVdt
++ WonderHunter
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/faq.md b/i18n/fr/docusaurus-plugin-content-docs/current/faq.md
new file mode 100644
index 00000000..fcca012f
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/faq.md
@@ -0,0 +1,27 @@
+---
+sidebar_position: 98
+title: "FAQ"
+pagination_next: null
+pagination_prev: null
+---
+
+# Pre-Installation FAQ
+
+**Q:** *Ce guide annulera-t-il ma garantie ?*
+
+**A:** Non, du moins pas en Europe. Il s'agit d'une modification logicielle, si Numworks vous refuse une demande de garantie légitime après cela, poursuivez-les en justice.
+
+**Q:** *Quel est le risque de jailbreaker ma Numworks ?*
+
+**A:** Les bricks matériels complets sont quasi-impossibles. Le pire que vous puissiez obtenir est une calculatrice avec protection en écriture activée avec une mémoire flash vide, qui peut toujours être résolu avec un mod matériel, mais la possibilité d'avoir ce genre de problème est très très peu probable.
+
+**Q:** *Puis-je le faire sans ordinateur (par exemple, un téléphone Android) ?*
+
+**A:** Tout ce dont vous avez besoin est un appareil capable d'exécuter un navigateur Web prenant en charge WebUSB.
+Les téléphones Android peuvent être utilisés avec un câble USB OTG.
+
+# Post-Installation FAQ
+
+**Q:** *Est-il sûr de mettre à jour Epsilon tout en ayant un bootloader custom installé ?*
+
+**A:** Pour le moment, le programme d'installation de Numworks ne vérifie pas les bootloaders modifiés, ni Epsilon, donc oui. (À moins que vous n'ayez pas un bootloader ce qui n'est probablement pas le cas)
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md
new file mode 100644
index 00000000..8f62073e
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/flowchart.md
@@ -0,0 +1,56 @@
+---
+sidebar_position: 50
+title: "Plan du site"
+pagination_next: null
+pagination_prev: null
+---
+
+```mermaid
+flowchart TD
+ calc_unlocked([Votre calculatrice est débloquée, youpi!])
+ calc_locked_no_modif([Ce que vous pouvez faire sans un Custom OS])
+ start([Start]) --> want_cfw[Vous voulez un Custom OS ?]
+ style start stroke:#00f500,stroke-width:4px
+ want_cfw --Non--> calc_locked_no_modif
+ want_cfw --->|Oui| model_number[Quel modèle de Numworks ?]
+
+
+ model_number --N0100--> calc_unlocked
+ model_number ---->|N0110| check_version_n0110
+ model_number ---->|N0115 ou N0120| calc_locked_new_calcs
+ model_number --Other--> goto_discord([Aller sur le Discord Omega])
+
+ click model_number "./intro"
+ click calc_locked_no_modif "./what-to-do-locked"
+ click calc_unlocked "./cfw/choose-a-cfw"
+ click goto_discord "https://discord.gg/X2TWhh9"
+
+ subgraph n0110 [Branche N0110]
+ style n0110 fill:transparent,stroke-width:4px
+ calc_locked_n0110([Votre calculatrice est bloquée, mais vous pouvez faire d'autres choses avec])
+ calc_unlocked_n0110([Votre calculatrice est débloquée, youpi!])
+ check_version_n0110[Quelle version ?]
+ check_version_n0110 --11.2.0 à 16.2.0--> calc_unlocked_n0110
+ check_version_n0110 ==16.3.0 à 16.4.2\n17.0.0 à 18.2.0==> phi[Utilisez Phi]
+ check_version_n0110 --16.4.3 ou 18.2.3--> install_18_2_0[Installez Epsilon 18.2.0]
+ check_version_n0110 --19.0.0 à 21.3.0--> downgrade_check[Verifiez l'éligibilité au downgrade]
+ downgrade_check --Eligible--> install_18_2_0
+ downgrade_check --No éligible--> downgrade_fail(( )) --Ouvrir la calculatruce--> hardware_method[Suivez la méthode hardware]
+ downgrade_fail --Ne veut pas ouvrir la calculatrice--> calc_locked_n0110
+ install_18_2_0 --> phi
+ phi & hardware_method --> calc_unlocked_n0110
+
+ click check_version_n0110 "./unlock/n0110-is-locked"
+ click downgrade_check "./unlock/phi/check-version-change-eligibility"
+ click install_18_2_0 "./unlock/phi/install-epsilon-18-2-0"
+ click phi "./unlock/phi"
+ click hardware_method "./unlock/hardware/n0110-hardware-unlock"
+ click calc_locked_n0110 "./what-to-do-locked"
+ click calc_unlocked_n0110 "./cfw/choose-a-cfw"
+
+ end
+
+ calc_locked_new_calcs([Votre calculatrice est bloquée, mais vous pouvez faire d'autres choses avec])
+
+ click calc_locked_new_calcs "./what-to-do-locked"
+```
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md
new file mode 100644
index 00000000..43816f42
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/how-does-it-work.md
@@ -0,0 +1,95 @@
+---
+sidebar_position: 80
+title: "Comment ça marche ?"
+pagination_next: null
+pagination_prev: null
+---
+
+Cette page est faite pour expliquer comment fonctionne la calculatrice et ce qu'il se passe quand on la débloque
+Vous allez également en apprendre un peu sur l'histoire de la calculatrice
+
+### 1 - Comment la calculatrice est-elle conçue ?
+
+D'abord, sachez que le bouton Power de la calculatrice ne la met qu'en mode veille, au lieu de l'éteindre complètement. La calculatrice s'allume automatiquement quand la batterie est connectée. Le bouton reset au dos coupe simplement l'alimentation tant qu'il est maintenu. Quand vous le relachez, la calculatrice s'allume.
+
+Il y a actuellement 4 modèles de calculatrice Numworks: n0100, n0110, n0115, n0120.
+
+La calculatrice utilise un MCU (Microcontroller Unit) fait par STMicroelectronics pour tout faire.
+- Le MCU utilisé dans la n0100 est le [STM32F412](https://www.st.com/en/microcontrollers-microprocessors/stm32f412.html). Il a une partition de stockage, nommée "flash" car c'est de la mémoire flash.
+- Le MCU utilisé dans les n0110 et n0115 est le [STM32F730](https://www.st.com/en/microcontrollers-microprocessors/stm32f730r8.html). Il a 2 flashs. Nommées "interne" et "externe"
+- Le MCU utilisé dans la n0120 est le [STM32H725](https://www.st.com/en/microcontrollers-microprocessors/stm32h725-735.html). Il a également 2 flashs, mais est aussi plus puissant que celui de la n0110
+
+On peut donc faire 2 catégories:
+- n0100: Avec flash interne uniquement
+- n0110, n0115 et n0120: Avec flash interne et externe
+
+:::info
+Toutes les calculatrices, grâce au MCU, ont un mode Recovery. il est habituellement accédé en maintenant 6 pendant que la calculatrice démarre (sur la n0100 il doit être branché à un PC quand il démarre, vous n'avez pas besoin de maintenir 6). il est représenté par un écran noir avec la LED allumée en rouge. Mais si vous essayez, il se peut que cela ne fasse pas ça, nous comprendrons pourquoi après.
+Sur n0115, le mode Recovery n'est pas accessible comme ça.
+:::
+
+### 2 - Comment le matériel est-il utilisé ?
+
+Avec 1 flash, c'est facile de comprendre, tout est dans la flash, c'est le cas sur n0100. Mais avec 2 flashs, c'est plus compliqué:
+
+- La flash externe: Elle contient le firmware, ce que vous connaissez, l'interface, le programme de calcul, et tout ce que vous utilisez sur cette calculatrice.
+- La flash interne: Elle contient un petit programme fait pour démarrer ce qui est installé sur la flash externe. C'est la première chose exécutée par la calculatrice, si la flash interne est vide, la calculatrice ne peut pas démarrer, et la LED devient rouge.
+
+### 3 - Qu'est-ce qui est installé sur les flashs ?
+
+La flash interne est utilisée pour stocker un programme simple qui lance simplement le firmware installé sur la flash externe. Mais aujourd'hui, depuis Epsilon 16, c'est plus compliqué:
+
+Depuis Epsilon 16, la flash interne contient un bootloader utilisé pour bloquer la calculatrice.
+- **Comment c'est possible ?** Il vérifie que le firmware est signé par Numworks, s'il ne l'est pas, le bootloader ne lance pas le firmware.
+- **Le mode Recovery ne peut pas aider ?** Numworks y a pensé, ils ont configuré le MCU pour empêcher d'écrire dans la flash interne et ils ont mit un message pour dire qu'elle est en mode Recovery alors qu'en réalité, elle ne l'est pas.
+- **Pourquoi la n0100 n'est-elle pas bloquée ?** La n0100 n'a qu'une seule flash, et elle pourrait avoir besoin d'être mise à jour. Donc bloquer serait une mauvaise idée car ça empêcherait de mettre à jour sans des outils de déboguage spécifiques.
+
+:::info
+Maintenant que l'on sait comment Numworks utilise la calcuatrice, découvrons comment les firmwares custom l'utilisent.
+:::
+
+### 4 - Qu'est-ce qui change avec un OS Custom ?
+
+À l'origine, un OS Custom remplaçait seulement la flash externe. Pour contourner certaines limitations, certains OS Custom comme Omega et Delta ont comencé à changer la flash interne, mais ce n'était pas loin de ce que Numworks faisait à l'origine
+
+Delta a introduit les applis externes, qui ont été réutilisées dans Omega. Elles sont installées dans la flash externe avec le firmware. Un système similaire a été ajouté à Epsilon plus tard.
+
+Mais tout a changé quand les bootloaders custom ont été publiés en même temps que Phi.
+
+Beaucoup de bootloaders custom contiennent plus de fonctions comment permettre d'avoir 2 firmwares stockés sur la flash externe et démarrer l'un ou l'autre. Ainsi qu'empêcher d'écrire sur la flash interne depuis le firmware
+
+:::info
+Maintenant que vous comprenez comment fonctionne la flash interne, voyons comment Phi fonctionne
+:::
+
+### 5 - Comment Phi fontionne-t-il ?
+
+:::note
+Phi n'est **PAS** un programme ou un exploit qui permet directement de lancer un OS Custom et ne fait rien une fois que la calculatrice est débloquée.
+:::
+
+Phi est une appli qui peut débloquer les calculatrices fonctionnant sous Epsilon entre 16.3.0 et 18.2.0 (hors 16.4.3)
+
+Il peut être installé sur Epsilon et exploite un bug nommé [Screenhax (en anglais)](https://blog.mfriess.xyz/screenhax/) pour effacer la flash interne et écrire par dessus depuis Epsilon, ainsi que réactiver le mode Recovery.
+
+Il peut également installer un bootloader simple.
+
+Numworks a réglé ce bug en publiant Epsilon 18.2.3.
+
+### 6 - Donc, que se passe-t-il quand vous suivez le guide ?
+
+Le processus dans le guide est maintenant facile à comprendre:
+- sur n0100, on lance simplement le mode Recovery et on écrase la flash interne
+- sur n0110, on écrase la flash interne, débloque et réactive le mode Recovery pour installer ce que l'on veut sur les 2 flashs
+
+### 7 - Pourquoi la n0120 ne peut pas être débloquée ?
+
+La n0120 est dans un cas particulier:
+Elle peut être débloquée avec des modifications matérielles, mais la raison pour laquelle on ne dit pas comment le faire dans ce guide c'est car il n'y a aucun OS Custom que vous pouvez installer dessus.
+La n0120 a été publiée en premier avec Epsilon 16, mais une version patchés qui ne peut pas être débloquée avec Phi. Donc il n'y a aucune n0120 qui peut être débloquée sans matériel.
+
+Aussi, depuis Epsilon 16, Numworks a arrêté de donner les drivers pour le MCU, ces drivers sont nécessaires pour créer le bootloader. Les Développeurs peuvent les récupérer depuis Epsilon 15 pour n0100 et n0110, mais pour n0120, ils n'ont jamais été publiés (et ne peuvent pas être extraits d'Epsilon), donc ils doivent être développés depuis zéro ce qui est difficile et long. C'est pourquoi il n'y a pas de OS Custom pour n0120, et qu'on ne peut pas vous dire comment la débloquer
+
+:::info
+Maintenant vous comprenez tout sur comment le débloquage de calculatrice fonctionne.
+:::
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/intro.md b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md
new file mode 100644
index 00000000..da08a304
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/intro.md
@@ -0,0 +1,47 @@
+---
+sidebar_position: 1
+title: Commencer
+pagination_next: null
+pagination_prev: null
+---
+
+:::caution
+Lisez tout les pages (en incluant celle-ci!) avant de procéder
+:::
+
+**Avant de démarer ce guide, vous devez comprendre quelques termes utilisés tout au long de ce guide**
+
+#### Définitions
+
+Ce guide va utiliser certains noms, avant de commencer vous devez savoir à qui ces noms font référence:
+
+1. Epsilon: C'est le firmware vendu à l'origine avec la calculatrice, fait par Numworks. Après la version 16, ils ont commencé à verrouiller la calculatrice pour empêcher toute installation d'un OS Custom ([comprenez pourquoi ici](https://tiplanet.org/forum/viewtopic.php?f=97&t=24968)).
+2. OS Custom: Custom firmware, un firmware conçu pour remplacer Epsilon. Les plus courants sont Omega et Upsilon.
+3. Phi: C'est une appli conçue pour débloquer certaines calculatrices bloquées.
+4. Recovery mode ("STM32 DFU bootloader" ou "hwloader"): C'est un mode sur la calculatrice qui permet de changer n'importe quoi, et le mode que Numworks a bloqué. On y accède couramment en appuyant sur "reset" au dos de la calculatrice pendant que l'on maintient la touche "6" et il est reconnu lorsque vous obtenez un écran noir et que la LED devient rouge. C'est ce que vous devez obtenir à la fin de ce guide pour installer tout ce que vous voulez.
+5. Bootloader ("softloader"): C'est un menu auquel vous pouvez accéder de différentes manières, cela dépend de l'OS Custom que vous choisissez. Il vous permet de réinstaller le firmware et peut vous empêcher de bloquer votre calculatrice si vous la mettez à jour. Phi vous permet d'en installer un si vous le souhaitez
+
+:::info
+Si vous ne voulez pas profondément modifier votre calculatrice, [il y a toujours certaines choses que vous pouvez faire](what-to-do-locked)
+:::
+
+#### Préréquis
+
+- Calculatrice Numworks
+- Driver si vous avez Windows ou Linux: ouvrez la [page de récupération](https://numworks.com/rescue) sur le site de Numworks et elle va vous le donner et vous dire comment l'installer. **Ne branchez pas votre calculatrice pour être sur que vous ne la bloquiez pas**. Si vous avez macOS, vous n'en avez pas besoin.
+
+#### Vérification du modèle
+
+1. Retournez votre calculatrice.
+2. Sur son dos, il devrait y avoir une petite écriture, commençant par un `N`. Ceci est votre numéro de modèle.
+3. Si vous n'arrivez pas à lire cela :
+ 1. Allumez la calculatrice
+ 2. Allez dans l'application des paramètres
+ 3. Allez dans "à propos"
+ 4. Regardez l'ID FCC. Il doit se terminer par un des noms de modèle ci-dessous.
+
+| Modèle de calculatrice | Que faut-il faire ? |
+|------------------|----------------------------------------------------------------|
+| N0100 | [Votre calculatrice est déja dévérouillée, choisisez un OS Custom](cfw/choose-a-cfw) |
+| N0110 | [Vérifiez si votre calculatrice est verrouillée](unlock/n0110-is-locked) |
+| N0115 - N0120 | [Vous ne pouvez pas installer d'OS Custom dessus. Mais il y a toujours certaines choses que vous pouvez faire](what-to-do-locked) |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/restore-stock-firmware.md b/i18n/fr/docusaurus-plugin-content-docs/current/restore-stock-firmware.md
new file mode 100644
index 00000000..a174326a
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/restore-stock-firmware.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 10
+title: "Restaurer le firmware officiel"
+pagination_next: null
+pagination_prev: null
+---
+
+:::danger
+Restaurer votre calculatrice vers le firmware d'origine **VA LA BLOQUER** et vous ne pourrez plus jamais installer d'OS Custom dessus, à moins que vous utilisiez une méthode matérielle pour le redébloquer. Nous vous conseillons vivement d'utiliser le bootloader de n'importe quel OS Custom compatible et d'[Installer Epsilon depuis le Softloader](/docs/cfw/install-epsilon-from-softloader) pour toujours utiliser les dernières versions sans bloquer votre calculatrice.
+:::
+
+Cette page vous expliquera comment revenir au firmware d'origine, et donc bloquer votre calculatrice.
+
+1. Ouvrez [la page de restauration de Numworks](https://numworks.com/rescue)
+2. Mettez votre calculatrice en mode Recovery en maintenant 6 et en appuyant sur "reset" en même temps
+3. Branchez votre calculatrice a votre ordinateur
+4. Suivez les instructions pour restaurer le firmware d'origine.
+
+Vous avez maintenant une calculatrice avec le firmware d'origine.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md
new file mode 100644
index 00000000..4d53d606
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/troubleshooting.md
@@ -0,0 +1,150 @@
+---
+sidebar_position: 95
+title: "Dépannage"
+pagination_next: null
+pagination_prev: null
+---
+
+### Écran noir et LED rouge
+
+Tout va bien : un écran noir et une led rouge signifient que votre calculatrice est en mode Recovery, elle attend de recevoir un firmware, elle est donc débloquée.
+**ATTENTION : Dans ce mode, Si vous faites une mise à jour depuis le site de Numworks, vous allez faire une re-installation complète de la calculatrice avec la dernière version du système de gestion de Numworks. Vous allez alors verrouiller la calculatrice : les installations de Custom Firmwares tels que Omega ou Opsilon seront bloquées.**
+
+[Choisissez un OS Custom](/docs/cfw/choose-a-cfw) à installer sur votre calculatrice. (Si vous voulez installer Epsilon sans bloquer la calculatrice, installez d'abord à ce stade un OS Custom compatible, puis installer Epsilon en veillant à ne pas être en mode recovery)
+
+### Écran noir, cable jaune, et `numworks.com/rescue`
+
+C'est l'écran du bootloader de Numworks. Il s'affiche quand la calculatrice est verrouillée (blocage de l'installation des OS Custom) et que vous avez lancé le mode recovery en maintenant 6 et en appuyant sur reset. Il s'affiche également quand la calculatrice n'a pas pu démarrer.
+
+Si vous souhaitez débloquer votre calculatrice, n'allez pas sur le site `numworks.com/rescue`, mais suivez le guide à partir de [l'installation d'Epsilon 18.2.0](/docs/unlock/phi/install-epsilon-18-2-0).
+
+### Écran noir, rien d'autre
+
+Il y a 5 raisons possibles:
+- Votre calculatrice est en mode veille, appuyez sur le bouton power pour la rallumer.
+- Votre calculatrice est peut-être victime d'un bug, appuyez sur reset au dos.
+- Votre calculatrice est peut-être déchargée, essayez de la laisser charger quelques minutes.
+- La batterie est déconnectée, vous pourriez avoir besoin d'ouvrir votre calculatrice pour la rebrancher.
+- Si vous avec une n0100, vous êtes peut-être en mode Recovery, débranchez le cable, et appuyez sur reset au dos?.
+
+Si cela ne résout pas le problème, contactez Numworks.
+
+### Consommation de batterie élevée
+
+Il y a 2 raisons possibles:
+- Vous avez activé l'horloge dans les paramètres, certains firmwares en contiennent une. L'horloge consome beaucoup de batterie et il est fartement recommandé de la désactiver.
+- Votre calculatrice garde la LED verte. C'est un problème matériel qui fait penser à la calulatrice qu'elle est constemment en train de charger et donc batterie pleine alors que ce n'est pas le cas. Vous devriez contacter Numworks pour remplacer votre calculatrice.
+
+### Calculatrice non détectée
+
+Il ya plusieurs raisons possibles: Soit vous ne cliquez pas sur le bon bouton, soit le driver ou le fichier de configuration n'est pas installé sur Windows ou Linux
+
+Soyez sur d'utiliser le bon bouton, si votre calculatrice est en mode Recovery, appuyez sur le bouton "Récupération" et pas "Détecter la calculatrice".
+
+Pour récupérer le driver ouvrez la [page de récupération](https://numworks.com/rescue/) sur le site de Numworks et il va vous le donner et vous dire comment l'installer. **Ne branchez pas votre calculatrice pour être sûr de ne pas la bloquer.**
+
+Si vous êtes sur Linux, il se peut qu'elle ne soit toujours pas détectée. Cela arrive si votre navigateur web est installé au format flatpak ou snap.
+
+Dans le cas du Flatpak, il vous faudra installer l'application [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal), sélectionner votre navigateur, et ajouter `/run/udev` dans les "Autres fichiers" dans la catégorie "Filesystem".
+
+Vous pouvez également exécuter la commande: `flatpak override --user --filesystem=/run/udev [Application ID]` (Remplacez `[Application ID]` par l'ID de votre navigateur, n'hésitez pas à faire `flatpak list` pour le trouver)
+
+Dans le cas du Snap, exécutez la commande: `snap connect [Application ID]:raw-usb` (Remplacez `[Application ID]` par l'ID de votre navigateur, n'hésitez pas à faire `snap list` pour le trouver)
+
+Notez bien que redémarrer le navigateur risque d'être nécessaire si vous débranchez et rebranchez la calculatrice.
+
+### Mode Recovery (écran noir + LED rouge), mais calculatrice non reconnue sur l'ordinateur.
+
+Votre calculatrice a l'air d'être en mode Recovery mais elle ne l'est pas
+
+Maintenez 6 et cliquez sur reset pour la démarrer en mode Recovery, ça aura l'air d'être pareil mais cette fois, elle sera reconnue.
+
+### "CommandName is not defined"
+
+Vous essayer de faire quelque chose avec la calculatrice alors qu'elle n'est pas dans le bon mode, comme essayer d'installer des applications avec la calculatrice en mode Recovery ou sur n0100.
+
+Essayez d'utiliser le bon mode, pour des applications externes lancez juste en mode normal.
+
+### "Unable to claim interface"
+
+Cette erreur arrive quand vous essayez de connecter votre calculatrice mais elle est déjà utilisée par un autre onglet ou logiciel. Cela arrive habituellement quand vous essayez d'installer des applications externes mais que l'onglet que vous avec utilisé pour installer votre OS Custom est toujours ouvert.
+
+Ça peut facilement être réglé si vous fermez l'onglet ou le logiciel déjà connecté à la calculatrice.
+Il ne peut y avoir qu'un seul onglet (ou logiciel) établissant une connexion à la calculatrice.
+
+### "Could not detect the calculator model" / "N????"
+
+Cela veut dire que votre calculatrice est verrouillée contre l'installation de OS Custom. Si vous voulez installer un OS Custom, vous avez besoin de la débloquer.
+
+Suivez [ce guide](intro) pour la débloquer.
+
+### "Mémoire corrompue" en essayant d'ajouter des scripts Python
+
+Cela peut arriver quand le bootloader custom est trop ancien.
+
+Pour le mettre à jour : allez sur le site de votre OS Custom, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre OS Custom.
+
+### Écran et LED clignottants
+
+Vous essayez de démarrer Epsilon 19 sur un ancian bootloader custom.
+
+Mettez à jour le bootloader : allez sur le site de votre OS Custom, mettez la calculatrice en mode Recovery (en maintenant 6 et en appuyant sur reset au dos de la calculatrice), connectez-la à l'ordinateur, puis choisissez "Restauration" (recovery) sur le site de votre OS Custom.
+
+### L'installation n'a pas de fin (installation infinie)
+
+Cela peut arriver sur le site d'Omega et le site de Numworks. A moins que votre calculatrice soit bloquée, le firmware est déjà installé mais le site essaie de démarrer la calculatrice et il n'y arrive pas.
+
+Appuyez juste sur reset sur la calculatrice et ça devrait être réglé.
+
+### "Address 0x90000000 outside of memory map"
+
+Vous essayez de flasher la partition externe mais la calculatrice n'est pas dans le bon mode. Ça ne peut pas marcher.
+
+Vous devez flasher avec l'écran de bootloader Numworks, le bootloader custom ou le flasher du mode recovery (l'écran indiquant "Recovery mode" en installant Omega en mode Recovery)
+
+### La calculatrice redémarre en essayant d'installer un OS Custom
+
+Votre calculatrice est sous Epsilon 19 ou plus, cela peut arriver quand la calculatrice est bloquée ou que vous l'exécutez depuis un bootloader custom.
+
+Redémarrez juste la calculatrice dans le bootloader ou n'importe quel autre firmware qui n'est pas Epsilon 19 ou plus.
+
+### "ControlTransferIn" / "ControlTransferOut"
+
+Quelque chose a interrompu la connextion avec la calculatrice.
+
+Vérifiez que vous êtes dans le bon mode et qu'aucune autre appli ou onglet utilise la calculatrice.
+
+### "DFU DOWNLOAD FAILED"
+
+Vous n'utilisez peut-être pas le bon WebDFU, vérifiez que vous utiliser le [WebDFU de TI-Planet](https://ti-planet.github.io/webdfu_numworks/n0110/)
+
+### "Acces refusé" en essayant de se connecter à la calculatrice en mode Recovery
+
+Cela peut arriver sur Windows et Linux
+- Sur Linux ça veut dire que vous n'avez pas installé le fichier de configuration, [La page de mise à jour Numworks](https://numworks.com/update/) vous le donnera
+- Sur Windows cela veut dire que vous êtes en mode Recovery et que le mauvais driver est sélectionné, il y a quelques étapes que vous pouvez suivre pour régler ça.
+ 1. S'il n'est pas installé, installez le driver depuis [La page de récupération Numworks](https://numworks.com/rescue/)
+ 2. Ouvrez le Gestionnaire de Périphériques, appuyez sur Win+R, tappez `devmgmt.msc`, et appuyez sur Entrée
+ 3. Recherchez un appareil avec "STM" dans le nom
+ 4. Faites clic droit dessus, et cliquez sur "Mettre à jour le driver"
+ 5. Ne recherchez pas automatiquement un driver, cherchez-le manuellement, puis décidez de choisir dans une liste.
+ 6. Sélectionnez le driver Numworks, puis cliquer sur "Suivant"
+ 7. Le driver devrait être correctement installé, vous pouvez maintenant connecter en mode Recovery et cela devrait marcher.
+
+### Plantage en lançant Upsilon
+
+Upsilon a tendance à planter quand vous le lancez et que la calculatrice est connectée à un PC. Déconnectez la avant de le lancer.
+
+### Plantage au lancement de KhiCAS
+
+KhiCAS est une appli lourde, et le dual-boot avec cette appli installée est impossible.
+
+Il se peut que vous ayez installé KhiCAS, puis Epsilon, ce qui a écrasé une parte de KhiCAS, l'empêchant de démarrer.
+
+Dans ce cas, si vous voulez utiliser KhiCAS, vous devrez le réinstaller.
+
+___
+
+:::info
+### Votre erreur n'est pas listée ? La solution proposée n'a pas réglé votre problème ? N'hésitez pas à demander sur le [Discord d'Omega](https://discord.gg/X2TWhh9)
+:::
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/hardware/n0110-hardware-unlock.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/hardware/n0110-hardware-unlock.md
new file mode 100644
index 00000000..9d5e7b33
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/hardware/n0110-hardware-unlock.md
@@ -0,0 +1,21 @@
+---
+title: "Débloquage Hardware (N0110)"
+sidebar_position: 1
+pagination_next: unlock/n0110-unlocked
+pagination_prev: unlock/n0110-is-locked
+---
+
+### Lecture obligatoire
+
+Le débloquage matériel demande des outils spécifiques.
+
+L'objectif est de forcer le mode Recovery pour permettre l'installation.
+À la fin de ce tutoriel, votre calculatrice devra montrer un écran noir et une LED rouge.
+
+### Sélectionnez une méthode
+
+Il y a plusieurs méthodes.
+
+Nous recommendons [ce post](https://tiplanet.org/forum/viewtopic.php?f=113&t=25191&p=263495), il est très complet et vous guidera très bien.
+
+Si vous avez une autre manière d'obtenir le mode Recovery, vous pouvez la suivre. **Nous ne sommes pas responsables de ce qu’il se passe sur votre appareil**
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md
new file mode 100644
index 00000000..68c67333
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-is-locked.md
@@ -0,0 +1,58 @@
+---
+title: "Votre calculatrice est-elle bloquée ? (N0110)"
+sidebar_position: 1
+pagination_next: null
+pagination_prev: intro
+---
+
+Cette page vous dire si vous devez déverrouiller votre calculatrice et comment.
+
+#### Section I - Vérification de la version Epsilon
+
+1. Allumez votre calculatrice
+2. Allez dans "Paramètres"
+3. Allez dans "À propos"
+4. Regardez le champ "Version du logiciel" ou "Version d'Epsilon".
+5. Ceci est votre version Epsilon.
+
+#### Section II - Vérification du verrouillage du flash
+
+1. Éteignez votre calculatrice
+2. Appuyez sur la touche "6"
+3. Tout en appuyant sur la touche "6", appuyez sur le bouton reset à l'arrière de l'appareil.
+
+Si vous voyez un écran comme celui-ci, vous pouvez procéder :
+
+![Epsilon 16 bootloader](/img/e16bl.png)
+
+:::caution
+
+Si l'écran reste noir et que la LED devient rouge, **STOP** - votre calculatrice est déjà déverrouillée ! Continuez à partir d'[ici](/docs/unlock/n0110-unlocked).
+
+:::
+
+Appuyez sur le bouton reset à l'arrière de la calculatrice pour revenir au micrologiciel.
+
+#### Section III - Sélectionnez une méthode {#principal-methods}
+
+Utilisez le tableau des versions ci-dessous pour sélectionner une méthode. Quelques points à noter :
+ + Le tableau des versions ci-dessous est *inclusif*. Par exemple, "de 16.3.0 à 18.0.0" inclus 16.3.0, 18.0.0, et toutes les versions entre celles-ci.
+ + La version 16.4.3 ne suit pas cette règle.
+
+| Version du système | Que faire |
+|--------------------|------------------------------------------------------------------|
+| 11.2.0-16.2.0 | [Et maintenant ?](n0110-unlocked) |
+| 16.3.0-16.4.2 | [Phi](phi) |
+| 16.4.3 | [Installer Epsilon 18.2.0](phi/install-epsilon-18-2-0) |
+| 17.0.0-18.2.0 | [Phi](phi) |
+| 18.2.3 | [Installer Epsilon 18.2.0](phi/install-epsilon-18-2-0) |
+| 19.0.0-21.2.0 | [Vérifier l'éligibilité au changement de version](phi/check-version-change-eligibility) |
+
+---
+#### Méthodes alternatives {#alt-methods}
+
+Si possible, vous devriez suivre l'une des méthodes logicielles répertoriées ci-dessus.
+
+Sinon, des méthodes qui fonctionnent sur toutes les versions sont disponibles, mais nécessitent du matériel supplémentaire :
+
+1. [Débloquage matériel](hardware/n0110-hardware-unlock) - nécessite des outils spécifiques
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md
new file mode 100644
index 00000000..e8408656
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/n0110-unlocked.md
@@ -0,0 +1,10 @@
+---
+sidebar_position: 10
+title: "Débloqué (N0110)"
+pagination_next: cfw/choose-a-cfw
+pagination_prev: unlock/n0110-is-locked
+---
+
+Votre calculatrice est débloquée, yay!
+
+Vous pouvez maintenant installer un OS Custom pour accéder à plus de fonctionnalitées
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md
new file mode 100644
index 00000000..5bc27139
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/check-version-change-eligibility.md
@@ -0,0 +1,39 @@
+---
+title: "Vérifier l'éligibilité au changement de version"
+sidebar_position: 1
+---
+
+### Introduction
+
+Vous pourriez avoir besoin de changer la version de votre calculatrice, nous installons couramment Epsilon 18.2.0. Il y a certains cas où vous pouvez installer Epsilon 18.2.0 et d'autre où vous ne pouvez pas. Cette page explique comment savoir si vous êtes éligible ou non à ce changement.
+
+### Si vous avez Epsilon 15 et avant
+
+Vous n'avez pas besoin de changer de version, continuez vers [Et maintenant ?](/docs/unlock/n0110-unlocked)
+
+### Si vous avez Epsilon 16 à 18.2.0 (mais pas 16.4.3)
+
+Vous n'avez pas besoin de changer de version, continuez vers [Phi](/docs/unlock/phi)
+
+### Si vous avez Epsilon 16.4.3 ou 18.2.3
+
+Vous êtes éligible, vous pouvez continuer normalement
+
+### Si vous avez Epsilon 19 ou au dessus
+
+Cela dépend de la version que vous aviez avant de mettre à jour vers Epsilon 19 et plus.
+
+- Si vous aviez 15 ou avant, Omega, ou Upsilon: Vous ne pouvez pas changer de version
+- Si vous aviez 16 à 18.2.3 (sauf 16.4.3): Vous pouvez changer de version
+- Si vous aviez 16.4.3, 19 ou plus: Vous ne pouvez pas changer de version
+
+### Et si vous ne savez pas ?
+
+Ne vous inquitez pas, essayer de changer de version de ne cassera pas votre calculatrice
+Si vous n'étiez pas éligible, après la manipulation, la calculatrice sera bloquée sur l'écran de mode de récupération de Numworks et vous serez en mesure de mettre à jour depuis le site de Numworks et votre calculatrice fonctionnera normalement
+
+---
+
+:::info
+Si vous n'êtes pas éligible, vous pouvez utiliser la [methode alternative](/docs/unlock/n0110-is-locked#alt-methods)
+:::
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md
new file mode 100644
index 00000000..04d138dc
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/install-epsilon-18-2-0.md
@@ -0,0 +1,49 @@
+---
+title: "Installer Epsilon 18.2.0"
+sidebar_position: 2
+---
+
+### Lecture requise
+
+Nous allons maintenant installer Epsilon 18.2.0
+
+:::info
+Si vous n'êtes pas sur que vous puissiez installer Epsilon 18.2.0, allez voir [cette page](/docs/unlock/phi/check-version-change-eligibility)
+:::
+
+### Ce dont vous avez besoin
+
+- Un navigateur à base chromium (nous vous recommandons d'utiliser [chromium](https://www.chromium.org/chromium-projects/) directement)
+- Epsilon 18.2.0 `18-2-0.dfu` (Etant donné que Numworks a supprimé ce fichier de leur site web à cause de Phi, nous ne pouvons pas vous donner de lien ici)
+- Ce script Python: [version Linux et macOS](/resources/unpack.py), [version Windows](/resources/unpack-win.py)
+
+### Section I - Extraction du binaire externe
+
+Étant donné qu'Epsilon est désormais sous code source fermé, nous ne pouvons pas distribuer directement l'image du flash externe.
+Nous devons donc vous le faire extraire.
+
+1. Installez Python sur votre plateforme.
+2. Téléchargez Epsilon 18.2.0 quelque part.
+3. Créez un nouveau dossier
+4. Mettez le script Python dans ce dossier
+5. Mettez 18-2-0.dfu dans ce dossier
+6. Exécutez le script
+
+Vous devriez maintenant avoir un fichier internal.bin et un fichier external.bin
+
+### Section II - Installation
+
+1. Ouvrez le [WebDFU](https://ti-planet.github.io/webdfu_numworks/n0110/) dans un navigateur web basé sur chromium
+2. Maintenez la touche 6 sur votre Numworks et pressez le bouton reset
+3. Vous devriez maintenant voir l'interface du bootloader Epsilon
+4. Sélectionnez `external.bin` dans WebDFU
+5. Cliquez sur "flash external"
+6. Une fois le clignotement effectué, appuyez sur le bouton reset de votre Numworks
+
+Vous devriez maintenant voir la version 18.2.0 dans Paramètres > À propos.
+
+:::caution
+
+Si ce n'est pas le cas ou que votre Numworks ne démarre pas, vous pouvez toujours utiliser une [méthode alternative](../n0110-is-locked#alternate-methods).
+
+:::
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md
new file mode 100644
index 00000000..d884e728
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/phi/phi.md
@@ -0,0 +1,80 @@
+---
+title: "Installer Phi"
+sidebar_position: 3
+pagination_next: unlock/n0110-unlocked
+---
+
+### Lecture obligatoire
+
+Phi a plusieurs points d'entrée (méthode de lancement).
+L'exploit utilisé pour le moment est compatible avec Epsilon 16.3.0 à 18.2.0.
+
+### Ce dont vous avez besoin
+
+- Un navigateur web basé sur chromium (nous recommandons l'utilisation de [chromium](https://www.chromium.org/chromium-projects/) directement)
+- L'[Installateur Phi](https://phi.getomega.dev/)
+
+### Section I - Installer Phi
+
+1. Allumez votre appareil
+2. Branchez votre appareil à un ordinateur
+3. Ouvrez Chromium
+4. Allez sur l'[Installateur Phi](https://phi.getomega.dev/)
+5. Cliquez sur "Se connecter à la calculatrice Numworks" et sélectionnez votre calculatrice
+6. La calculatrice affichera un message indiquant "Applications tierces"
+7. Appuyez sur la touche Retour
+
+### Section II - Exécuter Phi
+
+1. Faites défiler la liste des applications et sélectionnez "Phi Installer"
+2. Appuyez sur la touche OK
+3. L'écran devrait clignoter et vous devriez voir un écran similaire à celui-ci :
+
+![Phi launch screen](/img/phi-launch.png)
+
+:::info
+Si l'écran devient jaune, la version d'Epsilon que vous utilisez n'est pas encore prise en charge. Vous pourriez avoir besoin de [changer de version](/docs/unlock/phi/check-version-change-eligibility).
+:::
+
+:::caution
+Si l'écran devient rouge, l'exploit a échoué. Réinitialisez la calculatrice et réessayez. Si cela ne fonctionne pas la deuxième fois, veuillez rejoindre le [Discord Omega](https://discord.gg/X2TWhh9).
+:::
+
+### Section III - Déverrouiller la calculatrice
+
+Nous allons maintenant déverrouiller le flash interne et supprimer la protection en écriture :
+
+1. Appuyez sur 1 pour déverrouiller le flash interne.
+2. Appuyez sur OK pour confirmer
+3. Vous devriez voir quelque chose comme ça :
+
+![Phi unlock screen](/img/phi-unlock.png)
+
+L'étape "Reset RDP" peut prendre un peu de temps. Vous serez remis sur le menu principal après une seconde, lorsque le déverrouillage sera terminé.
+
+### Section IV - Effacement de la flash interne
+
+La suppression de la protection en écriture aurait dû effacer le flash interne, mais nous allons le refaire, juste pour être sûr :
+
+1. Appuyez sur 2 pour réinitialiser le flash interne
+2. Appuyez sur OK pour confirmer
+3. YVous devriez voir quelque chose comme ça :
+
+![Phi erase screen](/img/phi-erase.png)
+
+L'étape "Erase flash" peut prendre un peu de temps, Vous serez remis sur le menu principal après une seconde, quand l'effaçage sera terminé.
+
+### Section V - Installation d'un bootloader custom
+
+1. Appuyez sur 3
+2. Appuyez sur OK pour confirmer
+3. Vous devriez voir quelque chose comme sa :
+
+![Phi launch screen](/img/phi-write.png)
+
+L'étape "Write Flash" peut prendre un peu de temps. Vous serez remis sur le menu principal après une seconde, quand la flash sera écrite.
+
+
+:::info
+Si vous ne démarrez pas dans Epsilon, ne vous inquiétez pas, installer un OS Custom réparera cela plus tard.
+:::
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/unlock/what-to-do-locked.md b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/what-to-do-locked.md
new file mode 100644
index 00000000..c366ec11
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/unlock/what-to-do-locked.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 20
+title: "Déblocage impossible ?"
+pagination_next: null
+pagination_prev: intro
+---
+
+### Introduction
+
+Si vous êtes ici, c'est probablement parce que votre calculatrice ne peut pas être débloquée ou que vous ne voulez pas trop la modifier. Il n'y a pas de honte à avoir pour ça.
+Il y a toujours certaines choses que vous pouvez faire.
+
+### Scripts Python
+
+Toujours bon à mentionner, vous pouvez obtenir des jeux python sur votre calculatrice, vous pouvez les trouver sur le [Workshop de Numworks](https://my.numworks.com/python/). Pour les installer, suivez juste les instructions
+
+### Applis externes
+
+Depuis Epsilon 16 pour n0110, ou Epsilon 20 pour n0120, vous pouvez installer des applis personnalisées, elles ne sont pas aussi puissantes que celles d'Omega mais elles sont bien. Vous pouvez les trouver sur [Nwagyu](https://yaya-cout.github.io/Nwagyu/).
+Il y a [une page qui explique comment installer les applis](https://yaya-cout.github.io/Nwagyu/guide/help/how-to-install.html) avec également un moyen d'avoir plus d'espace pour les applis.
+Aussi, quand vous activez le mode examen ou appuyez sur "reset", elles seront désactivées.
+
+### Userland
+
+Epsilon est toujours partiellement open-source, vous pouvez modifier le code et créer votre propre version et l'installer.
+Cependant, c'est en userland uniquement et si vous appuyez sur "reset" vous retournerez au firmware d'origine. Vous aurez aussi un popup disant que vous exécutez un logiciel modifié.
+Notez que depuis Epsilon 16, partager une version modifiée est illégal. Vous ne devez jamais partager la version que vous avez créé.
+
+[Les instructions de Numworks](https://www.numworks.com/resources/engineering/software/build/)
diff --git a/i18n/fr/docusaurus-theme-classic/footer.json b/i18n/fr/docusaurus-theme-classic/footer.json
new file mode 100644
index 00000000..e6043737
--- /dev/null
+++ b/i18n/fr/docusaurus-theme-classic/footer.json
@@ -0,0 +1,26 @@
+{
+ "link.title.Community": {
+ "message": "Communauté",
+ "description": "The title of the footer links column with title=Community in the footer"
+ },
+ "link.title.More": {
+ "message": "Autres liens",
+ "description": "The title of the footer links column with title=More in the footer"
+ },
+ "link.item.label.Discord": {
+ "message": "Discord",
+ "description": "The label of footer link with label=Discord linking to https://discord.gg/X2TWhh9"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/Omega-Numworks/Omega-Guide"
+ },
+ "link.item.label.Credits": {
+ "message": "Credits",
+ "description": "The label of footer link with label=Credits linking to /docs/credits"
+ },
+ "copyright": {
+ "message": "Copyright © 2023 Omega Community, Réalisé avec Docusaurus.",
+ "description": "The footer copyright"
+ }
+}
diff --git a/i18n/fr/docusaurus-theme-classic/navbar.json b/i18n/fr/docusaurus-theme-classic/navbar.json
new file mode 100644
index 00000000..6dab7ffc
--- /dev/null
+++ b/i18n/fr/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,18 @@
+{
+ "title": {
+ "message": "Numworks Guide",
+ "description": "The title in the navbar"
+ },
+ "logo.alt": {
+ "message": "My Site Logo",
+ "description": "The alt text of navbar logo"
+ },
+ "item.label.Guide": {
+ "message": "Guide",
+ "description": "Navbar item with label Guide"
+ },
+ "item.label.GitHub": {
+ "message": "GitHub",
+ "description": "Navbar item with label GitHub"
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index 2e643fa0..2b264f0f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"@docusaurus/core": "2.4.1",
"@docusaurus/preset-classic": "2.4.1",
+ "@docusaurus/theme-mermaid": "2.4.1",
"@mdx-js/react": "^1.6.22",
"clsx": "^1.2.1",
"prism-react-renderer": "^1.3.5",
@@ -2108,6 +2109,11 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@braintree/sanitize-url": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
+ "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
+ },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -2612,6 +2618,28 @@
"react-dom": "^16.8.4 || ^17.0.0"
}
},
+ "node_modules/@docusaurus/theme-mermaid": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-2.4.1.tgz",
+ "integrity": "sha512-cM0ImKIqZfjmlaC+uAjep39kNBvb1bjz429QBHGs32maob4+UnRzVPPpCUCltyPVb4xjG5h1Tyq4pHzhtIikqA==",
+ "dependencies": {
+ "@docusaurus/core": "2.4.1",
+ "@docusaurus/module-type-aliases": "2.4.1",
+ "@docusaurus/theme-common": "2.4.1",
+ "@docusaurus/types": "2.4.1",
+ "@docusaurus/utils-validation": "2.4.1",
+ "@mdx-js/react": "^1.6.22",
+ "mermaid": "^9.2.2",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.14"
+ },
+ "peerDependencies": {
+ "react": "^16.8.4 || ^17.0.0",
+ "react-dom": "^16.8.4 || ^17.0.0"
+ }
+ },
"node_modules/@docusaurus/theme-search-algolia": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.1.tgz",
@@ -5075,6 +5103,14 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
+ "node_modules/cose-base": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
+ "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
+ "dependencies": {
+ "layout-base": "^1.0.0"
+ }
+ },
"node_modules/cosmiconfig": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
@@ -5404,6 +5440,456 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
+ "node_modules/cytoscape": {
+ "version": "3.27.0",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.27.0.tgz",
+ "integrity": "sha512-pPZJilfX9BxESwujODz5pydeGi+FBrXq1rcaB1mfhFXXFJ9GjE6CNndAk+8jPzoXGD+16LtSS4xlYEIUiW4Abg==",
+ "dependencies": {
+ "heap": "^0.2.6",
+ "lodash": "^4.17.21"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/cytoscape-cose-bilkent": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
+ "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
+ "dependencies": {
+ "cose-base": "^1.0.0"
+ },
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
+ }
+ },
+ "node_modules/cytoscape-fcose": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz",
+ "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
+ "dependencies": {
+ "cose-base": "^2.2.0"
+ },
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/cose-base": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz",
+ "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
+ "dependencies": {
+ "layout-base": "^2.0.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/layout-base": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz",
+ "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="
+ },
+ "node_modules/d3": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz",
+ "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==",
+ "dependencies": {
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "dependencies": {
+ "internmap": "1 - 2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-axis": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-brush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-chord": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "dependencies": {
+ "d3-path": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "dependencies": {
+ "d3-array": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "dependencies": {
+ "delaunator": "5"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "dependencies": {
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dsv/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/d3-dsv/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "dependencies": {
+ "d3-dsv": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-force": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-geo": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
+ "dependencies": {
+ "d3-array": "2.5.0 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-hierarchy": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "dependencies": {
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-polygon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-quadtree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-random": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "dependencies": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
+ "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "dependencies": {
+ "d3-path": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "dependencies": {
+ "d3-array": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "dependencies": {
+ "d3-time": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
+ }
+ },
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dagre-d3-es": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz",
+ "integrity": "sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==",
+ "dependencies": {
+ "d3": "^7.8.2",
+ "lodash-es": "^4.17.21"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.10",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ },
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -5521,6 +6007,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/delaunator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
+ "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
+ "dependencies": {
+ "robust-predicates": "^3.0.0"
+ }
+ },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -5670,6 +6164,11 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz",
+ "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ=="
+ },
"node_modules/domutils": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
@@ -5736,6 +6235,11 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz",
"integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg=="
},
+ "node_modules/elkjs": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz",
+ "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ=="
+ },
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -6894,6 +7398,11 @@
"he": "bin/he"
}
},
+ "node_modules/heap": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
+ "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
+ },
"node_modules/history": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
@@ -7270,6 +7779,14 @@
"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
"integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
},
+ "node_modules/internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/interpret": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
@@ -7742,6 +8259,11 @@
"json-buffer": "3.0.0"
}
},
+ "node_modules/khroma": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz",
+ "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -7778,6 +8300,11 @@
"shell-quote": "^1.7.3"
}
},
+ "node_modules/layout-base": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
+ "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
+ },
"node_modules/leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -7836,6 +8363,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
"node_modules/lodash.curry": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz",
@@ -8051,6 +8583,41 @@
"node": ">= 8"
}
},
+ "node_modules/mermaid": {
+ "version": "9.4.3",
+ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz",
+ "integrity": "sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==",
+ "dependencies": {
+ "@braintree/sanitize-url": "^6.0.0",
+ "cytoscape": "^3.23.0",
+ "cytoscape-cose-bilkent": "^4.1.0",
+ "cytoscape-fcose": "^2.1.0",
+ "d3": "^7.4.0",
+ "dagre-d3-es": "7.0.9",
+ "dayjs": "^1.11.7",
+ "dompurify": "2.4.3",
+ "elkjs": "^0.8.2",
+ "khroma": "^2.0.0",
+ "lodash-es": "^4.17.21",
+ "non-layered-tidy-tree-layout": "^2.0.2",
+ "stylis": "^4.1.2",
+ "ts-dedent": "^2.2.0",
+ "uuid": "^9.0.0",
+ "web-worker": "^1.2.0"
+ }
+ },
+ "node_modules/mermaid/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -8312,6 +8879,11 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
},
+ "node_modules/non-layered-tidy-tree-layout": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz",
+ "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw=="
+ },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -10394,6 +10966,11 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/robust-predicates": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+ },
"node_modules/rtl-detect": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz",
@@ -10492,6 +11069,11 @@
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+ },
"node_modules/rxjs": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
@@ -11171,6 +11753,11 @@
"postcss": "^8.2.15"
}
},
+ "node_modules/stylis": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
+ "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
+ },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -11488,6 +12075,14 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/ts-dedent": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz",
+ "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==",
+ "engines": {
+ "node": ">=6.10"
+ }
+ },
"node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -12178,6 +12773,11 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/web-worker": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz",
+ "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
+ },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -14233,6 +14833,11 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@braintree/sanitize-url": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
+ "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
+ },
"@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -14604,6 +15209,21 @@
"utility-types": "^3.10.0"
}
},
+ "@docusaurus/theme-mermaid": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-2.4.1.tgz",
+ "integrity": "sha512-cM0ImKIqZfjmlaC+uAjep39kNBvb1bjz429QBHGs32maob4+UnRzVPPpCUCltyPVb4xjG5h1Tyq4pHzhtIikqA==",
+ "requires": {
+ "@docusaurus/core": "2.4.1",
+ "@docusaurus/module-type-aliases": "2.4.1",
+ "@docusaurus/theme-common": "2.4.1",
+ "@docusaurus/types": "2.4.1",
+ "@docusaurus/utils-validation": "2.4.1",
+ "@mdx-js/react": "^1.6.22",
+ "mermaid": "^9.2.2",
+ "tslib": "^2.4.0"
+ }
+ },
"@docusaurus/theme-search-algolia": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.1.tgz",
@@ -16457,6 +17077,14 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
+ "cose-base": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
+ "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
+ "requires": {
+ "layout-base": "^1.0.0"
+ }
+ },
"cosmiconfig": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
@@ -16672,6 +17300,338 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
+ "cytoscape": {
+ "version": "3.27.0",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.27.0.tgz",
+ "integrity": "sha512-pPZJilfX9BxESwujODz5pydeGi+FBrXq1rcaB1mfhFXXFJ9GjE6CNndAk+8jPzoXGD+16LtSS4xlYEIUiW4Abg==",
+ "requires": {
+ "heap": "^0.2.6",
+ "lodash": "^4.17.21"
+ }
+ },
+ "cytoscape-cose-bilkent": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
+ "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
+ "requires": {
+ "cose-base": "^1.0.0"
+ }
+ },
+ "cytoscape-fcose": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz",
+ "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
+ "requires": {
+ "cose-base": "^2.2.0"
+ },
+ "dependencies": {
+ "cose-base": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz",
+ "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
+ "requires": {
+ "layout-base": "^2.0.0"
+ }
+ },
+ "layout-base": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz",
+ "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="
+ }
+ }
+ },
+ "d3": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz",
+ "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==",
+ "requires": {
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
+ }
+ },
+ "d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "requires": {
+ "internmap": "1 - 2"
+ }
+ },
+ "d3-axis": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="
+ },
+ "d3-brush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "requires": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
+ }
+ },
+ "d3-chord": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "requires": {
+ "d3-path": "1 - 3"
+ }
+ },
+ "d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="
+ },
+ "d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "requires": {
+ "d3-array": "^3.2.0"
+ }
+ },
+ "d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "requires": {
+ "delaunator": "5"
+ }
+ },
+ "d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="
+ },
+ "d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "requires": {
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ }
+ },
+ "d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "requires": {
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+ },
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ }
+ }
+ },
+ "d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="
+ },
+ "d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "requires": {
+ "d3-dsv": "1 - 3"
+ }
+ },
+ "d3-force": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "requires": {
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
+ }
+ },
+ "d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="
+ },
+ "d3-geo": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
+ "requires": {
+ "d3-array": "2.5.0 - 3"
+ }
+ },
+ "d3-hierarchy": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="
+ },
+ "d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "requires": {
+ "d3-color": "1 - 3"
+ }
+ },
+ "d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="
+ },
+ "d3-polygon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="
+ },
+ "d3-quadtree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="
+ },
+ "d3-random": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="
+ },
+ "d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "requires": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ }
+ },
+ "d3-scale-chromatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
+ "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
+ "requires": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ }
+ },
+ "d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="
+ },
+ "d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "requires": {
+ "d3-path": "^3.1.0"
+ }
+ },
+ "d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "requires": {
+ "d3-array": "2 - 3"
+ }
+ },
+ "d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "requires": {
+ "d3-time": "1 - 3"
+ }
+ },
+ "d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="
+ },
+ "d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "requires": {
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
+ }
+ },
+ "d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "requires": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ }
+ },
+ "dagre-d3-es": {
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.9.tgz",
+ "integrity": "sha512-rYR4QfVmy+sR44IBDvVtcAmOReGBvRCWDpO2QjYwqgh9yijw6eSHBqaPG/LIOEy7aBsniLvtMW6pg19qJhq60w==",
+ "requires": {
+ "d3": "^7.8.2",
+ "lodash-es": "^4.17.21"
+ }
+ },
+ "dayjs": {
+ "version": "1.11.10",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ },
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -16751,6 +17711,14 @@
"slash": "^3.0.0"
}
},
+ "delaunator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
+ "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
+ "requires": {
+ "robust-predicates": "^3.0.0"
+ }
+ },
"depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -16859,6 +17827,11 @@
"domelementtype": "^2.3.0"
}
},
+ "dompurify": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz",
+ "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ=="
+ },
"domutils": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
@@ -16918,6 +17891,11 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz",
"integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg=="
},
+ "elkjs": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz",
+ "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ=="
+ },
"emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -17772,6 +18750,11 @@
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
+ "heap": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
+ "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
+ },
"history": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
@@ -18043,6 +19026,11 @@
"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
"integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
},
+ "internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="
+ },
"interpret": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
@@ -18362,6 +19350,11 @@
"json-buffer": "3.0.0"
}
},
+ "khroma": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz",
+ "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
+ },
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -18389,6 +19382,11 @@
"shell-quote": "^1.7.3"
}
},
+ "layout-base": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
+ "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
+ },
"leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -18432,6 +19430,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
+ "lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
"lodash.curry": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz",
@@ -18605,6 +19608,36 @@
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
},
+ "mermaid": {
+ "version": "9.4.3",
+ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.4.3.tgz",
+ "integrity": "sha512-TLkQEtqhRSuEHSE34lh5bCa94KATCyluAXmFnNI2PRZwOpXFeqiJWwZl+d2CcemE1RS6QbbueSSq9QIg8Uxcyw==",
+ "requires": {
+ "@braintree/sanitize-url": "^6.0.0",
+ "cytoscape": "^3.23.0",
+ "cytoscape-cose-bilkent": "^4.1.0",
+ "cytoscape-fcose": "^2.1.0",
+ "d3": "^7.4.0",
+ "dagre-d3-es": "7.0.9",
+ "dayjs": "^1.11.7",
+ "dompurify": "2.4.3",
+ "elkjs": "^0.8.2",
+ "khroma": "^2.0.0",
+ "lodash-es": "^4.17.21",
+ "non-layered-tidy-tree-layout": "^2.0.2",
+ "stylis": "^4.1.2",
+ "ts-dedent": "^2.2.0",
+ "uuid": "^9.0.0",
+ "web-worker": "^1.2.0"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
+ }
+ }
+ },
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -18779,6 +19812,11 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
},
+ "non-layered-tidy-tree-layout": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz",
+ "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw=="
+ },
"normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -20230,6 +21268,11 @@
"glob": "^7.1.3"
}
},
+ "robust-predicates": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+ },
"rtl-detect": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz",
@@ -20289,6 +21332,11 @@
"queue-microtask": "^1.2.2"
}
},
+ "rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+ },
"rxjs": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
@@ -20821,6 +21869,11 @@
"postcss-selector-parser": "^6.0.4"
}
},
+ "stylis": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
+ "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
+ },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -21038,6 +22091,11 @@
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
"integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA=="
},
+ "ts-dedent": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz",
+ "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="
+ },
"tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -21485,6 +22543,11 @@
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
"integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw=="
},
+ "web-worker": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz",
+ "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
+ },
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
diff --git a/package.json b/package.json
index e59d464b..29a8db12 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"dependencies": {
"@docusaurus/core": "2.4.1",
"@docusaurus/preset-classic": "2.4.1",
+ "@docusaurus/theme-mermaid": "2.4.1",
"@mdx-js/react": "^1.6.22",
"clsx": "^1.2.1",
"prism-react-renderer": "^1.3.5",
diff --git a/src/css/custom.css b/src/css/custom.css
index 2bc6a4cf..6b4d654a 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -28,3 +28,20 @@
--ifm-color-primary-lightest: #4fddbf;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}
+.hero {
+ background-color: transparent;
+ background-image: linear-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.25)), url('/img/home-page-feature.jpg');
+}
+.hero--primary {
+ --ifm-hero-text-color:rgb(255, 255, 255)
+}
+.center {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+}
+.content-home {
+ max-width: 1280px;
+ margin: 1rem;
+}
diff --git a/src/pages/index.module.css b/src/pages/index.module.css
index 9f71a5da..8f2185cc 100644
--- a/src/pages/index.module.css
+++ b/src/pages/index.module.css
@@ -16,8 +16,16 @@
}
}
+
.buttons {
display: flex;
align-items: center;
justify-content: center;
}
+
+main {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+}
+
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 305139fb..445ed38e 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -3,22 +3,21 @@ import clsx from 'clsx';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
-import HomepageFeatures from '@site/src/components/HomepageFeatures';
-
+import Translate, { translate } from '@docusaurus/Translate';
import styles from './index.module.css';
function HomepageHeader() {
- const {siteConfig} = useDocusaurusContext();
+ const { siteConfig } = useDocusaurusContext();
return (