From 9bc29ca6e50d58b98ca07f358d93d8c7a2c004b2 Mon Sep 17 00:00:00 2001 From: Pierre Lanari Date: Mon, 9 Feb 2026 21:15:31 +0100 Subject: [PATCH 1/3] Add Bingo-Antidote description fetched from xmaptools.ch --- .vitepress/config.js | 1 + bingo-antidote.md | 80 +++++++++++++++++++++++++++++++++++++++++++- index.md | 2 +- 3 files changed, 81 insertions(+), 2 deletions(-) diff --git a/.vitepress/config.js b/.vitepress/config.js index 9981331..b1a24a7 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -82,6 +82,7 @@ export default defineConfig({ items: [ { text: 'Tutorials', link: '/tutorials' }, { text: 'Videos', link: '/videos' }, + { text: 'Bingo-Antidote', link: '/bingo-antidote' }, ] }, ], diff --git a/bingo-antidote.md b/bingo-antidote.md index 47c607a..61af33a 100644 --- a/bingo-antidote.md +++ b/bingo-antidote.md @@ -1,6 +1,84 @@ # Bingo-Antidote -Learn Bingo-Antidote. +## Table of contents +- [What is Bingo-Antidote?](#what-is-bingo-antidote) +- [Iterative thermodynamic models](#iterative-thermodynamic-models) +- [Theriak-Domino](#theriak-domino) +- [References](#references) +- [Tutorial](#bingo-antidote-tutorial) + - [How to get started](#how-to-get-started) + - [Example 1 (TG8C-03)](#example-1-tg8c-03--lanari--duesterhoeft-2019-jpet) +## What is Bingo-Antidote? + +Bingo-Antidote Logo + +Bingo-Antidote is a petrological software originally developed by Pierre Lanari and Erik Duesterhoeft that offers an alternative modelling strategy based on iterative thermodynamic models integrated with quantitative compositional mapping. This second version, distributed as an XMapTools add-on, comes with a redesigned graphical user interface and improved features. + + +## Iterative thermodynamic models + +Bingo-Antidote proposes a hybrid strategy combining the strengths of Gibbs energy minimisation (GEM) and inverse thermobarometry models, based on the comparison between modelled and observed mineral assemblages, modes and compositions. The overall technique relies on quantitative compositional maps obtained by electron probe microanalysis to provide a mutually consistent set of observed data such as bulk rock and mineral compositions. + + +## Theriak-Domino + +Bingo-Antidote uses the Gibbs energy minimiser Theriak developed by Christian de Capitani. The latest version of Theriak-Domino, provided by Doug Tinkham, is required to use Bingo-Antidote. + +[Download Theriak-Domino from Github](https://github.com/Theriak-Domino/theriak-domino/releases/) + +Theriak-Domino Logo + +Bingo-Antidote Screenshot + + +## References + +There are two technical papers, the first by Duesterhoeft & Lanari (2020) and the second by Lanari & Hermann (2021), which includes a proof of concept and an application example. + +The philosophy of iterative thermodynamic modelling behind Bingo-Antidote is also described in older publications: Lanari & Engi (2017) and Lanari & Duesterhoeft (2019). Note that the Lanari & Duesterhoeft (2019) paper gives a general overview of thermodynamic modelling and also provides an example of an application of Bingo-Antidote. + +- Duesterhoeft, E. & Lanari, P. (2020). Iterative thermodynamic modelling – Part 1: A theoretical scoring technique and a computer program (BINGO-ANTIDOTE). *Journal of Metamorphic Geology*, 38, 527-551. [Download pdf](https://pierrelanari.com/wp-content/uploads/2021/05/2020_DuesterhoeftLanari_ITM.pdf) +- Lanari, P. & Hermann, J. (2021). Iterative thermodynamic modelling—Part 2: tracing equilibrium relationships between minerals in metamorphic rocks. *Journal of Metamorphic Geology*, 39, 651-674. [Download pdf](https://pierrelanari.com/wp-content/uploads/2021/07/2021_LanariHermann_JMG.pdf) +- Lanari, P. & Duesterhoeft, E. (2019). Modelling metamorphic rocks using equilibrium thermodynamics and internally consistent databases: past achievements, problems and perspectives. *Journal of Petrology*, 60, 19-56. [Download pdf](https://pierrelanari.com/wp-content/uploads/2021/05/2019_LanariDuesterhoeft2019_JPet.pdf) +- Lanari, P., & Engi, M. (2017). Local bulk composition effects on metamorphic mineral assemblages, *Reviews in Mineralogy and Geochemistry*, 83, 55-102. [Download pdf](https://pierrelanari.com/wp-content/uploads/2021/05/2017_LanariEngi_RiMG.pdf) + + +## Bingo-Antidote Tutorial + +This short tutorial on Bingo-Antidote is from the Goldschmidt Workshop, which took place in Lyon on 8–9 July 2023 and was entitled 'Modern Applications of Phase Equilibrium Modelling'. + +### How to get started + +1. Download **Tutorial_Bingo-Antidote_1_Sikkim.zip** [using this link](https://xmaptools.ch/tutorial/Tutorial_Bingo-Antidote_1_Sikkim.zip). +2. Unzip the folder in a suitable working directory (e.g. Documents/Bingo-Antidote/**Tutorial_Bingo-Antidote_1_Sikkim**/) +3. Open XMapTools. *Note that starting XMapTools can take up to a minute; restarting the program is slightly faster* +4. When the program is ready, a dialog box opens; pick the working directory **Tutorial_Bingo-Antidote_1_Sikkim** and click the button "Open". *You can change the working directory later, but you need to pick a directory when you start the program. A log file is automatically created in the selected working directory.* + +### Example 1 (TG8C-03) – Lanari & Duesterhoeft (2019), JPET + +1. In XMapTools, load the 'aaa4.mat' project file provided in the 'Tutorial_Bingo-Antidote_1_Sikkim' folder. +2. Select the 'Add-ons' tab and click the 'Bingo-Antidote' button to open Bingo-Antidote. +3. In the Bingo-Antidote launcher, you will need to provide Bingo-Antidote with the location of your Theriak setup directory. Then click 'Launch Bingo-Antidote'. +4. Select the chemical system: SiO₂-Al₂O₃-FeO-MgO-Na₂O-CaO-K₂O (exclude TiO₂ and MnO). +5. Select the database JUN92.bs. +6. Select the *P*–*T* range: 600–900 °C and 0.4–1.1 GPa. +7. Guess your initial *P*–*T* for this sample (e.g. 680 °C and 0.7 GPa). +8. Add a ROI for Local Bulk Composition (LBC) by selecting a large area in the map (>90 surf%). Any change in the shape of the ROI updates the LBC. +9. Activate the H₂O fluid specie and set the amount of H to 0.5 mol and then click "next". +10. Select a solution model and add a ROI for the following phases: "biotite", "garnet", "kfeldspar", "plagioclase", "quartz" (b-quartz) and "sillimanite". Exclude the accessory minerals for BA and LBC and click "next". *Note that excluding a phase from the BA means that it will not be selected as part of the observed mineral assemblage. Excluding a phase from LBC means that the pixels of this phase will not be used when Bingo-Antidote calculate a local bulk composition.* +11. Use Bingo to find the conditions of the peak mineral assemblage by manually changing *P* and/or *T* until Qasm is 100%. +12. Use Recipe 1 of Antidote "Find Optimal *P*–*T*–*X*" to obtain the optimal *P*–*T*. Save the results of the last Bingo call and evaluate the quality of the model at the optimal conditions. What are the main differences between model and observations? *Note that you can check the Qcmp values for each mineral to identify those that are not modelled correctly at these conditions.* +13. Save the current Bingo-Antidote project as BA_project_JUN92 using the button "save" available in the menu bar. +14. Calculate the *P*–*T* maps of quality factor. *Note that the data is saved in an Antidote folder in the working directory.* +15. In LBC, activate the option "Optimize *N*" for the fluid and set the range of H between 0.001 and 0.05 mol. *In this case the amount of H in the bulk composition will be optimised by Antidote.* +16. In Antidote, select "Optimization of compositional and activity variables" and "Scanning *H* (fixed *PT*)" and press the button "Antidote". *Check the paper Lanari & Duesterhoeft (2019) for a description of the results of this method.* +17. Adjust the value of H and unselect the option "Optimize *N*". +18. Recalculate the *P*–*T* maps of quality factor and compare the results with the H₂O-saturated case. +19. Calculate optimal P–T conditions for garnet core and rim using the recipe "single-phase thermobarometry". +20. Use a floating window to calculate the changes between the sillimanite-absent and sillimanite-quartz domains. +21. Run a scanning window optimization using a grid resolution of 320 pixels. +22. Calculate a map of chemical potentials with different resolutions. + diff --git a/index.md b/index.md index 6a1b703..2ca42e8 100644 --- a/index.md +++ b/index.md @@ -33,7 +33,7 @@ features: - icon: 🚀 title: Bingo-Antidote - details: Step-by-step guides and documentation for using XMapTools + details: Step-by-step tutorial for using Bingo-Antidote in XMapTools link: /bingo-antidote --- From 46a9d3f46aab833c4babb1d7d722c255a2198b30 Mon Sep 17 00:00:00 2001 From: Pierre Lanari Date: Tue, 10 Feb 2026 06:54:02 +0100 Subject: [PATCH 2/3] Update custom.css --- .vitepress/theme/custom.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vitepress/theme/custom.css b/.vitepress/theme/custom.css index 4c27b30..3d312fd 100644 --- a/.vitepress/theme/custom.css +++ b/.vitepress/theme/custom.css @@ -1,4 +1,4 @@ :root { --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #7957A1, #EB4B4B); + --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #4E004D, #C1298D); } \ No newline at end of file From b8efcb2c8acc67a195a9f16a95fd9b445fe52290 Mon Sep 17 00:00:00 2001 From: Pierre Lanari Date: Tue, 10 Feb 2026 09:46:56 +0100 Subject: [PATCH 3/3] Update to 1.4 with including the embedded doc. --- .vitepress/config.js | 52 ++++- .vitepress/dist/404.html | 22 ++ .vitepress/dist/README.html | 39 ++++ .../dist/assets/Logo_2025_square_512.png | Bin 0 -> 77305 bytes .vitepress/dist/assets/README.md.BF1pv8wB.js | 15 ++ .../dist/assets/README.md.BF1pv8wB.lean.js | 1 + .vitepress/dist/assets/app.CLHRpw3L.js | 1 + .../dist/assets/bingo-antidote.md.CS1jHsQP.js | 1 + .../assets/bingo-antidote.md.CS1jHsQP.lean.js | 1 + .../dist/assets/chunks/framework.DIXg7aqb.js | 19 ++ .../dist/assets/chunks/theme.BZmAIviK.js | 1 + .../dist/assets/doc-addons.md.BJFpqniu.js | 1 + .../assets/doc-addons.md.BJFpqniu.lean.js | 1 + .../dist/assets/doc-epma.md.DFglyrsL.js | 166 +++++++++++++++ .../dist/assets/doc-epma.md.DFglyrsL.lean.js | 1 + .../assets/doc-ext-functions.md.Dv8eBX6B.js | 1 + .../doc-ext-functions.md.Dv8eBX6B.lean.js | 1 + .../dist/assets/doc-images.md.CLTo80uE.js | 1 + .../assets/doc-images.md.CLTo80uE.lean.js | 1 + .../assets/doc-import-maps.md.B-cz6IVV.js | 1 + .../doc-import-maps.md.B-cz6IVV.lean.js | 1 + .../dist/assets/doc-laicpms.md.DD1IZLH8.js | 40 ++++ .../assets/doc-laicpms.md.DD1IZLH8.lean.js | 1 + .../dist/assets/doc-options.md.BUc_pidR.js | 1 + .../assets/doc-options.md.BUc_pidR.lean.js | 1 + .../assets/doc-project-import.md.Dwd43zVv.js | 1 + .../doc-project-import.md.Dwd43zVv.lean.js | 1 + .../dist/assets/doc-sampling.md.DpW5G8we.js | 1 + .../assets/doc-sampling.md.DpW5G8we.lean.js | 1 + .../dist/assets/doc-segment.md.xn7xnz3f.js | 1 + .../assets/doc-segment.md.xn7xnz3f.lean.js | 1 + .../dist/assets/doc-spider.md.Cpkd8BPz.js | 1 + .../assets/doc-spider.md.Cpkd8BPz.lean.js | 1 + .../dist/assets/doc-spot-data.md.BaQTjTtE.js | 1 + .../assets/doc-spot-data.md.BaQTjTtE.lean.js | 1 + .../assets/doc-visualization.md.CwED1vHD.js | 1 + .../doc-visualization.md.CwED1vHD.lean.js | 1 + .../assets/getting-started-2.md.CEzqsAHA.js | 1 + .../getting-started-2.md.CEzqsAHA.lean.js | 1 + .../assets/getting-started.md.BLdsliy4.js | 1 + .../getting-started.md.BLdsliy4.lean.js | 1 + .vitepress/dist/assets/index.md.Doinpoc4.js | 1 + .../dist/assets/index.md.Doinpoc4.lean.js | 1 + .../assets/installation_guide.md.DyFiVWdL.js | 10 + .../installation_guide.md.DyFiVWdL.lean.js | 1 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes .../inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes .../inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes .../assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes .../inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes .../assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes .../inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes .../inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes .../inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes .../assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes .../inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes .../assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes .../inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes .vitepress/dist/assets/style.BwkHieaG.css | 1 + .../dist/assets/tutorials.md.ATW1haj-.js | 1 + .../dist/assets/tutorials.md.ATW1haj-.lean.js | 1 + .vitepress/dist/assets/videos.md.C_lNMixv.js | 1 + .../dist/assets/videos.md.C_lNMixv.lean.js | 1 + .vitepress/dist/bingo-antidote.html | 25 +++ .vitepress/dist/doc-addons.html | 25 +++ .vitepress/dist/doc-epma.html | 190 ++++++++++++++++++ .vitepress/dist/doc-ext-functions.html | 25 +++ .vitepress/dist/doc-images.html | 25 +++ .vitepress/dist/doc-import-maps.html | 25 +++ .vitepress/dist/doc-laicpms.html | 64 ++++++ .vitepress/dist/doc-options.html | 25 +++ .vitepress/dist/doc-project-import.html | 25 +++ .vitepress/dist/doc-sampling.html | 25 +++ .vitepress/dist/doc-segment.html | 25 +++ .vitepress/dist/doc-spider.html | 25 +++ .vitepress/dist/doc-spot-data.html | 25 +++ .vitepress/dist/doc-visualization.html | 25 +++ .vitepress/dist/getting-started-2.html | 25 +++ .vitepress/dist/getting-started.html | 25 +++ .vitepress/dist/hashmap.json | 1 + .vitepress/dist/index.html | 25 +++ .vitepress/dist/installation_guide.html | 34 ++++ .vitepress/dist/tutorials.html | 25 +++ .vitepress/dist/videos.html | 25 +++ .vitepress/dist/vp-icons.css | 1 + doc-addons.md | 50 +++++ doc-epma.md | 148 +++++++------- doc-images.md | 100 +++++++++ doc-import-maps.md | 73 +++++++ doc-laicpms.md | 48 +++-- doc-options.md | 66 ++++++ doc-project-import.md | 110 ++++++++++ doc-sampling.md | 99 +++++++++ doc-segment.md | 96 +++++++++ doc-spider.md | 24 +++ doc-spot-data.md | 95 +++++++++ doc-visualization.md | 127 ++++++++++++ tutorials.md | 64 +++--- 99 files changed, 2096 insertions(+), 123 deletions(-) create mode 100644 .vitepress/dist/404.html create mode 100644 .vitepress/dist/README.html create mode 100644 .vitepress/dist/assets/Logo_2025_square_512.png create mode 100644 .vitepress/dist/assets/README.md.BF1pv8wB.js create mode 100644 .vitepress/dist/assets/README.md.BF1pv8wB.lean.js create mode 100644 .vitepress/dist/assets/app.CLHRpw3L.js create mode 100644 .vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.js create mode 100644 .vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.lean.js create mode 100644 .vitepress/dist/assets/chunks/framework.DIXg7aqb.js create mode 100644 .vitepress/dist/assets/chunks/theme.BZmAIviK.js create mode 100644 .vitepress/dist/assets/doc-addons.md.BJFpqniu.js create mode 100644 .vitepress/dist/assets/doc-addons.md.BJFpqniu.lean.js create mode 100644 .vitepress/dist/assets/doc-epma.md.DFglyrsL.js create mode 100644 .vitepress/dist/assets/doc-epma.md.DFglyrsL.lean.js create mode 100644 .vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.js create mode 100644 .vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.lean.js create mode 100644 .vitepress/dist/assets/doc-images.md.CLTo80uE.js create mode 100644 .vitepress/dist/assets/doc-images.md.CLTo80uE.lean.js create mode 100644 .vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.js create mode 100644 .vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.lean.js create mode 100644 .vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.js create mode 100644 .vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.lean.js create mode 100644 .vitepress/dist/assets/doc-options.md.BUc_pidR.js create mode 100644 .vitepress/dist/assets/doc-options.md.BUc_pidR.lean.js create mode 100644 .vitepress/dist/assets/doc-project-import.md.Dwd43zVv.js create mode 100644 .vitepress/dist/assets/doc-project-import.md.Dwd43zVv.lean.js create mode 100644 .vitepress/dist/assets/doc-sampling.md.DpW5G8we.js create mode 100644 .vitepress/dist/assets/doc-sampling.md.DpW5G8we.lean.js create mode 100644 .vitepress/dist/assets/doc-segment.md.xn7xnz3f.js create mode 100644 .vitepress/dist/assets/doc-segment.md.xn7xnz3f.lean.js create mode 100644 .vitepress/dist/assets/doc-spider.md.Cpkd8BPz.js create mode 100644 .vitepress/dist/assets/doc-spider.md.Cpkd8BPz.lean.js create mode 100644 .vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.js create mode 100644 .vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.lean.js create mode 100644 .vitepress/dist/assets/doc-visualization.md.CwED1vHD.js create mode 100644 .vitepress/dist/assets/doc-visualization.md.CwED1vHD.lean.js create mode 100644 .vitepress/dist/assets/getting-started-2.md.CEzqsAHA.js create mode 100644 .vitepress/dist/assets/getting-started-2.md.CEzqsAHA.lean.js create mode 100644 .vitepress/dist/assets/getting-started.md.BLdsliy4.js create mode 100644 .vitepress/dist/assets/getting-started.md.BLdsliy4.lean.js create mode 100644 .vitepress/dist/assets/index.md.Doinpoc4.js create mode 100644 .vitepress/dist/assets/index.md.Doinpoc4.lean.js create mode 100644 .vitepress/dist/assets/installation_guide.md.DyFiVWdL.js create mode 100644 .vitepress/dist/assets/installation_guide.md.DyFiVWdL.lean.js create mode 100644 .vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 .vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 .vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 .vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 .vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 .vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 .vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 .vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 .vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 .vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 .vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 .vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 .vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 .vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 .vitepress/dist/assets/style.BwkHieaG.css create mode 100644 .vitepress/dist/assets/tutorials.md.ATW1haj-.js create mode 100644 .vitepress/dist/assets/tutorials.md.ATW1haj-.lean.js create mode 100644 .vitepress/dist/assets/videos.md.C_lNMixv.js create mode 100644 .vitepress/dist/assets/videos.md.C_lNMixv.lean.js create mode 100644 .vitepress/dist/bingo-antidote.html create mode 100644 .vitepress/dist/doc-addons.html create mode 100644 .vitepress/dist/doc-epma.html create mode 100644 .vitepress/dist/doc-ext-functions.html create mode 100644 .vitepress/dist/doc-images.html create mode 100644 .vitepress/dist/doc-import-maps.html create mode 100644 .vitepress/dist/doc-laicpms.html create mode 100644 .vitepress/dist/doc-options.html create mode 100644 .vitepress/dist/doc-project-import.html create mode 100644 .vitepress/dist/doc-sampling.html create mode 100644 .vitepress/dist/doc-segment.html create mode 100644 .vitepress/dist/doc-spider.html create mode 100644 .vitepress/dist/doc-spot-data.html create mode 100644 .vitepress/dist/doc-visualization.html create mode 100644 .vitepress/dist/getting-started-2.html create mode 100644 .vitepress/dist/getting-started.html create mode 100644 .vitepress/dist/hashmap.json create mode 100644 .vitepress/dist/index.html create mode 100644 .vitepress/dist/installation_guide.html create mode 100644 .vitepress/dist/tutorials.html create mode 100644 .vitepress/dist/videos.html create mode 100644 .vitepress/dist/vp-icons.css create mode 100644 doc-addons.md create mode 100644 doc-images.md create mode 100644 doc-import-maps.md create mode 100644 doc-options.md create mode 100644 doc-project-import.md create mode 100644 doc-sampling.md create mode 100644 doc-segment.md create mode 100644 doc-spider.md create mode 100644 doc-spot-data.md create mode 100644 doc-visualization.md diff --git a/.vitepress/config.js b/.vitepress/config.js index b1a24a7..e541295 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -2,7 +2,7 @@ import { defineConfig } from 'vitepress' // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "XMapTools 4.5 Documentation", + title: "XMapTools 4.5 Doc", description: "Free and versatile software solution for chemical maps analysis", base: "/Documentation/", @@ -18,12 +18,20 @@ export default defineConfig({ { text: 'Starting XMapTools', link: '/getting-started-2' }, ] }, + { text: 'Workspaces', items: [ + { text: 'Project & Import', link: '/doc-project-import' }, + { text: 'Options', link: '/doc-options' }, + { text: 'Spot Data', link: '/doc-spot-data' }, + { text: 'CT Segmentation', link: '/doc-segment' }, + { text: 'Add-ons', link: '/doc-addons' }, + ] + }, { text: 'EPMA', items: [ { text: 'EPMA', link: '/doc-epma' }, { text: 'Data compatibility', link: '/doc-epma#data-compatibility-for-epma' }, { text: 'Data conversion', link: '/doc-epma#data-conversion-for-epma' }, - { text: 'Generation of mosaics', link: '/doc-epma#generation-of-mosaics' }, { text: 'Importing calibrated data', link: '/doc-epma#importing-calibrated-data-from-epma-and-sem' }, + { text: 'Calibration Assistant', link: '/doc-epma#calibration-assistant-epma' }, ] }, { text: 'LA-ICP-MS', items: [ @@ -32,11 +40,23 @@ export default defineConfig({ { text: 'Converter for LA-ICP-MS data', link: '/doc-laicpms#converter-for-la-icp-ms-data' }, { text: 'Log generator module', link: '/doc-laicpms#log-generator-module' }, { text: 'Calibration', link: '/doc-laicpms#calibration' }, + { text: 'Calibration Assistant', link: '/doc-laicpms#calibration-assistant-la-icpms' }, + ] + }, + { text: 'Tools', items: [ + { text: 'Data Visualization', link: '/doc-visualization' }, + { text: 'Images', link: '/doc-images' }, + { text: 'Sampling Tools', link: '/doc-sampling' }, + { text: 'Spider Module', link: '/doc-spider' }, + { text: 'Import Maps', link: '/doc-import-maps' }, + { text: 'External Functions', link: '/doc-ext-functions' }, ] }, - { text: 'External Functions', link: '/doc-ext-functions' }, - { text: 'Tutorials', link: '/tutorials' }, - { text: 'Videos', link: '/videos' } + { text: 'Learn', items: [ + { text: 'Tutorials', link: '/tutorials' }, + { text: 'Videos', link: '/videos' }, + ] + } ], sidebar: [ @@ -48,6 +68,16 @@ export default defineConfig({ { text: 'Starting XMapTools', link: '/getting-started-2' }, ] }, + { + text: 'Workspaces', + items: [ + { text: 'Project & Import', link: '/doc-project-import' }, + { text: 'Options', link: '/doc-options' }, + { text: 'Spot Data', link: '/doc-spot-data' }, + { text: 'CT Segmentation', link: '/doc-segment' }, + { text: 'Add-ons', link: '/doc-addons' }, + ] + }, { text: 'Documentation', items: [ @@ -55,7 +85,6 @@ export default defineConfig({ items: [ { text: 'Data compatibility', link: '/doc-epma#data-compatibility-for-epma' }, { text: 'Data conversion', link: '/doc-epma#data-conversion-for-epma' }, - { text: 'Generation of mosaics', link: '/doc-epma#generation-of-mosaics' }, { text: 'Importing calibrated data', link: '/doc-epma#importing-calibrated-data-from-epma-and-sem' }, { text: 'Classification', link: '/doc-epma#classification' }, { text: 'Calibration (EPMA)', link: '/doc-epma#calibration-epma' }, @@ -69,6 +98,17 @@ export default defineConfig({ { text: 'Calibration', link: '/doc-laicpms#calibration' }, ] }, + + ] + }, + { + text: 'Tools', + items: [ + { text: 'Data Visualization', link: '/doc-visualization' }, + { text: 'Images', link: '/doc-images' }, + { text: 'Sampling Tools', link: '/doc-sampling' }, + { text: 'Spider Module', link: '/doc-spider' }, + { text: 'Import Maps', link: '/doc-import-maps' }, { text: 'External Functions', link: '/doc-ext-functions', items: [ { text: 'Structural formulas', link: '/doc-ext-functions#structural-formulas' }, diff --git a/.vitepress/dist/404.html b/.vitepress/dist/404.html new file mode 100644 index 0000000..010adff --- /dev/null +++ b/.vitepress/dist/404.html @@ -0,0 +1,22 @@ + + + + + + 404 | XMapTools 4.5 Doc + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/README.html b/.vitepress/dist/README.html new file mode 100644 index 0000000..6161f80 --- /dev/null +++ b/.vitepress/dist/README.html @@ -0,0 +1,39 @@ + + + + + + XMapTools Documentation | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

XMapTools Documentation

Official documentation for XMapTools, a free and versatile software solution for quantitative compositional mapping and analysis. This site is built with VitePress and deployed via GitHub Pages.

Live site: https://xmaptools.github.io/Documentation/


Contributing

Contributions to improve or extend the documentation are welcome. Please follow the workflow described below.

Prerequisites

  • Node.js (v18 or later recommended)
  • Git
  • A GitHub account

Setting Up the Project Locally

  1. Fork this repository on GitHub.
  2. Clone your fork:
    bash
    git clone https://github.com/<your-username>/Documentation.git
    +cd Documentation
  3. Install dependencies:
    bash
    npm install
  4. Start the local development server:
    bash
    npm run dev
    The site will be available at http://localhost:5173/Documentation/. Changes to .md files are reflected live in the browser.

Repository Structure

.
+├── index.md                  # Home page
+├── getting-started.md        # Getting started guide
+├── installation_guide.md     # Installation instructions
+├── doc-epma.md               # EPMA documentation
+├── doc-laicpms.md            # LA-ICP-MS documentation
+├── bingo-antidote.md         # Bingo-Antidote documentation
+├── tutorials.md              # Tutorials
+├── videos.md                 # Video resources
+├── .vitepress/               # VitePress configuration and theme
+│   ├── config.js             # Site configuration (nav, sidebar, ...)
+│   └── theme/                # Custom theme overrides
+└── package.json

Writing and Editing Content

  • All documentation pages are written in Markdown (.md files) at the root of the repository.
  • VitePress supports standard Markdown syntax plus additional features such as custom containers, code highlighting, and frontmatter.
  • Images are hosted in the separate Documentation_Images repository. Reference them using raw GitHub URLs with an HTML <img> tag:
    html
    <img src="https://raw.githubusercontent.com/xmaptools/Documentation_Images/main/Figures/my-image.png" alt="description" style="max-width: 100%; height: auto; display: block; margin: 0 auto;">
  • Navigation and sidebar links are configured in .vitepress/config.js.

Submitting Changes

  1. Create a new branch for your changes:
    bash
    git checkout -b my-contribution
  2. Make your edits and verify them locally with npm run dev.
  3. Commit your changes with a clear message:
    bash
    git add .
    +git commit -m "docs: describe your changes"
  4. Push to your fork:
    bash
    git push origin my-contribution
  5. Open a Pull Request against the main branch of this repository.
  6. Wait for review and approval before merging.

Style Guidelines

  • Use clear, concise language.
  • Use headings (##, ###) to structure content logically.
  • Prefer numbered lists for sequential instructions and bullet points for unordered items.
  • Include screenshots or diagrams where they help clarify a concept.
  • Keep filenames lowercase with underscores (e.g., installation_guide.md).

Building for Production

bash
npm run build

The static site is generated in .vitepress/dist/ and automatically deployed to GitHub Pages via the CI workflow on push to main.

License

This project is licensed under the GNU General Public License v3.0.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/assets/Logo_2025_square_512.png b/.vitepress/dist/assets/Logo_2025_square_512.png new file mode 100644 index 0000000000000000000000000000000000000000..bd13bf46766eea88db43894d7af4efb984505a88 GIT binary patch literal 77305 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 literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/README.md.BF1pv8wB.js b/.vitepress/dist/assets/README.md.BF1pv8wB.js new file mode 100644 index 0000000..7af4b63 --- /dev/null +++ b/.vitepress/dist/assets/README.md.BF1pv8wB.js @@ -0,0 +1,15 @@ +import{_ as i,o as a,c as e,ae as t}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"XMapTools Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md"}'),n={name:"README.md"};function l(o,s,r,h,p,d){return a(),e("div",null,[...s[0]||(s[0]=[t(`

Official documentation for XMapTools, a free and versatile software solution for quantitative compositional mapping and analysis. This site is built with VitePress and deployed via GitHub Pages.

Live site: https://xmaptools.github.io/Documentation/


Contributing

Contributions to improve or extend the documentation are welcome. Please follow the workflow described below.

Prerequisites

  • Node.js (v18 or later recommended)
  • Git
  • A GitHub account

Setting Up the Project Locally

  1. Fork this repository on GitHub.
  2. Clone your fork:
    bash
    git clone https://github.com/<your-username>/Documentation.git
    +cd Documentation
  3. Install dependencies:
    bash
    npm install
  4. Start the local development server:
    bash
    npm run dev
    The site will be available at http://localhost:5173/Documentation/. Changes to .md files are reflected live in the browser.

Repository Structure

.
+├── index.md                  # Home page
+├── getting-started.md        # Getting started guide
+├── installation_guide.md     # Installation instructions
+├── doc-epma.md               # EPMA documentation
+├── doc-laicpms.md            # LA-ICP-MS documentation
+├── bingo-antidote.md         # Bingo-Antidote documentation
+├── tutorials.md              # Tutorials
+├── videos.md                 # Video resources
+├── .vitepress/               # VitePress configuration and theme
+│   ├── config.js             # Site configuration (nav, sidebar, ...)
+│   └── theme/                # Custom theme overrides
+└── package.json

Writing and Editing Content

  • All documentation pages are written in Markdown (.md files) at the root of the repository.
  • VitePress supports standard Markdown syntax plus additional features such as custom containers, code highlighting, and frontmatter.
  • Images are hosted in the separate Documentation_Images repository. Reference them using raw GitHub URLs with an HTML <img> tag:
    html
    <img src="https://raw.githubusercontent.com/xmaptools/Documentation_Images/main/Figures/my-image.png" alt="description" style="max-width: 100%; height: auto; display: block; margin: 0 auto;">
  • Navigation and sidebar links are configured in .vitepress/config.js.

Submitting Changes

  1. Create a new branch for your changes:
    bash
    git checkout -b my-contribution
  2. Make your edits and verify them locally with npm run dev.
  3. Commit your changes with a clear message:
    bash
    git add .
    +git commit -m "docs: describe your changes"
  4. Push to your fork:
    bash
    git push origin my-contribution
  5. Open a Pull Request against the main branch of this repository.
  6. Wait for review and approval before merging.

Style Guidelines

  • Use clear, concise language.
  • Use headings (##, ###) to structure content logically.
  • Prefer numbered lists for sequential instructions and bullet points for unordered items.
  • Include screenshots or diagrams where they help clarify a concept.
  • Keep filenames lowercase with underscores (e.g., installation_guide.md).

Building for Production

bash
npm run build

The static site is generated in .vitepress/dist/ and automatically deployed to GitHub Pages via the CI workflow on push to main.

License

This project is licensed under the GNU General Public License v3.0.

`,24)])])}const u=i(n,[["render",l]]);export{g as __pageData,u as default}; diff --git a/.vitepress/dist/assets/README.md.BF1pv8wB.lean.js b/.vitepress/dist/assets/README.md.BF1pv8wB.lean.js new file mode 100644 index 0000000..1bf2c6e --- /dev/null +++ b/.vitepress/dist/assets/README.md.BF1pv8wB.lean.js @@ -0,0 +1 @@ +import{_ as i,o as a,c as e,ae as t}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"XMapTools Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md"}'),n={name:"README.md"};function l(o,s,r,h,p,d){return a(),e("div",null,[...s[0]||(s[0]=[t("",24)])])}const u=i(n,[["render",l]]);export{g as __pageData,u as default}; diff --git a/.vitepress/dist/assets/app.CLHRpw3L.js b/.vitepress/dist/assets/app.CLHRpw3L.js new file mode 100644 index 0000000..e45fe67 --- /dev/null +++ b/.vitepress/dist/assets/app.CLHRpw3L.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.BZmAIviK.js";import{R as s,a0 as i,a1 as u,a2 as c,a3 as l,a4 as f,a5 as d,a6 as m,a7 as h,a8 as g,a9 as A,d as v,u as R,v as w,s as y,aa as C,ab as P,ac as b,ad as E}from"./chunks/framework.DIXg7aqb.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),P(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/.vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.js b/.vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.js new file mode 100644 index 0000000..76a3036 --- /dev/null +++ b/.vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as i}from"./chunks/framework.DIXg7aqb.js";const p=JSON.parse('{"title":"Bingo-Antidote","description":"","frontmatter":{},"headers":[],"relativePath":"bingo-antidote.md","filePath":"bingo-antidote.md"}'),n={name:"bingo-antidote.md"};function r(l,e,s,d,h,m){return a(),o("div",null,[...e[0]||(e[0]=[i('

Bingo-Antidote

Table of contents

What is Bingo-Antidote?

Bingo-Antidote Logo

Bingo-Antidote is a petrological software originally developed by Pierre Lanari and Erik Duesterhoeft that offers an alternative modelling strategy based on iterative thermodynamic models integrated with quantitative compositional mapping. This second version, distributed as an XMapTools add-on, comes with a redesigned graphical user interface and improved features.

Iterative thermodynamic models

Bingo-Antidote proposes a hybrid strategy combining the strengths of Gibbs energy minimisation (GEM) and inverse thermobarometry models, based on the comparison between modelled and observed mineral assemblages, modes and compositions. The overall technique relies on quantitative compositional maps obtained by electron probe microanalysis to provide a mutually consistent set of observed data such as bulk rock and mineral compositions.

Theriak-Domino

Bingo-Antidote uses the Gibbs energy minimiser Theriak developed by Christian de Capitani. The latest version of Theriak-Domino, provided by Doug Tinkham, is required to use Bingo-Antidote.

Download Theriak-Domino from Github

Theriak-Domino LogoBingo-Antidote Screenshot

References

There are two technical papers, the first by Duesterhoeft & Lanari (2020) and the second by Lanari & Hermann (2021), which includes a proof of concept and an application example.

The philosophy of iterative thermodynamic modelling behind Bingo-Antidote is also described in older publications: Lanari & Engi (2017) and Lanari & Duesterhoeft (2019). Note that the Lanari & Duesterhoeft (2019) paper gives a general overview of thermodynamic modelling and also provides an example of an application of Bingo-Antidote.

  • Duesterhoeft, E. & Lanari, P. (2020). Iterative thermodynamic modelling – Part 1: A theoretical scoring technique and a computer program (BINGO-ANTIDOTE). Journal of Metamorphic Geology, 38, 527-551. Download pdf
  • Lanari, P. & Hermann, J. (2021). Iterative thermodynamic modelling—Part 2: tracing equilibrium relationships between minerals in metamorphic rocks. Journal of Metamorphic Geology, 39, 651-674. Download pdf
  • Lanari, P. & Duesterhoeft, E. (2019). Modelling metamorphic rocks using equilibrium thermodynamics and internally consistent databases: past achievements, problems and perspectives. Journal of Petrology, 60, 19-56. Download pdf
  • Lanari, P., & Engi, M. (2017). Local bulk composition effects on metamorphic mineral assemblages, Reviews in Mineralogy and Geochemistry, 83, 55-102. Download pdf

Bingo-Antidote Tutorial

This short tutorial on Bingo-Antidote is from the Goldschmidt Workshop, which took place in Lyon on 8–9 July 2023 and was entitled 'Modern Applications of Phase Equilibrium Modelling'.

How to get started

  1. Download Tutorial_Bingo-Antidote_1_Sikkim.zip using this link.
  2. Unzip the folder in a suitable working directory (e.g. Documents/Bingo-Antidote/Tutorial_Bingo-Antidote_1_Sikkim/)
  3. Open XMapTools. Note that starting XMapTools can take up to a minute; restarting the program is slightly faster
  4. When the program is ready, a dialog box opens; pick the working directory Tutorial_Bingo-Antidote_1_Sikkim and click the button "Open". You can change the working directory later, but you need to pick a directory when you start the program. A log file is automatically created in the selected working directory.

Example 1 (TG8C-03) – Lanari & Duesterhoeft (2019), JPET

  1. In XMapTools, load the 'aaa4.mat' project file provided in the 'Tutorial_Bingo-Antidote_1_Sikkim' folder.
  2. Select the 'Add-ons' tab and click the 'Bingo-Antidote' button to open Bingo-Antidote.
  3. In the Bingo-Antidote launcher, you will need to provide Bingo-Antidote with the location of your Theriak setup directory. Then click 'Launch Bingo-Antidote'.
  4. Select the chemical system: SiO₂-Al₂O₃-FeO-MgO-Na₂O-CaO-K₂O (exclude TiO₂ and MnO).
  5. Select the database JUN92.bs.
  6. Select the PT range: 600–900 °C and 0.4–1.1 GPa.
  7. Guess your initial PT for this sample (e.g. 680 °C and 0.7 GPa).
  8. Add a ROI for Local Bulk Composition (LBC) by selecting a large area in the map (>90 surf%). Any change in the shape of the ROI updates the LBC.
  9. Activate the H₂O fluid specie and set the amount of H to 0.5 mol and then click "next".
  10. Select a solution model and add a ROI for the following phases: "biotite", "garnet", "kfeldspar", "plagioclase", "quartz" (b-quartz) and "sillimanite". Exclude the accessory minerals for BA and LBC and click "next". Note that excluding a phase from the BA means that it will not be selected as part of the observed mineral assemblage. Excluding a phase from LBC means that the pixels of this phase will not be used when Bingo-Antidote calculate a local bulk composition.
  11. Use Bingo to find the conditions of the peak mineral assemblage by manually changing P and/or T until Qasm is 100%.
  12. Use Recipe 1 of Antidote "Find Optimal PTX" to obtain the optimal PT. Save the results of the last Bingo call and evaluate the quality of the model at the optimal conditions. What are the main differences between model and observations? Note that you can check the Qcmp values for each mineral to identify those that are not modelled correctly at these conditions.
  13. Save the current Bingo-Antidote project as BA_project_JUN92 using the button "save" available in the menu bar.
  14. Calculate the PT maps of quality factor. Note that the data is saved in an Antidote folder in the working directory.
  15. In LBC, activate the option "Optimize N" for the fluid and set the range of H between 0.001 and 0.05 mol. In this case the amount of H in the bulk composition will be optimised by Antidote.
  16. In Antidote, select "Optimization of compositional and activity variables" and "Scanning H (fixed PT)" and press the button "Antidote". Check the paper Lanari & Duesterhoeft (2019) for a description of the results of this method.
  17. Adjust the value of H and unselect the option "Optimize N".
  18. Recalculate the PT maps of quality factor and compare the results with the H₂O-saturated case.
  19. Calculate optimal P–T conditions for garnet core and rim using the recipe "single-phase thermobarometry".
  20. Use a floating window to calculate the changes between the sillimanite-absent and sillimanite-quartz domains.
  21. Run a scanning window optimization using a grid resolution of 320 pixels.
  22. Calculate a map of chemical potentials with different resolutions.
',23)])])}const u=t(n,[["render",r]]);export{p as __pageData,u as default}; diff --git a/.vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.lean.js b/.vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.lean.js new file mode 100644 index 0000000..ece242a --- /dev/null +++ b/.vitepress/dist/assets/bingo-antidote.md.CS1jHsQP.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as i}from"./chunks/framework.DIXg7aqb.js";const p=JSON.parse('{"title":"Bingo-Antidote","description":"","frontmatter":{},"headers":[],"relativePath":"bingo-antidote.md","filePath":"bingo-antidote.md"}'),n={name:"bingo-antidote.md"};function r(l,e,s,d,h,m){return a(),o("div",null,[...e[0]||(e[0]=[i("",23)])])}const u=t(n,[["render",r]]);export{p as __pageData,u as default}; diff --git a/.vitepress/dist/assets/chunks/framework.DIXg7aqb.js b/.vitepress/dist/assets/chunks/framework.DIXg7aqb.js new file mode 100644 index 0000000..81a3378 --- /dev/null +++ b/.vitepress/dist/assets/chunks/framework.DIXg7aqb.js @@ -0,0 +1,19 @@ +/** +* @vue/shared v3.5.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Fs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const re={},Ot=[],ke=()=>{},Yr=()=>!1,nn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Hs=e=>e.startsWith("onUpdate:"),fe=Object.assign,Ds=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Lo=Object.prototype.hasOwnProperty,Q=(e,t)=>Lo.call(e,t),B=Array.isArray,It=e=>Ln(e)==="[object Map]",Jr=e=>Ln(e)==="[object Set]",G=e=>typeof e=="function",le=e=>typeof e=="string",Ze=e=>typeof e=="symbol",te=e=>e!==null&&typeof e=="object",zr=e=>(te(e)||G(e))&&G(e.then)&&G(e.catch),Qr=Object.prototype.toString,Ln=e=>Qr.call(e),No=e=>Ln(e).slice(8,-1),Zr=e=>Ln(e)==="[object Object]",Nn=e=>le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,mt=Fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Fo=/-\w/g,Le=Fn(e=>e.replace(Fo,t=>t.slice(1).toUpperCase())),Ho=/\B([A-Z])/g,at=Fn(e=>e.replace(Ho,"-$1").toLowerCase()),Hn=Fn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Fn(e=>e?`on${Hn(e)}`:""),ot=(e,t)=>!Object.is(e,t),Zn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Do=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$o=e=>{const t=le(e)?Number(e):NaN;return isNaN(t)?e:t};let rr;const Dn=()=>rr||(rr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $s(e){if(B(e)){const t={};for(let n=0;n{if(n){const s=n.split(Vo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(le(e))t=e;else if(B(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Ko=e=>le(e)?e:e==null?"":B(e)||te(e)&&(e.toString===Qr||!G(e.toString))?ni(e)?Ko(e.value):JSON.stringify(e,si,2):String(e),si=(e,t)=>ni(t)?si(e,t.value):It(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[es(s,i)+" =>"]=r,n),{})}:Jr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>es(n))}:Ze(t)?es(t):te(t)&&!B(t)&&!Zr(t)?String(t):t,es=(e,t="")=>{var n;return Ze(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let pe;class qo{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=pe,!t&&pe&&(this.index=(pe.scopes||(pe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(pe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Ut){let t=Ut;for(Ut=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;kt;){let t=kt;for(kt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ci(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ai(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ks(s),Xo(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ss(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(fi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function fi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Gt)||(e.globalVersion=Gt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ss(e))))return;e.flags|=2;const t=e.dep,n=se,s=Fe;se=e,Fe=!0;try{ci(e);const r=e.fn(e._value);(t.version===0||ot(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{se=n,Fe=s,ai(e),e.flags&=-3}}function ks(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ks(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Xo(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Fe=!0;const ui=[];function Xe(){ui.push(Fe),Fe=!1}function Ye(){const e=ui.pop();Fe=e===void 0?!0:e}function ir(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=se;se=void 0;try{t()}finally{se=n}}}let Gt=0;class Yo{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $n{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!se||!Fe||se===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==se)n=this.activeLink=new Yo(se,this),se.deps?(n.prevDep=se.depsTail,se.depsTail.nextDep=n,se.depsTail=n):se.deps=se.depsTail=n,di(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=se.depsTail,n.nextDep=void 0,se.depsTail.nextDep=n,se.depsTail=n,se.deps===n&&(se.deps=s)}return n}trigger(t){this.version++,Gt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ws()}}}function di(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)di(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Tn=new WeakMap,vt=Symbol(""),xs=Symbol(""),Xt=Symbol("");function me(e,t,n){if(Fe&&se){let s=Tn.get(e);s||Tn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new $n),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const l=Tn.get(e);if(!l){Gt++;return}const o=c=>{c&&c.trigger()};if(Vs(),t==="clear")l.forEach(o);else{const c=B(e),u=c&&Nn(n);if(c&&n==="length"){const a=Number(s);l.forEach((h,v)=>{(v==="length"||v===Xt||!Ze(v)&&v>=a)&&o(h)})}else switch((n!==void 0||l.has(void 0))&&o(l.get(n)),u&&o(l.get(Xt)),t){case"add":c?u&&o(l.get("length")):(o(l.get(vt)),It(e)&&o(l.get(xs)));break;case"delete":c||(o(l.get(vt)),It(e)&&o(l.get(xs)));break;case"set":It(e)&&o(l.get(vt));break}}Ws()}function Jo(e,t){const n=Tn.get(e);return n&&n.get(t)}function At(e){const t=z(e);return t===e?t:(me(t,"iterate",Xt),Ae(e)?t:t.map(He))}function jn(e){return me(e=z(e),"iterate",Xt),e}function nt(e,t){return Je(e)?Ft(lt(e)?He(t):t):He(t)}const zo={__proto__:null,[Symbol.iterator](){return ns(this,Symbol.iterator,e=>nt(this,e))},concat(...e){return At(this).concat(...e.map(t=>B(t)?At(t):t))},entries(){return ns(this,"entries",e=>(e[1]=nt(this,e[1]),e))},every(e,t){return Ue(this,"every",e,t,void 0,arguments)},filter(e,t){return Ue(this,"filter",e,t,n=>n.map(s=>nt(this,s)),arguments)},find(e,t){return Ue(this,"find",e,t,n=>nt(this,n),arguments)},findIndex(e,t){return Ue(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ue(this,"findLast",e,t,n=>nt(this,n),arguments)},findLastIndex(e,t){return Ue(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ue(this,"forEach",e,t,void 0,arguments)},includes(...e){return ss(this,"includes",e)},indexOf(...e){return ss(this,"indexOf",e)},join(e){return At(this).join(e)},lastIndexOf(...e){return ss(this,"lastIndexOf",e)},map(e,t){return Ue(this,"map",e,t,void 0,arguments)},pop(){return jt(this,"pop")},push(...e){return jt(this,"push",e)},reduce(e,...t){return or(this,"reduce",e,t)},reduceRight(e,...t){return or(this,"reduceRight",e,t)},shift(){return jt(this,"shift")},some(e,t){return Ue(this,"some",e,t,void 0,arguments)},splice(...e){return jt(this,"splice",e)},toReversed(){return At(this).toReversed()},toSorted(e){return At(this).toSorted(e)},toSpliced(...e){return At(this).toSpliced(...e)},unshift(...e){return jt(this,"unshift",e)},values(){return ns(this,"values",e=>nt(this,e))}};function ns(e,t,n){const s=jn(e),r=s[t]();return s!==e&&!Ae(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const Qo=Array.prototype;function Ue(e,t,n,s,r,i){const l=jn(e),o=l!==e&&!Ae(e),c=l[t];if(c!==Qo[t]){const h=c.apply(e,i);return o?He(h):h}let u=n;l!==e&&(o?u=function(h,v){return n.call(this,nt(e,h),v,e)}:n.length>2&&(u=function(h,v){return n.call(this,h,v,e)}));const a=c.call(l,u,s);return o&&r?r(a):a}function or(e,t,n,s){const r=jn(e);let i=n;return r!==e&&(Ae(e)?n.length>3&&(i=function(l,o,c){return n.call(this,l,o,c,e)}):i=function(l,o,c){return n.call(this,l,nt(e,o),c,e)}),r[t](i,...s)}function ss(e,t,n){const s=z(e);me(s,"iterate",Xt);const r=s[t](...n);return(r===-1||r===!1)&&Vn(n[0])?(n[0]=z(n[0]),s[t](...n)):r}function jt(e,t,n=[]){Xe(),Vs();const s=z(e)[t].apply(e,n);return Ws(),Ye(),s}const Zo=Fs("__proto__,__v_isRef,__isVue"),hi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ze));function el(e){Ze(e)||(e=String(e));const t=z(this);return me(t,"has",e),t.hasOwnProperty(e)}class pi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?fl:yi:i?vi:mi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=B(t);if(!r){let c;if(l&&(c=zo[n]))return c;if(n==="hasOwnProperty")return el}const o=Reflect.get(t,n,ae(t)?t:s);if((Ze(n)?hi.has(n):Zo(n))||(r||me(t,"get",n),i))return o;if(ae(o)){const c=l&&Nn(n)?o:o.value;return r&&te(c)?Yt(c):c}return te(o)?r?Yt(o):Nt(o):o}}class gi extends pi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const l=B(t)&&Nn(n);if(!this._isShallow){const u=Je(i);if(!Ae(s)&&!Je(s)&&(i=z(i),s=z(s)),!l&&ae(i)&&!ae(s))return u||(i.value=s),!0}const o=l?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function il(e,t,n){return function(...s){const r=this.__v_raw,i=z(r),l=It(i),o=e==="entries"||e===Symbol.iterator&&l,c=e==="keys"&&l,u=r[e](...s),a=n?Ts:t?Ft:He;return!t&&me(i,"iterate",c?xs:vt),fe(Object.create(u),{next(){const{value:h,done:v}=u.next();return v?{value:h,done:v}:{value:o?[a(h[0]),a(h[1])]:a(h),done:v}}})}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ol(e,t){const n={get(r){const i=this.__v_raw,l=z(i),o=z(r);e||(ot(r,o)&&me(l,"get",r),me(l,"get",o));const{has:c}=cn(l),u=t?Ts:e?Ft:He;if(c.call(l,r))return u(i.get(r));if(c.call(l,o))return u(i.get(o));i!==l&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(z(r),"iterate",vt),r.size},has(r){const i=this.__v_raw,l=z(i),o=z(r);return e||(ot(r,o)&&me(l,"has",r),me(l,"has",o)),r===o?i.has(r):i.has(r)||i.has(o)},forEach(r,i){const l=this,o=l.__v_raw,c=z(o),u=t?Ts:e?Ft:He;return!e&&me(c,"iterate",vt),o.forEach((a,h)=>r.call(i,u(a),u(h),l))}};return fe(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Ae(r)&&!Je(r)&&(r=z(r));const i=z(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Ae(i)&&!Je(i)&&(i=z(i));const l=z(this),{has:o,get:c}=cn(l);let u=o.call(l,r);u||(r=z(r),u=o.call(l,r));const a=c.call(l,r);return l.set(r,i),u?ot(i,a)&&Ge(l,"set",r,i):Ge(l,"add",r,i),this},delete(r){const i=z(this),{has:l,get:o}=cn(i);let c=l.call(i,r);c||(r=z(r),c=l.call(i,r)),o&&o.call(i,r);const u=i.delete(r);return c&&Ge(i,"delete",r,void 0),u},clear(){const r=z(this),i=r.size!==0,l=r.clear();return i&&Ge(r,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=il(r,e,t)}),n}function Us(e,t){const n=ol(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Q(n,r)&&r in s?n:s,r,i)}const ll={get:Us(!1,!1)},cl={get:Us(!1,!0)},al={get:Us(!0,!1)};const mi=new WeakMap,vi=new WeakMap,yi=new WeakMap,fl=new WeakMap;function ul(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function dl(e){return e.__v_skip||!Object.isExtensible(e)?0:ul(No(e))}function Nt(e){return Je(e)?e:Bs(e,!1,nl,ll,mi)}function hl(e){return Bs(e,!1,rl,cl,vi)}function Yt(e){return Bs(e,!0,sl,al,yi)}function Bs(e,t,n,s,r){if(!te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=dl(e);if(i===0)return e;const l=r.get(e);if(l)return l;const o=new Proxy(e,i===2?s:n);return r.set(e,o),o}function lt(e){return Je(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function Je(e){return!!(e&&e.__v_isReadonly)}function Ae(e){return!!(e&&e.__v_isShallow)}function Vn(e){return e?!!e.__v_raw:!1}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function bn(e){return!Q(e,"__v_skip")&&Object.isExtensible(e)&&ei(e,"__v_skip",!0),e}const He=e=>te(e)?Nt(e):e,Ft=e=>te(e)?Yt(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function yt(e){return _i(e,!1)}function Ie(e){return _i(e,!0)}function _i(e,t){return ae(e)?e:new pl(e,t)}class pl{constructor(t,n){this.dep=new $n,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:z(t),this._value=n?t:He(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ae(t)||Je(t);t=s?t:z(t),ot(t,n)&&(this._rawValue=t,this._value=s?t:He(t),this.dep.trigger())}}function Wn(e){return ae(e)?e.value:e}function ce(e){return G(e)?e():Wn(e)}const gl={get:(e,t,n)=>t==="__v_raw"?e:Wn(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ae(r)&&!ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function bi(e){return lt(e)?e:new Proxy(e,gl)}class ml{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new $n,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function vl(e){return new ml(e)}class yl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=z(t);let r=!0,i=t;if(!B(t)||!Nn(String(n)))do r=!Vn(i)||Ae(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=Wn(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ae(this._raw[this._key])){const n=this._object[this._key];if(ae(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Jo(this._raw,this._key)}}class _l{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function bl(e,t,n){return ae(e)?e:G(e)?new _l(e):te(e)&&arguments.length>1?wl(e,t,n):yt(e)}function wl(e,t,n){return new yl(e,t,n)}class Sl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $n(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Gt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&se!==this)return li(this,!0),!0}get value(){const t=this.dep.track();return fi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function xl(e,t,n=!1){let s,r;return G(e)?s=e:(s=e.get,r=e.set),new Sl(s,r,n)}const fn={},En=new WeakMap;let pt;function Tl(e,t=!1,n=pt){if(n){let s=En.get(n);s||En.set(n,s=[]),s.push(e)}}function El(e,t,n=re){const{immediate:s,deep:r,once:i,scheduler:l,augmentJob:o,call:c}=n,u=g=>r?g:Ae(g)||r===!1||r===0?it(g,1):it(g);let a,h,v,_,C=!1,P=!1;if(ae(e)?(h=()=>e.value,C=Ae(e)):lt(e)?(h=()=>u(e),C=!0):B(e)?(P=!0,C=e.some(g=>lt(g)||Ae(g)),h=()=>e.map(g=>{if(ae(g))return g.value;if(lt(g))return u(g);if(G(g))return c?c(g,2):g()})):G(e)?t?h=c?()=>c(e,2):e:h=()=>{if(v){Xe();try{v()}finally{Ye()}}const g=pt;pt=a;try{return c?c(e,3,[_]):e(_)}finally{pt=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>it(g(),O)}const K=ri(),H=()=>{a.stop(),K&&K.active&&Ds(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),H()}}let V=P?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||C||(P?O.some((W,R)=>ot(W,V[R])):ot(O,V))){v&&v();const W=pt;pt=a;try{const R=[O,V===fn?void 0:P&&V[0]===fn?[]:V,_];V=O,c?c(t,3,R):t(...R)}finally{pt=W}}}else a.run()};return o&&o(p),a=new ii(h),a.scheduler=l?()=>l(p,!1):p,_=g=>Tl(g,!1,a),v=a.onStop=()=>{const g=En.get(a);if(g){if(c)c(g,4);else for(const O of g)O();En.delete(a)}},t?s?p(!0):V=a.run():l?l(p.bind(null,!0),!0):a.run(),H.pause=a.pause.bind(a),H.resume=a.resume.bind(a),H.stop=H,H}function it(e,t=1/0,n){if(t<=0||!te(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ae(e))it(e.value,t,n);else if(B(e))for(let s=0;s{it(s,t,n)});else if(Zr(e)){for(const s in e)it(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&it(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function sn(e,t,n,s){try{return s?e(...s):e()}catch(r){kn(r,t,n)}}function De(e,t,n,s){if(G(e)){const r=sn(e,t,n,s);return r&&zr(r)&&r.catch(i=>{kn(i,t,n)}),r}if(B(e)){const r=[];for(let i=0;i>>1,r=be[s],i=Jt(r);i=Jt(n)?be.push(e):be.splice(Al(t),0,e),e.flags|=1,Si()}}function Si(){Cn||(Cn=wi.then(xi))}function Rl(e){B(e)?Pt.push(...e):st&&e.id===-1?st.splice(Mt+1,0,e):e.flags&1||(Pt.push(e),e.flags|=1),Si()}function lr(e,t,n=Ve+1){for(;nJt(n)-Jt(s));if(Pt.length=0,st){st.push(...t);return}for(st=t,Mt=0;Mte.id==null?e.flags&2?-1:1/0:e.id;function xi(e){try{for(Ve=0;Ve{s._d&&In(-1);const i=Rn(t);let l;try{l=e(...r)}finally{Rn(i),s._d&&In(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function We(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let l=0;l1)return n&&G(t)?t.call(s&&s.proxy):t}}function Ei(){return!!(Et()||wt)}const Il=Symbol.for("v-scx"),Pl=()=>_t(Il);function Ci(e,t){return Bn(e,null,t)}function mf(e,t){return Bn(e,null,{flush:"post"})}function Pe(e,t,n){return Bn(e,t,n)}function Bn(e,t,n=re){const{immediate:s,deep:r,flush:i,once:l}=n,o=fe({},n),c=t&&s||!t&&i!=="post";let u;if(en){if(i==="sync"){const _=Pl();u=_.__watcherHandles||(_.__watcherHandles=[])}else if(!c){const _=()=>{};return _.stop=ke,_.resume=ke,_.pause=ke,_}}const a=ye;o.call=(_,C,P)=>De(_,a,C,P);let h=!1;i==="post"?o.scheduler=_=>{Ee(_,a&&a.suspense)}:i!=="sync"&&(h=!0,o.scheduler=(_,C)=>{C?_():Ks(_)}),o.augmentJob=_=>{t&&(_.flags|=4),h&&(_.flags|=2,a&&(_.id=a.uid,_.i=a))};const v=El(e,t,o);return en&&(u?u.push(v):c&&v()),v}function Ll(e,t,n){const s=this.proxy,r=le(e)?e.includes(".")?Ai(s,e):()=>s[e]:e.bind(s,s);let i;G(t)?i=t:(i=t.handler,n=t);const l=rn(this),o=Bn(r,i.bind(s),n);return l(),o}function Ai(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,qe=Symbol("_leaveCb"),un=Symbol("_enterCb");function Fl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ht(()=>{e.isMounted=!0}),Di(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],Mi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Oi=e=>{const t=e.subTree;return t.component?Oi(t.component):t},Hl={name:"BaseTransition",props:Mi,setup(e,{slots:t}){const n=Et(),s=Fl();return()=>{const r=t.default&&Li(t.default(),!0);if(!r||!r.length)return;const i=Ii(r),l=z(e),{mode:o}=l;if(s.isLeaving)return rs(i);const c=cr(i);if(!c)return rs(i);let u=Es(c,l,s,n,h=>u=h);c.type!==ue&&zt(c,u);let a=n.subTree&&cr(n.subTree);if(a&&a.type!==ue&&!gt(a,c)&&Oi(n).type!==ue){let h=Es(a,l,s,n);if(zt(a,h),o==="out-in"&&c.type!==ue)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},rs(i);o==="in-out"&&c.type!==ue?h.delayLeave=(v,_,C)=>{const P=Pi(s,a);P[String(a.key)]=a,v[qe]=()=>{_(),v[qe]=void 0,delete u.delayedLeave,a=void 0},u.delayedLeave=()=>{C(),delete u.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Ii(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ue){t=n;break}}return t}const Dl=Hl;function Pi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Es(e,t,n,s,r){const{appear:i,mode:l,persisted:o=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:v,onLeave:_,onAfterLeave:C,onLeaveCancelled:P,onBeforeAppear:K,onAppear:H,onAfterAppear:V,onAppearCancelled:p}=t,g=String(e.key),O=Pi(n,e),W=(T,I)=>{T&&De(T,s,9,I)},R=(T,I)=>{const E=I[1];W(T,I),B(T)?T.every(y=>y.length<=1)&&E():T.length<=1&&E()},U={mode:l,persisted:o,beforeEnter(T){let I=c;if(!n.isMounted)if(i)I=K||c;else return;T[qe]&&T[qe](!0);const E=O[g];E&>(e,E)&&E.el[qe]&&E.el[qe](),W(I,[T])},enter(T){let I=u,E=a,y=h;if(!n.isMounted)if(i)I=H||u,E=V||a,y=p||h;else return;let N=!1;const Y=T[un]=ie=>{N||(N=!0,ie?W(y,[T]):W(E,[T]),U.delayedLeave&&U.delayedLeave(),T[un]=void 0)};I?R(I,[T,Y]):Y()},leave(T,I){const E=String(e.key);if(T[un]&&T[un](!0),n.isUnmounting)return I();W(v,[T]);let y=!1;const N=T[qe]=Y=>{y||(y=!0,I(),Y?W(P,[T]):W(C,[T]),T[qe]=void 0,O[E]===e&&delete O[E])};O[E]=e,_?R(_,[T,N]):N()},clone(T){const I=Es(T,t,n,s,r);return r&&r(I),I}};return U}function rs(e){if(Kn(e))return e=ct(e),e.children=null,e}function cr(e){if(!Kn(e))return Ri(e.type)&&e.children?Ii(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&G(n.default))return n.default()}}function zt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,zt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Li(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iLt(C,t&&(B(t)?t[P]:t),n,s,r));return}if(bt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Lt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Ys(s.component):s.el,l=r?null:i,{i:o,r:c}=e,u=t&&t.r,a=o.refs===re?o.refs={}:o.refs,h=o.setupState,v=z(h),_=h===re?Yr:C=>Q(v,C);if(u!=null&&u!==c){if(ar(t),le(u))a[u]=null,_(u)&&(h[u]=null);else if(ae(u)){u.value=null;const C=t;C.k&&(a[C.k]=null)}}if(G(c))sn(c,o,12,[l,a]);else{const C=le(c),P=ae(c);if(C||P){const K=()=>{if(e.f){const H=C?_(c)?h[c]:a[c]:c.value;if(r)B(H)&&Ds(H,i);else if(B(H))H.includes(i)||H.push(i);else if(C)a[c]=[i],_(c)&&(h[c]=a[c]);else{const V=[i];c.value=V,e.k&&(a[e.k]=V)}}else C?(a[c]=l,_(c)&&(h[c]=l)):P&&(c.value=l,e.k&&(a[e.k]=l))};if(l){const H=()=>{K(),Mn.delete(e)};H.id=-1,Mn.set(e,H),Ee(H,n)}else ar(e),K()}}}function ar(e){const t=Mn.get(e);t&&(t.flags|=8,Mn.delete(e))}let fr=!1;const Rt=()=>{fr||(console.error("Hydration completed but contains mismatches."),fr=!0)},$l=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",jl=e=>e.namespaceURI.includes("MathML"),dn=e=>{if(e.nodeType===1){if($l(e))return"svg";if(jl(e))return"mathml"}},hn=e=>e.nodeType===8;function Vl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:l,remove:o,insert:c,createComment:u}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),An(),g._vnode=p;return}h(g.firstChild,p,null,null,null),An(),g._vnode=p},h=(p,g,O,W,R,U=!1)=>{U=U||!!g.dynamicChildren;const T=hn(p)&&p.data==="[",I=()=>P(p,g,O,W,R,T),{type:E,ref:y,shapeFlag:N,patchFlag:Y}=g;let ie=p.nodeType;g.el=p,Y===-2&&(U=!1,g.dynamicChildren=null);let j=null;switch(E){case St:ie!==3?g.children===""?(c(g.el=r(""),l(p),p),j=p):j=I():(p.data!==g.children&&(Rt(),p.data=g.children),j=i(p));break;case ue:V(p)?(j=i(p),H(g.el=p.content.firstChild,p,O)):ie!==8||T?j=I():j=i(p);break;case Kt:if(T&&(p=i(p),ie=p.nodeType),ie===1||ie===3){j=p;const X=!g.children.length;for(let D=0;D{U=U||!!g.dynamicChildren;const{type:T,props:I,patchFlag:E,shapeFlag:y,dirs:N,transition:Y}=g,ie=T==="input"||T==="option";if(ie||E!==-1){N&&We(g,null,O,"created");let j=!1;if(V(p)){j=to(null,Y)&&O&&O.vnode.props&&O.vnode.props.appear;const D=p.content.firstChild;if(j){const ee=D.getAttribute("class");ee&&(D.$cls=ee),Y.beforeEnter(D)}H(D,p,O),g.el=p=D}if(y&16&&!(I&&(I.innerHTML||I.textContent))){let D=_(p.firstChild,g,p,O,W,R,U);for(;D;){pn(p,1)||Rt();const ee=D;D=D.nextSibling,o(ee)}}else if(y&8){let D=g.children;D[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1));const{textContent:ee}=p;ee!==D&&ee!==D.replace(/\r\n|\r/g,` +`)&&(pn(p,0)||Rt(),p.textContent=g.children)}if(I){if(ie||!U||E&48){const D=p.tagName.includes("-");for(const ee in I)(ie&&(ee.endsWith("value")||ee==="indeterminate")||nn(ee)&&!mt(ee)||ee[0]==="."||D&&!mt(ee))&&s(p,ee,null,I[ee],void 0,O)}else if(I.onClick)s(p,"onClick",null,I.onClick,void 0,O);else if(E&4&<(I.style))for(const D in I.style)I.style[D]}let X;(X=I&&I.onVnodeBeforeMount)&&Me(X,O,g),N&&We(g,null,O,"beforeMount"),((X=I&&I.onVnodeMounted)||N||j)&&oo(()=>{X&&Me(X,O,g),j&&Y.enter(p),N&&We(g,null,O,"mounted")},W)}return p.nextSibling},_=(p,g,O,W,R,U,T)=>{T=T||!!g.dynamicChildren;const I=g.children,E=I.length;for(let y=0;y{const{slotScopeIds:T}=g;T&&(R=R?R.concat(T):T);const I=l(p),E=_(i(p),g,I,O,W,R,U);return E&&hn(E)&&E.data==="]"?i(g.anchor=E):(Rt(),c(g.anchor=u("]"),I,E),E)},P=(p,g,O,W,R,U)=>{if(pn(p.parentElement,1)||Rt(),g.el=null,U){const E=K(p);for(;;){const y=i(p);if(y&&y!==E)o(y);else break}}const T=i(p),I=l(p);return o(p),n(null,g,I,T,O,W,dn(I),R),O&&(O.vnode.el=g.el,qi(O,g.el)),T},K=(p,g="[",O="]")=>{let W=0;for(;p;)if(p=i(p),p&&hn(p)&&(p.data===g&&W++,p.data===O)){if(W===0)return i(p);W--}return p},H=(p,g,O)=>{const W=g.parentNode;W&&W.replaceChild(p,g);let R=O;for(;R;)R.vnode.el===g&&(R.vnode.el=R.subTree.el=p),R=R.parent},V=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const ur="data-allow-mismatch",Wl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(ur);)e=e.parentElement;const n=e&&e.getAttribute(ur);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:s.includes(Wl[t])}}Dn().requestIdleCallback;Dn().cancelIdleCallback;const bt=e=>!!e.type.__asyncLoader,Kn=e=>e.type.__isKeepAlive;function kl(e,t){Hi(e,"a",t)}function Ul(e,t){Hi(e,"da",t)}function Hi(e,t,n=ye){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(qn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Kn(r.parent.vnode)&&Bl(s,t,n,r),r=r.parent}}function Bl(e,t,n,s){const r=qn(t,e,s,!0);Gn(()=>{Ds(s[t],r)},n)}function qn(e,t,n=ye,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{Xe();const o=rn(n),c=De(t,n,e,l);return o(),Ye(),c});return s?r.unshift(i):r.push(i),i}}const et=e=>(t,n=ye)=>{(!en||e==="sp")&&qn(e,(...s)=>t(...s),n)},Kl=et("bm"),Ht=et("m"),ql=et("bu"),Gl=et("u"),Di=et("bum"),Gn=et("um"),Xl=et("sp"),Yl=et("rtg"),Jl=et("rtc");function zl(e,t=ye){qn("ec",e,t)}const $i="components";function vf(e,t){return Vi($i,e,!0,t)||e}const ji=Symbol.for("v-ndc");function yf(e){return le(e)?Vi($i,e,!1)||e:e||ji}function Vi(e,t,n=!0,s=!1){const r=we||ye;if(r){const i=r.type;{const o=Pc(i,!1);if(o&&(o===t||o===Le(t)||o===Hn(Le(t))))return i}const l=dr(r[e]||i[e],t)||dr(r.appContext[e],t);return!l&&s?i:l}}function dr(e,t){return e&&(e[t]||e[Le(t)]||e[Hn(Le(t))])}function _f(e,t,n,s){let r;const i=n,l=B(e);if(l||le(e)){const o=l&<(e);let c=!1,u=!1;o&&(c=!Ae(e),u=Je(e),e=jn(e)),r=new Array(e.length);for(let a=0,h=e.length;at(o,c,void 0,i));else{const o=Object.keys(e);r=new Array(o.length);for(let c=0,u=o.length;c0;return t!=="default"&&(n.name=t),Os(),Is(ve,null,[de("slot",n,s&&s())],u?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),Os();const l=i&&Wi(i(n)),o=n.key||l&&l.key,c=Is(ve,{key:(o&&!Ze(o)?o:`_${t}`)+(!l&&s?"_fb":"")},l||(s?s():[]),l&&e._===1?64:-2);return!r&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),i&&i._c&&(i._d=!0),c}function Wi(e){return e.some(t=>Zt(t)?!(t.type===ue||t.type===ve&&!Wi(t.children)):!0)?e:null}function wf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:_n(s)]=e[s];return n}const Cs=e=>e?uo(e)?Ys(e):Cs(e.parent):null,Bt=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Cs(e.parent),$root:e=>Cs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ui(e),$forceUpdate:e=>e.f||(e.f=()=>{Ks(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Ll.bind(e)}),is=(e,t)=>e!==re&&!e.__isScriptSetup&&Q(e,t),Ql={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:l,type:o,appContext:c}=e;if(t[0]!=="$"){const v=l[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(is(s,t))return l[t]=1,s[t];if(r!==re&&Q(r,t))return l[t]=2,r[t];if(Q(i,t))return l[t]=3,i[t];if(n!==re&&Q(n,t))return l[t]=4,n[t];As&&(l[t]=0)}}const u=Bt[t];let a,h;if(u)return t==="$attrs"&&me(e.attrs,"get",""),u(e);if((a=o.__cssModules)&&(a=a[t]))return a;if(n!==re&&Q(n,t))return l[t]=4,n[t];if(h=c.config.globalProperties,Q(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return is(r,t)?(r[t]=n,!0):s!==re&&Q(s,t)?(s[t]=n,!0):Q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:l}},o){let c;return!!(n[o]||e!==re&&o[0]!=="$"&&Q(e,o)||is(t,o)||Q(i,o)||Q(s,o)||Q(Bt,o)||Q(r.config.globalProperties,o)||(c=l.__cssModules)&&c[o])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Sf(){return Zl().slots}function Zl(e){const t=Et();return t.setupContext||(t.setupContext=po(t))}function hr(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let As=!0;function ec(e){const t=Ui(e),n=e.proxy,s=e.ctx;As=!1,t.beforeCreate&&pr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:l,watch:o,provide:c,inject:u,created:a,beforeMount:h,mounted:v,beforeUpdate:_,updated:C,activated:P,deactivated:K,beforeDestroy:H,beforeUnmount:V,destroyed:p,unmounted:g,render:O,renderTracked:W,renderTriggered:R,errorCaptured:U,serverPrefetch:T,expose:I,inheritAttrs:E,components:y,directives:N,filters:Y}=t;if(u&&tc(u,s,null),l)for(const X in l){const D=l[X];G(D)&&(s[X]=D.bind(n))}if(r){const X=r.call(n,n);te(X)&&(e.data=Nt(X))}if(As=!0,i)for(const X in i){const D=i[X],ee=G(D)?D.bind(n,n):G(D.get)?D.get.bind(n,n):ke,on=!G(D)&&G(D.set)?D.set.bind(n):ke,ft=oe({get:ee,set:on});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>ft.value,set:$e=>ft.value=$e})}if(o)for(const X in o)ki(o[X],s,n,X);if(c){const X=G(c)?c.call(n):c;Reflect.ownKeys(X).forEach(D=>{Ol(D,X[D])})}a&&pr(a,e,"c");function j(X,D){B(D)?D.forEach(ee=>X(ee.bind(n))):D&&X(D.bind(n))}if(j(Kl,h),j(Ht,v),j(ql,_),j(Gl,C),j(kl,P),j(Ul,K),j(zl,U),j(Jl,W),j(Yl,R),j(Di,V),j(Gn,g),j(Xl,T),B(I))if(I.length){const X=e.exposed||(e.exposed={});I.forEach(D=>{Object.defineProperty(X,D,{get:()=>n[D],set:ee=>n[D]=ee,enumerable:!0})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),E!=null&&(e.inheritAttrs=E),y&&(e.components=y),N&&(e.directives=N),T&&Fi(e)}function tc(e,t,n=ke){B(e)&&(e=Rs(e));for(const s in e){const r=e[s];let i;te(r)?"default"in r?i=_t(r.from||s,r.default,!0):i=_t(r.from||s):i=_t(r),ae(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[s]=i}}function pr(e,t,n){De(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function ki(e,t,n,s){let r=s.includes(".")?Ai(n,s):()=>n[s];if(le(e)){const i=t[e];G(i)&&Pe(r,i)}else if(G(e))Pe(r,e.bind(n));else if(te(e))if(B(e))e.forEach(i=>ki(i,t,n,s));else{const i=G(e.handler)?e.handler.bind(n):t[e.handler];G(i)&&Pe(r,i,e)}}function Ui(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,o=i.get(t);let c;return o?c=o:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>On(c,u,l,!0)),On(c,t,l)),te(t)&&i.set(t,c),c}function On(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&On(e,i,n,!0),r&&r.forEach(l=>On(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const o=nc[l]||n&&n[l];e[l]=o?o(e[l],t[l]):t[l]}return e}const nc={data:gr,props:mr,emits:mr,methods:Wt,computed:Wt,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:Wt,directives:Wt,watch:rc,provide:gr,inject:sc};function gr(e,t){return t?e?function(){return fe(G(e)?e.call(this,this):e,G(t)?t.call(this,this):t)}:t:e}function sc(e,t){return Wt(Rs(e),Rs(t))}function Rs(e){if(B(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${at(t)}Modifiers`];function cc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||re;let r=n;const i=t.startsWith("update:"),l=i&&lc(s,t.slice(7));l&&(l.trim&&(r=n.map(a=>le(a)?a.trim():a)),l.number&&(r=n.map(Do)));let o,c=s[o=_n(t)]||s[o=_n(Le(t))];!c&&i&&(c=s[o=_n(at(t))]),c&&De(c,e,6,r);const u=s[o+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,De(u,e,6,r)}}const ac=new WeakMap;function Ki(e,t,n=!1){const s=n?ac:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let l={},o=!1;if(!G(e)){const c=u=>{const a=Ki(u,t,!0);a&&(o=!0,fe(l,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!o?(te(e)&&s.set(e,null),null):(B(i)?i.forEach(c=>l[c]=null):fe(l,i),te(e)&&s.set(e,l),l)}function Xn(e,t){return!e||!nn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Q(e,t[0].toLowerCase()+t.slice(1))||Q(e,at(t))||Q(e,t))}function os(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:l,attrs:o,emit:c,render:u,renderCache:a,props:h,data:v,setupState:_,ctx:C,inheritAttrs:P}=e,K=Rn(e);let H,V;try{if(n.shapeFlag&4){const g=r||s,O=g;H=Oe(u.call(O,g,a,h,_,v,C)),V=o}else{const g=t;H=Oe(g.length>1?g(h,{attrs:o,slots:l,emit:c}):g(h,null)),V=t.props?o:fc(o)}}catch(g){qt.length=0,kn(g,e,1),H=de(ue)}let p=H;if(V&&P!==!1){const g=Object.keys(V),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Hs)&&(V=uc(V,i)),p=ct(p,V,!1,!0))}return n.dirs&&(p=ct(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&zt(p,n.transition),H=p,Rn(K),H}const fc=e=>{let t;for(const n in e)(n==="class"||n==="style"||nn(n))&&((t||(t={}))[n]=e[n]);return t},uc=(e,t)=>{const n={};for(const s in e)(!Hs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function dc(e,t,n){const{props:s,children:r,component:i}=e,{props:l,children:o,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?vr(s,l,u):!!l;if(c&8){const a=t.dynamicProps;for(let h=0;hObject.create(Gi),Yi=e=>Object.getPrototypeOf(e)===Gi;function hc(e,t,n,s=!1){const r={},i=Xi();e.propsDefaults=Object.create(null),Ji(e,t,r,i);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);n?e.props=s?r:hl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function pc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:l}}=e,o=z(r),[c]=e.propsOptions;let u=!1;if((s||l>0)&&!(l&16)){if(l&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[v,_]=zi(h,t,!0);fe(l,v),_&&o.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return te(e)&&s.set(e,Ot),Ot;if(B(i))for(let a=0;ae==="_"||e==="_ctx"||e==="$stable",Gs=e=>B(e)?e.map(Oe):[Oe(e)],mc=(e,t,n)=>{if(t._n)return t;const s=Ml((...r)=>Gs(t(...r)),n);return s._c=!1,s},Qi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(qs(r))continue;const i=e[r];if(G(i))t[r]=mc(r,i,s);else if(i!=null){const l=Gs(i);t[r]=()=>l}}},Zi=(e,t)=>{const n=Gs(t);e.slots.default=()=>n},eo=(e,t,n)=>{for(const s in t)(n||!qs(s))&&(e[s]=t[s])},vc=(e,t,n)=>{const s=e.slots=Xi();if(e.vnode.shapeFlag&32){const r=t._;r?(eo(s,t,n),n&&ei(s,"_",r,!0)):Qi(t,s)}else t&&Zi(e,t)},yc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,l=re;if(s.shapeFlag&32){const o=t._;o?n&&o===1?i=!1:eo(r,t,n):(i=!t.$stable,Qi(t,r)),l=t}else t&&(Zi(e,t),l={default:1});if(i)for(const o in r)!qs(o)&&l[o]==null&&delete r[o]},Ee=oo;function _c(e){return bc(e,Vl)}function bc(e,t){const n=Dn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:l,createText:o,createComment:c,setText:u,setElementText:a,parentNode:h,nextSibling:v,setScopeId:_=ke,insertStaticContent:C}=e,P=(f,d,m,x=null,b=null,w=null,L=void 0,M=null,A=!!d.dynamicChildren)=>{if(f===d)return;f&&!gt(f,d)&&(x=ln(f),$e(f,b,w,!0),f=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:S,ref:k,shapeFlag:F}=d;switch(S){case St:K(f,d,m,x);break;case ue:H(f,d,m,x);break;case Kt:f==null&&V(d,m,x,L);break;case ve:y(f,d,m,x,b,w,L,M,A);break;default:F&1?O(f,d,m,x,b,w,L,M,A):F&6?N(f,d,m,x,b,w,L,M,A):(F&64||F&128)&&S.process(f,d,m,x,b,w,L,M,A,Ct)}k!=null&&b?Lt(k,f&&f.ref,w,d||f,!d):k==null&&f&&f.ref!=null&&Lt(f.ref,null,w,f,!0)},K=(f,d,m,x)=>{if(f==null)s(d.el=o(d.children),m,x);else{const b=d.el=f.el;d.children!==f.children&&u(b,d.children)}},H=(f,d,m,x)=>{f==null?s(d.el=c(d.children||""),m,x):d.el=f.el},V=(f,d,m,x)=>{[f.el,f.anchor]=C(f.children,d,m,x,f.el,f.anchor)},p=({el:f,anchor:d},m,x)=>{let b;for(;f&&f!==d;)b=v(f),s(f,m,x),f=b;s(d,m,x)},g=({el:f,anchor:d})=>{let m;for(;f&&f!==d;)m=v(f),r(f),f=m;r(d)},O=(f,d,m,x,b,w,L,M,A)=>{if(d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),f==null)W(d,m,x,b,w,L,M,A);else{const S=f.el&&f.el._isVueCE?f.el:null;try{S&&S._beginPatch(),T(f,d,b,w,L,M,A)}finally{S&&S._endPatch()}}},W=(f,d,m,x,b,w,L,M)=>{let A,S;const{props:k,shapeFlag:F,transition:$,dirs:q}=f;if(A=f.el=l(f.type,w,k&&k.is,k),F&8?a(A,f.children):F&16&&U(f.children,A,null,x,b,ls(f,w),L,M),q&&We(f,null,x,"created"),R(A,f,f.scopeId,L,x),k){for(const ne in k)ne!=="value"&&!mt(ne)&&i(A,ne,null,k[ne],w,x);"value"in k&&i(A,"value",null,k.value,w),(S=k.onVnodeBeforeMount)&&Me(S,x,f)}q&&We(f,null,x,"beforeMount");const J=to(b,$);J&&$.beforeEnter(A),s(A,d,m),((S=k&&k.onVnodeMounted)||J||q)&&Ee(()=>{S&&Me(S,x,f),J&&$.enter(A),q&&We(f,null,x,"mounted")},b)},R=(f,d,m,x,b)=>{if(m&&_(f,m),x)for(let w=0;w{for(let S=A;S{const M=d.el=f.el;let{patchFlag:A,dynamicChildren:S,dirs:k}=d;A|=f.patchFlag&16;const F=f.props||re,$=d.props||re;let q;if(m&&ut(m,!1),(q=$.onVnodeBeforeUpdate)&&Me(q,m,d,f),k&&We(d,f,m,"beforeUpdate"),m&&ut(m,!0),(F.innerHTML&&$.innerHTML==null||F.textContent&&$.textContent==null)&&a(M,""),S?I(f.dynamicChildren,S,M,m,x,ls(d,b),w):L||D(f,d,M,null,m,x,ls(d,b),w,!1),A>0){if(A&16)E(M,F,$,m,b);else if(A&2&&F.class!==$.class&&i(M,"class",null,$.class,b),A&4&&i(M,"style",F.style,$.style,b),A&8){const J=d.dynamicProps;for(let ne=0;ne{q&&Me(q,m,d,f),k&&We(d,f,m,"updated")},x)},I=(f,d,m,x,b,w,L)=>{for(let M=0;M{if(d!==m){if(d!==re)for(const w in d)!mt(w)&&!(w in m)&&i(f,w,d[w],null,b,x);for(const w in m){if(mt(w))continue;const L=m[w],M=d[w];L!==M&&w!=="value"&&i(f,w,M,L,b,x)}"value"in m&&i(f,"value",d.value,m.value,b)}},y=(f,d,m,x,b,w,L,M,A)=>{const S=d.el=f?f.el:o(""),k=d.anchor=f?f.anchor:o("");let{patchFlag:F,dynamicChildren:$,slotScopeIds:q}=d;q&&(M=M?M.concat(q):q),f==null?(s(S,m,x),s(k,m,x),U(d.children||[],m,k,b,w,L,M,A)):F>0&&F&64&&$&&f.dynamicChildren&&f.dynamicChildren.length===$.length?(I(f.dynamicChildren,$,m,b,w,L,M),(d.key!=null||b&&d===b.subTree)&&no(f,d,!0)):D(f,d,m,k,b,w,L,M,A)},N=(f,d,m,x,b,w,L,M,A)=>{d.slotScopeIds=M,f==null?d.shapeFlag&512?b.ctx.activate(d,m,x,L,A):Y(d,m,x,b,w,L,A):ie(f,d,A)},Y=(f,d,m,x,b,w,L)=>{const M=f.component=Rc(f,x,b);if(Kn(f)&&(M.ctx.renderer=Ct),Mc(M,!1,L),M.asyncDep){if(b&&b.registerDep(M,j,L),!f.el){const A=M.subTree=de(ue);H(null,A,d,m),f.placeholder=A.el}}else j(M,f,d,m,b,w,L)},ie=(f,d,m)=>{const x=d.component=f.component;if(dc(f,d,m))if(x.asyncDep&&!x.asyncResolved){X(x,d,m);return}else x.next=d,x.update();else d.el=f.el,x.vnode=d},j=(f,d,m,x,b,w,L)=>{const M=()=>{if(f.isMounted){let{next:F,bu:$,u:q,parent:J,vnode:ne}=f;{const xe=so(f);if(xe){F&&(F.el=ne.el,X(f,F,L)),xe.asyncDep.then(()=>{f.isUnmounted||M()});return}}let Z=F,Se;ut(f,!1),F?(F.el=ne.el,X(f,F,L)):F=ne,$&&Zn($),(Se=F.props&&F.props.onVnodeBeforeUpdate)&&Me(Se,J,F,ne),ut(f,!0);const he=os(f),Ne=f.subTree;f.subTree=he,P(Ne,he,h(Ne.el),ln(Ne),f,b,w),F.el=he.el,Z===null&&qi(f,he.el),q&&Ee(q,b),(Se=F.props&&F.props.onVnodeUpdated)&&Ee(()=>Me(Se,J,F,ne),b)}else{let F;const{el:$,props:q}=d,{bm:J,m:ne,parent:Z,root:Se,type:he}=f,Ne=bt(d);if(ut(f,!1),J&&Zn(J),!Ne&&(F=q&&q.onVnodeBeforeMount)&&Me(F,Z,d),ut(f,!0),$&&Qn){const xe=()=>{f.subTree=os(f),Qn($,f.subTree,f,b,null)};Ne&&he.__asyncHydrate?he.__asyncHydrate($,f,xe):xe()}else{Se.ce&&Se.ce._def.shadowRoot!==!1&&Se.ce._injectChildStyle(he);const xe=f.subTree=os(f);P(null,xe,m,x,f,b,w),d.el=xe.el}if(ne&&Ee(ne,b),!Ne&&(F=q&&q.onVnodeMounted)){const xe=d;Ee(()=>Me(F,Z,xe),b)}(d.shapeFlag&256||Z&&bt(Z.vnode)&&Z.vnode.shapeFlag&256)&&f.a&&Ee(f.a,b),f.isMounted=!0,d=m=x=null}};f.scope.on();const A=f.effect=new ii(M);f.scope.off();const S=f.update=A.run.bind(A),k=f.job=A.runIfDirty.bind(A);k.i=f,k.id=f.uid,A.scheduler=()=>Ks(k),ut(f,!0),S()},X=(f,d,m)=>{d.component=f;const x=f.vnode.props;f.vnode=d,f.next=null,pc(f,d.props,x,m),yc(f,d.children,m),Xe(),lr(f),Ye()},D=(f,d,m,x,b,w,L,M,A=!1)=>{const S=f&&f.children,k=f?f.shapeFlag:0,F=d.children,{patchFlag:$,shapeFlag:q}=d;if($>0){if($&128){on(S,F,m,x,b,w,L,M,A);return}else if($&256){ee(S,F,m,x,b,w,L,M,A);return}}q&8?(k&16&&Dt(S,b,w),F!==S&&a(m,F)):k&16?q&16?on(S,F,m,x,b,w,L,M,A):Dt(S,b,w,!0):(k&8&&a(m,""),q&16&&U(F,m,x,b,w,L,M,A))},ee=(f,d,m,x,b,w,L,M,A)=>{f=f||Ot,d=d||Ot;const S=f.length,k=d.length,F=Math.min(S,k);let $;for($=0;$k?Dt(f,b,w,!0,!1,F):U(d,m,x,b,w,L,M,A,F)},on=(f,d,m,x,b,w,L,M,A)=>{let S=0;const k=d.length;let F=f.length-1,$=k-1;for(;S<=F&&S<=$;){const q=f[S],J=d[S]=A?rt(d[S]):Oe(d[S]);if(gt(q,J))P(q,J,m,null,b,w,L,M,A);else break;S++}for(;S<=F&&S<=$;){const q=f[F],J=d[$]=A?rt(d[$]):Oe(d[$]);if(gt(q,J))P(q,J,m,null,b,w,L,M,A);else break;F--,$--}if(S>F){if(S<=$){const q=$+1,J=q$)for(;S<=F;)$e(f[S],b,w,!0),S++;else{const q=S,J=S,ne=new Map;for(S=J;S<=$;S++){const Te=d[S]=A?rt(d[S]):Oe(d[S]);Te.key!=null&&ne.set(Te.key,S)}let Z,Se=0;const he=$-J+1;let Ne=!1,xe=0;const $t=new Array(he);for(S=0;S=he){$e(Te,b,w,!0);continue}let je;if(Te.key!=null)je=ne.get(Te.key);else for(Z=J;Z<=$;Z++)if($t[Z-J]===0&>(Te,d[Z])){je=Z;break}je===void 0?$e(Te,b,w,!0):($t[je-J]=S+1,je>=xe?xe=je:Ne=!0,P(Te,d[je],m,null,b,w,L,M,A),Se++)}const tr=Ne?wc($t):Ot;for(Z=tr.length-1,S=he-1;S>=0;S--){const Te=J+S,je=d[Te],nr=d[Te+1],sr=Te+1{const{el:w,type:L,transition:M,children:A,shapeFlag:S}=f;if(S&6){ft(f.component.subTree,d,m,x);return}if(S&128){f.suspense.move(d,m,x);return}if(S&64){L.move(f,d,m,Ct);return}if(L===ve){s(w,d,m);for(let F=0;FM.enter(w),b);else{const{leave:F,delayLeave:$,afterLeave:q}=M,J=()=>{f.ctx.isUnmounted?r(w):s(w,d,m)},ne=()=>{w._isLeaving&&w[qe](!0),F(w,()=>{J(),q&&q()})};$?$(w,J,ne):ne()}else s(w,d,m)},$e=(f,d,m,x=!1,b=!1)=>{const{type:w,props:L,ref:M,children:A,dynamicChildren:S,shapeFlag:k,patchFlag:F,dirs:$,cacheIndex:q}=f;if(F===-2&&(b=!1),M!=null&&(Xe(),Lt(M,null,m,f,!0),Ye()),q!=null&&(d.renderCache[q]=void 0),k&256){d.ctx.deactivate(f);return}const J=k&1&&$,ne=!bt(f);let Z;if(ne&&(Z=L&&L.onVnodeBeforeUnmount)&&Me(Z,d,f),k&6)Po(f.component,m,x);else{if(k&128){f.suspense.unmount(m,x);return}J&&We(f,null,d,"beforeUnmount"),k&64?f.type.remove(f,d,m,Ct,x):S&&!S.hasOnce&&(w!==ve||F>0&&F&64)?Dt(S,d,m,!1,!0):(w===ve&&F&384||!b&&k&16)&&Dt(A,d,m),x&&Zs(f)}(ne&&(Z=L&&L.onVnodeUnmounted)||J)&&Ee(()=>{Z&&Me(Z,d,f),J&&We(f,null,d,"unmounted")},m)},Zs=f=>{const{type:d,el:m,anchor:x,transition:b}=f;if(d===ve){Io(m,x);return}if(d===Kt){g(f);return}const w=()=>{r(m),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(f.shapeFlag&1&&b&&!b.persisted){const{leave:L,delayLeave:M}=b,A=()=>L(m,w);M?M(f.el,w,A):A()}else w()},Io=(f,d)=>{let m;for(;f!==d;)m=v(f),r(f),f=m;r(d)},Po=(f,d,m)=>{const{bum:x,scope:b,job:w,subTree:L,um:M,m:A,a:S}=f;_r(A),_r(S),x&&Zn(x),b.stop(),w&&(w.flags|=8,$e(L,f,d,m)),M&&Ee(M,d),Ee(()=>{f.isUnmounted=!0},d)},Dt=(f,d,m,x=!1,b=!1,w=0)=>{for(let L=w;L{if(f.shapeFlag&6)return ln(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const d=v(f.anchor||f.el),m=d&&d[Nl];return m?v(m):d};let Jn=!1;const er=(f,d,m)=>{let x;f==null?d._vnode&&($e(d._vnode,null,null,!0),x=d._vnode.component):P(d._vnode||null,f,d,null,null,null,m),d._vnode=f,Jn||(Jn=!0,lr(x),An(),Jn=!1)},Ct={p:P,um:$e,m:ft,r:Zs,mt:Y,mc:U,pc:D,pbc:I,n:ln,o:e};let zn,Qn;return t&&([zn,Qn]=t(Ct)),{render:er,hydrate:zn,createApp:oc(er,zn)}}function ls({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ut({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function to(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function no(e,t,n=!1){const s=e.children,r=t.children;if(B(s)&&B(r))for(let i=0;i>1,e[n[o]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}function so(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:so(t)}function _r(e){if(e)for(let t=0;te.__isSuspense;function oo(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):Rl(e)}const ve=Symbol.for("v-fgt"),St=Symbol.for("v-txt"),ue=Symbol.for("v-cmt"),Kt=Symbol.for("v-stc"),qt=[];let Ce=null;function Os(e=!1){qt.push(Ce=e?null:[])}function Sc(){qt.pop(),Ce=qt[qt.length-1]||null}let Qt=1;function In(e,t=!1){Qt+=e,e<0&&Ce&&t&&(Ce.hasOnce=!0)}function lo(e){return e.dynamicChildren=Qt>0?Ce||Ot:null,Sc(),Qt>0&&Ce&&Ce.push(e),e}function xf(e,t,n,s,r,i){return lo(ao(e,t,n,s,r,i,!0))}function Is(e,t,n,s,r){return lo(de(e,t,n,s,r,!0))}function Zt(e){return e?e.__v_isVNode===!0:!1}function gt(e,t){return e.type===t.type&&e.key===t.key}const co=({key:e})=>e??null,wn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?le(e)||ae(e)||G(e)?{i:we,r:e,k:t,f:!!n}:e:null);function ao(e,t=null,n=null,s=0,r=null,i=e===ve?0:1,l=!1,o=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&co(t),ref:t&&wn(t),scopeId:Ti,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:we};return o?(Xs(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=le(n)?8:16),Qt>0&&!l&&Ce&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ce.push(c),c}const de=xc;function xc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===ji)&&(e=ue),Zt(e)){const o=ct(e,t,!0);return n&&Xs(o,n),Qt>0&&!i&&Ce&&(o.shapeFlag&6?Ce[Ce.indexOf(e)]=o:Ce.push(o)),o.patchFlag=-2,o}if(Lc(e)&&(e=e.__vccOpts),t){t=Tc(t);let{class:o,style:c}=t;o&&!le(o)&&(t.class=js(o)),te(c)&&(Vn(c)&&!B(c)&&(c=fe({},c)),t.style=$s(c))}const l=le(e)?1:io(e)?128:Ri(e)?64:te(e)?4:G(e)?2:0;return ao(e,t,n,s,r,l,i,!0)}function Tc(e){return e?Vn(e)||Yi(e)?fe({},e):e:null}function ct(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:l,children:o,transition:c}=e,u=t?Ec(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&co(u),ref:t&&t.ref?n&&i?B(i)?i.concat(wn(t)):[i,wn(t)]:wn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ve?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ct(e.ssContent),ssFallback:e.ssFallback&&ct(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&zt(a,c.clone(a)),a}function fo(e=" ",t=0){return de(St,null,e,t)}function Tf(e,t){const n=de(Kt,null,e);return n.staticCount=t,n}function Ef(e="",t=!1){return t?(Os(),Is(ue,null,e)):de(ue,null,e)}function Oe(e){return e==null||typeof e=="boolean"?de(ue):B(e)?de(ve,null,e.slice()):Zt(e)?rt(e):de(St,null,String(e))}function rt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ct(e)}function Xs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Xs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Yi(t)?t._ctx=we:r===3&&we&&(we.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else G(t)?(t={default:t,_ctx:we},n=32):(t=String(t),s&64?(n=16,t=[fo(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ec(...e){const t={};for(let n=0;nye||we;let Pn,Ps;{const e=Dn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(l=>l(i)):r[0](i)}};Pn=t("__VUE_INSTANCE_SETTERS__",n=>ye=n),Ps=t("__VUE_SSR_SETTERS__",n=>en=n)}const rn=e=>{const t=ye;return Pn(e),e.scope.on(),()=>{e.scope.off(),Pn(t)}},br=()=>{ye&&ye.scope.off(),Pn(null)};function uo(e){return e.vnode.shapeFlag&4}let en=!1;function Mc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=uo(e);hc(e,s,i,t),vc(e,r,n||t);const l=i?Oc(e,t):void 0;return t&&Ps(!1),l}function Oc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ql);const{setup:s}=n;if(s){Xe();const r=e.setupContext=s.length>1?po(e):null,i=rn(e),l=sn(s,e,0,[e.props,r]),o=zr(l);if(Ye(),i(),(o||e.sp)&&!bt(e)&&Fi(e),o){if(l.then(br,br),t)return l.then(c=>{wr(e,c)}).catch(c=>{kn(c,e,0)});e.asyncDep=l}else wr(e,l)}else ho(e)}function wr(e,t,n){G(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:te(t)&&(e.setupState=bi(t)),ho(e)}function ho(e,t,n){const s=e.type;e.render||(e.render=s.render||ke);{const r=rn(e);Xe();try{ec(e)}finally{Ye(),r()}}}const Ic={get(e,t){return me(e,"get",""),e[t]}};function po(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ic),slots:e.slots,emit:e.emit,expose:t}}function Ys(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(bi(bn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Bt)return Bt[n](e)},has(t,n){return n in t||n in Bt}})):e.proxy}function Pc(e,t=!0){return G(e)?e.displayName||e.name:e.name||t&&e.__name}function Lc(e){return G(e)&&"__vccOpts"in e}const oe=(e,t)=>xl(e,t,en);function Ls(e,t,n){try{In(-1);const s=arguments.length;return s===2?te(t)&&!B(t)?Zt(t)?de(e,null,[t]):de(e,t):de(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Zt(n)&&(n=[n]),de(e,t,n))}finally{In(1)}}const Nc="3.5.27";/** +* @vue/runtime-dom v3.5.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ns;const Sr=typeof window<"u"&&window.trustedTypes;if(Sr)try{Ns=Sr.createPolicy("vue",{createHTML:e=>e})}catch{}const go=Ns?e=>Ns.createHTML(e):e=>e,Fc="http://www.w3.org/2000/svg",Hc="http://www.w3.org/1998/Math/MathML",Ke=typeof document<"u"?document:null,xr=Ke&&Ke.createElement("template"),Dc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ke.createElementNS(Fc,e):t==="mathml"?Ke.createElementNS(Hc,e):n?Ke.createElement(e,{is:n}):Ke.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ke.createTextNode(e),createComment:e=>Ke.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ke.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const l=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{xr.innerHTML=go(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const o=xr.content;if(s==="svg"||s==="mathml"){const c=o.firstChild;for(;c.firstChild;)o.appendChild(c.firstChild);o.removeChild(c)}t.insertBefore(o,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},tt="transition",Vt="animation",tn=Symbol("_vtc"),mo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},$c=fe({},Mi,mo),jc=e=>(e.displayName="Transition",e.props=$c,e),Cf=jc((e,{slots:t})=>Ls(Dl,Vc(e),t)),dt=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},Tr=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Vc(e){const t={};for(const y in e)y in mo||(t[y]=e[y]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=l,appearToClass:a=o,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:v=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,C=Wc(r),P=C&&C[0],K=C&&C[1],{onBeforeEnter:H,onEnter:V,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:W=H,onAppear:R=V,onAppearCancelled:U=p}=t,T=(y,N,Y,ie)=>{y._enterCancelled=ie,ht(y,N?a:o),ht(y,N?u:l),Y&&Y()},I=(y,N)=>{y._isLeaving=!1,ht(y,h),ht(y,_),ht(y,v),N&&N()},E=y=>(N,Y)=>{const ie=y?R:V,j=()=>T(N,y,Y);dt(ie,[N,j]),Er(()=>{ht(N,y?c:i),Be(N,y?a:o),Tr(ie)||Cr(N,s,P,j)})};return fe(t,{onBeforeEnter(y){dt(H,[y]),Be(y,i),Be(y,l)},onBeforeAppear(y){dt(W,[y]),Be(y,c),Be(y,u)},onEnter:E(!1),onAppear:E(!0),onLeave(y,N){y._isLeaving=!0;const Y=()=>I(y,N);Be(y,h),y._enterCancelled?(Be(y,v),Mr(y)):(Mr(y),Be(y,v)),Er(()=>{y._isLeaving&&(ht(y,h),Be(y,_),Tr(g)||Cr(y,s,K,Y))}),dt(g,[y,Y])},onEnterCancelled(y){T(y,!1,void 0,!0),dt(p,[y])},onAppearCancelled(y){T(y,!0,void 0,!0),dt(U,[y])},onLeaveCancelled(y){I(y),dt(O,[y])}})}function Wc(e){if(e==null)return null;if(te(e))return[cs(e.enter),cs(e.leave)];{const t=cs(e);return[t,t]}}function cs(e){return $o(e)}function Be(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[tn]||(e[tn]=new Set)).add(t)}function ht(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[tn];n&&(n.delete(t),n.size||(e[tn]=void 0))}function Er(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let kc=0;function Cr(e,t,n,s){const r=e._endId=++kc,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:l,timeout:o,propCount:c}=Uc(e,t);if(!l)return s();const u=l+"end";let a=0;const h=()=>{e.removeEventListener(u,v),i()},v=_=>{_.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[C]||"").split(", "),r=s(`${tt}Delay`),i=s(`${tt}Duration`),l=Ar(r,i),o=s(`${Vt}Delay`),c=s(`${Vt}Duration`),u=Ar(o,c);let a=null,h=0,v=0;t===tt?l>0&&(a=tt,h=l,v=i.length):t===Vt?u>0&&(a=Vt,h=u,v=c.length):(h=Math.max(l,u),a=h>0?l>u?tt:Vt:null,v=a?a===tt?i.length:c.length:0);const _=a===tt&&/\b(?:transform|all)(?:,|$)/.test(s(`${tt}Property`).toString());return{type:a,timeout:h,propCount:v,hasTransform:_}}function Ar(e,t){for(;e.lengthRr(n)+Rr(e[s])))}function Rr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Mr(e){return(e?e.ownerDocument:document).body.offsetHeight}function Bc(e,t,n){const s=e[tn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Or=Symbol("_vod"),Kc=Symbol("_vsh"),qc=Symbol(""),Gc=/(?:^|;)\s*display\s*:/;function Xc(e,t,n){const s=e.style,r=le(n);let i=!1;if(n&&!r){if(t)if(le(t))for(const l of t.split(";")){const o=l.slice(0,l.indexOf(":")).trim();n[o]==null&&Sn(s,o,"")}else for(const l in t)n[l]==null&&Sn(s,l,"");for(const l in n)l==="display"&&(i=!0),Sn(s,l,n[l])}else if(r){if(t!==n){const l=s[qc];l&&(n+=";"+l),s.cssText=n,i=Gc.test(n)}}else t&&e.removeAttribute("style");Or in e&&(e[Or]=i?s.display:"",e[Kc]&&(s.display="none"))}const Ir=/\s*!important$/;function Sn(e,t,n){if(B(n))n.forEach(s=>Sn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Yc(e,t);Ir.test(n)?e.setProperty(at(s),n.replace(Ir,""),"important"):e[s]=n}}const Pr=["Webkit","Moz","ms"],as={};function Yc(e,t){const n=as[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return as[t]=s;s=Hn(s);for(let r=0;rfs||(ea.then(()=>fs=0),fs=Date.now());function na(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;De(sa(s,n.value),t,5,[s])};return n.value=e,n.attached=ta(),n}function sa(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const $r=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ra=(e,t,n,s,r,i)=>{const l=r==="svg";t==="class"?Bc(e,s,l):t==="style"?Xc(e,n,s):nn(t)?Hs(t)||Qc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ia(e,t,s,l))?(Fr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Nr(e,t,s,l,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!le(s))?Fr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Nr(e,t,s,l))};function ia(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&$r(t)&&G(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return $r(t)&&le(n)?!1:t in e}const oa=["ctrl","shift","alt","meta"],la={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>oa.some(n=>e[`${n}Key`]&&!t.includes(n))},Af=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let l=0;l{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=at(r.key);if(t.some(l=>l===i||ca[l]===i))return e(r)})},aa=fe({patchProp:ra},Dc);let us,jr=!1;function fa(){return us=jr?us:_c(aa),jr=!0,us}const Mf=(...e)=>{const t=fa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=da(s);if(r)return n(r,!0,ua(r))},t};function ua(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function da(e){return le(e)?document.querySelector(e):e}const ha=window.__VP_SITE_DATA__;function vo(e){return ri()?(Go(e),!0):!1}const ds=new WeakMap,pa=(...e)=>{var t;const n=e[0],s=(t=Et())==null?void 0:t.proxy;if(s==null&&!Ei())throw new Error("injectLocal must be called in setup");return s&&ds.has(s)&&n in ds.get(s)?ds.get(s)[n]:_t(...e)},yo=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ga=Object.prototype.toString,ma=e=>ga.call(e)==="[object Object]",Tt=()=>{},Vr=va();function va(){var e,t;return yo&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Js(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const _o=e=>e();function ya(e,t={}){let n,s,r=Tt;const i=c=>{clearTimeout(c),r(),r=Tt};let l;return c=>{const u=ce(e),a=ce(t.maxWait);return n&&i(n),u<=0||a!==void 0&&a<=0?(s&&(i(s),s=null),Promise.resolve(c())):new Promise((h,v)=>{r=t.rejectOnCancel?v:h,l=c,a&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,h(l())},a)),n=setTimeout(()=>{s&&i(s),s=null,h(c())},u)})}}function _a(...e){let t=0,n,s=!0,r=Tt,i,l,o,c,u;!ae(e[0])&&typeof e[0]=="object"?{delay:l,trailing:o=!0,leading:c=!0,rejectOnCancel:u=!1}=e[0]:[l,o=!0,c=!0,u=!1]=e;const a=()=>{n&&(clearTimeout(n),n=void 0,r(),r=Tt)};return v=>{const _=ce(l),C=Date.now()-t,P=()=>i=v();return a(),_<=0?(t=Date.now(),P()):(C>_&&(c||!s)?(t=Date.now(),P()):o&&(i=new Promise((K,H)=>{r=u?H:K,n=setTimeout(()=>{t=Date.now(),s=!0,K(P()),a()},Math.max(0,_-C))})),!c&&!n&&(n=setTimeout(()=>s=!0,_)),s=!1,i)}}function ba(e=_o,t={}){const{initialState:n="active"}=t,s=zs(n==="active");function r(){s.value=!1}function i(){s.value=!0}return{isActive:Yt(s),pause:r,resume:i,eventFilter:(...o)=>{s.value&&e(...o)}}}function Wr(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function wa(e){return Et()}function hs(e){return Array.isArray(e)?e:[e]}function zs(...e){if(e.length!==1)return bl(...e);const t=e[0];return typeof t=="function"?Yt(vl(()=>({get:t,set:Tt}))):yt(t)}function Sa(e,t=200,n={}){return Js(ya(t,n),e)}function xa(e,t=200,n=!1,s=!0,r=!1){return Js(_a(t,n,s,r),e)}function Ta(e,t,n={}){const{eventFilter:s=_o,...r}=n;return Pe(e,Js(s,t),r)}function Ea(e,t,n={}){const{eventFilter:s,initialState:r="active",...i}=n,{eventFilter:l,pause:o,resume:c,isActive:u}=ba(s,{initialState:r});return{stop:Ta(e,t,{...i,eventFilter:l}),pause:o,resume:c,isActive:u}}function Yn(e,t=!0,n){wa()?Ht(e,n):t?e():Un(e)}function Ca(e,t,n){return Pe(e,t,{...n,immediate:!0})}const ze=yo?window:void 0;function Qs(e){var t;const n=ce(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Qe(...e){const t=[],n=()=>{t.forEach(o=>o()),t.length=0},s=(o,c,u,a)=>(o.addEventListener(c,u,a),()=>o.removeEventListener(c,u,a)),r=oe(()=>{const o=hs(ce(e[0])).filter(c=>c!=null);return o.every(c=>typeof c!="string")?o:void 0}),i=Ca(()=>{var o,c;return[(c=(o=r.value)==null?void 0:o.map(u=>Qs(u)))!=null?c:[ze].filter(u=>u!=null),hs(ce(r.value?e[1]:e[0])),hs(Wn(r.value?e[2]:e[1])),ce(r.value?e[3]:e[2])]},([o,c,u,a])=>{if(n(),!(o!=null&&o.length)||!(c!=null&&c.length)||!(u!=null&&u.length))return;const h=ma(a)?{...a}:a;t.push(...o.flatMap(v=>c.flatMap(_=>u.map(C=>s(v,_,C,h)))))},{flush:"post"}),l=()=>{i(),n()};return vo(n),l}function Aa(){const e=Ie(!1),t=Et();return t&&Ht(()=>{e.value=!0},t),e}function Ra(e){const t=Aa();return oe(()=>(t.value,!!e()))}function Ma(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Of(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=ze,eventName:i="keydown",passive:l=!1,dedupe:o=!1}=s,c=Ma(t);return Qe(r,i,a=>{a.repeat&&ce(o)||c(a)&&n(a)},l)}const Oa=Symbol("vueuse-ssr-width");function Ia(){const e=Ei()?pa(Oa,null):null;return typeof e=="number"?e:void 0}function bo(e,t={}){const{window:n=ze,ssrWidth:s=Ia()}=t,r=Ra(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),i=Ie(typeof s=="number"),l=Ie(),o=Ie(!1),c=u=>{o.value=u.matches};return Ci(()=>{if(i.value){i.value=!r.value;const u=ce(e).split(",");o.value=u.some(a=>{const h=a.includes("not all"),v=a.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),_=a.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let C=!!(v||_);return v&&C&&(C=s>=Wr(v[1])),_&&C&&(C=s<=Wr(_[1])),h?!C:C});return}r.value&&(l.value=n.matchMedia(ce(e)),o.value=l.value.matches)}),Qe(l,"change",c,{passive:!0}),oe(()=>o.value)}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Pa=La();function La(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function wo(e,t){return Pa[e]||t}function So(e){return bo("(prefers-color-scheme: dark)",e)}function Na(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Fa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},kr="vueuse-storage";function Ha(e,t,n,s={}){var r;const{flush:i="pre",deep:l=!0,listenToStorageChanges:o=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:a,window:h=ze,eventFilter:v,onError:_=E=>{console.error(E)},initOnMounted:C}=s,P=(a?Ie:yt)(typeof t=="function"?t():t),K=oe(()=>ce(e));if(!n)try{n=wo("getDefaultStorage",()=>{var E;return(E=ze)==null?void 0:E.localStorage})()}catch(E){_(E)}if(!n)return P;const H=ce(t),V=Na(H),p=(r=s.serializer)!=null?r:Fa[V],{pause:g,resume:O}=Ea(P,()=>R(P.value),{flush:i,deep:l,eventFilter:v});Pe(K,()=>T(),{flush:i}),h&&o&&Yn(()=>{n instanceof Storage?Qe(h,"storage",T,{passive:!0}):Qe(h,kr,I),C&&T()}),C||T();function W(E,y){if(h){const N={key:K.value,oldValue:E,newValue:y,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",N):new CustomEvent(kr,{detail:N}))}}function R(E){try{const y=n.getItem(K.value);if(E==null)W(y,null),n.removeItem(K.value);else{const N=p.write(E);y!==N&&(n.setItem(K.value,N),W(y,N))}}catch(y){_(y)}}function U(E){const y=E?E.newValue:n.getItem(K.value);if(y==null)return c&&H!=null&&n.setItem(K.value,p.write(H)),H;if(!E&&u){const N=p.read(y);return typeof u=="function"?u(N,H):V==="object"&&!Array.isArray(N)?{...H,...N}:N}else return typeof y!="string"?y:p.read(y)}function T(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){P.value=H;return}if(!(E&&E.key!==K.value)){g();try{(E==null?void 0:E.newValue)!==p.write(P.value)&&(P.value=U(E))}catch(y){_(y)}finally{E?Un(O):O()}}}}function I(E){T(E.detail)}return P}const Da="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function $a(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=ze,storage:i,storageKey:l="vueuse-color-scheme",listenToStorageChanges:o=!0,storageRef:c,emitAuto:u,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},v=So({window:r}),_=oe(()=>v.value?"dark":"light"),C=c||(l==null?zs(s):Ha(l,s,i,{window:r,listenToStorageChanges:o})),P=oe(()=>C.value==="auto"?_.value:C.value),K=wo("updateHTMLAttrs",(g,O,W)=>{const R=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Qs(g);if(!R)return;const U=new Set,T=new Set;let I=null;if(O==="class"){const y=W.split(/\s/g);Object.values(h).flatMap(N=>(N||"").split(/\s/g)).filter(Boolean).forEach(N=>{y.includes(N)?U.add(N):T.add(N)})}else I={key:O,value:W};if(U.size===0&&T.size===0&&I===null)return;let E;a&&(E=r.document.createElement("style"),E.appendChild(document.createTextNode(Da)),r.document.head.appendChild(E));for(const y of U)R.classList.add(y);for(const y of T)R.classList.remove(y);I&&R.setAttribute(I.key,I.value),a&&(r.getComputedStyle(E).opacity,document.head.removeChild(E))});function H(g){var O;K(t,n,(O=h[g])!=null?O:g)}function V(g){e.onChanged?e.onChanged(g,H):H(g)}Pe(P,V,{flush:"post",immediate:!0}),Yn(()=>V(P.value));const p=oe({get(){return u?C.value:P.value},set(g){C.value=g}});return Object.assign(p,{store:C,system:_,state:P})}function ja(e={}){const{valueDark:t="dark",valueLight:n=""}=e,s=$a({...e,onChanged:(l,o)=>{var c;e.onChanged?(c=e.onChanged)==null||c.call(e,l==="dark",o,l):o(l)},modes:{dark:t,light:n}}),r=oe(()=>s.system.value);return oe({get(){return s.value==="dark"},set(l){const o=l?"dark":"light";r.value===o?s.value="auto":s.value=o}})}function ps(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}const Ur=1;function Va(e,t={}){const{throttle:n=0,idle:s=200,onStop:r=Tt,onScroll:i=Tt,offset:l={left:0,right:0,top:0,bottom:0},eventListenerOptions:o={capture:!1,passive:!0},behavior:c="auto",window:u=ze,onError:a=R=>{console.error(R)}}=t,h=Ie(0),v=Ie(0),_=oe({get(){return h.value},set(R){P(R,void 0)}}),C=oe({get(){return v.value},set(R){P(void 0,R)}});function P(R,U){var T,I,E,y;if(!u)return;const N=ce(e);if(!N)return;(E=N instanceof Document?u.document.body:N)==null||E.scrollTo({top:(T=ce(U))!=null?T:C.value,left:(I=ce(R))!=null?I:_.value,behavior:ce(c)});const Y=((y=N==null?void 0:N.document)==null?void 0:y.documentElement)||(N==null?void 0:N.documentElement)||N;_!=null&&(h.value=Y.scrollLeft),C!=null&&(v.value=Y.scrollTop)}const K=Ie(!1),H=Nt({left:!0,right:!1,top:!0,bottom:!1}),V=Nt({left:!1,right:!1,top:!1,bottom:!1}),p=R=>{K.value&&(K.value=!1,V.left=!1,V.right=!1,V.top=!1,V.bottom=!1,r(R))},g=Sa(p,n+s),O=R=>{var U;if(!u)return;const T=((U=R==null?void 0:R.document)==null?void 0:U.documentElement)||(R==null?void 0:R.documentElement)||Qs(R),{display:I,flexDirection:E,direction:y}=getComputedStyle(T),N=y==="rtl"?-1:1,Y=T.scrollLeft;V.left=Yh.value;const ie=Math.abs(Y*N)<=(l.left||0),j=Math.abs(Y*N)+T.clientWidth>=T.scrollWidth-(l.right||0)-Ur;I==="flex"&&E==="row-reverse"?(H.left=j,H.right=ie):(H.left=ie,H.right=j),h.value=Y;let X=T.scrollTop;R===u.document&&!X&&(X=u.document.body.scrollTop),V.top=Xv.value;const D=Math.abs(X)<=(l.top||0),ee=Math.abs(X)+T.clientHeight>=T.scrollHeight-(l.bottom||0)-Ur;I==="flex"&&E==="column-reverse"?(H.top=ee,H.bottom=D):(H.top=D,H.bottom=ee),v.value=X},W=R=>{var U;if(!u)return;const T=(U=R.target.documentElement)!=null?U:R.target;O(T),K.value=!0,g(R),i(R)};return Qe(e,"scroll",n?xa(W,n,!0,!1):W,o),Yn(()=>{try{const R=ce(e);if(!R)return;O(R)}catch(R){a(R)}}),Qe(e,"scrollend",p,o),{x:_,y:C,isScrolling:K,arrivedState:H,directions:V,measure(){const R=ce(e);u&&R&&O(R)}}}function xo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const gs=new WeakMap;function If(e,t=!1){const n=Ie(t);let s=null,r="";Pe(zs(e),o=>{const c=ps(ce(o));if(c){const u=c;if(gs.get(u)||gs.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(r=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const i=()=>{const o=ps(ce(e));!o||n.value||(Vr&&(s=Qe(o,"touchmove",c=>{Wa(c)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},l=()=>{const o=ps(ce(e));!o||!n.value||(Vr&&(s==null||s()),o.style.overflow=r,gs.delete(o),n.value=!1)};return vo(l),oe({get(){return n.value},set(o){o?i():l()}})}function Pf(e={}){const{window:t=ze,...n}=e;return Va(t,n)}function Lf(e={}){const{window:t=ze,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:l="inner"}=e,o=Ie(n),c=Ie(s),u=()=>{if(t)if(l==="outer")o.value=t.outerWidth,c.value=t.outerHeight;else if(l==="visual"&&t.visualViewport){const{width:h,height:v,scale:_}=t.visualViewport;o.value=Math.round(h*_),c.value=Math.round(v*_)}else i?(o.value=t.innerWidth,c.value=t.innerHeight):(o.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};u(),Yn(u);const a={passive:!0};if(Qe("resize",u,a),t&&l==="visual"&&t.visualViewport&&Qe(t.visualViewport,"resize",u,a),r){const h=bo("(orientation: portrait)");Pe(h,()=>u())}return{width:o,height:c}}const ms={};var vs={};const To=/^(?:[a-z]+:|\/\/)/i,ka="vitepress-theme-appearance",Ua=/#.*$/,Ba=/[?#].*$/,Ka=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Eo={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function qa(e,t,n=!1){if(t===void 0)return!1;if(e=Br(`/${e}`),n)return new RegExp(t).test(e);if(Br(t)!==e)return!1;const s=t.match(Ua);return s?(ge?location.hash:"")===s[0]:!0}function Br(e){return decodeURI(e).replace(Ba,"").replace(Ka,"$1")}function Ga(e){return To.test(e)}function Xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ga(n)&&qa(t,`/${n}/`,!0))||"root"}function Ya(e,t){var s,r,i,l,o,c,u;const n=Xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((l=e.locales[n])==null?void 0:l.titleTemplate)??e.titleTemplate,description:((o=e.locales[n])==null?void 0:o.description)??e.description,head:Ao(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function Co(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Ja(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Ja(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function za(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,l])=>i===n&&l[r[0]]===r[1])}function Ao(e,t){return[...e.filter(n=>!za(t,n)),...t]}const Qa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Za=/^[a-z]:/i;function Kr(e){const t=Za.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Qa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ys=new Set;function ef(e){if(ys.size===0){const n=typeof process=="object"&&(vs==null?void 0:vs.VITE_EXTRA_EXTENSIONS)||(ms==null?void 0:ms.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ys.add(s))}const t=e.split(".").pop();return t==null||!ys.has(t.toLowerCase())}const tf=Symbol(),xt=Ie(ha);function Nf(e){const t=oe(()=>Ya(xt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?yt(!0):n==="force-auto"?So():n?ja({storageKey:ka,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):yt(!1),r=yt(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Pe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:oe(()=>t.value.themeConfig),page:oe(()=>e.data),frontmatter:oe(()=>e.data.frontmatter),params:oe(()=>e.data.params),lang:oe(()=>t.value.lang),dir:oe(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:oe(()=>t.value.localeIndex||"root"),title:oe(()=>Co(t.value,e.data)),description:oe(()=>e.data.description||t.value.description),isDark:s,hash:oe(()=>r.value)}}function nf(){const e=_t(tf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function sf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function qr(e){return To.test(e)||!e.startsWith("/")?e:sf(xt.value.base,e)}function rf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/Documentation/";t=Kr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Kr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let xn=[];function Ff(e){xn.push(e),Gn(()=>{xn=xn.filter(t=>t!==e)})}function of(){let e=xt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Gr(e,n);else if(Array.isArray(e))for(const s of e){const r=Gr(s,n);if(r){t=r;break}}return t}function Gr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const lf=Symbol(),Ro="http://a.com",cf=()=>({path:"/",component:null,data:Eo});function Hf(e,t){const n=Nt(cf()),s={route:n,go:r};async function r(o=ge?location.href:"/"){var c,u;o=_s(o),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,o))!==!1&&(ge&&o!==_s(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",o)),await l(o),await((u=s.onAfterRouteChange??s.onAfterRouteChanged)==null?void 0:u(o)))}let i=null;async function l(o,c=0,u=!1){var v,_;if(await((v=s.onBeforePageLoad)==null?void 0:v.call(s,o))===!1)return;const a=new URL(o,Ro),h=i=a.pathname;try{let C=await e(h);if(!C)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:P,__pageData:K}=C;if(!P)throw new Error(`Invalid route component: ${P}`);await((_=s.onAfterPageLoad)==null?void 0:_.call(s,o)),n.path=ge?h:qr(h),n.component=bn(P),n.data=bn(K),ge&&Un(()=>{let H=xt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!xt.value.cleanUrls&&!H.endsWith("/")&&(H+=".html"),H!==a.pathname&&(a.pathname=H,o=H+a.search+a.hash,history.replaceState({},"",o)),a.hash&&!c){let V=null;try{V=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(V){Xr(V,a.hash);return}}window.scrollTo(0,c)})}}catch(C){if(!/fetch|Page not found/.test(C.message)&&!/^\/404(\.html|\/)?$/.test(o)&&console.error(C),!u)try{const P=await fetch(xt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await P.json(),await l(o,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:qr(h),n.component=t?bn(t):null;const P=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Eo,relativePath:P}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",o=>{if(o.defaultPrevented||!(o.target instanceof Element)||o.target.closest("button")||o.button!==0||o.ctrlKey||o.shiftKey||o.altKey||o.metaKey)return;const c=o.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:a,origin:h,pathname:v,hash:_,search:C}=new URL(u,c.baseURI),P=new URL(location.href);h===P.origin&&ef(v)&&(o.preventDefault(),v===P.pathname&&C===P.search?(_!==P.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:P.href,newURL:a}))),_?Xr(c,_,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async o=>{var u;if(o.state===null)return;const c=_s(location.href);await l(c,o.state&&o.state.scrollPosition||0),await((u=s.onAfterRouteChange??s.onAfterRouteChanged)==null?void 0:u(c))}),window.addEventListener("hashchange",o=>{o.preventDefault()})),s}function af(){const e=_t(lf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Mo(){return af().route}function Xr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(l-window.scrollY)>window.innerHeight?window.scrollTo(0,l):window.scrollTo({left:0,top:l,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),l=window.scrollY+s.getBoundingClientRect().top-of()+i;requestAnimationFrame(r)}}function _s(e){const t=new URL(e,Ro);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),xt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const vn=()=>xn.forEach(e=>e()),Df=Ni({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Mo(),{frontmatter:n,site:s}=nf();return Pe(n,vn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:vn,onVnodeUpdated:vn,onVnodeUnmounted:vn}):"404 Page Not Found"])}}),$f=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},jf=Ni({setup(e,{slots:t}){const n=yt(!1);return Ht(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Vf(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const l=Array.from(i.children).find(u=>u.classList.contains("active"));if(!l)return;const o=i.children[r];if(!o||l===o)return;l.classList.remove("active"),o.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Wf(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const l=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),o=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(o.join(",")).forEach(a=>a.remove());let u=c.textContent||"";l&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),ff(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function ff(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function kf(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(o=>{const c=bs(o);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const l=i.map(bs);s.forEach((o,c)=>{const u=l.findIndex(a=>a==null?void 0:a.isEqualNode(o??null));u!==-1?delete l[u]:(o==null||o.remove(),delete s[c])}),l.forEach(o=>o&&document.head.appendChild(o)),s=[...s,...l].filter(Boolean)};Ci(()=>{const i=e.data,l=t.value,o=i&&i.description,c=i&&i.frontmatter.head||[],u=Co(l,i);u!==document.title&&(document.title=u);const a=o||l.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):bs(["meta",{name:"description",content:a}]),r(Ao(l.head,df(c)))})}function bs([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function uf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function df(e){return e.filter(t=>!uf(t))}const ws=new Set,Oo=()=>document.createElement("link"),hf=e=>{const t=Oo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},pf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let yn;const gf=ge&&(yn=Oo())&&yn.relList&&yn.relList.supports&&yn.relList.supports("prefetch")?hf:pf;function Uf(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(l=>{if(l.isIntersecting){const o=l.target;n.unobserve(o);const{pathname:c}=o;if(!ws.has(c)){ws.add(c);const u=rf(c);u&&gf(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:l,pathname:o}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=o.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&l===location.hostname&&(o!==location.pathname?n.observe(i):ws.add(o))})})};Ht(s);const r=Mo();Pe(()=>r.path,s),Gn(()=>{n&&n.disconnect()})}export{Sf as $,of as A,_f as B,vf as C,Ff as D,de as E,ve as F,Ie as G,yf as H,To as I,Mo as J,Ec as K,_t as L,Lf as M,$s as N,Of as O,Un as P,Pf as Q,ge as R,Yt as S,Cf as T,If as U,Ol as V,wf as W,Rf as X,Di as Y,Af as Z,$f as _,fo as a,kf as a0,lf as a1,Nf as a2,tf as a3,Df as a4,jf as a5,xt as a6,Hf as a7,rf as a8,Mf as a9,Uf as aa,Wf as ab,Vf as ac,Ls as ad,Tf as ae,Is as b,xf as c,Ni as d,Ef as e,ef as f,qr as g,oe as h,Ga as i,ao as j,Wn as k,qa as l,bo as m,js as n,Os as o,yt as p,Pe as q,bf as r,Ci as s,Ko as t,nf as u,Ht as v,Ml as w,Gn as x,mf as y,Gl as z}; diff --git a/.vitepress/dist/assets/chunks/theme.BZmAIviK.js b/.vitepress/dist/assets/chunks/theme.BZmAIviK.js new file mode 100644 index 0000000..0f6b5c5 --- /dev/null +++ b/.vitepress/dist/assets/chunks/theme.BZmAIviK.js @@ -0,0 +1 @@ +import{d as p,c as u,r as c,n as T,o as s,a as j,t as N,b as _,w as h,T as ce,e as m,_ as b,u as He,i as Ae,f as Be,g as ue,h as g,j as v,k as i,l as z,m as se,p as S,q as F,s as Y,v as U,x as de,y as ve,z as Ce,A as Ee,F as x,B as H,C as W,D as Q,E as k,G as ge,H as C,I as $e,J as X,K as G,L as Z,M as Fe,N as ye,O as De,P as Pe,Q as Le,R as ee,S as Oe,U as Ve,V as Se,W as Ge,X as Ue,Y as je,Z as ze,$ as We}from"./framework.DIXg7aqb.js";const qe=p({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(s(),u("span",{class:T(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[j(N(e.text),1)])],2))}}),Ke={key:0,class:"VPBackdrop"},Re=p({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(s(),_(ce,{name:"fade"},{default:h(()=>[e.show?(s(),u("div",Ke)):m("",!0)]),_:1}))}}),Je=b(Re,[["__scopeId","data-v-54a304ca"]]),P=He;function Ye(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function ie(e){return e.startsWith("/")?e:`/${e}`}function fe(e){const{pathname:t,search:n,hash:a,protocol:o}=new URL(e,"http://a.com");if(Ae(e)||e.startsWith("#")||!o.startsWith("http")||!Be(t))return e;const{site:r}=P(),l=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return ue(l)}function K({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:o,hash:r}=P(),l=g(()=>{var d,y;return{label:(d=t.value.locales[n.value])==null?void 0:d.label,link:((y=t.value.locales[n.value])==null?void 0:y.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:g(()=>Object.entries(t.value.locales).flatMap(([d,y])=>l.value.label===y.label?[]:{text:y.label,link:Qe(y.link||(d==="root"?"/":`/${d}/`),o.value.i18nRouting!==!1&&e,a.value.relativePath.slice(l.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:l}}function Qe(e,t,n,a){return t?e.replace(/\/$/,"")+ie(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const Xe={class:"NotFound"},Ze={class:"code"},et={class:"title"},tt={class:"quote"},nt={class:"action"},at=["href","aria-label"],ot=p({__name:"NotFound",setup(e){const{theme:t}=P(),{currentLang:n}=K();return(a,o)=>{var r,l,f,d,y;return s(),u("div",Xe,[v("p",Ze,N(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),v("h1",et,N(((l=i(t).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=v("div",{class:"divider"},null,-1)),v("blockquote",tt,N(((f=i(t).notFound)==null?void 0:f.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",nt,[v("a",{class:"link",href:i(ue)(i(n).link),"aria-label":((d=i(t).notFound)==null?void 0:d.linkLabel)??"go to home"},N(((y=i(t).notFound)==null?void 0:y.linkText)??"Take me home"),9,at)])])}}}),st=b(ot,[["__scopeId","data-v-6ff51ddd"]]);function Te(e,t){if(Array.isArray(e))return R(e);if(e==null)return[];t=ie(t);const n=Object.keys(e).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>t.startsWith(ie(o))),a=n?e[n]:[];return Array.isArray(a)?R(a):R(a.items,a.base)}function it(e){const t=[];let n=0;for(const a in e){const o=e[a];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function rt(e){const t=[];function n(a){for(const o of a)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function re(e,t){return Array.isArray(t)?t.some(n=>re(e,n)):z(e,t.link)?!0:t.items?re(e,t.items):!1}function R(e,t){return[...e].map(n=>{const a={...n},o=a.base||t;return o&&a.link&&(a.link=o+a.link),a.items&&(a.items=R(a.items,o)),a})}function D(){const{frontmatter:e,page:t,theme:n}=P(),a=se("(min-width: 960px)"),o=S(!1),r=g(()=>{const w=n.value.sidebar,A=t.value.relativePath;return w?Te(w,A):[]}),l=S(r.value);F(r,(w,A)=>{JSON.stringify(w)!==JSON.stringify(A)&&(l.value=r.value)});const f=g(()=>e.value.sidebar!==!1&&l.value.length>0&&e.value.layout!=="home"),d=g(()=>y?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),y=g(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),L=g(()=>f.value&&a.value),$=g(()=>f.value?it(l.value):[]);function V(){o.value=!0}function M(){o.value=!1}function I(){o.value?M():V()}return{isOpen:o,sidebar:l,sidebarGroups:$,hasSidebar:f,hasAside:y,leftAside:d,isSidebarEnabled:L,open:V,close:M,toggle:I}}function lt(e,t){let n;Y(()=>{n=e.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",a)}),de(()=>{window.removeEventListener("keyup",a)});function a(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function ct(e){const{page:t,hash:n}=P(),a=S(!1),o=g(()=>e.value.collapsed!=null),r=g(()=>!!e.value.link),l=S(!1),f=()=>{l.value=z(t.value.relativePath,e.value.link)};F([t,e,n],f),U(f);const d=g(()=>l.value?!0:e.value.items?re(t.value.relativePath,e.value.items):!1),y=g(()=>!!(e.value.items&&e.value.items.length));Y(()=>{a.value=!!(o.value&&e.value.collapsed)}),ve(()=>{(l.value||d.value)&&(a.value=!1)});function L(){o.value&&(a.value=!a.value)}return{collapsed:a,collapsible:o,isLink:r,isActiveLink:l,hasActiveLink:d,hasChildren:y,toggle:L}}function ut(){const{hasSidebar:e}=D(),t=se("(min-width: 960px)"),n=se("(min-width: 1280px)");return{isAsideEnabled:g(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const dt=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,le=[];function Ne(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function he(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:vt(n),link:"#"+n.id,level:a}});return ft(t,e)}function vt(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(dt.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function ft(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return pt(e,a,o)}function ht(e,t){const{isAsideEnabled:n}=ut(),a=Ye(r,100);let o=null;U(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),Ce(()=>{l(location.hash)}),de(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const f=window.scrollY,d=window.innerHeight,y=document.body.offsetHeight,L=Math.abs(f+d-y)<1,$=le.map(({element:M,link:I})=>({link:I,top:mt(M)})).filter(({top:M})=>!Number.isNaN(M)).sort((M,I)=>M.top-I.top);if(!$.length){l(null);return}if(f<1){l(null);return}if(L){l($[$.length-1].link);return}let V=null;for(const{link:M,top:I}of $){if(I>f+Ee()+4)break;V=M}l(V)}function l(f){o&&o.classList.remove("active"),f==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(f)}"]`);const d=o;d?(d.classList.add("active"),t.value.style.top=d.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function mt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function pt(e,t,n){le.length=0;const a=[],o=[];return e.forEach(r=>{const l={...r,children:[]};let f=o[o.length-1];for(;f&&f.level>=l.level;)o.pop(),f=o[o.length-1];if(l.element.classList.contains("ignore-header")||f&&"shouldIgnore"in f){o.push({level:l.level,shouldIgnore:!0});return}l.level>n||l.level{const o=W("VPDocOutlineItem",!0);return s(),u("ul",{class:T(["VPDocOutlineItem",e.root?"root":"nested"])},[(s(!0),u(x,null,H(e.headers,({children:r,link:l,title:f})=>(s(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:t,title:f},N(f),9,kt),r!=null&&r.length?(s(),_(o,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),Me=b(_t,[["__scopeId","data-v-53c99d69"]]),bt={class:"content"},gt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},$t=p({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=P(),a=ge([]);Q(()=>{a.value=he(t.value.outline??n.value.outline)});const o=S(),r=S();return ht(o,r),(l,f)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:T(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:o},[v("div",bt,[v("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),v("div",gt,N(i(Ne)(i(n))),1),k(Me,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),yt=b($t,[["__scopeId","data-v-f610f197"]]),Pt={class:"VPDocAsideCarbonAds"},Lt=p({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(s(),u("div",Pt,[k(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Vt={class:"VPDocAside"},St=p({__name:"VPDocAside",setup(e){const{theme:t}=P();return(n,a)=>(s(),u("div",Vt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),k(yt),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=v("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(s(),_(Lt,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):m("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Tt=b(St,[["__scopeId","data-v-cb998dce"]]);function Nt(){const{theme:e,page:t}=P();return g(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let o;return typeof a=="function"?o=a(t.value):o=a.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function Mt(){const{page:e,theme:t,frontmatter:n}=P();return g(()=>{var y,L,$,V,M,I,w,A;const a=Te(t.value.sidebar,e.value.relativePath),o=rt(a),r=xt(o,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>z(e.value.relativePath,B.link)),f=((y=t.value.docFooter)==null?void 0:y.prev)===!1&&!n.value.prev||n.value.prev===!1,d=((L=t.value.docFooter)==null?void 0:L.next)===!1&&!n.value.next||n.value.next===!1;return{prev:f?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??(($=r[l-1])==null?void 0:$.docFooterText)??((V=r[l-1])==null?void 0:V.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((M=r[l-1])==null?void 0:M.link)},next:d?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[l+1])==null?void 0:I.docFooterText)??((w=r[l+1])==null?void 0:w.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((A=r[l+1])==null?void 0:A.link)}}})}function xt(e,t){const n=new Set;return e.filter(a=>{const o=t(a);return n.has(o)?!1:n.add(o)})}const E=p({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=g(()=>t.tag??(t.href?"a":"span")),a=g(()=>t.href&&$e.test(t.href)||t.target==="_blank");return(o,r)=>(s(),_(C(n.value),{class:T(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(fe)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),It={class:"VPLastUpdated"},wt=["datetime"],Ht=p({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=P(),o=g(()=>new Date(n.value.lastUpdated)),r=g(()=>o.value.toISOString()),l=S("");return U(()=>{Y(()=>{var f,d,y;l.value=new Intl.DateTimeFormat((d=(f=t.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&d.forceLocale?a.value:void 0,((y=t.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(f,d)=>{var y;return s(),u("p",It,[j(N(((y=i(t).lastUpdated)==null?void 0:y.text)||i(t).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:r.value},N(l.value),9,wt)])}}}),At=b(Ht,[["__scopeId","data-v-1bb0c8a8"]]),Bt={key:0,class:"VPDocFooter"},Ct={key:0,class:"edit-info"},Et={key:0,class:"edit-link"},Ft={key:1,class:"last-updated"},Dt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ot={class:"pager"},Gt=["innerHTML"],Ut=["innerHTML"],jt={class:"pager"},zt=["innerHTML"],Wt=["innerHTML"],qt=p({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=P(),o=Nt(),r=Mt(),l=g(()=>t.value.editLink&&a.value.editLink!==!1),f=g(()=>n.value.lastUpdated),d=g(()=>l.value||f.value||r.value.prev||r.value.next);return(y,L)=>{var $,V,M,I;return d.value?(s(),u("footer",Bt,[c(y.$slots,"doc-footer-before",{},void 0,!0),l.value||f.value?(s(),u("div",Ct,[l.value?(s(),u("div",Et,[k(E,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:h(()=>[L[0]||(L[0]=v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+N(i(o).text),1)]),_:1},8,["href"])])):m("",!0),f.value?(s(),u("div",Ft,[k(At)])):m("",!0)])):m("",!0),($=i(r).prev)!=null&&$.link||(V=i(r).next)!=null&&V.link?(s(),u("nav",Dt,[L[1]||(L[1]=v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),v("div",Ot,[(M=i(r).prev)!=null&&M.link?(s(),_(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var w;return[v("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.prev)||"Previous page"},null,8,Gt),v("span",{class:"title",innerHTML:i(r).prev.text},null,8,Ut)]}),_:1},8,["href"])):m("",!0)]),v("div",jt,[(I=i(r).next)!=null&&I.link?(s(),_(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var w;return[v("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.next)||"Next page"},null,8,zt),v("span",{class:"title",innerHTML:i(r).next.text},null,8,Wt)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),Kt=b(qt,[["__scopeId","data-v-1bcd8184"]]),Rt={class:"container"},Jt={class:"aside-container"},Yt={class:"aside-content"},Qt={class:"content"},Xt={class:"content-container"},Zt={class:"main"},en=p({__name:"VPDoc",setup(e){const{theme:t}=P(),n=X(),{hasSidebar:a,hasAside:o,leftAside:r}=D(),l=g(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,d)=>{const y=W("Content");return s(),u("div",{class:T(["VPDoc",{"has-sidebar":i(a),"has-aside":i(o)}])},[c(f.$slots,"doc-top",{},void 0,!0),v("div",Rt,[i(o)?(s(),u("div",{key:0,class:T(["aside",{"left-aside":i(r)}])},[d[0]||(d[0]=v("div",{class:"aside-curtain"},null,-1)),v("div",Jt,[v("div",Yt,[k(Tt,null,{"aside-top":h(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),v("div",Qt,[v("div",Xt,[c(f.$slots,"doc-before",{},void 0,!0),v("main",Zt,[k(y,{class:T(["vp-doc",[l.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Kt,null,{"doc-footer-before":h(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(f.$slots,"doc-after",{},void 0,!0)])])]),c(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),tn=b(en,[["__scopeId","data-v-e6f2a212"]]),nn=p({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=g(()=>t.href&&$e.test(t.href)),a=g(()=>t.tag||(t.href?"a":"button"));return(o,r)=>(s(),_(C(a.value),{class:T(["VPButton",[e.size,e.theme]]),href:e.href?i(fe)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[j(N(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),an=b(nn,[["__scopeId","data-v-93dc4167"]]),on=["src","alt"],sn=p({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=W("VPImage",!0);return e.image?(s(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,on)):(s(),u(x,{key:1},[k(a,G({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),k(a,G({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),J=b(sn,[["__scopeId","data-v-ab19afbb"]]),rn={class:"container"},ln={class:"main"},cn={class:"heading"},un=["innerHTML"],dn=["innerHTML"],vn=["innerHTML"],fn={key:0,class:"actions"},hn={key:0,class:"image"},mn={class:"image-container"},pn=p({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Z("hero-image-slot-exists");return(n,a)=>(s(),u("div",{class:T(["VPHero",{"has-image":e.image||i(t)}])},[v("div",rn,[v("div",ln,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[v("h1",cn,[e.name?(s(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,un)):m("",!0),e.text?(s(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,dn)):m("",!0)]),e.tagline?(s(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,vn)):m("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(s(),u("div",fn,[(s(!0),u(x,null,H(e.actions,o=>(s(),u("div",{key:o.link,class:"action"},[k(an,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(s(),u("div",hn,[v("div",mn,[a[0]||(a[0]=v("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(s(),_(J,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),kn=b(pn,[["__scopeId","data-v-dd8814ff"]]),_n=p({__name:"VPHomeHero",setup(e){const{frontmatter:t}=P();return(n,a)=>i(t).hero?(s(),_(kn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),bn={class:"box"},gn={key:0,class:"icon"},$n=["innerHTML"],yn=["innerHTML"],Pn=["innerHTML"],Ln={key:4,class:"link-text"},Vn={class:"link-text-value"},Sn=p({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(s(),_(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[v("article",bn,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",gn,[k(J,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),_(J,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,$n)):m("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,yn),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Pn)):m("",!0),e.linkText?(s(),u("div",Ln,[v("p",Vn,[j(N(e.linkText)+" ",1),n[0]||(n[0]=v("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Tn=b(Sn,[["__scopeId","data-v-bd37d1a2"]]),Nn={key:0,class:"VPFeatures"},Mn={class:"container"},xn={class:"items"},In=p({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=g(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,o)=>e.features?(s(),u("div",Nn,[v("div",Mn,[v("div",xn,[(s(!0),u(x,null,H(e.features,r=>(s(),u("div",{key:r.title,class:T(["item",[n.value]])},[k(Tn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),wn=b(In,[["__scopeId","data-v-b1eea84a"]]),Hn=p({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=P();return(n,a)=>i(t).features?(s(),_(wn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):m("",!0)}}),An=p({__name:"VPHomeContent",setup(e){const{width:t}=Fe({initialWidth:0,includeScrollbar:!1});return(n,a)=>(s(),u("div",{class:"vp-doc container",style:ye(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),Bn=b(An,[["__scopeId","data-v-c141a4bd"]]),Cn=p({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=P();return(a,o)=>{const r=W("Content");return s(),u("div",{class:T(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),k(_n,null,{"home-hero-info-before":h(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),k(Hn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(s(),_(Bn,{key:0},{default:h(()=>[k(r)]),_:1})):(s(),_(r,{key:1}))],2)}}}),En=b(Cn,[["__scopeId","data-v-e07eaea7"]]),Fn={},Dn={class:"VPPage"};function On(e,t){const n=W("Content");return s(),u("div",Dn,[c(e.$slots,"page-top"),k(n),c(e.$slots,"page-bottom")])}const Gn=b(Fn,[["render",On]]),Un=p({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=P(),{hasSidebar:a}=D();return(o,r)=>(s(),u("div",{class:T(["VPContent",{"has-sidebar":i(a),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(st)],!0):i(n).layout==="page"?(s(),_(Gn,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(s(),_(En,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(s(),_(C(i(n).layout),{key:3})):(s(),_(tn,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),jn=b(Un,[["__scopeId","data-v-9a6c75ad"]]),zn={class:"container"},Wn=["innerHTML"],qn=["innerHTML"],Kn=p({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=P(),{hasSidebar:a}=D();return(o,r)=>i(t).footer&&i(n).footer!==!1?(s(),u("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(a)}])},[v("div",zn,[i(t).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,Wn)):m("",!0),i(t).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,qn)):m("",!0)])],2)):m("",!0)}}),Rn=b(Kn,[["__scopeId","data-v-566314d4"]]);function Jn(){const{theme:e,frontmatter:t}=P(),n=ge([]),a=g(()=>n.value.length>0);return Q(()=>{n.value=he(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:a}}const Yn={class:"menu-text"},Qn={class:"header"},Xn={class:"outline"},Zn=p({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=P(),a=S(!1),o=S(0),r=S(),l=S();function f($){var V;(V=r.value)!=null&&V.contains($.target)||(a.value=!1)}F(a,$=>{if($){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),De("Escape",()=>{a.value=!1}),Q(()=>{a.value=!1});function d(){a.value=!a.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function y($){$.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Pe(()=>{a.value=!1}))}function L(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return($,V)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:ye({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(s(),u("button",{key:0,onClick:d,class:T({open:a.value})},[v("span",Yn,N(i(Ne)(i(n))),1),V[0]||(V[0]=v("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),u("button",{key:1,onClick:L},N(i(n).returnToTopLabel||"Return to top"),1)),k(ce,{name:"flyout"},{default:h(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:y},[v("div",Qn,[v("a",{class:"top-link",href:"#",onClick:L},N(i(n).returnToTopLabel||"Return to top"),1)]),v("div",Xn,[k(Me,{headers:e.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),ea=b(Zn,[["__scopeId","data-v-6b867909"]]),ta={class:"container"},na=["aria-expanded"],aa={class:"menu-text"},oa=p({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=P(),{hasSidebar:a}=D(),{headers:o}=Jn(),{y:r}=Le(),l=S(0);U(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Q(()=>{o.value=he(n.value.outline??t.value.outline)});const f=g(()=>o.value.length===0),d=g(()=>f.value&&!a.value),y=g(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:f.value,fixed:d.value}));return(L,$)=>i(n).layout!=="home"&&(!d.value||i(r)>=l.value)?(s(),u("div",{key:0,class:T(y.value)},[v("div",ta,[i(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:$[0]||($[0]=V=>L.$emit("open-menu"))},[$[1]||($[1]=v("span",{class:"vpi-align-left menu-icon"},null,-1)),v("span",aa,N(i(t).sidebarMenuLabel||"Menu"),1)],8,na)):m("",!0),k(ea,{headers:i(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),sa=b(oa,[["__scopeId","data-v-2488c25a"]]);function ia(){const e=S(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function a(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const r=X();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const ra={},la={class:"VPSwitch",type:"button",role:"switch"},ca={class:"check"},ua={key:0,class:"icon"};function da(e,t){return s(),u("button",la,[v("span",ca,[e.$slots.default?(s(),u("span",ua,[c(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const va=b(ra,[["render",da],["__scopeId","data-v-b4ccac88"]]),fa=p({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=P(),a=Z("toggle-appearance",()=>{t.value=!t.value}),o=S("");return ve(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(s(),_(va,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:h(()=>[...l[0]||(l[0]=[v("span",{class:"vpi-sun sun"},null,-1),v("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),me=b(fa,[["__scopeId","data-v-be9742d9"]]),ha={key:0,class:"VPNavBarAppearance"},ma=p({__name:"VPNavBarAppearance",setup(e){const{site:t}=P();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",ha,[k(me)])):m("",!0)}}),pa=b(ma,[["__scopeId","data-v-3f90c1a5"]]),pe=S();let xe=!1,oe=0;function ka(e){const t=S(!1);if(ee){!xe&&_a(),oe++;const n=F(pe,a=>{var o,r,l;a===e.el.value||(o=e.el.value)!=null&&o.contains(a)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});de(()=>{n(),oe--,oe||ba()})}return Oe(t)}function _a(){document.addEventListener("focusin",Ie),xe=!0,pe.value=document.activeElement}function ba(){document.removeEventListener("focusin",Ie)}function Ie(){pe.value=document.activeElement}const ga={class:"VPMenuLink"},$a=["innerHTML"],ya=p({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=P();return(n,a)=>(s(),u("div",ga,[k(E,{class:T({active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[v("span",{innerHTML:e.item.text},null,8,$a)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=b(ya,[["__scopeId","data-v-7eeeb2dc"]]),Pa={class:"VPMenuGroup"},La={key:0,class:"title"},Va=p({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Pa,[e.text?(s(),u("p",La,N(e.text),1)):m("",!0),(s(!0),u(x,null,H(e.items,a=>(s(),u(x,null,["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):m("",!0)],64))),256))]))}}),Sa=b(Va,[["__scopeId","data-v-a6b0397c"]]),Ta={class:"VPMenu"},Na={key:0,class:"items"},Ma=p({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(s(),u("div",Ta,[e.items?(s(),u("div",Na,[(s(!0),u(x,null,H(e.items,a=>(s(),u(x,{key:JSON.stringify(a)},["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):"component"in a?(s(),_(C(a.component),G({key:1,ref_for:!0},a.props),null,16)):(s(),_(Sa,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):m("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),xa=b(Ma,[["__scopeId","data-v-20ed86d6"]]),Ia=["aria-expanded","aria-label"],wa={key:0,class:"text"},Ha=["innerHTML"],Aa={key:1,class:"vpi-more-horizontal icon"},Ba={class:"menu"},Ca=p({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=S(!1),n=S();ka({el:n,onBlur:a});function a(){t.value=!1}return(o,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=l=>t.value=!0),onMouseleave:r[2]||(r[2]=l=>t.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=l=>t.value=!t.value)},[e.button||e.icon?(s(),u("span",wa,[e.icon?(s(),u("span",{key:0,class:T([e.icon,"option-icon"])},null,2)):m("",!0),e.button?(s(),u("span",{key:1,innerHTML:e.button},null,8,Ha)):m("",!0),r[3]||(r[3]=v("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),u("span",Aa))],8,Ia),v("div",Ba,[k(xa,{items:e.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=b(Ca,[["__scopeId","data-v-bfe7971f"]]),Ea=["href","aria-label","innerHTML"],Fa=p({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=S();U(async()=>{var r;await Pe();const o=(r=n.value)==null?void 0:r.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=g(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,r)=>(s(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Ea))}}),Da=b(Fa,[["__scopeId","data-v-60a9a2d3"]]),Oa={class:"VPSocialLinks"},Ga=p({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(s(),u("div",Oa,[(s(!0),u(x,null,H(e.links,({link:a,icon:o,ariaLabel:r})=>(s(),_(Da,{key:a,icon:o,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),_e=b(Ga,[["__scopeId","data-v-e71e869c"]]),Ua={key:0,class:"group translations"},ja={class:"trans-title"},za={key:1,class:"group"},Wa={class:"item appearance"},qa={class:"label"},Ka={class:"appearance-action"},Ra={key:2,class:"group"},Ja={class:"item social-links"},Ya=p({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=P(),{localeLinks:a,currentLang:o}=K({correspondingLink:!0}),r=g(()=>a.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(l,f)=>r.value?(s(),_(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(a).length&&i(o).label?(s(),u("div",Ua,[v("p",ja,N(i(o).label),1),(s(!0),u(x,null,H(i(a),d=>(s(),_(te,{key:d.link,item:d},null,8,["item"]))),128))])):m("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",za,[v("div",Wa,[v("p",qa,N(i(n).darkModeSwitchLabel||"Appearance"),1),v("div",Ka,[k(me)])])])):m("",!0),i(n).socialLinks?(s(),u("div",Ra,[v("div",Ja,[k(_e,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),Qa=b(Ya,[["__scopeId","data-v-f953d92f"]]),Xa=["aria-expanded"],Za=p({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(s(),u("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)])],10,Xa))}}),eo=b(Za,[["__scopeId","data-v-6bee1efd"]]),to=["innerHTML"],no=p({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=P();return(n,a)=>(s(),_(E,{class:T({VPNavBarMenuLink:!0,active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[v("span",{innerHTML:e.item.text},null,8,to)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ao=b(no,[["__scopeId","data-v-815115f5"]]),oo=p({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=P(),a=r=>"component"in r?!1:"link"in r?z(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(a),o=g(()=>a(t.item));return(r,l)=>(s(),_(ke,{class:T({VPNavBarMenuGroup:!0,active:i(z)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||o.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),so={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},io=p({__name:"VPNavBarMenu",setup(e){const{theme:t}=P();return(n,a)=>i(t).nav?(s(),u("nav",so,[a[0]||(a[0]=v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),u(x,null,H(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(ao,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(C(o.component),G({key:1,ref_for:!0},o.props),null,16)):(s(),_(oo,{key:2,item:o},null,8,["item"]))],64))),128))])):m("",!0)}}),ro=b(io,[["__scopeId","data-v-afb2845e"]]);function lo(e){const{localeIndex:t,theme:n}=P();function a(o){var I,w,A;const r=o.split("."),l=(I=n.value.search)==null?void 0:I.options,f=l&&typeof l=="object",d=f&&((A=(w=l.locales)==null?void 0:w[t.value])==null?void 0:A.translations)||null,y=f&&l.translations||null;let L=d,$=y,V=e;const M=r.pop();for(const B of r){let O=null;const q=V==null?void 0:V[B];q&&(O=V=q);const ne=$==null?void 0:$[B];ne&&(O=$=ne);const ae=L==null?void 0:L[B];ae&&(O=L=ae),q||(V=O),ne||($=O),ae||(L=O)}return(L==null?void 0:L[M])??($==null?void 0:$[M])??(V==null?void 0:V[M])??""}return a}const co=["aria-label"],uo={class:"DocSearch-Button-Container"},vo={class:"DocSearch-Button-Placeholder"},be=p({__name:"VPNavBarSearchButton",setup(e){const n=lo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,o)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[v("span",uo,[o[0]||(o[0]=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),v("span",vo,N(i(n)("button.buttonText")),1)]),o[1]||(o[1]=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,co))}}),fo={class:"VPNavBarSearch"},ho={id:"local-search"},mo={key:1,id:"docsearch"},po=p({__name:"VPNavBarSearch",setup(e){const t=()=>null,n=()=>null,{theme:a}=P(),o=S(!1),r=S(!1);U(()=>{});function l(){o.value||(o.value=!0,setTimeout(f,16))}function f(){const L=new Event("keydown");L.key="k",L.metaKey=!0,window.dispatchEvent(L),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}const d=S(!1),y="";return(L,$)=>{var V;return s(),u("div",fo,[i(y)==="local"?(s(),u(x,{key:0},[d.value?(s(),_(i(t),{key:0,onClose:$[0]||($[0]=M=>d.value=!1)})):m("",!0),v("div",ho,[k(be,{onClick:$[1]||($[1]=M=>d.value=!0)})])],64)):i(y)==="algolia"?(s(),u(x,{key:1},[o.value?(s(),_(i(n),{key:0,algolia:((V=i(a).search)==null?void 0:V.options)??i(a).algolia,onVnodeBeforeMount:$[2]||($[2]=M=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(s(),u("div",mo,[k(be,{onClick:l})]))],64)):m("",!0)])}}}),ko=p({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=P();return(n,a)=>i(t).socialLinks?(s(),_(_e,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),_o=b(ko,[["__scopeId","data-v-ef6192dc"]]),bo=["href","rel","target"],go=["innerHTML"],$o={key:2},yo=p({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=P(),{hasSidebar:a}=D(),{currentLang:o}=K(),r=g(()=>{var d;return typeof n.value.logoLink=="string"?n.value.logoLink:(d=n.value.logoLink)==null?void 0:d.link}),l=g(()=>{var d;return typeof n.value.logoLink=="string"||(d=n.value.logoLink)==null?void 0:d.rel}),f=g(()=>{var d;return typeof n.value.logoLink=="string"||(d=n.value.logoLink)==null?void 0:d.target});return(d,y)=>(s(),u("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(a)}])},[v("a",{class:"title",href:r.value??i(fe)(i(o).link),rel:l.value,target:f.value},[c(d.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(s(),_(J,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):m("",!0),i(n).siteTitle?(s(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,go)):i(n).siteTitle===void 0?(s(),u("span",$o,N(i(t).title),1)):m("",!0),c(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,bo)],2))}}),Po=b(yo,[["__scopeId","data-v-9f43907a"]]),Lo={class:"items"},Vo={class:"title"},So=p({__name:"VPNavBarTranslations",setup(e){const{theme:t}=P(),{localeLinks:n,currentLang:a}=K({correspondingLink:!0});return(o,r)=>i(n).length&&i(a).label?(s(),_(ke,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[v("div",Lo,[v("p",Vo,N(i(a).label),1),(s(!0),u(x,null,H(i(n),l=>(s(),_(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),To=b(So,[["__scopeId","data-v-acee064b"]]),No={class:"wrapper"},Mo={class:"container"},xo={class:"title"},Io={class:"content"},wo={class:"content-body"},Ho=p({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=Le(),{hasSidebar:a}=D(),{frontmatter:o}=P(),r=S({});return ve(()=>{r.value={"has-sidebar":a.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(l,f)=>(s(),u("div",{class:T(["VPNavBar",r.value])},[v("div",No,[v("div",Mo,[v("div",xo,[k(Po,null,{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",Io,[v("div",wo,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(po,{class:"search"}),k(ro,{class:"menu"}),k(To,{class:"translations"}),k(pa,{class:"appearance"}),k(_o,{class:"social-links"}),k(Qa,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(eo,{class:"hamburger",active:e.isScreenOpen,onClick:f[0]||(f[0]=d=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1))],2))}}),Ao=b(Ho,[["__scopeId","data-v-9fd4d1dd"]]),Bo={key:0,class:"VPNavScreenAppearance"},Co={class:"text"},Eo=p({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=P();return(a,o)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Bo,[v("p",Co,N(i(n).darkModeSwitchLabel||"Appearance"),1),k(me)])):m("",!0)}}),Fo=b(Eo,[["__scopeId","data-v-a3e2920d"]]),Do=["innerHTML"],Oo=p({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[v("span",{innerHTML:e.item.text},null,8,Do)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Go=b(Oo,[["__scopeId","data-v-fa963d97"]]),Uo=["innerHTML"],jo=p({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[v("span",{innerHTML:e.item.text},null,8,Uo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),we=b(jo,[["__scopeId","data-v-e04f3e85"]]),zo={class:"VPNavScreenMenuGroupSection"},Wo={key:0,class:"title"},qo=p({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",zo,[e.text?(s(),u("p",Wo,N(e.text),1)):m("",!0),(s(!0),u(x,null,H(e.items,a=>(s(),_(we,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Ko=b(qo,[["__scopeId","data-v-f60dbfa7"]]),Ro=["aria-controls","aria-expanded"],Jo=["innerHTML"],Yo=["id"],Qo={key:0,class:"item"},Xo={key:1,class:"item"},Zo={key:2,class:"group"},es=p({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=S(!1),a=g(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(r,l)=>(s(),u("div",{class:T(["VPNavScreenMenuGroup",{open:n.value}])},[v("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:o},[v("span",{class:"button-text",innerHTML:e.text},null,8,Jo),l[0]||(l[0]=v("span",{class:"vpi-plus button-icon"},null,-1))],8,Ro),v("div",{id:a.value,class:"items"},[(s(!0),u(x,null,H(e.items,f=>(s(),u(x,{key:JSON.stringify(f)},["link"in f?(s(),u("div",Qo,[k(we,{item:f},null,8,["item"])])):"component"in f?(s(),u("div",Xo,[(s(),_(C(f.component),G({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(s(),u("div",Zo,[k(Ko,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,Yo)],2))}}),ts=b(es,[["__scopeId","data-v-d99bfeec"]]),ns={key:0,class:"VPNavScreenMenu"},as=p({__name:"VPNavScreenMenu",setup(e){const{theme:t}=P();return(n,a)=>i(t).nav?(s(),u("nav",ns,[(s(!0),u(x,null,H(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(Go,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(C(o.component),G({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(s(),_(ts,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),os=p({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=P();return(n,a)=>i(t).socialLinks?(s(),_(_e,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),ss={class:"list"},is=p({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=K({correspondingLink:!0}),a=S(!1);function o(){a.value=!a.value}return(r,l)=>i(t).length&&i(n).label?(s(),u("div",{key:0,class:T(["VPNavScreenTranslations",{open:a.value}])},[v("button",{class:"title",onClick:o},[l[0]||(l[0]=v("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+N(i(n).label)+" ",1),l[1]||(l[1]=v("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),v("ul",ss,[(s(!0),u(x,null,H(i(t),f=>(s(),u("li",{key:f.link,class:"item"},[k(E,{class:"link",href:f.link},{default:h(()=>[j(N(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),rs=b(is,[["__scopeId","data-v-516e4bc3"]]),ls={class:"container"},cs=p({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=S(null),n=Ve(ee?document.body:null);return(a,o)=>(s(),_(ce,{name:"fade",onEnter:o[0]||(o[0]=r=>n.value=!0),onAfterLeave:o[1]||(o[1]=r=>n.value=!1)},{default:h(()=>[e.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[v("div",ls,[c(a.$slots,"nav-screen-content-before",{},void 0,!0),k(as,{class:"menu"}),k(rs,{class:"translations"}),k(Fo,{class:"appearance"}),k(os,{class:"social-links"}),c(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),us=b(cs,[["__scopeId","data-v-2dd6d0c7"]]),ds={key:0,class:"VPNav"},vs=p({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=ia(),{frontmatter:o}=P(),r=g(()=>o.value.navbar!==!1);return Se("close-screen",n),Y(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,f)=>r.value?(s(),u("header",ds,[k(Ao,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(us,{open:i(t)},{"nav-screen-content-before":h(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),fs=b(vs,[["__scopeId","data-v-7ad780c2"]]),hs=["role","tabindex"],ms={key:1,class:"items"},ps=p({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:o,isActiveLink:r,hasActiveLink:l,hasChildren:f,toggle:d}=ct(g(()=>t.item)),y=g(()=>f.value?"section":"div"),L=g(()=>o.value?"a":"div"),$=g(()=>f.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),V=g(()=>o.value?void 0:"button"),M=g(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":o.value},{"is-active":r.value},{"has-active":l.value}]);function I(A){"key"in A&&A.key!=="Enter"||!t.item.link&&d()}function w(){t.item.link&&d()}return(A,B)=>{const O=W("VPSidebarItem",!0);return s(),_(C(y.value),{class:T(["VPSidebarItem",M.value])},{default:h(()=>[e.item.text?(s(),u("div",G({key:0,class:"item",role:V.value},Ge(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[B[1]||(B[1]=v("div",{class:"indicator"},null,-1)),e.item.link?(s(),_(E,{key:0,tag:L.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(s(),_(C($.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),_(C($.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:Ue(w,["enter"]),tabindex:"0"},[...B[0]||(B[0]=[v("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):m("",!0)],16,hs)):m("",!0),e.item.items&&e.item.items.length?(s(),u("div",ms,[e.depth<5?(s(!0),u(x,{key:0},H(e.item.items,q=>(s(),_(O,{key:q.text,item:q,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),ks=b(ps,[["__scopeId","data-v-0009425e"]]),_s=p({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=S(!0);let n=null;return U(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),je(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,o)=>(s(!0),u(x,null,H(e.items,r=>(s(),u("div",{key:r.text,class:T(["group",{"no-transition":t.value}])},[k(ks,{item:r,depth:0},null,8,["item"])],2))),128))}}),bs=b(_s,[["__scopeId","data-v-51288d80"]]),gs={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},$s=p({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=D(),a=e,o=S(null),r=Ve(ee?document.body:null);F([a,o],()=>{var f;a.open?(r.value=!0,(f=o.value)==null||f.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=S(0);return F(t,()=>{l.value+=1},{deep:!0}),(f,d)=>i(n)?(s(),u("aside",{key:0,class:T(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:d[0]||(d[0]=ze(()=>{},["stop"]))},[d[2]||(d[2]=v("div",{class:"curtain"},null,-1)),v("nav",gs,[d[1]||(d[1]=v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(f.$slots,"sidebar-nav-before",{},void 0,!0),(s(),_(bs,{items:i(t),key:l.value},null,8,["items"])),c(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),ys=b($s,[["__scopeId","data-v-42c4c606"]]),Ps=p({__name:"VPSkipLink",setup(e){const{theme:t}=P(),n=X(),a=S();F(()=>n.path,()=>a.value.focus());function o({target:r}){const l=document.getElementById(decodeURIComponent(r.hash).slice(1));if(l){const f=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",f)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",f),l.focus(),window.scrollTo(0,0)}}return(r,l)=>(s(),u(x,null,[v("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},N(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Ls=b(Ps,[["__scopeId","data-v-fcbfc0e0"]]),Vs=p({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=D(),o=X();F(()=>o.path,a),lt(t,a);const{frontmatter:r}=P(),l=We(),f=g(()=>!!l["home-hero-image"]);return Se("hero-image-slot-exists",f),(d,y)=>{const L=W("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:T(["Layout",i(r).pageClass])},[c(d.$slots,"layout-top",{},void 0,!0),k(Ls),k(Je,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),k(fs,null,{"nav-bar-title-before":h(()=>[c(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(sa,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),k(ys,{open:i(t)},{"sidebar-nav-before":h(()=>[c(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(jn,null,{"page-top":h(()=>[c(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Rn),c(d.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),_(L,{key:1}))}}}),Ss=b(Vs,[["__scopeId","data-v-d8b57b2d"]]),Ts={Layout:Ss,enhanceApp:({app:e})=>{e.component("Badge",qe)}},Ms={...Ts};export{Ms as R}; diff --git a/.vitepress/dist/assets/doc-addons.md.BJFpqniu.js b/.vitepress/dist/assets/doc-addons.md.BJFpqniu.js new file mode 100644 index 0000000..ca5be84 --- /dev/null +++ b/.vitepress/dist/assets/doc-addons.md.BJFpqniu.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as n}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Add-ons","description":"","frontmatter":{},"headers":[],"relativePath":"doc-addons.md","filePath":"doc-addons.md"}'),i={name:"doc-addons.md"};function r(d,e,s,p,l,m){return a(),o("div",null,[...e[0]||(e[0]=[n('

Add-ons

Based on XMapTools 4.5 embedded documentation – Help file version 09.06.2026


This page describes the tools available in the Add-ons section. Contact Pierre Lanari if you want to develop an add-on for XMapTools.

Export

This module allows XMapTools data to be exported. It is available for both Map Data and Spot Data.

The export format is defined by the user and can be used to export data for a specific software (e.g. MinPlot). Select the Data source, a maskfile and the type of data to be exported (e.g. Median, Mean or random selection, see Fig. 1).

The BRC correction is a correction from XMapTools 4.3 (Lanari et al. 2019) that eliminates mixing pixels using the maskfile data.


Export module

Figure 1: Export module for Map Data in XMapTools 4.5.

Spot data can be exported using the Export module available in the Add-on section. Open the module and select the Export Spot Data mode. Select your data source (e.g. Quanti in Fig. 2) and press the Generate & Save button.


Export Spot Data

Figure 2: Export module for Spot Data in XMapTools 4.5.

IMG Converter

The image converter module allows images to be converted to numeric data. Press the Load Image button to load an image. The image can be cropped by using the pink ROI and clicking the Crop Image button. The min and max values can be set manually (e.g. 0 and 100 in Fig. 3). Press the Save Map button to save the converted data into a txt file.


Image Converter

Figure 3: Image Converter module.

Bingo-Antidote

Bingo-Antidote is a petrological software originally developed by Pierre Lanari and Erik Duesterhoeft that offers an alternative modelling strategy based on iterative thermodynamic models integrated with quantitative compositional mapping. Bingo-Antidote 2.0 is distributed as an add-on to XMapTools. It comes with a redesigned graphical user interface and improved functionality.

Visit https://xmaptools.ch/bingo-antidote/ to find out more. See also the dedicated Bingo-Antidote documentation page.

',23)])])}const g=t(i,[["render",r]]);export{h as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-addons.md.BJFpqniu.lean.js b/.vitepress/dist/assets/doc-addons.md.BJFpqniu.lean.js new file mode 100644 index 0000000..408cfa0 --- /dev/null +++ b/.vitepress/dist/assets/doc-addons.md.BJFpqniu.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as n}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Add-ons","description":"","frontmatter":{},"headers":[],"relativePath":"doc-addons.md","filePath":"doc-addons.md"}'),i={name:"doc-addons.md"};function r(d,e,s,p,l,m){return a(),o("div",null,[...e[0]||(e[0]=[n("",23)])])}const g=t(i,[["render",r]]);export{h as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-epma.md.DFglyrsL.js b/.vitepress/dist/assets/doc-epma.md.DFglyrsL.js new file mode 100644 index 0000000..4431520 --- /dev/null +++ b/.vitepress/dist/assets/doc-epma.md.DFglyrsL.js @@ -0,0 +1,166 @@ +import{_ as a,o as e,c as n,ae as s}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"XMapTools documentation for EPMA","description":"","frontmatter":{},"headers":[],"relativePath":"doc-epma.md","filePath":"doc-epma.md"}'),i={name:"doc-epma.md"};function o(l,t,p,r,d,c){return e(),n("div",null,[...t[0]||(t[0]=[s(`

XMapTools documentation for EPMA

Table of contents

EPMA & SEM:

Data compatibility for EPMA

CAMECA microprobes

CAMECA Maps

Because of the file format used by CAMECA, XMapTools is reading the information of the following lines in the header:

  • Start [map coordinates]
  • Step Number [number of columns]
  • Line Number [Number of rows]
  • Image [to detect the map name].
  • If the number of steps and rows doesn't match the size of the table, data won't be imported. The file name is not used to determine the element name when Image is defined.

Therefore the minimum number of header lines is:

Start :  X = 15702 Y = -24236 Z = 240
+Step Number : 416
+Line Number : 440
+
+Y Unit : cts
+Image  : Ca Ka
+
+[Data table should start here... use tabulation, no coma]

XMapTools can import two types of map data file that are generated by CAMECA microprobes.

Type 1: Simple
FileName :   Bustamante 18-1-2013.impDat (Current dataset : 4) 
+Signal(s) Used :  Vs1 BSE Z, Na Ka, Ca Ka, Fe Ka, Mg Ka, Al Ka, Si Ka Eds, S  Ka Eds, Cl Ka Eds, K  Ka Eds, Ti Ka Eds, Mn Ka Eds, Zr La Eds, Ba La Eds 
+Spectromers Conditions :   Sp1 LTAP,  Sp2 LPET,  Sp3 LLIF,  Sp4 LTAP,  Sp5 LTAP,  Eds 1,  Eds 2,  Eds 3,  Eds 4,  Eds 5,  Eds 6,  Eds 7,  Eds 8 
+Full Spectromers Conditions :   Sp1 LTAP(2d= 25.745,K= 0.00218),  Sp2 LPET(2d= 8.75,K= 0.000144),  Sp3 LLIF(2d= 4.0267,K= 0.000058),  Sp4 LTAP(2d= 25.745,K= 0.00218),  Sp5 LTAP(2d= 25.745,K= 0.00218),  Eds 1,  Eds 2,  Eds 3,  Eds 4,  Eds 5,  Eds 6,  Eds 7,  Eds 8 
+Column Conditions :  Cond 1 : 15.1keV 302.5757nA  
+Date :  19-Jan-2013 
+User Name :  sx 
+Setup Name :  Bustamante.impSet 
+DataSet Comment :   
+Comment :   
+Analysis Date :  1/18/2013 12:42:21 PM 
+Project Name :  Caetano 
+Sample Name :  2013-01-18 
+Pha Parameters :  	 
+ 		Bias	Gain	Dtime	Blin	Wind	Mode	 
+  Sp1(Na Ka)	1300	2635	3	560	 	Inte	 
+  Sp2(Ca Ka)	1289	1100	3	560	 	Inte	 
+  Sp3(Fe Ka)	1824	550	3	560	 	Inte	 
+  Sp4(Mg Ka)	1293	2964	3	560	 	Inte	 
+  Sp5(Al Ka)	1280	2943	3	560	 	Inte 
+ EDS: Si Ka 
+ EDS: S  Ka 
+ EDS: Cl Ka 
+ EDS: K  Ka 
+ EDS: Ti Ka 
+ EDS: Mn Ka 
+ EDS: Zr La 
+ EDS: Ba La 
+Peak Position :   Sp1 46363,  Sp2 38388,  Sp3 48084,  Sp4 38500,  Sp5 32460 
+Start :   X = 7386 Y = -17430 Z = 49 
+Stop :   
+Dwell Time :  0.03 Sec  
+Acquisition type :   Stage Grid  
+Step Number :  1001 
+Line Number :  614 
+Beam Size :  3 µm 
+Step Size :  4. 
+
+Y Unit : 
+Image  : BSE Z
+
+83.0000	83.0000	88.0000	82.0000	82.0000	81.0000	82.0000	83.0000	83.0000	84.0000	89.0000	92.0000	83.0000	87.0000	83.0000	85.0000	86.0000	86.0000	85.0000	86.0000	88.0000	85.0000	82.0000	87.0000	85.0000	84.0000	87.0000	87.0000	85.0000	85.0000	85.0000	87.0000	86.0000	86.0000	85.0000	86.0000	90.0000	87.0000	87.0000	87.0000	86.0000	96.0000	107.0000	89.0000	88.0000	90.0000	101.0000	113.0000	92.0000	101.0000	81.0000	96.0000	79.0000	81.0000	91.0000	82.0000	128.0000	135.0000	126.0000	120.0000	94.0000	112.0000	84.0000	80.0000	82.0000	83.0000	88.0000	97.0000	82.0000	81.0000	80.0000	81.0000	82.0000	81.0000	131.0000	97.0000	82.0000	83.0000	84.0000	84.0000	80.0000	80.0000	81.0000	87.0000	96.0000	83.0000	84.0000	85.0000	79.0000	82.0000	81.0000	80.0000	81.0000	80.0000	80.0000	79.0000	80.0000	83.0000	82.0000	82.0000	82.0000	82.0000	80.0000	80.0000	86.0000	82.0000	86.0000	85.0000	81.0000	84.0000	83.0000	84.0000	85.0000	83.0000	82.0000	79.0000	81.0000	80.0000	83.0000	84.0000	84.0000	83.0000	84.0000	84.0000	80.0000	80.0000	80.0000	81.0000	85.0000	85.0000	85.0000	83.0000	84.0000	82.0000	83.0000	87.0000	87.0000	84.0000	80.0000	81.0000	85.0000	85.0000	84.0000	83.0000	85.0000	92.0000	81.0000	83.0000	85.0000	85.0000	84.0000	84.0000	84.0000	85.0000	87.0000	87.0000	85.0000	84.0000	84.0000	81.0000	85.0000	80.0000	84.0000	83.0000	84.0000	83.0000	89.0000	91.0000	88.0000	85.0000	89.0000	91.0000	95.0000	91.0000	96.0000	82.0000	84.0000	83.0000	82.0000	86.0000	82.0000	79.0000	86.0000	84.0000	83.0000	83.0000	83.0000	84.0000	83.0000	83.0000	84.0000	84.0000	80.0000	86.0000	86.0000	83.0000	85.0000	83.0000	83.0000	82.0000	91.0000	79.0000	80.0000	76.0000	82.0000	81.0000	81.0000	81.0000	81.0000	81.0000	80.0000	81.0000	83.0000	85.0000	85.0000	86.0000	87.0000	81.0000	83.0000	83.0000	79.0000	80.0000	81.0000	78.0000	84.0000	83.0000	83.0000	76.0000	78.0000	81.0000	80.0000	80.0000	81.0000	80.0000	81.0000	75.0000	81.0000	80.0000	86.0000	115.0000	78.0000	80.0000	83.0000	79.0000	104.0000	102.0000	94.0000	90.0000	84.0000	84.0000	82.0000	84.0000	82.0000	81.0000	81.0000	82.0000	82.0000	83.0000	83.0000	83.0000	83.0000	80.0000	87.0000	98.0000	85.0000	79.0000	82.0000	82.0000	82.0000	83.0000	79.0000	100.0000	115.0000	80.0000	80.0000	80.0000	81.0000	90.0000	75.0000	82.0000	80.0000	79.0000	78.0000	84.0000	81.0000	81.0000	111.0000	107.0000	83.0000	85.0000	83.0000	82.0000	111.0000	84.0000	80.0000	83.0000	70.0000	80.0000	82.0000	83.0000	82.0000	82.0000	81.0000	92.0000	83.0000	86.0000	85.0000	102.0000	101.0000	79.0000	87.0000	84.0000	84.0000	82.0000	86.0000	95.0000	124.0000	84.0000	82.0000	80.0000	85.0000	85.0000	80.0000	81.0000	88.0000	92.0000	88.0000	86.0000	76.0000	83.0000	86.0000	82.0000	82.0000	83.0000	80.0000	80.0000	79.0000	80.0000	80.0000	78.0000	82.0000	88.0000	89.0000	91.0000	88.0000	86.0000	92.0000	97.0000	81.0000	78.0000	79.0000	79.0000	82.0000	82.0000	80.0000	77.0000	80.0000	79.0000	79.0000	80.0000	87.0000	85.0000	85.0000	85.0000	84.0000	83.0000	80.0000	80.0000	79.0000	79.0000	78.0000	84.0000	82.0000	81.0000	80.0000	78.0000	79.0000	80.0000	83.0000	79.0000	81.0000	80.0000	79.0000	77.0000	77.0000	78.0000	85.0000	85.0000	82.0000	85.0000	79.0000	80.0000	80.0000	79.0000	79.0000	79.0000	79.0000	80.0000	85.0000	84.0000	82.0000	80.0000	80.0000	79.0000	79.0000	80.0000	79.0000	80.0000	80.0000	79.0000	80.0000	80.0000	80.0000	82.0000	85.0000	85.0000	85.0000	85.0000	87.0000	80.0000	80.0000	80.0000	84.0000	81.0000	81.0000	94.0000	81.0000	81.0000	81.0000	89.0000	81.0000	80.0000	79.0000	80.0000	85.0000	85.0000	83.0000	84.0000	85.0000	80.0000	80.0000	83.0000	85.0000	88.0000	86.0000	80.0000	80.0000	80.0000	80.0000	80.0000	80.0000	80.0000	81.0000	82.0000	80.0000	83.0000	84.0000	122.0000	99.0000	76.0000	80.0000	82.0000	83.0000	82.0000	86.0000	80.0000	75.0000	91.0000	87.0000	61.0000	74.0000	59.0000	82.0000	94.0000	85.0000	105.0000	87.0000	52.0000	82.0000	88.0000	84.0000	79.0000	80.0000	80.0000	79.0000	80.0000	79.0000	79.0000	81.0000	85.0000	84.0000	84.0000	85.0000	86.0000	85.0000	85.0000	79.0000	80.0000	79.0000	83.0000	80.0000	79.0000	79.0000	79.0000	89.0000	78.0000	80.0000	80.0000	79.0000	79.0000	80.0000	80.0000	81.0000	85.0000	79.0000	78.0000	85.0000	82.0000	78.0000	79.0000	79.0000	78.0000	80.0000	78.0000	78.0000	78.0000	78.0000	79.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	78.0000	84.0000	85.0000	84.0000	79.0000	79.0000	79.0000	88.0000	83.0000	79.0000	86.0000	98.0000	85.0000	81.0000	80.0000	79.0000	83.0000	79.0000	79.0000	83.0000	85.0000	84.0000	77.0000	77.0000	80.0000	81.0000	79.0000	81.0000	78.0000	78.0000	78.0000	79.0000	78.0000	78.0000	79.0000	79.0000	79.0000	79.0000	86.0000	84.0000	80.0000	79.0000	79.0000	82.0000	80.0000	79.0000	79.0000	78.0000	78.0000	79.0000	79.0000	78.0000	78.0000	79.0000	80.0000	78.0000	85.0000	77.0000	76.0000	78.0000	78.0000	77.0000	76.0000	79.0000	78.0000	79.0000	78.0000	79.0000	84.0000	85.0000	84.0000	85.0000	84.0000	81.0000	85.0000	84.0000	78.0000	78.0000	79.0000	79.0000	78.0000	79.0000	80.0000	80.0000	112.0000	86.0000	88.0000	86.0000	86.0000	84.0000	83.0000	83.0000	84.0000	83.0000	84.0000	76.0000	79.0000	79.0000	78.0000	78.0000	79.0000	79.0000	79.0000	79.0000	79.0000	79.0000	82.0000	89.0000	88.0000	85.0000	85.0000	86.0000	85.0000	84.0000	85.0000	83.0000	85.0000	85.0000	83.0000	89.0000	86.0000	84.0000	86.0000	87.0000	85.0000	86.0000	85.0000	84.0000	87.0000	88.0000	88.0000	85.0000	80.0000	80.0000	80.0000	79.0000	78.0000	79.0000	79.0000	79.0000	80.0000	79.0000	81.0000	86.0000	85.0000	86.0000	86.0000	84.0000	85.0000	84.0000	84.0000	84.0000	91.0000	85.0000	84.0000	83.0000	83.0000	86.0000	88.0000	89.0000	88.0000	86.0000	85.0000	83.0000	84.0000	84.0000	84.0000	84.0000	83.0000	89.0000	79.0000	78.0000	84.0000	81.0000	84.0000	84.0000	83.0000	80.0000	86.0000	83.0000	81.0000	81.0000	80.0000	78.0000	78.0000	81.0000	78.0000	79.0000	123.0000	107.0000	82.0000	83.0000	78.0000	76.0000	78.0000	77.0000	78.0000	78.0000	81.0000	80.0000	75.0000	77.0000	78.0000	78.0000	84.0000	78.0000	79.0000	79.0000	85.0000	85.0000	84.0000	82.0000	84.0000	85.0000	81.0000	85.0000	83.0000	84.0000	84.0000	84.0000	84.0000	84.0000	85.0000	84.0000	85.0000	84.0000	84.0000	84.0000	85.0000	85.0000	90.0000	86.0000	92.0000	86.0000	85.0000	85.0000	85.0000	86.0000	106.0000	84.0000	83.0000	85.0000	85.0000	84.0000	87.0000	108.0000	84.0000	83.0000	84.0000	84.0000	84.0000	88.0000	83.0000	83.0000	83.0000	84.0000	83.0000	85.0000	94.0000	84.0000	85.0000	85.0000	79.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	79.0000	79.0000	81.0000	86.0000	117.0000	85.0000	84.0000	85.0000	85.0000	83.0000	105.0000	86.0000	86.0000	89.0000	89.0000	88.0000	89.0000	90.0000	84.0000	84.0000	83.0000	77.0000	76.0000	80.0000	82.0000	79.0000	82.0000	88.0000	82.0000	84.0000	83.0000	92.0000	88.0000	78.0000	78.0000	77.0000	78.0000	78.0000	77.0000	80.0000	80.0000	77.0000	77.0000	77.0000	77.0000	77.0000	82.0000	96.0000	83.0000	83.0000	77.0000	77.0000	77.0000	78.0000	77.0000	78.0000	78.0000	78.0000	84.0000	83.0000	84.0000	84.0000	84.0000	84.0000	83.0000	84.0000	84.0000	83.0000	83.0000	84.0000	82.0000	82.0000	83.0000	83.0000	87.0000	82.0000	77.0000	85.0000	76.0000	77.0000	77.0000	78.0000	78.0000	77.0000	77.0000	78.0000	83.0000	84.0000	84.0000	85.0000	82.0000	82.0000	83.0000	82.0000	82.0000	82.0000	83.0000	86.0000	81.0000	82.0000	84.0000	83.0000	83.0000	83.0000	83.0000	77.0000	77.0000	78.0000	77.0000	76.0000	77.0000	79.0000	80.0000	90.0000	83.0000	82.0000	82.0000	82.0000	82.0000	83.0000	85.0000	87.0000	84.0000	82.0000	90.0000	83.0000	89.0000	82.0000	81.0000	83.0000	83.0000	83.0000	83.0000	83.0000	82.0000	80.0000	77.0000	83.0000	82.0000	82.0000	82.0000	83.0000	82.0000	82.0000	82.0000	78.0000	77.0000	77.0000	77.0000	77.0000	77.0000	77.0000	78.0000	78.0000	88.0000	82.0000	82.0000	83.0000	83.0000	84.0000	83.0000	77.0000	77.0000	77.0000	77.0000	77.0000	77.0000	77.0000	82.0000	76.0000	77.0000	79.0000	76.0000	77.0000	78.0000	76.0000	76.0000	77.0000	76.0000	77.0000	77.0000	74.0000	74.0000	77.0000	77.0000	77.0000	77.0000	76.0000	76.0000	77.0000	77.0000	77.0000	76.0000	77.0000	77.0000	76.0000	77.0000	78.0000
+82.0000	83.0000	82.0000	80.0000	79.0000	80.0000	84.0000	81.0000	81.0000	82.0000	85.0000	88.0000	86.0000	86.0000	84.0000	83.0000	83.0000	84.0000	83.0000	84.0000	83.0000	85.0000	85.0000	87.0000	86.0000	84.0000	91.0000	91.0000	85.0000	85.0000	85.0000	86.0000	87.0000	89.0000	91.0000	87.0000	94.0000	85.0000	86.0000	90.0000	128.0000	95.0000	110.0000	115.0000	105.0000	105.0000	93.0000	95.0000	102.0000	78.0000	87.0000	85.0000	80.0000	80.0000	88.0000	80.0000	84.0000	128.0000	112.0000	113.0000	102.0000	126.0000	80.0000	80.0000	80.0000	83.0000	85.0000	82.0000	77.0000	79.0000	79.0000	81.0000	81.0000	81.0000	97.0000	90.0000	81.0000	82.0000	83.0000	82.0000	79.0000	82.0000	82.0000	84.0000	87.0000	82.0000	82.0000	84.0000	77.0000	85.0000	80.0000	80.0000	79.0000	80.0000	79.0000	79.0000	82.0000	82.0000	82.0000	81.0000	81.0000	81.0000	81.0000	81.0000	84.0000	82.0000	82.0000	79.0000	79.0000	81.0000	83.0000	83.0000	84.0000	82.0000	78.0000	78.0000	81.0000	80.0000	84.0000	83.0000	83.0000	82.0000	83.0000	81.0000	79.0000	79.0000	79.0000	79.0000	83.0000	83.0000	83.0000	85.0000	85.0000	80.0000	82.0000	84.0000	84.0000	82.0000	81.0000	83.0000	82.0000	83.0000	83.0000	80.0000	83.0000	82.0000	85.0000	83.0000	79.0000	82.0000	83.0000	83.0000	82.0000	85.0000	86.0000	87.0000	84.0000	84.0000	82.0000	82.0000	83.0000	82.0000	81.0000	83.0000	84.0000	84.0000	89.0000	90.0000	81.0000	87.0000	90.0000	89.0000	90.0000	94.0000	89.0000	81.0000	82.0000	82.0000	80.0000	80.0000	84.0000	79.0000	83.0000	82.0000	82.0000	82.0000	82.0000	83.0000	81.0000	95.0000	84.0000	82.0000	83.0000	86.0000	92.0000	84.0000	81.0000	82.0000	82.0000	81.0000	88.0000	78.0000	80.0000	79.0000	81.0000	80.0000	80.0000	80.0000	81.0000	80.0000	80.0000	82.0000	82.0000	79.0000	82.0000	78.0000	83.0000	80.0000	82.0000	83.0000	78.0000	81.0000	80.0000	83.0000	82.0000	82.0000	84.0000	76.0000	78.0000	79.0000	79.0000	80.0000	81.0000	79.0000	80.0000	80.0000	79.0000	80.0000	82.0000	123.0000	88.0000	78.0000	81.0000	75.0000	89.0000	84.0000	90.0000	87.0000	82.0000	160.0000	105.0000	97.0000	82.0000	79.0000	82.0000	81.0000	82.0000	81.0000	82.0000	81.0000	82.0000	75.0000	89.0000	85.0000	83.0000	79.0000	80.0000	81.0000	80.0000	81.0000	82.0000	105.0000	93.0000	79.0000	80.0000	80.0000	80.0000	106.0000	81.0000	77.0000	79.0000	78.0000	83.0000	82.0000	80.0000	82.0000	125.0000	84.0000	83.0000	81.0000	87.0000	81.0000	73.0000	82.0000	82.0000	83.0000	91.0000	81.0000	80.0000	80.0000	81.0000	81.0000	81.0000	87.0000	82.0000	84.0000	82.0000	92.0000	79.0000	78.0000	83.0000	84.0000	82.0000	81.0000	82.0000	87.0000	92.0000	79.0000	79.0000	81.0000	87.0000	79.0000	83.0000	83.0000	86.0000	89.0000	91.0000	79.0000	78.0000	90.0000	78.0000	77.0000	78.0000	83.0000	80.0000	79.0000	79.0000	79.0000	84.0000	79.0000	80.0000	81.0000	83.0000	87.0000	82.0000	79.0000	80.0000	89.0000	81.0000	77.0000	77.0000	80.0000	79.0000	78.0000	80.0000	80.0000	80.0000	78.0000	76.0000	79.0000	82.0000	84.0000	85.0000	84.0000	83.0000	78.0000	78.0000	79.0000	79.0000	79.0000	80.0000	79.0000	78.0000	80.0000	76.0000	77.0000	78.0000	79.0000	79.0000	91.0000	81.0000	79.0000	81.0000	81.0000	82.0000	82.0000	84.0000	84.0000	81.0000	79.0000	82.0000	77.0000	80.0000	80.0000	82.0000	78.0000	78.0000	78.0000	92.0000	81.0000	85.0000	78.0000	84.0000	77.0000	79.0000	79.0000	78.0000	79.0000	79.0000	78.0000	79.0000	86.0000	79.0000	86.0000	84.0000	84.0000	85.0000	85.0000	90.0000	80.0000	79.0000	79.0000	83.0000	80.0000	80.0000	84.0000	79.0000	80.0000	131.0000	91.0000	83.0000	79.0000	80.0000	82.0000	82.0000	85.0000	80.0000	80.0000	80.0000	79.0000	80.0000	81.0000	84.0000	88.0000	86.0000	80.0000	80.0000	80.0000	80.0000	80.0000	79.0000	80.0000	80.0000	81.0000	81.0000	83.0000	86.0000	103.0000	86.0000	82.0000	81.0000	85.0000	88.0000	85.0000	83.0000	86.0000	59.0000	101.0000	91.0000	57.0000	58.0000	66.0000	61.0000	60.0000	102.0000	87.0000	80.0000	56.0000	90.0000	92.0000	85.0000	81.0000	80.0000	80.0000	81.0000	81.0000	79.0000	78.0000	79.0000	86.0000	84.0000	83.0000	83.0000	84.0000	85.0000	84.0000	78.0000	78.0000	78.0000	85.0000	84.0000	79.0000	78.0000	78.0000	79.0000	78.0000	79.0000	79.0000	78.0000	79.0000	78.0000	79.0000	79.0000	84.0000	85.0000	78.0000	84.0000	84.0000	77.0000	78.0000	78.0000	78.0000	76.0000	75.0000	74.0000	76.0000	78.0000	78.0000	77.0000	75.0000	75.0000	81.0000	78.0000	78.0000	77.0000	83.0000	82.0000	82.0000	77.0000	78.0000	77.0000	83.0000	77.0000	78.0000	84.0000	104.0000	84.0000	75.0000	76.0000	78.0000	82.0000	78.0000	79.0000	83.0000	83.0000	84.0000	78.0000	78.0000	78.0000	75.0000	76.0000	76.0000	77.0000	77.0000	77.0000	77.0000	76.0000	77.0000	78.0000	78.0000	80.0000	85.0000	83.0000	84.0000	79.0000	78.0000	78.0000	75.0000	79.0000	78.0000	78.0000	77.0000	77.0000	78.0000	78.0000	78.0000	77.0000	78.0000	77.0000	77.0000	81.0000	77.0000	75.0000	78.0000	78.0000	77.0000	80.0000	79.0000	78.0000	78.0000	77.0000	80.0000	83.0000	84.0000	84.0000	83.0000	105.0000	84.0000	89.0000	83.0000	76.0000	77.0000	77.0000	78.0000	77.0000	79.0000	79.0000	79.0000	146.0000	87.0000	89.0000	84.0000	85.0000	83.0000	83.0000	82.0000	82.0000	83.0000	81.0000	78.0000	76.0000	78.0000	78.0000	77.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	81.0000	81.0000	82.0000	83.0000	85.0000	85.0000	82.0000	84.0000	84.0000	84.0000	84.0000	85.0000	83.0000	83.0000	80.0000	86.0000	90.0000	88.0000	82.0000	85.0000	85.0000	85.0000	86.0000	85.0000	84.0000	84.0000	82.0000	79.0000	78.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	85.0000	81.0000	85.0000	85.0000	85.0000	85.0000	83.0000	85.0000	84.0000	83.0000	84.0000	83.0000	84.0000	83.0000	83.0000	84.0000	93.0000	87.0000	85.0000	83.0000	85.0000	83.0000	83.0000	82.0000	87.0000	85.0000	91.0000	85.0000	85.0000	77.0000	78.0000	82.0000	79.0000	81.0000	82.0000	110.0000	77.0000	76.0000	76.0000	77.0000	79.0000	78.0000	78.0000	78.0000	78.0000	78.0000	77.0000	81.0000	102.0000	78.0000	77.0000	77.0000	77.0000	78.0000	77.0000	76.0000	78.0000	77.0000	79.0000	78.0000	77.0000	78.0000	78.0000	76.0000	76.0000	78.0000	78.0000	83.0000	84.0000	79.0000	82.0000	84.0000	84.0000	83.0000	83.0000	84.0000	83.0000	84.0000	84.0000	84.0000	85.0000	83.0000	86.0000	90.0000	83.0000	83.0000	84.0000	85.0000	84.0000	84.0000	83.0000	84.0000	85.0000	85.0000	84.0000	84.0000	95.0000	102.0000	83.0000	83.0000	84.0000	84.0000	82.0000	83.0000	95.0000	83.0000	83.0000	83.0000	89.0000	83.0000	83.0000	82.0000	83.0000	83.0000	82.0000	83.0000	82.0000	85.0000	82.0000	83.0000	83.0000	78.0000	78.0000	77.0000	77.0000	78.0000	78.0000	78.0000	78.0000	78.0000	81.0000	90.0000	89.0000	83.0000	85.0000	85.0000	96.0000	116.0000	101.0000	84.0000	80.0000	90.0000	86.0000	88.0000	87.0000	87.0000	82.0000	82.0000	78.0000	77.0000	88.0000	78.0000	77.0000	76.0000	79.0000	84.0000	82.0000	83.0000	83.0000	81.0000	77.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	88.0000	76.0000	76.0000	77.0000	76.0000	77.0000	76.0000	81.0000	83.0000	85.0000	80.0000	76.0000	77.0000	76.0000	77.0000	76.0000	77.0000	77.0000	78.0000	82.0000	82.0000	83.0000	84.0000	85.0000	83.0000	82.0000	82.0000	82.0000	81.0000	84.0000	83.0000	82.0000	81.0000	82.0000	82.0000	83.0000	82.0000	81.0000	77.0000	78.0000	76.0000	76.0000	77.0000	77.0000	76.0000	77.0000	82.0000	80.0000	82.0000	83.0000	83.0000	82.0000	81.0000	80.0000	82.0000	82.0000	82.0000	81.0000	84.0000	81.0000	82.0000	83.0000	80.0000	80.0000	82.0000	76.0000	76.0000	76.0000	77.0000	77.0000	76.0000	77.0000	78.0000	76.0000	79.0000	82.0000	82.0000	82.0000	82.0000	82.0000	88.0000	85.0000	86.0000	82.0000	82.0000	107.0000	83.0000	85.0000	80.0000	78.0000	83.0000	82.0000	85.0000	81.0000	82.0000	81.0000	78.0000	76.0000	83.0000	82.0000	80.0000	80.0000	81.0000	81.0000	82.0000	81.0000	74.0000	76.0000	76.0000	77.0000	77.0000	76.0000	76.0000	78.0000	77.0000	77.0000	81.0000	82.0000	82.0000	92.0000	83.0000	82.0000	76.0000	79.0000	76.0000	77.0000	77.0000	76.0000	77.0000	81.0000	77.0000	77.0000	80.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	77.0000	76.0000	76.0000	77.0000	77.0000
Type 2: With column and row numbers
FileName :  Celine_091321.impDat (Current dataset : 1)
+Signal(s) Used : Ca Ka, Na Ka, K  Ka, Al Ka, Mn Ka, Cr Ka, Mg Ka, Ti Ka, Si Ka, Fe Ka
+Spectrometers Conditions :  Sp1 PET,  Sp2 LTAP,  Sp3 LPET,  Sp4 TAP,  Sp5 LLIF,  Sp1 PET,  Sp2 LTAP,  Sp3 LPET,  Sp4 TAP,  Sp5 LLIF
+Full Spectrometers Conditions :  Sp1 PET(2d= 8.75,K= 0.000144),  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05),  Sp1 PET(2d= 8.75,K= 0.000144),  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05)
+Column Conditions : Cond 1 : 15keV 278.8476nA , Cond 2 : 15keV 280.8923nA 
+	, Cond 1 : Ca Ka, Na Ka, K  Ka, Al Ka, Mn Ka
+	, Cond 2 : Cr Ka, Mg Ka, Ti Ka, Si Ka, Fe Ka
+Date : Sep-15-2021
+User Name : SX-663\\SX-User
+Setup Name : C:\\SX data\\Analysis Setups\\Image&Profiles\\Celine_091321.impSet
+DataSet Comment : BOO17-5N_Map1
+Comment :  
+Analysis Date : Tuesday, September 14, 2021 6:57:42 AM
+Project Name : Default Project
+Sample Name : Default Sample
+Analysis Parameters : 	
+Sp	Elements	Xtal	Position	Bias	Gain	Dtime	Blin	Wind	Mode	
+Sp1	Ca Ka		PET	38388	1304	1031	3	560	 	Inte
+Sp2	Na Ka		LTAP	46363	1311	3055	3	560	 	Inte
+Sp3	K  Ka		LPET	42765	1846	985	3	560	 	Inte
+Sp4	Al Ka		TAP	32459	1325	3181	3	560	 	Inte
+Sp5	Mn Ka		LLIF	52202	1820	411	3	560	 	Inte
+Sp1	Cr Ka		PET	26172	1304	1031	3	560	 	Inte
+Sp2	Mg Ka		LTAP	38500	1311	3055	3	560	 	Inte
+Sp3	Ti Ka		LPET	31416	1846	985	3	560	 	Inte
+Sp4	Si Ka		TAP	27737	1325	3181	3	560	 	Inte
+Sp5	Fe Ka		LLIF	48083	1820	411	3	560	 	Inte
+Peak Position :  Sp1 38388,  Sp2 46363,  Sp3 42765,  Sp4 32459,  Sp5 52202,  Sp1 26172,  Sp2 38500,  Sp3 31416,  Sp4 27737,  Sp5 48083
+Start :  X = -1748 Y = -29677 Z = 14
+Stop : 
+Dwell Time : 0.07 Sec 
+Acquisition type :  Stage Grid 
+Step Number : 504
+Line Number : 504
+Beam Size : N/A
+Step Size : 4.000
+
+
+
+Y Unit : cts
+
+
+	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	77	78	79	80	81	82	83	84	85	86	87	88	89	90	91	92	93	94	95	96	97	98	99	100	101	102	103	104	105	106	107	108	109	110	111	112	113	114	115	116	117	118	119	120	121	122	123	124	125	126	127	128	129	130	131	132	133	134	135	136	137	138	139	140	141	142	143	144	145	146	147	148	149	150	151	152	153	154	155	156	157	158	159	160	161	162	163	164	165	166	167	168	169	170	171	172	173	174	175	176	177	178	179	180	181	182	183	184	185	186	187	188	189	190	191	192	193	194	195	196	197	198	199	200	201	202	203	204	205	206	207	208	209	210	211	212	213	214	215	216	217	218	219	220	221	222	223	224	225	226	227	228	229	230	231	232	233	234	235	236	237	238	239	240	241	242	243	244	245	246	247	248	249	250	251	252	253	254	255	256	257	258	259	260	261	262	263	264	265	266	267	268	269	270	271	272	273	274	275	276	277	278	279	280	281	282	283	284	285	286	287	288	289	290	291	292	293	294	295	296	297	298	299	300	301	302	303	304	305	306	307	308	309	310	311	312	313	314	315	316	317	318	319	320	321	322	323	324	325	326	327	328	329	330	331	332	333	334	335	336	337	338	339	340	341	342	343	344	345	346	347	348	349	350	351	352	353	354	355	356	357	358	359	360	361	362	363	364	365	366	367	368	369	370	371	372	373	374	375	376	377	378	379	380	381	382	383	384	385	386	387	388	389	390	391	392	393	394	395	396	397	398	399	400	401	402	403	404	405	406	407	408	409	410	411	412	413	414	415	416	417	418	419	420	421	422	423	424	425	426	427	428	429	430	431	432	433	434	435	436	437	438	439	440	441	442	443	444	445	446	447	448	449	450	451	452	453	454	455	456	457	458	459	460	461	462	463	464	465	466	467	468	469	470	471	472	473	474	475	476	477	478	479	480	481	482	483	484	485	486	487	488	489	490	491	492	493	494	495	496	497	498	499	500	501	502	503	504
+1	1987	1954	2079	1974	2083	2103	2073	2128	2028	1850	2121	1916	1938	2013	2066	2037	2109	2075	2093	2032	2053	2087	2118	2130	2082	2047	1986	2056	1994	2006	1920	1949	1970	1981	1922	2279	1986	1984	1992	1983	1960	1958	1996	1910	1972	1939	1934	1962	1984	1948	1933	1929	1850	1921	1948	1941	1942	1978	1997	2014	1973	1939	1985	1871	1595	1935	1964	1864	1905	1894	1896	1836	1894	1908	1920	1804	1876	1871	1812	1833	1928	1830	1844	1874	1982	1853	1934	1857	1920	1837	1856	1882	1964	2920	2025	1817	1908	1967	1925	1901	1947	1895	1912	1886	1967	1898	1945	1939	1935	1975	1962	2007	1963	1930	1941	1914	1893	1994	1986	1930	1954	2039	1950	2004	2005	1976	1943	1906	2046	2070	2105	2129	2971	2420	2304	2475	2051	2036	2184	2213	2047	2049	2064	2043	2788	2104	1979	1972	2056	2022	2153	2087	2180	2124	2094	1993	1992	2097	1957	2016	2014	3758	2197	2042	2032	2024	2018	2226	2570	3155	2870	2174	2000	1983	1942	2018	1974	1944	2043	1962	2047	1954	1961	2035	2083	2085	2003	2020	2069	2153	1988	1957	2014	2087	2054	1963	2052	2043	1999	1947	2007	2109	2035	2016	2100	2000	2013	1980	2012	2051	2072	2083	1978	2015	2078	2232	3343	3864	3847	2105	3254	3823	3869	3952	4521	3751	4286	4042	3589	3693	3570	3397	3597	3553	3877	3837	3747	3997	3824	2952	2986	3676	3975	4050	4008	3699	3649	3843	3940	4099	3524	3987	4367	3461	2725	2960	2424	2145	2095	2132	1941	2070	2081	2488	2146	2270	2069	2080	2078	2062	2666	2099	2120	2152	2076	2052	2041	2033	2054	2067	2222	2012	2114	2088	2031	2142	2107	2265	2502	2852	3239	3536	3372	3914	2630	3431	3709	2810	3996	3249	3964	2999	3846	3832	3698	3362	2881	2706	2166	1969	1923	2051	2080	2138	2002	2054	2021	1992	2047	1967	2025	2007	1934	2068	1980	1990	1914	2039	1982	1995	2016	2098	2067	2048	1999	2044	3706	3266	1668	1885	1802	2099	1990	2050	1939	2059	2032	2039	2112	2146	2052	2088	2062	2041	2006	2086	2084	2090	2087	2046	1996	2078	2103	2030	2069	2018	2019	1994	1957	2042	1978	2160	2823	3063	2137	2088	2327	1857	2111	2065	2149	2063	2049	1962	1987	2056	2027	2041	1925	1945	2027	2001	1985	2006	2000	2033	1998	1951	1929	1985	1983	1939	1983	1967	1990	2063	1946	2017	1998	1990	2039	2048	2012	1996	2065	2041	2001	2053	2022	2013	1974	2074	2572	2105	2021	2040	2064	2071	2022	2020	2057	2032	2056	2095	1877	2073	1991	1990	2428	1931	2029	2031	2016	2006	2046	2024	1984	1941	2071	2061	2049	2042	1974	2010	1989	1970	2000	1984	2010	2001	1932	1921	1949	1958	2033	2998	1998	2039	2012	2023	1988	2020	2522	2108	1998	2059	2051	2008	2054	2096	2009	1914	1802	1440	1605	1981	2049	1930	2037	1900	1945	1919	1976	1969	1966	1857	1934	1934	1913	1958	1862	1945	1895	1943	
+2	2332	2198	2226	2202	2107	2090	2033	2026	1757	2032	2119	1966	1903	2029	2090	2051	2144	1991	1874	2096	2019	2018	2093	2067	2154	1942	1989	2095	1990	2047	1987	2005	1986	1939	2445	2190	2034	2024	1979	1945	1995	1999	1934	2001	1962	1955	1965	1918	1902	1908	1922	1963	1921	1935	1928	1966	1953	1925	1986	1952	1993	1934	2000	1935	1301	1842	1905	1886	1910	1884	1861	1874	1887	1869	1871	1802	1881	1864	1846	1880	1891	1838	1866	1829	1805	1804	1908	1856	1972	1823	1903	1921	2755	1959	1915	1884	1873	1890	1936	1924	1959	2005	1863	1956	1926	1949	1909	2007	1982	1855	1999	1905	1855	1917	1921	1975	1917	2006	1979	1977	2020	2010	1995	1968	1944	1922	1949	1987	2004	2045	2096	2131	2339	2289	2020	2457	2116	1978	2056	2164	2286	2044	2068	2084	2587	2245	1952	1826	1988	2122	2205	1928	2096	2107	2095	2072	2077	1989	2030	1904	1963	3104	1961	2092	2102	2375	3134	3825	4043	3994	3763	3068	2383	1956	1995	2063	1986	1965	1923	2017	2094	2013	2049	2000	2006	2047	2078	2063	1979	2092	2001	1960	2014	2033	2011	2005	2002	1992	2011	1993	2067	2034	1982	2026	2088	2035	2025	2038	2055	2065	2005	2093	2043	1990	2157	2078	2801	3693	3767	3727	2846	3401	4214	4116	3366	3732	3929	4034	3755	3730	3353	3589	3412	3894	4008	4006	3844	4042	3954	3862	3095	4028	4009	3864	4144	3949	3285	3684	2972	3954	4209	3549	3351	3483	3512	2830	3129	2177	2469	2111	2167	2063	2209	2344	2205	2145	2187	2107	1978	1984	2621	2051	2018	1989	2032	2002	2061	2105	2081	2265	2051	2040	2101	2085	2115	2125	2868	3459	3643	3598	3684	3661	3244	3541	3935	3975	4090	4612	3863	3959	3461	3508	3268	3851	3696	3301	2613	2099	1899	1983	2001	2060	1986	2044	2080	1987	2019	2083	2025	1916	1930	2083	1962	2085	2002	2009	2010	2044	2010	1980	2011	2021	2049	2040	2040	2096	2394	4142	3000	1991	2024	1767	2041	2045	1954	2069	2093	1933	2081	2131	2158	2050	2027	1994	2154	2091	2202	2044	2086	2057	2024	2064	1950	2045	2007	2068	1990	1992	1937	1974	1964	2363	3343	2345	2163	2123	2050	1155	2049	2024	2059	2012	1987	2073	2126	2034	1927	2006	1949	1967	1983	1987	1990	1983	2123	1999	1909	1939	1982	1976	1991	1950	1969	2074	1954	2042	1938	2043	2038	2022	1970	2005	1995	2101	1987	2027	2063	2035	1972	1972	1955	1939	2440	2033	2080	2033	2086	2038	2053	2037	2047	2043	2110	2024	1955	2027	1997	1854	2383	2014	2019	2018	2114	2001	2047	2003	2030	2040	2086	2043	2020	1996	1996	2041	1976	1904	1922	1964	2012	1971	2012	1930	1940	2013	3141	2025	1982	2039	1976	1957	1920	2018	2133	2033	2096	1982	2105	1929	1965	2043	1920	1806	2002	1985	1959	2016	1909	1995	1971	1986	1964	1914	1917	1942	1956	1921	1917	1927	1920	2006	1977	1948	1875	1857

Spot analyses

XMapTools can import two types of spot data file that are generated by CAMECA microprobes.

Type 1: Oxide only
DataSet/Point	Na2O	MgO	SiO2	Al2O3	K2O	FeO	MnO	BaO	Cr2O3	Cl	CaO	TiO2	Total	X	Y	Z	Comment	Mean Z	Date
+1 / 1 .	0.000	0.047	0.000	0.000	0.012	0.049	0.102	0.000	0.000	0.019	54.334	0.000	54.562	7160	-17670	49	 	9.049	21.01.13 12:56
+2 / 2 .	0.043	0.020	29.964	1.474	0.019	0.716	0.118	0.435	0.014	0.013	27.921	37.349	98.086	6456	-17357	50	 	14.564	21.01.13 12:59

In this example data from Na2O to TiO2 are imported.

Each line represents a single analysis. The first entry DataSet/Point is defined using space (noted ” ” below) whereas tabulations (“\\t”) are used to separate other entries. Only this format can be properly read by XMapTools. The correct format for each data row is:

Number” “/” “Number” “.”\\t”Number”\\t”Number”\\t”Number …

Example:

DataSet/Point	Na2O	MgO	SiO2	Al2O3	K2O	FeO	MnO	BaO	Cr2O3	Cl	CaO	TiO2	Total	X	Y	Z	Comment	Mean Z	Date
+1 / 1 .	0.000	0.047	0.000	0.000	0.012	0.049	0.102	0.000	0.000	0.019	54.334	0.000	54.562	7160	-17670	49	 	9.049	21.01.13 12:56
+2 / 2 .	0.043	0.020	29.964	1.474	0.019	0.716	0.118	0.435	0.014	0.013	27.921	37.349	98.086	6456	-17357	50	 	14.564	21.01.13 12:59

Alternatively, the following input also works:

DataSet/Point	Na2O	MgO	SiO2	Al2O3	K2O	FeO	MnO	BaO	Cr2O3	Cl	CaO	TiO2	Total	X	Y	Z	Comment	Mean Z	Date
+1	0.000	0.047	0.000	0.000	0.012	0.049	0.102	0.000	0.000	0.019	54.334	0.000	54.562	7160	-17670	49	 	9.049	21.01.13 12:56
+2	0.043	0.020	29.964	1.474	0.019	0.716	0.118	0.435	0.014	0.013	27.921	37.349	98.086	6456	-17357	50	 	14.564	21.01.13 12:59
Type 2: Full output

An example is provided below. In this example, data ranging from Na₂O to FeO is imported.

FileName :  Celine_test_091321.qtiDat
+Signal(s) Used : Na Ka, Mg Ka, Al Ka, Si Ka, K  Ka, Ca Ka, Ti Ka, Cr Ka, Mn Ka, Fe Ka
+Spectrometers Conditions :  Sp2 LTAP,  Sp2 LTAP,  Sp4 TAP,  Sp4 TAP,  Sp3 LPET,  Sp1 PET,  Sp3 LPET,  Sp1 PET,  Sp5 LLIF,  Sp5 LLIF
+Full Spectrometers Conditions :  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp1 PET(2d= 8.75,K= 0.000144),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp1 PET(2d= 8.75,K= 0.000144),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05)
+Column Conditions : Cond 1 : 15keV 20nA 
+Date : Sep-15-2021
+User Name : SX-663\\SX-User
+Setup Name : C:\\SX data\\Analysis Setups\\Quanti\\Celine_091321.qtiSet
+DataSet Comment : BOO17-3S_map2_cpx1
+Comment :  
+Analysis Date : Monday, September 13, 2021 4:45:45 PM
+Project Name : Default Project
+Sample Name : Default Sample
+Analysis Parameters : 	
+Sp	Elements	Xtal	Position	Bg1	Bg2	Slope	Bias	Gain	Dtime	Blin	Wind	Mode	
+Sp2	Na Ka		LTAP	46369	-700	800	   	1311	3117	3	560	 	Inte
+Sp2	Mg Ka		LTAP	38513	-1150	1150	   	1311	3055	3	560	 	Inte
+Sp4	Al Ka		TAP	32464	   	800	1.2	1324	3227	3	560	 	Inte
+Sp4	Si Ka		TAP	27737	   	750	1.1	1325	3181	3	560	 	Inte
+Sp3	K  Ka		LPET	42762	-600	600	   	1845	981	3	560	 	Inte
+Sp1	Ca Ka		PET	38391	   	700	1.1	1307	1026	3	560	 	Inte
+Sp3	Ti Ka		LPET	31406	   	600	1.05	1846	985	3	560	 	Inte
+Sp1	Cr Ka		PET	26186	-500	500	   	1304	1031	3	560	 	Inte
+Sp5	Mn Ka		LLIF	52200	   	650	1.05	1820	412	3	560	 	Inte
+Sp5	Fe Ka		LLIF	48084	   	800	1.2	1820	411	3	560	 	Inte
+Peak Position :  Sp2 46369 (-700, 800),  Sp2 38513 (-1150, 1150),  Sp4 32464 (800, Slope = 1.2),  Sp4 27737 (750, Slope = 1.1),  Sp3 42762 (-600, 600),  Sp1 38391 (700, Slope = 1.1),  Sp3 31406 (600, Slope = 1.05),  Sp1 26186 (-500, 500),  Sp5 52200 (650, Slope = 1.05),  Sp5 48084 (800, Slope = 1.2)
+Current Sample Position :  X = -10413 Y = 32015 Z = 60 BeamX = 0.00 BeamX = 0.00
+Standard Name : 
+Na ,Al On albite
+Mg ,Si ,Ca On Wakefield diopside
+K  On kspar
+Ti On TiO2
+Cr On MgCr2O4
+Mn On Rhodon 41522 AMNH
+Fe On RKFAYb7
+Standard composition : 
+albite = Na : 8.77%, Al : 10.29%, Si : 32.13%, O  : 48.81%
+Wakefield diopside = Si : 25.94%, O  : 44.43%, Na : 0.02%, Mg : 11.22%, Al : 0.02%, Ca : 18.53%, Ti : 0.02%, Mn : 0.02%, Fe : 0.09%
+kspar = O  : 45.94%, Na : 0.85%, Al : 9.83%, Si : 30.10%, K  : 12.39%, Ba : 0.70%
+TiO2 = Ti : 59.95%, O  : 40.05%
+MgCr2O4 = Mg : 12.64%, Cr : 54.08%, O  : 33.28%
+Rhodon 41522 AMNH = O  : 37.73%, Mg : 2.36%, Si : 21.98%, Ca : 1.06%, Mn : 35.01%, Fe : 1.80%
+RKFAYb7 = Si : 13.84%, O  : 31.37%, Mg : 0.06%, Al : 0.05%, Ca : 0.02%, Mn : 1.55%, Fe : 52.62%, Zn : 0.38%
+Calibration file name (Element intensity cps/nA) : 
+Na ,Al : Other\\albite_15kV_NaKa-Sp2-LTAP_AlKa-Sp4-TAP_010.calDat (Na : 127.8 cps/nA, Al : 189.2 cps/nA)
+Mg ,Si ,Ca : Other\\Wakefield diopside_15kV_MgKa-Sp2-LTAP_SiKa-Sp4-TAP_CaKa-Sp1-PET_019.calDat (Mg : 315.4 cps/nA, Si : 541.5 cps/nA, Ca : 101.3 cps/nA)
+K  : Other\\kspar_15kV_KKa-Sp3-LPET_017.calDat (K  : 208.0 cps/nA)
+Ti : Other\\TiO2_15kV_TiKa-Sp3-LPET_029.calDat (Ti : 1589.2 cps/nA)
+Cr : Other\\MgCr2O4_15kV_CrKa-Sp1-PET_013.calDat (Cr : 247.4 cps/nA)
+Mn : Other\\Rhodon 41522 AMNH_15kV_MnKa-Sp5-LLIF_020.calDat (Mn : 192.7 cps/nA)
+Fe : Other\\RKFAYb7_15kV_FeKa-Sp5-LLIF_057.calDat (Fe : 317.7 cps/nA)
+Beam Size : N/A
+
+	Weight%	Atomic%	Oxide	
+
+DataSet/Point	Na	Mg	Al	Si	K 	Ca	Ti	Cr	Mn	Fe	O 	Total	Na	Mg	Al	Si	K 	Ca	Ti	Cr	Mn	Fe	O 	Total	Na2O	MgO	Al2O3	SiO2	K2O	CaO	TiO2	Cr2O3	MnO	FeO	Total	 X 	 Y 	 Z 	 Beam X 	 Beam Y 	Comment	Distance (?)	Mean Z	Point#	Date
+1 / 1 . 	0.743369	7.000587	0.992360	23.675010	0.000010	15.496050	0.028793	0.050500	0.047470	7.429382	41.095420	96.558950	0.753605	6.712945	0.857190	19.646370	0.000006	9.010886	0.014010	0.022636	0.020138	3.100467	59.861750	100.000000	1.002046	11.609060	1.875058	50.649700	0.000012	21.682070	0.048028	0.073809	0.061296	9.557870	96.558950	-10413.0	32015.0	60.0	 	 	BOO17-3S_map2_cpx1	0.00	12.714160	1	Monday, September 13, 2021 4:45:45 PM	
+1 / 2 . 	0.683164	7.306072	1.054231	24.247130	0.005349	15.870280	0.049491	0.006556	0.033462	7.281908	42.080150	98.617790	0.676747	6.845810	0.889827	19.661410	0.003116	9.017649	0.023530	0.002872	0.013871	2.969490	59.895680	100.000000	0.920890	12.115650	1.991962	51.873660	0.006443	22.205690	0.082554	0.009582	0.043208	9.368145	98.617790	-10408.3	32015.0	60.0	 	 	BOO17-3S_map2_cpx1	4.68	12.939130	2	Monday, September 13, 2021 4:48:12 PM

Data conversion for EPMA

The EPMA converter can be used to convert raw data for supported instruments to XMapTools format.

The following data formats are currently supported:

  • JEOL (WIN) JEOL microprobes running on WINDOWS.
  • JEOL (SUN) JEOL microprobes running on SUN-OS.
  • CAMECA for recent CAMECA microprobes (see format description).

EPMA converter module

The converter can be accessed via Project and Imports, using the Open XMapTools' EPMA Converter button.

Main steps:

  • Select the data format (e.g. JEOL or CAMECA; check compatible data formats: CAMECA).
  • Select the destination folder, usually an empty folder where data with the XMapTools format will be stored.
  • Select maps which are stored in a given folder; text or csv map files generated by the microprobe software.
  • Validate map selection.
  • Add standards data exported by the microprobe software as text or csv files. This step can be repeated until all standards data have been imported.
  • Generate Standards.txt containing the map coordinates and the spot analysis data to be used as internal standards for map calibration.

For more detailed information on the EPMA Converter, refer to the embedded documentation available within the program.

Step 1: Select data format

Use the Select the format dropdown menu to select data format. After selecting the data format two text boxes are displayed indicating the types of files required for the selected format. The first on the left is for the map and the second one for the spot analyses.

  • JEOL (WINDOWS) requires two files for each map: 'data00X.cnd' and 'data00X.csv', and a single file for each set of spot analyses: 'summary.csv'.
  • JEOL (SUN) requires two files for each map: 'XX.cnd' and 'XX_map.txt', and two files for each set of spot analyses: 'summary.txt' and 'stage.txt'.
  • CAMECA requires one file for each map: 'XXXX.txt', and a single file for each set of spot analyses: 'YYY.csv'.

Step 2: Set the destination folder

After selecting the data format, press the Set a destination folder button and select an empty folder to save the data in the XMapTools format. This folder must be empty and existing data will be deleted!

Note that this folder can then be transferred to a working data folder for separate storage from the raw data.

Step 3: Import maps

After selecting the destination folder, press the Import Maps button to select the folder containing the map files. XMapTools will convert all the maps available in this folder.

After selecting the maps, press the Validate map selection button to continue.

Step 4: Import spot analyses (internal standards)

After selecting all files for the spot analyses, press the button generate Standards.txt. This will end the procedure and close the Converter. Note that when you return in XMapTools, the working directory has been adjusted and you can start importing your maps.

Importing data using the import module

To import map data in XMapTools, select the 'Project and Import' tab and press the Import Maps image button located in 'Import Maps and Images'. This will open the import module and prompt you to select files.

Select the set of map files you want to import. Choose compatible files from the 'Pick Map File(s)' pop-up window. Note that multiple files can be selected at once. Any selected file that cannot be imported due to an incompatible format, for example, will be skipped during import.

Format: Map files must have the *.txt, *.asc, *.dat or *.csv extension, no header and a name compatible with the XMapTools default element names for identification. The default lists of compatible element and oxide names are given in the source of the help file below.

Selected map files are listed in the main table. More maps can be added by pressing the map selection button (see above)

File: Contains the file names

  • Map Name: Contains the name of the corresponding element in the database
  • Type: Element or oxide
  • Data: Intensity or wt%
  • Special: EDS or WDS(?); in the case of WDS(?) a DTC is automatically selected
  • DTC: Dead time correction
  • OC: Orientation correction (legacy function from XMapTools 3, do not use; not tested)
  • Destination: Destination in XMapTools, can be: Intensity, Quanti, Merged, Other; drop down menu, can be edited.
  • Action: Keep or eliminate; drop down menu, editable.
  • Settings, such as setting the dwell time (as in XMapTools 3) can be changed in the Corrections section.

Press the Import data button to import the selected maps into XMapTools after the corrections have been applied.

⚠️ Warning: In this version of XMapTools the file name should match exactly one of the compatible elements. Otherwise the map will be imported into the "Other" category. However, the filename can contain an element name followed by an underscore (_) and a comment, e.g. Si_sample1.txt will be recognised as a map of Si.

For more detailed information on the EPMA Converter, refer to the embedded documentation available within the program.

Importing calibrated data from EPMA and SEM

This section describes how to work in XMapTools with data that have been calibrated by an other program.

The calibrated maps should be translated first into a compatible format (e.g. txt or csv file). Use the element or oxide abbreviation as file name (e.g. Si.txt, SiO2.txt, Ce.txt, etc.).

Step 1: Adding calibrated maps

Quantitative maps can be imported in XMapTools via the Import Tool. Quantitative maps can be expressed in µg/g or wt% of elements (e.g. Si.txt, Al.txt, etc.) or oxides (e.g. SiO2.txt, Al2O3.txt, etc.). These maps are imported in the category 'Merged' data. The data format is not specified during the import.

  • For maps expressed in µg/g or wt% of oxides, the destination is automatically set to 'Merged'. No action is required, simply press the button Import Data.
  • Maps expressed in µg/g or wt% of elements, the destination must be changed manually to 'Merged' (see figure below). This operation needs to be repeated for each map. The click on the button Import Data.
image

Figure: If maps are expressed in mass of elements, the destination should be changed from 'Intensity' to 'Merged'.

image

Figure: In this example the destination for each map has been set to 'Merged'.

Step 2: Data conversion (optional)

The compositional maps should ideally be expressed in oxide wt%. if the imported maps are in µg/g or wt% of elements, a conversion step can be required to calculate structural formulas.

In the primary menu, select the dataset Imported_Maps and then right-click on its name. Select the option Convert to open the Converter module.

Select the conversion method in the Converter tool and press the Apply button.

image

Figure: Select a dataset and then right-click to open the Converter from the primary menu.

image

Figure: Data conversion tool. In this example data are converted from element wt% to oxide wt%.

Step 3: Classification of quantitative data

Step 3.1: Create a training set

Display a map from the imported dataset using the Primary Menu and open the Classify tab. Select Training Set (Classification) in the Secondary Menu and press the Add image button in Classify and select the phases. Press again the Add image button to create a new mask definition in the training set. This operation can be repeated until the correct number of phases is reached. Each mask definition can be deleted by right-clicking on the name and selecting Delete.

You can rename each mask definition by double-clicking on his name in the Secondary Menu. Press Add image in Classify when a mask definition is selected to add a region-of-interest (ROI).

Step 3.2: Add maps for classification

Select the dataset in the category Merged of the Primary Menu and press the Add Maps for Classification image button to add all the maps of the dataset in the list that will be used by the classification function.

Step 3.3: Classification

Select a dataset in the Merged category of the Primary Menu and a Training Set in the Secondary Menu. Pick an algorithm in the tab Classify and press the Classify image button. Note that the Classify button is only available when an appropriate dataset and training set are selected in the primary and secondary menus.

Step 4: Splitting a merged dataset using a maskfile

The imported dataset available in the Merged data category has to be divided into maps for each mask that will be stored under the Quanti data category.

Select a mask file in the Secondary Menu. Select the dataset in Merged and then right-click on its name. Select the Split (using maskfile) option.

The results are stored under the Quanti category as individual dataset, one for each mask. These data sets can be used to calculate maps of structural formulas or other calculations.

image

Figure: Select a mask file, then click on the dataset of interest (here Imported_Maps_Oxides) and then right-click on the name for accessing the menu.

image

Figure: Results are stored in the category Quanti

Classification

Compositional map classification is the process of categorising and labelling groups of pixels within a dataset based on their composition. It generates a mask image showing the distribution of each mask/class (i.e. features can be mineral/epoxy/glass, etc.).

Classification mask image example

Figure: Example of mask image for a metapelite from the Himalaya published in Lanari & Duesterhoeft (2019). Each feature (mineral) is shown with a colour. Note that all the pixels of this image have been classified.

Classification parameters & algorithms

These tools are used to select an algorithm and maps to be used for classification.

Chemical system: how to add/remove maps?

The goal is to set the map input of the classification function. It is not required to use all available maps for classification; maps containing only noise are usually excluded.

The list of maps used by the classification function is displayed in the text field. The button Add Maps for Classification adds all maps available in the intensity tab of the primary menu. The button Edit Selected Map can have two modes: add (plus icon) or eliminate (minus icon) depending on whether the map selected in the primary menu is already available in the list or not. Clicking "plus" adds the selected map, whereas clicking "minus" eliminates the selected map from the list.

Algorithm selection

The machine learning algorithm used for classification can be selected via the algorithm menu available in the section Classification Parameters.

The following algorithms are available:

  • Random Forest: An ensemble learning method for classification constructing a multitude of decision trees during training. The output of the random forest is the class selected by most trees (majority vote).
  • Discriminant Analysis: Classification method that assumes that different classes generate data based on different Gaussian distributions. To train a classifier, it estimates the parameters of a Gaussian distribution for each class.
  • Naive Bayes: Classification algorithm applying density estimation to the data and generating a probability model. The decision rule is based on the Bayes theorem.
  • Support Vector Machine: Data points (p-dimensional vector) are separated into n classes by separating them with a (p-1)-dimensional hyperplane. The algorithm chooses the hyperplane so that the distance from it to the nearest data point on each side is maximised.
  • Classification Tree: A decision tree is used as predictive model to classify the input features into classes via a series of decision nodes. Each leaf of the tree is labelled with a class.
  • k-Nearest Neighbour: An object is classified by a plurality vote of its neighbours, with the object being assigned to the class most common among its k nearest neighbours.
  • k-Means: Classification method that aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest cluster centroid, serving as a prototype of the cluster.

Principal component analysis (PCA) — Optional

The principal components of a collection of points in a real coordinate space are a sequence of vectors consisting of best-fitting lines, each of them defined as one that minimizes the average squared distance from the points to the line. These directions constitute an orthonormal basis in which different individual dimensions of the data are linearly uncorrelated. The first principal component can equivalently be defined as a direction that maximizes the variance of the projected data. Principal component analysis (PCA) is the process of computing the principal components and using them to perform a change of basis on the data.

The button Generate Maps of the Principal Components (PCA) generates a map for each principal component and stores them in the section Other of the primary menu.

If the tick-box incl. PCA is selected, the maps of principal components are included as additional dimensions for the classification. Example: if 8 intensity maps are considered, a total of 14 maps of PC are added to the classification input, 7 for a normal PCA and 7 for a normalised PCA.

Training and classification

A training set must be selected in the secondary menu in order to activate the classification button.

The button Classify (Train a Classifier & Classify) trains a new classifier and performs the classification using the algorithm selected in the menu and the specified set of maps.

A new figure containing up to four plots will open and be continuously updated during classification. Do not close this figure until the classification is complete, otherwise the plots will not be displayed.

Classification plots

Figure: Plots for classification using the Random Forest algorithm. Top left: out-of-bag classification error vs. number of trees grown. Top right: Predictor importance. Bottom left: Confusion map of the training data set. Bottom right: Confusion plot of the test dataset.

Once the classification is achieved, a new mask file is generated and stored under Mask files in the secondary menu. The mask file is automatically selected and the mask image displayed in the main figure.

Filtering options

The following options apply to a given mask file. Select a mask file in the secondary menu to apply changes.

Select the option to hide pixels having a class probability lower than a given threshold for the selected mask file. Set the probability threshold used for hiding pixels. This value should range between 0 and 1.

The button Create new mask file with pixels filtered by probability generates a new mask file after filtering. This option replaces the BCR correction available in XMapTools 3 and is more adequate as only the misclassified pixels are excluded.

Mask analysis & visualisation

The modes of each class within a given region-of-interest can be exported using the tools provided in this section. Modes are given as surface percentage calculated using the number of pixels of each class. For minerals, this can be eventually extrapolated to volume fraction as discussed in Lanari & Engi (2017).

Select the ROI shape to be used to extract the local modes from the dropdown menu.

The button Add ROI allows a new region-of-interest (ROI) to be drawn on the figure. Note that a mask file must be selected before activating this mode. Results are displayed in the right window as a table containing the modes and number of pixels for each class and as a pie diagram.

The following ROI shapes are available:

  • Rectangle: click to select the first corner and drag the mouse to the opposite corner defining a rectangle
  • Polygon: click successively on the image to draw a polygon; right-clicking validates and closes automatically the shape

The button Plot Compositions generates a plot using the data selected in the primary menu (either intensity, or a merged map) and the mask file selected in the secondary menu.

Composition plot

Figure: Example of compositional plot generated using a merged map (expressed in oxide wt%) and a mask file.

Calibration (EPMA)

The following steps are required to convert raw data (e.g. X-ray maps) into maps of chemical composition:

  • Import standard data as spot analyses for the calibration of EPMA data
  • Check/adjust/add standard data
  • Calibrate using the Calibration Assistant for EPMA data

Standard data

The spot analyses used as internal standards in the calibration of EPMA data are referred to as "standards" in the following as they permit to define a calibration curve that correlates X-ray intensities to composition (e.g. expressed in oxide/element wt%).

It is necessary to import the standards from a standard file, check their positions and eventually correct, check the chemical compositions and eventually create new standards. All these steps can be achieved in XMapTools 4.

File Standards.txt

The file Standards.txt contains (i) the map coordinates and (ii) the spot analyses used for the standardisation. The map coordinates must be listed within a single row below the keyword >1. The oxide order is set below the keyword >2. X and Y must be the two last labels and must be listed in this specific order. The internal standards analyses are listed below the keyword >3 corresponding to the oxide order defined above (keyword >2).

>1 Here paste the image coordinates (Xmin Xmax Ymax Ymin)
+56.739 57.239 43.691 43.371
+
+>2 Here define the oxides order
+SiO2 MgO FeO Al2O3 X Y
+
+>3 Here paste the analyses 
+25.4800 11.260 29.050 21.1400 1.4800 68.310 39.999
+52.9400 3.5300 3.0200 24.2300 0.0197 68.310 39.535
+52.5800 3.6300 2.7900 24.7200 0.0195 68.331 39.511

Import standards

The button Import (Import spots for Standards (from file)) is used to import standards from a file.

The box Import from Standards.txt is selected by default allowing the file 'Standards.txt' to be read automatically. If the file containing the standard data has a different name, unselect the box and it will be possible to select a file in the Pick a file pop-up window. At the moment all standards need to be stored within a single file. It is not possible to import standards from different files as existing standards will be eliminated when a new file is loaded.

Once loaded, standards are displayed on the main map with a label including the spot number and several plots are produced and shown in the category "Standards" of the live display module. You can get this global visualisation at any stage by selecting Standards (Spots) in the Secondary Menu. Three plots are produced if an element is selected in the primary menu, from top to bottom: (1) a plot showing intensity/composition versus sequence of standard to visualise if there is a good match between the standard compositions and the intensity values of the matching pixels; (2 and 3) two correlation maps, one for the selected element in the primary menu and a second one considering all elements.

Adjusting standard positions

To adjust the positions, display the map of a diagnostic element (Intensity) and select Standards (Spots) in the secondary menu. The two correlation maps should show a maximum value in yellow and the blue spot representing the current position should be centred on this optimum.

To adjust the position of the standards (all at once), put the mouse cursor over the blue circle showing up a transparent circle. Click on it and move the blue circle to the new position. The values in the two white fields on top will be adjusted. Then click on the button Refresh (important) to update the standard positions. The Refresh button is only available when standard positions have been changed and need to be saved.

Note: If no good correlation exists for a given element, the higher value of the second figure could not represent the optimal position.

Adding new standard point(s)

It is possible to add new standard points directly in XMapTools. Note that these will not be saved to the file Standards.txt, and if the file is loaded again all changes will be lost.

The button Add standard point adds a new standard at selected coordinates, set by clicking on the map after pressing the button. Compositional data can be filled directly in the table, when this standard is selected.

Procedure:

  • Select an element map (e.g. SiO₂ for adding a spot of quartz) and select the item Standards (Spots) in the secondary menu
  • Press the button Add Standard Point
  • Click on the map at the position to add the new standard point
  • (Optional) It is possible to adjust the position of any manual standard by moving the blue spot (transparent circle) or its label (cross-shaped cursor)
  • The new standard point is automatically selected in the Secondary Menu and the composition table shown on the right side
  • You can enter manually the oxide (wt%) composition of the new standard in the column 'wt%' in blue. The X-ray intensity of the corresponding pixel is already available in the 'Int' column
  • There is nothing more to do — all data are automatically saved
  • (Optional) You can rename any standard by double clicking on its name in the secondary menu

Map calibration

A calibration step, also known as standardisation, is required to convert intensity maps into compositional maps (Lanari et al. 2019).

All minerals/objects are calibrated at the same time in XMapTools 4. Therefore it is required to select a Mask File in the Secondary Menu to activate the button Calibrate.

The approach implemented in XMapTools 4 provides a module for auto multi-phase calibration. The button Calibrate opens the Calibration Assistant for EPMA Data. This button is only available when a mask file is selected in the Secondary Menu.

For more detailed information on the Calibration Assistant, refer to the embedded documentation accessible from the assistant.

Calibration assistant (EPMA)

The new approach implemented in XMapTools 4 provides a module for automatic multi-phase calibration. The general procedure is described in De Andrade et al. (2006) and an advanced approach including pseudo-background correction is described in Lanari et al. (2019).

Strategy: advantages and pitfalls

An automatic calibration is performed taking into account all spot analyses and all masks when the Calibrate button is pressed. The new algorithm first performs a general fit including all standards and then adjusts the calibration for each mineral. All calibration curves, including those for the general fit, are accessible from the tree menu.

When you press the Apply Standardisation button, all the calibrated maps for each mineral as well as a merged map are created and sent back to XMapTools.

Important

First make sure you check the quality of the calibration curves generated by the auto function!

The automatic function will work if all minerals have been measured with at least a few spot analyses and if there is at least one mineral with a composition above 1 wt% for each element. If a mineral or other feature (e.g. fracture) has no spot analyses, the program extrapolates a calibration from the general fit and thus "predicts" a composition. At this stage this composition is likely to be off because matrix effects are ignored!

INFO

  • If you close the Calibration Assistant window, no calibrated data or calibration settings will be saved.
  • When you press Apply Standardisation, all maps are sent to XMapTools.

Displaying calibration curves

The Calibration Assistant for EPMA Data opens when the Calibrate button in XMapTools is pressed.

Calibration EPMA overview

Figure: Example calibration for a clinopyroxene-garnet amphibolite metapelite of the Brasília orogen (Brazil), published in Tedeschi et al. (2017). Note that the calibration curves for all minerals are displayed when the window pops up.

Use the tree menu on the left to navigate through the list of minerals and elements and to view calibration curves.

When you select a mineral from the tree menu, a single plot showing the sum of elements/oxides (total wt%) is displayed. The plot in the middle shows all calibration curves, for all elements of the selected mineral. Some data is displayed in a table:

ColumnDescription
El.Element name (of the map); includes sum(wt%) and Peak(SumOx) labels
#(std)Number of internal standards (spot analyses) used to calibrate the phase
med(it)Median intensity value for all pixels of the selected mineral for each element
med(wt)_sMedian composition of all internal standard measurements (spot analyses)
mode(wt)_mMost common composition in the calibrated pixels
k factorDifference between the general fit calibration and the final mineral calibration (1 = identical)
SlopeSlope of the calibration curve
BackgroundIntercept of the calibration curve

TIP

The values of mode(SumOx) and Sum(wt) may be different, in which case the median is likely to be influenced by non-Gaussian signals and may not be comparable with the median of the spot analyses. The comparison of both columns can be used to detect potential calibration problems.

Calibration EPMA mineral selected

Figure: Example of calibration when a mineral is selected. All calibration curves for a given mineral are displayed.

To view a specific calibration curve (for a particular element), expand the menu by clicking on the small arrow to the left of the mineral name and select an element. The corresponding calibration curve is displayed together with the corresponding quantitative map (oxide wt-%).

Calibration EPMA element selected

Figure: Example when an element of a given mineral phase is selected. The calibration curve and quantitative map for a given element are displayed.

Adjusting a calibration curve

When an element is selected, the Adjust Adjust button appears above the tree menu.

Clicking this button displays two fields containing the values for background and slope: Slope and background

Values can be changed manually by entering new values in the appropriate field. Press Enter to calculate and display the new calibration curve on the graph (this operation may take a few seconds).

Displaying results of the general fit

Selecting General Fit (last option in the tree menu) will display a plot of the calibration curves for all elements. It is not possible to adjust the calibration curves in the general fit. This fit is automatically performed first by the program and is no longer used once the calibration of each mineral has been achieved.

Apply calibration

After checking each calibration curve and adjusting if necessary, use the Apply Standardisation button Apply to generate the calibrated maps.

By applying the standardisation:

  • The Quanti option in the Primary Menu becomes available, where quantitative maps in element/oxide wt-% of each phase can be displayed.
  • The Merged option in the Primary Menu also becomes available. A set of merged maps (i.e. quantitative maps in oxide wt-% for all phases considered together) is automatically generated.

Notes

  • Red dots indicate outliers that were not included in the calculation of the calibration curves.
  • Moving the cursor over the images brings up a Image Menu at the top right. This menu includes options to zoom, save and copy the images.

Local bulk compositions

A local bulk composition (abbreviation: LBC) represents the bulk composition of a spatial domain in a rock determined by integrating pixel compositions. As discussed in Lanari and Engi (2017), it is necessary to apply a density correction prior to exporting any local bulk composition.

To export local bulk compositions the following steps should be employed:

  • Generate a density map
  • Generate a merged map (if not available yet)
  • Select an area of interest to extract the local bulk composition

Generate a density map

A density map is a map containing density data for each pixel of a map. It is calculated for a given mask file. Select a mask file in the secondary menu.

The button Generate Density Map (from a mask file) allows a density map to be generated from the selected mask file. A mask file should be selected to activate the button. Pressing this button opens a window with predefined average density values (provided that the mineral name was recognised and a reference value available in the internal database; when full names of minerals in English are used, the mineral should be recognised).

Note: mineral density values can be obtained from the website webmineral.com.

A density map will be created and stored under the category Other in the Primary Menu with the name 'Density [maskfile_name]'.

Generate a merged map

Merged maps are maps for which all pixels hold a chemical composition. A merged map is automatically created by the standardisation function in XMapTools 4. If you need to create a merged map manually, follow the procedure below.

In the primary menu, unfold Quanti and select a quanti map (mineral). The button Merge (Merge Quanti Data) in the section Calibrate becomes available. In the window that pops up, select the quanti maps to be merged. Select 'Ok' to generate the merged maps that will be stored in the category Merged.

Select ROI and calculate LBC

A local bulk composition can be calculated from a region-of-interest (ROI). The ROI can be a rectangle or a polygon. The density correction is automatically applied.

Select a merged map in the primary menu and display an element. In the dropdown menu, select the wanted ROI shape: Rectangle ROI or Polygon ROI.

The button Add a ROI for LBC extraction allows a region-of-interest (ROI) to be drawn on the figure. If Rectangle ROI is selected, click on a corner, hold and drag to draw a rectangle. If Polygon ROI is selected, click on the image to draw the polygon and close by selecting the first point or right-clicking.

When a ROI is available, the table containing the local bulk composition appears in the live display module. The first column shows the element list, whereas compositions are listed in the column composition (unit: wt%). Below the table, a pie chart shows the repartition of the elements/oxides by weight.

The ROI can be edited and the composition values in the table and the pie chart are automatically updated.

The density map used is shown in a dropdown menu located in the live display module.

The button Copy Data to clipboard may be used to copy the LBC data from the table. The button Save may be used to save the LBC data as a .txt file.

Approximation of uncertainties for LBC

An uncertainty approximation similar to what is described in Lanari and Engi (2017) is available.

Select a merged map and create a Rectangle ROI. Define the number of simulations Sim (default 100) and the shift Px in pixel (default 20). The shape will be randomly displaced and resized using two random variables calculated from the shift value (assuming a Gaussian distribution and the value of Px as 1 sigma expressed in number of pixels). Click on the button Calculate uncertainties using Monte-Carlo.

The areas used to approximate an uncertainty are plotted in a new figure and the result is shown in the table of the live display module. The column composition shows the original local bulk composition (selected ROI). The column 2std shows the 2 standard deviation value (note that the distributions are usually Gaussian as shown by Lanari & Engi (2017)). The last column shows the mean value of all compositions. This value should match the composition of the original ROI. If not, this means that a Gaussian distribution cannot be assumed for this element and the uncertainty is not correct.

References

  • De Andrade, V., Vidal, O., Lewin, E., O'Brien, P., Agard, P. (2006). Quantification of electron microprobe compositional maps of rock thin sections: an optimized method and examples. Journal of Metamorphic Geology, 24, 655–668.
  • Lanari, P., & Engi, M. (2017). Local bulk composition effects on metamorphic mineral assemblages, Reviews in Mineralogy and Geochemistry, 83, 55–102.
  • Lanari, P., Vho, A., Bovay, T., Airaghi, L., Centrella, S. (2019). Quantitative compositional mapping of mineral phases by electron probe micro-analyser. Geological Society of London, Special Publications, 478, 39–63.
`,217)])])}const u=a(i,[["render",o]]);export{h as __pageData,u as default}; diff --git a/.vitepress/dist/assets/doc-epma.md.DFglyrsL.lean.js b/.vitepress/dist/assets/doc-epma.md.DFglyrsL.lean.js new file mode 100644 index 0000000..cc54591 --- /dev/null +++ b/.vitepress/dist/assets/doc-epma.md.DFglyrsL.lean.js @@ -0,0 +1 @@ +import{_ as a,o as e,c as n,ae as s}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"XMapTools documentation for EPMA","description":"","frontmatter":{},"headers":[],"relativePath":"doc-epma.md","filePath":"doc-epma.md"}'),i={name:"doc-epma.md"};function o(l,t,p,r,d,c){return e(),n("div",null,[...t[0]||(t[0]=[s("",217)])])}const u=a(i,[["render",o]]);export{h as __pageData,u as default}; diff --git a/.vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.js b/.vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.js new file mode 100644 index 0000000..3f81743 --- /dev/null +++ b/.vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as e,ae as r}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"External Functions","description":"","frontmatter":{},"headers":[],"relativePath":"doc-ext-functions.md","filePath":"doc-ext-functions.md"}'),o={name:"doc-ext-functions.md"};function l(d,t,s,n,h,b){return i(),e("div",null,[...t[0]||(t[0]=[r('

External Functions

XMapTools includes a set of external functions for calculating structural formulas, thermobarometry and other methods. Source code for all functions is available on the XMapTools GitHub repository.

Table of contents

Structural formulas

The following structural formula functions are available in XMapTools. Each function calculates structural formulas and end-member proportions on a specified oxygen basis.

Aluminosilicate > AlSil. (SF, 5-Ox. basis)

XMapTools External Function: structural formula of aluminosilicates. Version without loop & all Fe as Fe₂O₃. 5 Oxygen-basis.

Amphibole > CaAmp (SF, 23-Ox. basis)

XMapTools External Function: structural formula of Ca-amphibole. Fe₂O₃ added as possible input. Ti ordered onto M2 (Raase 1974).

End-memberT1(4)T2(2)M2(2)M13(2)M4(2)A(1)
Glaucophane (Gln)Si₄Si₄Al,AlMg,Mg,MgNa,NaV
Tremolite (Tr)Si₄Si₄Mg,MgMg,Mg,MgCa,CaV
F-tremolite (Ftr)Si₄Si₄Fe,FeFe,Fe,FeCa,CaV
Tschermakite (Ts)Si₄Si₂,Al₂Al,AlMg,Mg,MgCa,CaV
Pargasite (Prg)Si₄Si₂,Al₂Mg,AlMg,Mg,MgCa,CaNa

Other: Ti, Mn. 23 Oxygen-basis.

Amphibole > CaAmp_Fe3+ (SF, 23-Ox. basis)

XMapTools External Function: structural formula of Ca-amphibole with Fe³⁺ estimation. 23 Oxygen-basis. Not tested.

Biotite > Bt+ (SF, 11-Ox. basis)

XMapTools External Function: structural formula of biotite. Fe₂O₃ added as possible input. Ti assumed to be ordered onto M2, Al onto M1, Mn added (ordered onto M12).

End-memberT1(2)T2(2)M1(1)M2(2)A(1)
PhlogopiteSi,SiSi,AlMgMg,MgK
AnniteSi,SiSi,AlFeFe,FeK
EastoniteSi,SiAl,AlAlMg,MgK
SiderophylliteSi,SiAl,AlAlFe,FeK
Ti-biotiteSi,SiSi,AlMgTi,MgK
Mn-biotiteSi,SiSi,AlMnMn,MnK

11 Oxygen-basis.

Brucite > Brc (SF, 1-Ox. basis)

XMapTools External Function: structural formula of brucite. Version without loop & Fe₂O₃ as possible input. As₂O₃ is used instead of As₂O₅ in XMapTools 3.4.2. 1 Oxygen-basis.

Chlorite > Chl (SF, 14-Ox. basis)

XMapTools External Function: structural formula of chlorite. Ferri-sudoite added; Trincal & Lanari (2016) Clay Min. 51, 675–689. Fe₂O₃ added as possible input. 1 Input: XFe3 = Fe3/(Fe2+Fe3).

End-memberT1(2)T2(2)M1(1)M2-M3(4)M4(1)
Amesite (Ame)Si,SiAl,AlAlMg₄Al
Fe-Amesite (fAme)Si,SiAl,AlAlFe₄Al
Clinochlore (Clc)Si,SiSi,AlMgMg₄Al
Daphnite (Dph)Si,SiSi,AlFeFe₄Al
Sudoite (Sud)Si,SiSi,AlVMg₂,Al₂Al
FerriSudoite (fSud)Si,SiSi,AlVMg₂,Fe₂Al
AlfreeChl (afchl)Si,SiSi,SiMgMg₄Mg

14 Oxygen-basis.

Chloritoid > Ctd (SF, 12-Ox. basis)

XMapTools External Function: structural formula of chloritoid. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(3)M1(1)M2(2)
Mg-chloritoid (Ctd)Si,SiAl₃AlMg,Mg
Fe-chloritoid (fCtd)Si,SiAl₃AlFe,Fe
Mn-chloritoid (mCtd)Si,SiAl₃AlMn,Mn

12 Oxygen-basis.

Chromite > Chr (SF, 32-Ox. basis)

XMapTools External Function: structural formula of chromite. Version without loop & Fe₂O₃ as possible input. Fe³⁺ estimated using Droop (1987). 32 Oxygen-basis. Not tested in this version.

Clinopyroxene > Cpx (SF, 6-Ox. basis)

XMapTools External Function: structural formula of clinopyroxene. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)M1(1)M2(1)
Jadeite (Jd)Si,SiAlNa
Diopside (Di)Si,SiMgCa
Hedenbergite (Hd)Si,SiFeCa
Ca-Tschermak (Cats)Si,AlAlCa

6 Oxygen-basis.

Clinopyroxene > Cpx_Fe3+ (SF, 6-Ox. basis)

XMapTools External Function: structural formula of clinopyroxene with Fe³⁺ estimation.

End-memberT1(2)M1(1)M2(1)
Jadeite (Jd)Si,SiAlNa
Diopside (Di)Si,SiMgCa
Hedenbergite (Hd)Si,SiFe²Ca
Ca-Tschermak (Cats)Si,AlAlCa
Acmite (Acm)Si,SiFe³Na

6 Oxygen-basis.

Cordierite > Crd (SF, 18-Ox. basis)

XMapTools External Function: structural formula of cordierite. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(3)M1(2)
Mg-Cordierite (Crd)Si₅Al₄Mg,Mg
Fe-Cordierite (fCrd)Si₅Al₄Fe,Fe
Mn-Cordierite (mCrd)Si₅Al₄Mn,Mn

18 Oxygen-basis.

Epidote > Ep (SF, 12.5-Ox. basis)

XMapTools External Function: structural formula of epidote. Version without loop & all iron as Fe³⁺.

End-memberT1(3)M1(1)M2(1)M3(1)A1(2)
Epidote (Ep)Si₃AlAlFeCa,Ca
Fe-epidote (fEp)Si₃FeAlFeCa,Ca
Zoisite (Zo)Si₃AlAlAlCa,Ca
Mn-epidote (mEp)Si₃AlAlMnCa,Ca

12.5 Oxygen-basis.

Feldspar > Fsp (SF, 8-Ox. basis)

XMapTools External Function: structural formula of feldspar. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(2)M1(1)
Albite (Ab)Si,SiSi,AlNa
Anorthite (An)Si,SiAl,AlCa
Sanidine (Sn)Si,SiSi,AlK

8 Oxygen-basis.

Garnet > Grt (SF, 12-Ox. basis)

XMapTools External Function: structural formula of garnet. Version without loop & Fe₂O₃ as possible input.

End-memberX(3)Y(2)O/T(3)
Almandine (Alm)Fe₃Al₂(SiO₄)₃
Pyrope (Prp)Mg₃Al₂(SiO₄)₃
Grossular (Grs)Ca₃Al₂(SiO₄)₃
Spessartine (Sps)Mn₃Al₂(SiO₄)₃

12 Oxygen-basis.

Garnet > Grt_Fe3+ (SF, 12-Ox. basis)

XMapTools External Function: structural formula of garnet with Fe³⁺ estimation. Method of Droop (1987) implemented.

End-memberX(3)Y(2)O/T(3)
Almandine (Alm)Fe₃Al₂(SiO₄)₃
Pyrope (Prp)Mg₃Al₂(SiO₄)₃
Grossular (Grs)Ca₃Al₂(SiO₄)₃
Spessartine (Sps)Mn₃Al₂(SiO₄)₃
Andradite (And)Ca₃Fe₂(SiO₄)₃

12 Oxygen-basis.

Ilmenite > Ilm (SF, 3-Ox. basis)

XMapTools External Function: structural formula of ilmenite. Approximation of Fe³⁺ and Fe²⁺; works fine with Ca-Na-K ignored.

End-memberFormula
Ilmenite (Ilm)Fe(1)Ti(1)O(3)
Mn-Ilmenite (mIlm)Mn(1)Ti(1)O(3)
Hematite (Hem)Fe(2)O(3)

3 Oxygen-basis.

Magnetite > Mag (SF, 4-Ox./3-cat. basis)

XMapTools External Function: structural formula of magnetite. Version without loop & Fe₂O₃ as possible input. Normalized to 3 cations (assuming 4 oxygen). 4 Oxygen-basis.

Olivine > Ol (SF, 4-Ox. basis)

XMapTools External Function: structural formula of olivine. Version without loop & Fe₂O₃ as possible input.

End-memberFormula
Forsterite (Fo)Mg(2)Si(1)O(4)
Fayalite (Fa)Fe(2)Si(1)O(4)
Tephroite (Tep)Mn(2)Si(1)O(4)

4 Oxygen-basis.

Orthopyroxene > Opx (SF, 3-Ox. basis)

XMapTools External Function: structural formula of orthopyroxene. Version without loop & Fe₂O₃ as possible input.

End-memberT1(1)M1(1)
Enstatite (En)Si₂Mg₂
Ferrosilite (Fs)Si₂Fe₂
Tschermak-px (Mgts)Si,AlAl,Mg

3 Oxygen-basis.

Rutile > Rt (SF, 2-Ox. basis)

XMapTools External Function: structural formula of rutile. Version without loop & Fe₂O₃ as possible input. 2 Oxygen-basis.

Serpentine > Srp (SF, 14-Ox. basis)

XMapTools External Function: structural formula of serpentine. Number of oxygen changed from 14.5 to 14. Ratio Si/(Si+Fe+Mg) added. Version without loop & Fe₂O₃ as possible input. 14 Oxygen-basis.

Spinel > Spl (SF, 4-Ox. basis)

XMapTools External Function: structural formula of spinel. Version without loop & Fe₂O₃ as possible input. Fe³⁺ estimated using Droop (1987).

Al spinels (AlSpinel):

End-memberX(1)Y(2)
Hercynite (Hc)FeAl₂
Spinel (Spl)MgAl₂
Galaxite (Glx)MnAl₂
Gahnite (Ghn)ZnAl₂

Cr spinels (CrSpinel):

End-memberX(1)Y(2)
Chromite (Chr)FeCr₂
Magnesiochromite (mChr)MgCr₂
Nichromite (Nic)NiCr₂

Fe spinels (FeSpinel):

End-memberX(1)Y(2)
Magnesioferrite (Mfr)MgFe₂
Magnetite (Mag)FeFe₂
Ulvospinel (tSpl)TiFe₂
Jacobsite (Jac)MnFe₂
Franklinite (Frk)ZnFe₂
Trevorite (Tre)NiFe₂

Olivine spinels (OlSpinel):

End-memberX(1)Y(2)
Ringwoodite (Rwd)SiMg₂

4 Oxygen-basis. Calculated assuming equipartition of Fe²⁺/Mg²⁺/Mn²⁺/Zn²⁺/Ni. Not tested.

Staurolite > St (SF, 22-Ox. basis)

XMapTools External Function: structural formula of staurolite. Version without loop & Fe₂O₃ as possible input.

End-memberZ(11)Y(2)X(4)
Staurolite (St)Si(4)Al(7)Al,AlFe₄
Mg-Staurolite (Mst)Si(4)Al(7)Al,AlMg₄
Mn-Staurolite (MnSt)Si(4)Al(7)Al,AlMn₄

24 Oxygen-basis.

White mica > Mica (SF, 11-Ox. basis)

XMapTools External Function: structural formula of white mica (generic). Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(2)M1(1)M2(2)A(1)
Celadonite-Mg (Cel)Si,SiSi,SiVAl,MgK
Celadonite-Fe (fCel)Si,SiSi,SiVAl,FeK
Muscovite (Ms)Si,SiSi,AlVAl,AlK
Paragonite (Pg)Si,SiSi,AlVAl,AlNa
Pyrophyllite (Prl)Si,SiSi,SiVAl,AlV

Not considered: Biotite (Si,Si | Si,Al | MgFe | MgFeTi | K). 11 Oxygen-basis.

Thermobarometry and other methods

Function headers for thermobarometry and other methods. Source code is available on the XMapTools GitHub repository. Several functions are taken from the PTtoolbox package of Joshua Laughton.

Map-mode

Amphibole > T.Amp (all calibrations)

XMapTools External Function: amphibole thermobarometry. 23 Oxygen-basis.

Output variables:

  • T_HB94: Holland & Blundy (1994) – no quartz
  • T_HB94q: Holland & Blundy (1994) – with quartz

Biotite > T.Bt (all calibrations)

XMapTools External Function: biotite thermobarometry. 22 Oxygen-basis.

Output variables:

  • T_W20: Wu & Chen (2015)
  • T_H05: Henry et al. (2005)

Chlorite > T.Chl (all calibrations)

XMapTools External Function: chlorite thermometry (all calibrations). Fe₂O₃ added as possible input. 14 Oxygen-basis.

Output variables:

  • T_L14_2: Lanari et al. (2014) Contrib. Miner. Petrol. 167:167–968 (LWV2)
  • T_B13: Bourdelle et al. (2013) Contrib. Miner. Petrol. 165:723–735
  • T_ZF95: Zang & Fyfe (1995) Miner. Depos. 30:30–38
  • T_HV91: Hillier & Velde (1991) Clay Miner. 26:149–168
  • T_J91: Jowett (1991) Program Abstr. 16:A62
  • T_C88: Cathelineau (1988) Clay Miner. 23:471–485
  • T_KM87: Kranidiotis & MacLean (1987) Econ. Geol. 82:1898–1911
  • T_CN85: Cathelineau & Nieva (1985) Contrib. Miner. Petrol. 91:235–244

Monazite > Age.Mz (Montel 1996)

XMapTools External Function: monazite geochronology.

Output variables:

  • Age_M96: Montel (1996)

Input variables: ThO₂, UO₂ and PbO in wt% (use the converter if your data were calibrated in a different format).

Quartz > T.Qz (all calibrations)

XMapTools External Function: quartz thermobarometry (all calibrations).

Output variables:

  • T_WW06: Wark & Watson (2006)
  • T_KO08: Kawasaki & Osanai (2008)
  • T_T10: Thomas et al. (2010)
  • T_HA12: Huang & Audétat (2012)
  • T_O22: Osborne et al. (2022) CPM 177:31

Input variables: TiO₂ (wt%).

Rutile > T.Rt (all calibrations)

XMapTools External Function: rutile thermobarometry (all calibrations).

Output variables:

  • T_Z04: Zack et al. (2004)
  • T_W06: Watson et al. (2006)
  • T_FW07: Ferry & Watson (2007), CMP 154:429–437
  • T_T07: Tomkins et al. (2007)

Input variables: ZrO₂ (wt%).

Titanite > T.Ttn (all calibrations)

XMapTools External Function: titanite thermometry (all calibrations).

Output variables:

  • T_H08: Hayden et al. (2008)

White mica > P.Phg (all calibrations)

XMapTools External Function: phengite barometry. 11 Oxygen-basis.

Output variables:

  • P_MS87: Massone & Schreyer (1987)

Zircon > T.Zrn (all calibrations)

XMapTools External Function: zircon thermobarometry (all calibrations).

Output variables:

  • T_W06: Watson et al. (2006)
  • T_FW07: Ferry & Watson (2007), CMP 154:429–437

Multi-equilibrium

Amphibole > T.Grt-Hbl (all calibrations)

XMapTools External Function: Garnet-Hornblende thermometry. 12 Oxygen-basis for Garnet, 23 Oxygen-basis for Hornblende.

Output variables:

  • T_GP84: Graham & Powell (1984)
  • T_Per85: Perchuk et al. (1985)
  • T_Pow85: Powell (1985)
  • T_R00: Ravna (2000)

Biotite > T.Grt-Bt (all calibrations)

XMapTools External Function: Garnet-Biotite thermometry. 12 Oxygen-basis for Garnet, 11 Oxygen-basis for Biotite.

Output variables:

  • T_T76: Thompson (1976)
  • T_GA77: Goldman & Albee (1977)
  • T_HL77: Holdaway & Lee (1977)
  • T_FS78: Ferry & Spear (1978)
  • T_HS82: Hodges & Spear (1982)
  • T_PL83: Perchuk & Lavrent'eva (1983)
  • T_GS84: Ganguly & Saxena (1984)
  • T_IM85: Indares & Martignole (1985)
  • T_P85: Perchuk et al. (1985)
  • T_D91: Dasgupta et al. (1991)
  • T_B92: Bhattacharya et al. (1992)

Chlorite > T.Grt-Chl (all calibrations)

XMapTools External Function: Garnet-Chlorite thermometry. 12 Oxygen-basis for Garnet, 14 Oxygen-basis for Chlorite.

Output variables:

  • T_DH86: Dickenson & Hewitt (1986)
  • T_G90: Grambling (1990)
  • T_P91: Perchuk (1991)

Clinopyroxene > T.Grt-Cpx (all calibrations)

XMapTools External Function: Garnet-Clinopyroxene thermometry. 12 Oxygen-basis for Garnet, 6 Oxygen-basis for Clinopyroxene.

Output variables:

  • T_MH72: Mysen & Heier (1972)
  • T_RG74: Raheim & Green (1974)
  • T_MG78: Mori & Green (1978)
  • T_EG79: Ellis & Green (1979)
  • T_S79: Saxena (1979)
  • T_D80: Dahl (1980)
  • T_P85: Powell (1985)
  • T_K88: Krogh (1988)
  • T_A94: Ai (1994)
  • T_R00: Ravna (2000)
  • T_N09: Nakamura (2009)

Cordierite > T.Grt-Crd (all calibrations)

XMapTools External Function: Garnet-Cordierite thermometry. 12 Oxygen-basis for Garnet, 18 Oxygen-basis for Cordierite.

Output variables:

  • T_C71: Currie (1971)
  • T_T76: Thompson (1976)
  • T_HL77: Holdaway & Lee (1977)
  • T_P85: Perchuk et al. (1985)
  • T_B88: Bhattacharya et al. (1988)
  • T_B93: Bhattacharya (1993)

Ilmenite > T.Grt-Ilm (all calibrations)

XMapTools External Function: Garnet-Ilmenite thermometry. 12 Oxygen-basis for Garnet, 3 Oxygen-basis for Ilmenite. Not tested.

Output variables:

  • T_P87: Pownceby et al. (1987)
  • T_P91: Pownceby et al. (1991)
  • T_M10: Martin et al. (2010)

Orthopyroxene > T.Grt-Opx (all calibrations)

XMapTools External Function: Garnet-Orthopyroxene thermometry. 12 Oxygen-basis for Garnet, 6 Oxygen-basis for Orthopyroxene.

Output variables:

  • T_MG78: Mori & Green (1978)
  • T_D80: Dahl (1980)
  • T_R83: Raith et al. (1983)
  • T_H84: Harley (1984)
  • T_LG84: Lee & Ganguly (1984)
  • T_SB84: Sen & Bhattacharya (1984)
  • T_P85: Perchuk et al. (1985)
  • T_LG88: Lee & Ganguly (1988)
  • T_AP89: Aranovich & Podlesskii (1989)
  • T_PL90: Perchuk & Lavrente'va (1990)
  • T_B91: Bhattacharya et al. (1991)

White Mica > T.Grt-Ph (all calibrations)

XMapTools External Function: Garnet-Phengite thermometry. 12 Oxygen-basis for Garnet, 11 Oxygen-basis for Phengite.

Output variables:

  • T_KR88: Krogh & Raheim (1978)
  • T_GH82: Green & Hellman (1982)
  • T_HF88: Hynes & Forest (1988)
  • T_W02: Wu et al. (2002)
',170)])])}const g=a(o,[["render",l]]);export{u as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.lean.js b/.vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.lean.js new file mode 100644 index 0000000..c52d2e0 --- /dev/null +++ b/.vitepress/dist/assets/doc-ext-functions.md.Dv8eBX6B.lean.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as e,ae as r}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"External Functions","description":"","frontmatter":{},"headers":[],"relativePath":"doc-ext-functions.md","filePath":"doc-ext-functions.md"}'),o={name:"doc-ext-functions.md"};function l(d,t,s,n,h,b){return i(),e("div",null,[...t[0]||(t[0]=[r("",170)])])}const g=a(o,[["render",l]]);export{u as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-images.md.CLTo80uE.js b/.vitepress/dist/assets/doc-images.md.CLTo80uE.js new file mode 100644 index 0000000..847e400 --- /dev/null +++ b/.vitepress/dist/assets/doc-images.md.CLTo80uE.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as i,ae as o}from"./chunks/framework.DIXg7aqb.js";const p=JSON.parse('{"title":"Images","description":"","frontmatter":{},"headers":[],"relativePath":"doc-images.md","filePath":"doc-images.md"}'),l={name:"doc-images.md"};function m(r,e,n,s,g,d){return a(),i("div",null,[...e[0]||(e[0]=[o('

Images

Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024


This page describes the Images module, which provides tools to create and manage publication-ready images from XMapTools data.

What are "Image-Data" in XMapTools?

Images are plots stored in the project file and can be accessed from the primary menu under the Image category. These plots can be created using the tools available in the Image menu. They can be edited at any time and changes are saved.

Four types of images can be created:

TypeDescription
Single plot imageA single map (e.g. Ca_apfu in garnet)
Multi-plot imageA mosaic of maps (e.g. SiO2, Al2O3, FeO, Na2O); can also be combined into a GIF
Multi-layer image (shared scale)Multiple layers plotted with the same colour bar (e.g. XMg in biotite and garnet)
Multi-layer image (multi-scale)Multiple layers, each plotted with its own colour scale and palette

How to Create and Edit Images

Single-Plot Image

Use the main menu to view a map and, if necessary, adjust the colour contrast using the live histogram. Select Image >> Add Current Image from the main menu. A new image object will be created and placed in the Image category at the bottom of the primary menu.

You can view this image at any time by selecting Img (single-layer) #X from the primary menu (where X is the number of the image).

To edit the image, expand the image object and select the map. You can adjust the colour settings (borders, colour palette, etc.); changes are saved within the image object.

To export the image, select the image item in the primary menu and choose File > Save Image or Edit > Copy Image from the menu.


Single plot image

Figure 1: Example of an image generated with XMapTools for Ca (apfu) in garnet.

Multi-Plot Image

  1. Activate multi-selection mode from the Image > Multi-Selection Mode menu. The item labels in the primary menu are displayed in blue when this mode is active
  2. Select multiple maps from the primary menu. A mosaic will be created and displayed in the main window
  3. Select Image > Add Multi-Plot Image from the menu

You can expand the Img (multi-plot) #X item in the primary menu and select the maps one by one to adjust the colour contrast. You can also change the colour palette in the Options panel.

WARNING

It is not recommended to use XMapTools with multi-selection mode enabled for normal operation — it should only be used to generate images.


Multi-plot image

Figure 2: Example of a multi-plot image generated by XMapTools. Maps are expressed in oxide wt%. Note that each map is plotted using a different colour palette.

Multi-Plot Image & GIF

A GIF can be created from a multi-plot image. Select a multi-plot object, right-click on the name and select Save as GIF.


GIF example

Figure 3: Example of GIF generated with the images shown in Figure 2.

Multi-Layer Image (Shared Scale)

  1. Activate multi-selection mode from the Image > Multi-Selection Mode menu
  2. Select two (or more) compatible maps to plot together, for example XMg in biotite and XMg in garnet. The same unit should be used
  3. Select Image > Add Multi-Layer Image (Shared Scale) from the menu

You can expand the Img (multi-layer ShS) #X item in the primary menu and select the maps one by one to adjust the colour contrast. The same minimum and maximum values are applied to both images.


Multi-layer shared scale

Figure 4: Example of multi-layer image with common colour scale for XMg in garnet and biotite.

Multi-Layer Image (Multi-Scale)

  1. Activate multi-selection mode from the Image > Multi-Selection Mode menu
  2. Select two (or more) maps to be plotted together. Different quantities with different scales and units can be selected
  3. Select Image > Add Multi-Layer Image (Multi-Scale) from the menu

It is strongly recommended to use a different colour map for each map, as multiple colour bars will be created.


Multi-layer multi-scale

Figure 5: Example of multi-layer image with multi-scale for XMg in garnet and biotite. Note that the contrast is much better than on Figure 4 because two colour bars are used.

',41)])])}const u=t(l,[["render",m]]);export{p as __pageData,u as default}; diff --git a/.vitepress/dist/assets/doc-images.md.CLTo80uE.lean.js b/.vitepress/dist/assets/doc-images.md.CLTo80uE.lean.js new file mode 100644 index 0000000..d525bf1 --- /dev/null +++ b/.vitepress/dist/assets/doc-images.md.CLTo80uE.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as i,ae as o}from"./chunks/framework.DIXg7aqb.js";const p=JSON.parse('{"title":"Images","description":"","frontmatter":{},"headers":[],"relativePath":"doc-images.md","filePath":"doc-images.md"}'),l={name:"doc-images.md"};function m(r,e,n,s,g,d){return a(),i("div",null,[...e[0]||(e[0]=[o("",41)])])}const u=t(l,[["render",m]]);export{p as __pageData,u as default}; diff --git a/.vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.js b/.vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.js new file mode 100644 index 0000000..f5be129 --- /dev/null +++ b/.vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.js @@ -0,0 +1 @@ +import{_ as e,o as d,c as a,ae as o}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Import Maps Tool","description":"","frontmatter":{},"headers":[],"relativePath":"doc-import-maps.md","filePath":"doc-import-maps.md"}'),r={name:"doc-import-maps.md"};function i(n,t,l,s,m,p){return d(),a("div",null,[...t[0]||(t[0]=[o('

Import Maps Tool

Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024 by M. Tedeschi & P. Lanari


This page describes the Import Tool, which can be used to import maps, set the destination, and make basic corrections. Closing the Import Tool will stop the import process (no data will be imported).

Selecting Files

The Select Select button allows a set of map files to be imported. Select compatible files from the pick map file(s) pop-up window. Multiple files can be selected together. If a selected file cannot be imported (e.g. due to an incompatible format), it will be skipped during the import.

File Format

Map files must have the *.txt, *.asc, *.dat or *.csv extension, no header, and a name compatible with the XMapTools default element names for identification. The default lists of compatible element and oxide names are listed below.

Import Table

Selected map files are listed in the main table. Additional maps can be added by pressing the Add Add button.

ColumnDescription
FileContains the file names
Map NameContains the name of the corresponding element in the database
TypeElement or oxide
DataIntensity or wt%
SpecialEDS or WDS(?); in the case of WDS(?) a DTC is automatically selected
DTCDead time correction
OCOrientation correction (do not use for EPMA and LA-ICPMS using the approach of Markmann et al. 2024)
DestinationIn XMapTools, can be: Intensity, Quanti, Merged, Other; drop-down menu, can be edited
ActionKeep or eliminate; drop-down menu, can be edited

Corrections

Settings such as the dwell time can be changed in the Corrections section.

Press Import data Import data to import the selected maps into XMapTools after the corrections have been applied.

  • Intensity maps will be available in the Intensity category
  • Other maps will be available in the Other category

Compatible Element Names

XMapTools supports all standard element symbols from H (1.00797) to Lr (260), including all lanthanides and actinides. Map files should be named with the corresponding element symbol for automatic identification.

Compatible Oxide Names

The following oxides are supported (non-exhaustive list of common oxides):

OxideElementConversion Factor
SiO2Si0.467
TiO2Ti0.600
Al2O3Al0.529
FeOFe0.777
Fe2O3Fe0.699
MnOMn0.774
MgOMg0.603
CaOCa0.715
Na2ONa0.742
K2OK0.830
P2O5P0.436
Cr2O3Cr0.684
NiONi0.786
ZnOZn0.803
ZrO2Zr0.740
BaOBa0.896
SrOSr0.846
H2OH0.112
CO2C0.273
SO3S0.400

Additional oxides are supported including rare earth element oxides (La2O3, Ce2O3, CeO2, Nd2O3, Sm2O3, Eu2O3, Gd2O3, Dy2O3, Er2O3, Yb2O3, Lu2O3, etc.), high field strength element oxides (Nb2O5, Ta2O5, HfO2, ThO2, UO2, U3O8, WO3, etc.) and many more.

',21)])])}const b=e(r,[["render",i]]);export{h as __pageData,b as default}; diff --git a/.vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.lean.js b/.vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.lean.js new file mode 100644 index 0000000..8570c1d --- /dev/null +++ b/.vitepress/dist/assets/doc-import-maps.md.B-cz6IVV.lean.js @@ -0,0 +1 @@ +import{_ as e,o as d,c as a,ae as o}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Import Maps Tool","description":"","frontmatter":{},"headers":[],"relativePath":"doc-import-maps.md","filePath":"doc-import-maps.md"}'),r={name:"doc-import-maps.md"};function i(n,t,l,s,m,p){return d(),a("div",null,[...t[0]||(t[0]=[o("",21)])])}const b=e(r,[["render",i]]);export{h as __pageData,b as default}; diff --git a/.vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.js b/.vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.js new file mode 100644 index 0000000..e64d71b --- /dev/null +++ b/.vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.js @@ -0,0 +1,40 @@ +import{_ as a,o as t,c as n,ae as i}from"./chunks/framework.DIXg7aqb.js";const m=JSON.parse('{"title":"XMapTools documentation for LA-ICP-MS","description":"","frontmatter":{},"headers":[],"relativePath":"doc-laicpms.md","filePath":"doc-laicpms.md"}'),o={name:"doc-laicpms.md"};function s(r,e,l,p,d,c){return t(),n("div",null,[...e[0]||(e[0]=[i(`

XMapTools documentation for LA-ICP-MS

Table of contents

File format

The importer module should be able to read files in the following format. Note that some format require a conversion before to be imported in XMapTools.

Agilent

The date and time are read from the third row.

D:\\Agilent\\ICPMH\\1\\DATA\\Name\\map.b\\map.d
+Intensity Vs Time,CPS
+Acquired      : 2022-01-24 11:11:45 AM using Batch map.b
+Time [Sec],Li7,Na23,Mg25
+0.6196,50.00,82227.81,0.00
+1.1516,50.00,79613.57,0.00
+[...]

Thermo Fisher CSV

The Date and time are read from the first row.

Standards run :02-27-2024 11:16:40 AM;
+Software: [...]
+Configuration: [...]
+S-SQ-N%2FA: [...]
+RF Generator: [...]
+Ion Optics: [...]
+Vacuum: [...]
+Detector: [...]
+Cooling System: [...]
+Power Supply: [...]
+Gas Supply: [...]
+Pulse Counting: [...]
+
+Time,7Li,23Na,24Mg,25Mg, 
+,dwell time=0.01;xcal factor=59347.84333,dwell time=0.001;xcal factor=72480.60121,dwell time=0.01;xcal factor=73115.42471
+0.01326,400.006400102402,89317.9719802497,0
+0.41544,0,67180.0425139374,0 
+0.81759,0,76231.74450329,0
+[...]

Thermo Fisher FIN2

Warning: This file must be converted to CSV format using the 'Tools > Convert FIN2 to CSV' option in the converter.

The Date and time are read from the first row.

Finnigan MAT ELEMENT Raw Data
+Friday, July 04, 2025 11:31:12
+2025_07_04_Name1.FIN
+231
+0
+16,16,16
+CPS
+Time,Li7,B10,B11
+3.236000,340192.875000,585.555542,887.700012
+4.044000,342415.125000,459.555542,934.299988
+[...]

Perkin Elmer

The date and time are read from the file timestamp.

Intensity Vs Time, Counts per Second
+Time in Seconds ,Mg/25,Al/27,P/31,Ca/42
+
+0.,200.0016000128,1000.0400016001,3067.0428905946,31639.99295109
+0.28,200.0016000128,1600.102406554,3267.0935668927,30837.992406645
+[...]

Converter for LA-ICP-MS data

The Converter for LA-ICP-MS data can read LA-ICP-MS mapping data natively and generate intensity and standard maps for XMapTools (Markmann et al. 2024).

Main steps to import LA-ICP-MS data:

  • Import files including a data file from the mass spectrometer containing timestamps and intensity data, and optionally a log file from the laser system
  • Adjust the time shift to synchronise the two data sets
  • Generate a log file (if not available) using the Log Generator module
  • Extract integrations for each measurement
  • Apply a background correction using one of the available functions
  • Select primary standard(s) and fit to generate a primary standard intensity function
  • Select secondary standard(s) and check the quality of standardisation for each element selected as an internal standard
  • Generate maps using the interpolation method described in Markmann et al. (2024) for unknowns and standards, and export map files.

Step 1: Load datafile(s)

The import tools are located at the top of the module. The data format can be selected from the first dropdown menu and the file format (single or multiple) from the second dropdown menu. The data from a measurement session can be contained in a single file or multiple files. If multiple files are selected, it is recommended that you select the last file first and then hold SHIFT while selecting the first file, not vice versa. For the laser, deselect the log file option if no compatible log file is available. In this case, the Log Generator module will appear when the Load Datafiles button is pressed.

Once appropriate options have been selected, press the Load Datafiles button to select: (1) a single data file from the mass spectrometer containing timestamps and intensity data (e.g. Data.csv) or multiple files (see warning above), and (2) if the Log File option is enabled, immediately after a corresponding log file (e.g. Log.csv) from the laser system (tested with RESONETICS only).

Step 2: Adjust time shift

The value of the time shift can be adjusted to synchronise the data file with the log file. In the main figure, the total signal is plotted together with the laser on/off signals given in the log file (vertical red lines). The shift value is automatically adjusted by XMapTools when the data is imported. If necessary, adjust the value until both signals are synchronised.

Step 3: Extract integrations & plot data

Once the value of the time shift is optimised, press the Extract Integrations button to automatically extract all the analyses listed in the log file. They should appear in the Integration tree menu on the left of the window after extraction.

Step 4: Apply background correction

The integrations for fitting a background correction are automatically selected for each measurement. They are listed in a tree menu (integration menu) located on the left and can be plotted by selecting an item under the category Background.

Display/edit integrations for background

To view and edit integrations, select the first measurement in the tree menu. The display is automatically adjusted to zoom in on the selected integration. If you select a different measurement in the tree menu, the integration will be displayed in the centre of the plot. The program automatically excludes a fraction of sweeps at the beginning and at the end of each background measurement (default value is 10 %). This value can be changed manually if required. It is also possible to manually edit the duration of an integration by changing the limit values available as Sweep (min and max).

Background interpolation

Select a method for fitting the background in the BACKGROUND section below the plot. It is recommended to display the signal Raw_Sum and to adjust the display to show the entire background signal. The following functions are available: (1) linear, (2) polynomial, (3) step function, (4) spline. Step function is recommended for background correction. Press the button Apply to apply the background correction. You cannot change the background correction once it has been applied.

Step 5: Select primary standard(s)

The background-corrected (BackCorr) signal is displayed when a background correction has been applied. Corrected data are available from the Plot menu. Select the measurement to be used as the primary standard from the PRIMARY STANDARD dropdown menu. The integration name should match the name of a standard file containing the composition of this standard (e.g. NIST612 or GSD-1g). It is also possible to add custom files using the options available in the lower left panel, but this process must be repeated each time the converter is used. Integrations can be edited using the same strategy as for background integration (see above).

Then select an interpolation method. A spline function is usually the best method to approximate instrument drift during the measurement, especially when reconstructing maps (Markmann et al. 2024). A step function can also be used in some cases, but this can result in sharp transitions between lines in the final map. Press the Apply button to validate and interpolate the primary standard signal. If the standard is not automatically recognised, a window will open with a list of all available standards. It is possible to define additional interpolations to be used as primary standards. After pressing the Apply button it is possible to define a new interpolation for the same material or for a different material by selecting the Yes option. If you do not wish to define any further interpolations to be used as primary standards, select No (Continue).

Step 6: Select and check secondary standard

Select the measurements to be used as the secondary standard using the dropdown menu under SECONDARY STANDARD. Integrations can be edited using the same strategy as for background integration and primary standard (see above). Use the Int. Std dropdown menu to select an element to be used as a reference for calculating the composition of the secondary standard. This choice has no effect at this stage on the map calibration performed in XMapTools (another element can be used). But here it is possible to quickly check the calibration using the secondary standard for several elements used as internal standard.

Step 7: Generate map files

Maps can be generated from raster measurements after background correction, adjustment of the primary reference material(s) and checking of the secondary reference material(s). Use the dropdown menu in MAPS (SCANS) to select the raster measurements to be used to construct the map. Integrations cannot be edited. Press the Apply button to validate and generate the maps. Three buttons become available.

References

Markmann, T.A., Lanari, P., Piccoli, F., Pettke, T., Tamblyn, R., Tedeschi, M., Lueder, M., Kunz, B., Riel, N., and Laughton, J. (2024). Multi-phase quantitative compositional mapping by LA-ICP-MS: analytical approach and data reduction protocol implemented in XMapTools. Chemical Geology, 646, 121895.

For more detailed information on the LA-ICPMS Converter, refer to the embedded documentation available within the program.

Log generator module

When the log generator module is used the time shift should be set to zero.

Calibration

Intensity maps obtained by LA-ICPMS can be calibrated to element/oxide compositions. The following steps can be followed:

  • Import standard maps
  • Calibrate intensity data
  • Generate spider plots

Import standard maps

Only standard maps generated by the Converter for LA-ICPMS data can be imported and used to calibrate LA-ICPMS maps in XMapTools 4.

The button Import (Import Maps for Standards (from file)) is used to open a window in which the file 'MapStandards_Import.mat' must be selected.

Once standard data are imported they become available under the category Standards (Maps) in the Secondary Menu. Select an element to plot a map corresponding to the intensity of the primary standard material.

Calibrate intensity data

As for EPMA, the calibration tool for LA-ICPMS data requires a mask file, so the Calibrate button is only available when a mask file is selected in the Secondary Menu.

The button Calibrate (Open LA-ICP-MS Calibration Tools) opens the calibration assistant.

For more detailed information on the Calibration Assistant, refer to the embedded documentation accessible from the assistant.

Calibration assistant (LA-ICPMS)

The approach implemented in XMapTools 4, described in Markmann et al. (2024), provides a mineral calibration module based on the reference composition of an element (internal standard). In contrast to other programs, the composition of the reference element in the mineral can be variable.

Markmann, T.A., Lanari, P., Piccoli, F., Pettke, T., Tamblyn, R., Tedeschi, M., Lueder, M., Kunz, B., Riel, N., and Laughton, J. (2024). Multi-phase quantitative compositional mapping by LA-ICP-MS: analytical approach and data reduction protocol implemented in XMapTools. Chemical Geology, 646, 121895.

Step-by-step guide

  1. Select the mineral to be calibrated using the drop-down menu Mineral
  2. Select the element to be used as the internal standard from the drop-down menu Internal Standard
  3. Decide whether you want to use a fixed or variable composition using one of the options Fixed composition or Variable composition (see below)

Case 1: Fixed composition

This mode is useful when an element is chemically unzoned in the selected mineral and you want to use it as an internal standard (e.g. SiO₂ in garnet).

You can use the Internal Composition Converter tool to convert the composition of the internal standard into µg/g of element. Enter a value in oxide wt% and the converter will automatically convert this value to µg/g. Note that the value in the Fixed Composition field changes when a new conversion is performed; there is no need to copy the value from one field to the other.

Fixed composition calibration

Figure 1: Calibration Assistant for LA-ICPMS data. Example of internal calibration of phengite using Si as internal standard and a reference composition of SiO2 = 51 wt%. The value of Si = 2.384e+05 µg/g has been automatically set in the "Fixed Composition" field. Two maps are displayed at the bottom: the k-matrix calculated using the internal standard and the calibrated map for Si expressed in µg/g.

Press the Apply Standardisation button to generate the compositional maps available in the Quantity category of the Primary Menu. The maps are expressed in µg/g of elements. You can convert them to wt% of oxides using the internal converter: right-click on a Quanti file and select Convert.

TIP

After converting the maps, the name of the maps can be changed (this is not done by the converter).

Case 2: Variable composition

This mode is optimal for minerals that are zoned in all major elements (e.g. phengite). Average intensities of several ROIs can be extracted from the map and assigned to different compositions.

  1. The Pick a ROI (circle) Circle ROI button activates the mode to draw a ROI with a circle shape. Draw a circle on the map in a region of constant intensity.

  2. Set the average composition in wt% oxide in the Internal Composition Converter tool. Then click on the first and second row of Pt-1 in the table; values are automatically added.

  3. Move the ROI to another area (e.g. with lower intensity/composition values), adjust the value for wt% oxide, and click in both rows of the table to create Pt-2.

Variable composition - Core

Figure 2: Example of internal calibration of phengite using Si as internal standard and a variable reference composition. A value of SiO2 = 52 wt% is assigned to the phengite core (Pt-1).

Variable composition - Rim

Figure 3: Example with a value of SiO2 = 47 wt% assigned to the muscovite rim (Pt-2). Two maps are shown below: the k-matrix calculated using the internal standard with variable composition and the calibrated map for Si expressed in µg/g. Note that compared to Figure 1, Si is not homogeneous throughout the mica.

Press the Apply Standardisation button to generate the compositional maps available in the Quantity category of the Primary Menu. The maps are expressed in µg/g of elements. You can convert them to wt% of oxides using the internal converter: right-click on a Quanti file and select Convert.

TIP

After converting the maps, the name of the maps can be changed (this is not done by the converter).

Generate spider plots

The button Spider (Open Spider Module) opens the module Spider Plot. This button is only available when a quanti file or any map within a quanti file is selected in the primary menu.

For more detailed information on the Spider Module, see the dedicated Spider Module page.

`,82)])])}const u=a(o,[["render",s]]);export{m as __pageData,u as default}; diff --git a/.vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.lean.js b/.vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.lean.js new file mode 100644 index 0000000..048949b --- /dev/null +++ b/.vitepress/dist/assets/doc-laicpms.md.DD1IZLH8.lean.js @@ -0,0 +1 @@ +import{_ as a,o as t,c as n,ae as i}from"./chunks/framework.DIXg7aqb.js";const m=JSON.parse('{"title":"XMapTools documentation for LA-ICP-MS","description":"","frontmatter":{},"headers":[],"relativePath":"doc-laicpms.md","filePath":"doc-laicpms.md"}'),o={name:"doc-laicpms.md"};function s(r,e,l,p,d,c){return t(),n("div",null,[...e[0]||(e[0]=[i("",82)])])}const u=a(o,[["render",s]]);export{m as __pageData,u as default}; diff --git a/.vitepress/dist/assets/doc-options.md.BUc_pidR.js b/.vitepress/dist/assets/doc-options.md.BUc_pidR.js new file mode 100644 index 0000000..f6e092e --- /dev/null +++ b/.vitepress/dist/assets/doc-options.md.BUc_pidR.js @@ -0,0 +1 @@ +import{_ as o,o as a,c as t,ae as r}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"Options","description":"","frontmatter":{},"headers":[],"relativePath":"doc-options.md","filePath":"doc-options.md"}'),i={name:"doc-options.md"};function l(n,e,s,p,h,c){return a(),t("div",null,[...e[0]||(e[0]=[r('

Options

Based on XMapTools 4.5 embedded documentation – Help file version 11.01.2024


This page describes the tools available in the Options section.


Option Tools

Figure 1: Option tools in XMapTools.

Colour Bar & Colour Palette

Use these options to change the colour palette, change the resolution of the colour map (number of colours), change the scale of the colour bar to logarithmic and add a black or white layer at the bottom and/or top of the colour palette.

Colormap

Colormap Set the colour palette to be used for the colour bar throughout XMapTools.

The recommended colour palettes are largely inspired by www.ColorBrewer.org by Cynthia A. Brewer, Geography, Pennsylvania State University. The following abbreviations are used in the drop-down menu: Colourblind friendly (C), Linear (L), Divergent (D) and Print friendly (P).

Default palettes:

  • XMap (default), Spectral, SingleRed, Frenchy, Fruity, Ocean, Forest, Winter 2021, Blues, Reds, B&W, Horizon, Watermelon, Purples

Scientific colour maps by Simon Garnier (viridisLite):

  • VIRIDISLITE plasma, viridis, inferno, magma

Scientific colour maps by Fabio Crameri:

  • SCM Acton, Bam, Bamako, BamO, Batlow, BatlowK, BatlowW, Berlin, Bilbao, Broc, Buda, Bukavu, Cork, CorkO, Davos, Devon, Fes, GRayC, Hawaii, Imola, Lajolla, Lapaz, Lisbon, Nuuk, Oleron, Oslo, Roma, RomaO, Tofino, Tokyo, Turku, Vanimo, Vik

Log scale

Log Check the Log (Use a log colormap) box to set a logarithmic axis for the colour bar. If this option is not selected, a linear scale is used instead.

Colormap resolution

Resolution Sets the number of colours used in the colormap (i.e. the resolution of the colour bar). Colour palettes defined with more colours are resampled. The default value is 256.

Layer options

Layers Adds a black or white layer at the bottom (lower) and/or top (upper) of the colour palette. When selected, the layer can be set to either black or white in the corresponding drop down menu.

Negative values

Negative If selected, negative values are displayed in the plotted map. By default, XMapTools ignores negative values in plots.

Auto Contrast

The Apply Auto Contrast option activates automatic contrast enhancement each time a new map is displayed.

Other Options

Median filter for 3D surface

Median filter Defines the value of the median filter to be applied when plotting a new 3D surface (see main menu Edit > Plot 3D surface). Changing this option will not update plots already generated.

XMapTools Main Window

This is the current resolution of the programme. Please submit this value if you are experiencing display problems with XMapTools.

',33)])])}const d=o(i,[["render",l]]);export{u as __pageData,d as default}; diff --git a/.vitepress/dist/assets/doc-options.md.BUc_pidR.lean.js b/.vitepress/dist/assets/doc-options.md.BUc_pidR.lean.js new file mode 100644 index 0000000..1f3b734 --- /dev/null +++ b/.vitepress/dist/assets/doc-options.md.BUc_pidR.lean.js @@ -0,0 +1 @@ +import{_ as o,o as a,c as t,ae as r}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"Options","description":"","frontmatter":{},"headers":[],"relativePath":"doc-options.md","filePath":"doc-options.md"}'),i={name:"doc-options.md"};function l(n,e,s,p,h,c){return a(),t("div",null,[...e[0]||(e[0]=[r("",33)])])}const d=o(i,[["render",l]]);export{u as __pageData,d as default}; diff --git a/.vitepress/dist/assets/doc-project-import.md.Dwd43zVv.js b/.vitepress/dist/assets/doc-project-import.md.Dwd43zVv.js new file mode 100644 index 0000000..9fd7915 --- /dev/null +++ b/.vitepress/dist/assets/doc-project-import.md.Dwd43zVv.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as i}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Project & Import","description":"","frontmatter":{},"headers":[],"relativePath":"doc-project-import.md","filePath":"doc-project-import.md"}'),s={name:"doc-project-import.md"};function r(n,e,l,c,m,p){return a(),o("div",null,[...e[0]||(e[0]=[i('

Project & Import

Based on XMapTools 4.5 embedded documentation


This page describes the tools available in the Project & Import workspace. Each section is described separately below.


Project & Import Tools

Figure 1: Project & Import tools in XMapTools.

1. Project

The progress of a session can be saved to a project file (*.mat) and restored later. All current data and settings will be saved. Project files are generally compatible with all new versions of XMapTools. Project management tools described in the following are available in the Project & Import workspace or from the File menu.

  • The Open (Open Project) Open button opens and loads an existing project in XMapTools. The first map available in Intensity is automatically selected. The current working directory is automatically changed to the location of the project file.

INFO

XMapTools 4 uses a different strategy for internal data organisation and storage. Projects created with previous versions of XMapTools are not compatible with the new format and a conversion step is required. When a project file created with XMapTools 3 is opened in XMapTools 4, an automatic conversion to the new format is performed. Further explanation can be found here.

  • The Save (Save Project) Save button saves the active project as a MATLAB M-file containing all variables used by XMapTools. If no project has been saved, a new project will be saved.

  • The Save Project As... Save As button saves the active project as a new MATLAB M-file.

  • Field Display the name or the full path of the active project (if saved) depending on the selected option in the dropdown menu (File or Path).

TIP

Remember that the current working directory changes automatically when a new project file is opened. It is also possible to change the working directory using the main menu: XMapTools > Set Working Directory.

2. Data Conversion

Several tools are available to convert raw data into an XMapTools-friendly format and generate mosaics.

Raw data conversion using a converter

  • The Open XMapTools' EPMA converter EPMA Converter button opens the converter for EPMA data. A description on how to convert EPMA maps is available in the EPMA documentation.

Data formats currently supported:

  • EPMA - JEOL (SUN) – JEOL microprobes running on SUN-OS

  • EPMA - JEOL (WIN) – JEOL microprobes running on WINDOWS

  • EPMA - CAMECA – for recent CAMECA microprobes

  • The Open XMapTools' LA-ICP-MS converter LA-ICP-MS Converter button opens the converter for LA-ICPMS data. A detailed description of how to convert LA-ICP-MS data can be found in the LA-ICP-MS documentation.

Building mosaics

XMapTools can combine maps to create mosaics. There are two types of mosaic: grid mosaic, where the maps are stitched together in a grid, and real mosaic, where the maps are merged in the same coordinate system.

Grid mosaic

  • The Generate Mosaic (Grid) Mosaic Grid button allows multiple maps to be stitched together in a grid. Such a mosaic allows maps of individual grains to be combined on a single image, improving the visualisation of possible variations in composition. The original coordinates of each map are not preserved. Spot analyses used as internal standards must have X and Y manually defined after the mosaic has been created using the XMapTools coordinate system. For an alternative option, see the real mosaic option below.

How to create a mosaic using a predefined grid:

  1. From the main menu, set the working directory to a directory containing a folder called Mosaic (case sensitive): XMapTools > Set Working Directory
  2. The Mosaic folder should contain a set of maps with the same elements in the same format (e.g. TXT or CSV, not a combination of the two). Each dataset must be stored in a separate subfolder and already be in the XMapTools format after conversion from the raw data. Note that the subfolder name is used to define the order of the maps in the mosaic. Use folder names such as 01_Map34, 02_Map4, 03_Map1 to define the order before importing
  3. If the name of a folder starts with a minus sign (-), the folder will be skipped and not imported when the mosaic is created
  4. Important: The maps must have the same spatial resolution. If a map has a different spatial resolution, the resolution must first be adjusted manually. XMapTools assumes that the maps have the same spatial resolution and does not check this during mosaic creation
  5. Press the Generate Mosaic (Grid) button
  6. Define the number of columns in the dialogue box
  7. XMapTools creates the mosaic and saves the new maps in the current working directory
image

Figure: This is an example of a mosaic grid for 13 maps, arranged in three columns (map: Pb in counts). This allows the maps to be merged and displayed with the same colour scale.

Real mosaic

  • The Generate Mosaic in Original Coordinate System Mosaic Referenced button merges several maps into a referenced system based on their original coordinates. It also calculates the coordinates of the new map for the Standards.txt file. This means that spot analyses obtained during the same probe session can be provided directly and used to calibrate the mosaic.

How to create a referenced mosaic:

  1. From the main menu, set the working directory to a directory containing a folder called Mosaic (case sensitive)
  2. The Mosaic folder should contain a set of maps with exactly the same elements. Each set must be stored in a separate subfolder. Note that the subfolder name is used to define the order of the maps in the mosaic. Use folder names such as 01_Map34, 02_Map4, 03_Map1 to define the order before importing. Each folder must contain a Standards.txt file containing the map coordinates. If a Classification.txt file exists, it will be skipped
  3. The spatial resolution of each map is automatically adjusted to the settings of the map with the higher spatial resolution. Resampling is done using a linear interpolator for raster data
  4. Press the Generate Mosaic in Original Coordinate System button
  5. XMapTools creates the mosaic, saves the maps to the working directory, creates a file Standards.txt containing only the first block with the map coordinates. The order of the oxides (second block) and the analyses (third block) must be added manually
image

Figure: This is an example of a real mosaic for 3 maps, arranged using the map coordinates (map: Al2O3 in wt%).

3. Importing Maps & Images

This section describes the tools available for importing maps and other images into XMapTools. See also the dedicated Import Maps Tool documentation.

  • The Import (Import Maps) Import button opens the Import Tool to load map data.

Format: Map files must have the extension *.txt, *.asc, *.dat or *.csv, no header and a name compatible with the default element names of XMapTools for identification.

  • The Import CT (Import Image Stack) Import CT button imports slice images obtained after reconstruction of CT data. Compatible image formats are *.jpg and *.png. It is recommended to select the files from the last one to the first one while pressing MAJ. Importing large datasets can take several minutes.

4. Options (Project)

This section describes the display options for the map being viewed. These options are saved for each project.

  • Resolution Set the map resolution corresponding to the pixel size, also known as the step size on EPMA instruments. The default value is 20µm (arbitrary). The resolution value is automatically calculated from the map coordinates defined in Standards.txt when internal standards (spot analyses) are imported.

  • Scale Bar Activate and display the scale bar using the pixel size defined in Resolution. Two options are available from the drop down menu: white (default) or black.

  • The Rotate view by 90° Rotate button can be used to adjust the orientation of the map. The rotation angle is displayed next to the button with possible values: 0 (default orientation), 90, 180 or 270. Note that some of the display features, such as drag-for-zoom, are not available when a rotation is applied.

',41)])])}const g=t(s,[["render",r]]);export{h as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-project-import.md.Dwd43zVv.lean.js b/.vitepress/dist/assets/doc-project-import.md.Dwd43zVv.lean.js new file mode 100644 index 0000000..71cf09c --- /dev/null +++ b/.vitepress/dist/assets/doc-project-import.md.Dwd43zVv.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as i}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Project & Import","description":"","frontmatter":{},"headers":[],"relativePath":"doc-project-import.md","filePath":"doc-project-import.md"}'),s={name:"doc-project-import.md"};function r(n,e,l,c,m,p){return a(),o("div",null,[...e[0]||(e[0]=[i("",41)])])}const g=t(s,[["render",r]]);export{h as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-sampling.md.DpW5G8we.js b/.vitepress/dist/assets/doc-sampling.md.DpW5G8we.js new file mode 100644 index 0000000..3f2f2f4 --- /dev/null +++ b/.vitepress/dist/assets/doc-sampling.md.DpW5G8we.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as i,ae as o}from"./chunks/framework.DIXg7aqb.js";const d=JSON.parse('{"title":"Sampling Tools","description":"","frontmatter":{},"headers":[],"relativePath":"doc-sampling.md","filePath":"doc-sampling.md"}'),n={name:"doc-sampling.md"};function l(r,e,s,p,c,h){return a(),i("div",null,[...e[0]||(e[0]=[o('

Sampling Tools

Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024


This page describes the Sampling Tools. These tools are available at any stage of the data procedure and apply to the map shown in the main figure.

The following sampling functions are available from the Sampling menu or from the Sampling section of the live output display, located below the live histogram:

ToolIconDescription
CircleCircleAverage value and standard deviation of selected pixels
Area (polygon)PolygonAverage value and standard deviation of selected pixels
TransectTransectComposition/intensity changes along a path
StripStripAveraged compositional/intensity changes along a strip

Once a ROI has been selected, the results are displayed in the Sampling Viewer to the right of the main window. Data can be saved using the tools available in the Sampling menu under 'Save Results'. The 'Single Map' option saves data for the map selected from the primary menu, while the 'Multiple Map' option saves all element maps available in the selected data category. Data is automatically saved to an 'Exported-Sampling' folder in the working directory.

Circle

Select Sampling > Circle from the main menu and draw a circle on the map by clicking on a location, holding the mouse down and dragging over an area. A crosshair cursor becomes available when the mouse pointer is over the map and the Sampling option is enabled.

Once you have drawn the circle, click and hold one of the four filled dots inside the circle to change its size. Inside the circle a cross cursor can be used to move the position of the circle.

TIP

If it is not possible to edit or move the ROI, select XMapTools, press Ctrl and try editing the ROI again.

The result of the data extraction is shown by the green bar in the graph at the top right of the main window and the corresponding numbers immediately below. A histogram is also plotted using all the pixel data contained within the ROI.


Circle sampling

Figure 1: Example sampling of an intensity map (Ca) using the circle shape. Note that in this example, the average value of the selected pixels (Nb = 774) is 1028 ± 35.24 (stdev).

Area (Polygon)

Select Sampling > Area (Polygon) from the main menu and draw a polygon on the map by clicking on several points. Click on the first point to close the polygon (a circle cursor appears).

The polygon shape can be edited.


Polygon sampling

Figure 2: Example sampling of an intensity map (Ca) using the polygon shape. Note that in this example, the average value of the selected pixels (Nb = 774) is 999.8 ± 63.9 (stdev), but two plagioclase compositions are visible on the histogram (at 900 and 1030 counts).

Transect

Select Sampling > Transect from the main menu and draw a polygon on the map by clicking on several positions. Right-click to complete the selection. You must select at least two positions to obtain a valid transect.

The resulting profile is shown in the live display in the category sampling (Fig. 3).

The transect position can be edited and the plot will be updated automatically. Note that changing the colour bar boundaries will change the profile as the colours from the colour bar are used to plot the points.


Transect sampling

Figure 3: Example of sampling an intensity map (Ca) using a transect starting at the point located to the left.

Strip

This tool is used to extract the mean and median profile from a rectangular strip, using the composition of each transect. For a given pixel on the central transect, the value is calculated as the mean and median of the pixel compositions perpendicular to the reference transect.

Select Sampling > Strip from the main menu and draw a horizontal rectangle on the map by clicking on the corner position (top left), holding the mouse down and dragging over an area.

To move the rectangle, position the cursor in the centre of the rectangle, left-click, hold and drag, and drop it into the new position.

INFO

The rectangle must be drawn with its extension horizontal. However, it can be rotated later by positioning the cursor on the perimeter of the rectangle, near one of its edges, and then activating the rotation cursor.

Once the rectangle has been created (or edited), the plots in the Live Display Sampling category are updated. Two plots are available:

  • Top: Two curves — in red the median and in blue the mean
  • Bottom: All profiles used to generate the above plot are plotted in grey

Strip sampling

Figure 4: Example sampling of an intensity map (Ca) using a strip from bottom left to top right.


Strip orientation

Figure 5: Orientation of the sampling strip.

',41)])])}const g=t(n,[["render",l]]);export{d as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-sampling.md.DpW5G8we.lean.js b/.vitepress/dist/assets/doc-sampling.md.DpW5G8we.lean.js new file mode 100644 index 0000000..4bb9d83 --- /dev/null +++ b/.vitepress/dist/assets/doc-sampling.md.DpW5G8we.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as i,ae as o}from"./chunks/framework.DIXg7aqb.js";const d=JSON.parse('{"title":"Sampling Tools","description":"","frontmatter":{},"headers":[],"relativePath":"doc-sampling.md","filePath":"doc-sampling.md"}'),n={name:"doc-sampling.md"};function l(r,e,s,p,c,h){return a(),i("div",null,[...e[0]||(e[0]=[o("",41)])])}const g=t(n,[["render",l]]);export{d as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-segment.md.xn7xnz3f.js b/.vitepress/dist/assets/doc-segment.md.xn7xnz3f.js new file mode 100644 index 0000000..a4064b6 --- /dev/null +++ b/.vitepress/dist/assets/doc-segment.md.xn7xnz3f.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as n,ae as i}from"./chunks/framework.DIXg7aqb.js";const d=JSON.parse('{"title":"CT Segmentation","description":"","frontmatter":{},"headers":[],"relativePath":"doc-segment.md","filePath":"doc-segment.md"}'),o={name:"doc-segment.md"};function s(r,e,l,m,g,h){return a(),n("div",null,[...e[0]||(e[0]=[i('

CT Segmentation

Based on XMapTools 4.5 embedded documentation – Help file version 11.01.2024


This page describes the tools available in the Segment section. These tools are optimised for CT data and should not be used with other data types.

The processing of CT data for segmentation is divided into five steps:

  1. Create a segmentation scheme
  2. Setting the segmentation parameters
  3. Testing the segmentation
  4. Applying the segmentation and creating a ROI
  5. Exporting the results

Step 1 – Segmentation Scheme

A segmentation scheme is a set of recipes containing constraints that are applied to perform data segmentation. It is similar to the training sets for classification, although it does not (yet) contain training data.

Segmentation schemes are available in the secondary menu under Segmentation & Corrections in Schemes (Segmentation).

Select a CT image under the CT Data node in the primary menu and select the Schemes (Segmentation) item in the secondary menu.

The Add (Scheme / Group / Range) Add button has various functions depending on the item selected in the secondary menu:

  • Add a Segmentation Schema when the Schemes (Segmentation) node is selected
  • Add a Group Definition when a Segmentation Scheme is selected
  • Select a range of values from the displayed values when a group definition is selected. Adjust the min-max values to select a mineral or group of minerals and press Add. A single range of values can be selected for each group, so any new selection would replace existing data

INFO

Selected regions may overlap, but the algorithm will always consider the group in a sequential order. Pixels may be ignored by the segmentation algorithm if they are out of range.


CT Segmentation

Figure 1: Example of selecting a range of values (here from 128 to 212.6) for garnet. Note that this range has been stored in the segmentation scheme shown in the secondary menu.

Step 2 – Segmentation Parameters

These parameters can be set in the Segment (CT) and Segmentation Parameters & Test sections. There are two main algorithms implemented: Filter GB to remove grain boundaries and Interp GB to remove growth phases and re-interpolate filtered pixels.

Filter Grain Boundaries

Select a CT image from the CT Data node in the primary menu and a segmentation scheme from the secondary menu.

Four algorithms are available and can be selected from a drop-down menu:

  • Local Gradient
  • Local Standard Deviation
  • Local Range
  • Local Entropy

You can set the threshold (range between 0 and 1) above which a grain boundary is detected and the order (for the local range).

The Calculate GB map Calculate button opens a new figure containing two plots (e.g. Fig. 2): the result of the algorithm on the left and the same map with the filtered grain boundaries shown in red on the right. The axes of the two plots are aligned, and zooming in on one plot automatically adjusts the view of the second plot.


Grain boundary filter

Figure 2: Example of a grain boundary filter using the Local Gradient algorithm and a filter threshold of 0.15. Zoom has been used to show a small part of the image.

Interpolate Grain Boundaries

An algorithm based on a median filter is used to re-interpolate the grain boundary (an equivalent was available in XMapTools 3). The order of interpolation is adjustable.

Step 3 – Segmentation Test

You can test the segmentation on the selected image using the Segment Selected Image Segment (small) button available in Segmentation Parameters & Test.

The resulting ROI is available in the ROI category of the primary menu.

Step 4 – Final Segmentation

The Segment All Images Segment All button applies the segmentation to all images available in CT-data. The resulting ROI is available in the ROI category of the primary menu.

Step 5 – Exporting Results

Select a multi-slice ROI (3D ROI) from the primary menu.

The Plot Phase Proportions Plot button generates several plots to examine the spatial distribution of the segmented groups:

  1. Evolution of modes from top (left) to bottom (right)
  2. Correlation matrix between modes across vertical slices
  3. Smooth modal changes (vertical) calculated using the smoothing factor (number of slices to average to calculate a single position)
  4. Correlation matrix between smoothed modes over vertical slices
',38)])])}const c=t(o,[["render",s]]);export{d as __pageData,c as default}; diff --git a/.vitepress/dist/assets/doc-segment.md.xn7xnz3f.lean.js b/.vitepress/dist/assets/doc-segment.md.xn7xnz3f.lean.js new file mode 100644 index 0000000..d7e2cb6 --- /dev/null +++ b/.vitepress/dist/assets/doc-segment.md.xn7xnz3f.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as n,ae as i}from"./chunks/framework.DIXg7aqb.js";const d=JSON.parse('{"title":"CT Segmentation","description":"","frontmatter":{},"headers":[],"relativePath":"doc-segment.md","filePath":"doc-segment.md"}'),o={name:"doc-segment.md"};function s(r,e,l,m,g,h){return a(),n("div",null,[...e[0]||(e[0]=[i("",38)])])}const c=t(o,[["render",s]]);export{d as __pageData,c as default}; diff --git a/.vitepress/dist/assets/doc-spider.md.Cpkd8BPz.js b/.vitepress/dist/assets/doc-spider.md.Cpkd8BPz.js new file mode 100644 index 0000000..ccb828e --- /dev/null +++ b/.vitepress/dist/assets/doc-spider.md.Cpkd8BPz.js @@ -0,0 +1 @@ +import{_ as e,o,c as i,ae as a}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"Spider Module","description":"","frontmatter":{},"headers":[],"relativePath":"doc-spider.md","filePath":"doc-spider.md"}'),l={name:"doc-spider.md"};function s(r,t,n,p,d,c){return o(),i("div",null,[...t[0]||(t[0]=[a('

Spider Module

Based on XMapTools 4.5 embedded documentation – Help file version 03.12.2021


This page describes the Spider Module which can be used to generate spider plots for LA-ICP-MS data.

How to Generate Spider Plots

Step 1: Select the normalisation data from the Normalisation drop-down menu Normalisation

Step 2 (optional): Use the Auto Contrast Auto Contrast button to automatically adjust the colour range.

Step 3: Select pixels to plot using one of the ROI types:

  • Circle Circle
  • ROI ROI
  • Path Path

Step 4 (optional): Activate the Hold on Hold on mode to select multiple regions of interest. Simply repeat Step 3 to add more selections (circle or ROI). It is possible to edit and move any selection and the plot will be updated.

TIP

Uncertainties are plotted on the graph. It is possible to choose to display '1se' (1sd/√N) or '1sd' Uncertainty.

',11)])])}const h=e(l,[["render",s]]);export{g as __pageData,h as default}; diff --git a/.vitepress/dist/assets/doc-spider.md.Cpkd8BPz.lean.js b/.vitepress/dist/assets/doc-spider.md.Cpkd8BPz.lean.js new file mode 100644 index 0000000..725a7dc --- /dev/null +++ b/.vitepress/dist/assets/doc-spider.md.Cpkd8BPz.lean.js @@ -0,0 +1 @@ +import{_ as e,o,c as i,ae as a}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"Spider Module","description":"","frontmatter":{},"headers":[],"relativePath":"doc-spider.md","filePath":"doc-spider.md"}'),l={name:"doc-spider.md"};function s(r,t,n,p,d,c){return o(),i("div",null,[...t[0]||(t[0]=[a("",11)])])}const h=e(l,[["render",s]]);export{g as __pageData,h as default}; diff --git a/.vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.js b/.vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.js new file mode 100644 index 0000000..c2f906b --- /dev/null +++ b/.vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as i}from"./chunks/framework.DIXg7aqb.js";const c=JSON.parse('{"title":"Spot Data","description":"","frontmatter":{},"headers":[],"relativePath":"doc-spot-data.md","filePath":"doc-spot-data.md"}'),n={name:"doc-spot-data.md"};function s(l,e,p,r,d,m){return a(),o("div",null,[...e[0]||(e[0]=[i('

Spot Data

Based on XMapTools 4.5 embedded documentation – Help file version 09.02.2026


This page describes the tools available in the Spot Data workspace. This feature was added in XMapTools 4.5.

Datasets and Adding Spots in XMapTools

In XMapTools, spot data is stored in datasets. A dataset is a collection of spot positions, and each position can be linked to external data.

New datasets can be created by selecting the "Spot Dataset" item in the secondary menu and by clicking on the Add Add button. New datasets are added to the list of datasets in the secondary menu on the left. The name of the dataset is automatically generated using the name provided in the text field (Fig. 1). A dataset can be renamed by double-clicking on its name in the list. To delete a dataset, first select it in the list, then right-click on its name and select Delete.

Spots can be automatically added while creating a dataset if the Randomly populate option is selected. In this case the number of spots and their names is defined in the Nb and Spot Name fields. Spots are automatically distributed using the display image and only the pixels with a value between Cmin and Cmax. This allows users to select one mask/submask or a specific composition of the map.


Dataset tools

Figure 1: Dataset tools for spot data in XMapTools 4.5.

Spot integration

Each spot corresponds to a set of X,Y coordinates, but the compositional data can be extracted from taking the median and MAD values of the surrounding pixels. If the Integrate Pixels option is activated, the compositional data is extracted by integrating the values of the surrounding pixels. The number of pixels to be integrated is defined in the Nb x Nb fields corresponding to the number of pixels along X and Y directions. These two numbers must be odd to ensure that the central pixel is included in the integration.


Spot tools

Figure 2: Spot tools for spot data in XMapTools 4.5.

Adding and editing spots

Additional spots can be added by pressing the Add Spot Add Spot button and by immediately clicking on the map to define the spot position. The spots can be deleted by selecting them in the secondary menu and then by right-clicking on their name and selecting Delete. The position of the spots can be edited by selecting their name in the list and dragging them on the map. The coordinates of the spots are automatically updated.

In the example reported in Figure 3 below, 10 spots were automatically added to the newly created dataset 'Garnet'. The default names were used for the spots (Spot_#). The compositional data of the spots are extracted by integrating the values of the surrounding pixels in a 5x5 grid (Nb = 25). Note that the spot coordinates are available in a table on the right of the interface when the dataset garnet is selected (Fig. 3).


Spot data interface

Figure 3: Spot data interface in XMapTools 4.5.

If a spot is selected in the secondary menu, the names, coordinates and value of each pixel are listed in the table on the right of the interface. The compositional data of the spot is extracted by taking the median and MAD values of the surrounding pixels. You can delete pixels by selecting them in the table and by pressing the Delete button. You can reset to the original n×n grid of pixels by pressing the Reset button.


Spot data pixel view

Figure 4: Spot data pixel details in XMapTools 4.5.

Importing External Data for Spots

External data for the spots can be imported and visualised in XMapTools. The following procedure is recommended:

  1. Select a Spot dataset in the secondary menu. The list of spots will be displayed in the table on the right (Fig. 3)
  2. Use the Copy Copy button to copy the content of the table to the clipboard
  3. Paste the content of the clipboard in a spreadsheet software (e.g., Excel) and add the compositional data for each spot in new columns after the name
  4. Save the Excel file as a CSV file

Import the spot external data by using the Import Import button available in the Spot External Data section (Fig. 5). The number of columns in the CSV file (except the name column) corresponds to the number of variables that will be imported and visualised in XMapTools (e.g. one variable in Fig. 5). You can use the display button to open a table containing the spot names and external values. The external data can be visualised on the map by selecting the variable to be displayed in the Add to plot dropdown menu in the Plot external data section.


External data tools

Figure 5: Spot External Data tools in XMapTools 4.5.

Two options Apply a colour gradient and Apply spot size gradient can be selected in the Plot external data section (e.g. colour gradient for Fig. 6).


External data plotted

Figure 6: Example of (a) spot data in XMapTools, (b) external data for δ18O saved in a CSV file, (c) external spot data (δ18O) plotted onto the map.

Exporting Spot Data

Spot data can be exported using the Export module available in the Add-on section. Open the module and select the Export Spot Data mode. Select your data source (e.g. Quanti in Fig. 7) and press the Generate & Save button.


Export module for Spot Data

Figure 7: Export module for Spot Data in XMapTools 4.5.

',42)])])}const g=t(n,[["render",s]]);export{c as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.lean.js b/.vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.lean.js new file mode 100644 index 0000000..825e7c3 --- /dev/null +++ b/.vitepress/dist/assets/doc-spot-data.md.BaQTjTtE.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ae as i}from"./chunks/framework.DIXg7aqb.js";const c=JSON.parse('{"title":"Spot Data","description":"","frontmatter":{},"headers":[],"relativePath":"doc-spot-data.md","filePath":"doc-spot-data.md"}'),n={name:"doc-spot-data.md"};function s(l,e,p,r,d,m){return a(),o("div",null,[...e[0]||(e[0]=[i("",42)])])}const g=t(n,[["render",s]]);export{c as __pageData,g as default}; diff --git a/.vitepress/dist/assets/doc-visualization.md.CwED1vHD.js b/.vitepress/dist/assets/doc-visualization.md.CwED1vHD.js new file mode 100644 index 0000000..22320cb --- /dev/null +++ b/.vitepress/dist/assets/doc-visualization.md.CwED1vHD.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as t,ae as o}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Data Visualization Tools","description":"","frontmatter":{},"headers":[],"relativePath":"doc-visualization.md","filePath":"doc-visualization.md"}'),l={name:"doc-visualization.md"};function n(s,e,r,p,d,m){return i(),t("div",null,[...e[0]||(e[0]=[o('

Data Visualization Tools

Based on XMapTools 4.5 embedded documentation – Help file version 09.05.2025


This page describes the Data Visualization module, which can be used to display map data in histograms, binary plots, ternary plots and as an RGB composite image.

The Data Visualization module has access to the data selected in the primary menu of XMapTools when it is opened. To change the type of data, close the module and re-open it after selecting different data.

Visualization Modes

The type of plot to be generated can be selected in the Plot section. The following modes are available:

  • Histogram Histogram – requires a single variable X; a histogram is generated and plotted in the main figure (Fig. 1)
  • Binary Binary plot – requires two variables X and Y; a binary plot is generated and plotted in the main figure, as well as a density image. Two histograms, one for each dimension (not shown if low resource mode is active), are plotted as additional figures (Fig. 2)
  • RGB RGB – requires three variables X, Y and Z; an RGB composite image is generated and plotted in the main figure, a legend is plotted in an additional figure (Fig. 3)
  • Ternary Ternary plot – requires three variables X, Y and Z; a ternary plot is generated and plotted in the main plot, three histograms and a density plot (not shown if low resource mode is active) are plotted as additional plots (Fig. 4)

By default, XMapTools generates a binary diagram when the module is opened if at least two variables (maps) are available.


Histogram mode

Figure 1: Data Visualization Module, histogram mode.


Binary mode

Figure 2: Data Visualization Module, binary mode.


RGB mode

Figure 3: Data Visualization Module, RGB mode.


Ternary mode

Figure 4: Data Visualization Module, ternary mode.

Variable Definition

On the left hand side of the Plot section you can select the maps to be displayed. These can be elements, groups of elements or any other variable (e.g. structural formula).

Variable definition

Figure 5: Variable definition.

Whatever the plot type, variables are selected in Variable Definitions, either using the drop-down menus listing all the available maps, or using any combination of them.

Standard MATLAB code format is used to combine existing maps and create new variables to plot. Use an arithmetic operation defined by the rules of linear algebra or array arithmetic. The operation can include spaces between variables, digits, and operators. Array operators (with the dot character ".") must be used when maps are divided or multiplied by each other.

TIP

Element-wise multiplication or division should use .* or ./ to multiply or divide the two arrays element by element.

Variable definition using code

Figure 6: Variable definition using code.

Data Sampling (Explore Section)

A basic pixel identification tool is only available for binary and ternary maps. Use it to create polygons that identify the location of points on the map.

When a polygon is drawn, the pixel locations of all points within the region of interest are displayed on the map at the bottom right. The shape can be edited and the plot updated accordingly. An identical polygon is plotted on the density map when low resource mode is off.

The Polygon Polygon button activates a cross cursor and you can select vertices of a polygon around any region of interest in the main plot. Right-click to close the polygon.

The selection can be saved as a mask file.


Polygon selection

Figure 7: Data Visualization Module — Identify pixels using a polygonal selection in a binary plot.

Options

Masks

Masks Selecting the Masks check box will colour the data displayed in the binary or ternary plots according to the mask file displayed in the drop down menu.


Masked data

Figure 8: Intensity data coloured according to minerals retrieved from the selected mask file.

Low Resource Mode

This mode is optimal for computers with limited memory and is enabled by default when the Data Visualization module is opened. When this mode is activated, only 40% of the data is plotted (random selection).

Plot "Bulk Value" (Average)

The "Bulk Value" (Average) is calculated from the data plotted in the figure. There is no density correction applied, so deviations from the true bulk composition are expected if phases have different densities.

Statistics and Plotting Report

Statistics are reported in the Statistics section and are updated each time the plot is changed:

  • Bulk Value (average of plotted pixels) in binary & ternary plots
  • Bulk Value (std of plotted pixels) in binary & ternary plots
  • Bulk Value (relative fraction of X, Y and Z) in ternary plots
  • Correlation coefficient between X and Y in binary plots

The plotting report section can contain the following information:

  • Plot type and Low Resource Mode status
  • Size of dataset: number of pixels and fraction displayed
  • Various plotting times that can be reported to the developers in case of problems with the module
',53)])])}const u=a(l,[["render",n]]);export{h as __pageData,u as default}; diff --git a/.vitepress/dist/assets/doc-visualization.md.CwED1vHD.lean.js b/.vitepress/dist/assets/doc-visualization.md.CwED1vHD.lean.js new file mode 100644 index 0000000..7232fdd --- /dev/null +++ b/.vitepress/dist/assets/doc-visualization.md.CwED1vHD.lean.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as t,ae as o}from"./chunks/framework.DIXg7aqb.js";const h=JSON.parse('{"title":"Data Visualization Tools","description":"","frontmatter":{},"headers":[],"relativePath":"doc-visualization.md","filePath":"doc-visualization.md"}'),l={name:"doc-visualization.md"};function n(s,e,r,p,d,m){return i(),t("div",null,[...e[0]||(e[0]=[o("",53)])])}const u=a(l,[["render",n]]);export{h as __pageData,u as default}; diff --git a/.vitepress/dist/assets/getting-started-2.md.CEzqsAHA.js b/.vitepress/dist/assets/getting-started-2.md.CEzqsAHA.js new file mode 100644 index 0000000..2607d60 --- /dev/null +++ b/.vitepress/dist/assets/getting-started-2.md.CEzqsAHA.js @@ -0,0 +1 @@ +import{_ as t,o,c as a,ae as r}from"./chunks/framework.DIXg7aqb.js";const m=JSON.parse('{"title":"Opening XMapTools for the First Time","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started-2.md","filePath":"getting-started-2.md"}'),i={name:"getting-started-2.md"};function s(n,e,l,h,d,p){return o(),a("div",null,[...e[0]||(e[0]=[r('

Opening XMapTools for the First Time

  1. Open the XMapTools app. Note: it may take up to a minute to start the first time while MATLAB libraries are loaded. XMapTools will start slightly faster on subsequent launches (until you restart your computer).

  2. A dialogue box opens — select your working directory and press Open. A working directory contains the data for a specific project. XMapTools automatically generates files during use that are stored there. Although you can change the working directory later, you must select one at startup. A log file is also automatically created in the selected working directory.

  3. The current working directory is displayed in the top bar of the main window.

  4. You are now ready to go! You can start converting raw data or importing maps.

What's Next?

  • Working with EPMA data? Try this tutorial.
  • Working with LA-ICP-MS data? Read this paper.

Common Questions

Why do I have to choose a working directory?

XMapTools creates many files during data processing and it is better to store these files together with the data they belong to.

It is strongly recommended to have a folder for each project that contains only the map and standard files needed by XMapTools. Raw data should be stored in a separate folder.

Why does it take so long to start XMapTools?

All the MATLAB libraries need to be loaded, which takes some time. The second time you run XMapTools it will be faster if you haven't restarted your computer. Use this time to think about your project and perhaps grab a cup of tea or coffee.

I am lost, where can I get some help?

You can find articles on this website and help files in the program. We also have tutorial videos. Do not hesitate to click on the help button available in each section to access a description of the main steps. If you feel that something is missing or unclear, or if you find an error, do not hesitate to contact us on Discord or via the developer repository on GitHub.

',13)])])}const u=t(i,[["render",s]]);export{m as __pageData,u as default}; diff --git a/.vitepress/dist/assets/getting-started-2.md.CEzqsAHA.lean.js b/.vitepress/dist/assets/getting-started-2.md.CEzqsAHA.lean.js new file mode 100644 index 0000000..7fe8d09 --- /dev/null +++ b/.vitepress/dist/assets/getting-started-2.md.CEzqsAHA.lean.js @@ -0,0 +1 @@ +import{_ as t,o,c as a,ae as r}from"./chunks/framework.DIXg7aqb.js";const m=JSON.parse('{"title":"Opening XMapTools for the First Time","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started-2.md","filePath":"getting-started-2.md"}'),i={name:"getting-started-2.md"};function s(n,e,l,h,d,p){return o(),a("div",null,[...e[0]||(e[0]=[r("",13)])])}const u=t(i,[["render",s]]);export{m as __pageData,u as default}; diff --git a/.vitepress/dist/assets/getting-started.md.BLdsliy4.js b/.vitepress/dist/assets/getting-started.md.BLdsliy4.js new file mode 100644 index 0000000..9cc77b4 --- /dev/null +++ b/.vitepress/dist/assets/getting-started.md.BLdsliy4.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as o,ae as n}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md"}'),r={name:"getting-started.md"};function i(s,t,d,l,h,p){return a(),o("div",null,[...t[0]||(t[0]=[n('

Getting Started

Welcome to the XMapTools documentation! Whether you are a new or returning user, this guide will help you get XMapTools 4.5 up and running.

The installation and update procedures have changed in XMapTools 4.5. Most binaries now require MATLAB Runtime 25.1, which is installed automatically by the XMapTools installer. Older Runtime versions (e.g. v99 or v912) are no longer needed and can be safely deleted after upgrading.

XMapTools is distributed via shell scripts for macOS and Windows that automate the installation, update, download, extraction, and configuration of the program.

Compatibility

Before installing, make sure your system meets the requirements below:

VersionProcessorOperating SystemRuntime
macOSApple Silicon (M1, M2, M3, M4, …)macOS Sequoia (15), Sonoma (14), or Ventura (13)R2025a (25.1)
macOS IntelIntelmacOS Sequoia (15), Sonoma (14), or Ventura (13)R2020b (v99)
Windowsx86-64Windows 10 or Windows 11R2025a (25.1)

Note: The macOS version is not compatible with Intel processors, and the macOS Intel version is not stable with Apple Silicon processors. The installer auto-detects your architecture.

Next step

Ready to install? Head over to the Installation & Update Guide for step-by-step instructions.

Is XMapTools already installed? If so, go straight here.

',11)])])}const g=e(r,[["render",i]]);export{u as __pageData,g as default}; diff --git a/.vitepress/dist/assets/getting-started.md.BLdsliy4.lean.js b/.vitepress/dist/assets/getting-started.md.BLdsliy4.lean.js new file mode 100644 index 0000000..e0753d0 --- /dev/null +++ b/.vitepress/dist/assets/getting-started.md.BLdsliy4.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as o,ae as n}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md"}'),r={name:"getting-started.md"};function i(s,t,d,l,h,p){return a(),o("div",null,[...t[0]||(t[0]=[n("",11)])])}const g=e(r,[["render",i]]);export{u as __pageData,g as default}; diff --git a/.vitepress/dist/assets/index.md.Doinpoc4.js b/.vitepress/dist/assets/index.md.Doinpoc4.js new file mode 100644 index 0000000..59aefaf --- /dev/null +++ b/.vitepress/dist/assets/index.md.Doinpoc4.js @@ -0,0 +1 @@ +import{_ as o,o as i,c as e,j as a,a as n}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"XMapTools 4.5","text":"Compositional mapping","tagline":"Free and versatile software solution for quantitative chemical maps analysis.","actions":[{"theme":"brand","text":"Installation","link":"/installation_guide"},{"theme":"alt","text":"Official website","link":"https://xmaptools.ch"},{"theme":"alt","text":"Developer repository","link":"https://github.com/xmaptools/XMapTools_Developers"}],"image":{"src":"/assets/Logo_2025_square_512.png","alt":"XMapTools"}},"features":[{"icon":"📚","title":"Documentation","details":"Powerful tools for quantitative compositional mapping and analysis","link":"/getting-started"},{"icon":"💻","title":"Tutorials","details":"Video tutorials and demonstrations of XMapTools functionality","link":"/tutorials"},{"icon":"🚀","title":"Bingo-Antidote","details":"Step-by-step tutorial for using Bingo-Antidote in XMapTools","link":"/bingo-antidote"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"};function l(r,t,p,d,m,u){return i(),e("div",null,[...t[0]||(t[0]=[a("h2",{id:"what-is-xmaptools",tabindex:"-1"},[n("What is XMapTools? "),a("a",{class:"header-anchor",href:"#what-is-xmaptools","aria-label":'Permalink to "What is XMapTools?"'},"​")],-1),a("p",null,"XMapTools is an advanced analysis software for quantitative chemical analysis of solids in 1D, 2D and 3D.",-1),a("p",null,"It provides numerical tools and packages implemented in a guided and versatile environment that allows you to explore and visualise data in your own way.",-1),a("p",null,"For example, XMapTools includes a wide range of data processing options including routines for classification, segmentation, calibration and visualisation via single and multi-channel maps or via binary, ternary and spider diagrams.",-1),a("br",null,null,-1),a("img",{src:"https://raw.githubusercontent.com/xmaptools/Documentation_Images/main/Logo/XMapTools_Transition.jpg",alt:"XMapTools Logo",style:{"max-width":"60%",height:"auto",display:"block",margin:"0 auto"}},null,-1),a("br",null,null,-1),a("img",{src:"https://raw.githubusercontent.com/xmaptools/Documentation_Images/main/Logo/Logo_2025_square_512.png",alt:"XMapTools Logo",style:{"max-width":"10%",height:"auto",display:"block",margin:"0 auto"}},null,-1)])])}const h=o(s,[["render",l]]);export{g as __pageData,h as default}; diff --git a/.vitepress/dist/assets/index.md.Doinpoc4.lean.js b/.vitepress/dist/assets/index.md.Doinpoc4.lean.js new file mode 100644 index 0000000..59aefaf --- /dev/null +++ b/.vitepress/dist/assets/index.md.Doinpoc4.lean.js @@ -0,0 +1 @@ +import{_ as o,o as i,c as e,j as a,a as n}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"XMapTools 4.5","text":"Compositional mapping","tagline":"Free and versatile software solution for quantitative chemical maps analysis.","actions":[{"theme":"brand","text":"Installation","link":"/installation_guide"},{"theme":"alt","text":"Official website","link":"https://xmaptools.ch"},{"theme":"alt","text":"Developer repository","link":"https://github.com/xmaptools/XMapTools_Developers"}],"image":{"src":"/assets/Logo_2025_square_512.png","alt":"XMapTools"}},"features":[{"icon":"📚","title":"Documentation","details":"Powerful tools for quantitative compositional mapping and analysis","link":"/getting-started"},{"icon":"💻","title":"Tutorials","details":"Video tutorials and demonstrations of XMapTools functionality","link":"/tutorials"},{"icon":"🚀","title":"Bingo-Antidote","details":"Step-by-step tutorial for using Bingo-Antidote in XMapTools","link":"/bingo-antidote"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"};function l(r,t,p,d,m,u){return i(),e("div",null,[...t[0]||(t[0]=[a("h2",{id:"what-is-xmaptools",tabindex:"-1"},[n("What is XMapTools? "),a("a",{class:"header-anchor",href:"#what-is-xmaptools","aria-label":'Permalink to "What is XMapTools?"'},"​")],-1),a("p",null,"XMapTools is an advanced analysis software for quantitative chemical analysis of solids in 1D, 2D and 3D.",-1),a("p",null,"It provides numerical tools and packages implemented in a guided and versatile environment that allows you to explore and visualise data in your own way.",-1),a("p",null,"For example, XMapTools includes a wide range of data processing options including routines for classification, segmentation, calibration and visualisation via single and multi-channel maps or via binary, ternary and spider diagrams.",-1),a("br",null,null,-1),a("img",{src:"https://raw.githubusercontent.com/xmaptools/Documentation_Images/main/Logo/XMapTools_Transition.jpg",alt:"XMapTools Logo",style:{"max-width":"60%",height:"auto",display:"block",margin:"0 auto"}},null,-1),a("br",null,null,-1),a("img",{src:"https://raw.githubusercontent.com/xmaptools/Documentation_Images/main/Logo/Logo_2025_square_512.png",alt:"XMapTools Logo",style:{"max-width":"10%",height:"auto",display:"block",margin:"0 auto"}},null,-1)])])}const h=o(s,[["render",l]]);export{g as __pageData,h as default}; diff --git a/.vitepress/dist/assets/installation_guide.md.DyFiVWdL.js b/.vitepress/dist/assets/installation_guide.md.DyFiVWdL.js new file mode 100644 index 0000000..4b4961e --- /dev/null +++ b/.vitepress/dist/assets/installation_guide.md.DyFiVWdL.js @@ -0,0 +1,10 @@ +import{_ as a,o as i,c as t,ae as e}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"XMapTools Installation & Update Guide","description":"","frontmatter":{},"headers":[],"relativePath":"installation_guide.md","filePath":"installation_guide.md"}'),n={name:"installation_guide.md"};function l(o,s,r,h,p,d){return i(),t("div",null,[...s[0]||(s[0]=[e(`

XMapTools Installation & Update Guide

This guide covers how to install and update XMapTools 4.5 and future releases on macOS and Windows using the official bootstrap scripts. These scripts automate downloading, extracting, and configuring XMapTools and the required MATLAB Runtime.

Table of Contents

Prerequisites

RequirementmacOSWindows
OSmacOS (Intel or Apple Silicon)Windows 10/11
Admin rightsYes (script prompts for sudo password)Yes (run PowerShell as Administrator)
Internet connectionRequiredRequired
ShellTerminal (zsh or bash)PowerShell

Note: The MATLAB Runtime is installed automatically during a full installation. You do not need a MATLAB licence.

Compatibility: XMapTools 4.5 requires MATLAB Runtime 25.1. Older versions of the Runtime (e.g. v99, or v912) can be deleted after updating to XMapTools 4.5.

Security: The code executed by the install command is available at https://xmaptools.ch/install.sh (macOS) and https://xmaptools.ch/install.ps1 (Windows). Do not use any other domain name. The xmaptools.ch domain is official and the only domain used to distribute XMapTools. If you are behind a firewall that blocks access, ask your system administrator to allow HTTPS traffic to this domain.


macOS

All macOS commands are run in the Terminal app. The script is fetched directly from the XMapTools server and executed locally.

Full Installation (macOS)

A full installation downloads XMapTools and the MATLAB Runtime. Use this when installing XMapTools for the first time or when you need to reinstall the runtime.

Auto-detect architecture (recommended):

bash
curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install

The script automatically detects whether your Mac uses Apple Silicon or Intel and downloads the correct version.

Specify architecture manually:

bash
# Apple Silicon (M1, M2, M3, M4, …)
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install AppleSilicon
+
+# Intel
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install Intel

What happens during installation:

  1. Any previous XMapTools installation in /Applications/XMapTools is removed (you may be prompted for your administrator password).
  2. The installer archive is downloaded and extracted to a temporary directory.
  3. macOS Gatekeeper quarantine flags are cleared so the app can launch.
  4. The graphical installer opens — follow the steps below to complete the setup.
  5. A terminal command xmaptools is created so you can launch the app from any terminal window.

Graphical installer steps (macOS):

  1. Enter your password to allow the MATLAB Runtime Installer to make changes.
  2. Press Next.
  3. Leave the default installation folder /Applications/XMapTools to allow automatic updates in the future and press Next.
  4. Leave the default installation folder for the Runtime /Applications/MATLAB/MATLAB_Runtime and press Next.
  5. Click Begin Install to install XMapTools and download the Runtime (~2 GB).
  6. Press Close when the installation is complete.
  7. You can now start XMapTools using XMapTools.app.

Update Only (macOS)

An update replaces the XMapTools application bundle without reinstalling the MATLAB Runtime. This is faster than a full installation and preserves your runtime setup.

Prerequisite: XMapTools must already be installed in /Applications/XMapTools.

Auto-detect architecture (recommended):

bash
curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --update

Specify architecture manually:

bash
# Apple Silicon
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --update AppleSilicon
+
+# Intel
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --update Intel

What happens during an update:

  1. The script verifies that XMapTools is already installed.
  2. The latest application archive is downloaded and extracted.
  3. The previous app bundle (XMapTools.app) is replaced with the new version.
  4. Gatekeeper quarantine flags are cleared.
  5. Correct file permissions are set on user configuration files.
  6. Temporary files are cleaned up.

Show Information (macOS)

To display the available versions, remote file timestamps, detected MATLAB Runtime installations, and usage instructions:

bash
curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --info

Architecture Selection (macOS)

OptionWhen to use
AppleSiliconMacs with M1, M2, M3, M4, or later Apple chips (native performance)
IntelMacs with Intel processors
(omitted)The script auto-detects the architecture — Apple Silicon is selected on arm64 hardware

Tip: If you are unsure which architecture your Mac uses, click > About This Mac. If the Chip field says "Apple M…", use AppleSilicon. If it says "Intel", use Intel.

Terminal Command (macOS)

After installation or update, the script creates a command-line launcher at /usr/local/bin/xmaptools. You can start XMapTools from any terminal by typing:

bash
xmaptools

The script also updates your shell configuration file (.zshrc, .bash_profile, or .profile) to ensure /usr/local/bin is on your PATH.


Windows

All Windows commands are run in PowerShell. You should run PowerShell as Administrator (right-click → Run as Administrator).

Full Installation (Windows)

A full installation downloads XMapTools and the MATLAB Runtime.

powershell
iex "& { $(irm https://xmaptools.ch/install.ps1) } --install"

What happens during installation:

  1. Any previous XMapTools installation in C:\\Program Files\\XMapTools is removed.
  2. The installer archive is downloaded and extracted to a temporary directory.
  3. The graphical installer (XMapToolsInstaller_Windows.exe) is launched — follow the on-screen instructions to complete the setup.

Update Only (Windows)

An update replaces the XMapTools executable and splash screen without reinstalling the MATLAB Runtime.

Prerequisite: XMapTools must already be installed in C:\\Program Files\\XMapTools.

powershell
iex "& { $(irm https://xmaptools.ch/install.ps1) } --update"

What happens during an update:

  1. The script verifies that XMapTools is already installed.
  2. The latest application archive is downloaded and extracted.
  3. XMapTools.exe (and splash.png if present) are copied into the existing installation directory.
  4. Temporary files are cleaned up.

Show Information (Windows)

To display the available version, remote file timestamps, detected MATLAB Runtime installations, and usage instructions:

powershell
iex "& { $(irm https://xmaptools.ch/install.ps1) } --info"

Troubleshooting

"XMapTools does not appear to be installed"

This error occurs when running --update without a prior installation. Run a full installation first:

  • macOS: curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install
  • Windows: iex "& { $(irm https://xmaptools.ch/install.ps1) } --install"

"Invalid MCR version" after updating

If XMapTools reports an invalid MATLAB Runtime version after an update, the runtime may have changed between versions. Perform a full reinstallation using --install to get the matching runtime.

MATLAB Runtime not found

The scripts check for the MATLAB Runtime in:

  • macOS: /Applications/MATLAB/MATLAB_Runtime
  • Windows: C:\\Program Files\\MATLAB\\MATLAB Runtime

If the runtime is missing, a full installation (--install) is required.

Supported MATLAB Runtime versions

Runtime versionPlatform
v99 (R2020b)macOS Intel
R2025amacOS Apple Silicon (native), Windows

macOS: "app is damaged" or Gatekeeper warning

The installation script automatically clears Gatekeeper quarantine flags. If you still see a warning, run manually:

bash
sudo xattr -cr /Applications/XMapTools/application/XMapTools.app

Windows: script execution policy

If PowerShell refuses to run the script, you may need to adjust the execution policy for the current session:

powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Then re-run the installation or update command.

Windows: permission denied

Make sure you are running PowerShell as Administrator. Right-click the PowerShell icon and select Run as Administrator.

XMapTools suddenly not opening (Windows)

If XMapTools was working previously and suddenly stops opening, this can be caused by a corrupted MATLAB Runtime installation or a Windows update that modified system paths. Try the following:

  1. Perform a full reinstallation using the --install flag
  2. If the issue persists, uninstall the MATLAB Runtime (see Delete Old Runtime Libraries) and reinstall

Unfreeze XMapTools in case of error

If XMapTools becomes unresponsive during an operation, a dialog box may appear with OK and Cancel buttons. Click Cancel to cancel the current operation and unfreeze XMapTools. Clicking OK may restart the operation and keep XMapTools frozen.

Uninstalling XMapTools (Windows)

To fully uninstall XMapTools on Windows:

  1. Open Settings → Apps & Features (or Control Panel → Programs and Features)
  2. Find XMapTools in the list and click Uninstall
  3. Optionally, uninstall the MATLAB Runtime from the same list if no other MATLAB-based applications require it

Quick Reference

ActionmacOSWindows
Installcurl -fsSL https://xmaptools.ch/install.sh | bash -s -- --installiex "& { $(irm https://xmaptools.ch/install.ps1) } --install"
Updatecurl -fsSL https://xmaptools.ch/install.sh | bash -s -- --updateiex "& { $(irm https://xmaptools.ch/install.ps1) } --update"
Infocurl -fsSL https://xmaptools.ch/install.sh | bash -s -- --infoiex "& { $(irm https://xmaptools.ch/install.ps1) } --info"
Install dir/Applications/XMapToolsC:\\Program Files\\XMapTools
Runtime dir/Applications/MATLAB/MATLAB_RuntimeC:\\Program Files\\MATLAB\\MATLAB Runtime

Delete Old Runtime Libraries

After upgrading to XMapTools 4.5, older MATLAB Runtime versions (v99, v912) are no longer needed and can be safely removed to free disk space.

macOS:

bash
sudo rm -rf /Applications/MATLAB/MATLAB_Runtime/v99
+sudo rm -rf /Applications/MATLAB/MATLAB_Runtime/v912

Windows:

Use Settings → Apps & Features (or Add or Remove Programs) to uninstall the older MATLAB Runtime versions (R2020b / v912).

`,99)])])}const k=a(n,[["render",l]]);export{u as __pageData,k as default}; diff --git a/.vitepress/dist/assets/installation_guide.md.DyFiVWdL.lean.js b/.vitepress/dist/assets/installation_guide.md.DyFiVWdL.lean.js new file mode 100644 index 0000000..bbb8de8 --- /dev/null +++ b/.vitepress/dist/assets/installation_guide.md.DyFiVWdL.lean.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as t,ae as e}from"./chunks/framework.DIXg7aqb.js";const u=JSON.parse('{"title":"XMapTools Installation & Update Guide","description":"","frontmatter":{},"headers":[],"relativePath":"installation_guide.md","filePath":"installation_guide.md"}'),n={name:"installation_guide.md"};function l(o,s,r,h,p,d){return i(),t("div",null,[...s[0]||(s[0]=[e("",99)])])}const k=a(n,[["render",l]]);export{u as __pageData,k as default}; diff --git a/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b6b603d596933f026dfecf98550bbe4d0876276b GIT binary patch literal 43112 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 literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..def40a4f658cf8a9f7029c98931f5c9ff5a00910 GIT binary patch literal 31300 zcmV(?K-a%_Pew8T0RR910D43K6951J0MIl50C~{>1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3c16ca40b2a8f454c34cfa91996ec99ae2e4aa0 GIT binary patch literal 32564 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 b6r&82^QQ+ZZ1?Zre-i}g|91_a`#}W>14e7b literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2210a899edaeb06655f7bc50e7f94444da140b94 GIT binary patch literal 120840 zcmV)DK*7IvPew8T0RR910oVut6951J1HHHa0oRcL1ONa400000000000000000000 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̍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�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

l(X_I+GK&R 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 H00000K--!s literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..36d67487dcf5fbe3dc6d0a6b01cf4d29dc997765 GIT binary patch literal 16272 zcmV;BKX1TyPew8T0RR9106&lb6951J0Hgo_06!c61ONa400000000000000000000 z0000Qf?^woR2(WlNLE2oiv~YURzXsMCE=$kZP2AkJ^U{nMHwYsLGphn z;KmUA!0KX1l(C7g+Ovt$#$yTSR_jHKiCWO14R(YAiZBF9k_2uHMQ6KJl<7SFUn??K zROfmv1Je_=5pjvAqzzAANaZTehgNO8Zdg)$h5~8LOUW#y7ot?goxsa7>Bgt83~BZi4~N@ z31%Hev7gtOzHGR z0WbUiH&^~-bAV{e9?11om^zW%oiG)SgsLKWm!2x!Fs5-z3 zh}Pb;c~{hTMMVtG9UBBDWi1cUw*F^f*?N@>AJ?DrM)qF-d{tCHj5Rb3V5l~<{r z)mLfNHxdtNxBoxFIT9%w8cRaIR|gVd2nZ%H^Aoem)XMFg9uSSy;4OnVB_;y&Zmn}6 zP6}5jQ^`g(c*DVf0zBZvfYc{|lfX&f^b9~Ah!a}96u|Ock*|a_rQyE!@!lJr3jgCR z>rDHl;n{C^?|&_w-Q@4m_9%4~O}YFz1?tb>O!#-1M=3?2#9e5&p{w8$ClChfTfRoC zr>p#1dbsD?*%6qU9o&ZIL{}mJ=uxLWiVhzC-7XptP1P>k%y!b;1 z6b>OuHiTSt5E^WS&|*J?eghDOT!V1KJcOs-LO=i-5&(Mv4gs7D_zK`>fd4@u0YhA{ z&T>Css0L*7GM0b=NCLO7KLsQ(h5!38`Q_flJoxz^TX@T4s?*=PA9nwKn4u!frAEFdb*cY}o0G*~}QLqru+!_$=r27@D;q5MK)?r=ja_sxh8%7(@!Tp4*-6 zi?~e0VZm{DB14;$f0xAGUOiddjAjHFSsxezrc z_v6^yhc8JRg^jiqPPMTxoMKZX#~>l6RVXCZE@q%DkilA@fDbqT4JIH6>d!tLfUYBe zV<7R&EeIs*dXF3iewI1!L<}sk5U z2KyR`Bd-j4$R*N$cH-S}k#S+>L;B*(zwJ2V9A#&v+=Eh;zdLe94=}$J^@R5U`7d4Q ze++kjy?;alrWZj5BtDrtdyC4U=fC)my@)JaAHTXvuKZ&b1=c!& z9KPa-Jo?PkP0xeLZ%Zr_yEE{UzE>WPq2Dg+iPgn^u2D(69M?ZrJ@2Kl^&&Zp-*59} zj0rD~#>bg*R56G9Qxz{voL8{zKn^`ci&0|*{rj&gRt~z@rBV0oj%V45RYRNp-KNU? zPTbgUrI-_IxV!bd?!%-0?u!k=1kavJo>4Fv+x^30lWDEA?z&uT8!~t|F~$0d$km(g zUH@O6eQ>zD(VXt1p?uN3A{AET@tqpIdj#5f`SXcz5FtQ6c*gj4Fn_* z`RB4!*eiM$&Yv9E_|CwiaBiDmjBn^g=-+VZYql2b{S;*%vP{r;TDXQXw;`?JiqkA) ztXxCjt_!$}J5QM0Tq(T&8b%Kx}SDfvS zrMY=JAt5+CFy?@Lj5u+2&1JXTR%K(fcxe6}Gh)b5wW}_=?gm0FLxy29$pT-rJ4W4g zkA-$-v?Qo;$xRz1h&`L4{kzU#Yyub0hztI8g^b~0b;SYJ^ih($917b;%Mr}_HZraV7aI@SL?Mq{YKC|F2Zqziq%{tt{iV0B?sLc~ou* zVhEi0BN;wZIG=iij7>3}+>02CNdirqOFs0|-*^728=vNk0u z=YXjuYioVip}N2OOOy@B9zKI#g>^WFwxfNCtxZ$Q- zZoA{Id+v)CBUYSv2@)kK_0(3+?DpJoFNAw##A^?{#XuSvvgF8PQn1Hfe`~i-hfZCL znJ{I>oCQl(#*CXVY05*>W~5jzRho1eGG*DM4iy@7q)_z1JMaDGx}`_2KKp6VWXOoM zPg*)&I_Z>`P8+bwYHM(P*47nq#i%!ioN?7PK79G{=i!^aAtm!%xk(l!+b?wk0CSDrEyMTD@GV0lmFzrPT4YuGP}Sv#T3v z1#G9TwWWjqtbV=p0;%bGqx3Pl`J4G7Bm^I1dyD*H*sL>v8jU;0Vt(6XoPBT8dY$He zhsgCVrtmZ4HTxuY2GL*poNtGej2yj0qG`;>bZLRj#_4oiW-d#nwox=PQ&UlrVaizT z_u*#ANk6XG(hN>VE`&_}9PoGF;8a>MwPa!_LOfPJDf?78=HFWd%J1wQ^$Hzf<-58awSx>M@ zHqnZHvNY)wTEh5v0JVFWpd?xmo?bUW#U{0JjIl{=f{kUaAI}sg5Yiy8Q?#EGsv*wo0u@7;)njq6lTniHpU>2AcH04I_gWil~}tjTT)qR1|dF8mPW>ERZti$xD*&j zX6W|yH?l`q9EWaQyJZe*zHB8Jk*9vkumoEEQc6YilsgEKrzIk(WmF+ldM2-e@bXm+ zx5tR1hSFTg;&wNA)&R*GxISUA)S#%(`Qg-1T6~fkrB@?MBk9*SiH?;@Pt!I}hSv6p zdp%TE*!XL1qcwhiR@?dhRr$+#YCfKecICRZ=e@rxFPFE@bN;*MPY;}cbibkR_VYb` zdlo0}{^+c8)r{(M!}1$ zYbI(dB+gwZQbRShlN&RbIu_!UTAwymVh0ab;u31z`K&2)_+TaW z;kCABH|IJJXJk5`YtGBgYRYpyo0ZY~@S1WVT)t^EA?b3%@QLG*%gYN^hlDgKg~;P4 zhZ_cR_~AiCZ>oENR%eIb>&BhYOGgL)PuR9irB=i&?QHaa-O(|A@9wF+ER!zd)8reS z`7g)Inzo3P|Cj8%eu~^}VgkNOTjsWv;rsh5u!XH#vv&*P2>ZWid`D7UpXGs#mLq1H z1XV;pRP2^`uOU&T$54GjR76!!P_0$t$s)@Gt(K%}2Wh8OZAlyV27@oNA)`&DsPTP9PtFoZi zF{P9h+;67nl^dLzRU75yRNz-wn+-mD_MV9R2N=p$ZNo%m_JQ!oq0PxBLx|eud_kqN zTMe|<6=k)>i6@qMc{`{-xU93Iz?lMjet!2z2{Ko|W5--w33BvEA!)3sK9z8F4mV@0 zvo}g<$Xt7_FxP3QEg>Cl2PWf7-vp<74Jw$Lp*4g-5*}Z|N@? z$VyE=(7AYcu`}*KdS2;3e~aLG;i2=_%`^MGKJPlX{^^;V;yA*^qfBm{wyfW}Qi2bw zx>*)ZP8Mh;GQIcX16q0)6ZF9R*@MkSo57&Q{z|l#HSa2~La0@sA>R1{eMjXjZpzBr z-AmC3-)wMv=NA+icCKUCFiurkc3;w$FQEKiNV!T`>*#8lS?i_h73O<*3G&zdteyPW zi-Ll60zi@EOiM`(7ylyzI>d?LsmuADES zvSxO5lj@RTh;)$4pWF^4$$U=UhlG7g4c|k2n)%9+C(r*-?6yLsb)$Yq*AM zxQ1))H45hx28E)GQJO|m8h?+OTA~FE6+h==Ocn74#)|kU=8AY}1d13t5&#*r8gC@G zax1rTE4OlM)tXLgZ86xf)`ySH);bhMin3I5Yqwoww$d({U^h=SP`nFC;G(@?9H1uh zkbW$sozd=PstWRJg&qr^>|97jHvVemG20bhNp^+jc9Y$|IMA)x722u%=*fwSc0kCg zewP8yWXQkO$UYcnA-y)wy~J%5UnQMl`I3~vOXjDbR2Nc^izv#*=Q>slfWmO{(n!12yGVn zCH#K6PkD@1mAiGPT1T{6ac`J+e@%~h7Y13?voheQ3~8=Lb{~$_hlh@J)*%+Ua#W9|4 zg#(qyiW;V?I=B0xoi?}^8`sK!IT>=6M?97_Wyrd+WTL-9o2ecNzaRGy8owba?vzF6 z*<)M2TE3K3dsPN1k)gI!Bgtb~Gm)&DBqa8MPFLfPGJyq*05B^84BMb{vU(#tUYNIN-&p$-#I{=sUFX8Xzi3zlZhN#@6zbZfi)F z&M2Vz2L-?i5I&N1jSEnE2}MfWe>R?rey7=5;+(Filr<$pixx5F7pg~$I=QM}FC^9* z{2yL*&;M|-*kbEiDJt3CtJ$FzHLsUDD`blu0c9mVzm!3-6%-T{6tqJFh&uIu^4O%sb6wXsEQ~kC}@Y03n8b)5L5Eto2R7Xqr&k& zERdWKYp4rC_Kl6_F4;t(*u*APK`*`l`zn6jri<5#nCGyW7H`wgL`|s}>>Nkp>dYc` z1btRf>2k9Kf*U55!5^H!ahTzOl0{*B_bEt!g5}iJ#y*oT4G|dIRDnJ#p6F9D41N%Z zxEI=!bs0Cku(LNHUN?@Q$DPP8lGNmIw+aci*jM9iR!KY{@qnb)+^~*r2_7jK_{O=#(Um}D>eg+2Flp4nLQG`+Hk+id z)hRQzrP1^}Yh~A*mRs{k{!o+)ucVdkaS0iJ=sL21HE@qwvqy@B}@wSd~rY@N1&b&=IOov=3&uhAQcW5nGV zZ%fs)gM(Vm3Pu5AFQ<~zJqvh7+^N}8WHh-{CP}77X0J@OtU%6HE=O*sT!q}Qyu2V= z@UDEbe2IKFlPpXSzRcXrEN6}@D2i+fk&4-hO^QbqTNPg^NlFZoT%~BG3Z=i5s+1O3 zs8laqz)E1%vWi$WtS8EdOeeD`$EY-@6st6;JXggOT1AdR<$qn=XdU&fw5qGVx>9O< zna-1h)TTFAWA)Tt)^D%xjlCb+>8H?k$K6w#8MAEONuJu_Qdh*T(b}U`rgdNIn@&NO ztb0^DQ@c_7uy(Wd3muZ)pwHEb(ka*N(XH2gs)rf1Mw?!=UZvh%y>h*74r0=q7IKm} zb(|xdE1Zv!(vgXg59?>^-_!qOPBGYEu+N~@V8K9axXO}cdDgJV@R?Dt(GBC}(ak3Q zCXY?i%p%Oa%@3P5Tl83TSbR-nB)(<2%hC&A7XYtb!LyG_Xd4E)D=ZD4l`9YHD|JtA;~4Xkf% zOnS9_ob?>iJ%qTySUtY7mm3w5kh{bc-2(TBYiL0TZ&aKHynJvH3Kg#=-0fi}ZfQ;U z5#rW?1@6G83dZs*%d?xh;-S+lKsZhzX&OH;{#b=PkN{?~W}7wZhp~@)V4oL)$POdF zh5ehMBOU603S90^U0XXWaE=j3IE7yg8mE(l^E&0KeCdds4#*)?wYLP-$gcCp>UM&A z(LMtPu@=m!bSvE>cZIj^0ynVxqq(6kHL#8SD)?q%tbC5*=(URQVfG_yc^3O2)%Xc^B3U_`0iv0m z{b6brSUZ{4p=Toy-cw^8x>SQbG1OtNh9wBbXOFxtU+@-qJA}3mfsr{ZsC^Dkc85KJ zHH^vPkm*AOlMMwEN>d*xf`nhZLb5@jxnZZTEri&xi^{Hkx~_HIncItfGyK7I1a#!FbwI>&L|VuaawArr zr-tnHH^XL)c3M7v$kziI;iTRaZAy6jS-OUQt|i7%pVsURPG5ui^_y10zH_jp6A+`< zmyUz%Fd7?C6QM8(P4taIW4n-pD%$}FuUawNhb*IRoEo_8kzV8OMSIW;Fq~O=I5JKyUHN5jJTf9!6UW$@je8p@`DR(Ar zD%r+O(O@5>pLW=UJG2V(7WlfM7`V6-5a)uE9mdqa-d5yU8`uzyn!Go4$BFeX)?xeQ zhmj#y;D(3V#LoFBTE^rCY!Br6-XU;gE~tn2y=^JPAnL6UgdIlt%!}OrwaKp@7ebB0 zLk>rVi0rr5zBGjhju5PJP8{0WqAA+(y+9{Gu*`3AWA05>ArJ%@^;s+e8Z^$0%-(;_ zAH?T@H7-Ovf)QoV6#irWO#gg5V=Oz`B-*Is2D8C15l7F3?%@tD)hiGV9-E-xwMjK2JNglD2d~O2I2`y@Ed@6v0pMW! z|7e`9m^W~9UZlw6la=9FO(b60_sR%3K4)kDc*?jf&cB9%o8uyws_WN2`2BD))Qq#e z=E?aMc3Bs$!xBULZwiqsBTx3(Aza1D*Vv@VX(7MTHN0{ex%m@EU3>$+8bTGhG1U~h znbCcCC4#hQ;pA{Z)m+wAC^#J4n4my7IN>P}^%1+v#DuE5tbL_GIJhuEfpFl_ih{#E zjf+;l5DyG&C&A=vsRD+u;N9ElFfhKd8Q5$#*)+ujB}s6~*E5QWtX6RE`Y<{TiFScV zN8(nKM(qS&2a|~;L28aYU_`3)+Fgb9c%SL^pj@ z9_TL%tH|!lqwOfO{8sL**gq!zxFa4*vv@sYrH`%}st^6#Dj!|-y#D(y%_)t8>i(y% zpYp)HpJ^2!PCuK5>(2}zbvuO_3%%xu=@Z7p1#b+jm5VR?MPuQ(w%*k@%M~DA$S3&{ zKEV45`h$g}ts|?}HPM3bT-MMXU;$-Sl{eHX%)4eN)We4O#em-=AVpaqKMMv>vYl!& zXum+V)|&j%BL_@Rs$)UG^y=J|D`BPFLy7h9n$A>Dm8%7e5cl|A5Z|TXJQS3R&J$;1ypU7 zJ}VV9;HeX^2Lqj25HSgeo&%Y=91L1d=g#;c5eKrg?`*1RH_I@N!V_ zB$#cHrB)Qg*>DNZGu2k45!Ikwl7fm{9!X9~iJ7^h8f3AHnYEtVbvh}=WCA9< z*@>oTbI~ZkpQm?`A>8M|6G*tqW;Am>o?sCq{xAw@GL>f|FXq)e%d=5tCXHZlj^{X8 zM3g2t<@-$tlp+t-CgX620Jxf_({XI#^|KBhI#=fT*@YbJ`o=%tRF+h*4?B~Dg^Z5MO)y7wN++>{b_R!8Qax@}&VO*S(xuye(Mm+b_taRUdoFkHJ zjqv_S3OP`dzRdKrR~{1gb7USuZbz$4i;c}NYHxyjG^L{+3?%^{0^uT}4@)-rnjPvJ zP9cRSIgu*F;S2b;lPj(kpyX>%cH?~TaB?s`D8K$4muRY)b4?OB)f}WDSAfZfy8`c<9ypbI;@IhAu1xd6k2i%OCI_k7r_^1~!y8-tvFE1RpQl;&@W$S!i{K zDm+tTvuQ?_)f)zWyi_mh^(xNOYPw*!O`br6u@IV|FXsl-PE}e9d{Fy5VZ3jSONL-# z_$r*m6X|CpB4C+t`pf&;@R*nKsS(C_+pR_?Upe1RfzsIgvL_>l1uRqRZskRZ8X>iI zs|E347bTst&7KAumw>rg-LNAfQOI(BH#Cht`9*b!sr!x4$_FMTR4;O&sngDm$kGPc zYS}IfWE)q|6uRN)pX{_C6<+SPc%5Hk0rfS*k;clA=XgEr`OK;DoVpzpa*H)a6&a|E z8fBz)cBE2cNtkNU$V93fEbuC%DYM<^!$7f=Q9Z=%WrtdNr3b7zBZDID;iwEkt6=c8 z$bnUE!%Oi4zrr^E)q3oXj9-=!gB>=vIL$`RZV2smM+6$5QqxiCv{aqJBDpz^bG)Bd za&CM7wR6+`mDC27!E>2BMXXQ)x_ve2p9}^oZNcRQNnQt4-JKVf|J?b9wYQ?4z^<4c-Z3&G#;)42iyr0wSG~1Dw(o8`cJU8h?iYI! z@;xK6#~9^6{`V#yS~%D};y=B)iol|bLc}SVcsfO2X%8^WN(1MlN}Cd9Tm+$A4zhr# z16|qO4up@cm2er-kEFoC+-?p`j@>T9?u$7#o?{3^(+snUd-~WIzI8CdyV4qEmwSuq^HAFCQD5A zz?hOL!8SIpL?g(nJEH<6QqKg7?*tn;-nHb9OiT_5^LDoNGIf4tkQtN2;Q|VqzA*0T z%xv4^+|EHZSn6!~dXXJ&C}i94tZhYGI5LXvnMX(}Nwv0&6jjrWNYkD%LPa4EWmUJF zmG*lRMqMaI(OD5nL+tz+smZtm>%B%4&2umbozWg{W%)-@=p>(trqNFS-t^rE85dF+ zX5787qT^ru_Wgkd?UY^A^=3UP@fHeQ85sWwqRtgVNR#>ajh>|kir3LYLVyHh@_ z>E$WZnl)omI?Uv>nfd-z#VttqGvb)}jR$Y3n~`wyDvktY5VZLU@dt9bIFn8?1FtzM zl}*A&fIpZ1Y`Vuv)f3(61X`eN596_H;cD(9sz++Y?9H~935Z^}lc$U0v05`*WOej` z+0n=n`vHkfL^p8$i6Z`$p78=K`n}_*vxYgp!f8Ivfd2EGZ&I$0<7l>q2A@G|CT@}g z`cS;X1iTnNL3gh{o3i`;bF?Sj;geA34K(1xN7!TR^wGZAmrlmJ+ZY+2UEY~QuL^Bb zzKZzR#kh>0Jiv^2{fVQs%F9jCg5dM!)HkUo-Zx1s)`FyJiAW!odQ@Y3d==X~#LK?+ zHmdP$d;jehX0lJL6*Wgjf>tz}EnH8g_p+Y}5gkdV-x6SyUZo=ra%`k%O(QaaCa3Gz zPM-Vr|}a99{)tnK6ay{F z|CR3SlV)G{pGWXEMm0E;ritrc|L2o4u+Is6$s;1JpsVoVg9uq(>Im&@naBkKHSFo( zriRLRBtO_|%&R*E>QNzt`m*vtoVKC!G(wIWNEW z_WEN#!=L>{Au>o4MYZAXf1dgqK)yR15I(L7Fl#Jrp>vgyBVD{m@9O53Hp#@#d9cT} zcXYlvbA1Fed)x2oe4$G-8Pc^yt1@ILt2kPe-Fh>7v{H7Yt2)y3Xd^a<_5UfH>A}Ggwyp{MO4+g>_%;%M~{=M;&GmUESXTL zja!+VpJRB@#G&ii$N-}PvP-1m26o##E%D!)lxuxk=*y7+>zrUSos>{ZZ-mcQIkO#d z)cL;FFQC*8O{gqgwNgv~HAqbl)ZVa?T?0iX18_pP@UTRJe7OSe#0NHw*yg`l2kA)p z|@1EPggU$a2BsY1Gi9J?$ax)jPM-NI$?gZVA4v%D) z%oX-;2tkI8^_oL3=0i^{KSO1A68pSm9tKWVCa~LBPO8aV<`uoopU6u2PVe%TVt(Y2 zT#vX*nmw-^dvx!zGf0|M`7cvi3^O3Hs8%p2P-5dPevxtk-^h3KEqqg9<8RK~oZoZz zda1eJA8x#vvEKH%4jtRKy?EcQ2^#6|p_9S417)Xn?k_o8QvX1N(WiA#=qaHPLq)#` z^G3Uw1~1}@S;usN9Mu06BASx%R2qEj-qv!P4F%PZP&r`V_hP(Ku`aZdEGxS{dV4eL zeA~BiE#scf$_~lsoKzE=@9xh&Y~3hg&sF_b_UtIVo(8I2r14Mps}=kxJ!7Kg|J~>p zH9ztY!FvMk}FvDDwum$*mGLC z>kCQbOwfxc^9*yd9HEZ2`4;k-m-C=T+2w89hzRg<*9HQCLMK9^A2Y2OE}jf8E7;UkW!`O5%LHv#LZxI=5)cMor#3U zFnUEfg@&T}kj$C^MlBAb)1C3u9M%d4BLT)e?&rNC#E{GxqwCC3+UT6cItu2* z>_ny@NDy#=yOt@DiTQjU@@EiIJ|ijC8|_IYKzYqFn-bd5Y{W8MuPq#)kh#}QRh6|| z1EI{pMTrJ0WgH{~f(t5b^Itu|(9s%T5fEAzmC#9f)plI1&mI%l_#TxoZhU{pjV;)dSy`8q6|*;OF6UW%Zl#qaZMnrl8xwC8yQ|3x!C$U?RCs;xd`F zDf$4*)nPUt>N~r?qM~Xffp(ipiydz|z>M=q*NcdNX`FPx?2t%XRp2G~R!z~fil{06 z4=rrt;57VaiYVq7#}SnqGe042f3*%o~1-09F6^l?8rllmM``JZ_aF7_32sFPm9 zHP|q{B_FKC*-5z{R~^fSng33j>w1kwf`W&YCuxVVbAY9hq(#S5#HD5#S%`e;*cmBM zT%zfCygUxhv0NjMP>ap$PV7T18HH})LLjl=OSuL!G6<@5Z1Z1jfpr+>4xueFn<6>I?7(d+YwyLyDSjl=V73%cj<5C|@&uD+bvpTf*c z`~j+4NpA8iMo+}%Xh!mDuaz=~BIL~N_&oAy57T+*Y+mY_`5%|t`JlHo&l5zA>P_cg z&VCLI=}7g)-yPtWVdU4u ze;fb)BLL(o_+{GF@_*B#Di824zu@Hiqik{e4k|s-XlNCo#W{Rv>|X9Sel@N`^So_m zF4}!spZY6rOjP9;FzHxe*qr6SP3Z~@v0Mqwli4uuVqFV9E|TkrAOgKY^LCW_8yXcT zsthy0cB&LxIBw{eXlO-FD){lCvkBhQzd8YW5hechhWBx`#@^bXuO2xjiwnjZ9Pd4L zAQY299cPz@*3`jq##PRCc*aaSuC|lsCXWeJC)y~x9``!1tC%{>9M+5`{dM-QHiT{O zXlERYO*_vXqd;+ch`%$f6ocen7l{}0Dn8Cv@o_#D&CYBPsC+8y*CXj{ga1fUR6ZU{ zfk?DK7LrC^s~)( z<;<-%muvjTv^fwx7-8Rcr7vxR3oc~NW9HMShHMX35JIu=XG1FVC4=1?I?~m{bmD`MohpgL769K{TEEhWCaG_> zJ=EKv8tP-gZuZnKf2fD_UOYYx+wURK1>Du$=it>VOy86~eH{z?AwV}S#}m1ev4K&9 zLrvCFI+)(qi;yJfVpEL=`r>3Z8*IAftW6PD2J|!_=8Yt1ObVseq#NbTsm6%5RH}=L zGJ=>Gty-}qCCH{dD9t|eQ2InzT?l&^wU@)9f-LUv#wd#UO@^{KN zDh;u&uI>MX^-KGLXrg^m+K0|i+-Ube$xF7S#f z!jnZCf5tyIY}meI%fG2N?mAG>e15R>^r5rB7P;<>c>_P66=B~`88_WlcUD)qgO+k> zY*>QQ!p(@vC~p|7bx@Wd`Q$_n$CoK0bRg!lR;w+cN+LwjuzZw^!+JLotlpe%b=XjEf~O+|tuc-T?HL2piL*XVOC z$F4G)XNjZB<2qySR+$fpOu6vhvb6JQO7##wtu2W+IrZ&gmuXD$bG>Nnl=i|PYr1Uu z#L|i(KU8K>wQrzqc$Q~^fu{FhLucE_<^ds+l3>%(CixB>OTW6b7r8_2il~TNxkF96 z?hDt8jRGl?OJAO!n%x-R3}Jx~Uqd|yZCrKRvDoenTD%7sDxM3-d^ov^S5jOrIH z%=)o-O>mixieKDne^pMq6Wtu-+KL}+l6t_7om6~!Jta1aTJrwGFmD%D|u3s zQZU$@nCNLdKpS^{Yqkx$OtD5E;W)1AWO$@r&L;R4L$YV|27@j_XOO?zXdxzRwR)bl za6w6d56xr}PRJ_QC;x$b!J(8r2i8d&2qgtn%Vw}rA_0=U1Uy^upkkG51z%RMvJZl) zgrGxmK#}YPKMEbn+0$WmZJU3EsN(+>sf%NjDQK0&Fd^%KRY)+LJs0+^^`PSMiUSqQ zOBFg`Sh%R#lrWr@e6U#SYARKCtLcFr&YrRC1a1BWUt^P=#HpuU&I=A_-2reBMhYZc zk>EjKd){5KHXVDRGbaxgA2@OTGF)`&%uIz_tugIC8Znq1bjWm)lf=B}N2Q1h8}wC$ zBWzk$`i2K_?hu3W7^#WRjf^G@p<2hF=cMD~eRpOukbV zB4Oml-GH3^Vzs-#v|}+bDS1SH!D`zMrlv(%Vot_#6fX^C8(zvwhnU}$;*9eKVeQNM z+=uTzuVk=#gr5h`oTL){L)>U`tM$Z#epE{$>uaTyI`-jEJ?dCRo z(Wbq$KtPG-r8%27$*4JR|z`xYkS_tkfM(dZb&Zo(MU21GKCXj@U z{p+8%M($u2$amLZP}L>~ zNqrgn@0KJ+#wSMwy1Eio&QnSG1v$CSP|ffB%ncs!S8L!D({dpcpR zo%aeLzh#oP6|RP>HbR`h{b7iCQb2}PuIJ(G2eDCN2`rOLeK^wuXWX)#TVj}W6Ny+X zQ^-c@nR2;Q?96hEE6wbZY(ip^B8M1B28mO%-%wu;HA|S6Jmt!7eKoxCn&Wcu=a0MT z4u-+IV(P>M@@=x4o|ss=yErlL!>n9HVd-paWK~_3j)_`J`C32JtafU)JOueXsOjOz z)Fcb4%%o13mptX}|4<#0&{<&2^F|D&X~Mf^>%=t<-mwU?9sPtHv3Wv>YAv=SzY#2q zj$M9I{Q@>Y0XK4VW9+avBgp~&p?u=H-kGuk2WT-5u+bn3#bxuo$oCEQ(y|_nrgQ{C zir($wqQo|u?!UW+=?_s7rE)(R!Qxo%cLXqeQV3vTEs$rYuW{JIeGp(^81&89i1I^> zxU3OZHCQRPXJ8^B6tydN3-<7ZBv&L6@D)mhLZwlq@Pc9+^YZy~)r;!GhmIXRdaStk zaNG@O)*SaB)fDF+Ce5j%>UYUz-8r~0tJSmkjrQsPd1JMZrI*L%wC~)?`&YR>8Pr&` z%FbRI7!woh=xEH4RlJd$;&!0}3NuL~!BhblgT9Kxk~vAr`&-pt-_9b%avm0tm!Bfb zBFzS4YEG6Ns#&WgT+Q2H{Rj$D>~5L5hO}fx-YV{LdzSkVv86!wPj>I#vu(?cojbPg z*s*Q%wjJfNE?aOH{()#6RG&RpQCV40b14wSOuAbnzW^s(==qG0jrUDZ$j5f*+f0UW z1Gq&Ar8v(qtrJYjKTloq%_Od;{zJnLG?yt=N(7qNSc};h855ClaL|JuxNsK`?_2PS z_l{k-aPgw^@4CaSOjf&*eKqYWaA{N&f+j&@OCO(RIY~ks3?S@;CMp9^7@rOL;Xm)N z5n`*jc!{RIL{eI#PXdMzFqiyLH3R}CtK$F-f@!W1lbCA6(nbt67aVEmh(OHo;=*=) zf+@u-l^4q{mNRiktRSp3f2j4&|Ge?Tg5Q7Y@L-wfxjVgApI3kuwvyqYC!GDmVlp#% zaFL7j@^v?-v*`FpQm)ZxvBQ<@HS z%`rjS&8Xlkx|!3RgRprm%fn#8+FWo#ceufDkMaU_+Ks6|UJ7@FH(WdkNhPe$M~_an z(SXra15hc9N9e^slAzz9U)r27bp!fND}L4TFx?33orzWcv%9x%2DG6*f*Zkwz2wEY zUt(@#s^b*;DolQ4QFIdf#_ITNd|N$k;RrPxtQEeMS+*u$rE)wcT*X~oXI}3QlX2P#%B23CU=G2JEaX;G60j z#MTaladW-0m@FY|3ZEi&OiY@|37JEB;LK?;PH;JWYMIrknKwWL@8)A%2 zECY`Rs3!=+`1vRBA=r!UpzIY{1xyyn-5PtWm;l!e-koYQ?p%zPjmhOI)niAFAy@>u z2WRmDA3E0pL{0dZl8~}kV^BjnHh{YU`>tNVmq!rpUb7K8StMIT(p24~77Qd)v}-G1 zAgB=-C=AjJjBq85xSK)3&cqfHsDyqoL;+SfFchI{wV?!A?gk6p_!`PEQ(&lIkvc;a zs)h_TI2mbB=XY~NBebCjU9Sx`2Kj1eAyW-Q8Q}=Ea$*?9Fp{ES0zK(|WlW(a3!G%iQY=S`B+2ryS+QWr4x4`$2_LJQ z40#gdU=zrZX}tt-9>2Y#e0h>(%8~1w4-`XP9V1qn1isBmQajCdwhc2DFV>2SmGY)# zs^zwt?2~10Aj0)QgZQ13O&3A&To{$?FB<#Mo?dt7J4D zBq4Q_E~(c$gQ@8jbXFu|JccJly}q@5X8w3hSYACVKJItEbT7B7<#$E;>zXH1ns{GN z_ZbTlW{flTtmR?za)1Bhr23kU-Z}O8!Jp_YzUFgf5nII}gIvj{=qppYPG`WFAJq7z G0RR9|PM1{x literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 b/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bed1e85e8b20cb3903206a6cace251c52bdd8c3 GIT binary patch literal 29920 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 literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a8d1e2b5ef22b97801781478d477685dd6119f3 GIT binary patch literal 110160 zcmV)XK&`)bPew8T0RR910j^L06951J1C_)80j=5q1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 b/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..07d3c53aef14e7e3aec6b11684395f2833e0b3d5 GIT binary patch literal 67792 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 IZR%D40KZ@npa1{> literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..57bdc22ae88555c6217307e4064a642f83d642b1 GIT binary patch literal 14072 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 literal 0 HcmV?d00001 diff --git a/.vitepress/dist/assets/style.BwkHieaG.css b/.vitepress/dist/assets/style.BwkHieaG.css new file mode 100644 index 0000000..7d3c00e --- /dev/null +++ b/.vitepress/dist/assets/style.BwkHieaG.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Documentation/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: #3c3c43;--vp-c-text-2: #67676c;--vp-c-text-3: #929295}.dark{--vp-c-text-1: #dfdfd6;--vp-c-text-2: #98989f;--vp-c-text-3: #6a6a71}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:lang(es),:lang(pt){--vp-code-copy-copied-text-content: "Copiado"}:lang(fa){--vp-code-copy-copied-text-content: "کپی شد"}:lang(ko){--vp-code-copy-copied-text-content: "복사됨"}:lang(ru){--vp-code-copy-copied-text-content: "Скопировано"}:lang(zh){--vp-code-copy-copied-text-content: "已复制"}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-54a304ca]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-6ff51ddd]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-6ff51ddd]{padding:96px 32px 168px}}.code[data-v-6ff51ddd]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-6ff51ddd]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-6ff51ddd]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-6ff51ddd]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-6ff51ddd]{padding-top:20px}.link[data-v-6ff51ddd]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-6ff51ddd]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-53c99d69]{position:relative;z-index:1}.nested[data-v-53c99d69]{padding-right:16px;padding-left:16px}.outline-link[data-v-53c99d69]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-53c99d69]:hover,.outline-link.active[data-v-53c99d69]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-53c99d69]{padding-left:13px}.VPDocAsideOutline[data-v-f610f197]{display:none}.VPDocAsideOutline.has-outline[data-v-f610f197]{display:block}.content[data-v-f610f197]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-f610f197]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-f610f197]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-1bb0c8a8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-1bb0c8a8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-1bcd8184]{margin-top:64px}.edit-info[data-v-1bcd8184]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-1bcd8184]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-1bcd8184]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-1bcd8184]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-1bcd8184]{margin-right:8px}.prev-next[data-v-1bcd8184]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-1bcd8184]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-1bcd8184]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-1bcd8184]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-1bcd8184]{margin-left:auto;text-align:right}.desc[data-v-1bcd8184]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-1bcd8184]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-e6f2a212]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e6f2a212]{display:flex;justify-content:center}.VPDoc .aside[data-v-e6f2a212]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{max-width:1104px}}.container[data-v-e6f2a212]{margin:0 auto;width:100%}.aside[data-v-e6f2a212]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e6f2a212]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e6f2a212]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-e6f2a212]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e6f2a212]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e6f2a212]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-e6f2a212]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e6f2a212]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e6f2a212]{order:1;margin:0;min-width:640px}}.content-container[data-v-e6f2a212]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e6f2a212]{max-width:688px}.VPButton[data-v-93dc4167]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-93dc4167]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-93dc4167]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-93dc4167]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-93dc4167]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-93dc4167]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-93dc4167]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-93dc4167]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-93dc4167]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-93dc4167]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-93dc4167]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-93dc4167]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-93dc4167]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-dd8814ff]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-dd8814ff]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-dd8814ff]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-dd8814ff]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-dd8814ff]{flex-direction:row}}.main[data-v-dd8814ff]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-dd8814ff]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-dd8814ff]{text-align:left}}@media (min-width: 960px){.main[data-v-dd8814ff]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-dd8814ff]{max-width:592px}}.heading[data-v-dd8814ff]{display:flex;flex-direction:column}.name[data-v-dd8814ff],.text[data-v-dd8814ff]{width:fit-content;max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-dd8814ff],.VPHero.has-image .text[data-v-dd8814ff]{margin:0 auto}.name[data-v-dd8814ff]{color:var(--vp-home-hero-name-color)}.clip[data-v-dd8814ff]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-dd8814ff],.text[data-v-dd8814ff]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-dd8814ff],.text[data-v-dd8814ff]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-dd8814ff],.VPHero.has-image .text[data-v-dd8814ff]{margin:0}}.tagline[data-v-dd8814ff]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-dd8814ff]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-dd8814ff]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-dd8814ff]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-dd8814ff]{margin:0}}.actions[data-v-dd8814ff]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-dd8814ff]{justify-content:center}@media (min-width: 640px){.actions[data-v-dd8814ff]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-dd8814ff]{justify-content:flex-start}}.action[data-v-dd8814ff]{flex-shrink:0;padding:6px}.image[data-v-dd8814ff]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-dd8814ff]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-dd8814ff]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-dd8814ff]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-dd8814ff]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-dd8814ff]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-dd8814ff]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-dd8814ff]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-dd8814ff]{width:320px;height:320px}}[data-v-dd8814ff] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-dd8814ff] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-dd8814ff] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-bd37d1a2]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-bd37d1a2]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-bd37d1a2]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-bd37d1a2]>.VPImage{margin-bottom:20px}.icon[data-v-bd37d1a2]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-bd37d1a2]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-bd37d1a2]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-bd37d1a2]{padding-top:8px}.link-text-value[data-v-bd37d1a2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-bd37d1a2]{margin-left:6px}.VPFeatures[data-v-b1eea84a]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-b1eea84a]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-b1eea84a]{padding:0 64px}}.container[data-v-b1eea84a]{margin:0 auto;max-width:1152px}.items[data-v-b1eea84a]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-b1eea84a]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a]{width:50%}.item.grid-3[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-b1eea84a]{width:25%}}.container[data-v-c141a4bd]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-c141a4bd]{padding:0 48px}}@media (min-width: 960px){.container[data-v-c141a4bd]{width:100%;padding:0 64px}}.vp-doc[data-v-c141a4bd] .VPHomeSponsors,.vp-doc[data-v-c141a4bd] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-c141a4bd] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-c141a4bd] .VPHomeSponsors a,.vp-doc[data-v-c141a4bd] .VPTeamPage a{text-decoration:none}.VPHome[data-v-e07eaea7]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-e07eaea7]{margin-bottom:128px}}.VPContent[data-v-9a6c75ad]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-9a6c75ad]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:0}@media (min-width: 960px){.VPContent[data-v-9a6c75ad]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-9a6c75ad]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-566314d4]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-566314d4]{display:none}.VPFooter[data-v-566314d4] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-566314d4] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-566314d4]{padding:32px}}.container[data-v-566314d4]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-566314d4],.copyright[data-v-566314d4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-6b867909]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-6b867909]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-6b867909]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-6b867909]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-6b867909]{color:var(--vp-c-text-1)}.icon[data-v-6b867909]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-6b867909]{font-size:14px}.icon[data-v-6b867909]{font-size:16px}}.open>.icon[data-v-6b867909]{transform:rotate(90deg)}.items[data-v-6b867909]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-6b867909]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-6b867909]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-6b867909]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-6b867909]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-6b867909]{transition:all .2s ease-out}.flyout-leave-active[data-v-6b867909]{transition:all .15s ease-in}.flyout-enter-from[data-v-6b867909],.flyout-leave-to[data-v-6b867909]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-2488c25a]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-2488c25a]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-2488c25a]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-2488c25a]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-2488c25a]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-2488c25a]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-2488c25a]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-2488c25a]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-2488c25a]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-2488c25a]{display:none}}.menu-icon[data-v-2488c25a]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-2488c25a]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-2488c25a]{padding:12px 32px 11px}}.VPSwitch[data-v-b4ccac88]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b4ccac88]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b4ccac88]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b4ccac88]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b4ccac88] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-b4ccac88] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-be9742d9]{opacity:1}.moon[data-v-be9742d9],.dark .sun[data-v-be9742d9]{opacity:0}.dark .moon[data-v-be9742d9]{opacity:1}.dark .VPSwitchAppearance[data-v-be9742d9] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-3f90c1a5]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-3f90c1a5]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-7eeeb2dc]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-7eeeb2dc]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-7eeeb2dc]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-7eeeb2dc]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-20ed86d6]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-20ed86d6] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-20ed86d6] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-20ed86d6] .group:last-child{padding-bottom:0}.VPMenu[data-v-20ed86d6] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-20ed86d6] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-20ed86d6] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-20ed86d6] .action{padding-left:24px}.VPFlyout[data-v-bfe7971f]{position:relative}.VPFlyout[data-v-bfe7971f]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-bfe7971f]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-bfe7971f]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-bfe7971f]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-bfe7971f]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-bfe7971f]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-bfe7971f],.button[aria-expanded=true]+.menu[data-v-bfe7971f]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-bfe7971f]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-bfe7971f]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-bfe7971f]{margin-right:0;font-size:16px}.text-icon[data-v-bfe7971f]{margin-left:4px;font-size:14px}.icon[data-v-bfe7971f]{font-size:20px;transition:fill .25s}.menu[data-v-bfe7971f]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-60a9a2d3]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-60a9a2d3]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-60a9a2d3]>svg,.VPSocialLink[data-v-60a9a2d3]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-f953d92f]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-f953d92f]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-f953d92f]{display:none}}.trans-title[data-v-f953d92f]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-f953d92f],.item.social-links[data-v-f953d92f]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-f953d92f]{min-width:176px}.appearance-action[data-v-f953d92f]{margin-right:-2px}.social-links-list[data-v-f953d92f]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-815115f5]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-815115f5],.VPNavBarMenuLink[data-v-815115f5]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-afb2845e]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-afb2845e]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-9f43907a]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-9f43907a]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-9f43907a]{border-bottom-color:var(--vp-c-divider)}}[data-v-9f43907a] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-acee064b]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-acee064b]{display:flex;align-items:center}}.title[data-v-acee064b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-9fd4d1dd]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-9fd4d1dd]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-9fd4d1dd]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-9fd4d1dd]:not(.home){background-color:transparent}.VPNavBar[data-v-9fd4d1dd]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-9fd4d1dd]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-9fd4d1dd]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-9fd4d1dd]{padding:0}}.container[data-v-9fd4d1dd]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-9fd4d1dd],.container>.content[data-v-9fd4d1dd]{pointer-events:none}.container[data-v-9fd4d1dd] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-9fd4d1dd]{max-width:100%}}.title[data-v-9fd4d1dd]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-9fd4d1dd]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-9fd4d1dd]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-9fd4d1dd]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-9fd4d1dd]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-9fd4d1dd]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-9fd4d1dd]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-9fd4d1dd]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-9fd4d1dd]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-9fd4d1dd]{column-gap:.5rem}}.menu+.translations[data-v-9fd4d1dd]:before,.menu+.appearance[data-v-9fd4d1dd]:before,.menu+.social-links[data-v-9fd4d1dd]:before,.translations+.appearance[data-v-9fd4d1dd]:before,.appearance+.social-links[data-v-9fd4d1dd]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-9fd4d1dd]:before,.translations+.appearance[data-v-9fd4d1dd]:before{margin-right:16px}.appearance+.social-links[data-v-9fd4d1dd]:before{margin-left:16px}.social-links[data-v-9fd4d1dd]{margin-right:-8px}.divider[data-v-9fd4d1dd]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-9fd4d1dd]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-9fd4d1dd]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-9fd4d1dd]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-9fd4d1dd]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-9fd4d1dd]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-9fd4d1dd]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-a3e2920d]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-a3e2920d]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-fa963d97]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-fa963d97]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-e04f3e85]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-e04f3e85]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-d99bfeec]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-d99bfeec]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-d99bfeec]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-d99bfeec]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-d99bfeec]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-d99bfeec]{transform:rotate(45deg)}.button[data-v-d99bfeec]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-d99bfeec]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-d99bfeec]{transition:transform .25s}.group[data-v-d99bfeec]:first-child{padding-top:0}.group+.group[data-v-d99bfeec],.group+.item[data-v-d99bfeec]{padding-top:4px}.VPNavScreenTranslations[data-v-516e4bc3]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-516e4bc3]{height:auto}.title[data-v-516e4bc3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-516e4bc3]{font-size:16px}.icon.lang[data-v-516e4bc3]{margin-right:8px}.icon.chevron[data-v-516e4bc3]{margin-left:4px}.list[data-v-516e4bc3]{padding:4px 0 0 24px}.link[data-v-516e4bc3]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-2dd6d0c7]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-2dd6d0c7],.VPNavScreen.fade-leave-active[data-v-2dd6d0c7]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-2dd6d0c7],.VPNavScreen.fade-leave-active .container[data-v-2dd6d0c7]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-2dd6d0c7],.VPNavScreen.fade-leave-to[data-v-2dd6d0c7]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-2dd6d0c7],.VPNavScreen.fade-leave-to .container[data-v-2dd6d0c7]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-2dd6d0c7]{display:none}}.container[data-v-2dd6d0c7]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-2dd6d0c7],.menu+.appearance[data-v-2dd6d0c7],.translations+.appearance[data-v-2dd6d0c7]{margin-top:24px}.menu+.social-links[data-v-2dd6d0c7]{margin-top:16px}.appearance+.social-links[data-v-2dd6d0c7]{margin-top:16px}.VPNav[data-v-7ad780c2]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-7ad780c2]{position:fixed}}.VPSidebarItem.level-0[data-v-0009425e]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-0009425e]{padding-bottom:10px}.item[data-v-0009425e]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-0009425e]{cursor:pointer}.indicator[data-v-0009425e]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-0009425e],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-0009425e],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-0009425e],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-0009425e]{background-color:var(--vp-c-brand-1)}.link[data-v-0009425e]{display:flex;align-items:center;flex-grow:1}.text[data-v-0009425e]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-0009425e]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-0009425e],.VPSidebarItem.level-2 .text[data-v-0009425e],.VPSidebarItem.level-3 .text[data-v-0009425e],.VPSidebarItem.level-4 .text[data-v-0009425e],.VPSidebarItem.level-5 .text[data-v-0009425e]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-0009425e],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-0009425e],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-0009425e],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-0009425e],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-0009425e],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-0009425e]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-0009425e],.VPSidebarItem.level-1.has-active>.item>.text[data-v-0009425e],.VPSidebarItem.level-2.has-active>.item>.text[data-v-0009425e],.VPSidebarItem.level-3.has-active>.item>.text[data-v-0009425e],.VPSidebarItem.level-4.has-active>.item>.text[data-v-0009425e],.VPSidebarItem.level-5.has-active>.item>.text[data-v-0009425e],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-0009425e],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-0009425e],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-0009425e],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-0009425e],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-0009425e],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-0009425e]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-0009425e],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-0009425e],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-0009425e],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-0009425e],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-0009425e],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-0009425e]{color:var(--vp-c-brand-1)}.caret[data-v-0009425e]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-0009425e]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-0009425e]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-0009425e]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-0009425e]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-0009425e],.VPSidebarItem.level-2 .items[data-v-0009425e],.VPSidebarItem.level-3 .items[data-v-0009425e],.VPSidebarItem.level-4 .items[data-v-0009425e],.VPSidebarItem.level-5 .items[data-v-0009425e]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-0009425e]{display:none}.no-transition[data-v-51288d80] .caret-icon{transition:none}.group+.group[data-v-51288d80]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-51288d80]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-42c4c606]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-42c4c606]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-42c4c606]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-42c4c606]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-42c4c606]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-42c4c606]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-42c4c606]{outline:0}.VPSkipLink[data-v-fcbfc0e0]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-fcbfc0e0]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-fcbfc0e0]{top:14px;left:16px}}.Layout[data-v-d8b57b2d]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3dc26e1d]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3dc26e1d]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{margin:128px 0}}.VPHomeSponsors[data-v-3dc26e1d]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 64px}}.container[data-v-3dc26e1d]{margin:0 auto;max-width:1152px}.love[data-v-3dc26e1d]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3dc26e1d]{display:inline-block}.message[data-v-3dc26e1d]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3dc26e1d]{padding-top:32px}.action[data-v-3dc26e1d]{padding-top:40px;text-align:center}.VPTeamMembersItem[data-v-acff304e]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-acff304e]{padding:32px}.VPTeamMembersItem.small .data[data-v-acff304e]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-acff304e]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-acff304e]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-acff304e]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-acff304e]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-acff304e]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-acff304e]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-acff304e]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-acff304e]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-acff304e]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-acff304e]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-acff304e]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-acff304e]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-acff304e]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-acff304e]{text-align:center}.avatar[data-v-acff304e]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-acff304e]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-acff304e]{margin:0;font-weight:600}.affiliation[data-v-acff304e]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-acff304e]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-acff304e]:hover{color:var(--vp-c-brand-1)}.desc[data-v-acff304e]{margin:0 auto}.desc[data-v-acff304e] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-acff304e]{display:flex;justify-content:center;height:56px}.sp-link[data-v-acff304e]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-acff304e]:hover,.sp .sp-link.link[data-v-acff304e]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-acff304e]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPTeamPage[data-v-a5329171]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-a5329171]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-a5329171-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-a5329171-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-a5329171-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:96px}}.VPTeamMembers[data-v-a5329171-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-a5329171-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-a5329171-s]{padding:0 64px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-3bf2e850]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-3bf2e850]{padding-top:40px}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #4E004D, #C1298D)} diff --git a/.vitepress/dist/assets/tutorials.md.ATW1haj-.js b/.vitepress/dist/assets/tutorials.md.ATW1haj-.js new file mode 100644 index 0000000..d2edec8 --- /dev/null +++ b/.vitepress/dist/assets/tutorials.md.ATW1haj-.js @@ -0,0 +1 @@ +import{_ as a,o,c as n,j as t,a as i,ae as l}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"Tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials.md","filePath":"tutorials.md"}'),s={name:"tutorials.md"};function r(m,e,c,d,u,h){return o(),n("div",null,[...e[0]||(e[0]=[t("h1",{id:"tutorials",tabindex:"-1"},[i("Tutorials "),t("a",{class:"header-anchor",href:"#tutorials","aria-label":'Permalink to "Tutorials"'},"​")],-1),t("p",null,"Comprehensive tutorials and guides for using XMapTools effectively.",-1),t("h2",{id:"tutorial-1-xmaptools-for-epma-2023",tabindex:"-1"},[i("Tutorial 1: XMapTools for EPMA (2023) "),t("a",{class:"header-anchor",href:"#tutorial-1-xmaptools-for-epma-2023","aria-label":'Permalink to "Tutorial 1: XMapTools for EPMA (2023)"'},"​")],-1),t("p",null,"Follow the steps in this tutorial to familiarise yourself with the EPMA data reduction procedure and discover the main features of XMapTools.",-1),t("p",null,"A video tutorial is also available on YouTube and Bilibili:",-1),t("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[t("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/SRXio2szh3c",title:"XMapTools Course 1 – How to get started (EPMA)?",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),l('

Dataset description

The dataset used in this tutorial comes from the study of Duesterhoeft & Lanari (2020). It consists of EPMA maps of the sample HAL104 from West Guilford (Ontario) of the Canadian Grenville Province. It was analysed using 15 KeV accelerating voltage, 100 nA specimen current, 130 ms dwell time, 20 µm step size, ~1 µm beam size with 1000*1000 pixels. The mapping time was ~75 h.

Please do not use these data for any other purpose than this tutorial without the explicit authorisation of the author(s).

FileTypeComment
_Ce.txtEDS mapMostly below detection limit
_Cr.txtEDS mapMostly below detection limit
_La.txtEDS mapMostly below detection limit
_Ni.txtEDS mapBelow detection limit
_P.txtEDS mapOverlap with Zr
_S.txtEDS map
Al.txtWDS map
Ca.txtWDS map
Fe.txtWDS map
K.txtWDS map
Mg.txtWDS map
Mn.txtWDS map
Na.txtWDS map
SEI.txtOtherSecondary electron image map
Si.txtWDS map
Ti.txtWDS map
TOPO.txtOtherTopographic image map (obtained by BSE)
Standards.txtStandard fileFile containing the spot analyses used for map standardisation

Reference: Duesterhoeft, E. & Lanari, P. (2020). Iterative thermodynamic modelling – Part 1: A theoretical scoring technique and a computer program (BINGO-ANTIDOTE). Journal of Metamorphic Geology, 38, 527-55.

How to get started?

  1. Download Tutorial_EPMA_2023.zip from the download center.
  2. Unzip the folder in a suitable working directory (e.g. Documents/Mapping/EPMA/Tutorial_EPMA_2023/)
  3. Open XMapTools. Note that starting XMapTools can take up to a minute; restarting the program is slightly faster When the program is ready, a dialog box opens; pick the working directory Tutorial_EPMA_2023 and click the button "Open". You can change the working directory later, but you need to pick a directory when you start the program. A log file is automatically created in the selected working directory.

Import maps

  1. In the first workspace "PROJECT & IMPORT", click on the Import image button (Import Maps) to open the Import Tool module.
  2. Select all the map files to be imported and click on the button "Open". Note that you can select all the text files available in the folder and XMapTools will find out which ones can be imported as maps.
  3. In the tab "Corrections", change the value of dwell time to 120 ms.
  4. Press the "Import Data" button.

X-ray data visualization (Part 1)

  1. Quickly go through the maps and use the Auto Contrast image button or the live frequency polygon (see figure below) to adjust the lower and upper limits of the color bar. Note that the color bar settings are available in the "Options" workspace.
  2. Eliminate the maps which are not needed because they do not contain any important information (Ce, Cr, Ni, S). To eliminate a map, select the map in the primary tree menu, then right click on the name and select "Delete".
  3. Save your project using either the Save image button available in the "PROJECT & IMPORT" workspace or in the menu "File" > "Save Project".
Data visualization

Classification

Classification is the step used to create a classified image in which each pixels are attributed to a class (mineral, glass, epoxy, etc.). In this tutorial we are using the random forest algorithm. The classification in XMapTools is supervised. You need to create a "training set" containing training data for each class.

Additional information about the classification in XMapTools can be found in : Lanari, P., Tedeschi, M., (2025). Chemical map classification in XMapTools. Applied Computing and Geosciences, 25, 100230 [Download].

  1. Set the active workspace to CLASSIFY.
  2. Create a new training set. In the secondary tree menu, select the category "Training Set (Classification)" and press the Add image button available in the CLASSIFY workspace to add phase definitions. Select in the list the phases: Biotite, Garnet, Plagioclase, Quartz; then click "Apply".
  3. Add training data for each phase:
    • Select a training class in the training set.
    • Adjust display (optional): select an element to be display and eventually use the Zoom image and Pan image buttons to adjust the field of view.
    • Select a ROI type in the dropdown menu among "Rectangle ROI", "Polygon ROI", "Ellipse ROI" and "Circle ROI".
    • Finally, press the Add a ROI image button and immediately click and drag (or click for polygon) over the map to create the ROI. How to draw a ROI in XMapTools:
      • Rectangle: click to select the first corner and drag the mouse to the opposite corner defining a rectangle.
      • Polygon: click successively on the image to draw a polygon; right-click or double-click to validate and close automatically the shape.
      • Ellipse: click to select the first point and drag the mouse to a second point defining the long axis of an ellipse.
      • Circle: click to select the first corner of a square and drag the mouse to opposite corner defining a circle.
  4. Edit the shape of a ROI by selecting the ROI in the secondary tree menu. If the editing mode is disabled, press once the "Ctrl" key on your keyboard and try again editing the shape of the ROI.
  5. You can eliminate a ROI by first selecting the ROI in the secondary tree menu and then right clicking on its name and selecting "Delete".
  6. Add new phase definitions for sillimanite and sudoite (low temperature chlorite here replacing cordierite). Add training data for each phase (see step 3 above).
  7. Restore the view using either the button "Reset Zoom & Pan" or the button "Restore view" available near the top-right corner of the main figure.
  8. In classification parameters:
    • Add all maps in the list for classification. Select an element to display in the primary tree menu and use the Add All image button to add all maps at once.
    • Eliminate La from the list; select La_EDS in the primary tree menu and press the Take La_EDS out image button.
    • You can calculate PCA maps using the Generate Maps of the Principal Component image button. The maps of principal components are listed in the category "Other" available in the primary tree menu.
    • Select the data type "Maps" (other data types are described in Lanari & Tedeschi 2025).
    • Select the map scaling method "Robust"; select the option "reproducibility" and set the seed value to 1.
  9. Select the algorithm "Random Forest" and set the option corresponding to the maximum number of trees to 50.
  10. Select the phase definition object "PhaseDef_1" in the secondary tree menu and press the Classify image button.
  11. Select a mask file to display the mineral map.
  12. Check the results of the classification (for Random Forest):
    • Are all training pixels classified in the true class? If not, the training set should be adjusted accordingly.
    • Is the out-of-bag classification error reaching a value of zero when the number of grown trees is exceeding 20? If not, there is probably a problem in the phase definition.
    • Check the predictor importance; maps with a very low predictor importance can be eliminated without affecting the quality of the classification (optional).
    • Evaluate the quality of the classification by displaying 1-2 diagnostic elements for each class (e.g. Si for biotite, quartz, plagioclase).
    • If necessary, adjust the training set and perform a new classification. It is recommended to eliminate the mask files that are not used.
  13. Save your project.

Extracting mineral modes

  1. Select a mask file.
  2. Select the ROI shape "rectangle" using the dropdown menu in "Mask analysis and visualization"
  3. Press the Add a ROI to export mask modes image button and immediately click and drag over the map to create the ROI.
  4. Adjust the shape to obtain the modes of the entire map. If the editing mode is disabled, press once the "Ctrl" key on your keyboard and try again editing the shape of the ROI.
  5. Save the modes using the Save image button in the composition tab on the right.
  6. Note that you can also copy the data to the clipboard using the Copy image button. Paste the data in a spreadsheet software program.
  7. Eliminate the ROI using the Reset ROI image button.
  8. For comparaison purposes (don't use that method for publications!), calculate pseudo modes using the point counting method:
    • Set the number of points to 500.
    • Unselect the Monte-Carlo option.
    • Extract several successive sets of pseudo modes using the point counting method by clicking on the Generate pseudo-modes image button and copy the results in a spreadsheet software program. Note: now you know why this method should not be used.
  9. Calculate pseudo modes using the point counting method and Monte Carlo to calculate uncertainties on the results (note: what is never done with point counting):
    • Set the number of points to 300.
    • Select the Monte-Carlo optionExtract pseudo modes and uncertainties using the Generate pseudo-modes image button and copy the results in a spreadsheet software program.
    • You can repeat this calculation for several number of points (e.g. 500, 750, 1000) and copy the results in a spreadsheet software program.

Analytical standardisation

The analytical standardisation consists of transforming the intensity maps of elements into weight percent maps of oxides. XMapTools 4 includes a calibration module that performs an automated calibration of all minerals. This black box algorithm works ok when all phases have spot analyses to be used as internal standard and when intensities are heigh enough. However, you need to carefully check the results of the calibration for each mineral.

The calibration method used by XMapTools is described in Lanari, P., Vho, A., Bovay, T., Airaghi, L., Centrella, S., (2019). Quantitative compositional mapping of mineral phases by electron probe micro-analyser. Geological Society of London, Special Publication, 478, 39-63 [Download].

Extracting Local bulk compositions

  1. Set the active workspace to "CALIBRATE".
  2. Display an intensity map showing a maximum of minerals (e.g. Al).
  3. Select the option "Import standards.txt" in "EPMA STANDARD DATA".
  4. Click on the Import image button. Note that the color of the spot labels can be changed in the options of the "Project & Import" workspace.
  5. Select the element Mg to estimate the quality of the position. The diagrams on the right show correlation maps with the center of the image being the position of the spots on the map. In this case the original position is good and there is no need to change it. (Optional) you can try to shift the spot position in the correlation plot of the element and then to press Apply image. To restore the original position, you can simply load the standard data again using the Import image button.
  6. Add two additional internal standard values for quartz (not measured):
    • Display the silicon map by selecting Si in the primary tree menu.
    • Select the category "Standards (Spots)" in the secondary tree menu.
    • Adjust the view using zoom and pan (optional)
    • Press the Add image button available in the "CALIBRATE" workspace select a pixel of quartz by clicking on the main image.
    • Set the composition to 100 wt% of SiO2 in the table available in the "Standard" tab.
    • Note that the new standard is listed at the bottom of the secondary tree menu under "Standards (Spots)". Selecting this internal standard display the location and the composition.
  7. Calibrate the intensity element maps into maps of wt% of oxide:
    • Select a mask file in the secondary tree menu.
    • In the "CALIBRATE" workspace, press the Calibrate image button to open the Calibration assistant for EPMA data.
    • Check the calibration curves by displaying the curve for each element of each mineral.
    • Use the button "Adjust (Manual)" to modify the calibration curve in case the calibration algorithm failed to set a proper calibration curveSelect the option "Apply to all masks".
    • Press the button "Apply Standardization" to calibrate all maps and send the data to XMapTools.
  8. Check the calibrated maps and the merged map using the primary tree menu.
  9. If the calibration quality is not good, select the category "Quanti" in the primary tree menu, then right-click on the name and select "Clear All" (optional). This will eliminate all the data in this category. You can do the same for the category "Merged".

Note: The video tutorial (see above) provides more tricks and explanations about the calibration module and how to check the quality of the calibration curves.

Structural formulas, thermometry & generating images

  1. We need first to create a density map for the mask file used for calibration:
    • Select a mask file in the secondary tree menu.
    • In the "CALIBRATE" workspace, press the Density image button to automatically generate a density map.
    • Enter average density values for each phase. Note that average values are automatically proposed if the mineral name used is available in the XMapTools database.
    • You can display the density map in that is listed under the category "Other" in the primary tree menu.
  2. Display a merged map by selecting an oxide in the category "Merged" of the primary tree menu.
  3. Select "Rectangle ROI", then press the "Add ROI" image button and immediately click and drag over the map to create the ROI.
  4. For this exercise, reshape the ROI to about ¾ of the map surface. If the editing mode is disabled, press once the "Ctrl" key and try again editing the shape of the ROI.
  5. Save the local bulk composition.
  6. Set the number of simulations to 100 and the shift value expressed in number of pixels to 20 and press the Calculate the uncertainties using Monte Carlo image button.
  7. Save the results and the figure (File > Save As…).
  8. Change the ROI to cover the entire map and export the new bulk composition. Compare the composition with the one previously obtained for the smaller domain.
  9. Create a new merged map "garnet-excluded" containing only pixel compositions of biotite, plagioclase, quartz, sillimanite and sudoite and export the local bulk composition:
    • Select the item "Biotite" in the category "Quanti" of the primary tree menu.
    • Press the Merge image button.
    • Select all mineral except Garnet and press the "Apply" button.
    • Rename the merged map into "Merged_noGrt".
    • Export a local bulk composition of the entire area.

The method to extract local bulk composition is described in Lanari, P., & Engi, M. (2017). Local bulk composition effects on metamorphic mineral assemblages, Reviews in Mineralogy and Geochemistry, 83, 55-102 [Download].

Structural formulas, thermometry & generating images

  1. Set the active workspace to "FUNCTIONS".
  2. In "Normalization & Structural Formula", select "Function", "Biotite" and "Bt (SF, 11-Ox. basis)".
  3. Display the function description by clicking on the Help image button.
  4. Select "Biotite" in the category "Quanti" of the primary tree menu
  5. Press the Apply image button to calculate the maps of structural formula for biotite.
  6. Display the maps of structural formula "Biotite Bt (SF, 11-Ox. basis)" available in the category "Results" of the primary tree menu.
  7. Generate an image showing the maps of Si, Ti and XMg in biotite:
    • In the menu, select in the menu: Image > Multi-Selection Mode.
    • Select the maps Si, Ti_M2 and XMg. Press ctrl (Windows) or Command (Mac) to select several maps in the primary tree menu.
    • Once the maps are selected, select in the menu: Images > Add Multi-plot image.
    • Unfold the new image available under the category "Images" in the primary tree menu. Select each map and use the auto-contrast option or the live frequency polygon to adjust the lower and upper limits of the color bar. Note that the settings are saved when modifying an image.
    • To save the image, you can use the menu File > Save Image. Alternatively, you can copy the image into the clipboard and past it into your favorite vector graphics editor. In the menu, select: Edit > Copy Image.
    • Save your project; images and their settings are kept in the project file.
  8. Calculate the maps of structural formula for garnet (with and without Fe3+) and plagioclase.
  9. Calculate the maps of structural formula for garnet using a 8-cation basis.
  10. Generate a new image containing the XMg maps of biotite and garnet:
    • Activate the multi-selection mode (menu: Image > Multi-Selection Mode).
    • In the menu "Image", select the option "Add Multi-Layer Image (multi-scale)".
    • Adjust the color scale and the color palette of each map in the image object.
    • Display the multi-layer image.
    • Select an other map (not an image) and change back the color palette to "XMap (CD)". Note that this change does not affect the image.
  11. Generate a new image containing maps of end-member fraction for almandine, pyrope, grossular and spessartine.
  12. Generate an image of Mg in biotite and in garnet (in apfu):
    • Select any result in "Biotite Bt (SF, 11-Ox. basis)".
    • In the menu, select: Modules > Generator.
    • Type the following equation in the field that calculates Mg (apfu): "Mg = Mg_M1 + Mg_M2".
    • Press the Generate image button.
    • Activate the multi-selection mode.
    • Select the maps Mg in garnet and Mg in biotite; both are expressed in apfu.
    • In the menu "Image", select the option "Add Multi-Layer Image (shared-scale)".
    • Use the live frequency polygon to adjust the lower and upper limits of the color bar.
  13. Save the project.
  14. Calculate temperature maps using Ti-in-biotite thermometry:
    • In the FUNCTIONS workspace, activate the "Map mode" in the section "Thermobarometry and other methods", select "Biotite" and "T.Bt (all calibrations)".
    • Select "Biotite" in the category "Quanti".
    • Press the Apply image button available in the section "Thermobarometry and other methods".
    • Set the pressure to 6 kbar (0.6 GPa).
    • Display the map T_H05.
    • Save a single image containing the temperature map T_H05.
  15. Calculate temperature conditions using garnet-biotite thermometry:
    • Select the merge map "Merged_RandomForest".
    • Adjust the view using zoom and pan (optional).
    • In the workspace "FUNCTIONS", activate the "Multi-equilibrium" mode in the section "Thermobarometry and other methods", select "Biotite" or "Garnet" and "T.Bt (all calibrations)".
    • Display the map FeOSelect "Circle ROI", then press the Add ROI image button.
    • Set the pressure to 6 kbar (0.6 GPa).
    • Select a ROI for garnet and then a ROI for biotite.
    • Results are displayed in a table for all calibrations. Check the Help image button to obtain the references.
    • Save the results using the Save image button available above the table.
    • Adjust the position of the ROI and extract the new temperature.
    • Click on the Reset ROI image button.

Sampling tools and chemical diagrams

  1. Export a transect chemical profile for the garnet end-member fractions:
    • Display the map Xprp and adjust the lower and upper limits of the color bar.
    • In the menu, select Sampling > Transect and click on the image to define a transect from rim through core to rim.
    • Adjust the position of the transect (optional).
    • Save the results for the selected end-member fraction. In the menu, select Sampling > Save Results > Single MapSelect Xsps, adjust the range of displayed values and save the results.
    • Select Xalm, adjust the range of displayed values and save the results.
  2. Export an integrated profile (strip) for the fraction of pyrope in garnet:
    • Select the map Xprp and adjust the range of displayed values.
    • In the menu, select Sampling > Strip and click on the image to create rectangle.
    • Adjust the rotation and the position of the rectangle to sample from rim to core of a garnet grain.
    • Save the results and compare the profile obtained with the ones obtained using the transect tool.
    • Reset ROI using the Reset image button.
  3. Generate a binary plot for biotite:
    • Select any map of the structural formula of biotite.
    • In the menu select Modules > Data Vizualisation.
    • Display XMg vs TI_M2 and adjust the display by zooming on the figure.
    • Select a ROI using the button "Polygon" available in "Explore"How many groups of biotite can be identified?
    • Close the Data Vizualisation module to resume XMapTools.
  4. Generate a ternary plot for plagioclase:
    • Select any map of the structural formula of plagioclase.
    • In the menu select Modules > Data Vizualisation.
    • Select "Ternary" plot and the following variables: Xab for X , Xsan for Y and Xan for Z.
    • Use the "Polygon" tool to identify pixels locations and to find mixing pixels.
    • Close the Data Vizualisation module to resume XMapTools.
  5. Identify mixing pixels using intensity maps:
    • Select any intensity map in the primary tree menu.
    • In the menu select Modules > Data Vizualisation.
    • Display a binary diagram Al vs Mg.
    • Use the "Polygon" tool to identify the minerals and the mixing pixels between them
    • Close the Data Vizualisation module to resume XMapTools.
  6. You can also generate the same plot using quantitative data (e.g. merged map) to notice the differences with intensity maps. It should be kept in mind that intensity maps are uncorrected for ZAF effects!
',32)])])}const y=a(s,[["render",r]]);export{g as __pageData,y as default}; diff --git a/.vitepress/dist/assets/tutorials.md.ATW1haj-.lean.js b/.vitepress/dist/assets/tutorials.md.ATW1haj-.lean.js new file mode 100644 index 0000000..af21a1a --- /dev/null +++ b/.vitepress/dist/assets/tutorials.md.ATW1haj-.lean.js @@ -0,0 +1 @@ +import{_ as a,o,c as n,j as t,a as i,ae as l}from"./chunks/framework.DIXg7aqb.js";const g=JSON.parse('{"title":"Tutorials","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials.md","filePath":"tutorials.md"}'),s={name:"tutorials.md"};function r(m,e,c,d,u,h){return o(),n("div",null,[...e[0]||(e[0]=[t("h1",{id:"tutorials",tabindex:"-1"},[i("Tutorials "),t("a",{class:"header-anchor",href:"#tutorials","aria-label":'Permalink to "Tutorials"'},"​")],-1),t("p",null,"Comprehensive tutorials and guides for using XMapTools effectively.",-1),t("h2",{id:"tutorial-1-xmaptools-for-epma-2023",tabindex:"-1"},[i("Tutorial 1: XMapTools for EPMA (2023) "),t("a",{class:"header-anchor",href:"#tutorial-1-xmaptools-for-epma-2023","aria-label":'Permalink to "Tutorial 1: XMapTools for EPMA (2023)"'},"​")],-1),t("p",null,"Follow the steps in this tutorial to familiarise yourself with the EPMA data reduction procedure and discover the main features of XMapTools.",-1),t("p",null,"A video tutorial is also available on YouTube and Bilibili:",-1),t("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[t("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/SRXio2szh3c",title:"XMapTools Course 1 – How to get started (EPMA)?",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),l("",32)])])}const y=a(s,[["render",r]]);export{g as __pageData,y as default}; diff --git a/.vitepress/dist/assets/videos.md.C_lNMixv.js b/.vitepress/dist/assets/videos.md.C_lNMixv.js new file mode 100644 index 0000000..90b5f7b --- /dev/null +++ b/.vitepress/dist/assets/videos.md.C_lNMixv.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as r,ae as l,j as e,a as t}from"./chunks/framework.DIXg7aqb.js";const b=JSON.parse('{"title":"Videos","description":"","frontmatter":{},"headers":[],"relativePath":"videos.md","filePath":"videos.md"}'),s={name:"videos.md"};function d(n,o,c,p,h,m){return i(),r("div",null,[...o[0]||(o[0]=[l('

Videos

Watch our videos to find out more and learn how to use XMapTools.

Table of contents

LA-ICP-MS data reduction in XMapTools 4.3

',5),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/uFAWk35cnQM",title:"LA-ICPMS data reduction in XMapTools 4.3",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),e("p",null,[t("Located in China? "),e("a",{href:"https://www.bilibili.com/video/BV1ft421P71j",target:"_blank"},"Watch this video on Bilibili")],-1),e("h2",{id:"introduction-talk-to-xmaptools-4-for-epma",tabindex:"-1"},[t("Introduction talk to XMapTools 4 for EPMA "),e("a",{class:"header-anchor",href:"#introduction-talk-to-xmaptools-4-for-epma","aria-label":'Permalink to "Introduction talk to XMapTools 4 for EPMA"'},"​")],-1),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/q1bYYgCfYRc",title:"Introduction talk to XMapTools 4 for electron microprobe (EPMA)",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),e("p",null,[t("Located in China? "),e("a",{href:"https://www.bilibili.com/video/BV1Ez4y1a77t",target:"_blank"},"Watch this video on Bilibili")],-1),e("h2",{id:"xmaptools-course-1-–-how-to-get-started-epma",tabindex:"-1"},[t("XMapTools Course 1 – How to get started (EPMA)? "),e("a",{class:"header-anchor",href:"#xmaptools-course-1-–-how-to-get-started-epma","aria-label":'Permalink to "XMapTools Course 1 – How to get started (EPMA)?"'},"​")],-1),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/SRXio2szh3c",title:"XMapTools Course 1 – How to get started (EPMA)?",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),e("p",null,[t("Located in China? "),e("a",{href:"https://www.bilibili.com/video/BV1ks4y1X7SM/",target:"_blank"},"Watch this video on Bilibili")],-1),e("h2",{id:"xmaptools-4-special-event-–-december-2021",tabindex:"-1"},[t("XMapTools 4 Special Event – December 2021 "),e("a",{class:"header-anchor",href:"#xmaptools-4-special-event-–-december-2021","aria-label":'Permalink to "XMapTools 4 Special Event – December 2021"'},"​")],-1),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/qmMKzRvgkuU",title:"XMapTools 4 Special Event – December 1st 2021",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1)])])}const w=a(s,[["render",d]]);export{b as __pageData,w as default}; diff --git a/.vitepress/dist/assets/videos.md.C_lNMixv.lean.js b/.vitepress/dist/assets/videos.md.C_lNMixv.lean.js new file mode 100644 index 0000000..cfd87bc --- /dev/null +++ b/.vitepress/dist/assets/videos.md.C_lNMixv.lean.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as r,ae as l,j as e,a as t}from"./chunks/framework.DIXg7aqb.js";const b=JSON.parse('{"title":"Videos","description":"","frontmatter":{},"headers":[],"relativePath":"videos.md","filePath":"videos.md"}'),s={name:"videos.md"};function d(n,o,c,p,h,m){return i(),r("div",null,[...o[0]||(o[0]=[l("",5),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/uFAWk35cnQM",title:"LA-ICPMS data reduction in XMapTools 4.3",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),e("p",null,[t("Located in China? "),e("a",{href:"https://www.bilibili.com/video/BV1ft421P71j",target:"_blank"},"Watch this video on Bilibili")],-1),e("h2",{id:"introduction-talk-to-xmaptools-4-for-epma",tabindex:"-1"},[t("Introduction talk to XMapTools 4 for EPMA "),e("a",{class:"header-anchor",href:"#introduction-talk-to-xmaptools-4-for-epma","aria-label":'Permalink to "Introduction talk to XMapTools 4 for EPMA"'},"​")],-1),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/q1bYYgCfYRc",title:"Introduction talk to XMapTools 4 for electron microprobe (EPMA)",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),e("p",null,[t("Located in China? "),e("a",{href:"https://www.bilibili.com/video/BV1Ez4y1a77t",target:"_blank"},"Watch this video on Bilibili")],-1),e("h2",{id:"xmaptools-course-1-–-how-to-get-started-epma",tabindex:"-1"},[t("XMapTools Course 1 – How to get started (EPMA)? "),e("a",{class:"header-anchor",href:"#xmaptools-course-1-–-how-to-get-started-epma","aria-label":'Permalink to "XMapTools Course 1 – How to get started (EPMA)?"'},"​")],-1),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/SRXio2szh3c",title:"XMapTools Course 1 – How to get started (EPMA)?",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1),e("p",null,[t("Located in China? "),e("a",{href:"https://www.bilibili.com/video/BV1ks4y1X7SM/",target:"_blank"},"Watch this video on Bilibili")],-1),e("h2",{id:"xmaptools-4-special-event-–-december-2021",tabindex:"-1"},[t("XMapTools 4 Special Event – December 2021 "),e("a",{class:"header-anchor",href:"#xmaptools-4-special-event-–-december-2021","aria-label":'Permalink to "XMapTools 4 Special Event – December 2021"'},"​")],-1),e("div",{style:{position:"relative","padding-bottom":"56.25%",height:"0",overflow:"hidden","max-width":"100%",margin:"16px 0"}},[e("iframe",{style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},src:"https://www.youtube.com/embed/qmMKzRvgkuU",title:"XMapTools 4 Special Event – December 1st 2021",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:""})],-1)])])}const w=a(s,[["render",d]]);export{b as __pageData,w as default}; diff --git a/.vitepress/dist/bingo-antidote.html b/.vitepress/dist/bingo-antidote.html new file mode 100644 index 0000000..b25fa12 --- /dev/null +++ b/.vitepress/dist/bingo-antidote.html @@ -0,0 +1,25 @@ + + + + + + Bingo-Antidote | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Bingo-Antidote

Table of contents

What is Bingo-Antidote?

Bingo-Antidote Logo

Bingo-Antidote is a petrological software originally developed by Pierre Lanari and Erik Duesterhoeft that offers an alternative modelling strategy based on iterative thermodynamic models integrated with quantitative compositional mapping. This second version, distributed as an XMapTools add-on, comes with a redesigned graphical user interface and improved features.

Iterative thermodynamic models

Bingo-Antidote proposes a hybrid strategy combining the strengths of Gibbs energy minimisation (GEM) and inverse thermobarometry models, based on the comparison between modelled and observed mineral assemblages, modes and compositions. The overall technique relies on quantitative compositional maps obtained by electron probe microanalysis to provide a mutually consistent set of observed data such as bulk rock and mineral compositions.

Theriak-Domino

Bingo-Antidote uses the Gibbs energy minimiser Theriak developed by Christian de Capitani. The latest version of Theriak-Domino, provided by Doug Tinkham, is required to use Bingo-Antidote.

Download Theriak-Domino from Github

Theriak-Domino LogoBingo-Antidote Screenshot

References

There are two technical papers, the first by Duesterhoeft & Lanari (2020) and the second by Lanari & Hermann (2021), which includes a proof of concept and an application example.

The philosophy of iterative thermodynamic modelling behind Bingo-Antidote is also described in older publications: Lanari & Engi (2017) and Lanari & Duesterhoeft (2019). Note that the Lanari & Duesterhoeft (2019) paper gives a general overview of thermodynamic modelling and also provides an example of an application of Bingo-Antidote.

  • Duesterhoeft, E. & Lanari, P. (2020). Iterative thermodynamic modelling – Part 1: A theoretical scoring technique and a computer program (BINGO-ANTIDOTE). Journal of Metamorphic Geology, 38, 527-551. Download pdf
  • Lanari, P. & Hermann, J. (2021). Iterative thermodynamic modelling—Part 2: tracing equilibrium relationships between minerals in metamorphic rocks. Journal of Metamorphic Geology, 39, 651-674. Download pdf
  • Lanari, P. & Duesterhoeft, E. (2019). Modelling metamorphic rocks using equilibrium thermodynamics and internally consistent databases: past achievements, problems and perspectives. Journal of Petrology, 60, 19-56. Download pdf
  • Lanari, P., & Engi, M. (2017). Local bulk composition effects on metamorphic mineral assemblages, Reviews in Mineralogy and Geochemistry, 83, 55-102. Download pdf

Bingo-Antidote Tutorial

This short tutorial on Bingo-Antidote is from the Goldschmidt Workshop, which took place in Lyon on 8–9 July 2023 and was entitled 'Modern Applications of Phase Equilibrium Modelling'.

How to get started

  1. Download Tutorial_Bingo-Antidote_1_Sikkim.zip using this link.
  2. Unzip the folder in a suitable working directory (e.g. Documents/Bingo-Antidote/Tutorial_Bingo-Antidote_1_Sikkim/)
  3. Open XMapTools. Note that starting XMapTools can take up to a minute; restarting the program is slightly faster
  4. When the program is ready, a dialog box opens; pick the working directory Tutorial_Bingo-Antidote_1_Sikkim and click the button "Open". You can change the working directory later, but you need to pick a directory when you start the program. A log file is automatically created in the selected working directory.

Example 1 (TG8C-03) – Lanari & Duesterhoeft (2019), JPET

  1. In XMapTools, load the 'aaa4.mat' project file provided in the 'Tutorial_Bingo-Antidote_1_Sikkim' folder.
  2. Select the 'Add-ons' tab and click the 'Bingo-Antidote' button to open Bingo-Antidote.
  3. In the Bingo-Antidote launcher, you will need to provide Bingo-Antidote with the location of your Theriak setup directory. Then click 'Launch Bingo-Antidote'.
  4. Select the chemical system: SiO₂-Al₂O₃-FeO-MgO-Na₂O-CaO-K₂O (exclude TiO₂ and MnO).
  5. Select the database JUN92.bs.
  6. Select the PT range: 600–900 °C and 0.4–1.1 GPa.
  7. Guess your initial PT for this sample (e.g. 680 °C and 0.7 GPa).
  8. Add a ROI for Local Bulk Composition (LBC) by selecting a large area in the map (>90 surf%). Any change in the shape of the ROI updates the LBC.
  9. Activate the H₂O fluid specie and set the amount of H to 0.5 mol and then click "next".
  10. Select a solution model and add a ROI for the following phases: "biotite", "garnet", "kfeldspar", "plagioclase", "quartz" (b-quartz) and "sillimanite". Exclude the accessory minerals for BA and LBC and click "next". Note that excluding a phase from the BA means that it will not be selected as part of the observed mineral assemblage. Excluding a phase from LBC means that the pixels of this phase will not be used when Bingo-Antidote calculate a local bulk composition.
  11. Use Bingo to find the conditions of the peak mineral assemblage by manually changing P and/or T until Qasm is 100%.
  12. Use Recipe 1 of Antidote "Find Optimal PTX" to obtain the optimal PT. Save the results of the last Bingo call and evaluate the quality of the model at the optimal conditions. What are the main differences between model and observations? Note that you can check the Qcmp values for each mineral to identify those that are not modelled correctly at these conditions.
  13. Save the current Bingo-Antidote project as BA_project_JUN92 using the button "save" available in the menu bar.
  14. Calculate the PT maps of quality factor. Note that the data is saved in an Antidote folder in the working directory.
  15. In LBC, activate the option "Optimize N" for the fluid and set the range of H between 0.001 and 0.05 mol. In this case the amount of H in the bulk composition will be optimised by Antidote.
  16. In Antidote, select "Optimization of compositional and activity variables" and "Scanning H (fixed PT)" and press the button "Antidote". Check the paper Lanari & Duesterhoeft (2019) for a description of the results of this method.
  17. Adjust the value of H and unselect the option "Optimize N".
  18. Recalculate the PT maps of quality factor and compare the results with the H₂O-saturated case.
  19. Calculate optimal P–T conditions for garnet core and rim using the recipe "single-phase thermobarometry".
  20. Use a floating window to calculate the changes between the sillimanite-absent and sillimanite-quartz domains.
  21. Run a scanning window optimization using a grid resolution of 320 pixels.
  22. Calculate a map of chemical potentials with different resolutions.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-addons.html b/.vitepress/dist/doc-addons.html new file mode 100644 index 0000000..595c60a --- /dev/null +++ b/.vitepress/dist/doc-addons.html @@ -0,0 +1,25 @@ + + + + + + Add-ons | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Add-ons

Based on XMapTools 4.5 embedded documentation – Help file version 09.06.2026


This page describes the tools available in the Add-ons section. Contact Pierre Lanari if you want to develop an add-on for XMapTools.

Export

This module allows XMapTools data to be exported. It is available for both Map Data and Spot Data.

The export format is defined by the user and can be used to export data for a specific software (e.g. MinPlot). Select the Data source, a maskfile and the type of data to be exported (e.g. Median, Mean or random selection, see Fig. 1).

The BRC correction is a correction from XMapTools 4.3 (Lanari et al. 2019) that eliminates mixing pixels using the maskfile data.


Export module

Figure 1: Export module for Map Data in XMapTools 4.5.

Spot data can be exported using the Export module available in the Add-on section. Open the module and select the Export Spot Data mode. Select your data source (e.g. Quanti in Fig. 2) and press the Generate & Save button.


Export Spot Data

Figure 2: Export module for Spot Data in XMapTools 4.5.

IMG Converter

The image converter module allows images to be converted to numeric data. Press the Load Image button to load an image. The image can be cropped by using the pink ROI and clicking the Crop Image button. The min and max values can be set manually (e.g. 0 and 100 in Fig. 3). Press the Save Map button to save the converted data into a txt file.


Image Converter

Figure 3: Image Converter module.

Bingo-Antidote

Bingo-Antidote is a petrological software originally developed by Pierre Lanari and Erik Duesterhoeft that offers an alternative modelling strategy based on iterative thermodynamic models integrated with quantitative compositional mapping. Bingo-Antidote 2.0 is distributed as an add-on to XMapTools. It comes with a redesigned graphical user interface and improved functionality.

Visit https://xmaptools.ch/bingo-antidote/ to find out more. See also the dedicated Bingo-Antidote documentation page.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-epma.html b/.vitepress/dist/doc-epma.html new file mode 100644 index 0000000..c919878 --- /dev/null +++ b/.vitepress/dist/doc-epma.html @@ -0,0 +1,190 @@ + + + + + + XMapTools documentation for EPMA | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

XMapTools documentation for EPMA

Table of contents

EPMA & SEM:

Data compatibility for EPMA

CAMECA microprobes

CAMECA Maps

Because of the file format used by CAMECA, XMapTools is reading the information of the following lines in the header:

  • Start [map coordinates]
  • Step Number [number of columns]
  • Line Number [Number of rows]
  • Image [to detect the map name].
  • If the number of steps and rows doesn't match the size of the table, data won't be imported. The file name is not used to determine the element name when Image is defined.

Therefore the minimum number of header lines is:

Start :  X = 15702 Y = -24236 Z = 240
+Step Number : 416
+Line Number : 440
+
+Y Unit : cts
+Image  : Ca Ka
+
+[Data table should start here... use tabulation, no coma]

XMapTools can import two types of map data file that are generated by CAMECA microprobes.

Type 1: Simple
FileName :   Bustamante 18-1-2013.impDat (Current dataset : 4) 
+Signal(s) Used :  Vs1 BSE Z, Na Ka, Ca Ka, Fe Ka, Mg Ka, Al Ka, Si Ka Eds, S  Ka Eds, Cl Ka Eds, K  Ka Eds, Ti Ka Eds, Mn Ka Eds, Zr La Eds, Ba La Eds 
+Spectromers Conditions :   Sp1 LTAP,  Sp2 LPET,  Sp3 LLIF,  Sp4 LTAP,  Sp5 LTAP,  Eds 1,  Eds 2,  Eds 3,  Eds 4,  Eds 5,  Eds 6,  Eds 7,  Eds 8 
+Full Spectromers Conditions :   Sp1 LTAP(2d= 25.745,K= 0.00218),  Sp2 LPET(2d= 8.75,K= 0.000144),  Sp3 LLIF(2d= 4.0267,K= 0.000058),  Sp4 LTAP(2d= 25.745,K= 0.00218),  Sp5 LTAP(2d= 25.745,K= 0.00218),  Eds 1,  Eds 2,  Eds 3,  Eds 4,  Eds 5,  Eds 6,  Eds 7,  Eds 8 
+Column Conditions :  Cond 1 : 15.1keV 302.5757nA  
+Date :  19-Jan-2013 
+User Name :  sx 
+Setup Name :  Bustamante.impSet 
+DataSet Comment :   
+Comment :   
+Analysis Date :  1/18/2013 12:42:21 PM 
+Project Name :  Caetano 
+Sample Name :  2013-01-18 
+Pha Parameters :  	 
+ 		Bias	Gain	Dtime	Blin	Wind	Mode	 
+  Sp1(Na Ka)	1300	2635	3	560	 	Inte	 
+  Sp2(Ca Ka)	1289	1100	3	560	 	Inte	 
+  Sp3(Fe Ka)	1824	550	3	560	 	Inte	 
+  Sp4(Mg Ka)	1293	2964	3	560	 	Inte	 
+  Sp5(Al Ka)	1280	2943	3	560	 	Inte 
+ EDS: Si Ka 
+ EDS: S  Ka 
+ EDS: Cl Ka 
+ EDS: K  Ka 
+ EDS: Ti Ka 
+ EDS: Mn Ka 
+ EDS: Zr La 
+ EDS: Ba La 
+Peak Position :   Sp1 46363,  Sp2 38388,  Sp3 48084,  Sp4 38500,  Sp5 32460 
+Start :   X = 7386 Y = -17430 Z = 49 
+Stop :   
+Dwell Time :  0.03 Sec  
+Acquisition type :   Stage Grid  
+Step Number :  1001 
+Line Number :  614 
+Beam Size :  3 µm 
+Step Size :  4. 
+
+Y Unit : 
+Image  : BSE Z
+
+83.0000	83.0000	88.0000	82.0000	82.0000	81.0000	82.0000	83.0000	83.0000	84.0000	89.0000	92.0000	83.0000	87.0000	83.0000	85.0000	86.0000	86.0000	85.0000	86.0000	88.0000	85.0000	82.0000	87.0000	85.0000	84.0000	87.0000	87.0000	85.0000	85.0000	85.0000	87.0000	86.0000	86.0000	85.0000	86.0000	90.0000	87.0000	87.0000	87.0000	86.0000	96.0000	107.0000	89.0000	88.0000	90.0000	101.0000	113.0000	92.0000	101.0000	81.0000	96.0000	79.0000	81.0000	91.0000	82.0000	128.0000	135.0000	126.0000	120.0000	94.0000	112.0000	84.0000	80.0000	82.0000	83.0000	88.0000	97.0000	82.0000	81.0000	80.0000	81.0000	82.0000	81.0000	131.0000	97.0000	82.0000	83.0000	84.0000	84.0000	80.0000	80.0000	81.0000	87.0000	96.0000	83.0000	84.0000	85.0000	79.0000	82.0000	81.0000	80.0000	81.0000	80.0000	80.0000	79.0000	80.0000	83.0000	82.0000	82.0000	82.0000	82.0000	80.0000	80.0000	86.0000	82.0000	86.0000	85.0000	81.0000	84.0000	83.0000	84.0000	85.0000	83.0000	82.0000	79.0000	81.0000	80.0000	83.0000	84.0000	84.0000	83.0000	84.0000	84.0000	80.0000	80.0000	80.0000	81.0000	85.0000	85.0000	85.0000	83.0000	84.0000	82.0000	83.0000	87.0000	87.0000	84.0000	80.0000	81.0000	85.0000	85.0000	84.0000	83.0000	85.0000	92.0000	81.0000	83.0000	85.0000	85.0000	84.0000	84.0000	84.0000	85.0000	87.0000	87.0000	85.0000	84.0000	84.0000	81.0000	85.0000	80.0000	84.0000	83.0000	84.0000	83.0000	89.0000	91.0000	88.0000	85.0000	89.0000	91.0000	95.0000	91.0000	96.0000	82.0000	84.0000	83.0000	82.0000	86.0000	82.0000	79.0000	86.0000	84.0000	83.0000	83.0000	83.0000	84.0000	83.0000	83.0000	84.0000	84.0000	80.0000	86.0000	86.0000	83.0000	85.0000	83.0000	83.0000	82.0000	91.0000	79.0000	80.0000	76.0000	82.0000	81.0000	81.0000	81.0000	81.0000	81.0000	80.0000	81.0000	83.0000	85.0000	85.0000	86.0000	87.0000	81.0000	83.0000	83.0000	79.0000	80.0000	81.0000	78.0000	84.0000	83.0000	83.0000	76.0000	78.0000	81.0000	80.0000	80.0000	81.0000	80.0000	81.0000	75.0000	81.0000	80.0000	86.0000	115.0000	78.0000	80.0000	83.0000	79.0000	104.0000	102.0000	94.0000	90.0000	84.0000	84.0000	82.0000	84.0000	82.0000	81.0000	81.0000	82.0000	82.0000	83.0000	83.0000	83.0000	83.0000	80.0000	87.0000	98.0000	85.0000	79.0000	82.0000	82.0000	82.0000	83.0000	79.0000	100.0000	115.0000	80.0000	80.0000	80.0000	81.0000	90.0000	75.0000	82.0000	80.0000	79.0000	78.0000	84.0000	81.0000	81.0000	111.0000	107.0000	83.0000	85.0000	83.0000	82.0000	111.0000	84.0000	80.0000	83.0000	70.0000	80.0000	82.0000	83.0000	82.0000	82.0000	81.0000	92.0000	83.0000	86.0000	85.0000	102.0000	101.0000	79.0000	87.0000	84.0000	84.0000	82.0000	86.0000	95.0000	124.0000	84.0000	82.0000	80.0000	85.0000	85.0000	80.0000	81.0000	88.0000	92.0000	88.0000	86.0000	76.0000	83.0000	86.0000	82.0000	82.0000	83.0000	80.0000	80.0000	79.0000	80.0000	80.0000	78.0000	82.0000	88.0000	89.0000	91.0000	88.0000	86.0000	92.0000	97.0000	81.0000	78.0000	79.0000	79.0000	82.0000	82.0000	80.0000	77.0000	80.0000	79.0000	79.0000	80.0000	87.0000	85.0000	85.0000	85.0000	84.0000	83.0000	80.0000	80.0000	79.0000	79.0000	78.0000	84.0000	82.0000	81.0000	80.0000	78.0000	79.0000	80.0000	83.0000	79.0000	81.0000	80.0000	79.0000	77.0000	77.0000	78.0000	85.0000	85.0000	82.0000	85.0000	79.0000	80.0000	80.0000	79.0000	79.0000	79.0000	79.0000	80.0000	85.0000	84.0000	82.0000	80.0000	80.0000	79.0000	79.0000	80.0000	79.0000	80.0000	80.0000	79.0000	80.0000	80.0000	80.0000	82.0000	85.0000	85.0000	85.0000	85.0000	87.0000	80.0000	80.0000	80.0000	84.0000	81.0000	81.0000	94.0000	81.0000	81.0000	81.0000	89.0000	81.0000	80.0000	79.0000	80.0000	85.0000	85.0000	83.0000	84.0000	85.0000	80.0000	80.0000	83.0000	85.0000	88.0000	86.0000	80.0000	80.0000	80.0000	80.0000	80.0000	80.0000	80.0000	81.0000	82.0000	80.0000	83.0000	84.0000	122.0000	99.0000	76.0000	80.0000	82.0000	83.0000	82.0000	86.0000	80.0000	75.0000	91.0000	87.0000	61.0000	74.0000	59.0000	82.0000	94.0000	85.0000	105.0000	87.0000	52.0000	82.0000	88.0000	84.0000	79.0000	80.0000	80.0000	79.0000	80.0000	79.0000	79.0000	81.0000	85.0000	84.0000	84.0000	85.0000	86.0000	85.0000	85.0000	79.0000	80.0000	79.0000	83.0000	80.0000	79.0000	79.0000	79.0000	89.0000	78.0000	80.0000	80.0000	79.0000	79.0000	80.0000	80.0000	81.0000	85.0000	79.0000	78.0000	85.0000	82.0000	78.0000	79.0000	79.0000	78.0000	80.0000	78.0000	78.0000	78.0000	78.0000	79.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	78.0000	84.0000	85.0000	84.0000	79.0000	79.0000	79.0000	88.0000	83.0000	79.0000	86.0000	98.0000	85.0000	81.0000	80.0000	79.0000	83.0000	79.0000	79.0000	83.0000	85.0000	84.0000	77.0000	77.0000	80.0000	81.0000	79.0000	81.0000	78.0000	78.0000	78.0000	79.0000	78.0000	78.0000	79.0000	79.0000	79.0000	79.0000	86.0000	84.0000	80.0000	79.0000	79.0000	82.0000	80.0000	79.0000	79.0000	78.0000	78.0000	79.0000	79.0000	78.0000	78.0000	79.0000	80.0000	78.0000	85.0000	77.0000	76.0000	78.0000	78.0000	77.0000	76.0000	79.0000	78.0000	79.0000	78.0000	79.0000	84.0000	85.0000	84.0000	85.0000	84.0000	81.0000	85.0000	84.0000	78.0000	78.0000	79.0000	79.0000	78.0000	79.0000	80.0000	80.0000	112.0000	86.0000	88.0000	86.0000	86.0000	84.0000	83.0000	83.0000	84.0000	83.0000	84.0000	76.0000	79.0000	79.0000	78.0000	78.0000	79.0000	79.0000	79.0000	79.0000	79.0000	79.0000	82.0000	89.0000	88.0000	85.0000	85.0000	86.0000	85.0000	84.0000	85.0000	83.0000	85.0000	85.0000	83.0000	89.0000	86.0000	84.0000	86.0000	87.0000	85.0000	86.0000	85.0000	84.0000	87.0000	88.0000	88.0000	85.0000	80.0000	80.0000	80.0000	79.0000	78.0000	79.0000	79.0000	79.0000	80.0000	79.0000	81.0000	86.0000	85.0000	86.0000	86.0000	84.0000	85.0000	84.0000	84.0000	84.0000	91.0000	85.0000	84.0000	83.0000	83.0000	86.0000	88.0000	89.0000	88.0000	86.0000	85.0000	83.0000	84.0000	84.0000	84.0000	84.0000	83.0000	89.0000	79.0000	78.0000	84.0000	81.0000	84.0000	84.0000	83.0000	80.0000	86.0000	83.0000	81.0000	81.0000	80.0000	78.0000	78.0000	81.0000	78.0000	79.0000	123.0000	107.0000	82.0000	83.0000	78.0000	76.0000	78.0000	77.0000	78.0000	78.0000	81.0000	80.0000	75.0000	77.0000	78.0000	78.0000	84.0000	78.0000	79.0000	79.0000	85.0000	85.0000	84.0000	82.0000	84.0000	85.0000	81.0000	85.0000	83.0000	84.0000	84.0000	84.0000	84.0000	84.0000	85.0000	84.0000	85.0000	84.0000	84.0000	84.0000	85.0000	85.0000	90.0000	86.0000	92.0000	86.0000	85.0000	85.0000	85.0000	86.0000	106.0000	84.0000	83.0000	85.0000	85.0000	84.0000	87.0000	108.0000	84.0000	83.0000	84.0000	84.0000	84.0000	88.0000	83.0000	83.0000	83.0000	84.0000	83.0000	85.0000	94.0000	84.0000	85.0000	85.0000	79.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	79.0000	79.0000	81.0000	86.0000	117.0000	85.0000	84.0000	85.0000	85.0000	83.0000	105.0000	86.0000	86.0000	89.0000	89.0000	88.0000	89.0000	90.0000	84.0000	84.0000	83.0000	77.0000	76.0000	80.0000	82.0000	79.0000	82.0000	88.0000	82.0000	84.0000	83.0000	92.0000	88.0000	78.0000	78.0000	77.0000	78.0000	78.0000	77.0000	80.0000	80.0000	77.0000	77.0000	77.0000	77.0000	77.0000	82.0000	96.0000	83.0000	83.0000	77.0000	77.0000	77.0000	78.0000	77.0000	78.0000	78.0000	78.0000	84.0000	83.0000	84.0000	84.0000	84.0000	84.0000	83.0000	84.0000	84.0000	83.0000	83.0000	84.0000	82.0000	82.0000	83.0000	83.0000	87.0000	82.0000	77.0000	85.0000	76.0000	77.0000	77.0000	78.0000	78.0000	77.0000	77.0000	78.0000	83.0000	84.0000	84.0000	85.0000	82.0000	82.0000	83.0000	82.0000	82.0000	82.0000	83.0000	86.0000	81.0000	82.0000	84.0000	83.0000	83.0000	83.0000	83.0000	77.0000	77.0000	78.0000	77.0000	76.0000	77.0000	79.0000	80.0000	90.0000	83.0000	82.0000	82.0000	82.0000	82.0000	83.0000	85.0000	87.0000	84.0000	82.0000	90.0000	83.0000	89.0000	82.0000	81.0000	83.0000	83.0000	83.0000	83.0000	83.0000	82.0000	80.0000	77.0000	83.0000	82.0000	82.0000	82.0000	83.0000	82.0000	82.0000	82.0000	78.0000	77.0000	77.0000	77.0000	77.0000	77.0000	77.0000	78.0000	78.0000	88.0000	82.0000	82.0000	83.0000	83.0000	84.0000	83.0000	77.0000	77.0000	77.0000	77.0000	77.0000	77.0000	77.0000	82.0000	76.0000	77.0000	79.0000	76.0000	77.0000	78.0000	76.0000	76.0000	77.0000	76.0000	77.0000	77.0000	74.0000	74.0000	77.0000	77.0000	77.0000	77.0000	76.0000	76.0000	77.0000	77.0000	77.0000	76.0000	77.0000	77.0000	76.0000	77.0000	78.0000
+82.0000	83.0000	82.0000	80.0000	79.0000	80.0000	84.0000	81.0000	81.0000	82.0000	85.0000	88.0000	86.0000	86.0000	84.0000	83.0000	83.0000	84.0000	83.0000	84.0000	83.0000	85.0000	85.0000	87.0000	86.0000	84.0000	91.0000	91.0000	85.0000	85.0000	85.0000	86.0000	87.0000	89.0000	91.0000	87.0000	94.0000	85.0000	86.0000	90.0000	128.0000	95.0000	110.0000	115.0000	105.0000	105.0000	93.0000	95.0000	102.0000	78.0000	87.0000	85.0000	80.0000	80.0000	88.0000	80.0000	84.0000	128.0000	112.0000	113.0000	102.0000	126.0000	80.0000	80.0000	80.0000	83.0000	85.0000	82.0000	77.0000	79.0000	79.0000	81.0000	81.0000	81.0000	97.0000	90.0000	81.0000	82.0000	83.0000	82.0000	79.0000	82.0000	82.0000	84.0000	87.0000	82.0000	82.0000	84.0000	77.0000	85.0000	80.0000	80.0000	79.0000	80.0000	79.0000	79.0000	82.0000	82.0000	82.0000	81.0000	81.0000	81.0000	81.0000	81.0000	84.0000	82.0000	82.0000	79.0000	79.0000	81.0000	83.0000	83.0000	84.0000	82.0000	78.0000	78.0000	81.0000	80.0000	84.0000	83.0000	83.0000	82.0000	83.0000	81.0000	79.0000	79.0000	79.0000	79.0000	83.0000	83.0000	83.0000	85.0000	85.0000	80.0000	82.0000	84.0000	84.0000	82.0000	81.0000	83.0000	82.0000	83.0000	83.0000	80.0000	83.0000	82.0000	85.0000	83.0000	79.0000	82.0000	83.0000	83.0000	82.0000	85.0000	86.0000	87.0000	84.0000	84.0000	82.0000	82.0000	83.0000	82.0000	81.0000	83.0000	84.0000	84.0000	89.0000	90.0000	81.0000	87.0000	90.0000	89.0000	90.0000	94.0000	89.0000	81.0000	82.0000	82.0000	80.0000	80.0000	84.0000	79.0000	83.0000	82.0000	82.0000	82.0000	82.0000	83.0000	81.0000	95.0000	84.0000	82.0000	83.0000	86.0000	92.0000	84.0000	81.0000	82.0000	82.0000	81.0000	88.0000	78.0000	80.0000	79.0000	81.0000	80.0000	80.0000	80.0000	81.0000	80.0000	80.0000	82.0000	82.0000	79.0000	82.0000	78.0000	83.0000	80.0000	82.0000	83.0000	78.0000	81.0000	80.0000	83.0000	82.0000	82.0000	84.0000	76.0000	78.0000	79.0000	79.0000	80.0000	81.0000	79.0000	80.0000	80.0000	79.0000	80.0000	82.0000	123.0000	88.0000	78.0000	81.0000	75.0000	89.0000	84.0000	90.0000	87.0000	82.0000	160.0000	105.0000	97.0000	82.0000	79.0000	82.0000	81.0000	82.0000	81.0000	82.0000	81.0000	82.0000	75.0000	89.0000	85.0000	83.0000	79.0000	80.0000	81.0000	80.0000	81.0000	82.0000	105.0000	93.0000	79.0000	80.0000	80.0000	80.0000	106.0000	81.0000	77.0000	79.0000	78.0000	83.0000	82.0000	80.0000	82.0000	125.0000	84.0000	83.0000	81.0000	87.0000	81.0000	73.0000	82.0000	82.0000	83.0000	91.0000	81.0000	80.0000	80.0000	81.0000	81.0000	81.0000	87.0000	82.0000	84.0000	82.0000	92.0000	79.0000	78.0000	83.0000	84.0000	82.0000	81.0000	82.0000	87.0000	92.0000	79.0000	79.0000	81.0000	87.0000	79.0000	83.0000	83.0000	86.0000	89.0000	91.0000	79.0000	78.0000	90.0000	78.0000	77.0000	78.0000	83.0000	80.0000	79.0000	79.0000	79.0000	84.0000	79.0000	80.0000	81.0000	83.0000	87.0000	82.0000	79.0000	80.0000	89.0000	81.0000	77.0000	77.0000	80.0000	79.0000	78.0000	80.0000	80.0000	80.0000	78.0000	76.0000	79.0000	82.0000	84.0000	85.0000	84.0000	83.0000	78.0000	78.0000	79.0000	79.0000	79.0000	80.0000	79.0000	78.0000	80.0000	76.0000	77.0000	78.0000	79.0000	79.0000	91.0000	81.0000	79.0000	81.0000	81.0000	82.0000	82.0000	84.0000	84.0000	81.0000	79.0000	82.0000	77.0000	80.0000	80.0000	82.0000	78.0000	78.0000	78.0000	92.0000	81.0000	85.0000	78.0000	84.0000	77.0000	79.0000	79.0000	78.0000	79.0000	79.0000	78.0000	79.0000	86.0000	79.0000	86.0000	84.0000	84.0000	85.0000	85.0000	90.0000	80.0000	79.0000	79.0000	83.0000	80.0000	80.0000	84.0000	79.0000	80.0000	131.0000	91.0000	83.0000	79.0000	80.0000	82.0000	82.0000	85.0000	80.0000	80.0000	80.0000	79.0000	80.0000	81.0000	84.0000	88.0000	86.0000	80.0000	80.0000	80.0000	80.0000	80.0000	79.0000	80.0000	80.0000	81.0000	81.0000	83.0000	86.0000	103.0000	86.0000	82.0000	81.0000	85.0000	88.0000	85.0000	83.0000	86.0000	59.0000	101.0000	91.0000	57.0000	58.0000	66.0000	61.0000	60.0000	102.0000	87.0000	80.0000	56.0000	90.0000	92.0000	85.0000	81.0000	80.0000	80.0000	81.0000	81.0000	79.0000	78.0000	79.0000	86.0000	84.0000	83.0000	83.0000	84.0000	85.0000	84.0000	78.0000	78.0000	78.0000	85.0000	84.0000	79.0000	78.0000	78.0000	79.0000	78.0000	79.0000	79.0000	78.0000	79.0000	78.0000	79.0000	79.0000	84.0000	85.0000	78.0000	84.0000	84.0000	77.0000	78.0000	78.0000	78.0000	76.0000	75.0000	74.0000	76.0000	78.0000	78.0000	77.0000	75.0000	75.0000	81.0000	78.0000	78.0000	77.0000	83.0000	82.0000	82.0000	77.0000	78.0000	77.0000	83.0000	77.0000	78.0000	84.0000	104.0000	84.0000	75.0000	76.0000	78.0000	82.0000	78.0000	79.0000	83.0000	83.0000	84.0000	78.0000	78.0000	78.0000	75.0000	76.0000	76.0000	77.0000	77.0000	77.0000	77.0000	76.0000	77.0000	78.0000	78.0000	80.0000	85.0000	83.0000	84.0000	79.0000	78.0000	78.0000	75.0000	79.0000	78.0000	78.0000	77.0000	77.0000	78.0000	78.0000	78.0000	77.0000	78.0000	77.0000	77.0000	81.0000	77.0000	75.0000	78.0000	78.0000	77.0000	80.0000	79.0000	78.0000	78.0000	77.0000	80.0000	83.0000	84.0000	84.0000	83.0000	105.0000	84.0000	89.0000	83.0000	76.0000	77.0000	77.0000	78.0000	77.0000	79.0000	79.0000	79.0000	146.0000	87.0000	89.0000	84.0000	85.0000	83.0000	83.0000	82.0000	82.0000	83.0000	81.0000	78.0000	76.0000	78.0000	78.0000	77.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	81.0000	81.0000	82.0000	83.0000	85.0000	85.0000	82.0000	84.0000	84.0000	84.0000	84.0000	85.0000	83.0000	83.0000	80.0000	86.0000	90.0000	88.0000	82.0000	85.0000	85.0000	85.0000	86.0000	85.0000	84.0000	84.0000	82.0000	79.0000	78.0000	78.0000	78.0000	78.0000	78.0000	79.0000	79.0000	85.0000	81.0000	85.0000	85.0000	85.0000	85.0000	83.0000	85.0000	84.0000	83.0000	84.0000	83.0000	84.0000	83.0000	83.0000	84.0000	93.0000	87.0000	85.0000	83.0000	85.0000	83.0000	83.0000	82.0000	87.0000	85.0000	91.0000	85.0000	85.0000	77.0000	78.0000	82.0000	79.0000	81.0000	82.0000	110.0000	77.0000	76.0000	76.0000	77.0000	79.0000	78.0000	78.0000	78.0000	78.0000	78.0000	77.0000	81.0000	102.0000	78.0000	77.0000	77.0000	77.0000	78.0000	77.0000	76.0000	78.0000	77.0000	79.0000	78.0000	77.0000	78.0000	78.0000	76.0000	76.0000	78.0000	78.0000	83.0000	84.0000	79.0000	82.0000	84.0000	84.0000	83.0000	83.0000	84.0000	83.0000	84.0000	84.0000	84.0000	85.0000	83.0000	86.0000	90.0000	83.0000	83.0000	84.0000	85.0000	84.0000	84.0000	83.0000	84.0000	85.0000	85.0000	84.0000	84.0000	95.0000	102.0000	83.0000	83.0000	84.0000	84.0000	82.0000	83.0000	95.0000	83.0000	83.0000	83.0000	89.0000	83.0000	83.0000	82.0000	83.0000	83.0000	82.0000	83.0000	82.0000	85.0000	82.0000	83.0000	83.0000	78.0000	78.0000	77.0000	77.0000	78.0000	78.0000	78.0000	78.0000	78.0000	81.0000	90.0000	89.0000	83.0000	85.0000	85.0000	96.0000	116.0000	101.0000	84.0000	80.0000	90.0000	86.0000	88.0000	87.0000	87.0000	82.0000	82.0000	78.0000	77.0000	88.0000	78.0000	77.0000	76.0000	79.0000	84.0000	82.0000	83.0000	83.0000	81.0000	77.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	88.0000	76.0000	76.0000	77.0000	76.0000	77.0000	76.0000	81.0000	83.0000	85.0000	80.0000	76.0000	77.0000	76.0000	77.0000	76.0000	77.0000	77.0000	78.0000	82.0000	82.0000	83.0000	84.0000	85.0000	83.0000	82.0000	82.0000	82.0000	81.0000	84.0000	83.0000	82.0000	81.0000	82.0000	82.0000	83.0000	82.0000	81.0000	77.0000	78.0000	76.0000	76.0000	77.0000	77.0000	76.0000	77.0000	82.0000	80.0000	82.0000	83.0000	83.0000	82.0000	81.0000	80.0000	82.0000	82.0000	82.0000	81.0000	84.0000	81.0000	82.0000	83.0000	80.0000	80.0000	82.0000	76.0000	76.0000	76.0000	77.0000	77.0000	76.0000	77.0000	78.0000	76.0000	79.0000	82.0000	82.0000	82.0000	82.0000	82.0000	88.0000	85.0000	86.0000	82.0000	82.0000	107.0000	83.0000	85.0000	80.0000	78.0000	83.0000	82.0000	85.0000	81.0000	82.0000	81.0000	78.0000	76.0000	83.0000	82.0000	80.0000	80.0000	81.0000	81.0000	82.0000	81.0000	74.0000	76.0000	76.0000	77.0000	77.0000	76.0000	76.0000	78.0000	77.0000	77.0000	81.0000	82.0000	82.0000	92.0000	83.0000	82.0000	76.0000	79.0000	76.0000	77.0000	77.0000	76.0000	77.0000	81.0000	77.0000	77.0000	80.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	76.0000	77.0000	76.0000	76.0000	77.0000	77.0000
Type 2: With column and row numbers
FileName :  Celine_091321.impDat (Current dataset : 1)
+Signal(s) Used : Ca Ka, Na Ka, K  Ka, Al Ka, Mn Ka, Cr Ka, Mg Ka, Ti Ka, Si Ka, Fe Ka
+Spectrometers Conditions :  Sp1 PET,  Sp2 LTAP,  Sp3 LPET,  Sp4 TAP,  Sp5 LLIF,  Sp1 PET,  Sp2 LTAP,  Sp3 LPET,  Sp4 TAP,  Sp5 LLIF
+Full Spectrometers Conditions :  Sp1 PET(2d= 8.75,K= 0.000144),  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05),  Sp1 PET(2d= 8.75,K= 0.000144),  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05)
+Column Conditions : Cond 1 : 15keV 278.8476nA , Cond 2 : 15keV 280.8923nA 
+	, Cond 1 : Ca Ka, Na Ka, K  Ka, Al Ka, Mn Ka
+	, Cond 2 : Cr Ka, Mg Ka, Ti Ka, Si Ka, Fe Ka
+Date : Sep-15-2021
+User Name : SX-663\SX-User
+Setup Name : C:\SX data\Analysis Setups\Image&Profiles\Celine_091321.impSet
+DataSet Comment : BOO17-5N_Map1
+Comment :  
+Analysis Date : Tuesday, September 14, 2021 6:57:42 AM
+Project Name : Default Project
+Sample Name : Default Sample
+Analysis Parameters : 	
+Sp	Elements	Xtal	Position	Bias	Gain	Dtime	Blin	Wind	Mode	
+Sp1	Ca Ka		PET	38388	1304	1031	3	560	 	Inte
+Sp2	Na Ka		LTAP	46363	1311	3055	3	560	 	Inte
+Sp3	K  Ka		LPET	42765	1846	985	3	560	 	Inte
+Sp4	Al Ka		TAP	32459	1325	3181	3	560	 	Inte
+Sp5	Mn Ka		LLIF	52202	1820	411	3	560	 	Inte
+Sp1	Cr Ka		PET	26172	1304	1031	3	560	 	Inte
+Sp2	Mg Ka		LTAP	38500	1311	3055	3	560	 	Inte
+Sp3	Ti Ka		LPET	31416	1846	985	3	560	 	Inte
+Sp4	Si Ka		TAP	27737	1325	3181	3	560	 	Inte
+Sp5	Fe Ka		LLIF	48083	1820	411	3	560	 	Inte
+Peak Position :  Sp1 38388,  Sp2 46363,  Sp3 42765,  Sp4 32459,  Sp5 52202,  Sp1 26172,  Sp2 38500,  Sp3 31416,  Sp4 27737,  Sp5 48083
+Start :  X = -1748 Y = -29677 Z = 14
+Stop : 
+Dwell Time : 0.07 Sec 
+Acquisition type :  Stage Grid 
+Step Number : 504
+Line Number : 504
+Beam Size : N/A
+Step Size : 4.000
+
+
+
+Y Unit : cts
+
+
+	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	77	78	79	80	81	82	83	84	85	86	87	88	89	90	91	92	93	94	95	96	97	98	99	100	101	102	103	104	105	106	107	108	109	110	111	112	113	114	115	116	117	118	119	120	121	122	123	124	125	126	127	128	129	130	131	132	133	134	135	136	137	138	139	140	141	142	143	144	145	146	147	148	149	150	151	152	153	154	155	156	157	158	159	160	161	162	163	164	165	166	167	168	169	170	171	172	173	174	175	176	177	178	179	180	181	182	183	184	185	186	187	188	189	190	191	192	193	194	195	196	197	198	199	200	201	202	203	204	205	206	207	208	209	210	211	212	213	214	215	216	217	218	219	220	221	222	223	224	225	226	227	228	229	230	231	232	233	234	235	236	237	238	239	240	241	242	243	244	245	246	247	248	249	250	251	252	253	254	255	256	257	258	259	260	261	262	263	264	265	266	267	268	269	270	271	272	273	274	275	276	277	278	279	280	281	282	283	284	285	286	287	288	289	290	291	292	293	294	295	296	297	298	299	300	301	302	303	304	305	306	307	308	309	310	311	312	313	314	315	316	317	318	319	320	321	322	323	324	325	326	327	328	329	330	331	332	333	334	335	336	337	338	339	340	341	342	343	344	345	346	347	348	349	350	351	352	353	354	355	356	357	358	359	360	361	362	363	364	365	366	367	368	369	370	371	372	373	374	375	376	377	378	379	380	381	382	383	384	385	386	387	388	389	390	391	392	393	394	395	396	397	398	399	400	401	402	403	404	405	406	407	408	409	410	411	412	413	414	415	416	417	418	419	420	421	422	423	424	425	426	427	428	429	430	431	432	433	434	435	436	437	438	439	440	441	442	443	444	445	446	447	448	449	450	451	452	453	454	455	456	457	458	459	460	461	462	463	464	465	466	467	468	469	470	471	472	473	474	475	476	477	478	479	480	481	482	483	484	485	486	487	488	489	490	491	492	493	494	495	496	497	498	499	500	501	502	503	504
+1	1987	1954	2079	1974	2083	2103	2073	2128	2028	1850	2121	1916	1938	2013	2066	2037	2109	2075	2093	2032	2053	2087	2118	2130	2082	2047	1986	2056	1994	2006	1920	1949	1970	1981	1922	2279	1986	1984	1992	1983	1960	1958	1996	1910	1972	1939	1934	1962	1984	1948	1933	1929	1850	1921	1948	1941	1942	1978	1997	2014	1973	1939	1985	1871	1595	1935	1964	1864	1905	1894	1896	1836	1894	1908	1920	1804	1876	1871	1812	1833	1928	1830	1844	1874	1982	1853	1934	1857	1920	1837	1856	1882	1964	2920	2025	1817	1908	1967	1925	1901	1947	1895	1912	1886	1967	1898	1945	1939	1935	1975	1962	2007	1963	1930	1941	1914	1893	1994	1986	1930	1954	2039	1950	2004	2005	1976	1943	1906	2046	2070	2105	2129	2971	2420	2304	2475	2051	2036	2184	2213	2047	2049	2064	2043	2788	2104	1979	1972	2056	2022	2153	2087	2180	2124	2094	1993	1992	2097	1957	2016	2014	3758	2197	2042	2032	2024	2018	2226	2570	3155	2870	2174	2000	1983	1942	2018	1974	1944	2043	1962	2047	1954	1961	2035	2083	2085	2003	2020	2069	2153	1988	1957	2014	2087	2054	1963	2052	2043	1999	1947	2007	2109	2035	2016	2100	2000	2013	1980	2012	2051	2072	2083	1978	2015	2078	2232	3343	3864	3847	2105	3254	3823	3869	3952	4521	3751	4286	4042	3589	3693	3570	3397	3597	3553	3877	3837	3747	3997	3824	2952	2986	3676	3975	4050	4008	3699	3649	3843	3940	4099	3524	3987	4367	3461	2725	2960	2424	2145	2095	2132	1941	2070	2081	2488	2146	2270	2069	2080	2078	2062	2666	2099	2120	2152	2076	2052	2041	2033	2054	2067	2222	2012	2114	2088	2031	2142	2107	2265	2502	2852	3239	3536	3372	3914	2630	3431	3709	2810	3996	3249	3964	2999	3846	3832	3698	3362	2881	2706	2166	1969	1923	2051	2080	2138	2002	2054	2021	1992	2047	1967	2025	2007	1934	2068	1980	1990	1914	2039	1982	1995	2016	2098	2067	2048	1999	2044	3706	3266	1668	1885	1802	2099	1990	2050	1939	2059	2032	2039	2112	2146	2052	2088	2062	2041	2006	2086	2084	2090	2087	2046	1996	2078	2103	2030	2069	2018	2019	1994	1957	2042	1978	2160	2823	3063	2137	2088	2327	1857	2111	2065	2149	2063	2049	1962	1987	2056	2027	2041	1925	1945	2027	2001	1985	2006	2000	2033	1998	1951	1929	1985	1983	1939	1983	1967	1990	2063	1946	2017	1998	1990	2039	2048	2012	1996	2065	2041	2001	2053	2022	2013	1974	2074	2572	2105	2021	2040	2064	2071	2022	2020	2057	2032	2056	2095	1877	2073	1991	1990	2428	1931	2029	2031	2016	2006	2046	2024	1984	1941	2071	2061	2049	2042	1974	2010	1989	1970	2000	1984	2010	2001	1932	1921	1949	1958	2033	2998	1998	2039	2012	2023	1988	2020	2522	2108	1998	2059	2051	2008	2054	2096	2009	1914	1802	1440	1605	1981	2049	1930	2037	1900	1945	1919	1976	1969	1966	1857	1934	1934	1913	1958	1862	1945	1895	1943	
+2	2332	2198	2226	2202	2107	2090	2033	2026	1757	2032	2119	1966	1903	2029	2090	2051	2144	1991	1874	2096	2019	2018	2093	2067	2154	1942	1989	2095	1990	2047	1987	2005	1986	1939	2445	2190	2034	2024	1979	1945	1995	1999	1934	2001	1962	1955	1965	1918	1902	1908	1922	1963	1921	1935	1928	1966	1953	1925	1986	1952	1993	1934	2000	1935	1301	1842	1905	1886	1910	1884	1861	1874	1887	1869	1871	1802	1881	1864	1846	1880	1891	1838	1866	1829	1805	1804	1908	1856	1972	1823	1903	1921	2755	1959	1915	1884	1873	1890	1936	1924	1959	2005	1863	1956	1926	1949	1909	2007	1982	1855	1999	1905	1855	1917	1921	1975	1917	2006	1979	1977	2020	2010	1995	1968	1944	1922	1949	1987	2004	2045	2096	2131	2339	2289	2020	2457	2116	1978	2056	2164	2286	2044	2068	2084	2587	2245	1952	1826	1988	2122	2205	1928	2096	2107	2095	2072	2077	1989	2030	1904	1963	3104	1961	2092	2102	2375	3134	3825	4043	3994	3763	3068	2383	1956	1995	2063	1986	1965	1923	2017	2094	2013	2049	2000	2006	2047	2078	2063	1979	2092	2001	1960	2014	2033	2011	2005	2002	1992	2011	1993	2067	2034	1982	2026	2088	2035	2025	2038	2055	2065	2005	2093	2043	1990	2157	2078	2801	3693	3767	3727	2846	3401	4214	4116	3366	3732	3929	4034	3755	3730	3353	3589	3412	3894	4008	4006	3844	4042	3954	3862	3095	4028	4009	3864	4144	3949	3285	3684	2972	3954	4209	3549	3351	3483	3512	2830	3129	2177	2469	2111	2167	2063	2209	2344	2205	2145	2187	2107	1978	1984	2621	2051	2018	1989	2032	2002	2061	2105	2081	2265	2051	2040	2101	2085	2115	2125	2868	3459	3643	3598	3684	3661	3244	3541	3935	3975	4090	4612	3863	3959	3461	3508	3268	3851	3696	3301	2613	2099	1899	1983	2001	2060	1986	2044	2080	1987	2019	2083	2025	1916	1930	2083	1962	2085	2002	2009	2010	2044	2010	1980	2011	2021	2049	2040	2040	2096	2394	4142	3000	1991	2024	1767	2041	2045	1954	2069	2093	1933	2081	2131	2158	2050	2027	1994	2154	2091	2202	2044	2086	2057	2024	2064	1950	2045	2007	2068	1990	1992	1937	1974	1964	2363	3343	2345	2163	2123	2050	1155	2049	2024	2059	2012	1987	2073	2126	2034	1927	2006	1949	1967	1983	1987	1990	1983	2123	1999	1909	1939	1982	1976	1991	1950	1969	2074	1954	2042	1938	2043	2038	2022	1970	2005	1995	2101	1987	2027	2063	2035	1972	1972	1955	1939	2440	2033	2080	2033	2086	2038	2053	2037	2047	2043	2110	2024	1955	2027	1997	1854	2383	2014	2019	2018	2114	2001	2047	2003	2030	2040	2086	2043	2020	1996	1996	2041	1976	1904	1922	1964	2012	1971	2012	1930	1940	2013	3141	2025	1982	2039	1976	1957	1920	2018	2133	2033	2096	1982	2105	1929	1965	2043	1920	1806	2002	1985	1959	2016	1909	1995	1971	1986	1964	1914	1917	1942	1956	1921	1917	1927	1920	2006	1977	1948	1875	1857

Spot analyses

XMapTools can import two types of spot data file that are generated by CAMECA microprobes.

Type 1: Oxide only
DataSet/Point	Na2O	MgO	SiO2	Al2O3	K2O	FeO	MnO	BaO	Cr2O3	Cl	CaO	TiO2	Total	X	Y	Z	Comment	Mean Z	Date
+1 / 1 .	0.000	0.047	0.000	0.000	0.012	0.049	0.102	0.000	0.000	0.019	54.334	0.000	54.562	7160	-17670	49	 	9.049	21.01.13 12:56
+2 / 2 .	0.043	0.020	29.964	1.474	0.019	0.716	0.118	0.435	0.014	0.013	27.921	37.349	98.086	6456	-17357	50	 	14.564	21.01.13 12:59

In this example data from Na2O to TiO2 are imported.

Each line represents a single analysis. The first entry DataSet/Point is defined using space (noted ” ” below) whereas tabulations (“\t”) are used to separate other entries. Only this format can be properly read by XMapTools. The correct format for each data row is:

Number” “/” “Number” “.”\t”Number”\t”Number”\t”Number …

Example:

DataSet/Point	Na2O	MgO	SiO2	Al2O3	K2O	FeO	MnO	BaO	Cr2O3	Cl	CaO	TiO2	Total	X	Y	Z	Comment	Mean Z	Date
+1 / 1 .	0.000	0.047	0.000	0.000	0.012	0.049	0.102	0.000	0.000	0.019	54.334	0.000	54.562	7160	-17670	49	 	9.049	21.01.13 12:56
+2 / 2 .	0.043	0.020	29.964	1.474	0.019	0.716	0.118	0.435	0.014	0.013	27.921	37.349	98.086	6456	-17357	50	 	14.564	21.01.13 12:59

Alternatively, the following input also works:

DataSet/Point	Na2O	MgO	SiO2	Al2O3	K2O	FeO	MnO	BaO	Cr2O3	Cl	CaO	TiO2	Total	X	Y	Z	Comment	Mean Z	Date
+1	0.000	0.047	0.000	0.000	0.012	0.049	0.102	0.000	0.000	0.019	54.334	0.000	54.562	7160	-17670	49	 	9.049	21.01.13 12:56
+2	0.043	0.020	29.964	1.474	0.019	0.716	0.118	0.435	0.014	0.013	27.921	37.349	98.086	6456	-17357	50	 	14.564	21.01.13 12:59
Type 2: Full output

An example is provided below. In this example, data ranging from Na₂O to FeO is imported.

FileName :  Celine_test_091321.qtiDat
+Signal(s) Used : Na Ka, Mg Ka, Al Ka, Si Ka, K  Ka, Ca Ka, Ti Ka, Cr Ka, Mn Ka, Fe Ka
+Spectrometers Conditions :  Sp2 LTAP,  Sp2 LTAP,  Sp4 TAP,  Sp4 TAP,  Sp3 LPET,  Sp1 PET,  Sp3 LPET,  Sp1 PET,  Sp5 LLIF,  Sp5 LLIF
+Full Spectrometers Conditions :  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp2 LTAP(2d= 25.745,K= 0.00218),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp4 TAP(2d= 25.745,K= 0.00218),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp1 PET(2d= 8.75,K= 0.000144),  Sp3 LPET(2d= 8.75,K= 0.000144),  Sp1 PET(2d= 8.75,K= 0.000144),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05),  Sp5 LLIF(2d= 4.0267,K= 5.8E-05)
+Column Conditions : Cond 1 : 15keV 20nA 
+Date : Sep-15-2021
+User Name : SX-663\SX-User
+Setup Name : C:\SX data\Analysis Setups\Quanti\Celine_091321.qtiSet
+DataSet Comment : BOO17-3S_map2_cpx1
+Comment :  
+Analysis Date : Monday, September 13, 2021 4:45:45 PM
+Project Name : Default Project
+Sample Name : Default Sample
+Analysis Parameters : 	
+Sp	Elements	Xtal	Position	Bg1	Bg2	Slope	Bias	Gain	Dtime	Blin	Wind	Mode	
+Sp2	Na Ka		LTAP	46369	-700	800	   	1311	3117	3	560	 	Inte
+Sp2	Mg Ka		LTAP	38513	-1150	1150	   	1311	3055	3	560	 	Inte
+Sp4	Al Ka		TAP	32464	   	800	1.2	1324	3227	3	560	 	Inte
+Sp4	Si Ka		TAP	27737	   	750	1.1	1325	3181	3	560	 	Inte
+Sp3	K  Ka		LPET	42762	-600	600	   	1845	981	3	560	 	Inte
+Sp1	Ca Ka		PET	38391	   	700	1.1	1307	1026	3	560	 	Inte
+Sp3	Ti Ka		LPET	31406	   	600	1.05	1846	985	3	560	 	Inte
+Sp1	Cr Ka		PET	26186	-500	500	   	1304	1031	3	560	 	Inte
+Sp5	Mn Ka		LLIF	52200	   	650	1.05	1820	412	3	560	 	Inte
+Sp5	Fe Ka		LLIF	48084	   	800	1.2	1820	411	3	560	 	Inte
+Peak Position :  Sp2 46369 (-700, 800),  Sp2 38513 (-1150, 1150),  Sp4 32464 (800, Slope = 1.2),  Sp4 27737 (750, Slope = 1.1),  Sp3 42762 (-600, 600),  Sp1 38391 (700, Slope = 1.1),  Sp3 31406 (600, Slope = 1.05),  Sp1 26186 (-500, 500),  Sp5 52200 (650, Slope = 1.05),  Sp5 48084 (800, Slope = 1.2)
+Current Sample Position :  X = -10413 Y = 32015 Z = 60 BeamX = 0.00 BeamX = 0.00
+Standard Name : 
+Na ,Al On albite
+Mg ,Si ,Ca On Wakefield diopside
+K  On kspar
+Ti On TiO2
+Cr On MgCr2O4
+Mn On Rhodon 41522 AMNH
+Fe On RKFAYb7
+Standard composition : 
+albite = Na : 8.77%, Al : 10.29%, Si : 32.13%, O  : 48.81%
+Wakefield diopside = Si : 25.94%, O  : 44.43%, Na : 0.02%, Mg : 11.22%, Al : 0.02%, Ca : 18.53%, Ti : 0.02%, Mn : 0.02%, Fe : 0.09%
+kspar = O  : 45.94%, Na : 0.85%, Al : 9.83%, Si : 30.10%, K  : 12.39%, Ba : 0.70%
+TiO2 = Ti : 59.95%, O  : 40.05%
+MgCr2O4 = Mg : 12.64%, Cr : 54.08%, O  : 33.28%
+Rhodon 41522 AMNH = O  : 37.73%, Mg : 2.36%, Si : 21.98%, Ca : 1.06%, Mn : 35.01%, Fe : 1.80%
+RKFAYb7 = Si : 13.84%, O  : 31.37%, Mg : 0.06%, Al : 0.05%, Ca : 0.02%, Mn : 1.55%, Fe : 52.62%, Zn : 0.38%
+Calibration file name (Element intensity cps/nA) : 
+Na ,Al : Other\albite_15kV_NaKa-Sp2-LTAP_AlKa-Sp4-TAP_010.calDat (Na : 127.8 cps/nA, Al : 189.2 cps/nA)
+Mg ,Si ,Ca : Other\Wakefield diopside_15kV_MgKa-Sp2-LTAP_SiKa-Sp4-TAP_CaKa-Sp1-PET_019.calDat (Mg : 315.4 cps/nA, Si : 541.5 cps/nA, Ca : 101.3 cps/nA)
+K  : Other\kspar_15kV_KKa-Sp3-LPET_017.calDat (K  : 208.0 cps/nA)
+Ti : Other\TiO2_15kV_TiKa-Sp3-LPET_029.calDat (Ti : 1589.2 cps/nA)
+Cr : Other\MgCr2O4_15kV_CrKa-Sp1-PET_013.calDat (Cr : 247.4 cps/nA)
+Mn : Other\Rhodon 41522 AMNH_15kV_MnKa-Sp5-LLIF_020.calDat (Mn : 192.7 cps/nA)
+Fe : Other\RKFAYb7_15kV_FeKa-Sp5-LLIF_057.calDat (Fe : 317.7 cps/nA)
+Beam Size : N/A
+
+	Weight%	Atomic%	Oxide	
+
+DataSet/Point	Na	Mg	Al	Si	K 	Ca	Ti	Cr	Mn	Fe	O 	Total	Na	Mg	Al	Si	K 	Ca	Ti	Cr	Mn	Fe	O 	Total	Na2O	MgO	Al2O3	SiO2	K2O	CaO	TiO2	Cr2O3	MnO	FeO	Total	 X 	 Y 	 Z 	 Beam X 	 Beam Y 	Comment	Distance (?)	Mean Z	Point#	Date
+1 / 1 . 	0.743369	7.000587	0.992360	23.675010	0.000010	15.496050	0.028793	0.050500	0.047470	7.429382	41.095420	96.558950	0.753605	6.712945	0.857190	19.646370	0.000006	9.010886	0.014010	0.022636	0.020138	3.100467	59.861750	100.000000	1.002046	11.609060	1.875058	50.649700	0.000012	21.682070	0.048028	0.073809	0.061296	9.557870	96.558950	-10413.0	32015.0	60.0	 	 	BOO17-3S_map2_cpx1	0.00	12.714160	1	Monday, September 13, 2021 4:45:45 PM	
+1 / 2 . 	0.683164	7.306072	1.054231	24.247130	0.005349	15.870280	0.049491	0.006556	0.033462	7.281908	42.080150	98.617790	0.676747	6.845810	0.889827	19.661410	0.003116	9.017649	0.023530	0.002872	0.013871	2.969490	59.895680	100.000000	0.920890	12.115650	1.991962	51.873660	0.006443	22.205690	0.082554	0.009582	0.043208	9.368145	98.617790	-10408.3	32015.0	60.0	 	 	BOO17-3S_map2_cpx1	4.68	12.939130	2	Monday, September 13, 2021 4:48:12 PM

Data conversion for EPMA

The EPMA converter can be used to convert raw data for supported instruments to XMapTools format.

The following data formats are currently supported:

  • JEOL (WIN) JEOL microprobes running on WINDOWS.
  • JEOL (SUN) JEOL microprobes running on SUN-OS.
  • CAMECA for recent CAMECA microprobes (see format description).

EPMA converter module

The converter can be accessed via Project and Imports, using the Open XMapTools' EPMA Converter button.

Main steps:

  • Select the data format (e.g. JEOL or CAMECA; check compatible data formats: CAMECA).
  • Select the destination folder, usually an empty folder where data with the XMapTools format will be stored.
  • Select maps which are stored in a given folder; text or csv map files generated by the microprobe software.
  • Validate map selection.
  • Add standards data exported by the microprobe software as text or csv files. This step can be repeated until all standards data have been imported.
  • Generate Standards.txt containing the map coordinates and the spot analysis data to be used as internal standards for map calibration.

For more detailed information on the EPMA Converter, refer to the embedded documentation available within the program.

Step 1: Select data format

Use the Select the format dropdown menu to select data format. After selecting the data format two text boxes are displayed indicating the types of files required for the selected format. The first on the left is for the map and the second one for the spot analyses.

  • JEOL (WINDOWS) requires two files for each map: 'data00X.cnd' and 'data00X.csv', and a single file for each set of spot analyses: 'summary.csv'.
  • JEOL (SUN) requires two files for each map: 'XX.cnd' and 'XX_map.txt', and two files for each set of spot analyses: 'summary.txt' and 'stage.txt'.
  • CAMECA requires one file for each map: 'XXXX.txt', and a single file for each set of spot analyses: 'YYY.csv'.

Step 2: Set the destination folder

After selecting the data format, press the Set a destination folder button and select an empty folder to save the data in the XMapTools format. This folder must be empty and existing data will be deleted!

Note that this folder can then be transferred to a working data folder for separate storage from the raw data.

Step 3: Import maps

After selecting the destination folder, press the Import Maps button to select the folder containing the map files. XMapTools will convert all the maps available in this folder.

After selecting the maps, press the Validate map selection button to continue.

Step 4: Import spot analyses (internal standards)

After selecting all files for the spot analyses, press the button generate Standards.txt. This will end the procedure and close the Converter. Note that when you return in XMapTools, the working directory has been adjusted and you can start importing your maps.

Importing data using the import module

To import map data in XMapTools, select the 'Project and Import' tab and press the Import Maps image button located in 'Import Maps and Images'. This will open the import module and prompt you to select files.

Select the set of map files you want to import. Choose compatible files from the 'Pick Map File(s)' pop-up window. Note that multiple files can be selected at once. Any selected file that cannot be imported due to an incompatible format, for example, will be skipped during import.

Format: Map files must have the *.txt, *.asc, *.dat or *.csv extension, no header and a name compatible with the XMapTools default element names for identification. The default lists of compatible element and oxide names are given in the source of the help file below.

Selected map files are listed in the main table. More maps can be added by pressing the map selection button (see above)

File: Contains the file names

  • Map Name: Contains the name of the corresponding element in the database
  • Type: Element or oxide
  • Data: Intensity or wt%
  • Special: EDS or WDS(?); in the case of WDS(?) a DTC is automatically selected
  • DTC: Dead time correction
  • OC: Orientation correction (legacy function from XMapTools 3, do not use; not tested)
  • Destination: Destination in XMapTools, can be: Intensity, Quanti, Merged, Other; drop down menu, can be edited.
  • Action: Keep or eliminate; drop down menu, editable.
  • Settings, such as setting the dwell time (as in XMapTools 3) can be changed in the Corrections section.

Press the Import data button to import the selected maps into XMapTools after the corrections have been applied.

⚠️ Warning: In this version of XMapTools the file name should match exactly one of the compatible elements. Otherwise the map will be imported into the "Other" category. However, the filename can contain an element name followed by an underscore (_) and a comment, e.g. Si_sample1.txt will be recognised as a map of Si.

For more detailed information on the EPMA Converter, refer to the embedded documentation available within the program.

Importing calibrated data from EPMA and SEM

This section describes how to work in XMapTools with data that have been calibrated by an other program.

The calibrated maps should be translated first into a compatible format (e.g. txt or csv file). Use the element or oxide abbreviation as file name (e.g. Si.txt, SiO2.txt, Ce.txt, etc.).

Step 1: Adding calibrated maps

Quantitative maps can be imported in XMapTools via the Import Tool. Quantitative maps can be expressed in µg/g or wt% of elements (e.g. Si.txt, Al.txt, etc.) or oxides (e.g. SiO2.txt, Al2O3.txt, etc.). These maps are imported in the category 'Merged' data. The data format is not specified during the import.

  • For maps expressed in µg/g or wt% of oxides, the destination is automatically set to 'Merged'. No action is required, simply press the button Import Data.
  • Maps expressed in µg/g or wt% of elements, the destination must be changed manually to 'Merged' (see figure below). This operation needs to be repeated for each map. The click on the button Import Data.
image

Figure: If maps are expressed in mass of elements, the destination should be changed from 'Intensity' to 'Merged'.

image

Figure: In this example the destination for each map has been set to 'Merged'.

Step 2: Data conversion (optional)

The compositional maps should ideally be expressed in oxide wt%. if the imported maps are in µg/g or wt% of elements, a conversion step can be required to calculate structural formulas.

In the primary menu, select the dataset Imported_Maps and then right-click on its name. Select the option Convert to open the Converter module.

Select the conversion method in the Converter tool and press the Apply button.

image

Figure: Select a dataset and then right-click to open the Converter from the primary menu.

image

Figure: Data conversion tool. In this example data are converted from element wt% to oxide wt%.

Step 3: Classification of quantitative data

Step 3.1: Create a training set

Display a map from the imported dataset using the Primary Menu and open the Classify tab. Select Training Set (Classification) in the Secondary Menu and press the Add image button in Classify and select the phases. Press again the Add image button to create a new mask definition in the training set. This operation can be repeated until the correct number of phases is reached. Each mask definition can be deleted by right-clicking on the name and selecting Delete.

You can rename each mask definition by double-clicking on his name in the Secondary Menu. Press Add image in Classify when a mask definition is selected to add a region-of-interest (ROI).

Step 3.2: Add maps for classification

Select the dataset in the category Merged of the Primary Menu and press the Add Maps for Classification image button to add all the maps of the dataset in the list that will be used by the classification function.

Step 3.3: Classification

Select a dataset in the Merged category of the Primary Menu and a Training Set in the Secondary Menu. Pick an algorithm in the tab Classify and press the Classify image button. Note that the Classify button is only available when an appropriate dataset and training set are selected in the primary and secondary menus.

Step 4: Splitting a merged dataset using a maskfile

The imported dataset available in the Merged data category has to be divided into maps for each mask that will be stored under the Quanti data category.

Select a mask file in the Secondary Menu. Select the dataset in Merged and then right-click on its name. Select the Split (using maskfile) option.

The results are stored under the Quanti category as individual dataset, one for each mask. These data sets can be used to calculate maps of structural formulas or other calculations.

image

Figure: Select a mask file, then click on the dataset of interest (here Imported_Maps_Oxides) and then right-click on the name for accessing the menu.

image

Figure: Results are stored in the category Quanti

Classification

Compositional map classification is the process of categorising and labelling groups of pixels within a dataset based on their composition. It generates a mask image showing the distribution of each mask/class (i.e. features can be mineral/epoxy/glass, etc.).

Classification mask image example

Figure: Example of mask image for a metapelite from the Himalaya published in Lanari & Duesterhoeft (2019). Each feature (mineral) is shown with a colour. Note that all the pixels of this image have been classified.

Classification parameters & algorithms

These tools are used to select an algorithm and maps to be used for classification.

Chemical system: how to add/remove maps?

The goal is to set the map input of the classification function. It is not required to use all available maps for classification; maps containing only noise are usually excluded.

The list of maps used by the classification function is displayed in the text field. The button Add Maps for Classification adds all maps available in the intensity tab of the primary menu. The button Edit Selected Map can have two modes: add (plus icon) or eliminate (minus icon) depending on whether the map selected in the primary menu is already available in the list or not. Clicking "plus" adds the selected map, whereas clicking "minus" eliminates the selected map from the list.

Algorithm selection

The machine learning algorithm used for classification can be selected via the algorithm menu available in the section Classification Parameters.

The following algorithms are available:

  • Random Forest: An ensemble learning method for classification constructing a multitude of decision trees during training. The output of the random forest is the class selected by most trees (majority vote).
  • Discriminant Analysis: Classification method that assumes that different classes generate data based on different Gaussian distributions. To train a classifier, it estimates the parameters of a Gaussian distribution for each class.
  • Naive Bayes: Classification algorithm applying density estimation to the data and generating a probability model. The decision rule is based on the Bayes theorem.
  • Support Vector Machine: Data points (p-dimensional vector) are separated into n classes by separating them with a (p-1)-dimensional hyperplane. The algorithm chooses the hyperplane so that the distance from it to the nearest data point on each side is maximised.
  • Classification Tree: A decision tree is used as predictive model to classify the input features into classes via a series of decision nodes. Each leaf of the tree is labelled with a class.
  • k-Nearest Neighbour: An object is classified by a plurality vote of its neighbours, with the object being assigned to the class most common among its k nearest neighbours.
  • k-Means: Classification method that aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest cluster centroid, serving as a prototype of the cluster.

Principal component analysis (PCA) — Optional

The principal components of a collection of points in a real coordinate space are a sequence of vectors consisting of best-fitting lines, each of them defined as one that minimizes the average squared distance from the points to the line. These directions constitute an orthonormal basis in which different individual dimensions of the data are linearly uncorrelated. The first principal component can equivalently be defined as a direction that maximizes the variance of the projected data. Principal component analysis (PCA) is the process of computing the principal components and using them to perform a change of basis on the data.

The button Generate Maps of the Principal Components (PCA) generates a map for each principal component and stores them in the section Other of the primary menu.

If the tick-box incl. PCA is selected, the maps of principal components are included as additional dimensions for the classification. Example: if 8 intensity maps are considered, a total of 14 maps of PC are added to the classification input, 7 for a normal PCA and 7 for a normalised PCA.

Training and classification

A training set must be selected in the secondary menu in order to activate the classification button.

The button Classify (Train a Classifier & Classify) trains a new classifier and performs the classification using the algorithm selected in the menu and the specified set of maps.

A new figure containing up to four plots will open and be continuously updated during classification. Do not close this figure until the classification is complete, otherwise the plots will not be displayed.

Classification plots

Figure: Plots for classification using the Random Forest algorithm. Top left: out-of-bag classification error vs. number of trees grown. Top right: Predictor importance. Bottom left: Confusion map of the training data set. Bottom right: Confusion plot of the test dataset.

Once the classification is achieved, a new mask file is generated and stored under Mask files in the secondary menu. The mask file is automatically selected and the mask image displayed in the main figure.

Filtering options

The following options apply to a given mask file. Select a mask file in the secondary menu to apply changes.

Select the option to hide pixels having a class probability lower than a given threshold for the selected mask file. Set the probability threshold used for hiding pixels. This value should range between 0 and 1.

The button Create new mask file with pixels filtered by probability generates a new mask file after filtering. This option replaces the BCR correction available in XMapTools 3 and is more adequate as only the misclassified pixels are excluded.

Mask analysis & visualisation

The modes of each class within a given region-of-interest can be exported using the tools provided in this section. Modes are given as surface percentage calculated using the number of pixels of each class. For minerals, this can be eventually extrapolated to volume fraction as discussed in Lanari & Engi (2017).

Select the ROI shape to be used to extract the local modes from the dropdown menu.

The button Add ROI allows a new region-of-interest (ROI) to be drawn on the figure. Note that a mask file must be selected before activating this mode. Results are displayed in the right window as a table containing the modes and number of pixels for each class and as a pie diagram.

The following ROI shapes are available:

  • Rectangle: click to select the first corner and drag the mouse to the opposite corner defining a rectangle
  • Polygon: click successively on the image to draw a polygon; right-clicking validates and closes automatically the shape

The button Plot Compositions generates a plot using the data selected in the primary menu (either intensity, or a merged map) and the mask file selected in the secondary menu.

Composition plot

Figure: Example of compositional plot generated using a merged map (expressed in oxide wt%) and a mask file.

Calibration (EPMA)

The following steps are required to convert raw data (e.g. X-ray maps) into maps of chemical composition:

  • Import standard data as spot analyses for the calibration of EPMA data
  • Check/adjust/add standard data
  • Calibrate using the Calibration Assistant for EPMA data

Standard data

The spot analyses used as internal standards in the calibration of EPMA data are referred to as "standards" in the following as they permit to define a calibration curve that correlates X-ray intensities to composition (e.g. expressed in oxide/element wt%).

It is necessary to import the standards from a standard file, check their positions and eventually correct, check the chemical compositions and eventually create new standards. All these steps can be achieved in XMapTools 4.

File Standards.txt

The file Standards.txt contains (i) the map coordinates and (ii) the spot analyses used for the standardisation. The map coordinates must be listed within a single row below the keyword >1. The oxide order is set below the keyword >2. X and Y must be the two last labels and must be listed in this specific order. The internal standards analyses are listed below the keyword >3 corresponding to the oxide order defined above (keyword >2).

>1 Here paste the image coordinates (Xmin Xmax Ymax Ymin)
+56.739 57.239 43.691 43.371
+
+>2 Here define the oxides order
+SiO2 MgO FeO Al2O3 X Y
+
+>3 Here paste the analyses 
+25.4800 11.260 29.050 21.1400 1.4800 68.310 39.999
+52.9400 3.5300 3.0200 24.2300 0.0197 68.310 39.535
+52.5800 3.6300 2.7900 24.7200 0.0195 68.331 39.511

Import standards

The button Import (Import spots for Standards (from file)) is used to import standards from a file.

The box Import from Standards.txt is selected by default allowing the file 'Standards.txt' to be read automatically. If the file containing the standard data has a different name, unselect the box and it will be possible to select a file in the Pick a file pop-up window. At the moment all standards need to be stored within a single file. It is not possible to import standards from different files as existing standards will be eliminated when a new file is loaded.

Once loaded, standards are displayed on the main map with a label including the spot number and several plots are produced and shown in the category "Standards" of the live display module. You can get this global visualisation at any stage by selecting Standards (Spots) in the Secondary Menu. Three plots are produced if an element is selected in the primary menu, from top to bottom: (1) a plot showing intensity/composition versus sequence of standard to visualise if there is a good match between the standard compositions and the intensity values of the matching pixels; (2 and 3) two correlation maps, one for the selected element in the primary menu and a second one considering all elements.

Adjusting standard positions

To adjust the positions, display the map of a diagnostic element (Intensity) and select Standards (Spots) in the secondary menu. The two correlation maps should show a maximum value in yellow and the blue spot representing the current position should be centred on this optimum.

To adjust the position of the standards (all at once), put the mouse cursor over the blue circle showing up a transparent circle. Click on it and move the blue circle to the new position. The values in the two white fields on top will be adjusted. Then click on the button Refresh (important) to update the standard positions. The Refresh button is only available when standard positions have been changed and need to be saved.

Note: If no good correlation exists for a given element, the higher value of the second figure could not represent the optimal position.

Adding new standard point(s)

It is possible to add new standard points directly in XMapTools. Note that these will not be saved to the file Standards.txt, and if the file is loaded again all changes will be lost.

The button Add standard point adds a new standard at selected coordinates, set by clicking on the map after pressing the button. Compositional data can be filled directly in the table, when this standard is selected.

Procedure:

  • Select an element map (e.g. SiO₂ for adding a spot of quartz) and select the item Standards (Spots) in the secondary menu
  • Press the button Add Standard Point
  • Click on the map at the position to add the new standard point
  • (Optional) It is possible to adjust the position of any manual standard by moving the blue spot (transparent circle) or its label (cross-shaped cursor)
  • The new standard point is automatically selected in the Secondary Menu and the composition table shown on the right side
  • You can enter manually the oxide (wt%) composition of the new standard in the column 'wt%' in blue. The X-ray intensity of the corresponding pixel is already available in the 'Int' column
  • There is nothing more to do — all data are automatically saved
  • (Optional) You can rename any standard by double clicking on its name in the secondary menu

Map calibration

A calibration step, also known as standardisation, is required to convert intensity maps into compositional maps (Lanari et al. 2019).

All minerals/objects are calibrated at the same time in XMapTools 4. Therefore it is required to select a Mask File in the Secondary Menu to activate the button Calibrate.

The approach implemented in XMapTools 4 provides a module for auto multi-phase calibration. The button Calibrate opens the Calibration Assistant for EPMA Data. This button is only available when a mask file is selected in the Secondary Menu.

For more detailed information on the Calibration Assistant, refer to the embedded documentation accessible from the assistant.

Calibration assistant (EPMA)

The new approach implemented in XMapTools 4 provides a module for automatic multi-phase calibration. The general procedure is described in De Andrade et al. (2006) and an advanced approach including pseudo-background correction is described in Lanari et al. (2019).

Strategy: advantages and pitfalls

An automatic calibration is performed taking into account all spot analyses and all masks when the Calibrate button is pressed. The new algorithm first performs a general fit including all standards and then adjusts the calibration for each mineral. All calibration curves, including those for the general fit, are accessible from the tree menu.

When you press the Apply Standardisation button, all the calibrated maps for each mineral as well as a merged map are created and sent back to XMapTools.

Important

First make sure you check the quality of the calibration curves generated by the auto function!

The automatic function will work if all minerals have been measured with at least a few spot analyses and if there is at least one mineral with a composition above 1 wt% for each element. If a mineral or other feature (e.g. fracture) has no spot analyses, the program extrapolates a calibration from the general fit and thus "predicts" a composition. At this stage this composition is likely to be off because matrix effects are ignored!

INFO

  • If you close the Calibration Assistant window, no calibrated data or calibration settings will be saved.
  • When you press Apply Standardisation, all maps are sent to XMapTools.

Displaying calibration curves

The Calibration Assistant for EPMA Data opens when the Calibrate button in XMapTools is pressed.

Calibration EPMA overview

Figure: Example calibration for a clinopyroxene-garnet amphibolite metapelite of the Brasília orogen (Brazil), published in Tedeschi et al. (2017). Note that the calibration curves for all minerals are displayed when the window pops up.

Use the tree menu on the left to navigate through the list of minerals and elements and to view calibration curves.

When you select a mineral from the tree menu, a single plot showing the sum of elements/oxides (total wt%) is displayed. The plot in the middle shows all calibration curves, for all elements of the selected mineral. Some data is displayed in a table:

ColumnDescription
El.Element name (of the map); includes sum(wt%) and Peak(SumOx) labels
#(std)Number of internal standards (spot analyses) used to calibrate the phase
med(it)Median intensity value for all pixels of the selected mineral for each element
med(wt)_sMedian composition of all internal standard measurements (spot analyses)
mode(wt)_mMost common composition in the calibrated pixels
k factorDifference between the general fit calibration and the final mineral calibration (1 = identical)
SlopeSlope of the calibration curve
BackgroundIntercept of the calibration curve

TIP

The values of mode(SumOx) and Sum(wt) may be different, in which case the median is likely to be influenced by non-Gaussian signals and may not be comparable with the median of the spot analyses. The comparison of both columns can be used to detect potential calibration problems.

Calibration EPMA mineral selected

Figure: Example of calibration when a mineral is selected. All calibration curves for a given mineral are displayed.

To view a specific calibration curve (for a particular element), expand the menu by clicking on the small arrow to the left of the mineral name and select an element. The corresponding calibration curve is displayed together with the corresponding quantitative map (oxide wt-%).

Calibration EPMA element selected

Figure: Example when an element of a given mineral phase is selected. The calibration curve and quantitative map for a given element are displayed.

Adjusting a calibration curve

When an element is selected, the Adjust Adjust button appears above the tree menu.

Clicking this button displays two fields containing the values for background and slope: Slope and background

Values can be changed manually by entering new values in the appropriate field. Press Enter to calculate and display the new calibration curve on the graph (this operation may take a few seconds).

Displaying results of the general fit

Selecting General Fit (last option in the tree menu) will display a plot of the calibration curves for all elements. It is not possible to adjust the calibration curves in the general fit. This fit is automatically performed first by the program and is no longer used once the calibration of each mineral has been achieved.

Apply calibration

After checking each calibration curve and adjusting if necessary, use the Apply Standardisation button Apply to generate the calibrated maps.

By applying the standardisation:

  • The Quanti option in the Primary Menu becomes available, where quantitative maps in element/oxide wt-% of each phase can be displayed.
  • The Merged option in the Primary Menu also becomes available. A set of merged maps (i.e. quantitative maps in oxide wt-% for all phases considered together) is automatically generated.

Notes

  • Red dots indicate outliers that were not included in the calculation of the calibration curves.
  • Moving the cursor over the images brings up a Image Menu at the top right. This menu includes options to zoom, save and copy the images.

Local bulk compositions

A local bulk composition (abbreviation: LBC) represents the bulk composition of a spatial domain in a rock determined by integrating pixel compositions. As discussed in Lanari and Engi (2017), it is necessary to apply a density correction prior to exporting any local bulk composition.

To export local bulk compositions the following steps should be employed:

  • Generate a density map
  • Generate a merged map (if not available yet)
  • Select an area of interest to extract the local bulk composition

Generate a density map

A density map is a map containing density data for each pixel of a map. It is calculated for a given mask file. Select a mask file in the secondary menu.

The button Generate Density Map (from a mask file) allows a density map to be generated from the selected mask file. A mask file should be selected to activate the button. Pressing this button opens a window with predefined average density values (provided that the mineral name was recognised and a reference value available in the internal database; when full names of minerals in English are used, the mineral should be recognised).

Note: mineral density values can be obtained from the website webmineral.com.

A density map will be created and stored under the category Other in the Primary Menu with the name 'Density [maskfile_name]'.

Generate a merged map

Merged maps are maps for which all pixels hold a chemical composition. A merged map is automatically created by the standardisation function in XMapTools 4. If you need to create a merged map manually, follow the procedure below.

In the primary menu, unfold Quanti and select a quanti map (mineral). The button Merge (Merge Quanti Data) in the section Calibrate becomes available. In the window that pops up, select the quanti maps to be merged. Select 'Ok' to generate the merged maps that will be stored in the category Merged.

Select ROI and calculate LBC

A local bulk composition can be calculated from a region-of-interest (ROI). The ROI can be a rectangle or a polygon. The density correction is automatically applied.

Select a merged map in the primary menu and display an element. In the dropdown menu, select the wanted ROI shape: Rectangle ROI or Polygon ROI.

The button Add a ROI for LBC extraction allows a region-of-interest (ROI) to be drawn on the figure. If Rectangle ROI is selected, click on a corner, hold and drag to draw a rectangle. If Polygon ROI is selected, click on the image to draw the polygon and close by selecting the first point or right-clicking.

When a ROI is available, the table containing the local bulk composition appears in the live display module. The first column shows the element list, whereas compositions are listed in the column composition (unit: wt%). Below the table, a pie chart shows the repartition of the elements/oxides by weight.

The ROI can be edited and the composition values in the table and the pie chart are automatically updated.

The density map used is shown in a dropdown menu located in the live display module.

The button Copy Data to clipboard may be used to copy the LBC data from the table. The button Save may be used to save the LBC data as a .txt file.

Approximation of uncertainties for LBC

An uncertainty approximation similar to what is described in Lanari and Engi (2017) is available.

Select a merged map and create a Rectangle ROI. Define the number of simulations Sim (default 100) and the shift Px in pixel (default 20). The shape will be randomly displaced and resized using two random variables calculated from the shift value (assuming a Gaussian distribution and the value of Px as 1 sigma expressed in number of pixels). Click on the button Calculate uncertainties using Monte-Carlo.

The areas used to approximate an uncertainty are plotted in a new figure and the result is shown in the table of the live display module. The column composition shows the original local bulk composition (selected ROI). The column 2std shows the 2 standard deviation value (note that the distributions are usually Gaussian as shown by Lanari & Engi (2017)). The last column shows the mean value of all compositions. This value should match the composition of the original ROI. If not, this means that a Gaussian distribution cannot be assumed for this element and the uncertainty is not correct.

References

  • De Andrade, V., Vidal, O., Lewin, E., O'Brien, P., Agard, P. (2006). Quantification of electron microprobe compositional maps of rock thin sections: an optimized method and examples. Journal of Metamorphic Geology, 24, 655–668.
  • Lanari, P., & Engi, M. (2017). Local bulk composition effects on metamorphic mineral assemblages, Reviews in Mineralogy and Geochemistry, 83, 55–102.
  • Lanari, P., Vho, A., Bovay, T., Airaghi, L., Centrella, S. (2019). Quantitative compositional mapping of mineral phases by electron probe micro-analyser. Geological Society of London, Special Publications, 478, 39–63.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-ext-functions.html b/.vitepress/dist/doc-ext-functions.html new file mode 100644 index 0000000..71b9a82 --- /dev/null +++ b/.vitepress/dist/doc-ext-functions.html @@ -0,0 +1,25 @@ + + + + + + External Functions | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

External Functions

XMapTools includes a set of external functions for calculating structural formulas, thermobarometry and other methods. Source code for all functions is available on the XMapTools GitHub repository.

Table of contents

Structural formulas

The following structural formula functions are available in XMapTools. Each function calculates structural formulas and end-member proportions on a specified oxygen basis.

Aluminosilicate > AlSil. (SF, 5-Ox. basis)

XMapTools External Function: structural formula of aluminosilicates. Version without loop & all Fe as Fe₂O₃. 5 Oxygen-basis.

Amphibole > CaAmp (SF, 23-Ox. basis)

XMapTools External Function: structural formula of Ca-amphibole. Fe₂O₃ added as possible input. Ti ordered onto M2 (Raase 1974).

End-memberT1(4)T2(2)M2(2)M13(2)M4(2)A(1)
Glaucophane (Gln)Si₄Si₄Al,AlMg,Mg,MgNa,NaV
Tremolite (Tr)Si₄Si₄Mg,MgMg,Mg,MgCa,CaV
F-tremolite (Ftr)Si₄Si₄Fe,FeFe,Fe,FeCa,CaV
Tschermakite (Ts)Si₄Si₂,Al₂Al,AlMg,Mg,MgCa,CaV
Pargasite (Prg)Si₄Si₂,Al₂Mg,AlMg,Mg,MgCa,CaNa

Other: Ti, Mn. 23 Oxygen-basis.

Amphibole > CaAmp_Fe3+ (SF, 23-Ox. basis)

XMapTools External Function: structural formula of Ca-amphibole with Fe³⁺ estimation. 23 Oxygen-basis. Not tested.

Biotite > Bt+ (SF, 11-Ox. basis)

XMapTools External Function: structural formula of biotite. Fe₂O₃ added as possible input. Ti assumed to be ordered onto M2, Al onto M1, Mn added (ordered onto M12).

End-memberT1(2)T2(2)M1(1)M2(2)A(1)
PhlogopiteSi,SiSi,AlMgMg,MgK
AnniteSi,SiSi,AlFeFe,FeK
EastoniteSi,SiAl,AlAlMg,MgK
SiderophylliteSi,SiAl,AlAlFe,FeK
Ti-biotiteSi,SiSi,AlMgTi,MgK
Mn-biotiteSi,SiSi,AlMnMn,MnK

11 Oxygen-basis.

Brucite > Brc (SF, 1-Ox. basis)

XMapTools External Function: structural formula of brucite. Version without loop & Fe₂O₃ as possible input. As₂O₃ is used instead of As₂O₅ in XMapTools 3.4.2. 1 Oxygen-basis.

Chlorite > Chl (SF, 14-Ox. basis)

XMapTools External Function: structural formula of chlorite. Ferri-sudoite added; Trincal & Lanari (2016) Clay Min. 51, 675–689. Fe₂O₃ added as possible input. 1 Input: XFe3 = Fe3/(Fe2+Fe3).

End-memberT1(2)T2(2)M1(1)M2-M3(4)M4(1)
Amesite (Ame)Si,SiAl,AlAlMg₄Al
Fe-Amesite (fAme)Si,SiAl,AlAlFe₄Al
Clinochlore (Clc)Si,SiSi,AlMgMg₄Al
Daphnite (Dph)Si,SiSi,AlFeFe₄Al
Sudoite (Sud)Si,SiSi,AlVMg₂,Al₂Al
FerriSudoite (fSud)Si,SiSi,AlVMg₂,Fe₂Al
AlfreeChl (afchl)Si,SiSi,SiMgMg₄Mg

14 Oxygen-basis.

Chloritoid > Ctd (SF, 12-Ox. basis)

XMapTools External Function: structural formula of chloritoid. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(3)M1(1)M2(2)
Mg-chloritoid (Ctd)Si,SiAl₃AlMg,Mg
Fe-chloritoid (fCtd)Si,SiAl₃AlFe,Fe
Mn-chloritoid (mCtd)Si,SiAl₃AlMn,Mn

12 Oxygen-basis.

Chromite > Chr (SF, 32-Ox. basis)

XMapTools External Function: structural formula of chromite. Version without loop & Fe₂O₃ as possible input. Fe³⁺ estimated using Droop (1987). 32 Oxygen-basis. Not tested in this version.

Clinopyroxene > Cpx (SF, 6-Ox. basis)

XMapTools External Function: structural formula of clinopyroxene. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)M1(1)M2(1)
Jadeite (Jd)Si,SiAlNa
Diopside (Di)Si,SiMgCa
Hedenbergite (Hd)Si,SiFeCa
Ca-Tschermak (Cats)Si,AlAlCa

6 Oxygen-basis.

Clinopyroxene > Cpx_Fe3+ (SF, 6-Ox. basis)

XMapTools External Function: structural formula of clinopyroxene with Fe³⁺ estimation.

End-memberT1(2)M1(1)M2(1)
Jadeite (Jd)Si,SiAlNa
Diopside (Di)Si,SiMgCa
Hedenbergite (Hd)Si,SiFe²Ca
Ca-Tschermak (Cats)Si,AlAlCa
Acmite (Acm)Si,SiFe³Na

6 Oxygen-basis.

Cordierite > Crd (SF, 18-Ox. basis)

XMapTools External Function: structural formula of cordierite. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(3)M1(2)
Mg-Cordierite (Crd)Si₅Al₄Mg,Mg
Fe-Cordierite (fCrd)Si₅Al₄Fe,Fe
Mn-Cordierite (mCrd)Si₅Al₄Mn,Mn

18 Oxygen-basis.

Epidote > Ep (SF, 12.5-Ox. basis)

XMapTools External Function: structural formula of epidote. Version without loop & all iron as Fe³⁺.

End-memberT1(3)M1(1)M2(1)M3(1)A1(2)
Epidote (Ep)Si₃AlAlFeCa,Ca
Fe-epidote (fEp)Si₃FeAlFeCa,Ca
Zoisite (Zo)Si₃AlAlAlCa,Ca
Mn-epidote (mEp)Si₃AlAlMnCa,Ca

12.5 Oxygen-basis.

Feldspar > Fsp (SF, 8-Ox. basis)

XMapTools External Function: structural formula of feldspar. Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(2)M1(1)
Albite (Ab)Si,SiSi,AlNa
Anorthite (An)Si,SiAl,AlCa
Sanidine (Sn)Si,SiSi,AlK

8 Oxygen-basis.

Garnet > Grt (SF, 12-Ox. basis)

XMapTools External Function: structural formula of garnet. Version without loop & Fe₂O₃ as possible input.

End-memberX(3)Y(2)O/T(3)
Almandine (Alm)Fe₃Al₂(SiO₄)₃
Pyrope (Prp)Mg₃Al₂(SiO₄)₃
Grossular (Grs)Ca₃Al₂(SiO₄)₃
Spessartine (Sps)Mn₃Al₂(SiO₄)₃

12 Oxygen-basis.

Garnet > Grt_Fe3+ (SF, 12-Ox. basis)

XMapTools External Function: structural formula of garnet with Fe³⁺ estimation. Method of Droop (1987) implemented.

End-memberX(3)Y(2)O/T(3)
Almandine (Alm)Fe₃Al₂(SiO₄)₃
Pyrope (Prp)Mg₃Al₂(SiO₄)₃
Grossular (Grs)Ca₃Al₂(SiO₄)₃
Spessartine (Sps)Mn₃Al₂(SiO₄)₃
Andradite (And)Ca₃Fe₂(SiO₄)₃

12 Oxygen-basis.

Ilmenite > Ilm (SF, 3-Ox. basis)

XMapTools External Function: structural formula of ilmenite. Approximation of Fe³⁺ and Fe²⁺; works fine with Ca-Na-K ignored.

End-memberFormula
Ilmenite (Ilm)Fe(1)Ti(1)O(3)
Mn-Ilmenite (mIlm)Mn(1)Ti(1)O(3)
Hematite (Hem)Fe(2)O(3)

3 Oxygen-basis.

Magnetite > Mag (SF, 4-Ox./3-cat. basis)

XMapTools External Function: structural formula of magnetite. Version without loop & Fe₂O₃ as possible input. Normalized to 3 cations (assuming 4 oxygen). 4 Oxygen-basis.

Olivine > Ol (SF, 4-Ox. basis)

XMapTools External Function: structural formula of olivine. Version without loop & Fe₂O₃ as possible input.

End-memberFormula
Forsterite (Fo)Mg(2)Si(1)O(4)
Fayalite (Fa)Fe(2)Si(1)O(4)
Tephroite (Tep)Mn(2)Si(1)O(4)

4 Oxygen-basis.

Orthopyroxene > Opx (SF, 3-Ox. basis)

XMapTools External Function: structural formula of orthopyroxene. Version without loop & Fe₂O₃ as possible input.

End-memberT1(1)M1(1)
Enstatite (En)Si₂Mg₂
Ferrosilite (Fs)Si₂Fe₂
Tschermak-px (Mgts)Si,AlAl,Mg

3 Oxygen-basis.

Rutile > Rt (SF, 2-Ox. basis)

XMapTools External Function: structural formula of rutile. Version without loop & Fe₂O₃ as possible input. 2 Oxygen-basis.

Serpentine > Srp (SF, 14-Ox. basis)

XMapTools External Function: structural formula of serpentine. Number of oxygen changed from 14.5 to 14. Ratio Si/(Si+Fe+Mg) added. Version without loop & Fe₂O₃ as possible input. 14 Oxygen-basis.

Spinel > Spl (SF, 4-Ox. basis)

XMapTools External Function: structural formula of spinel. Version without loop & Fe₂O₃ as possible input. Fe³⁺ estimated using Droop (1987).

Al spinels (AlSpinel):

End-memberX(1)Y(2)
Hercynite (Hc)FeAl₂
Spinel (Spl)MgAl₂
Galaxite (Glx)MnAl₂
Gahnite (Ghn)ZnAl₂

Cr spinels (CrSpinel):

End-memberX(1)Y(2)
Chromite (Chr)FeCr₂
Magnesiochromite (mChr)MgCr₂
Nichromite (Nic)NiCr₂

Fe spinels (FeSpinel):

End-memberX(1)Y(2)
Magnesioferrite (Mfr)MgFe₂
Magnetite (Mag)FeFe₂
Ulvospinel (tSpl)TiFe₂
Jacobsite (Jac)MnFe₂
Franklinite (Frk)ZnFe₂
Trevorite (Tre)NiFe₂

Olivine spinels (OlSpinel):

End-memberX(1)Y(2)
Ringwoodite (Rwd)SiMg₂

4 Oxygen-basis. Calculated assuming equipartition of Fe²⁺/Mg²⁺/Mn²⁺/Zn²⁺/Ni. Not tested.

Staurolite > St (SF, 22-Ox. basis)

XMapTools External Function: structural formula of staurolite. Version without loop & Fe₂O₃ as possible input.

End-memberZ(11)Y(2)X(4)
Staurolite (St)Si(4)Al(7)Al,AlFe₄
Mg-Staurolite (Mst)Si(4)Al(7)Al,AlMg₄
Mn-Staurolite (MnSt)Si(4)Al(7)Al,AlMn₄

24 Oxygen-basis.

White mica > Mica (SF, 11-Ox. basis)

XMapTools External Function: structural formula of white mica (generic). Version without loop & Fe₂O₃ as possible input.

End-memberT1(2)T2(2)M1(1)M2(2)A(1)
Celadonite-Mg (Cel)Si,SiSi,SiVAl,MgK
Celadonite-Fe (fCel)Si,SiSi,SiVAl,FeK
Muscovite (Ms)Si,SiSi,AlVAl,AlK
Paragonite (Pg)Si,SiSi,AlVAl,AlNa
Pyrophyllite (Prl)Si,SiSi,SiVAl,AlV

Not considered: Biotite (Si,Si | Si,Al | MgFe | MgFeTi | K). 11 Oxygen-basis.

Thermobarometry and other methods

Function headers for thermobarometry and other methods. Source code is available on the XMapTools GitHub repository. Several functions are taken from the PTtoolbox package of Joshua Laughton.

Map-mode

Amphibole > T.Amp (all calibrations)

XMapTools External Function: amphibole thermobarometry. 23 Oxygen-basis.

Output variables:

  • T_HB94: Holland & Blundy (1994) – no quartz
  • T_HB94q: Holland & Blundy (1994) – with quartz

Biotite > T.Bt (all calibrations)

XMapTools External Function: biotite thermobarometry. 22 Oxygen-basis.

Output variables:

  • T_W20: Wu & Chen (2015)
  • T_H05: Henry et al. (2005)

Chlorite > T.Chl (all calibrations)

XMapTools External Function: chlorite thermometry (all calibrations). Fe₂O₃ added as possible input. 14 Oxygen-basis.

Output variables:

  • T_L14_2: Lanari et al. (2014) Contrib. Miner. Petrol. 167:167–968 (LWV2)
  • T_B13: Bourdelle et al. (2013) Contrib. Miner. Petrol. 165:723–735
  • T_ZF95: Zang & Fyfe (1995) Miner. Depos. 30:30–38
  • T_HV91: Hillier & Velde (1991) Clay Miner. 26:149–168
  • T_J91: Jowett (1991) Program Abstr. 16:A62
  • T_C88: Cathelineau (1988) Clay Miner. 23:471–485
  • T_KM87: Kranidiotis & MacLean (1987) Econ. Geol. 82:1898–1911
  • T_CN85: Cathelineau & Nieva (1985) Contrib. Miner. Petrol. 91:235–244

Monazite > Age.Mz (Montel 1996)

XMapTools External Function: monazite geochronology.

Output variables:

  • Age_M96: Montel (1996)

Input variables: ThO₂, UO₂ and PbO in wt% (use the converter if your data were calibrated in a different format).

Quartz > T.Qz (all calibrations)

XMapTools External Function: quartz thermobarometry (all calibrations).

Output variables:

  • T_WW06: Wark & Watson (2006)
  • T_KO08: Kawasaki & Osanai (2008)
  • T_T10: Thomas et al. (2010)
  • T_HA12: Huang & Audétat (2012)
  • T_O22: Osborne et al. (2022) CPM 177:31

Input variables: TiO₂ (wt%).

Rutile > T.Rt (all calibrations)

XMapTools External Function: rutile thermobarometry (all calibrations).

Output variables:

  • T_Z04: Zack et al. (2004)
  • T_W06: Watson et al. (2006)
  • T_FW07: Ferry & Watson (2007), CMP 154:429–437
  • T_T07: Tomkins et al. (2007)

Input variables: ZrO₂ (wt%).

Titanite > T.Ttn (all calibrations)

XMapTools External Function: titanite thermometry (all calibrations).

Output variables:

  • T_H08: Hayden et al. (2008)

White mica > P.Phg (all calibrations)

XMapTools External Function: phengite barometry. 11 Oxygen-basis.

Output variables:

  • P_MS87: Massone & Schreyer (1987)

Zircon > T.Zrn (all calibrations)

XMapTools External Function: zircon thermobarometry (all calibrations).

Output variables:

  • T_W06: Watson et al. (2006)
  • T_FW07: Ferry & Watson (2007), CMP 154:429–437

Multi-equilibrium

Amphibole > T.Grt-Hbl (all calibrations)

XMapTools External Function: Garnet-Hornblende thermometry. 12 Oxygen-basis for Garnet, 23 Oxygen-basis for Hornblende.

Output variables:

  • T_GP84: Graham & Powell (1984)
  • T_Per85: Perchuk et al. (1985)
  • T_Pow85: Powell (1985)
  • T_R00: Ravna (2000)

Biotite > T.Grt-Bt (all calibrations)

XMapTools External Function: Garnet-Biotite thermometry. 12 Oxygen-basis for Garnet, 11 Oxygen-basis for Biotite.

Output variables:

  • T_T76: Thompson (1976)
  • T_GA77: Goldman & Albee (1977)
  • T_HL77: Holdaway & Lee (1977)
  • T_FS78: Ferry & Spear (1978)
  • T_HS82: Hodges & Spear (1982)
  • T_PL83: Perchuk & Lavrent'eva (1983)
  • T_GS84: Ganguly & Saxena (1984)
  • T_IM85: Indares & Martignole (1985)
  • T_P85: Perchuk et al. (1985)
  • T_D91: Dasgupta et al. (1991)
  • T_B92: Bhattacharya et al. (1992)

Chlorite > T.Grt-Chl (all calibrations)

XMapTools External Function: Garnet-Chlorite thermometry. 12 Oxygen-basis for Garnet, 14 Oxygen-basis for Chlorite.

Output variables:

  • T_DH86: Dickenson & Hewitt (1986)
  • T_G90: Grambling (1990)
  • T_P91: Perchuk (1991)

Clinopyroxene > T.Grt-Cpx (all calibrations)

XMapTools External Function: Garnet-Clinopyroxene thermometry. 12 Oxygen-basis for Garnet, 6 Oxygen-basis for Clinopyroxene.

Output variables:

  • T_MH72: Mysen & Heier (1972)
  • T_RG74: Raheim & Green (1974)
  • T_MG78: Mori & Green (1978)
  • T_EG79: Ellis & Green (1979)
  • T_S79: Saxena (1979)
  • T_D80: Dahl (1980)
  • T_P85: Powell (1985)
  • T_K88: Krogh (1988)
  • T_A94: Ai (1994)
  • T_R00: Ravna (2000)
  • T_N09: Nakamura (2009)

Cordierite > T.Grt-Crd (all calibrations)

XMapTools External Function: Garnet-Cordierite thermometry. 12 Oxygen-basis for Garnet, 18 Oxygen-basis for Cordierite.

Output variables:

  • T_C71: Currie (1971)
  • T_T76: Thompson (1976)
  • T_HL77: Holdaway & Lee (1977)
  • T_P85: Perchuk et al. (1985)
  • T_B88: Bhattacharya et al. (1988)
  • T_B93: Bhattacharya (1993)

Ilmenite > T.Grt-Ilm (all calibrations)

XMapTools External Function: Garnet-Ilmenite thermometry. 12 Oxygen-basis for Garnet, 3 Oxygen-basis for Ilmenite. Not tested.

Output variables:

  • T_P87: Pownceby et al. (1987)
  • T_P91: Pownceby et al. (1991)
  • T_M10: Martin et al. (2010)

Orthopyroxene > T.Grt-Opx (all calibrations)

XMapTools External Function: Garnet-Orthopyroxene thermometry. 12 Oxygen-basis for Garnet, 6 Oxygen-basis for Orthopyroxene.

Output variables:

  • T_MG78: Mori & Green (1978)
  • T_D80: Dahl (1980)
  • T_R83: Raith et al. (1983)
  • T_H84: Harley (1984)
  • T_LG84: Lee & Ganguly (1984)
  • T_SB84: Sen & Bhattacharya (1984)
  • T_P85: Perchuk et al. (1985)
  • T_LG88: Lee & Ganguly (1988)
  • T_AP89: Aranovich & Podlesskii (1989)
  • T_PL90: Perchuk & Lavrente'va (1990)
  • T_B91: Bhattacharya et al. (1991)

White Mica > T.Grt-Ph (all calibrations)

XMapTools External Function: Garnet-Phengite thermometry. 12 Oxygen-basis for Garnet, 11 Oxygen-basis for Phengite.

Output variables:

  • T_KR88: Krogh & Raheim (1978)
  • T_GH82: Green & Hellman (1982)
  • T_HF88: Hynes & Forest (1988)
  • T_W02: Wu et al. (2002)

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-images.html b/.vitepress/dist/doc-images.html new file mode 100644 index 0000000..8152b76 --- /dev/null +++ b/.vitepress/dist/doc-images.html @@ -0,0 +1,25 @@ + + + + + + Images | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Images

Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024


This page describes the Images module, which provides tools to create and manage publication-ready images from XMapTools data.

What are "Image-Data" in XMapTools?

Images are plots stored in the project file and can be accessed from the primary menu under the Image category. These plots can be created using the tools available in the Image menu. They can be edited at any time and changes are saved.

Four types of images can be created:

TypeDescription
Single plot imageA single map (e.g. Ca_apfu in garnet)
Multi-plot imageA mosaic of maps (e.g. SiO2, Al2O3, FeO, Na2O); can also be combined into a GIF
Multi-layer image (shared scale)Multiple layers plotted with the same colour bar (e.g. XMg in biotite and garnet)
Multi-layer image (multi-scale)Multiple layers, each plotted with its own colour scale and palette

How to Create and Edit Images

Single-Plot Image

Use the main menu to view a map and, if necessary, adjust the colour contrast using the live histogram. Select Image >> Add Current Image from the main menu. A new image object will be created and placed in the Image category at the bottom of the primary menu.

You can view this image at any time by selecting Img (single-layer) #X from the primary menu (where X is the number of the image).

To edit the image, expand the image object and select the map. You can adjust the colour settings (borders, colour palette, etc.); changes are saved within the image object.

To export the image, select the image item in the primary menu and choose File > Save Image or Edit > Copy Image from the menu.


Single plot image

Figure 1: Example of an image generated with XMapTools for Ca (apfu) in garnet.

Multi-Plot Image

  1. Activate multi-selection mode from the Image > Multi-Selection Mode menu. The item labels in the primary menu are displayed in blue when this mode is active
  2. Select multiple maps from the primary menu. A mosaic will be created and displayed in the main window
  3. Select Image > Add Multi-Plot Image from the menu

You can expand the Img (multi-plot) #X item in the primary menu and select the maps one by one to adjust the colour contrast. You can also change the colour palette in the Options panel.

WARNING

It is not recommended to use XMapTools with multi-selection mode enabled for normal operation — it should only be used to generate images.


Multi-plot image

Figure 2: Example of a multi-plot image generated by XMapTools. Maps are expressed in oxide wt%. Note that each map is plotted using a different colour palette.

Multi-Plot Image & GIF

A GIF can be created from a multi-plot image. Select a multi-plot object, right-click on the name and select Save as GIF.


GIF example

Figure 3: Example of GIF generated with the images shown in Figure 2.

Multi-Layer Image (Shared Scale)

  1. Activate multi-selection mode from the Image > Multi-Selection Mode menu
  2. Select two (or more) compatible maps to plot together, for example XMg in biotite and XMg in garnet. The same unit should be used
  3. Select Image > Add Multi-Layer Image (Shared Scale) from the menu

You can expand the Img (multi-layer ShS) #X item in the primary menu and select the maps one by one to adjust the colour contrast. The same minimum and maximum values are applied to both images.


Multi-layer shared scale

Figure 4: Example of multi-layer image with common colour scale for XMg in garnet and biotite.

Multi-Layer Image (Multi-Scale)

  1. Activate multi-selection mode from the Image > Multi-Selection Mode menu
  2. Select two (or more) maps to be plotted together. Different quantities with different scales and units can be selected
  3. Select Image > Add Multi-Layer Image (Multi-Scale) from the menu

It is strongly recommended to use a different colour map for each map, as multiple colour bars will be created.


Multi-layer multi-scale

Figure 5: Example of multi-layer image with multi-scale for XMg in garnet and biotite. Note that the contrast is much better than on Figure 4 because two colour bars are used.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-import-maps.html b/.vitepress/dist/doc-import-maps.html new file mode 100644 index 0000000..4265051 --- /dev/null +++ b/.vitepress/dist/doc-import-maps.html @@ -0,0 +1,25 @@ + + + + + + Import Maps Tool | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Import Maps Tool

Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024 by M. Tedeschi & P. Lanari


This page describes the Import Tool, which can be used to import maps, set the destination, and make basic corrections. Closing the Import Tool will stop the import process (no data will be imported).

Selecting Files

The Select Select button allows a set of map files to be imported. Select compatible files from the pick map file(s) pop-up window. Multiple files can be selected together. If a selected file cannot be imported (e.g. due to an incompatible format), it will be skipped during the import.

File Format

Map files must have the *.txt, *.asc, *.dat or *.csv extension, no header, and a name compatible with the XMapTools default element names for identification. The default lists of compatible element and oxide names are listed below.

Import Table

Selected map files are listed in the main table. Additional maps can be added by pressing the Add Add button.

ColumnDescription
FileContains the file names
Map NameContains the name of the corresponding element in the database
TypeElement or oxide
DataIntensity or wt%
SpecialEDS or WDS(?); in the case of WDS(?) a DTC is automatically selected
DTCDead time correction
OCOrientation correction (do not use for EPMA and LA-ICPMS using the approach of Markmann et al. 2024)
DestinationIn XMapTools, can be: Intensity, Quanti, Merged, Other; drop-down menu, can be edited
ActionKeep or eliminate; drop-down menu, can be edited

Corrections

Settings such as the dwell time can be changed in the Corrections section.

Press Import data Import data to import the selected maps into XMapTools after the corrections have been applied.

  • Intensity maps will be available in the Intensity category
  • Other maps will be available in the Other category

Compatible Element Names

XMapTools supports all standard element symbols from H (1.00797) to Lr (260), including all lanthanides and actinides. Map files should be named with the corresponding element symbol for automatic identification.

Compatible Oxide Names

The following oxides are supported (non-exhaustive list of common oxides):

OxideElementConversion Factor
SiO2Si0.467
TiO2Ti0.600
Al2O3Al0.529
FeOFe0.777
Fe2O3Fe0.699
MnOMn0.774
MgOMg0.603
CaOCa0.715
Na2ONa0.742
K2OK0.830
P2O5P0.436
Cr2O3Cr0.684
NiONi0.786
ZnOZn0.803
ZrO2Zr0.740
BaOBa0.896
SrOSr0.846
H2OH0.112
CO2C0.273
SO3S0.400

Additional oxides are supported including rare earth element oxides (La2O3, Ce2O3, CeO2, Nd2O3, Sm2O3, Eu2O3, Gd2O3, Dy2O3, Er2O3, Yb2O3, Lu2O3, etc.), high field strength element oxides (Nb2O5, Ta2O5, HfO2, ThO2, UO2, U3O8, WO3, etc.) and many more.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-laicpms.html b/.vitepress/dist/doc-laicpms.html new file mode 100644 index 0000000..90cd8a2 --- /dev/null +++ b/.vitepress/dist/doc-laicpms.html @@ -0,0 +1,64 @@ + + + + + + XMapTools documentation for LA-ICP-MS | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

XMapTools documentation for LA-ICP-MS

Table of contents

File format

The importer module should be able to read files in the following format. Note that some format require a conversion before to be imported in XMapTools.

Agilent

The date and time are read from the third row.

D:\Agilent\ICPMH\1\DATA\Name\map.b\map.d
+Intensity Vs Time,CPS
+Acquired      : 2022-01-24 11:11:45 AM using Batch map.b
+Time [Sec],Li7,Na23,Mg25
+0.6196,50.00,82227.81,0.00
+1.1516,50.00,79613.57,0.00
+[...]

Thermo Fisher CSV

The Date and time are read from the first row.

Standards run :02-27-2024 11:16:40 AM;
+Software: [...]
+Configuration: [...]
+S-SQ-N%2FA: [...]
+RF Generator: [...]
+Ion Optics: [...]
+Vacuum: [...]
+Detector: [...]
+Cooling System: [...]
+Power Supply: [...]
+Gas Supply: [...]
+Pulse Counting: [...]
+
+Time,7Li,23Na,24Mg,25Mg, 
+,dwell time=0.01;xcal factor=59347.84333,dwell time=0.001;xcal factor=72480.60121,dwell time=0.01;xcal factor=73115.42471
+0.01326,400.006400102402,89317.9719802497,0
+0.41544,0,67180.0425139374,0 
+0.81759,0,76231.74450329,0
+[...]

Thermo Fisher FIN2

Warning: This file must be converted to CSV format using the 'Tools > Convert FIN2 to CSV' option in the converter.

The Date and time are read from the first row.

Finnigan MAT ELEMENT Raw Data
+Friday, July 04, 2025 11:31:12
+2025_07_04_Name1.FIN
+231
+0
+16,16,16
+CPS
+Time,Li7,B10,B11
+3.236000,340192.875000,585.555542,887.700012
+4.044000,342415.125000,459.555542,934.299988
+[...]

Perkin Elmer

The date and time are read from the file timestamp.

Intensity Vs Time, Counts per Second
+Time in Seconds ,Mg/25,Al/27,P/31,Ca/42
+
+0.,200.0016000128,1000.0400016001,3067.0428905946,31639.99295109
+0.28,200.0016000128,1600.102406554,3267.0935668927,30837.992406645
+[...]

Converter for LA-ICP-MS data

The Converter for LA-ICP-MS data can read LA-ICP-MS mapping data natively and generate intensity and standard maps for XMapTools (Markmann et al. 2024).

Main steps to import LA-ICP-MS data:

  • Import files including a data file from the mass spectrometer containing timestamps and intensity data, and optionally a log file from the laser system
  • Adjust the time shift to synchronise the two data sets
  • Generate a log file (if not available) using the Log Generator module
  • Extract integrations for each measurement
  • Apply a background correction using one of the available functions
  • Select primary standard(s) and fit to generate a primary standard intensity function
  • Select secondary standard(s) and check the quality of standardisation for each element selected as an internal standard
  • Generate maps using the interpolation method described in Markmann et al. (2024) for unknowns and standards, and export map files.

Step 1: Load datafile(s)

The import tools are located at the top of the module. The data format can be selected from the first dropdown menu and the file format (single or multiple) from the second dropdown menu. The data from a measurement session can be contained in a single file or multiple files. If multiple files are selected, it is recommended that you select the last file first and then hold SHIFT while selecting the first file, not vice versa. For the laser, deselect the log file option if no compatible log file is available. In this case, the Log Generator module will appear when the Load Datafiles button is pressed.

Once appropriate options have been selected, press the Load Datafiles button to select: (1) a single data file from the mass spectrometer containing timestamps and intensity data (e.g. Data.csv) or multiple files (see warning above), and (2) if the Log File option is enabled, immediately after a corresponding log file (e.g. Log.csv) from the laser system (tested with RESONETICS only).

Step 2: Adjust time shift

The value of the time shift can be adjusted to synchronise the data file with the log file. In the main figure, the total signal is plotted together with the laser on/off signals given in the log file (vertical red lines). The shift value is automatically adjusted by XMapTools when the data is imported. If necessary, adjust the value until both signals are synchronised.

Step 3: Extract integrations & plot data

Once the value of the time shift is optimised, press the Extract Integrations button to automatically extract all the analyses listed in the log file. They should appear in the Integration tree menu on the left of the window after extraction.

Step 4: Apply background correction

The integrations for fitting a background correction are automatically selected for each measurement. They are listed in a tree menu (integration menu) located on the left and can be plotted by selecting an item under the category Background.

Display/edit integrations for background

To view and edit integrations, select the first measurement in the tree menu. The display is automatically adjusted to zoom in on the selected integration. If you select a different measurement in the tree menu, the integration will be displayed in the centre of the plot. The program automatically excludes a fraction of sweeps at the beginning and at the end of each background measurement (default value is 10 %). This value can be changed manually if required. It is also possible to manually edit the duration of an integration by changing the limit values available as Sweep (min and max).

Background interpolation

Select a method for fitting the background in the BACKGROUND section below the plot. It is recommended to display the signal Raw_Sum and to adjust the display to show the entire background signal. The following functions are available: (1) linear, (2) polynomial, (3) step function, (4) spline. Step function is recommended for background correction. Press the button Apply to apply the background correction. You cannot change the background correction once it has been applied.

Step 5: Select primary standard(s)

The background-corrected (BackCorr) signal is displayed when a background correction has been applied. Corrected data are available from the Plot menu. Select the measurement to be used as the primary standard from the PRIMARY STANDARD dropdown menu. The integration name should match the name of a standard file containing the composition of this standard (e.g. NIST612 or GSD-1g). It is also possible to add custom files using the options available in the lower left panel, but this process must be repeated each time the converter is used. Integrations can be edited using the same strategy as for background integration (see above).

Then select an interpolation method. A spline function is usually the best method to approximate instrument drift during the measurement, especially when reconstructing maps (Markmann et al. 2024). A step function can also be used in some cases, but this can result in sharp transitions between lines in the final map. Press the Apply button to validate and interpolate the primary standard signal. If the standard is not automatically recognised, a window will open with a list of all available standards. It is possible to define additional interpolations to be used as primary standards. After pressing the Apply button it is possible to define a new interpolation for the same material or for a different material by selecting the Yes option. If you do not wish to define any further interpolations to be used as primary standards, select No (Continue).

Step 6: Select and check secondary standard

Select the measurements to be used as the secondary standard using the dropdown menu under SECONDARY STANDARD. Integrations can be edited using the same strategy as for background integration and primary standard (see above). Use the Int. Std dropdown menu to select an element to be used as a reference for calculating the composition of the secondary standard. This choice has no effect at this stage on the map calibration performed in XMapTools (another element can be used). But here it is possible to quickly check the calibration using the secondary standard for several elements used as internal standard.

Step 7: Generate map files

Maps can be generated from raster measurements after background correction, adjustment of the primary reference material(s) and checking of the secondary reference material(s). Use the dropdown menu in MAPS (SCANS) to select the raster measurements to be used to construct the map. Integrations cannot be edited. Press the Apply button to validate and generate the maps. Three buttons become available.

References

Markmann, T.A., Lanari, P., Piccoli, F., Pettke, T., Tamblyn, R., Tedeschi, M., Lueder, M., Kunz, B., Riel, N., and Laughton, J. (2024). Multi-phase quantitative compositional mapping by LA-ICP-MS: analytical approach and data reduction protocol implemented in XMapTools. Chemical Geology, 646, 121895.

For more detailed information on the LA-ICPMS Converter, refer to the embedded documentation available within the program.

Log generator module

When the log generator module is used the time shift should be set to zero.

Calibration

Intensity maps obtained by LA-ICPMS can be calibrated to element/oxide compositions. The following steps can be followed:

  • Import standard maps
  • Calibrate intensity data
  • Generate spider plots

Import standard maps

Only standard maps generated by the Converter for LA-ICPMS data can be imported and used to calibrate LA-ICPMS maps in XMapTools 4.

The button Import (Import Maps for Standards (from file)) is used to open a window in which the file 'MapStandards_Import.mat' must be selected.

Once standard data are imported they become available under the category Standards (Maps) in the Secondary Menu. Select an element to plot a map corresponding to the intensity of the primary standard material.

Calibrate intensity data

As for EPMA, the calibration tool for LA-ICPMS data requires a mask file, so the Calibrate button is only available when a mask file is selected in the Secondary Menu.

The button Calibrate (Open LA-ICP-MS Calibration Tools) opens the calibration assistant.

For more detailed information on the Calibration Assistant, refer to the embedded documentation accessible from the assistant.

Calibration assistant (LA-ICPMS)

The approach implemented in XMapTools 4, described in Markmann et al. (2024), provides a mineral calibration module based on the reference composition of an element (internal standard). In contrast to other programs, the composition of the reference element in the mineral can be variable.

Markmann, T.A., Lanari, P., Piccoli, F., Pettke, T., Tamblyn, R., Tedeschi, M., Lueder, M., Kunz, B., Riel, N., and Laughton, J. (2024). Multi-phase quantitative compositional mapping by LA-ICP-MS: analytical approach and data reduction protocol implemented in XMapTools. Chemical Geology, 646, 121895.

Step-by-step guide

  1. Select the mineral to be calibrated using the drop-down menu Mineral
  2. Select the element to be used as the internal standard from the drop-down menu Internal Standard
  3. Decide whether you want to use a fixed or variable composition using one of the options Fixed composition or Variable composition (see below)

Case 1: Fixed composition

This mode is useful when an element is chemically unzoned in the selected mineral and you want to use it as an internal standard (e.g. SiO₂ in garnet).

You can use the Internal Composition Converter tool to convert the composition of the internal standard into µg/g of element. Enter a value in oxide wt% and the converter will automatically convert this value to µg/g. Note that the value in the Fixed Composition field changes when a new conversion is performed; there is no need to copy the value from one field to the other.

Fixed composition calibration

Figure 1: Calibration Assistant for LA-ICPMS data. Example of internal calibration of phengite using Si as internal standard and a reference composition of SiO2 = 51 wt%. The value of Si = 2.384e+05 µg/g has been automatically set in the "Fixed Composition" field. Two maps are displayed at the bottom: the k-matrix calculated using the internal standard and the calibrated map for Si expressed in µg/g.

Press the Apply Standardisation button to generate the compositional maps available in the Quantity category of the Primary Menu. The maps are expressed in µg/g of elements. You can convert them to wt% of oxides using the internal converter: right-click on a Quanti file and select Convert.

TIP

After converting the maps, the name of the maps can be changed (this is not done by the converter).

Case 2: Variable composition

This mode is optimal for minerals that are zoned in all major elements (e.g. phengite). Average intensities of several ROIs can be extracted from the map and assigned to different compositions.

  1. The Pick a ROI (circle) Circle ROI button activates the mode to draw a ROI with a circle shape. Draw a circle on the map in a region of constant intensity.

  2. Set the average composition in wt% oxide in the Internal Composition Converter tool. Then click on the first and second row of Pt-1 in the table; values are automatically added.

  3. Move the ROI to another area (e.g. with lower intensity/composition values), adjust the value for wt% oxide, and click in both rows of the table to create Pt-2.

Variable composition - Core

Figure 2: Example of internal calibration of phengite using Si as internal standard and a variable reference composition. A value of SiO2 = 52 wt% is assigned to the phengite core (Pt-1).

Variable composition - Rim

Figure 3: Example with a value of SiO2 = 47 wt% assigned to the muscovite rim (Pt-2). Two maps are shown below: the k-matrix calculated using the internal standard with variable composition and the calibrated map for Si expressed in µg/g. Note that compared to Figure 1, Si is not homogeneous throughout the mica.

Press the Apply Standardisation button to generate the compositional maps available in the Quantity category of the Primary Menu. The maps are expressed in µg/g of elements. You can convert them to wt% of oxides using the internal converter: right-click on a Quanti file and select Convert.

TIP

After converting the maps, the name of the maps can be changed (this is not done by the converter).

Generate spider plots

The button Spider (Open Spider Module) opens the module Spider Plot. This button is only available when a quanti file or any map within a quanti file is selected in the primary menu.

For more detailed information on the Spider Module, see the dedicated Spider Module page.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-options.html b/.vitepress/dist/doc-options.html new file mode 100644 index 0000000..f7f4973 --- /dev/null +++ b/.vitepress/dist/doc-options.html @@ -0,0 +1,25 @@ + + + + + + Options | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Options

Based on XMapTools 4.5 embedded documentation – Help file version 11.01.2024


This page describes the tools available in the Options section.


Option Tools

Figure 1: Option tools in XMapTools.

Colour Bar & Colour Palette

Use these options to change the colour palette, change the resolution of the colour map (number of colours), change the scale of the colour bar to logarithmic and add a black or white layer at the bottom and/or top of the colour palette.

Colormap

Colormap Set the colour palette to be used for the colour bar throughout XMapTools.

The recommended colour palettes are largely inspired by www.ColorBrewer.org by Cynthia A. Brewer, Geography, Pennsylvania State University. The following abbreviations are used in the drop-down menu: Colourblind friendly (C), Linear (L), Divergent (D) and Print friendly (P).

Default palettes:

  • XMap (default), Spectral, SingleRed, Frenchy, Fruity, Ocean, Forest, Winter 2021, Blues, Reds, B&W, Horizon, Watermelon, Purples

Scientific colour maps by Simon Garnier (viridisLite):

  • VIRIDISLITE plasma, viridis, inferno, magma

Scientific colour maps by Fabio Crameri:

  • SCM Acton, Bam, Bamako, BamO, Batlow, BatlowK, BatlowW, Berlin, Bilbao, Broc, Buda, Bukavu, Cork, CorkO, Davos, Devon, Fes, GRayC, Hawaii, Imola, Lajolla, Lapaz, Lisbon, Nuuk, Oleron, Oslo, Roma, RomaO, Tofino, Tokyo, Turku, Vanimo, Vik

Log scale

Log Check the Log (Use a log colormap) box to set a logarithmic axis for the colour bar. If this option is not selected, a linear scale is used instead.

Colormap resolution

Resolution Sets the number of colours used in the colormap (i.e. the resolution of the colour bar). Colour palettes defined with more colours are resampled. The default value is 256.

Layer options

Layers Adds a black or white layer at the bottom (lower) and/or top (upper) of the colour palette. When selected, the layer can be set to either black or white in the corresponding drop down menu.

Negative values

Negative If selected, negative values are displayed in the plotted map. By default, XMapTools ignores negative values in plots.

Auto Contrast

The Apply Auto Contrast option activates automatic contrast enhancement each time a new map is displayed.

Other Options

Median filter for 3D surface

Median filter Defines the value of the median filter to be applied when plotting a new 3D surface (see main menu Edit > Plot 3D surface). Changing this option will not update plots already generated.

XMapTools Main Window

This is the current resolution of the programme. Please submit this value if you are experiencing display problems with XMapTools.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-project-import.html b/.vitepress/dist/doc-project-import.html new file mode 100644 index 0000000..d09efaf --- /dev/null +++ b/.vitepress/dist/doc-project-import.html @@ -0,0 +1,25 @@ + + + + + + Project & Import | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Project & Import

Based on XMapTools 4.5 embedded documentation


This page describes the tools available in the Project & Import workspace. Each section is described separately below.


Project & Import Tools

Figure 1: Project & Import tools in XMapTools.

1. Project

The progress of a session can be saved to a project file (*.mat) and restored later. All current data and settings will be saved. Project files are generally compatible with all new versions of XMapTools. Project management tools described in the following are available in the Project & Import workspace or from the File menu.

  • The Open (Open Project) Open button opens and loads an existing project in XMapTools. The first map available in Intensity is automatically selected. The current working directory is automatically changed to the location of the project file.

INFO

XMapTools 4 uses a different strategy for internal data organisation and storage. Projects created with previous versions of XMapTools are not compatible with the new format and a conversion step is required. When a project file created with XMapTools 3 is opened in XMapTools 4, an automatic conversion to the new format is performed. Further explanation can be found here.

  • The Save (Save Project) Save button saves the active project as a MATLAB M-file containing all variables used by XMapTools. If no project has been saved, a new project will be saved.

  • The Save Project As... Save As button saves the active project as a new MATLAB M-file.

  • Field Display the name or the full path of the active project (if saved) depending on the selected option in the dropdown menu (File or Path).

TIP

Remember that the current working directory changes automatically when a new project file is opened. It is also possible to change the working directory using the main menu: XMapTools > Set Working Directory.

2. Data Conversion

Several tools are available to convert raw data into an XMapTools-friendly format and generate mosaics.

Raw data conversion using a converter

  • The Open XMapTools' EPMA converter EPMA Converter button opens the converter for EPMA data. A description on how to convert EPMA maps is available in the EPMA documentation.

Data formats currently supported:

  • EPMA - JEOL (SUN) – JEOL microprobes running on SUN-OS

  • EPMA - JEOL (WIN) – JEOL microprobes running on WINDOWS

  • EPMA - CAMECA – for recent CAMECA microprobes

  • The Open XMapTools' LA-ICP-MS converter LA-ICP-MS Converter button opens the converter for LA-ICPMS data. A detailed description of how to convert LA-ICP-MS data can be found in the LA-ICP-MS documentation.

Building mosaics

XMapTools can combine maps to create mosaics. There are two types of mosaic: grid mosaic, where the maps are stitched together in a grid, and real mosaic, where the maps are merged in the same coordinate system.

Grid mosaic

  • The Generate Mosaic (Grid) Mosaic Grid button allows multiple maps to be stitched together in a grid. Such a mosaic allows maps of individual grains to be combined on a single image, improving the visualisation of possible variations in composition. The original coordinates of each map are not preserved. Spot analyses used as internal standards must have X and Y manually defined after the mosaic has been created using the XMapTools coordinate system. For an alternative option, see the real mosaic option below.

How to create a mosaic using a predefined grid:

  1. From the main menu, set the working directory to a directory containing a folder called Mosaic (case sensitive): XMapTools > Set Working Directory
  2. The Mosaic folder should contain a set of maps with the same elements in the same format (e.g. TXT or CSV, not a combination of the two). Each dataset must be stored in a separate subfolder and already be in the XMapTools format after conversion from the raw data. Note that the subfolder name is used to define the order of the maps in the mosaic. Use folder names such as 01_Map34, 02_Map4, 03_Map1 to define the order before importing
  3. If the name of a folder starts with a minus sign (-), the folder will be skipped and not imported when the mosaic is created
  4. Important: The maps must have the same spatial resolution. If a map has a different spatial resolution, the resolution must first be adjusted manually. XMapTools assumes that the maps have the same spatial resolution and does not check this during mosaic creation
  5. Press the Generate Mosaic (Grid) button
  6. Define the number of columns in the dialogue box
  7. XMapTools creates the mosaic and saves the new maps in the current working directory
image

Figure: This is an example of a mosaic grid for 13 maps, arranged in three columns (map: Pb in counts). This allows the maps to be merged and displayed with the same colour scale.

Real mosaic

  • The Generate Mosaic in Original Coordinate System Mosaic Referenced button merges several maps into a referenced system based on their original coordinates. It also calculates the coordinates of the new map for the Standards.txt file. This means that spot analyses obtained during the same probe session can be provided directly and used to calibrate the mosaic.

How to create a referenced mosaic:

  1. From the main menu, set the working directory to a directory containing a folder called Mosaic (case sensitive)
  2. The Mosaic folder should contain a set of maps with exactly the same elements. Each set must be stored in a separate subfolder. Note that the subfolder name is used to define the order of the maps in the mosaic. Use folder names such as 01_Map34, 02_Map4, 03_Map1 to define the order before importing. Each folder must contain a Standards.txt file containing the map coordinates. If a Classification.txt file exists, it will be skipped
  3. The spatial resolution of each map is automatically adjusted to the settings of the map with the higher spatial resolution. Resampling is done using a linear interpolator for raster data
  4. Press the Generate Mosaic in Original Coordinate System button
  5. XMapTools creates the mosaic, saves the maps to the working directory, creates a file Standards.txt containing only the first block with the map coordinates. The order of the oxides (second block) and the analyses (third block) must be added manually
image

Figure: This is an example of a real mosaic for 3 maps, arranged using the map coordinates (map: Al2O3 in wt%).

3. Importing Maps & Images

This section describes the tools available for importing maps and other images into XMapTools. See also the dedicated Import Maps Tool documentation.

  • The Import (Import Maps) Import button opens the Import Tool to load map data.

Format: Map files must have the extension *.txt, *.asc, *.dat or *.csv, no header and a name compatible with the default element names of XMapTools for identification.

  • The Import CT (Import Image Stack) Import CT button imports slice images obtained after reconstruction of CT data. Compatible image formats are *.jpg and *.png. It is recommended to select the files from the last one to the first one while pressing MAJ. Importing large datasets can take several minutes.

4. Options (Project)

This section describes the display options for the map being viewed. These options are saved for each project.

  • Resolution Set the map resolution corresponding to the pixel size, also known as the step size on EPMA instruments. The default value is 20µm (arbitrary). The resolution value is automatically calculated from the map coordinates defined in Standards.txt when internal standards (spot analyses) are imported.

  • Scale Bar Activate and display the scale bar using the pixel size defined in Resolution. Two options are available from the drop down menu: white (default) or black.

  • The Rotate view by 90° Rotate button can be used to adjust the orientation of the map. The rotation angle is displayed next to the button with possible values: 0 (default orientation), 90, 180 or 270. Note that some of the display features, such as drag-for-zoom, are not available when a rotation is applied.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-sampling.html b/.vitepress/dist/doc-sampling.html new file mode 100644 index 0000000..fba2c36 --- /dev/null +++ b/.vitepress/dist/doc-sampling.html @@ -0,0 +1,25 @@ + + + + + + Sampling Tools | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Sampling Tools

Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024


This page describes the Sampling Tools. These tools are available at any stage of the data procedure and apply to the map shown in the main figure.

The following sampling functions are available from the Sampling menu or from the Sampling section of the live output display, located below the live histogram:

ToolIconDescription
CircleCircleAverage value and standard deviation of selected pixels
Area (polygon)PolygonAverage value and standard deviation of selected pixels
TransectTransectComposition/intensity changes along a path
StripStripAveraged compositional/intensity changes along a strip

Once a ROI has been selected, the results are displayed in the Sampling Viewer to the right of the main window. Data can be saved using the tools available in the Sampling menu under 'Save Results'. The 'Single Map' option saves data for the map selected from the primary menu, while the 'Multiple Map' option saves all element maps available in the selected data category. Data is automatically saved to an 'Exported-Sampling' folder in the working directory.

Circle

Select Sampling > Circle from the main menu and draw a circle on the map by clicking on a location, holding the mouse down and dragging over an area. A crosshair cursor becomes available when the mouse pointer is over the map and the Sampling option is enabled.

Once you have drawn the circle, click and hold one of the four filled dots inside the circle to change its size. Inside the circle a cross cursor can be used to move the position of the circle.

TIP

If it is not possible to edit or move the ROI, select XMapTools, press Ctrl and try editing the ROI again.

The result of the data extraction is shown by the green bar in the graph at the top right of the main window and the corresponding numbers immediately below. A histogram is also plotted using all the pixel data contained within the ROI.


Circle sampling

Figure 1: Example sampling of an intensity map (Ca) using the circle shape. Note that in this example, the average value of the selected pixels (Nb = 774) is 1028 ± 35.24 (stdev).

Area (Polygon)

Select Sampling > Area (Polygon) from the main menu and draw a polygon on the map by clicking on several points. Click on the first point to close the polygon (a circle cursor appears).

The polygon shape can be edited.


Polygon sampling

Figure 2: Example sampling of an intensity map (Ca) using the polygon shape. Note that in this example, the average value of the selected pixels (Nb = 774) is 999.8 ± 63.9 (stdev), but two plagioclase compositions are visible on the histogram (at 900 and 1030 counts).

Transect

Select Sampling > Transect from the main menu and draw a polygon on the map by clicking on several positions. Right-click to complete the selection. You must select at least two positions to obtain a valid transect.

The resulting profile is shown in the live display in the category sampling (Fig. 3).

The transect position can be edited and the plot will be updated automatically. Note that changing the colour bar boundaries will change the profile as the colours from the colour bar are used to plot the points.


Transect sampling

Figure 3: Example of sampling an intensity map (Ca) using a transect starting at the point located to the left.

Strip

This tool is used to extract the mean and median profile from a rectangular strip, using the composition of each transect. For a given pixel on the central transect, the value is calculated as the mean and median of the pixel compositions perpendicular to the reference transect.

Select Sampling > Strip from the main menu and draw a horizontal rectangle on the map by clicking on the corner position (top left), holding the mouse down and dragging over an area.

To move the rectangle, position the cursor in the centre of the rectangle, left-click, hold and drag, and drop it into the new position.

INFO

The rectangle must be drawn with its extension horizontal. However, it can be rotated later by positioning the cursor on the perimeter of the rectangle, near one of its edges, and then activating the rotation cursor.

Once the rectangle has been created (or edited), the plots in the Live Display Sampling category are updated. Two plots are available:

  • Top: Two curves — in red the median and in blue the mean
  • Bottom: All profiles used to generate the above plot are plotted in grey

Strip sampling

Figure 4: Example sampling of an intensity map (Ca) using a strip from bottom left to top right.


Strip orientation

Figure 5: Orientation of the sampling strip.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-segment.html b/.vitepress/dist/doc-segment.html new file mode 100644 index 0000000..dca690c --- /dev/null +++ b/.vitepress/dist/doc-segment.html @@ -0,0 +1,25 @@ + + + + + + CT Segmentation | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

CT Segmentation

Based on XMapTools 4.5 embedded documentation – Help file version 11.01.2024


This page describes the tools available in the Segment section. These tools are optimised for CT data and should not be used with other data types.

The processing of CT data for segmentation is divided into five steps:

  1. Create a segmentation scheme
  2. Setting the segmentation parameters
  3. Testing the segmentation
  4. Applying the segmentation and creating a ROI
  5. Exporting the results

Step 1 – Segmentation Scheme

A segmentation scheme is a set of recipes containing constraints that are applied to perform data segmentation. It is similar to the training sets for classification, although it does not (yet) contain training data.

Segmentation schemes are available in the secondary menu under Segmentation & Corrections in Schemes (Segmentation).

Select a CT image under the CT Data node in the primary menu and select the Schemes (Segmentation) item in the secondary menu.

The Add (Scheme / Group / Range) Add button has various functions depending on the item selected in the secondary menu:

  • Add a Segmentation Schema when the Schemes (Segmentation) node is selected
  • Add a Group Definition when a Segmentation Scheme is selected
  • Select a range of values from the displayed values when a group definition is selected. Adjust the min-max values to select a mineral or group of minerals and press Add. A single range of values can be selected for each group, so any new selection would replace existing data

INFO

Selected regions may overlap, but the algorithm will always consider the group in a sequential order. Pixels may be ignored by the segmentation algorithm if they are out of range.


CT Segmentation

Figure 1: Example of selecting a range of values (here from 128 to 212.6) for garnet. Note that this range has been stored in the segmentation scheme shown in the secondary menu.

Step 2 – Segmentation Parameters

These parameters can be set in the Segment (CT) and Segmentation Parameters & Test sections. There are two main algorithms implemented: Filter GB to remove grain boundaries and Interp GB to remove growth phases and re-interpolate filtered pixels.

Filter Grain Boundaries

Select a CT image from the CT Data node in the primary menu and a segmentation scheme from the secondary menu.

Four algorithms are available and can be selected from a drop-down menu:

  • Local Gradient
  • Local Standard Deviation
  • Local Range
  • Local Entropy

You can set the threshold (range between 0 and 1) above which a grain boundary is detected and the order (for the local range).

The Calculate GB map Calculate button opens a new figure containing two plots (e.g. Fig. 2): the result of the algorithm on the left and the same map with the filtered grain boundaries shown in red on the right. The axes of the two plots are aligned, and zooming in on one plot automatically adjusts the view of the second plot.


Grain boundary filter

Figure 2: Example of a grain boundary filter using the Local Gradient algorithm and a filter threshold of 0.15. Zoom has been used to show a small part of the image.

Interpolate Grain Boundaries

An algorithm based on a median filter is used to re-interpolate the grain boundary (an equivalent was available in XMapTools 3). The order of interpolation is adjustable.

Step 3 – Segmentation Test

You can test the segmentation on the selected image using the Segment Selected Image Segment (small) button available in Segmentation Parameters & Test.

The resulting ROI is available in the ROI category of the primary menu.

Step 4 – Final Segmentation

The Segment All Images Segment All button applies the segmentation to all images available in CT-data. The resulting ROI is available in the ROI category of the primary menu.

Step 5 – Exporting Results

Select a multi-slice ROI (3D ROI) from the primary menu.

The Plot Phase Proportions Plot button generates several plots to examine the spatial distribution of the segmented groups:

  1. Evolution of modes from top (left) to bottom (right)
  2. Correlation matrix between modes across vertical slices
  3. Smooth modal changes (vertical) calculated using the smoothing factor (number of slices to average to calculate a single position)
  4. Correlation matrix between smoothed modes over vertical slices

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-spider.html b/.vitepress/dist/doc-spider.html new file mode 100644 index 0000000..a1f3f82 --- /dev/null +++ b/.vitepress/dist/doc-spider.html @@ -0,0 +1,25 @@ + + + + + + Spider Module | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Spider Module

Based on XMapTools 4.5 embedded documentation – Help file version 03.12.2021


This page describes the Spider Module which can be used to generate spider plots for LA-ICP-MS data.

How to Generate Spider Plots

Step 1: Select the normalisation data from the Normalisation drop-down menu Normalisation

Step 2 (optional): Use the Auto Contrast Auto Contrast button to automatically adjust the colour range.

Step 3: Select pixels to plot using one of the ROI types:

  • Circle Circle
  • ROI ROI
  • Path Path

Step 4 (optional): Activate the Hold on Hold on mode to select multiple regions of interest. Simply repeat Step 3 to add more selections (circle or ROI). It is possible to edit and move any selection and the plot will be updated.

TIP

Uncertainties are plotted on the graph. It is possible to choose to display '1se' (1sd/√N) or '1sd' Uncertainty.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-spot-data.html b/.vitepress/dist/doc-spot-data.html new file mode 100644 index 0000000..58f126c --- /dev/null +++ b/.vitepress/dist/doc-spot-data.html @@ -0,0 +1,25 @@ + + + + + + Spot Data | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Spot Data

Based on XMapTools 4.5 embedded documentation – Help file version 09.02.2026


This page describes the tools available in the Spot Data workspace. This feature was added in XMapTools 4.5.

Datasets and Adding Spots in XMapTools

In XMapTools, spot data is stored in datasets. A dataset is a collection of spot positions, and each position can be linked to external data.

New datasets can be created by selecting the "Spot Dataset" item in the secondary menu and by clicking on the Add Add button. New datasets are added to the list of datasets in the secondary menu on the left. The name of the dataset is automatically generated using the name provided in the text field (Fig. 1). A dataset can be renamed by double-clicking on its name in the list. To delete a dataset, first select it in the list, then right-click on its name and select Delete.

Spots can be automatically added while creating a dataset if the Randomly populate option is selected. In this case the number of spots and their names is defined in the Nb and Spot Name fields. Spots are automatically distributed using the display image and only the pixels with a value between Cmin and Cmax. This allows users to select one mask/submask or a specific composition of the map.


Dataset tools

Figure 1: Dataset tools for spot data in XMapTools 4.5.

Spot integration

Each spot corresponds to a set of X,Y coordinates, but the compositional data can be extracted from taking the median and MAD values of the surrounding pixels. If the Integrate Pixels option is activated, the compositional data is extracted by integrating the values of the surrounding pixels. The number of pixels to be integrated is defined in the Nb x Nb fields corresponding to the number of pixels along X and Y directions. These two numbers must be odd to ensure that the central pixel is included in the integration.


Spot tools

Figure 2: Spot tools for spot data in XMapTools 4.5.

Adding and editing spots

Additional spots can be added by pressing the Add Spot Add Spot button and by immediately clicking on the map to define the spot position. The spots can be deleted by selecting them in the secondary menu and then by right-clicking on their name and selecting Delete. The position of the spots can be edited by selecting their name in the list and dragging them on the map. The coordinates of the spots are automatically updated.

In the example reported in Figure 3 below, 10 spots were automatically added to the newly created dataset 'Garnet'. The default names were used for the spots (Spot_#). The compositional data of the spots are extracted by integrating the values of the surrounding pixels in a 5x5 grid (Nb = 25). Note that the spot coordinates are available in a table on the right of the interface when the dataset garnet is selected (Fig. 3).


Spot data interface

Figure 3: Spot data interface in XMapTools 4.5.

If a spot is selected in the secondary menu, the names, coordinates and value of each pixel are listed in the table on the right of the interface. The compositional data of the spot is extracted by taking the median and MAD values of the surrounding pixels. You can delete pixels by selecting them in the table and by pressing the Delete button. You can reset to the original n×n grid of pixels by pressing the Reset button.


Spot data pixel view

Figure 4: Spot data pixel details in XMapTools 4.5.

Importing External Data for Spots

External data for the spots can be imported and visualised in XMapTools. The following procedure is recommended:

  1. Select a Spot dataset in the secondary menu. The list of spots will be displayed in the table on the right (Fig. 3)
  2. Use the Copy Copy button to copy the content of the table to the clipboard
  3. Paste the content of the clipboard in a spreadsheet software (e.g., Excel) and add the compositional data for each spot in new columns after the name
  4. Save the Excel file as a CSV file

Import the spot external data by using the Import Import button available in the Spot External Data section (Fig. 5). The number of columns in the CSV file (except the name column) corresponds to the number of variables that will be imported and visualised in XMapTools (e.g. one variable in Fig. 5). You can use the display button to open a table containing the spot names and external values. The external data can be visualised on the map by selecting the variable to be displayed in the Add to plot dropdown menu in the Plot external data section.


External data tools

Figure 5: Spot External Data tools in XMapTools 4.5.

Two options Apply a colour gradient and Apply spot size gradient can be selected in the Plot external data section (e.g. colour gradient for Fig. 6).


External data plotted

Figure 6: Example of (a) spot data in XMapTools, (b) external data for δ18O saved in a CSV file, (c) external spot data (δ18O) plotted onto the map.

Exporting Spot Data

Spot data can be exported using the Export module available in the Add-on section. Open the module and select the Export Spot Data mode. Select your data source (e.g. Quanti in Fig. 7) and press the Generate & Save button.


Export module for Spot Data

Figure 7: Export module for Spot Data in XMapTools 4.5.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/doc-visualization.html b/.vitepress/dist/doc-visualization.html new file mode 100644 index 0000000..79802c4 --- /dev/null +++ b/.vitepress/dist/doc-visualization.html @@ -0,0 +1,25 @@ + + + + + + Data Visualization Tools | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Data Visualization Tools

Based on XMapTools 4.5 embedded documentation – Help file version 09.05.2025


This page describes the Data Visualization module, which can be used to display map data in histograms, binary plots, ternary plots and as an RGB composite image.

The Data Visualization module has access to the data selected in the primary menu of XMapTools when it is opened. To change the type of data, close the module and re-open it after selecting different data.

Visualization Modes

The type of plot to be generated can be selected in the Plot section. The following modes are available:

  • Histogram Histogram – requires a single variable X; a histogram is generated and plotted in the main figure (Fig. 1)
  • Binary Binary plot – requires two variables X and Y; a binary plot is generated and plotted in the main figure, as well as a density image. Two histograms, one for each dimension (not shown if low resource mode is active), are plotted as additional figures (Fig. 2)
  • RGB RGB – requires three variables X, Y and Z; an RGB composite image is generated and plotted in the main figure, a legend is plotted in an additional figure (Fig. 3)
  • Ternary Ternary plot – requires three variables X, Y and Z; a ternary plot is generated and plotted in the main plot, three histograms and a density plot (not shown if low resource mode is active) are plotted as additional plots (Fig. 4)

By default, XMapTools generates a binary diagram when the module is opened if at least two variables (maps) are available.


Histogram mode

Figure 1: Data Visualization Module, histogram mode.


Binary mode

Figure 2: Data Visualization Module, binary mode.


RGB mode

Figure 3: Data Visualization Module, RGB mode.


Ternary mode

Figure 4: Data Visualization Module, ternary mode.

Variable Definition

On the left hand side of the Plot section you can select the maps to be displayed. These can be elements, groups of elements or any other variable (e.g. structural formula).

Variable definition

Figure 5: Variable definition.

Whatever the plot type, variables are selected in Variable Definitions, either using the drop-down menus listing all the available maps, or using any combination of them.

Standard MATLAB code format is used to combine existing maps and create new variables to plot. Use an arithmetic operation defined by the rules of linear algebra or array arithmetic. The operation can include spaces between variables, digits, and operators. Array operators (with the dot character ".") must be used when maps are divided or multiplied by each other.

TIP

Element-wise multiplication or division should use .* or ./ to multiply or divide the two arrays element by element.

Variable definition using code

Figure 6: Variable definition using code.

Data Sampling (Explore Section)

A basic pixel identification tool is only available for binary and ternary maps. Use it to create polygons that identify the location of points on the map.

When a polygon is drawn, the pixel locations of all points within the region of interest are displayed on the map at the bottom right. The shape can be edited and the plot updated accordingly. An identical polygon is plotted on the density map when low resource mode is off.

The Polygon Polygon button activates a cross cursor and you can select vertices of a polygon around any region of interest in the main plot. Right-click to close the polygon.

The selection can be saved as a mask file.


Polygon selection

Figure 7: Data Visualization Module — Identify pixels using a polygonal selection in a binary plot.

Options

Masks

Masks Selecting the Masks check box will colour the data displayed in the binary or ternary plots according to the mask file displayed in the drop down menu.


Masked data

Figure 8: Intensity data coloured according to minerals retrieved from the selected mask file.

Low Resource Mode

This mode is optimal for computers with limited memory and is enabled by default when the Data Visualization module is opened. When this mode is activated, only 40% of the data is plotted (random selection).

Plot "Bulk Value" (Average)

The "Bulk Value" (Average) is calculated from the data plotted in the figure. There is no density correction applied, so deviations from the true bulk composition are expected if phases have different densities.

Statistics and Plotting Report

Statistics are reported in the Statistics section and are updated each time the plot is changed:

  • Bulk Value (average of plotted pixels) in binary & ternary plots
  • Bulk Value (std of plotted pixels) in binary & ternary plots
  • Bulk Value (relative fraction of X, Y and Z) in ternary plots
  • Correlation coefficient between X and Y in binary plots

The plotting report section can contain the following information:

  • Plot type and Low Resource Mode status
  • Size of dataset: number of pixels and fraction displayed
  • Various plotting times that can be reported to the developers in case of problems with the module

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/getting-started-2.html b/.vitepress/dist/getting-started-2.html new file mode 100644 index 0000000..77b3489 --- /dev/null +++ b/.vitepress/dist/getting-started-2.html @@ -0,0 +1,25 @@ + + + + + + Opening XMapTools for the First Time | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Opening XMapTools for the First Time

  1. Open the XMapTools app. Note: it may take up to a minute to start the first time while MATLAB libraries are loaded. XMapTools will start slightly faster on subsequent launches (until you restart your computer).

  2. A dialogue box opens — select your working directory and press Open. A working directory contains the data for a specific project. XMapTools automatically generates files during use that are stored there. Although you can change the working directory later, you must select one at startup. A log file is also automatically created in the selected working directory.

  3. The current working directory is displayed in the top bar of the main window.

  4. You are now ready to go! You can start converting raw data or importing maps.

What's Next?

  • Working with EPMA data? Try this tutorial.
  • Working with LA-ICP-MS data? Read this paper.

Common Questions

Why do I have to choose a working directory?

XMapTools creates many files during data processing and it is better to store these files together with the data they belong to.

It is strongly recommended to have a folder for each project that contains only the map and standard files needed by XMapTools. Raw data should be stored in a separate folder.

Why does it take so long to start XMapTools?

All the MATLAB libraries need to be loaded, which takes some time. The second time you run XMapTools it will be faster if you haven't restarted your computer. Use this time to think about your project and perhaps grab a cup of tea or coffee.

I am lost, where can I get some help?

You can find articles on this website and help files in the program. We also have tutorial videos. Do not hesitate to click on the help button available in each section to access a description of the main steps. If you feel that something is missing or unclear, or if you find an error, do not hesitate to contact us on Discord or via the developer repository on GitHub.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/getting-started.html b/.vitepress/dist/getting-started.html new file mode 100644 index 0000000..18764a9 --- /dev/null +++ b/.vitepress/dist/getting-started.html @@ -0,0 +1,25 @@ + + + + + + Getting Started | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Getting Started

Welcome to the XMapTools documentation! Whether you are a new or returning user, this guide will help you get XMapTools 4.5 up and running.

The installation and update procedures have changed in XMapTools 4.5. Most binaries now require MATLAB Runtime 25.1, which is installed automatically by the XMapTools installer. Older Runtime versions (e.g. v99 or v912) are no longer needed and can be safely deleted after upgrading.

XMapTools is distributed via shell scripts for macOS and Windows that automate the installation, update, download, extraction, and configuration of the program.

Compatibility

Before installing, make sure your system meets the requirements below:

VersionProcessorOperating SystemRuntime
macOSApple Silicon (M1, M2, M3, M4, …)macOS Sequoia (15), Sonoma (14), or Ventura (13)R2025a (25.1)
macOS IntelIntelmacOS Sequoia (15), Sonoma (14), or Ventura (13)R2020b (v99)
Windowsx86-64Windows 10 or Windows 11R2025a (25.1)

Note: The macOS version is not compatible with Intel processors, and the macOS Intel version is not stable with Apple Silicon processors. The installer auto-detects your architecture.

Next step

Ready to install? Head over to the Installation & Update Guide for step-by-step instructions.

Is XMapTools already installed? If so, go straight here.

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/hashmap.json b/.vitepress/dist/hashmap.json new file mode 100644 index 0000000..866a87c --- /dev/null +++ b/.vitepress/dist/hashmap.json @@ -0,0 +1 @@ +{"bingo-antidote.md":"CS1jHsQP","doc-addons.md":"BJFpqniu","doc-epma.md":"DFglyrsL","doc-ext-functions.md":"Dv8eBX6B","doc-images.md":"CLTo80uE","doc-import-maps.md":"B-cz6IVV","doc-laicpms.md":"DD1IZLH8","doc-options.md":"BUc_pidR","doc-project-import.md":"Dwd43zVv","doc-sampling.md":"DpW5G8we","doc-segment.md":"xn7xnz3f","doc-spider.md":"Cpkd8BPz","doc-spot-data.md":"BaQTjTtE","doc-visualization.md":"CwED1vHD","getting-started-2.md":"CEzqsAHA","getting-started.md":"BLdsliy4","index.md":"Doinpoc4","installation_guide.md":"DyFiVWdL","readme.md":"BF1pv8wB","tutorials.md":"ATW1haj-","videos.md":"C_lNMixv"} diff --git a/.vitepress/dist/index.html b/.vitepress/dist/index.html new file mode 100644 index 0000000..29419d9 --- /dev/null +++ b/.vitepress/dist/index.html @@ -0,0 +1,25 @@ + + + + + + XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

XMapTools 4.5Compositional mapping

Free and versatile software solution for quantitative chemical maps analysis.

XMapTools

What is XMapTools?

XMapTools is an advanced analysis software for quantitative chemical analysis of solids in 1D, 2D and 3D.

It provides numerical tools and packages implemented in a guided and versatile environment that allows you to explore and visualise data in your own way.

For example, XMapTools includes a wide range of data processing options including routines for classification, segmentation, calibration and visualisation via single and multi-channel maps or via binary, ternary and spider diagrams.


XMapTools Logo
XMapTools Logo

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/installation_guide.html b/.vitepress/dist/installation_guide.html new file mode 100644 index 0000000..f1ad73f --- /dev/null +++ b/.vitepress/dist/installation_guide.html @@ -0,0 +1,34 @@ + + + + + + XMapTools Installation & Update Guide | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

XMapTools Installation & Update Guide

This guide covers how to install and update XMapTools 4.5 and future releases on macOS and Windows using the official bootstrap scripts. These scripts automate downloading, extracting, and configuring XMapTools and the required MATLAB Runtime.

Table of Contents

Prerequisites

RequirementmacOSWindows
OSmacOS (Intel or Apple Silicon)Windows 10/11
Admin rightsYes (script prompts for sudo password)Yes (run PowerShell as Administrator)
Internet connectionRequiredRequired
ShellTerminal (zsh or bash)PowerShell

Note: The MATLAB Runtime is installed automatically during a full installation. You do not need a MATLAB licence.

Compatibility: XMapTools 4.5 requires MATLAB Runtime 25.1. Older versions of the Runtime (e.g. v99, or v912) can be deleted after updating to XMapTools 4.5.

Security: The code executed by the install command is available at https://xmaptools.ch/install.sh (macOS) and https://xmaptools.ch/install.ps1 (Windows). Do not use any other domain name. The xmaptools.ch domain is official and the only domain used to distribute XMapTools. If you are behind a firewall that blocks access, ask your system administrator to allow HTTPS traffic to this domain.


macOS

All macOS commands are run in the Terminal app. The script is fetched directly from the XMapTools server and executed locally.

Full Installation (macOS)

A full installation downloads XMapTools and the MATLAB Runtime. Use this when installing XMapTools for the first time or when you need to reinstall the runtime.

Auto-detect architecture (recommended):

bash
curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install

The script automatically detects whether your Mac uses Apple Silicon or Intel and downloads the correct version.

Specify architecture manually:

bash
# Apple Silicon (M1, M2, M3, M4, …)
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install AppleSilicon
+
+# Intel
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install Intel

What happens during installation:

  1. Any previous XMapTools installation in /Applications/XMapTools is removed (you may be prompted for your administrator password).
  2. The installer archive is downloaded and extracted to a temporary directory.
  3. macOS Gatekeeper quarantine flags are cleared so the app can launch.
  4. The graphical installer opens — follow the steps below to complete the setup.
  5. A terminal command xmaptools is created so you can launch the app from any terminal window.

Graphical installer steps (macOS):

  1. Enter your password to allow the MATLAB Runtime Installer to make changes.
  2. Press Next.
  3. Leave the default installation folder /Applications/XMapTools to allow automatic updates in the future and press Next.
  4. Leave the default installation folder for the Runtime /Applications/MATLAB/MATLAB_Runtime and press Next.
  5. Click Begin Install to install XMapTools and download the Runtime (~2 GB).
  6. Press Close when the installation is complete.
  7. You can now start XMapTools using XMapTools.app.

Update Only (macOS)

An update replaces the XMapTools application bundle without reinstalling the MATLAB Runtime. This is faster than a full installation and preserves your runtime setup.

Prerequisite: XMapTools must already be installed in /Applications/XMapTools.

Auto-detect architecture (recommended):

bash
curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --update

Specify architecture manually:

bash
# Apple Silicon
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --update AppleSilicon
+
+# Intel
+curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --update Intel

What happens during an update:

  1. The script verifies that XMapTools is already installed.
  2. The latest application archive is downloaded and extracted.
  3. The previous app bundle (XMapTools.app) is replaced with the new version.
  4. Gatekeeper quarantine flags are cleared.
  5. Correct file permissions are set on user configuration files.
  6. Temporary files are cleaned up.

Show Information (macOS)

To display the available versions, remote file timestamps, detected MATLAB Runtime installations, and usage instructions:

bash
curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --info

Architecture Selection (macOS)

OptionWhen to use
AppleSiliconMacs with M1, M2, M3, M4, or later Apple chips (native performance)
IntelMacs with Intel processors
(omitted)The script auto-detects the architecture — Apple Silicon is selected on arm64 hardware

Tip: If you are unsure which architecture your Mac uses, click > About This Mac. If the Chip field says "Apple M…", use AppleSilicon. If it says "Intel", use Intel.

Terminal Command (macOS)

After installation or update, the script creates a command-line launcher at /usr/local/bin/xmaptools. You can start XMapTools from any terminal by typing:

bash
xmaptools

The script also updates your shell configuration file (.zshrc, .bash_profile, or .profile) to ensure /usr/local/bin is on your PATH.


Windows

All Windows commands are run in PowerShell. You should run PowerShell as Administrator (right-click → Run as Administrator).

Full Installation (Windows)

A full installation downloads XMapTools and the MATLAB Runtime.

powershell
iex "& { $(irm https://xmaptools.ch/install.ps1) } --install"

What happens during installation:

  1. Any previous XMapTools installation in C:\Program Files\XMapTools is removed.
  2. The installer archive is downloaded and extracted to a temporary directory.
  3. The graphical installer (XMapToolsInstaller_Windows.exe) is launched — follow the on-screen instructions to complete the setup.

Update Only (Windows)

An update replaces the XMapTools executable and splash screen without reinstalling the MATLAB Runtime.

Prerequisite: XMapTools must already be installed in C:\Program Files\XMapTools.

powershell
iex "& { $(irm https://xmaptools.ch/install.ps1) } --update"

What happens during an update:

  1. The script verifies that XMapTools is already installed.
  2. The latest application archive is downloaded and extracted.
  3. XMapTools.exe (and splash.png if present) are copied into the existing installation directory.
  4. Temporary files are cleaned up.

Show Information (Windows)

To display the available version, remote file timestamps, detected MATLAB Runtime installations, and usage instructions:

powershell
iex "& { $(irm https://xmaptools.ch/install.ps1) } --info"

Troubleshooting

"XMapTools does not appear to be installed"

This error occurs when running --update without a prior installation. Run a full installation first:

  • macOS: curl -fsSL https://xmaptools.ch/install.sh | bash -s -- --install
  • Windows: iex "& { $(irm https://xmaptools.ch/install.ps1) } --install"

"Invalid MCR version" after updating

If XMapTools reports an invalid MATLAB Runtime version after an update, the runtime may have changed between versions. Perform a full reinstallation using --install to get the matching runtime.

MATLAB Runtime not found

The scripts check for the MATLAB Runtime in:

  • macOS: /Applications/MATLAB/MATLAB_Runtime
  • Windows: C:\Program Files\MATLAB\MATLAB Runtime

If the runtime is missing, a full installation (--install) is required.

Supported MATLAB Runtime versions

Runtime versionPlatform
v99 (R2020b)macOS Intel
R2025amacOS Apple Silicon (native), Windows

macOS: "app is damaged" or Gatekeeper warning

The installation script automatically clears Gatekeeper quarantine flags. If you still see a warning, run manually:

bash
sudo xattr -cr /Applications/XMapTools/application/XMapTools.app

Windows: script execution policy

If PowerShell refuses to run the script, you may need to adjust the execution policy for the current session:

powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Then re-run the installation or update command.

Windows: permission denied

Make sure you are running PowerShell as Administrator. Right-click the PowerShell icon and select Run as Administrator.

XMapTools suddenly not opening (Windows)

If XMapTools was working previously and suddenly stops opening, this can be caused by a corrupted MATLAB Runtime installation or a Windows update that modified system paths. Try the following:

  1. Perform a full reinstallation using the --install flag
  2. If the issue persists, uninstall the MATLAB Runtime (see Delete Old Runtime Libraries) and reinstall

Unfreeze XMapTools in case of error

If XMapTools becomes unresponsive during an operation, a dialog box may appear with OK and Cancel buttons. Click Cancel to cancel the current operation and unfreeze XMapTools. Clicking OK may restart the operation and keep XMapTools frozen.

Uninstalling XMapTools (Windows)

To fully uninstall XMapTools on Windows:

  1. Open Settings → Apps & Features (or Control Panel → Programs and Features)
  2. Find XMapTools in the list and click Uninstall
  3. Optionally, uninstall the MATLAB Runtime from the same list if no other MATLAB-based applications require it

Quick Reference

ActionmacOSWindows
Installcurl -fsSL https://xmaptools.ch/install.sh | bash -s -- --installiex "& { $(irm https://xmaptools.ch/install.ps1) } --install"
Updatecurl -fsSL https://xmaptools.ch/install.sh | bash -s -- --updateiex "& { $(irm https://xmaptools.ch/install.ps1) } --update"
Infocurl -fsSL https://xmaptools.ch/install.sh | bash -s -- --infoiex "& { $(irm https://xmaptools.ch/install.ps1) } --info"
Install dir/Applications/XMapToolsC:\Program Files\XMapTools
Runtime dir/Applications/MATLAB/MATLAB_RuntimeC:\Program Files\MATLAB\MATLAB Runtime

Delete Old Runtime Libraries

After upgrading to XMapTools 4.5, older MATLAB Runtime versions (v99, v912) are no longer needed and can be safely removed to free disk space.

macOS:

bash
sudo rm -rf /Applications/MATLAB/MATLAB_Runtime/v99
+sudo rm -rf /Applications/MATLAB/MATLAB_Runtime/v912

Windows:

Use Settings → Apps & Features (or Add or Remove Programs) to uninstall the older MATLAB Runtime versions (R2020b / v912).

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/tutorials.html b/.vitepress/dist/tutorials.html new file mode 100644 index 0000000..5434982 --- /dev/null +++ b/.vitepress/dist/tutorials.html @@ -0,0 +1,25 @@ + + + + + + Tutorials | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Tutorials

Comprehensive tutorials and guides for using XMapTools effectively.

Tutorial 1: XMapTools for EPMA (2023)

Follow the steps in this tutorial to familiarise yourself with the EPMA data reduction procedure and discover the main features of XMapTools.

A video tutorial is also available on YouTube and Bilibili:

Located in China? Watch this video on Bilibili

Dataset description

The dataset used in this tutorial comes from the study of Duesterhoeft & Lanari (2020). It consists of EPMA maps of the sample HAL104 from West Guilford (Ontario) of the Canadian Grenville Province. It was analysed using 15 KeV accelerating voltage, 100 nA specimen current, 130 ms dwell time, 20 µm step size, ~1 µm beam size with 1000*1000 pixels. The mapping time was ~75 h.

Please do not use these data for any other purpose than this tutorial without the explicit authorisation of the author(s).

FileTypeComment
_Ce.txtEDS mapMostly below detection limit
_Cr.txtEDS mapMostly below detection limit
_La.txtEDS mapMostly below detection limit
_Ni.txtEDS mapBelow detection limit
_P.txtEDS mapOverlap with Zr
_S.txtEDS map
Al.txtWDS map
Ca.txtWDS map
Fe.txtWDS map
K.txtWDS map
Mg.txtWDS map
Mn.txtWDS map
Na.txtWDS map
SEI.txtOtherSecondary electron image map
Si.txtWDS map
Ti.txtWDS map
TOPO.txtOtherTopographic image map (obtained by BSE)
Standards.txtStandard fileFile containing the spot analyses used for map standardisation

Reference: Duesterhoeft, E. & Lanari, P. (2020). Iterative thermodynamic modelling – Part 1: A theoretical scoring technique and a computer program (BINGO-ANTIDOTE). Journal of Metamorphic Geology, 38, 527-55.

How to get started?

  1. Download Tutorial_EPMA_2023.zip from the download center.
  2. Unzip the folder in a suitable working directory (e.g. Documents/Mapping/EPMA/Tutorial_EPMA_2023/)
  3. Open XMapTools. Note that starting XMapTools can take up to a minute; restarting the program is slightly faster When the program is ready, a dialog box opens; pick the working directory Tutorial_EPMA_2023 and click the button "Open". You can change the working directory later, but you need to pick a directory when you start the program. A log file is automatically created in the selected working directory.

Import maps

  1. In the first workspace "PROJECT & IMPORT", click on the Import image button (Import Maps) to open the Import Tool module.
  2. Select all the map files to be imported and click on the button "Open". Note that you can select all the text files available in the folder and XMapTools will find out which ones can be imported as maps.
  3. In the tab "Corrections", change the value of dwell time to 120 ms.
  4. Press the "Import Data" button.

X-ray data visualization (Part 1)

  1. Quickly go through the maps and use the Auto Contrast image button or the live frequency polygon (see figure below) to adjust the lower and upper limits of the color bar. Note that the color bar settings are available in the "Options" workspace.
  2. Eliminate the maps which are not needed because they do not contain any important information (Ce, Cr, Ni, S). To eliminate a map, select the map in the primary tree menu, then right click on the name and select "Delete".
  3. Save your project using either the Save image button available in the "PROJECT & IMPORT" workspace or in the menu "File" > "Save Project".
Data visualization

Classification

Classification is the step used to create a classified image in which each pixels are attributed to a class (mineral, glass, epoxy, etc.). In this tutorial we are using the random forest algorithm. The classification in XMapTools is supervised. You need to create a "training set" containing training data for each class.

Additional information about the classification in XMapTools can be found in : Lanari, P., Tedeschi, M., (2025). Chemical map classification in XMapTools. Applied Computing and Geosciences, 25, 100230 [Download].

  1. Set the active workspace to CLASSIFY.
  2. Create a new training set. In the secondary tree menu, select the category "Training Set (Classification)" and press the Add image button available in the CLASSIFY workspace to add phase definitions. Select in the list the phases: Biotite, Garnet, Plagioclase, Quartz; then click "Apply".
  3. Add training data for each phase:
    • Select a training class in the training set.
    • Adjust display (optional): select an element to be display and eventually use the Zoom image and Pan image buttons to adjust the field of view.
    • Select a ROI type in the dropdown menu among "Rectangle ROI", "Polygon ROI", "Ellipse ROI" and "Circle ROI".
    • Finally, press the Add a ROI image button and immediately click and drag (or click for polygon) over the map to create the ROI. How to draw a ROI in XMapTools:
      • Rectangle: click to select the first corner and drag the mouse to the opposite corner defining a rectangle.
      • Polygon: click successively on the image to draw a polygon; right-click or double-click to validate and close automatically the shape.
      • Ellipse: click to select the first point and drag the mouse to a second point defining the long axis of an ellipse.
      • Circle: click to select the first corner of a square and drag the mouse to opposite corner defining a circle.
  4. Edit the shape of a ROI by selecting the ROI in the secondary tree menu. If the editing mode is disabled, press once the "Ctrl" key on your keyboard and try again editing the shape of the ROI.
  5. You can eliminate a ROI by first selecting the ROI in the secondary tree menu and then right clicking on its name and selecting "Delete".
  6. Add new phase definitions for sillimanite and sudoite (low temperature chlorite here replacing cordierite). Add training data for each phase (see step 3 above).
  7. Restore the view using either the button "Reset Zoom & Pan" or the button "Restore view" available near the top-right corner of the main figure.
  8. In classification parameters:
    • Add all maps in the list for classification. Select an element to display in the primary tree menu and use the Add All image button to add all maps at once.
    • Eliminate La from the list; select La_EDS in the primary tree menu and press the Take La_EDS out image button.
    • You can calculate PCA maps using the Generate Maps of the Principal Component image button. The maps of principal components are listed in the category "Other" available in the primary tree menu.
    • Select the data type "Maps" (other data types are described in Lanari & Tedeschi 2025).
    • Select the map scaling method "Robust"; select the option "reproducibility" and set the seed value to 1.
  9. Select the algorithm "Random Forest" and set the option corresponding to the maximum number of trees to 50.
  10. Select the phase definition object "PhaseDef_1" in the secondary tree menu and press the Classify image button.
  11. Select a mask file to display the mineral map.
  12. Check the results of the classification (for Random Forest):
    • Are all training pixels classified in the true class? If not, the training set should be adjusted accordingly.
    • Is the out-of-bag classification error reaching a value of zero when the number of grown trees is exceeding 20? If not, there is probably a problem in the phase definition.
    • Check the predictor importance; maps with a very low predictor importance can be eliminated without affecting the quality of the classification (optional).
    • Evaluate the quality of the classification by displaying 1-2 diagnostic elements for each class (e.g. Si for biotite, quartz, plagioclase).
    • If necessary, adjust the training set and perform a new classification. It is recommended to eliminate the mask files that are not used.
  13. Save your project.

Extracting mineral modes

  1. Select a mask file.
  2. Select the ROI shape "rectangle" using the dropdown menu in "Mask analysis and visualization"
  3. Press the Add a ROI to export mask modes image button and immediately click and drag over the map to create the ROI.
  4. Adjust the shape to obtain the modes of the entire map. If the editing mode is disabled, press once the "Ctrl" key on your keyboard and try again editing the shape of the ROI.
  5. Save the modes using the Save image button in the composition tab on the right.
  6. Note that you can also copy the data to the clipboard using the Copy image button. Paste the data in a spreadsheet software program.
  7. Eliminate the ROI using the Reset ROI image button.
  8. For comparaison purposes (don't use that method for publications!), calculate pseudo modes using the point counting method:
    • Set the number of points to 500.
    • Unselect the Monte-Carlo option.
    • Extract several successive sets of pseudo modes using the point counting method by clicking on the Generate pseudo-modes image button and copy the results in a spreadsheet software program. Note: now you know why this method should not be used.
  9. Calculate pseudo modes using the point counting method and Monte Carlo to calculate uncertainties on the results (note: what is never done with point counting):
    • Set the number of points to 300.
    • Select the Monte-Carlo optionExtract pseudo modes and uncertainties using the Generate pseudo-modes image button and copy the results in a spreadsheet software program.
    • You can repeat this calculation for several number of points (e.g. 500, 750, 1000) and copy the results in a spreadsheet software program.

Analytical standardisation

The analytical standardisation consists of transforming the intensity maps of elements into weight percent maps of oxides. XMapTools 4 includes a calibration module that performs an automated calibration of all minerals. This black box algorithm works ok when all phases have spot analyses to be used as internal standard and when intensities are heigh enough. However, you need to carefully check the results of the calibration for each mineral.

The calibration method used by XMapTools is described in Lanari, P., Vho, A., Bovay, T., Airaghi, L., Centrella, S., (2019). Quantitative compositional mapping of mineral phases by electron probe micro-analyser. Geological Society of London, Special Publication, 478, 39-63 [Download].

Extracting Local bulk compositions

  1. Set the active workspace to "CALIBRATE".
  2. Display an intensity map showing a maximum of minerals (e.g. Al).
  3. Select the option "Import standards.txt" in "EPMA STANDARD DATA".
  4. Click on the Import image button. Note that the color of the spot labels can be changed in the options of the "Project & Import" workspace.
  5. Select the element Mg to estimate the quality of the position. The diagrams on the right show correlation maps with the center of the image being the position of the spots on the map. In this case the original position is good and there is no need to change it. (Optional) you can try to shift the spot position in the correlation plot of the element and then to press Apply image. To restore the original position, you can simply load the standard data again using the Import image button.
  6. Add two additional internal standard values for quartz (not measured):
    • Display the silicon map by selecting Si in the primary tree menu.
    • Select the category "Standards (Spots)" in the secondary tree menu.
    • Adjust the view using zoom and pan (optional)
    • Press the Add image button available in the "CALIBRATE" workspace select a pixel of quartz by clicking on the main image.
    • Set the composition to 100 wt% of SiO2 in the table available in the "Standard" tab.
    • Note that the new standard is listed at the bottom of the secondary tree menu under "Standards (Spots)". Selecting this internal standard display the location and the composition.
  7. Calibrate the intensity element maps into maps of wt% of oxide:
    • Select a mask file in the secondary tree menu.
    • In the "CALIBRATE" workspace, press the Calibrate image button to open the Calibration assistant for EPMA data.
    • Check the calibration curves by displaying the curve for each element of each mineral.
    • Use the button "Adjust (Manual)" to modify the calibration curve in case the calibration algorithm failed to set a proper calibration curveSelect the option "Apply to all masks".
    • Press the button "Apply Standardization" to calibrate all maps and send the data to XMapTools.
  8. Check the calibrated maps and the merged map using the primary tree menu.
  9. If the calibration quality is not good, select the category "Quanti" in the primary tree menu, then right-click on the name and select "Clear All" (optional). This will eliminate all the data in this category. You can do the same for the category "Merged".

Note: The video tutorial (see above) provides more tricks and explanations about the calibration module and how to check the quality of the calibration curves.

Structural formulas, thermometry & generating images

  1. We need first to create a density map for the mask file used for calibration:
    • Select a mask file in the secondary tree menu.
    • In the "CALIBRATE" workspace, press the Density image button to automatically generate a density map.
    • Enter average density values for each phase. Note that average values are automatically proposed if the mineral name used is available in the XMapTools database.
    • You can display the density map in that is listed under the category "Other" in the primary tree menu.
  2. Display a merged map by selecting an oxide in the category "Merged" of the primary tree menu.
  3. Select "Rectangle ROI", then press the "Add ROI" image button and immediately click and drag over the map to create the ROI.
  4. For this exercise, reshape the ROI to about ¾ of the map surface. If the editing mode is disabled, press once the "Ctrl" key and try again editing the shape of the ROI.
  5. Save the local bulk composition.
  6. Set the number of simulations to 100 and the shift value expressed in number of pixels to 20 and press the Calculate the uncertainties using Monte Carlo image button.
  7. Save the results and the figure (File > Save As…).
  8. Change the ROI to cover the entire map and export the new bulk composition. Compare the composition with the one previously obtained for the smaller domain.
  9. Create a new merged map "garnet-excluded" containing only pixel compositions of biotite, plagioclase, quartz, sillimanite and sudoite and export the local bulk composition:
    • Select the item "Biotite" in the category "Quanti" of the primary tree menu.
    • Press the Merge image button.
    • Select all mineral except Garnet and press the "Apply" button.
    • Rename the merged map into "Merged_noGrt".
    • Export a local bulk composition of the entire area.

The method to extract local bulk composition is described in Lanari, P., & Engi, M. (2017). Local bulk composition effects on metamorphic mineral assemblages, Reviews in Mineralogy and Geochemistry, 83, 55-102 [Download].

Structural formulas, thermometry & generating images

  1. Set the active workspace to "FUNCTIONS".
  2. In "Normalization & Structural Formula", select "Function", "Biotite" and "Bt (SF, 11-Ox. basis)".
  3. Display the function description by clicking on the Help image button.
  4. Select "Biotite" in the category "Quanti" of the primary tree menu
  5. Press the Apply image button to calculate the maps of structural formula for biotite.
  6. Display the maps of structural formula "Biotite Bt (SF, 11-Ox. basis)" available in the category "Results" of the primary tree menu.
  7. Generate an image showing the maps of Si, Ti and XMg in biotite:
    • In the menu, select in the menu: Image > Multi-Selection Mode.
    • Select the maps Si, Ti_M2 and XMg. Press ctrl (Windows) or Command (Mac) to select several maps in the primary tree menu.
    • Once the maps are selected, select in the menu: Images > Add Multi-plot image.
    • Unfold the new image available under the category "Images" in the primary tree menu. Select each map and use the auto-contrast option or the live frequency polygon to adjust the lower and upper limits of the color bar. Note that the settings are saved when modifying an image.
    • To save the image, you can use the menu File > Save Image. Alternatively, you can copy the image into the clipboard and past it into your favorite vector graphics editor. In the menu, select: Edit > Copy Image.
    • Save your project; images and their settings are kept in the project file.
  8. Calculate the maps of structural formula for garnet (with and without Fe3+) and plagioclase.
  9. Calculate the maps of structural formula for garnet using a 8-cation basis.
  10. Generate a new image containing the XMg maps of biotite and garnet:
    • Activate the multi-selection mode (menu: Image > Multi-Selection Mode).
    • In the menu "Image", select the option "Add Multi-Layer Image (multi-scale)".
    • Adjust the color scale and the color palette of each map in the image object.
    • Display the multi-layer image.
    • Select an other map (not an image) and change back the color palette to "XMap (CD)". Note that this change does not affect the image.
  11. Generate a new image containing maps of end-member fraction for almandine, pyrope, grossular and spessartine.
  12. Generate an image of Mg in biotite and in garnet (in apfu):
    • Select any result in "Biotite Bt (SF, 11-Ox. basis)".
    • In the menu, select: Modules > Generator.
    • Type the following equation in the field that calculates Mg (apfu): "Mg = Mg_M1 + Mg_M2".
    • Press the Generate image button.
    • Activate the multi-selection mode.
    • Select the maps Mg in garnet and Mg in biotite; both are expressed in apfu.
    • In the menu "Image", select the option "Add Multi-Layer Image (shared-scale)".
    • Use the live frequency polygon to adjust the lower and upper limits of the color bar.
  13. Save the project.
  14. Calculate temperature maps using Ti-in-biotite thermometry:
    • In the FUNCTIONS workspace, activate the "Map mode" in the section "Thermobarometry and other methods", select "Biotite" and "T.Bt (all calibrations)".
    • Select "Biotite" in the category "Quanti".
    • Press the Apply image button available in the section "Thermobarometry and other methods".
    • Set the pressure to 6 kbar (0.6 GPa).
    • Display the map T_H05.
    • Save a single image containing the temperature map T_H05.
  15. Calculate temperature conditions using garnet-biotite thermometry:
    • Select the merge map "Merged_RandomForest".
    • Adjust the view using zoom and pan (optional).
    • In the workspace "FUNCTIONS", activate the "Multi-equilibrium" mode in the section "Thermobarometry and other methods", select "Biotite" or "Garnet" and "T.Bt (all calibrations)".
    • Display the map FeOSelect "Circle ROI", then press the Add ROI image button.
    • Set the pressure to 6 kbar (0.6 GPa).
    • Select a ROI for garnet and then a ROI for biotite.
    • Results are displayed in a table for all calibrations. Check the Help image button to obtain the references.
    • Save the results using the Save image button available above the table.
    • Adjust the position of the ROI and extract the new temperature.
    • Click on the Reset ROI image button.

Sampling tools and chemical diagrams

  1. Export a transect chemical profile for the garnet end-member fractions:
    • Display the map Xprp and adjust the lower and upper limits of the color bar.
    • In the menu, select Sampling > Transect and click on the image to define a transect from rim through core to rim.
    • Adjust the position of the transect (optional).
    • Save the results for the selected end-member fraction. In the menu, select Sampling > Save Results > Single MapSelect Xsps, adjust the range of displayed values and save the results.
    • Select Xalm, adjust the range of displayed values and save the results.
  2. Export an integrated profile (strip) for the fraction of pyrope in garnet:
    • Select the map Xprp and adjust the range of displayed values.
    • In the menu, select Sampling > Strip and click on the image to create rectangle.
    • Adjust the rotation and the position of the rectangle to sample from rim to core of a garnet grain.
    • Save the results and compare the profile obtained with the ones obtained using the transect tool.
    • Reset ROI using the Reset image button.
  3. Generate a binary plot for biotite:
    • Select any map of the structural formula of biotite.
    • In the menu select Modules > Data Vizualisation.
    • Display XMg vs TI_M2 and adjust the display by zooming on the figure.
    • Select a ROI using the button "Polygon" available in "Explore"How many groups of biotite can be identified?
    • Close the Data Vizualisation module to resume XMapTools.
  4. Generate a ternary plot for plagioclase:
    • Select any map of the structural formula of plagioclase.
    • In the menu select Modules > Data Vizualisation.
    • Select "Ternary" plot and the following variables: Xab for X , Xsan for Y and Xan for Z.
    • Use the "Polygon" tool to identify pixels locations and to find mixing pixels.
    • Close the Data Vizualisation module to resume XMapTools.
  5. Identify mixing pixels using intensity maps:
    • Select any intensity map in the primary tree menu.
    • In the menu select Modules > Data Vizualisation.
    • Display a binary diagram Al vs Mg.
    • Use the "Polygon" tool to identify the minerals and the mixing pixels between them
    • Close the Data Vizualisation module to resume XMapTools.
  6. You can also generate the same plot using quantitative data (e.g. merged map) to notice the differences with intensity maps. It should be kept in mind that intensity maps are uncorrected for ZAF effects!

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/videos.html b/.vitepress/dist/videos.html new file mode 100644 index 0000000..6abf3c3 --- /dev/null +++ b/.vitepress/dist/videos.html @@ -0,0 +1,25 @@ + + + + + + Videos | XMapTools 4.5 Doc + + + + + + + + + + + + + + +
Skip to content

Videos

Watch our videos to find out more and learn how to use XMapTools.

Table of contents

LA-ICP-MS data reduction in XMapTools 4.3

Located in China? Watch this video on Bilibili

Introduction talk to XMapTools 4 for EPMA

Located in China? Watch this video on Bilibili

XMapTools Course 1 – How to get started (EPMA)?

Located in China? Watch this video on Bilibili

XMapTools 4 Special Event – December 2021

XMapTools - Quantitative compositional mapping

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/vp-icons.css b/.vitepress/dist/vp-icons.css new file mode 100644 index 0000000..ddc5bd8 --- /dev/null +++ b/.vitepress/dist/vp-icons.css @@ -0,0 +1 @@ +.vpi-social-github{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")} \ No newline at end of file diff --git a/doc-addons.md b/doc-addons.md new file mode 100644 index 0000000..cb3a6db --- /dev/null +++ b/doc-addons.md @@ -0,0 +1,50 @@ +# Add-ons + +*Based on XMapTools 4.5 embedded documentation – Help file version 09.06.2026* + +--- + +This page describes the tools available in the **Add-ons** section. Contact Pierre Lanari if you want to develop an add-on for XMapTools. + +## Export + +This module allows XMapTools data to be exported. It is available for both Map Data and Spot Data. + +The export format is defined by the user and can be used to export data for a specific software (e.g. MinPlot). Select the Data source, a maskfile and the type of data to be exported (e.g. Median, Mean or random selection, see Fig. 1). + +The BRC correction is a correction from XMapTools 4.3 (Lanari et al. 2019) that eliminates mixing pixels using the maskfile data. + +
+

+Export module +

+ +*Figure 1: Export module for Map Data in XMapTools 4.5.* + +Spot data can be exported using the *Export* module available in the *Add-on* section. Open the module and select the *Export Spot Data* mode. Select your data source (e.g. Quanti in Fig. 2) and press the *Generate & Save* button. + +
+

+Export Spot Data +

+ +*Figure 2: Export module for Spot Data in XMapTools 4.5.* + + +## IMG Converter + +The image converter module allows images to be converted to numeric data. Press the *Load Image* button to load an image. The image can be cropped by using the pink ROI and clicking the *Crop Image* button. The min and max values can be set manually (e.g. 0 and 100 in Fig. 3). Press the *Save Map* button to save the converted data into a txt file. + +
+

+Image Converter +

+ +*Figure 3: Image Converter module.* + + +## Bingo-Antidote + +Bingo-Antidote is a petrological software originally developed by Pierre Lanari and Erik Duesterhoeft that offers an alternative modelling strategy based on iterative thermodynamic models integrated with quantitative compositional mapping. Bingo-Antidote 2.0 is distributed as an add-on to XMapTools. It comes with a redesigned graphical user interface and improved functionality. + +Visit [https://xmaptools.ch/bingo-antidote/](https://xmaptools.ch/bingo-antidote/) to find out more. See also the dedicated [Bingo-Antidote documentation page](/bingo-antidote). diff --git a/doc-epma.md b/doc-epma.md index 19fa4a5..af40268 100644 --- a/doc-epma.md +++ b/doc-epma.md @@ -309,51 +309,9 @@ After selecting all files for the spot analyses, press the button generate Stand -## Generation of mosaics - -XMapTools can combine maps to create mosaics. There are two types of mosaic: _grid mosaic_, where the maps are stitched together in a grid, and _real mosaic_, where the maps are merged in the same coordinate system. - -### Grid mosaic - -The Generate Mosaic (Grid) image button allows multiple maps to be stitched together in a grid. Such a mosaic allows maps of individual grains to be combined on a single image, improving the visualisation of possible variations in composition. The original coordinates of each map are not retained. Spot analyses used as internal standards must have X and Y manually defined after the mosaic has been created using the XMapTools coordinate system. For an alternative option, see the second mosaic option below. - -Procedure for creating a mosaic using a predefined grid: - -- From the the main menu, set the working directory to a directory containing a Mosaic (case sensitive) folder: XMapTools > Set Working Directory -- The Mosaic folder should contain a set of maps with the same elements in the same format (e.g. TXT or CSV, not a combination of the two). Each dataset must be stored in a separate subfolder and already be in the XMapTools format after conversion from the raw EPMA - - data. Note that the subfolder name is used to define the order of the map in the mosaic. Use folder names such as 01_Map34; 02_Map4; 03_Map1 to define the order before importing. -- If a folder name starts with a minus symbol (−), the folder will be skipped and not imported when the mosaic is created -- Important: The maps must have the same spatial resolution. If a map has a different spatial resolution, the resolution must first be adjusted manually. Note that XMapTools assumes that the maps have the same spatial resolution and does not check this during mosaic creation -- Press the Generate Mosaic (Grid) button -- Set the number of columns in the dialogue box -- XMapTools generates the mosaic and saves the new maps in a new selected directory and change the edit the current working directory automatically. - -image - -_Figure: This is an example of a mosaic grid for 13 maps, arranged in three columns (map: Pb in counts). This allows the maps to be merged and displayed with the same colour scale._ - -### Real mosaic - -The Generate Mosaic in Original Coordinate System image button merges several maps into a referenced system based on their original coordinates. It also calculates the coordinates of the new map for the Standards.txt file. This means that spot analyses from the same microprobe session can be provided directly and used to calibrate the mosaic. - - -To create a referenced mosaic: - -- From the main menu, set the working directory to a directory containing a Mosaic (case sensitive) folder: XMapTools > Set Working Directory -- The Mosaic folder should contain a set of maps with exactly the same elements. Each dataset must to be stored in a separate subfolder. Note that the subfolder name is used to define the order of the map in the mosaic. Use folder names such as 01_Map34; 02_Map4; 03_Map1 to define the order before importing. Each folder must contain a Standards.txt file containing the map coordinates. If a Classification.txt file exists, it will be skipped. -- The spatial resolution of each map is automatically adjusted to the settings of the map with the higher spatial resolution. Resampling is performed using a linear interpolator for raster data. -- Press the Generate Mosaic in Original Coordinate System button -- XMapTools generates the mosaic, saves the maps in the working directory, generates a file Standards.txt containing only the first block with the map coordinates. The order of the oxides (second block) and the analyses (third block) must be added manually. - -image - -_Figure: This is an example of a real mosaic for 3 maps, arranged using the map coordinates (map: Al2O3 in et%)._ - - ## Importing data using the import module -To import map data in XMapTools, select the 'Project and Import' tab and press the 'Import Maps' image button located in 'Import Maps and Images'. This will open the import module and prompt you to select files. +To import map data in XMapTools, select the 'Project and Import' tab and press the **Import Maps** image button located in 'Import Maps and Images'. This will open the import module and prompt you to select files. Select the set of map files you want to import. Choose compatible files from the 'Pick Map File(s)' pop-up window. Note that multiple files can be selected at once. Any selected file that cannot be imported due to an incompatible format, for example, will be skipped during import. @@ -424,17 +382,17 @@ _Figure: Data conversion tool. In this example data are converted from element w #### Step 3.1: Create a training set -Display a map from the imported dataset using the Primary Menu and open the Classify tab. Select Training Set (Classification) in the Secondary Menu and press the _Add_ image button in Classify and select the phases. Press again the _Add_ image button to create a new mask definition in the training set. This operation can be repeated until the correct number of phases is reached. Each mask definition can be deleted by right-clicking on the name and selecting _Delete_. +Display a map from the imported dataset using the Primary Menu and open the Classify tab. Select Training Set (Classification) in the Secondary Menu and press the **Add** image button in Classify and select the phases. Press again the **Add** image button to create a new mask definition in the training set. This operation can be repeated until the correct number of phases is reached. Each mask definition can be deleted by right-clicking on the name and selecting _Delete_. -You can rename each mask definition by double-clicking on his name in the Secondary Menu. Press _Add_ image in Classify when a mask definition is selected to add a region-of-interest (ROI). +You can rename each mask definition by double-clicking on his name in the Secondary Menu. Press **Add** image in Classify when a mask definition is selected to add a region-of-interest (ROI). #### Step 3.2: Add maps for classification -Select the dataset in the category Merged of the Primary Menu and press the _Add Maps for Classification_ image button to add all the maps of the dataset in the list that will be used by the classification function. +Select the dataset in the category Merged of the Primary Menu and press the **Add Maps for Classification** image button to add all the maps of the dataset in the list that will be used by the classification function. #### Step 3.3: Classification -Select a dataset in the _Merged_ category of the Primary Menu and a _Training Set_ in the Secondary Menu. Pick an algorithm in the tab Classify and press the _Classify_ image button. Note that the Classify button is only available when an appropriate dataset and training set are selected in the primary and secondary menus. +Select a dataset in the _Merged_ category of the Primary Menu and a _Training Set_ in the Secondary Menu. Pick an algorithm in the tab Classify and press the **Classify** image button. Note that the Classify button is only available when an appropriate dataset and training set are selected in the primary and secondary menus. ### Step 4: Splitting a merged dataset using a maskfile @@ -455,6 +413,12 @@ _Figure: Results are stored in the category Quanti_ ## Classification +Compositional map classification is the process of categorising and labelling groups of pixels within a dataset based on their composition. It generates a mask image showing the distribution of each mask/class (i.e. features can be mineral/epoxy/glass, etc.). + +![Classification mask image example](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Classification_MaskImage.png) + +*Figure: Example of mask image for a metapelite from the Himalaya published in Lanari & Duesterhoeft (2019). Each feature (mineral) is shown with a colour. Note that all the pixels of this image have been classified.* + ### Classification parameters & algorithms These tools are used to select an algorithm and maps to be used for classification. @@ -493,6 +457,12 @@ A training set must be selected in the secondary menu in order to activate the c The button _Classify_ (Train a Classifier & Classify) trains a new classifier and performs the classification using the algorithm selected in the menu and the specified set of maps. +A new figure containing up to four plots will open and be continuously updated during classification. Do not close this figure until the classification is complete, otherwise the plots will not be displayed. + +![Classification plots](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Classification_PlotsRF.png) + +*Figure: Plots for classification using the Random Forest algorithm. Top left: out-of-bag classification error vs. number of trees grown. Top right: Predictor importance. Bottom left: Confusion map of the training data set. Bottom right: Confusion plot of the test dataset.* + Once the classification is achieved, a new mask file is generated and stored under _Mask files_ in the secondary menu. The mask file is automatically selected and the mask image displayed in the main figure. ### Filtering options @@ -518,6 +488,10 @@ The following ROI shapes are available: The button _Plot Compositions_ generates a plot using the data selected in the primary menu (either intensity, or a merged map) and the mask file selected in the secondary menu. +![Composition plot](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Classification_CompPlot.png) + +*Figure: Example of compositional plot generated using a merged map (expressed in oxide wt%) and a mask file.* + ## Calibration (EPMA) @@ -595,56 +569,86 @@ For more detailed information on the Calibration Assistant, refer to the embedde ### Calibration assistant (EPMA) -The new approach implemented in XMapTools 4 provides a module for auto multi-phase calibration. +The new approach implemented in XMapTools 4 provides a module for automatic multi-phase calibration. The general procedure is described in De Andrade et al. (2006) and an advanced approach including pseudo-background correction is described in Lanari et al. (2019). #### Strategy: advantages and pitfalls -An auto calibration is performed considering all spot analyses and all masks when you press the button _Calibrate_. The new algorithm performs first a general fit including all standards and then adjusts the calibration for each mineral. All calibration curves, including those for the general fit are accessible via the tree menu. +An automatic calibration is performed taking into account all spot analyses and all masks when the *Calibrate* button is pressed. The new algorithm first performs a **general fit** including all standards and then adjusts the calibration for each mineral. All calibration curves, including those for the general fit, are accessible from the tree menu. + +When you press the *Apply Standardisation* button, all the calibrated maps for each mineral as well as a merged map are created and sent back to XMapTools. -If you press the button _Apply Standardization_, all calibrated maps, for each mineral as well as a merged map are created and sent back to XMapTools. It seems magic, but it is not, so first make sure that you check the quality of the calibration curves determined by the auto function. +::: warning Important +First **make sure you check the quality of the calibration curves** generated by the auto function! +::: -The auto function works if all minerals have been measured with at least a few spot analyses and if there is at least one mineral with a composition above 1 wt% for each element. If a mineral or other feature (e.g. fracture) has no spot analyses, the program extrapolates a calibration from the general fit, therefore "predicting" a composition. At this stage, this composition is likely to be wrong because matrix effects are ignored! +The automatic function will work if all minerals have been measured with at least a few spot analyses and if there is at least one mineral with a composition above 1 wt% for each element. If a mineral or other feature (e.g. fracture) has no spot analyses, the program extrapolates a calibration from the general fit and thus "predicts" a composition. At this stage **this composition is likely to be off because matrix effects are ignored!** -If you close the Calibration Assistant window, neither calibrated data nor calibration settings are saved. If you press _Apply Standardisation_, all maps are sent to XMapTools. +::: info +- If you close the Calibration Assistant window, no calibrated data or calibration settings will be saved. +- When you press *Apply Standardisation*, all maps are sent to XMapTools. +::: #### Displaying calibration curves -Use the tree menu located on the left side to navigate through the list of minerals and elements and to display calibration curves. +The *Calibration Assistant for EPMA Data* opens when the *Calibrate* button in XMapTools is pressed. + +![Calibration EPMA overview](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Calibration_EPMA.png) + +*Figure: Example calibration for a clinopyroxene-garnet amphibolite metapelite of the Brasília orogen (Brazil), published in Tedeschi et al. (2017). Note that the calibration curves for all minerals are displayed when the window pops up.* + +Use the tree menu on the left to navigate through the list of minerals and elements and to view calibration curves. -If you select a mineral in the tree menu, a single map showing the sum of elements/oxides (total wt%) is displayed. The plot in the central part shows all calibration curves, for all the elements of the selected mineral. Some data are shown in a table: +When you select a mineral from the tree menu, a single plot showing the sum of elements/oxides (total wt%) is displayed. The plot in the middle shows all calibration curves, for all elements of the selected mineral. Some data is displayed in a table: -- **El.**: shows the element name (of the map), the total of the median mineral composition considering all pixels (sum(wt%)) and the total of the peak position (Peak(SumOx)) -- **#(std)**: shows the number of internal standards used for calibrating this phase -- **med(it)**: shows the median intensity value of the selected mineral for each element -- **med(wt)_s**: shows the median standard composition (spot analyses) -- **peak(wt)_m**: shows the median composition of the calibrated map -- **k-factor**: quantifies the difference between the calibration obtained during the general fit and the final calibration of the selected mineral. A value of 1 means that both are identical -- **Slope**: of the calibration curve of each element -- **Background**: value for each element +| Column | Description | +|---|---| +| **El.** | Element name (of the map); includes sum(wt%) and Peak(SumOx) labels | +| **#(std)** | Number of internal standards (spot analyses) used to calibrate the phase | +| **med(it)** | Median intensity value for all pixels of the selected mineral for each element | +| **med(wt)_s** | Median composition of all internal standard measurements (spot analyses) | +| **mode(wt)_m** | Most common composition in the calibrated pixels | +| **k factor** | Difference between the general fit calibration and the final mineral calibration (1 = identical) | +| **Slope** | Slope of the calibration curve | +| **Background** | Intercept of the calibration curve | -To display a specific calibration curve (for a given element), unfold the menu by clicking on the small arrow on the left side of the mineral name and select an element. The corresponding calibration curve is displayed as well as the correspondent quantitative map (oxide wt%). +::: tip +The values of `mode(SumOx)` and `Sum(wt)` may be different, in which case the median is likely to be influenced by non-Gaussian signals and may not be comparable with the median of the spot analyses. The comparison of both columns can be used to detect potential calibration problems. +::: + +![Calibration EPMA mineral selected](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Calibration_EPMA_2.png) + +*Figure: Example of calibration when a mineral is selected. All calibration curves for a given mineral are displayed.* + +To view a specific calibration curve (for a particular element), expand the menu by clicking on the small arrow to the left of the mineral name and select an element. The corresponding calibration curve is displayed together with the corresponding quantitative map (oxide wt-%). + +![Calibration EPMA element selected](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Calibration_EPMA_3.png) + +*Figure: Example when an element of a given mineral phase is selected. The calibration curve and quantitative map for a given element are displayed.* #### Adjusting a calibration curve -When an element is selected the button _Adjust_ appears above the tree menu. Clicking on this button displays two fields containing the values for background and slope. Values can be changed manually by typing new values in the corresponding field. Press enter to calculate and display the new calibration curve on the plot (this operation can take a few seconds). +When an element is selected, the **Adjust** Adjust button appears above the tree menu. + +Clicking this button displays two fields containing the values for **background** and **slope**: Slope and background + +Values can be changed manually by entering new values in the appropriate field. Press **Enter** to calculate and display the new calibration curve on the graph (this operation may take a few seconds). #### Displaying results of the general fit -By selecting the _General fit_ (last option in the tree menu), a plot with the calibration curves for all the elements is displayed. No adjustment on the calibration curves in the general fit is possible. This fit is automatically performed first by the program and no longer used once the calibration of each mineral is achieved. +Selecting *General Fit* (last option in the tree menu) will display a plot of the calibration curves for all elements. It is not possible to adjust the calibration curves in the general fit. This fit is automatically performed first by the program and is no longer used once the calibration of each mineral has been achieved. #### Apply calibration -After checking each calibration curve and adjusting if necessary, use the button _Apply standardization_ to generate the calibrated maps. +After checking each calibration curve and adjusting if necessary, use the **Apply Standardisation** button Apply to generate the calibrated maps. -By applying the standardisation, the option _Quanti_ in the Primary Menu becomes available. There, the quantitative maps in element/oxide wt% of each phase can be displayed. - -The option _Merged_ in the Primary Menu also becomes available after the standardisation. A set of merged maps (i.e., quantitative maps in oxide wt% for all the phases considered together) is automatically generated. +By applying the standardisation: +- The **Quanti** option in the *Primary Menu* becomes available, where quantitative maps in element/oxide wt-% of each phase can be displayed. +- The **Merged** option in the *Primary Menu* also becomes available. A set of merged maps (i.e. quantitative maps in oxide wt-% for all phases considered together) is automatically generated. #### Notes -Red spots show outliers that are not considered in the calculation of the calibration curves. - -By hovering the cursor on the images, an image menu will appear on the upper right. This menu includes options to zoom, save and copy the images. +- Red dots indicate outliers that were not included in the calculation of the calibration curves. +- Moving the cursor over the images brings up a *Image Menu* at the top right. This menu includes options to zoom, save and copy the images. ### Local bulk compositions diff --git a/doc-images.md b/doc-images.md new file mode 100644 index 0000000..34d899e --- /dev/null +++ b/doc-images.md @@ -0,0 +1,100 @@ +# Images + +*Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024* + +--- + +This page describes the **Images** module, which provides tools to create and manage publication-ready images from XMapTools data. + +## What are "Image-Data" in XMapTools? + +Images are plots stored in the project file and can be accessed from the primary menu under the *Image* category. These plots can be created using the tools available in the *Image* menu. They can be edited at any time and changes are saved. + +Four types of images can be created: + +| Type | Description | +|------|-------------| +| **Single plot image** | A single map (e.g. Ca_apfu in garnet) | +| **Multi-plot image** | A mosaic of maps (e.g. SiO2, Al2O3, FeO, Na2O); can also be combined into a GIF | +| **Multi-layer image (shared scale)** | Multiple layers plotted with the same colour bar (e.g. XMg in biotite and garnet) | +| **Multi-layer image (multi-scale)** | Multiple layers, each plotted with its own colour scale and palette | + + +## How to Create and Edit Images + +### Single-Plot Image + +Use the main menu to view a map and, if necessary, adjust the colour contrast using the live histogram. Select *Image >> Add Current Image* from the main menu. A new image object will be created and placed in the *Image* category at the bottom of the primary menu. + +You can view this image at any time by selecting *Img (single-layer) #X* from the primary menu (where X is the number of the image). + +To edit the image, expand the image object and select the map. You can adjust the colour settings (borders, colour palette, etc.); changes are saved within the image object. + +To export the image, select the image item in the primary menu and choose *File > Save Image* or *Edit > Copy Image* from the menu. + +
+

+Single plot image +

+ +*Figure 1: Example of an image generated with XMapTools for Ca (apfu) in garnet.* + +### Multi-Plot Image + +1. Activate multi-selection mode from the *Image > Multi-Selection Mode* menu. The item labels in the primary menu are displayed in blue when this mode is active +2. Select multiple maps from the primary menu. A mosaic will be created and displayed in the main window +3. Select *Image > Add Multi-Plot Image* from the menu + +You can expand the *Img (multi-plot) #X* item in the primary menu and select the maps one by one to adjust the colour contrast. You can also change the colour palette in the *Options* panel. + +::: warning +It is not recommended to use XMapTools with multi-selection mode enabled for normal operation — it should only be used to generate images. +::: + +
+

+Multi-plot image +

+ +*Figure 2: Example of a multi-plot image generated by XMapTools. Maps are expressed in oxide wt%. Note that each map is plotted using a different colour palette.* + +### Multi-Plot Image & GIF + +A GIF can be created from a multi-plot image. Select a multi-plot object, right-click on the name and select *Save as GIF*. + +
+

+GIF example +

+ +*Figure 3: Example of GIF generated with the images shown in Figure 2.* + +### Multi-Layer Image (Shared Scale) + +1. Activate multi-selection mode from the *Image > Multi-Selection Mode* menu +2. Select two (or more) compatible maps to plot together, for example XMg in biotite and XMg in garnet. The same unit should be used +3. Select *Image > Add Multi-Layer Image (Shared Scale)* from the menu + +You can expand the *Img (multi-layer ShS) #X* item in the primary menu and select the maps one by one to adjust the colour contrast. The same minimum and maximum values are applied to both images. + +
+

+Multi-layer shared scale +

+ +*Figure 4: Example of multi-layer image with common colour scale for XMg in garnet and biotite.* + +### Multi-Layer Image (Multi-Scale) + +1. Activate multi-selection mode from the *Image > Multi-Selection Mode* menu +2. Select two (or more) maps to be plotted together. Different quantities with different scales and units can be selected +3. Select *Image > Add Multi-Layer Image (Multi-Scale)* from the menu + +It is strongly recommended to use a different colour map for each map, as multiple colour bars will be created. + +
+

+Multi-layer multi-scale +

+ +*Figure 5: Example of multi-layer image with multi-scale for XMg in garnet and biotite. Note that the contrast is much better than on Figure 4 because two colour bars are used.* diff --git a/doc-import-maps.md b/doc-import-maps.md new file mode 100644 index 0000000..4801e85 --- /dev/null +++ b/doc-import-maps.md @@ -0,0 +1,73 @@ +# Import Maps Tool + +*Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024 by M. Tedeschi & P. Lanari* + +--- + +This page describes the **Import Tool**, which can be used to import maps, set the destination, and make basic corrections. Closing the Import Tool will stop the import process (no data will be imported). + +## Selecting Files + +The **Select** Select button allows a set of map files to be imported. Select compatible files from the *pick map file(s)* pop-up window. Multiple files can be selected together. If a selected file cannot be imported (e.g. due to an incompatible format), it will be skipped during the import. + +### File Format + +Map files must have the `*.txt`, `*.asc`, `*.dat` or `*.csv` extension, no header, and a name compatible with the XMapTools default element names for identification. The default lists of compatible element and oxide names are listed below. + +## Import Table + +Selected map files are listed in the main table. Additional maps can be added by pressing the **Add** Add button. + +| Column | Description | +|---|---| +| **File** | Contains the file names | +| **Map Name** | Contains the name of the corresponding element in the database | +| **Type** | Element or oxide | +| **Data** | Intensity or wt% | +| **Special** | EDS or WDS(?); in the case of WDS(?) a DTC is automatically selected | +| **DTC** | Dead time correction | +| **OC** | Orientation correction (do not use for EPMA and LA-ICPMS using the approach of Markmann et al. 2024) | +| **Destination** | In XMapTools, can be: Intensity, Quanti, Merged, Other; drop-down menu, can be edited | +| **Action** | Keep or eliminate; drop-down menu, can be edited | + +## Corrections + +Settings such as the dwell time can be changed in the *Corrections* section. + +Press **Import data** Import data to import the selected maps into XMapTools after the corrections have been applied. + +- Intensity maps will be available in the *Intensity* category +- Other maps will be available in the *Other* category + +## Compatible Element Names + +XMapTools supports all standard element symbols from H (1.00797) to Lr (260), including all lanthanides and actinides. Map files should be named with the corresponding element symbol for automatic identification. + +## Compatible Oxide Names + +The following oxides are supported (non-exhaustive list of common oxides): + +| Oxide | Element | Conversion Factor | +|---|---|---| +| SiO2 | Si | 0.467 | +| TiO2 | Ti | 0.600 | +| Al2O3 | Al | 0.529 | +| FeO | Fe | 0.777 | +| Fe2O3 | Fe | 0.699 | +| MnO | Mn | 0.774 | +| MgO | Mg | 0.603 | +| CaO | Ca | 0.715 | +| Na2O | Na | 0.742 | +| K2O | K | 0.830 | +| P2O5 | P | 0.436 | +| Cr2O3 | Cr | 0.684 | +| NiO | Ni | 0.786 | +| ZnO | Zn | 0.803 | +| ZrO2 | Zr | 0.740 | +| BaO | Ba | 0.896 | +| SrO | Sr | 0.846 | +| H2O | H | 0.112 | +| CO2 | C | 0.273 | +| SO3 | S | 0.400 | + +Additional oxides are supported including rare earth element oxides (La2O3, Ce2O3, CeO2, Nd2O3, Sm2O3, Eu2O3, Gd2O3, Dy2O3, Er2O3, Yb2O3, Lu2O3, etc.), high field strength element oxides (Nb2O5, Ta2O5, HfO2, ThO2, UO2, U3O8, WO3, etc.) and many more. diff --git a/doc-laicpms.md b/doc-laicpms.md index 310f6d9..e458a49 100644 --- a/doc-laicpms.md +++ b/doc-laicpms.md @@ -177,39 +177,61 @@ For more detailed information on the Calibration Assistant, refer to the embedde ### Calibration assistant (LA-ICPMS) -The approach implemented in XMapTools 4 provides a module for mineral calibration based on the reference composition of an element (internal standard). Unlike other programs, the composition of the reference element can be variable in the mineral. +The approach implemented in XMapTools 4, described in Markmann et al. (2024), provides a mineral calibration module based on the reference composition of an element (internal standard). In contrast to other programs, the composition of the reference element in the mineral can be **variable**. + +> Markmann, T.A., Lanari, P., Piccoli, F., Pettke, T., Tamblyn, R., Tedeschi, M., Lueder, M., Kunz, B., Riel, N., and Laughton, J. (2024). Multi-phase quantitative compositional mapping by LA-ICP-MS: analytical approach and data reduction protocol implemented in XMapTools. *Chemical Geology*, **646**, 121895. #### Step-by-step guide -- Select the mineral to be calibrated using the dropdown menu _Mineral_ -- Select the element to be used as internal standard using the dropdown menu _Internal Standard_ -- Decide if you want to use a fixed or variable composition using one of the option _Fixed composition_ or _Variable composition_ (see below) +1. Select the mineral to be calibrated using the drop-down menu *Mineral* +2. Select the element to be used as the internal standard from the drop-down menu *Internal Standard* +3. Decide whether you want to use a fixed or variable composition using one of the options *Fixed composition* or *Variable composition* (see below) #### Case 1: Fixed composition -This mode is valid if an element is chemically unzoned in the selected mineral and you want to use it as internal standard (e.g. SiO₂ in garnet). +This mode is useful when an element is chemically unzoned in the selected mineral and you want to use it as an internal standard (e.g. SiO₂ in garnet). + +You can use the **Internal Composition Converter** tool to convert the composition of the internal standard into µg/g of element. Enter a value in oxide wt% and the converter will automatically convert this value to µg/g. Note that the value in the *Fixed Composition* field changes when a new conversion is performed; there is no need to copy the value from one field to the other. + +![Fixed composition calibration](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Calibration_LAICPMS_FixedC.png) -You can use the _Internal Composition Converter_ tool to convert the composition of the internal standard in µg/g of element. Enter a value in oxide wt% and the converter will automatically translate this value to µg/g. Note that the value in the field for _Fixed composition_ changes when a new conversion is performed; there is no need to copy the value from one field to the other. +*Figure 1: Calibration Assistant for LA-ICPMS data. Example of internal calibration of phengite using Si as internal standard and a reference composition of SiO2 = 51 wt%. The value of Si = 2.384e+05 µg/g has been automatically set in the "Fixed Composition" field. Two maps are displayed at the bottom: the k-matrix calculated using the internal standard and the calibrated map for Si expressed in µg/g.* -Press the button _Apply standardisation_ to generate the compositional maps that will be available in the category _Quanti_ of the Primary Menu. The maps are expressed in µg/g of elements. You can convert them into wt% of oxides using the internal converter. Right-click on a quanti file and select the option _Convert_. Choose the conversion in the Converter Window. +Press the **Apply Standardisation** button to generate the compositional maps available in the *Quantity* category of the *Primary Menu*. The maps are expressed in µg/g of elements. You can convert them to wt% of oxides using the internal converter: right-click on a Quanti file and select *Convert*. + +::: tip +After converting the maps, the name of the maps can be changed (this is not done by the converter). +::: #### Case 2: Variable composition -This mode is optimal for minerals that are zoned in all major elements (e.g. phengite). Average intensities of several ROI can be picked from the map and attributed to different compositions. +This mode is optimal for minerals that are zoned in all major elements (e.g. phengite). Average intensities of several ROIs can be extracted from the map and assigned to different compositions. + +1. The **Pick a ROI (circle)** Circle ROI button activates the mode to draw a ROI with a circle shape. Draw a circle on the map in a region of constant intensity. + +2. Set the average composition in wt% oxide in the *Internal Composition Converter* tool. Then click on the first and second row of **Pt-1** in the table; values are automatically added. + +3. Move the ROI to another area (e.g. with lower intensity/composition values), adjust the value for wt% oxide, and click in both rows of the table to create **Pt-2**. + +![Variable composition - Core](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Calibration_LAICPMS_VariableC1.png) + +*Figure 2: Example of internal calibration of phengite using Si as internal standard and a variable reference composition. A value of SiO2 = 52 wt% is assigned to the phengite core (Pt-1).* -The button _Pick a ROI (circle)_ activates the mode to draw a ROI with a circle shape. Draw a circle on the map in a region showing a constant intensity. +![Variable composition - Rim](https://raw.githubusercontent.com/xmaptools/XMapTools_Public/main/Program/Dev/help/img/Calibration_LAICPMS_VariableC2.png) -Set the average composition in wt% of oxide in the _Internal Composition Converter_ tool. Then click in the table on the first and second row of Pt-1; values will be automatically added to the table. +*Figure 3: Example with a value of SiO2 = 47 wt% assigned to the muscovite rim (Pt-2). Two maps are shown below: the k-matrix calculated using the internal standard with variable composition and the calibrated map for Si expressed in µg/g. Note that compared to Figure 1, Si is not homogeneous throughout the mica.* -Move the ROI to another area, for example with lower values in intensity/composition, adjust the value for wt% of oxide and click in both lines the table to create Pt-2. +Press the **Apply Standardisation** button to generate the compositional maps available in the *Quantity* category of the *Primary Menu*. The maps are expressed in µg/g of elements. You can convert them to wt% of oxides using the internal converter: right-click on a Quanti file and select *Convert*. -Press the button _Apply standardisation_ to generate the compositional maps that will be available in the category _Quanti_ of the Primary Menu. The maps are expressed in µg/g of elements. You can convert them into wt% of oxides using the internal converter. Right-click on a quanti file and select the option _Convert_. Choose the conversion in the Converter Window. Note: After converting the maps, the name of the maps can be changed (this is not done by the converter). +::: tip +After converting the maps, the name of the maps can be changed (this is not done by the converter). +::: ### Generate spider plots The button _Spider_ (Open Spider Module) opens the module Spider Plot. This button is only available when a quanti file or any map within a quanti file is selected in the primary menu. -For more detailed information on the Spider Module, refer to the embedded documentation accessible from the module. +For more detailed information on the Spider Module, see the dedicated [Spider Module](/doc-spider) page. diff --git a/doc-options.md b/doc-options.md new file mode 100644 index 0000000..4044e15 --- /dev/null +++ b/doc-options.md @@ -0,0 +1,66 @@ +# Options + +*Based on XMapTools 4.5 embedded documentation – Help file version 11.01.2024* + +--- + +This page describes the tools available in the **Options** section. + +
+

+Option Tools +

+ +*Figure 1: Option tools in XMapTools.* + + +## Colour Bar & Colour Palette + +Use these options to change the colour palette, change the resolution of the colour map (number of colours), change the scale of the colour bar to logarithmic and add a black or white layer at the bottom and/or top of the colour palette. + +### Colormap + +Colormap Set the colour palette to be used for the colour bar throughout XMapTools. + +The recommended colour palettes are largely inspired by [www.ColorBrewer.org](http://www.colorbrewer.org) by Cynthia A. Brewer, Geography, Pennsylvania State University. The following abbreviations are used in the drop-down menu: Colourblind friendly (C), Linear (L), Divergent (D) and Print friendly (P). + +**Default palettes:** +- XMap (default), Spectral, SingleRed, Frenchy, Fruity, Ocean, Forest, Winter 2021, Blues, Reds, B&W, Horizon, Watermelon, Purples + +**Scientific colour maps by [Simon Garnier (viridisLite)](https://github.com/sjmgarnier/viridisLite):** +- VIRIDISLITE plasma, viridis, inferno, magma + +**Scientific colour maps by [Fabio Crameri](https://www.fabiocrameri.ch/colourmaps/):** +- SCM Acton, Bam, Bamako, BamO, Batlow, BatlowK, BatlowW, Berlin, Bilbao, Broc, Buda, Bukavu, Cork, CorkO, Davos, Devon, Fes, GRayC, Hawaii, Imola, Lajolla, Lapaz, Lisbon, Nuuk, Oleron, Oslo, Roma, RomaO, Tofino, Tokyo, Turku, Vanimo, Vik + +### Log scale + +Log Check the *Log (Use a log colormap)* box to set a logarithmic axis for the colour bar. If this option is not selected, a linear scale is used instead. + +### Colormap resolution + +Resolution Sets the number of colours used in the colormap (i.e. the resolution of the colour bar). Colour palettes defined with more colours are resampled. The default value is 256. + +### Layer options + +Layers Adds a black or white layer at the bottom (lower) and/or top (upper) of the colour palette. When selected, the layer can be set to either black or white in the corresponding drop down menu. + +### Negative values + +Negative If selected, negative values are displayed in the plotted map. By default, XMapTools ignores negative values in plots. + +### Auto Contrast + +The *Apply Auto Contrast* option activates automatic contrast enhancement each time a new map is displayed. + + +## Other Options + +### Median filter for 3D surface + +Median filter Defines the value of the median filter to be applied when plotting a new 3D surface (see main menu *Edit > Plot 3D surface*). Changing this option will not update plots already generated. + + +## XMapTools Main Window + +This is the current resolution of the programme. Please submit this value if you are experiencing display problems with XMapTools. diff --git a/doc-project-import.md b/doc-project-import.md new file mode 100644 index 0000000..bca2ae6 --- /dev/null +++ b/doc-project-import.md @@ -0,0 +1,110 @@ +# Project & Import + +*Based on XMapTools 4.5 embedded documentation* + +--- + +This page describes the tools available in the **Project & Import** workspace. Each section is described separately below. + +
+

+Project & Import Tools +

+ +*Figure 1: Project & Import tools in XMapTools.* + +## 1. Project + +The progress of a session can be saved to a project file (*.mat) and restored later. All current data and settings will be saved. Project files are generally compatible with all new versions of XMapTools. Project management tools described in the following are available in the *Project & Import* workspace or from the File menu. + +- The **Open (Open Project)** Open button opens and loads an existing project in XMapTools. The first map available in *Intensity* is automatically selected. The current working directory is automatically changed to the location of the project file. + +::: info +XMapTools 4 uses a different strategy for internal data organisation and storage. Projects created with previous versions of XMapTools are not compatible with the new format and a conversion step is required. When a project file created with XMapTools 3 is opened in XMapTools 4, an automatic conversion to the new format is performed. Further explanation can be found [here](https://resources.xmaptools.ch/importing-project-files-from-xmaptools-3/). +::: + +- The **Save (Save Project)** Save button saves the active project as a MATLAB M-file containing all variables used by XMapTools. If no project has been saved, a new project will be saved. + +- The **Save Project As...** Save As button saves the active project as a new MATLAB M-file. + +- Field Display the name or the full path of the active project (if saved) depending on the selected option in the dropdown menu (File or Path). + +::: tip +Remember that the current working directory changes automatically when a new project file is opened. It is also possible to change the working directory using the main menu: *XMapTools > Set Working Directory*. +::: + + +## 2. Data Conversion + +Several tools are available to convert raw data into an XMapTools-friendly format and generate mosaics. + +### Raw data conversion using a converter + +- The **Open XMapTools' EPMA converter** EPMA Converter button opens the converter for EPMA data. A description on how to convert EPMA maps is available in the [EPMA documentation](/doc-epma). + +Data formats currently supported: +- **EPMA - JEOL (SUN)** – JEOL microprobes running on SUN-OS +- **EPMA - JEOL (WIN)** – JEOL microprobes running on WINDOWS +- **EPMA - CAMECA** – for recent CAMECA microprobes + +- The **Open XMapTools' LA-ICP-MS converter** LA-ICP-MS Converter button opens the converter for LA-ICPMS data. A detailed description of how to convert LA-ICP-MS data can be found in the [LA-ICP-MS documentation](/doc-laicpms). + +### Building mosaics + +XMapTools can combine maps to create mosaics. There are two types of mosaic: _grid mosaic_, where the maps are stitched together in a grid, and _real mosaic_, where the maps are merged in the same coordinate system. + +#### Grid mosaic + +- The **Generate Mosaic (Grid)** Mosaic Grid button allows multiple maps to be stitched together in a grid. Such a mosaic allows maps of individual grains to be combined on a single image, improving the visualisation of possible variations in composition. The original coordinates of each map are not preserved. Spot analyses used as internal standards must have X and Y manually defined after the mosaic has been created using the XMapTools coordinate system. For an alternative option, see the real mosaic option below. + +**How to create a mosaic using a predefined grid:** + +1. From the main menu, set the working directory to a directory containing a folder called *Mosaic* (case sensitive): *XMapTools > Set Working Directory* +2. The Mosaic folder should contain a set of maps with the same elements in the same format (e.g. TXT or CSV, not a combination of the two). Each dataset must be stored in a separate subfolder and already be in the XMapTools format after conversion from the raw data. Note that the subfolder name is used to define the order of the maps in the mosaic. Use folder names such as `01_Map34`, `02_Map4`, `03_Map1` to define the order before importing +3. If the name of a folder starts with a minus sign (`-`), the folder will be skipped and not imported when the mosaic is created +4. **Important:** The maps must have the same spatial resolution. If a map has a different spatial resolution, the resolution must first be adjusted manually. XMapTools assumes that the maps have the same spatial resolution and does not check this during mosaic creation +5. Press the **Generate Mosaic (Grid)** button +6. Define the number of columns in the dialogue box +7. XMapTools creates the mosaic and saves the new maps in the current working directory + +image + +_Figure: This is an example of a mosaic grid for 13 maps, arranged in three columns (map: Pb in counts). This allows the maps to be merged and displayed with the same colour scale._ + +#### Real mosaic + +- The **Generate Mosaic in Original Coordinate System** Mosaic Referenced button merges several maps into a referenced system based on their original coordinates. It also calculates the coordinates of the new map for the Standards.txt file. This means that spot analyses obtained during the same probe session can be provided directly and used to calibrate the mosaic. + +**How to create a referenced mosaic:** + +1. From the main menu, set the working directory to a directory containing a folder called *Mosaic* (case sensitive) +2. The Mosaic folder should contain a set of maps with exactly the same elements. Each set must be stored in a separate subfolder. Note that the subfolder name is used to define the order of the maps in the mosaic. Use folder names such as `01_Map34`, `02_Map4`, `03_Map1` to define the order before importing. Each folder must contain a Standards.txt file containing the map coordinates. If a Classification.txt file exists, it will be skipped +3. The spatial resolution of each map is automatically adjusted to the settings of the map with the higher spatial resolution. Resampling is done using a linear interpolator for raster data +4. Press the **Generate Mosaic in Original Coordinate System** button +5. XMapTools creates the mosaic, saves the maps to the working directory, creates a file Standards.txt containing only the first block with the map coordinates. The order of the oxides (second block) and the analyses (third block) must be added manually + +image + +_Figure: This is an example of a real mosaic for 3 maps, arranged using the map coordinates (map: Al2O3 in wt%)._ + + +## 3. Importing Maps & Images + +This section describes the tools available for importing maps and other images into XMapTools. See also the dedicated [Import Maps Tool](/doc-import-maps) documentation. + +- The **Import (Import Maps)** Import button opens the Import Tool to load map data. + +**Format:** Map files must have the extension `*.txt`, `*.asc`, `*.dat` or `*.csv`, no header and a name compatible with the default element names of XMapTools for identification. + +- The **Import CT (Import Image Stack)** Import CT button imports slice images obtained after reconstruction of CT data. Compatible image formats are `*.jpg` and `*.png`. It is recommended to select the files from the last one to the first one while pressing MAJ. Importing large datasets can take several minutes. + + +## 4. Options (Project) + +This section describes the display options for the map being viewed. These options are saved for each project. + +- Resolution Set the map resolution corresponding to the pixel size, also known as the step size on EPMA instruments. The default value is 20µm (arbitrary). The resolution value is automatically calculated from the map coordinates defined in *Standards.txt* when internal standards (spot analyses) are imported. + +- Scale Bar Activate and display the scale bar using the pixel size defined in Resolution. Two options are available from the drop down menu: white (default) or black. + +- The **Rotate view by 90°** Rotate button can be used to adjust the orientation of the map. The rotation angle is displayed next to the button with possible values: 0 (default orientation), 90, 180 or 270. Note that some of the display features, such as drag-for-zoom, are not available when a rotation is applied. diff --git a/doc-sampling.md b/doc-sampling.md new file mode 100644 index 0000000..b622437 --- /dev/null +++ b/doc-sampling.md @@ -0,0 +1,99 @@ +# Sampling Tools + +*Based on XMapTools 4.5 embedded documentation – Help file version 14.01.2024* + +--- + +This page describes the **Sampling Tools**. These tools are available at any stage of the data procedure and apply to the map shown in the main figure. + +The following sampling functions are available from the *Sampling* menu or from the Sampling section of the live output display, located below the live histogram: + +| Tool | Icon | Description | +|------|------|-------------| +| **Circle** | Circle | Average value and standard deviation of selected pixels | +| **Area (polygon)** | Polygon | Average value and standard deviation of selected pixels | +| **Transect** | Transect | Composition/intensity changes along a path | +| **Strip** | Strip | Averaged compositional/intensity changes along a strip | + +Once a ROI has been selected, the results are displayed in the Sampling Viewer to the right of the main window. Data can be saved using the tools available in the Sampling menu under 'Save Results'. The 'Single Map' option saves data for the map selected from the primary menu, while the 'Multiple Map' option saves all element maps available in the selected data category. Data is automatically saved to an 'Exported-Sampling' folder in the working directory. + + +## Circle + +Select *Sampling > Circle* from the main menu and draw a circle on the map by clicking on a location, holding the mouse down and dragging over an area. A crosshair cursor becomes available when the mouse pointer is over the map and the Sampling option is enabled. + +Once you have drawn the circle, click and hold one of the four filled dots inside the circle to change its size. Inside the circle a cross cursor can be used to move the position of the circle. + +::: tip +If it is not possible to edit or move the ROI, select XMapTools, press Ctrl and try editing the ROI again. +::: + +The result of the data extraction is shown by the green bar in the graph at the top right of the main window and the corresponding numbers immediately below. A histogram is also plotted using all the pixel data contained within the ROI. + +
+

+Circle sampling +

+ +*Figure 1: Example sampling of an intensity map (Ca) using the circle shape. Note that in this example, the average value of the selected pixels (Nb = 774) is 1028 ± 35.24 (stdev).* + + +## Area (Polygon) + +Select *Sampling > Area (Polygon)* from the main menu and draw a polygon on the map by clicking on several points. Click on the first point to close the polygon (a circle cursor appears). + +The polygon shape can be edited. + +
+

+Polygon sampling +

+ +*Figure 2: Example sampling of an intensity map (Ca) using the polygon shape. Note that in this example, the average value of the selected pixels (Nb = 774) is 999.8 ± 63.9 (stdev), but two plagioclase compositions are visible on the histogram (at 900 and 1030 counts).* + + +## Transect + +Select *Sampling > Transect* from the main menu and draw a polygon on the map by clicking on several positions. Right-click to complete the selection. You must select at least two positions to obtain a valid transect. + +The resulting profile is shown in the live display in the category sampling (Fig. 3). + +The transect position can be edited and the plot will be updated automatically. Note that changing the colour bar boundaries will change the profile as the colours from the colour bar are used to plot the points. + +
+

+Transect sampling +

+ +*Figure 3: Example of sampling an intensity map (Ca) using a transect starting at the point located to the left.* + + +## Strip + +This tool is used to extract the mean and median profile from a rectangular strip, using the composition of each transect. For a given pixel on the central transect, the value is calculated as the mean and median of the pixel compositions perpendicular to the reference transect. + +Select *Sampling > Strip* from the main menu and draw a horizontal rectangle on the map by clicking on the corner position (top left), holding the mouse down and dragging over an area. + +To move the rectangle, position the cursor in the centre of the rectangle, left-click, hold and drag, and drop it into the new position. + +::: info +The rectangle must be drawn with its extension horizontal. However, it can be rotated later by positioning the cursor on the perimeter of the rectangle, near one of its edges, and then activating the rotation cursor. +::: + +Once the rectangle has been created (or edited), the plots in the Live Display Sampling category are updated. Two plots are available: +- **Top:** Two curves — in red the median and in blue the mean +- **Bottom:** All profiles used to generate the above plot are plotted in grey + +
+

+Strip sampling +

+ +*Figure 4: Example sampling of an intensity map (Ca) using a strip from bottom left to top right.* + +
+

+Strip orientation +

+ +*Figure 5: Orientation of the sampling strip.* diff --git a/doc-segment.md b/doc-segment.md new file mode 100644 index 0000000..7c117b6 --- /dev/null +++ b/doc-segment.md @@ -0,0 +1,96 @@ +# CT Segmentation + +*Based on XMapTools 4.5 embedded documentation – Help file version 11.01.2024* + +--- + +This page describes the tools available in the **Segment** section. These tools are optimised for CT data and should not be used with other data types. + +The processing of CT data for segmentation is divided into five steps: + +1. Create a segmentation scheme +2. Setting the segmentation parameters +3. Testing the segmentation +4. Applying the segmentation and creating a ROI +5. Exporting the results + + +## Step 1 – Segmentation Scheme + +A segmentation scheme is a set of recipes containing constraints that are applied to perform data segmentation. It is similar to the training sets for classification, although it does not (yet) contain training data. + +Segmentation schemes are available in the secondary menu under *Segmentation & Corrections* in *Schemes (Segmentation)*. + +Select a CT image under the *CT Data* node in the primary menu and select the *Schemes (Segmentation)* item in the secondary menu. + +The **Add (Scheme / Group / Range)** Add button has various functions depending on the item selected in the secondary menu: + +- Add a *Segmentation Schema* when the *Schemes (Segmentation)* node is selected +- Add a *Group Definition* when a *Segmentation Scheme* is selected +- Select a *range of values* from the displayed values when a *group definition* is selected. Adjust the min-max values to select a mineral or group of minerals and press *Add*. A single range of values can be selected for each group, so any new selection would replace existing data + +::: info +Selected regions may overlap, but the algorithm will always consider the group in a sequential order. Pixels may be ignored by the segmentation algorithm if they are out of range. +::: + +
+

+CT Segmentation +

+ +*Figure 1: Example of selecting a range of values (here from 128 to 212.6) for garnet. Note that this range has been stored in the segmentation scheme shown in the secondary menu.* + + +## Step 2 – Segmentation Parameters + +These parameters can be set in the *Segment (CT)* and *Segmentation Parameters & Test* sections. There are two main algorithms implemented: *Filter GB* to remove grain boundaries and *Interp GB* to remove growth phases and re-interpolate filtered pixels. + +### Filter Grain Boundaries + +Select a CT image from the *CT Data* node in the primary menu and a segmentation scheme from the secondary menu. + +Four algorithms are available and can be selected from a drop-down menu: + +- **Local Gradient** +- **Local Standard Deviation** +- **Local Range** +- **Local Entropy** + +You can set the threshold (range between 0 and 1) above which a grain boundary is detected and the order (for the local range). + +The **Calculate GB map** Calculate button opens a new figure containing two plots (e.g. Fig. 2): the result of the algorithm on the left and the same map with the filtered grain boundaries shown in red on the right. The axes of the two plots are aligned, and zooming in on one plot automatically adjusts the view of the second plot. + +
+

+Grain boundary filter +

+ +*Figure 2: Example of a grain boundary filter using the Local Gradient algorithm and a filter threshold of 0.15. Zoom has been used to show a small part of the image.* + +### Interpolate Grain Boundaries + +An algorithm based on a median filter is used to re-interpolate the grain boundary (an equivalent was available in XMapTools 3). The order of interpolation is adjustable. + + +## Step 3 – Segmentation Test + +You can test the segmentation on the selected image using the **Segment Selected Image** Segment (small) button available in *Segmentation Parameters & Test*. + +The resulting ROI is available in the *ROI* category of the primary menu. + + +## Step 4 – Final Segmentation + +The **Segment All Images** Segment All button applies the segmentation to all images available in *CT-data*. The resulting ROI is available in the *ROI* category of the primary menu. + + +## Step 5 – Exporting Results + +Select a multi-slice ROI (3D ROI) from the primary menu. + +The **Plot Phase Proportions** Plot button generates several plots to examine the spatial distribution of the segmented groups: + +1. Evolution of modes from top (left) to bottom (right) +2. Correlation matrix between modes across vertical slices +3. Smooth modal changes (vertical) calculated using the smoothing factor (number of slices to average to calculate a single position) +4. Correlation matrix between smoothed modes over vertical slices diff --git a/doc-spider.md b/doc-spider.md new file mode 100644 index 0000000..ceebff4 --- /dev/null +++ b/doc-spider.md @@ -0,0 +1,24 @@ +# Spider Module + +*Based on XMapTools 4.5 embedded documentation – Help file version 03.12.2021* + +--- + +This page describes the **Spider Module** which can be used to generate spider plots for LA-ICP-MS data. + +## How to Generate Spider Plots + +**Step 1:** Select the normalisation data from the *Normalisation* drop-down menu Normalisation + +**Step 2** (optional): Use the **Auto Contrast** Auto Contrast button to automatically adjust the colour range. + +**Step 3:** Select pixels to plot using one of the ROI types: +- Circle **Circle** +- ROI **ROI** +- Path **Path** + +**Step 4** (optional): Activate the **Hold on** Hold on mode to select multiple regions of interest. Simply repeat Step 3 to add more selections (circle or ROI). It is possible to edit and move any selection and the plot will be updated. + +::: tip +Uncertainties are plotted on the graph. It is possible to choose to display '1se' (1sd/√N) or '1sd' Uncertainty. +::: diff --git a/doc-spot-data.md b/doc-spot-data.md new file mode 100644 index 0000000..78886ae --- /dev/null +++ b/doc-spot-data.md @@ -0,0 +1,95 @@ +# Spot Data + +*Based on XMapTools 4.5 embedded documentation – Help file version 09.02.2026* + +--- + +This page describes the tools available in the **Spot Data** workspace. This feature was added in XMapTools 4.5. + +## Datasets and Adding Spots in XMapTools + +In XMapTools, spot data is stored in datasets. A dataset is a collection of spot positions, and each position can be linked to external data. + +New datasets can be created by selecting the "Spot Dataset" item in the secondary menu and by clicking on the **Add** Add button. New datasets are added to the list of datasets in the secondary menu on the left. The name of the dataset is automatically generated using the name provided in the text field (Fig. 1). A dataset can be renamed by double-clicking on its name in the list. To delete a dataset, first select it in the list, then right-click on its name and select *Delete*. + +Spots can be automatically added while creating a dataset if the *Randomly populate* option is selected. In this case the number of spots and their names is defined in the *Nb* and *Spot Name* fields. Spots are automatically distributed using the display image and only the pixels with a value between *Cmin* and *Cmax*. This allows users to select one mask/submask or a specific composition of the map. + +
+

+Dataset tools +

+ +*Figure 1: Dataset tools for spot data in XMapTools 4.5.* + +### Spot integration + +Each spot corresponds to a set of *X,Y* coordinates, but the compositional data can be extracted from taking the median and MAD values of the surrounding pixels. If the *Integrate Pixels* option is activated, the compositional data is extracted by integrating the values of the surrounding pixels. The number of pixels to be integrated is defined in the *Nb* x *Nb* fields corresponding to the number of pixels along *X* and *Y* directions. These two numbers must be odd to ensure that the central pixel is included in the integration. + +
+

+Spot tools +

+ +*Figure 2: Spot tools for spot data in XMapTools 4.5.* + +### Adding and editing spots + +Additional spots can be added by pressing the **Add Spot** Add Spot button and by immediately clicking on the map to define the spot position. The spots can be deleted by selecting them in the secondary menu and then by right-clicking on their name and selecting *Delete*. The position of the spots can be edited by selecting their name in the list and dragging them on the map. The coordinates of the spots are automatically updated. + +In the example reported in Figure 3 below, 10 spots were automatically added to the newly created dataset 'Garnet'. The default names were used for the spots (Spot_#). The compositional data of the spots are extracted by integrating the values of the surrounding pixels in a 5x5 grid (Nb = 25). Note that the spot coordinates are available in a table on the right of the interface when the dataset garnet is selected (Fig. 3). + +
+

+Spot data interface +

+ +*Figure 3: Spot data interface in XMapTools 4.5.* + +If a spot is selected in the secondary menu, the names, coordinates and value of each pixel are listed in the table on the right of the interface. The compositional data of the spot is extracted by taking the median and MAD values of the surrounding pixels. You can delete pixels by selecting them in the table and by pressing the *Delete* button. You can reset to the original n×n grid of pixels by pressing the *Reset* button. + +
+

+Spot data pixel view +

+ +*Figure 4: Spot data pixel details in XMapTools 4.5.* + + +## Importing External Data for Spots + +External data for the spots can be imported and visualised in XMapTools. The following procedure is recommended: + +1. Select a Spot dataset in the secondary menu. The list of spots will be displayed in the table on the right (Fig. 3) +2. Use the **Copy** Copy button to copy the content of the table to the clipboard +3. Paste the content of the clipboard in a spreadsheet software (e.g., Excel) and add the compositional data for each spot in new columns after the name +4. Save the Excel file as a CSV file + +Import the spot external data by using the **Import** Import button available in the *Spot External Data* section (Fig. 5). The number of columns in the CSV file (except the name column) corresponds to the number of variables that will be imported and visualised in XMapTools (e.g. one variable in Fig. 5). You can use the display button to open a table containing the spot names and external values. The external data can be visualised on the map by selecting the variable to be displayed in the *Add to plot* dropdown menu in the *Plot external data* section. + +
+

+External data tools +

+ +*Figure 5: Spot External Data tools in XMapTools 4.5.* + +Two options *Apply a colour gradient* and *Apply spot size gradient* can be selected in the *Plot external data* section (e.g. colour gradient for Fig. 6). + +
+

+External data plotted +

+ +*Figure 6: Example of (a) spot data in XMapTools, (b) external data for δ18O saved in a CSV file, (c) external spot data (δ18O) plotted onto the map.* + + +## Exporting Spot Data + +Spot data can be exported using the *Export* module available in the *Add-on* section. Open the module and select the *Export Spot Data* mode. Select your data source (e.g. Quanti in Fig. 7) and press the *Generate & Save* button. + +
+

+Export module for Spot Data +

+ +*Figure 7: Export module for Spot Data in XMapTools 4.5.* diff --git a/doc-visualization.md b/doc-visualization.md new file mode 100644 index 0000000..de10969 --- /dev/null +++ b/doc-visualization.md @@ -0,0 +1,127 @@ +# Data Visualization Tools + +*Based on XMapTools 4.5 embedded documentation – Help file version 09.05.2025* + +--- + +This page describes the **Data Visualization** module, which can be used to display map data in histograms, binary plots, ternary plots and as an RGB composite image. + +The Data Visualization module has access to the data selected in the primary menu of XMapTools when it is opened. To change the type of data, close the module and re-open it after selecting different data. + +## Visualization Modes + +The type of plot to be generated can be selected in the *Plot* section. The following modes are available: + +- Histogram **Histogram** – requires a single variable X; a histogram is generated and plotted in the main figure (Fig. 1) +- Binary **Binary plot** – requires two variables X and Y; a binary plot is generated and plotted in the main figure, as well as a density image. Two histograms, one for each dimension (not shown if low resource mode is active), are plotted as additional figures (Fig. 2) +- RGB **RGB** – requires three variables X, Y and Z; an RGB composite image is generated and plotted in the main figure, a legend is plotted in an additional figure (Fig. 3) +- Ternary **Ternary plot** – requires three variables X, Y and Z; a ternary plot is generated and plotted in the main plot, three histograms and a density plot (not shown if low resource mode is active) are plotted as additional plots (Fig. 4) + +By default, XMapTools generates a binary diagram when the module is opened if at least two variables (maps) are available. + +
+

+Histogram mode +

+ +*Figure 1: Data Visualization Module, histogram mode.* + +
+

+Binary mode +

+ +*Figure 2: Data Visualization Module, binary mode.* + +
+

+RGB mode +

+ +*Figure 3: Data Visualization Module, RGB mode.* + +
+

+Ternary mode +

+ +*Figure 4: Data Visualization Module, ternary mode.* + + +## Variable Definition + +On the left hand side of the *Plot* section you can select the maps to be displayed. These can be elements, groups of elements or any other variable (e.g. structural formula). + +

+Variable definition +

+ +*Figure 5: Variable definition.* + +Whatever the plot type, variables are selected in *Variable Definitions*, either using the drop-down menus listing all the available maps, or using any combination of them. + +Standard MATLAB code format is used to combine existing maps and create new variables to plot. Use an arithmetic operation defined by the rules of linear algebra or array arithmetic. The operation can include spaces between variables, digits, and operators. Array operators (with the dot character ".") must be used when maps are divided or multiplied by each other. + +::: tip +Element-wise multiplication or division should use `.*` or `./` to multiply or divide the two arrays element by element. +::: + +

+Variable definition using code +

+ +*Figure 6: Variable definition using code.* + + +## Data Sampling (Explore Section) + +A basic pixel identification tool is only available for binary and ternary maps. Use it to create polygons that identify the location of points on the map. + +When a polygon is drawn, the pixel locations of all points within the region of interest are displayed on the map at the bottom right. The shape can be edited and the plot updated accordingly. An identical polygon is plotted on the density map when low resource mode is off. + +The **Polygon** Polygon button activates a cross cursor and you can select vertices of a polygon around any region of interest in the main plot. Right-click to close the polygon. + +The selection can be saved as a mask file. + +
+

+Polygon selection +

+ +*Figure 7: Data Visualization Module — Identify pixels using a polygonal selection in a binary plot.* + + +## Options + +### Masks + +Masks Selecting the *Masks* check box will colour the data displayed in the binary or ternary plots according to the mask file displayed in the drop down menu. + +
+

+Masked data +

+ +*Figure 8: Intensity data coloured according to minerals retrieved from the selected mask file.* + +### Low Resource Mode + +This mode is optimal for computers with limited memory and is enabled by default when the Data Visualization module is opened. When this mode is activated, only 40% of the data is plotted (random selection). + +### Plot "Bulk Value" (Average) + +The "Bulk Value" (Average) is calculated from the data plotted in the figure. There is **no** density correction applied, so deviations from the true bulk composition are expected if phases have different densities. + +### Statistics and Plotting Report + +Statistics are reported in the Statistics section and are updated each time the plot is changed: + +- Bulk Value (average of plotted pixels) in binary & ternary plots +- Bulk Value (std of plotted pixels) in binary & ternary plots +- Bulk Value (relative fraction of *X*, *Y* and *Z*) in ternary plots +- Correlation coefficient between *X* and *Y* in binary plots + +The plotting report section can contain the following information: +- Plot type and Low Resource Mode status +- Size of dataset: number of pixels and fraction displayed +- Various plotting times that can be reported to the developers in case of problems with the module diff --git a/tutorials.md b/tutorials.md index ac8582e..6526f43 100644 --- a/tutorials.md +++ b/tutorials.md @@ -57,16 +57,16 @@ When the program is ready, a dialog box opens; pick the working directory __Tuto ### Import maps -1. In the first workspace "PROJECT & IMPORT", click on the "Import" image button (Import Maps) to open the Import Tool module. +1. In the first workspace "PROJECT & IMPORT", click on the **Import** image button (Import Maps) to open the Import Tool module. 2. Select all the map files to be imported and click on the button "Open". Note that you can select all the text files available in the folder and XMapTools will find out which ones can be imported as maps. 3. In the tab "Corrections", change the value of dwell time to 120 ms. 4. Press the "Import Data" button. ### X-ray data visualization (Part 1) -1. Quickly go through the maps and use the auto-contrast image button or the live frequency polygon (see figure below) to adjust the lower and upper limits of the color bar. Note that the color bar settings are available in the "Options" workspace. +1. Quickly go through the maps and use the **Auto Contrast** image button or the live frequency polygon (see figure below) to adjust the lower and upper limits of the color bar. Note that the color bar settings are available in the "Options" workspace. 2. Eliminate the maps which are not needed because they do not contain any important information (Ce, Cr, Ni, S). To eliminate a map, select the map in the primary tree menu, then right click on the name and select "Delete". -3. Save your project using either the "Save" image button available in the "PROJECT & IMPORT" workspace or in the menu "File" > "Save Project". +3. Save your project using either the **Save** image button available in the "PROJECT & IMPORT" workspace or in the menu "File" > "Save Project". Data visualization @@ -77,12 +77,12 @@ Classification is the step used to create a classified image in which each pixel Additional information about the classification in XMapTools can be found in : Lanari, P., Tedeschi, M., (2025). Chemical map classification in XMapTools. _Applied Computing and Geosciences_, __25__, 100230 [Download]. 1. Set the active workspace to CLASSIFY. -2. Create a new training set. In the secondary tree menu, select the category "Training Set (Classification)" and press the "Add" image button available in the CLASSIFY workspace to add phase definitions. Select in the list the phases: Biotite, Garnet, Plagioclase, Quartz; then click "Apply". +2. Create a new training set. In the secondary tree menu, select the category "Training Set (Classification)" and press the **Add** image button available in the CLASSIFY workspace to add phase definitions. Select in the list the phases: Biotite, Garnet, Plagioclase, Quartz; then click "Apply". 3. Add training data for each phase: - Select a training class in the training set. - - Adjust display (optional): select an element to be display and eventually use the zoom image and pan image buttons to adjust the field of view. + - Adjust display (optional): select an element to be display and eventually use the **Zoom** image and **Pan** image buttons to adjust the field of view. - Select a ROI type in the dropdown menu among "Rectangle ROI", "Polygon ROI", "Ellipse ROI" and "Circle ROI". - - Finally, press the "Add a ROI" image button and immediately click and drag (or click for polygon) over the map to create the ROI. How to draw a ROI in XMapTools: + - Finally, press the **Add a ROI** image button and immediately click and drag (or click for polygon) over the map to create the ROI. How to draw a ROI in XMapTools: - Rectangle: click to select the first corner and drag the mouse to the opposite corner defining a rectangle. - Polygon: click successively on the image to draw a polygon; right-click or double-click to validate and close automatically the shape. - Ellipse: click to select the first point and drag the mouse to a second point defining the long axis of an ellipse. @@ -92,13 +92,13 @@ Additional information about the classification in XMapTools can be found in : L 6. Add new phase definitions for sillimanite and sudoite (low temperature chlorite here replacing cordierite). Add training data for each phase (see step 3 above). 7. Restore the view using either the button "Reset Zoom & Pan" or the button "Restore view" available near the top-right corner of the main figure. 8. In classification parameters: - - Add all maps in the list for classification. Select an element to display in the primary tree menu and use the "Add all" image button to add all maps at once. - - Eliminate La from the list; select La_EDS in the primary tree menu and press the "Take La_EDS out" image button. - - You can calculate PCA maps using the "Generate Maps of the Principal Component" image button. The maps of principal components are listed in the category "Other" available in the primary tree menu. + - Add all maps in the list for classification. Select an element to display in the primary tree menu and use the **Add All** image button to add all maps at once. + - Eliminate La from the list; select La_EDS in the primary tree menu and press the **Take La_EDS out** image button. + - You can calculate PCA maps using the **Generate Maps of the Principal Component** image button. The maps of principal components are listed in the category "Other" available in the primary tree menu. - Select the data type "Maps" (other data types are described in Lanari & Tedeschi 2025). - Select the map scaling method "Robust"; select the option "reproducibility" and set the seed value to 1. 9. Select the algorithm "Random Forest" and set the option corresponding to the maximum number of trees to 50. -10. Select the phase definition object "PhaseDef_1" in the secondary tree menu and press the "Classify" image button. +10. Select the phase definition object "PhaseDef_1" in the secondary tree menu and press the **Classify** image button. 11. Select a mask file to display the mineral map. 12. Check the results of the classification (for Random Forest): - Are all training pixels classified in the true class? If not, the training set should be adjusted accordingly. @@ -112,18 +112,18 @@ Additional information about the classification in XMapTools can be found in : L 1. Select a mask file. 2. Select the ROI shape "rectangle" using the dropdown menu in "Mask analysis and visualization" -3. Press the "Add a ROI to export mask modes" image button and immediately click and drag over the map to create the ROI. +3. Press the **Add a ROI to export mask modes** image button and immediately click and drag over the map to create the ROI. 4. Adjust the shape to obtain the modes of the entire map. __If the editing mode is disabled, press once the "Ctrl" key__ on your keyboard and try again editing the shape of the ROI. -5. Save the modes using the save image button in the composition tab on the right. -6. Note that you can also copy the data to the clipboard using the copy image button. Paste the data in a spreadsheet software program. -7. Eliminate the ROI using the "Reset ROI" image button. +5. Save the modes using the **Save** image button in the composition tab on the right. +6. Note that you can also copy the data to the clipboard using the **Copy** image button. Paste the data in a spreadsheet software program. +7. Eliminate the ROI using the **Reset ROI** image button. 8. For comparaison purposes (don't use that method for publications!), calculate pseudo modes using the point counting method: - Set the number of points to 500. - Unselect the Monte-Carlo option. - - Extract several successive sets of pseudo modes using the point counting method by clicking on the "Generate pseudo-modes" image button and copy the results in a spreadsheet software program. _Note: now you know why this method should not be used._ + - Extract several successive sets of pseudo modes using the point counting method by clicking on the **Generate pseudo-modes** image button and copy the results in a spreadsheet software program. _Note: now you know why this method should not be used._ 9. Calculate pseudo modes using the point counting method and Monte Carlo to calculate uncertainties on the results (_note: what is never done with point counting_): - Set the number of points to 300. - - Select the Monte-Carlo optionExtract pseudo modes and uncertainties using the "Generate pseudo-modes" image button and copy the results in a spreadsheet software program. + - Select the Monte-Carlo optionExtract pseudo modes and uncertainties using the **Generate pseudo-modes** image button and copy the results in a spreadsheet software program. - You can repeat this calculation for several number of points (e.g. 500, 750, 1000) and copy the results in a spreadsheet software program. ### Analytical standardisation @@ -139,18 +139,18 @@ The calibration method used by XMapTools is described in Lanari, P., Vho, A., Bo 1. Set the active workspace to "CALIBRATE". 2. Display an intensity map showing a maximum of minerals (e.g. Al). 3. Select the option "Import standards.txt" in "EPMA STANDARD DATA". -4. Click on the "Import" image button. Note that the color of the spot labels can be changed in the options of the "Project & Import" workspace. -5. Select the element Mg to estimate the quality of the position. The diagrams on the right show correlation maps with the center of the image being the position of the spots on the map. In this case the original position is good and there is no need to change it. (Optional) you can try to shift the spot position in the correlation plot of the element and then to press "apply" image. To restore the original position, you can simply load the standard data again using the import image button. +4. Click on the **Import** image button. Note that the color of the spot labels can be changed in the options of the "Project & Import" workspace. +5. Select the element Mg to estimate the quality of the position. The diagrams on the right show correlation maps with the center of the image being the position of the spots on the map. In this case the original position is good and there is no need to change it. (Optional) you can try to shift the spot position in the correlation plot of the element and then to press **Apply** image. To restore the original position, you can simply load the standard data again using the **Import** image button. 6. Add two additional internal standard values for quartz (not measured): - Display the silicon map by selecting Si in the primary tree menu. - Select the category "Standards (Spots)" in the secondary tree menu. - Adjust the view using zoom and pan (optional) - - Press the "Add" image button available in the "CALIBRATE" workspace select a pixel of quartz by clicking on the main image. + - Press the **Add** image button available in the "CALIBRATE" workspace select a pixel of quartz by clicking on the main image. - Set the composition to 100 wt% of SiO2 in the table available in the "Standard" tab. - Note that the new standard is listed at the bottom of the secondary tree menu under "Standards (Spots)". Selecting this internal standard display the location and the composition. 7. Calibrate the intensity element maps into maps of wt% of oxide: - Select a mask file in the secondary tree menu. - - In the "CALIBRATE" workspace, press the "Calibrate" image button to open the Calibration assistant for EPMA data. + - In the "CALIBRATE" workspace, press the **Calibrate** image button to open the Calibration assistant for EPMA data. - Check the calibration curves by displaying the curve for each element of each mineral. - Use the button "Adjust (Manual)" to modify the calibration curve in case the calibration algorithm failed to set a proper calibration curveSelect the option "Apply to all masks". - Press the button "Apply Standardization" to calibrate all maps and send the data to XMapTools. @@ -164,19 +164,19 @@ _Note: The video tutorial (see above) provides more tricks and explanations abou 1. We need first to create a density map for the mask file used for calibration: - Select a mask file in the secondary tree menu. - - In the "CALIBRATE" workspace, press the "Density" image button to automatically generate a density map. + - In the "CALIBRATE" workspace, press the **Density** image button to automatically generate a density map. - Enter average density values for each phase. Note that average values are automatically proposed if the mineral name used is available in the XMapTools database. - You can display the density map in that is listed under the category "Other" in the primary tree menu. 2. Display a merged map by selecting an oxide in the category "Merged" of the primary tree menu. 3. Select "Rectangle ROI", then press the "Add ROI" image button and immediately click and drag over the map to create the ROI. 4. For this exercise, reshape the ROI to about ¾ of the map surface. If the editing mode is disabled, press once the "Ctrl" key and try again editing the shape of the ROI. 5. Save the local bulk composition. -6. Set the number of simulations to 100 and the shift value expressed in number of pixels to 20 and press the "Calculate the uncertainties using Monte Carlo" image button. +6. Set the number of simulations to 100 and the shift value expressed in number of pixels to 20 and press the **Calculate the uncertainties using Monte Carlo** image button. 7. Save the results and the figure (File > Save As…). 8. Change the ROI to cover the entire map and export the new bulk composition. Compare the composition with the one previously obtained for the smaller domain. 9. Create a new merged map "garnet-excluded" containing only pixel compositions of biotite, plagioclase, quartz, sillimanite and sudoite and export the local bulk composition: - Select the item "Biotite" in the category "Quanti" of the primary tree menu. - - Press the "Merge" image button. + - Press the **Merge** image button. - Select all mineral except Garnet and press the "Apply" button. - Rename the merged map into "Merged_noGrt". - Export a local bulk composition of the entire area. @@ -187,9 +187,9 @@ The method to extract local bulk composition is described in Lanari, P., & Engi, 1. Set the active workspace to "FUNCTIONS". 2. In "Normalization & Structural Formula", select "Function", "Biotite" and "Bt (SF, 11-Ox. basis)". -3. Display the function description by clicking on the yellow help image button. +3. Display the function description by clicking on the **Help** image button. 4. Select "Biotite" in the category "Quanti" of the primary tree menu -5. Press the "Apply" image button to calculate the maps of structural formula for biotite. +5. Press the **Apply** image button to calculate the maps of structural formula for biotite. 6. Display the maps of structural formula "Biotite Bt (SF, 11-Ox. basis)" available in the category "Results" of the primary tree menu. 7. Generate an image showing the maps of Si, Ti and XMg in biotite: - In the menu, select in the menu: Image > Multi-Selection Mode. @@ -211,7 +211,7 @@ The method to extract local bulk composition is described in Lanari, P., & Engi, - Select any result in "Biotite Bt (SF, 11-Ox. basis)". - In the menu, select: Modules > Generator. - Type the following equation in the field that calculates Mg (apfu): "Mg = Mg_M1 + Mg_M2". - - Press the "Generate" image button. + - Press the **Generate** image button. - Activate the multi-selection mode. - Select the maps Mg in garnet and Mg in biotite; both are expressed in apfu. - In the menu "Image", select the option "Add Multi-Layer Image (shared-scale)". @@ -220,7 +220,7 @@ The method to extract local bulk composition is described in Lanari, P., & Engi, 14. Calculate temperature maps using Ti-in-biotite thermometry: - In the FUNCTIONS workspace, activate the "Map mode" in the section "Thermobarometry and other methods", select "Biotite" and "T.Bt (all calibrations)". - Select "Biotite" in the category "Quanti". - - Press the "Apply" image button available in the section "Thermobarometry and other methods". + - Press the **Apply** image button available in the section "Thermobarometry and other methods". - Set the pressure to 6 kbar (0.6 GPa). - Display the map T_H05. - Save a single image containing the temperature map T_H05. @@ -228,13 +228,13 @@ The method to extract local bulk composition is described in Lanari, P., & Engi, - Select the merge map "Merged_RandomForest". - Adjust the view using zoom and pan (optional). - In the workspace "FUNCTIONS", activate the "Multi-equilibrium" mode in the section "Thermobarometry and other methods", select "Biotite" or "Garnet" and "T.Bt (all calibrations)". - - Display the map FeOSelect "Circle ROI", then press the "Add ROI" image button. + - Display the map FeOSelect "Circle ROI", then press the **Add ROI** image button. - Set the pressure to 6 kbar (0.6 GPa). - Select a ROI for garnet and then a ROI for biotite. - - Results are displayed in a table for all calibrations. Check the help function image to obtain the references. - - Save the results using the "Save" image button available above the table. + - Results are displayed in a table for all calibrations. Check the **Help** image button to obtain the references. + - Save the results using the **Save** image button available above the table. - Adjust the position of the ROI and extract the new temperature. - - Click on the "Reset ROI" image button. + - Click on the **Reset ROI** image button. ### Sampling tools and chemical diagrams @@ -250,7 +250,7 @@ The method to extract local bulk composition is described in Lanari, P., & Engi, - In the menu, select Sampling > Strip and click on the image to create rectangle. - Adjust the rotation and the position of the rectangle to sample from rim to core of a garnet grain. - Save the results and compare the profile obtained with the ones obtained using the transect tool. - - Reset ROI using the image button. + - Reset ROI using the **Reset** image button. 3. Generate a binary plot for biotite: - Select any map of the structural formula of biotite. - In the menu select Modules > Data Vizualisation.

Located in China? Watch this video on Bilibili

XMapTools Documentation