From 3052b3f96e4405c4e3e5b58e026f8be3105c1d9e Mon Sep 17 00:00:00 2001 From: Philippe Vienne Date: Sun, 27 Sep 2026 09:35:30 +0200 Subject: [PATCH 1/6] =?UTF-8?q?feat(portail):=20mise=20en=20page=20du=20li?= =?UTF-8?q?vre=20blanc,=20=C3=A0=20l'=C3=A9cran=20et=20en=20PDF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PDF : grille des chiffres clés sur trois colonnes (la grille portait sur le conteneur et tassait les cartes), sommaire avec numéros de page et points de conduite, titres hiérarchisés, en-tête courant de section, texte justifié avec césure, encadrés et tableaux sans ombre, couverture avec bandeau et filet d'accent. Écran : en-tête du livre blanc restylé, fiche d'identification sans ligne d'en-tête vide, titres plus marqués et encadrés plus lisibles. Les deux PDF restent conformes PDF/UA-1 (veraPDF). Co-authored-by: Claude --- docs/livre-blanc/index.md | 4 + docs/stylesheets/extra.css | 92 ++++++++++++++++ docs/stylesheets/print.css | 213 ++++++++++++++++++++++++++++++++++++- docs/white-paper/index.md | 4 + scripts/pdf-weasyprint.css | 29 ++--- 5 files changed, 319 insertions(+), 23 deletions(-) diff --git a/docs/livre-blanc/index.md b/docs/livre-blanc/index.md index a4cfc38..adc7711 100644 --- a/docs/livre-blanc/index.md +++ b/docs/livre-blanc/index.md @@ -25,6 +25,8 @@ description: "Livre blanc de l'Open Trusted Service Provider Initiative : défai

La version PDF est balisée et validée au format PDF/UA-1 par l'outil de contrôle veraPDF ; cette validation automatique ne remplace pas un test avec un lecteur d'écran. La présente page (HTML) reste la version accessible de référence.

+
+ | | | |---|---| | **Émetteur** | Initiative « Open Trusted Service Provider Initiative » (OTSPI), association loi 1901 en cours de constitution | @@ -34,6 +36,8 @@ description: "Livre blanc de l'Open Trusted Service Provider Initiative : défai | **Licence** | Creative Commons Attribution 4.0 International (CC-BY-4.0) | | **Contact** | [contact@otspi.org](mailto:contact@otspi.org) | +
+ !!! note "Nature du document" Le présent livre blanc expose une intention et une architecture cible. Il ne constitue ni une Politique d'Horodatage, ni une Déclaration des Pratiques de Certification (DPC), ni un engagement contractuel de service. Les références à des produits ou fournisseurs sont données à titre indicatif ; leur sélection définitive relèvera de procédures de mise en concurrence et de l'approbation du Comité des Politiques de Confiance (CPC). diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 817e9a0..66e0948 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -262,6 +262,94 @@ } } +/* -------------------------------------------------------------------------- + Livre blanc — en-tête, métadonnées et hiérarchie des titres + (la page de garde .wp-cover, masquée à l'écran, identifie la page du livre blanc) + -------------------------------------------------------------------------- */ +.md-typeset .wp-cover ~ h1 { + margin-bottom: 0.4em; + color: var(--otspi-primary); + font-size: 0.8rem; + font-weight: 700; + letter-spacing: 0.16em; + text-transform: uppercase; +} + +.md-typeset .wp-cover ~ h1 + h2 { + margin-top: 0; + padding-left: 0.8rem; + border-left: 4px solid var(--otspi-primary); + color: var(--md-default-fg-color); + font-size: 1.6em; + font-weight: 700; + line-height: 1.3; + letter-spacing: -0.01em; +} + +[data-md-color-scheme="slate"] .md-typeset .wp-cover ~ h1 { + color: #9cc0ff; +} + +[data-md-color-scheme="slate"] .md-typeset .wp-cover ~ h1 + h2 { + border-left-color: #8fb4ff; +} + +.md-typeset:has(> .wp-cover) h2 { + font-weight: 700; + letter-spacing: -0.01em; +} + +.md-typeset:has(> .wp-cover) h3 { + font-weight: 700; +} + +.md-typeset:has(> .wp-cover) h4 { + font-weight: 700; + color: var(--md-default-fg-color--light); +} + +/* Encadrés lisibles : Material les compose plus petit que le corps du texte */ +.md-typeset:has(> .wp-cover) .admonition, +.md-typeset:has(> .wp-cover) details { + font-size: 0.72rem; +} + +/* Fiche d'identification du document : tableau clé / valeur sans ligne d'en-tête */ +.md-typeset .wp-meta thead { + display: none; +} + +.md-typeset .wp-meta table:not([class]) { + border: none; + border-top: 2px solid var(--otspi-primary); + border-radius: 0; + box-shadow: none; + font-size: 0.72rem; +} + +.md-typeset .wp-meta table:not([class]) td { + padding: 0.55em 0.9em; + border-top: 1px solid var(--md-default-fg-color--lightest); + vertical-align: top; +} + +.md-typeset .wp-meta table:not([class]) td:first-child { + width: 11em; + color: var(--md-default-fg-color--light); + white-space: nowrap; +} + +.md-typeset .wp-meta table:not([class]) tr:hover { + box-shadow: none; +} + +@media screen and (max-width: 44.9375em) { + .md-typeset .wp-meta table:not([class]) td:first-child { + width: auto; + white-space: normal; + } +} + /* -------------------------------------------------------------------------- Livre blanc — chiffres clés -------------------------------------------------------------------------- */ @@ -429,6 +517,10 @@ --md-typeset-a-color: #8fb4ff; } +[data-md-color-scheme="slate"] .md-typeset .wp-meta table:not([class]) { + border-top-color: #8fb4ff; +} + [data-md-color-scheme="slate"] .otspi-badge { color: #9cc0ff; } diff --git a/docs/stylesheets/print.css b/docs/stylesheets/print.css index 55ddffb..2c8a8c1 100644 --- a/docs/stylesheets/print.css +++ b/docs/stylesheets/print.css @@ -30,6 +30,12 @@ /* Gabarit nommé du livre blanc : pied de page identifiant le document */ @page whitepaper { + @top-right { + content: string(section); + font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; + color: #64748b; + } + @bottom-left { content: "OTSPI — Livre blanc · document de consultation v0.9 · CC-BY-4.0"; font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; @@ -38,12 +44,19 @@ } @page whitepaper:first { + @top-right { content: none; } @bottom-left { content: none; } @bottom-right { content: none; } } /* Gabarit anglais du livre blanc */ @page whitepaper-en { + @top-right { + content: string(section); + font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; + color: #64748b; + } + @bottom-left { content: "OTSPI — White paper · public consultation v0.9 · CC-BY-4.0"; font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; @@ -52,6 +65,7 @@ } @page whitepaper-en:first { + @top-right { content: none; } @bottom-left { content: none; } @bottom-right { content: none; } } @@ -224,20 +238,211 @@ .wp-cover ~ hr { display: none; } + + /* Typographie du livre blanc */ + .md-typeset:has(> .wp-cover) { + color: #1e293b; + } + + .md-typeset:has(> .wp-cover) p, + .md-typeset:has(> .wp-cover) li { + text-align: justify; + hyphens: auto; + } + + /* Colonnes étroites et page de garde : le justifié y creuserait des blancs */ + .md-typeset .wp-cover p, + .md-typeset .grid.cards.wp-figures p, + .md-typeset .grid.cards.wp-figures li { + text-align: center; + hyphens: manual; + } + + .md-typeset .grid.cards.wp-figures p, + .md-typeset .grid.cards.wp-figures li { + text-align: left; + } + + .md-typeset .wp-cover ~ h2 { + margin: 0 0 6mm; + padding-bottom: 2.5mm; + border-bottom: 1.5pt solid var(--otspi-primary); + color: #0f2a6b; + font-size: 18pt; + font-weight: 700; + line-height: 1.25; + letter-spacing: -0.01em; + string-set: section content(); + } + + /* Le sous-titre masqué ne doit pas alimenter l'en-tête courant */ + .md-typeset .wp-cover ~ h1 + h2 { + string-set: section ""; + } + + .md-typeset .wp-cover ~ h3 { + margin: 7mm 0 2.5mm; + color: var(--otspi-primary); + font-size: 12.5pt; + font-weight: 700; + line-height: 1.3; + } + + .md-typeset .wp-cover ~ h4 { + margin: 5mm 0 2mm; + color: #1e293b; + font-size: 10.5pt; + font-weight: 700; + } + + /* Les titres ne restent jamais seuls en bas de page */ + .md-typeset .wp-cover ~ h3, + .md-typeset .wp-cover ~ h4 { + break-after: avoid; + break-inside: avoid; + } + + /* Encadrés : filet de couleur, sans ombre ni arrondi */ + .md-typeset:has(> .wp-cover) .admonition, + .md-typeset:has(> .wp-cover) details { + margin: 5mm 0; + border-width: 0 0 0 2.5pt; + border-radius: 0; + box-shadow: none; + font-size: 9pt; + } + + .md-typeset:has(> .wp-cover) .admonition-title, + .md-typeset:has(> .wp-cover) summary { + font-size: 9pt; + } + + /* Tableaux */ + .md-typeset:has(> .wp-cover) table:not([class]) { + border: none; + border-top: 1.5pt solid var(--otspi-primary); + border-bottom: 0.75pt solid #94a3b8; + border-radius: 0; + box-shadow: none; + } + + .md-typeset:has(> .wp-cover) table:not([class]) th { + background: #eef2fb; + color: #0f2a6b; + font-weight: 700; + } + + .md-typeset:has(> .wp-cover) table:not([class]) th, + .md-typeset:has(> .wp-cover) table:not([class]) td { + padding: 1.6mm 2.5mm; + border-top: 0.5pt solid #e2e8f0; + text-align: left; + hyphens: auto; + } + + .md-typeset:has(> .wp-cover) table:not([class]) thead { + display: table-header-group; + } + + .md-typeset:has(> .wp-cover) table:not([class]) tbody tr:nth-child(even) { + background: #f8fafc; + } + + .md-typeset .wp-meta table:not([class]) { + font-size: 9pt; + } + + /* Notes de bas de page */ + .md-typeset:has(> .wp-cover) .footnote { + font-size: 8pt; + color: #334155; + } + + .md-typeset:has(> .wp-cover) .footnote li { + text-align: left; + } + + /* Page de garde : bandeau et filet d'accent */ + .md-typeset .wp-cover { + border-top: 5mm solid var(--otspi-primary); + min-height: 240mm; + } + + .md-typeset .wp-cover .wp-cover-title { + color: #0f2a6b; + font-size: 24pt; + font-weight: 800; + letter-spacing: -0.01em; + } + + .md-typeset .wp-cover .wp-cover-title::after { + content: ""; + display: block; + width: 22mm; + height: 1.2mm; + margin: 9mm auto 0; + background: #ffcc00; + } + + /* Sommaire */ + .md-typeset .wp-toc h3 { + margin: 0 0 8mm; + padding-bottom: 2.5mm; + border-bottom: 1.5pt solid var(--otspi-primary); + color: #0f2a6b; + font-size: 18pt; + font-weight: 700; + } + + .md-typeset .wp-toc li { + margin: 0; + padding: 2.2mm 0; + border-bottom: 0.5pt solid #e2e8f0; + font-size: 10.5pt; + text-align: left; + } + + .md-typeset .wp-toc a { + color: #1e293b; + text-decoration: none !important; + } } /* Grille des chiffres clés du livre blanc */ @media print { + /* La grille porte sur la liste : posée sur le conteneur, elle tasserait les six cartes + dans la première colonne. */ .md-typeset .grid.cards.wp-figures { + display: block; + } + + .md-typeset .grid.cards.wp-figures > ul { display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 0.6rem; + grid-template-columns: repeat(3, 1fr); + gap: 4mm; + margin: 0; + padding: 0; + list-style: none; } - .md-typeset .grid.cards.wp-figures > ul > li, - .md-typeset .grid.cards.wp-figures li { + .md-typeset .grid.cards.wp-figures > ul > li { + margin: 0; + padding: 3.5mm 4mm; + border: 0.5pt solid #cbd5e1; + border-top: 2.5pt solid var(--otspi-primary); + border-radius: 0; + box-shadow: none; + background: #f8fafc; + font-size: 8.5pt; + line-height: 1.4; break-inside: avoid; } + + .md-typeset .grid.cards.wp-figures .wp-value { + color: var(--otspi-primary); + font-size: 17pt; + line-height: 1.15; + } } /* Schémas SVG du livre blanc : ne pas les couper d'une page à l'autre */ diff --git a/docs/white-paper/index.md b/docs/white-paper/index.md index 29eb7a4..37118b5 100644 --- a/docs/white-paper/index.md +++ b/docs/white-paper/index.md @@ -26,6 +26,8 @@ description: "White paper of the Open Trusted Service Provider Initiative: marke

The PDF is tagged and validated as PDF/UA-1 by the veraPDF checker; this automated validation does not replace testing with a screen reader. This page (HTML) remains the accessible reference version.

+
+ | | | |---|---| | **Issuer** | Open Trusted Service Provider Initiative (OTSPI), non-profit association under the French law of 1901, currently being formed | @@ -35,6 +37,8 @@ description: "White paper of the Open Trusted Service Provider Initiative: marke | **Licence** | Creative Commons Attribution 4.0 International (CC-BY-4.0) | | **Contact** | [contact@otspi.org](mailto:contact@otspi.org) | +
+ !!! note "Nature of this document" This white paper sets out an intention and a target architecture. It is neither a Time-Stamping Policy, nor a Certification Practice Statement (CPS), nor a contractual service commitment. References to products or suppliers are given for information only; their final selection will be subject to competitive procedures and to the approval of the Trust Policy Committee (CPC). diff --git a/scripts/pdf-weasyprint.css b/scripts/pdf-weasyprint.css index d86eb10..b04169d 100644 --- a/scripts/pdf-weasyprint.css +++ b/scripts/pdf-weasyprint.css @@ -40,6 +40,8 @@ body { width: 1px !important; height: 1px !important; overflow: hidden !important; + padding: 0 !important; + border: 0 !important; break-before: auto !important; } @@ -65,17 +67,8 @@ body { padding-left: 0.6rem !important; } -/* Grille des chiffres clés : WeasyPrint ne gère pas la grille automatique de Material. */ -.md-typeset .grid.cards.wp-figures > ul { - display: grid !important; - grid-template-columns: repeat(2, 1fr) !important; - gap: 0.6rem !important; -} - -.md-typeset .grid.cards.wp-figures > ul > li { - margin: 0 !important; -} - +/* Grille des chiffres clés (trois colonnes, voir print.css) : WeasyPrint ne gère pas la grille + automatique de Material ni ses largeurs minimales. */ .md-typeset .grid.cards.wp-figures, .md-typeset .grid.cards.wp-figures > ul { width: 100% !important; @@ -83,19 +76,11 @@ body { box-sizing: border-box !important; } -.md-typeset .grid.cards.wp-figures > ul { - margin: 0 !important; - padding: 0 !important; - list-style: none !important; -} - .md-typeset .grid.cards.wp-figures > ul > li { - padding: 0.6rem 0.7rem !important; min-width: 0 !important; } .md-typeset .grid.cards.wp-figures .wp-value { - font-size: 1.25rem !important; overflow-wrap: anywhere; } @@ -127,3 +112,9 @@ body { .footnote li > p:first-child { display: inline !important; } + +/* Sommaire : numéro de page de chaque section, précédé de points de conduite. */ +.md-typeset .wp-toc a::after { + content: leader(".") target-counter(attr(href url), page); + color: #64748b; +} From 7efe5e09c2c7c86cf187144656065848f56f402c Mon Sep 17 00:00:00 2001 From: Philippe Vienne Date: Sun, 27 Sep 2026 09:48:29 +0200 Subject: [PATCH 2/6] =?UTF-8?q?feat(portail):=20police=20Inter,=20figures?= =?UTF-8?q?=20l=C3=A9gend=C3=A9es=20et=20couverture=20du=20livre=20blanc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Police Inter (OFL 1.1, sous-ensemble latin) auto-hébergée pour tout le portail, sans service tiers ; embarquée dans le PDF et ses schémas, dont le rendu ne dépend plus des polices de la machine de génération. - Schémas légendés et numérotés (figure 1, figure 2), ancrés sur #figure-N ; renvoi vers la figure 2 depuis le texte. - Couverture du PDF à fond perdu aux couleurs du logo en version claire, mentions en bas de page. - Signets du PDF : sections, annexes et sommaire au premier niveau, sous-sections repliées, sans le titre et le sous-titre masqués. - Logo vertical sombre sans masque SVG : WeasyPrint ignorait le masque et effaçait l'anneau du sceau. Rendu inchangé dans les navigateurs. - Césure avec un trait d'union ASCII, présent dans la police. Les deux PDF restent conformes PDF/UA-1 (veraPDF). Co-authored-by: Claude --- docs/assets/fonts/inter/OFL.txt | 93 +++++++++++++ .../fonts/inter/inter-latin-300-normal.woff2 | Bin 0 -> 23916 bytes .../fonts/inter/inter-latin-400-italic.woff2 | Bin 0 -> 25040 bytes .../fonts/inter/inter-latin-400-normal.woff2 | Bin 0 -> 23664 bytes .../fonts/inter/inter-latin-600-normal.woff2 | Bin 0 -> 24452 bytes .../fonts/inter/inter-latin-700-italic.woff2 | Bin 0 -> 25868 bytes .../fonts/inter/inter-latin-700-normal.woff2 | Bin 0 -> 24356 bytes .../fonts/inter/inter-latin-800-normal.woff2 | Bin 0 -> 24400 bytes docs/assets/logo-vertical-dark.svg | 12 +- docs/livre-blanc/index.md | 10 +- docs/stylesheets/extra.css | 14 ++ docs/stylesheets/fonts.css | 68 ++++++++++ docs/stylesheets/print.css | 123 ++++++++++-------- docs/white-paper/index.md | 10 +- mkdocs.yml | 4 +- scripts/build_diagrams.py | 10 +- scripts/export_pdf.py | 6 +- scripts/pdf-weasyprint.css | 24 ++++ 18 files changed, 297 insertions(+), 77 deletions(-) create mode 100644 docs/assets/fonts/inter/OFL.txt create mode 100644 docs/assets/fonts/inter/inter-latin-300-normal.woff2 create mode 100644 docs/assets/fonts/inter/inter-latin-400-italic.woff2 create mode 100644 docs/assets/fonts/inter/inter-latin-400-normal.woff2 create mode 100644 docs/assets/fonts/inter/inter-latin-600-normal.woff2 create mode 100644 docs/assets/fonts/inter/inter-latin-700-italic.woff2 create mode 100644 docs/assets/fonts/inter/inter-latin-700-normal.woff2 create mode 100644 docs/assets/fonts/inter/inter-latin-800-normal.woff2 create mode 100644 docs/stylesheets/fonts.css diff --git a/docs/assets/fonts/inter/OFL.txt b/docs/assets/fonts/inter/OFL.txt new file mode 100644 index 0000000..40589da --- /dev/null +++ b/docs/assets/fonts/inter/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) Inter-Italic[opsz,wght].ttf: Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/assets/fonts/inter/inter-latin-300-normal.woff2 b/docs/assets/fonts/inter/inter-latin-300-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ece952cf7ef69913a31e68921cee9a56e5667603 GIT binary patch literal 23916 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
4m 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 literal 0 HcmV?d00001 diff --git a/docs/assets/fonts/inter/inter-latin-600-normal.woff2 b/docs/assets/fonts/inter/inter-latin-600-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d1897949fda5c7fc5f04622df43a3fcba5b89d84 GIT binary patch literal 24452 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 literal 0 HcmV?d00001 diff --git a/docs/assets/fonts/inter/inter-latin-700-italic.woff2 b/docs/assets/fonts/inter/inter-latin-700-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..48b6e5b1ca83f066e914e9c2c2a8376364cddade GIT binary patch literal 25868 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≪hYBj#y9}W7RGiEfhm&vfCoo^Q` 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

VxxxqA?t=~crz z9q;OdBv1w<{YDMURd*;)VVGc2WCS}AkXO!kl^#!-yjo71Giow!9MF8J*!a@QNP}q9 zEFpv%FymRZmBASTxhuU^#KzND37P0&)`jWn&jnbE)HEjr3=1PrGUY*W21&t~HHa*O zqMFf*%o^1gmC?T?Oo|Ma@WGGl z7KKUiNnsKF@%cs#`4P!}Da`wk5lmOwQ{4nv=`32fep?4J4~kK-SX$arSQcNG3?nH@ z4o8E3s4~rUs!Ri-ARBw{*mGVWbXsJ%SMeQN491rP2rO33{{4;9(8DRO07|i zVU2qYu*F3}>LV|S2XxLgSZ+UD382QSli{a{6A`7QK7IuM%Hsy5+ZviXH#8x0<42?D za!Doy6J|y*9|f)uYI^`x2#ve$jJEgjA^5jfpo7Ax#vL?YN>F|-!o!c`m3#t5%qr}O zNUrZ`)z5{Z^EnAR+8MgZTs?|`_(~I4UTiiz>C@-@n!ONae%E}|uh?wV5SPi?59y5r z7zn2+CPu7_J(oxE4CcgkjD+GttZ^2iu_*BfFdq{|ywqmrMG$gI`;i5PHK)e_9ug+E z<+5DX8>);OOV4f+=dh{>7|9C!oO3-Q_|~ui7EX-Y;x;B zKtiY^#{O`u$e#>!_YG-PnGe&=#}2LoXb8VAnv%Bx7GGaN)rGtx3tSuSQ~@%5fe?sf?P6&rTG2?6lV$ ziIoS(hlDUFP4dtL@LeImP6)7+IkUA`v$bGi!F(geY$Fg|HyaBx8_PkNkB6C$14chQ zCGK42!4T{oW^=I>N(#k*X3Nc1C3}LUPG3PpB0-Y0*{f+3B}G}eHt(^=IvvzL3uhTf z*oJiEe zyt-j8F{C-U1vMOB1hNFOD<-v3u!&%>T)&XaK9x|iKJ>3t)|vZ!)Z2KOH?R(Tzb@D~ zB^ZP{E!Z5z*&GGFvgN*bYxXr$+y06v6LoV7*AHhM`q<2YJ~Lrb-PQ^M(n;L8K+Rn1 z1bqIDETufDFph<9kr-CM{gf^rlzvipp%E+aZVHjlWF>z&`Gzc<2Y^1WJOK7T>h1)= zoxtT6dUw1ULuvqU{a~;RfXWN)-8y}*xRmK6MyyE(PH$8h4e&RmfBT=mAZ(1(vQh8N zURiPlvzSOsR!EG>;r0U58~qrQts8Iew^w71zeJu= ze94@(`;To5!f)EQSE{~)T_^|8sYCm??`F%!TQ8i76JReTEUq1ewo!eiy>+t#g4>04 zcRe(z%oo7kWZrPIY2f(Ku^OT}$DTW?9h*Ekzn9xhYa8)2 zUS7OHQLB^Hxu_%QthHA-7r!pN!O6@K=Lq-0=RxkSgE<#>?znh1t#|ACNUh~1E99jY zgdV@tLGD~KQk3EMXkzlnurN8=iNhm>el&hk0kb`ecp7IEiY{j32sF-)(P9p;nESj^ zi|+F3Ul%Q{l4)S|c}qemAxH|1g~jqDErj@l5<;*977LB#Nt+3Qt^PDZX<0bVk3O>a z(%LWrux@z2GqX8A95!Y;G?v71H;uJoumE}7K(6+^B0yXCafuHl1t=DO1)Hi%fpe?q z)ga{7^-P_(H!YiCOD|wR_r*Kg)4Fl-J$bbqE!6*G`;ghTX8=CBE}Ox8TPp-9UYs-% zp3g}Gwr4qzESHDo7(nFQ<7gstcv#4cjv}qpAB~{h9vy5fA0%D;r!F3CGm5hrT|r%W zD{P4Z10k<82_nU01ZaXxjq?HDzy)7IHF7t$O_@GeGuIby9dgb50@$$8MBUc1vS>4G z=_L%<59lxzu|WzLag;8s4o_st3Bk*0grey=Rbg@U0f|v1wZZ71!1(Cel446%F154@ z)R50y*<;mZ(_b<(aT;QT(L`$VkdP7`O`>dW7E*sWT|~-IddW5%4=U7YY}tf-q|hC< zE{B`}0hszkv!t%;M|JYj4rQpujq*hq{~2)s!m3q?{^R7m&on(n-u-4n`19I0fn7~L zvnZJ1h`)T-ShwQ2#;_5eL4!#qtGo!4Kdp^^;hBCSK(zdPzyyA6=tm!QIzYdve^)%zT9o?cD&g++MR$Zs5wnx%8{4=Yo(4MJNX3u1) zvrkmc*oT3v^Iwg$&VN-32UQy}4vNE}MyW%^MVN~YFAldIF2(R>?)+i{P~bAOIJ7qC z7pYXMTKUJl>!vZ@H492%k`P?Jp&xxF)3?$$`(B-y`d4W>-ryApi$O(_JSQ=Tj3m;X zN@RO`|>Iqz=WGgxKfO)X|Dk>|JggXIe1h znEOSePXN*v4xNvlef!Yq5bfab{5J_nwOr7zLhb5UNQG*3b64YDS4Sn6+U@VsuBeIg z&@1@_534bG(yLRY(W^uM>~!fDHY6=aitM6y$q`12vZ8ydHxiG%QHZ0lg+OoVqhwy~ zz{=+by~FMe#AM(Zw16O5k={bL|pfA@+$v)v(GrXVHwevU5@b{OKOfLKdnZ`JiU~Kr~E4w z|5Os?R^(%)BUFDIORIh*Y#WYLCId52TIH25R8+6ks;n+9ceYmK^C}mrQvGRFy9b-< za+q57|15A&`QRKxBZjd^`yYhG1F+?R7zf2m^pf^Y#*Eb{l#yhXp*?`ZnAS16jdVX< zXG>?MJ*LD#H1oCJsrpk)@F&}G{(l*6q{p9Y>jQPogMr3TK9a7OTN86k>By|HbmEAefRZwIt`?HjGhiY@dX`P zzCQZil-(-N>jyJ$fScUP+Xsx|PToB*)q4)_!v}63!bi1NI^UGk(asaMUU7vlQX00g-NnKb8AOTTl0d=Y)}wlb z*iPaF`+MZg$zKca_XYvJ6K&MPUd3J@ z1b#via4dX9@3JU&obRY?V3E;~n-fY#+58lQ1o87k5f!gSBET6X-ST60(E%ID=;*;_ zikt%(gq>H{*6X?axB-HKUx@ift)#biXx46QmW}1o31ZtmWWo8RQq|+V%nENuN#d0ac$rU?Q%pdNn z^H)m2VV4hObUTIc3ObFTyFOANUjYP;#2j}NsDLu#6<+PkUf{<;H5O~xFO=aWQ0DDM zRX|AN2Vs8B59Wv36E5xnxd8XvE6q0f)%i_j=Od(M8WXtl=ak0 zha>S1B~7B=j)P6Di`voN1s(0RqYisOF>@n?gveqk5~6>d0fp#&GRPwhc1c>q7?xs? zKeCUI0``9L>fG?;@%4btbTZuGHpRwmCn~#zYEukU#Ph+u5C`%aK&h=djC1?J4@Pq6u>rztb%wL~8JESTtI)T%4<-2^#1y9OXF_9H? zmNdViVRybPN6I;0G=mTI)@BGP9mQT9#r1%b9&lM{$Si?yQ58A48a% zD_pU?n>Uz`+jS15yPl2B4%>2fP~3-vJ0{L&6fX{VEBg-+4@M~4a~7zldhW2D&2OC=h;q%h z6s&p<V*-dH3M<2Qq#KEKVbYCKhRBP8@x_+^=)>Kl(A+UCVQF(s`Y0&!gY!Z@(1Sh zNqL0+QlrLTN9KV?in#VKI55}GKgb^iJ7YVv>kXH%s#A|zKer$k?bHx;mNcle%)x|c zBr|r=P5(vuKW9>gG4E&F&?gzlw7_AD2kOF{j@=_wI7)wH(E9nCxb}kd6=6khLUUT5f6; zu;-R_CY7^%q8MDVRES&)Rj#X}ipq?!!1c|>A{%lW3T&5}GdORwGjRA(eF{4tCfR$C zkg>>j`R;Zd>KX5?+hgIJF!Km`Xb(j(q(tbKW2=_kv zhY9WRKXY?gpKps^T&CU@bz{IQfp>At*SUu{Cd-^Ov6XwdvcdM1mWo4}(e$>qHc8%A zjC(sNr*nMN^VPACkP%W?6E3R}^ zyrLk>d0v^cRsu^WU7w0J+>gE7h@)i2JLc;Wd9jO}yvo9C$H}|-9W(5Va~#!S2xgGC2v729RE<0*kv{1IpXESemOL!m{i9iBee&{PRWVLx2oYYN_JA4F<< z+iH;YvLRPc<<-Czpl?Bcfc^}62sk&1U0!?ATz?NrCQ^CtDT|p7IqNdW=n!DP0kn z5t@IxvHB}^BR@+x^G`J11jPqd{1_|Z&+V{06B{enxW#eFcH`tc{gXNvXHjcr0Uc8YhP-RGoyFnPbCDsVMVGKc$RAb*oM%gtH8;GS%jA z%L$woX);mb8#yAu`uH1Ny(gi~_}2@zUA zVFh}tB`h2~g4lwJK`hcllVwM0Qe^Sv%F$SY#G<0qBU+x`VxktSNP&EX(aNjq$}*0eI)(x-k6G=(_w+BRuhCN-r^&C+yQ3mczp-m87u z-~Oz|0ZupTr@09(Jc0=&jWNj8tiw8@qdKPJIsucDh#5^6A&5A{VHWA6+I2=}ImU4~ zFgU_d&T&@fbRHr4?8ZVDu;dJF{LfByVTCm^1bpBlCs zYAy?g&>*xWo1;uH0V5_KW!BRad;3AAY*aK52<#sfX9X9OS!cN@Phoq`LrS=;qS(Uf zEJMZhPzHKqYRyd>Ttrb~_8MW;bujXLa69sDa)I)=pusZ}+$*aQ53)qhjHlYhPeVZ^ zaC;(h9u~b0Ikqw*uXwpB?t_^xd4HW3%Gtdk_wVwabcsq`V!~T*R2veE(<$ETfS}kz zHZX`U6-I2rK!akK(u`uChrKi;5{(3UI`B4&`NY6X`#xFQu|N&Yqni#K=}%q=stZ$8 za`LqH5{8;G2=yB4!g2U~?CB{GD6$|S2fGu^<|R0k^@B`?6y>*gi%K@3R&d|e%fUT0 zmxJD0>JVF?Ryt&ju^#HdXfQc2!{(S5PqdO-4+41kyPBM{f5*jA7wk*+CYoEP??pP{ z3$J<3SDZ3fI2Q&MK380o_U&sXR5+*cb%q_GRS`h0+naFa+jGes3jdxz}Lkqmtp&@i#y@;j>1<7U;NOr$82G ziqqUJ$~D!7pkVi**?I?;gQBXGMAb!D8Q*%oOddj?d)^J(n zu!hT41J?9dOUT+Hwi>W&legm@J2BP2++M(6-~T+fmH)vNh~Ug~iJMHE`7Zzth~Uh3 zWCY$K00IP8I4%NEV`QM576HDeU3di1nzv$*luZOseP2)h3xETH>LUXH@CLvE4gf#~ z$^r0j;SofuK%*dQHroUqV`p7PW}|-QLDmC{{>7%cxRA72b3&x7KO12XKGPaySyak` z{@FD>sN{iS@;$rt*@@q{Q%dE>_NZItVehy`vG6TIF>(=V)t|ea_wv^)TBqeaNUlH~ zLh5Ir`IY3erC!#^t>>$#)NvL)8yeO+zEW#K9NG(2*qF$p=gMjZwO_q>xpPUo+U-{Q z%)B&k1NtxSW33Z}bq@#f-RqS+{HB!rpT}o(2S`=*pA>fD#^X%c*z5h&d2ioNO_Mt= zDE9$wbSa!;>YyY9lZ})UWN!J7yZ@(DH6N#nXI*%&7Uv$S=LmnnDEoOL$G`v6KaEHK G0ssJx270!bPH1riEXmu-am8kf~Qh&}{*wW*23gH%^r z#;GwU;ivcHR>hyazbz;6v3eGLGQ7V8>A(7EzlN6PN$uMEjAz6C9V!MlUXfLea=qU} z|Ni$|=kvY~x(JUk_4DPCBnui%Z6xdlGzr6bG{I9+2(HV>w#t@8c6X`Tw z+gCShNz7L^!m!3TQ`ke|7D&l#pTgJrJ~lAg&)CpRIE!14iOQ(0wZ z`|`5iO%D@te~M9us4njS4-=3lPSdkbV#O(CAC|Jk&qd5jsfT&RlH#=t<>)7n0;mrN zC>R(58U;15FZu}l1r-ig$6-os=X>r4A8-gp@cEJwunQ zN;mpnnQZm`O#GCK^ufZu00mY)Nwa3>O`Fnz3K`1n_!j{JXrUlYxu0s6pIFMKc122W z%5u~)o)^8Az}Gjxhh~}%Oba#u9-158kuIiInRd>Mqq=#c+o|Mx**OV}d`V8D&CJ~+ zb8u-IG#w$_JAfzH8O#LxfF0dPgU6KsIl%i}5^Lhq%>?_Lc{Kk{VkY^%bjXxWr<5tZ zeM{h*Bm`;j`u6Kr{SjobBhz2QmuSSy)NTlg6niSeNosAQ?t9#vmU~p*1>V_mgr3Hq zE+^N|&H+D{WU|gg3<8EB4-WpUU*_a~KXOaSp%Y3qQK+B}pF+ElNG0E_+b+lZs!;5x z=lMDg#ENjCECV3QHI3C36yS;!Fm5eK$CvVywSXxmn3_O0h~F2wN%hY`pO^4NK1(GM z2n5r`>F`-z2U6LW2x}?#W`9WFSjapi5?*C!p;K zgv|*3XM_zQfKdV^0*na23Nj?X6s|f7UG9ZAi$k{}kgG=Y3#n8?xsD_%jN`(&{`piu zX9?}PFspRGD&%?%VL#EXghbw#$%YFv9GDo8hv<~k8SRqEgco=T34$9icPK&~dhCGF zH}nuh!GZrs%L%;&{if0ig6JrS0k92ej zWRS!j?hJq;;E!%#aZ?D%W{&~C34}aB01bpiAaDW}BY2|A5D>y%5Qap95zvrQ2sGrt zgo|)hp@?vWuSGymsucn-0qly*S%CFyA&U_qMpa)lRUK2#&-zihG|&-M#fwVhbF7Sa z7v`kb+-0*WK>ox;wYx;KdZfc`8ZAa-!^s%W%AD6C72EHzA#A4CHP7Q>zH^w}XY(78 z?K}4px>};T@1U}_w*&<#@UlixzKoZ=0cw?0Z7oV;Y3Qtrl|5Fvu6eS-vEt=Q1(`o>&rs(2CbC`} zmE50mB7(drysT?lxnlbL4dT-phDXF39ih9DbmCVgn&1BkLl(;ACzCP+1x(Hl*5Lol z4jTvUbZy8gHdv7=p>tb>_PtoC7>p&JLY=f`VV(yw>2f0?I`h0saPo=fW5i>l;$d+X zbFow+)m({jUiiL6j9<01!CR7)$U~Ai;+U2}0Th@0_Js><=GC*bA6?`_QX#;m6=Tq2 z)@@@@SbDX5=*n$uZ)iBNjK<^Use>8C;)!+hOl%{5f=i?%8xbPHCMChk6t#ceI( zemi|5i`D^XcLVVrVG0FEnTCdYXA=<$78mZEy3L3bi$+Jubt)nXa~r>diar}bO#^l2 zL04zP1Sdv8v;t}0I2VQlgd7xXW}dd%HeV4bi(_njr6CWBHUCi^Qp_=axAb-DMu2yL zuARa4yuvrztWXN-|7~>hC3`P$fxc}CLJsE`G{sA$+OxjvPnCloJ9WlT+Ld7=xP>B9 z0`J&bzqE3+HN&n)0w$W4?Cn<@nWJJy)n+}vm;`C|ZZOn>Kr10xlT3+9d&PM0HTVdT z7FFNGeL~Hj?d2vPtN%XRz5-9dP7mf?A_dfSwBO6(J>onPysAv^^ENEs&%`Y-`|_k( zP<2mL6y>9yvS=B8Tm_#1*l=e=6*h!ySM;6Gave%JO=45UwLqVf2JB{Wg2GHi{fOyg z*C+By=?IzT4*$}NHPtF4!dk~g3%ym zcXd?ge8%9!mZCn`33L7UH9*+STT70%@O=@F>rph(8v;%Gg9H%51-lwdl!VK3;>=syzzyey7iMGY!Shg)WccPlKq1o z3*ZD)K|rX2I^N0+tENDPd00 z^U+#SvXd3HJ*e2JY!AQ%xceQQ9*V0b%~9t}!=FTbtcj0PR&k1~LGS7K3R$94G3-zO zT|=`uHR zw#(@Me1b9MrLGIhlGGc{74RB&B7v0zY@1p?2IG%O*%y#uEGo9vH~>kZ3-DtMrg-j{ zCPfGIN@RYWt7C)Tr)aQ!J;NMeNtG|u;5IP_H zy#7FC6rQMRa8zYn$d}qLeTf?Tb$9Pl=H-fh$0Zq8Z<&@1-**S^4Aj0Hl0uwRRF1i3 zS?5#l(Zz}z+1oujeu2FxK_-frds*^NQ&G+c48;Q$Yp)HNFHhBEAX&(zpe*phGBPo) zWZ5?+6SUi;Xg_WoYaY{{NIF&K}pW&jL6J- z)FyYrbCSUR&^FbKPskR15w7rC6otSmuw4>W1hW>Qid3j_KV(tNHa>^qHW|B;B4mqR zZc&NGYzBd%BDBVEbQ^^V5s?%!m8J%za0x7t?s!5(L{rE#p2F#*4*Y~%7m$c5MGIWC zPNE6bdC$72_Mb{cm`vYY>3yP zDaNLP-WCf3<=buHMx`nPtg! zDxchwIQYdw&D}=J zf1fAr#*c+?=D<$|z}x9ZB1{Ttkcc9y+YKY_^5WGsgCs=6^=Pdzs?5|)ofXU!E((c8tyw!oTm}Y#!{t~) z6q5RQ@|PnPa$=eqtSvnbT%8S}$%oKd5@-bUC}M^ya4ZGt_1H^mhe?A%5I7ipW^J}Y zjfrZr0yJYcBZu5A75Akf?!y@5Zi zn^x2snDfKy!HVzlU*7qNR72;Q^F5{sXOw>=}A;r<1;nDhm;>N6H#=F|G zMgTgNc=^Pfk(RZeRA0#%5OrASv+h1%PP^O<ndM>H>pA_ z-*m8MH9LY;67=h@!|}_65dhknu5p3BA8$qjEQAB93{5OpKK6SxSDIR^yqix7-{Yzu zX5SX5H>%ggCQnog7BQ3CDUtZ9IHs7O@iYmJ^wI|z(h7yum zOvqU;uxA+^@?40X(ut+OuL@>ehJsk?Hm)ZHb7Josdda^$S!PHqg|PZ(Ksk?K)2!qr zY$YyHlsDc!2${`5|EW}s@~@oRJ>xghZC2=IXiV#PwXG8~q6K4=LAHH5Ri*2%SrPYC zS3cvyGQV8S>8-e}AQvHBSQO$?f|Ro|{Jv}*H{09S2+bXljd{;*^PpBBKB5k91LDVi zZ;&~I+7zY-=uoBU9{?t?63jo4iq4cpk{JTB-sO0&?fFM{R4aNUU~<1g|$Hcu>g0Z&>`*bd5YF{zu6Y66zq5I;1Ch<~k7E5rk}imh*>qSlRuxwNFtB z&2QAjKdH=t`z>qAgI%WsU+n#gQ*deLS2O}|lw=~W!4;kJhoEyV-6_iu=aepKy5`V>X8Ha(v2WuF&V}6SvN5)Sww&X?7Z{1yg z&?oKqgtIj`|F=bMl0cbK((vfse6*tQ^L?~VbpJHNT1a5lBgXezgHNc#p`~4nK?8|- z2}vH0Y8SP(GO49x@mC%;faoHHUqrWx|k3y1|wmIH}sG@#3t1Z>F5yky!bEsD{? z4)pjV&7Nrc2l_+Ou7PseKN|D;?6%3ur`as69X^kbkw2<@22BPg36n`djSUDW7D6o- z1dnHePnZTwEht8#nAs4@kr+(cvo(PmPa=ODGm5RdJHOUMw*o5V|1jjW_tGR9gv1Brwp{JumB0LVN{SY(eHLYE|PtMYcQg zEX-zER2M;!`+?NqutkN5!Zz9XVmB#se5 z^YI&oVVKZ3ehwTn72EVY)zB2~`?-tEq9D=%$7z@$M2*po$V_Y1&g?$wO1*6~_J-bS ztQA3VsDr*!nsCmmLuIY4)w$mCS@z1FbRtr>*M{Oiq0|)7r1pM1nhmGt{{;$xKs76t zP%JPwI3ge@91$KKkP1kKh!2n#5TTKcR2Uj+5Hc4OQM04k5oX0V)U z!8Ffto%2N3ahZ(wWBM1CefP;NuOo9qHFBESAPbEX7!ngC1qF*6%tDsQGiHzDmuI!F z7ma|a*lpZz!3g5H1AQQ^f7;G9JBfMD+I3(*OE+im)_N{^E&$lW+sn!8-TYh^xpsMx%EFLLjOFAfRjeGMo1pc} z;Ll7Ddw2!Eei~Cl&X)RqH`3b_9Dm}rXD&|?54~9F)xoMTWjsAwdG-c1?1i&hqK!mh zI0lx<3%}H3Q#dBi1?2T=N$sR>y7|Y;i!|>q#cz>^oNOf58PA6DYGQO(xF?JNtFzA)s zW4K%-8_o+Jm&4(FXjSXFwrx->%jSGM7hFzz$R3jaZ4M<+Krkp20@b`s*L~Zl?s0=n zE@aZuQO*jR%x5&x0hwIp!+sl{->h-3IeMo|^It4LU~vRN z%`SqJ2@NqjeI`mo+r_$>kS zA(?U2t}=dJdplKGAimnreK&egvA*YFJ;D9=vG0w)RGtIL>}T5C8*jpszJ8FUmrc3w zHP`BikV$Y8JKwXbk|ycpv{O;4VNi6^Y_8azsWi32?Q&rDp-T}*6l8X|kaZI!ocMgM zagtv2sN(_A*CsTPFAxcX{qv{qEmjh{>w%q~ZehR-tzdr%nuH&;Ff3ZucT0Rl zlS4Rfg()VqPLe3K0@NRIq}92Op&oZiMWogCM|xE)Id=ZbDNh-{C{F_H`*=4rDlAYE z4H`Qf$+T+4A#g~`I4@r^87+?#=59>T{YlihKyz8eB8l~PZmYRVrqr%(uE(U+(E~;{ z0iMu+yy0YYSWNu&4J+K0I?onhw(&q0m1&vxu;(erV#kk+8VH zxS+_;P@g9s)i;JQN;S{rpC2;8=t z4L)=yRQ4%7y#pT(U$VO{HnI}1_82y@pf-J~3tUNyCks)42noDyyXVHo>@hQbZ^K91 zQ}x-mS#_c9mWjPF+m;VbrJtID-e_3coD4i@P|TpgVFcU)-G2u^j%nwQPcc)0C;x$l zoZb}zEyc zTriQu$;?{;1XQCrJjx(;7hC(RnF0tb?5vUkhJtc!w$8}tnMTxd#PxSC4%WuuMh~qCZpU3 z9<&;_1d8@3}?!ApO37Xt9n4zmGw|xK#0^q<PCY4$aS6SoFw zEpo32+zi}~g2{~@;&Fds7IiClIAttTrp&p)ZP?yx#C7m54!a_}IItDqVCIyzfHk4k zY5=hVmGHie>(EK@19(>9$g;u|@aExEg)}(oTxo9pHIW7TEY?1Ph(9g&rxs0XGO;I# zH*-MbV3}Kpi6gH$)|L=H&SIt4Cfc@iF^>xvvNs}27FE{SLls8Z`zIl|M5*yCmrQer zZpm1EGkyCFyRJnQn}!2u*&I!!(ZIt3cg`A>+6e9gqWuHl)&G9)|bDZ-=Fl$_QXWx*^{NP)d-Ffe9iO{9^A%sFJ>yFqQ{;2=i|_*X zp&fxfr`wOv_F}O8Wz}7m>ED#-U$gXftKBx!#lW}zolk%KgUJa$zw7kNk{{-Dlak*< z%nd5$ZzATo5$35dc4>)!Oyo7G?Bwkff6d-)AN_jm>%n&4t=kgiwkEfGTCi zeX8y6%x-Q+kTP7!l;5K(R;i@-`g(@r$t*^2p1AO2XDh82&g{Plo%dWzuK(@RUtZl$ zr0&d-?)zTOeSRP3`6isZXOX|mKnddMo_w*Nr`qmW-EKQ?Gox;EU}p1^t=@V*rE_hx z?&_*;yD3c!d>$7W=Y3_=$@=wRksrp%UYf*SM2Yb;A;x({0B02|=A9zuHZiJO#zRC&9DtGKxu=k{9@5S*4WsTS7|D zp&)`IKPfQA`mqq>tXXh?$xcN(tJBvMt@h$?-W-Y4?C3d9QO|_Rwy!fYE32xaA|et>A^|Aiz`wP~=Zmgnc>bQ5kx^Au z6%h#`kpvL9INg}}f1&c9`u~Qg$o~t8BofL0uOj`Qc@qN%sZ5dT!NyXjh?E87#3N!M zMk3ivnkE^{mLu4{BX-?2in+v6r_%`(TX=##o|`MN4RqYvopSP&vuTuL2vL3D8y{^6 z0v4M8+5azD0}P+Zsmvn;PiLkW-;TrZ0E3Nqt~xrgL@AoNDs?)YOb!l|5srz)n5Rmk z!lJLql&*86s;13~X4c$5ElD3DruiebHaKE@+BURWeHd+1yr6D`BcewYL6$ZA&6%SV%lB9Oust4h)Pk0*kSXH$AVL zzHF@=#af*{7Dp$F2*(7&Oy&|6pDP_I>12(Y zbW8n+(U1JQ`Q8jD;raQQng3k%pKm0RKmcUsxQm<-g{=t#11&}Gu!U+p*XEnNp;bfZ zoZYO45?TM4Ew;#QDqy}|<^l@5%6Zn(CSl2(v1V}G=tSY+v}Q%8?kVHy7>r_5rqA%S0&DujD^4m}h)Di|yk%Gq3{N+OX)qN%yV7M6o- zp&La3CVH_=QNi)wEB zO_z&va21)hyB?P$y9Nm=BpFqx8nvMzr7V(rjVhsN7Fxw|eztRVRk;hrYPraB-Nrc0 zSu5PBUWf3_m&4$MMCtK&<)m} z@2|CT6$WsMDGopU=d_aa!nFIivTESt%B`bODv zUXPd94%mzXa~ZqDqv|k7L?xX>ND?a~+SCJzf81F*CrWPuPqFo$Iyj!+1dh=d@=z%-i* zKT!?VVFZyi0b6O(VzY2uqKEYHJv)_=58~P#5gU0`dj)gQ#VJ=3uf>fM3NoS91mUI` zVX7H;TIjR>O=-L!U|2S3pinFg6_4kjYEy4GADL3?`+eUclcp(D!GuPoa+N66dX?uc zo<(7A?K#R5(3b2Xz^tn~gAvwHnVt5H!>@e=CmEZj> z04cZ-7ejuLe9g-mXXL$F~46AjpHg z0m1_vjEsxPR{;Li8~^2kHoRo3;yo)3^jv4c=fnZ#MtVB@rbHXY{~#tuC=4R!cY{oT zE$}D*Oe65ckijwGfLY511Q0B+UYijZm>?q?0H_feMkuOtI47^32mYI#-axQyQQ(?) zHQUvvUq1j3LGD1Qdtn~i-I@N0te#OlwsP{+VXmWHPu$i3vG`VXVOgK2$8g{>ZnI)B z9WtI}z=3^-D#!Z`t{zeKeJInxR=9z#_J6v4|NEQu_biF~`}=lqV(lbBhrS>F>Sm?( zZ|`Z)f5)}b$KZ3}b$M|Mq74hc4(Nu-2JfvP3&`82)T_>eGrKjerhNEZrmY6aJ$A|( zT`$T2{F|%MnurZ$6`5&3YhW=g&h&xQYs>Im4xbjyKKW>m32U%2*;kt(%PYvB4y*_0 zZ{*il_6e}FB`lN<50)CSP`Su6n)FiX+})lM?W`Ko2bt@t%pLZF)8TZgARz|?0)<5T*ACdpWJ;Mpt6#_zj_atB`X4*wu$H5Zcd>Gs*G=lW zpYY!+ZL6eT=KlE}$ff=|mJ*q~9Mq%ilpb%3W&;qz8sJPWzz!1bo0Q`gXv0^#!57GY zn}My`EaAjKKH(xGC!@wgIV|F7phjzr*a(x@uZ2ol4lw2Q9bia0|Gm@zg}_qmkHM?*5b%hR0U{OhcK+{DGU4PMN>5G{O*6mxDeQF@~pD>kOOJi&ogqW2g>bscn!14-m@&YpfT~ zE$>ld$M2c`@`eIMh!VWfM3AKP@*MZ%7kktD~3#}g-Q1;A{5RV z`%suEa^}$wXFYTk&ni``el#)+7UsVY&*n-?@RYQ#K@()ZWC%y6x#HTXkO2xBslukQ zKBUho6afi>1rrVfU=ki^e~}`sBL9p`9I>W;XF+I_6()3gQgBUrckCQDq8h`x_sN+F z01I#-wEfaq=RpiDQ6gFs1u;?AXaA+i_wr28;UlLXQymvJ&I${hA3c3i;u8Hb+DZ5M zKJ`L=s05c2XjkEW8VD)cgIZ+g4##$Muuc$h<^-5s)2^Q+VxnPG1AE5d^E3Bl{i!D0 z`%PJaaeYPb&W4yQQ!cR7N?u7p$LP}$2exPivq0-MgT^(5x zHbyxMKy{bGAs(mjH=KyM=|-}lYb-?LwMuW0gv#>2D2e>0HB!qMDqkhfr%uNB*J-D; zgHveUNwl!WgIEi+Y{zNSRWHl4E&R}If@P*)ceXN)O6Skf$W0>SI@;K1*9ow290Dmq zD{H%NEFpa9gkYS7UzdkI!{av)V$I*US{N_ju9^(#5uK^fScOT@5W7RIv=OopBW7nB z#jrKheJh;xJKQLKCwuF9QAI`N$Rk{fPKsf0FyEVF)~^EA&bczsRx}OwvKwV9YeWps zm}oJ=#tf>(5W7ocM-Nxr)u)f^GKhpYU@z{6TENvI7Oa_NEClHAeBIy3+4A>9rwbl# zbi>#JK=RBThS(!mOLENxZ*W7Jip+^;7a&m07$(ksFH5Pi1DtEZRnKRz;YN$1Oh=UF ziAzc?Se%a3V7aYg^IIG$$JQ~Per{Ai1U3Uhu zydv2YKD`y$zN;6q-8jL2hDLE}uo*HEWF)X&)~G>5vkVGbo5lOyk(7P)^nE$)8LAAO zA9$JEI`xrU&+ix(I}q_M3TfEvttK*BiDXtf&c-@4>Tr%EvQzaF zDwBIYMDlyr&?^+S=|`kyjR58e!Fc7ntymN-V~On?Oy!4D%@B*$hUxsoeaYvzqGg=N zi5%Fv?PhAksPSYtTO~5L!g$1Ov~HM+`lxr-WgfPXT1FZf^lqHXfg>6K<&R88G_-ox zO*129HahidR(-twPD2XA;qwt?`-D8Ya}Q;rqsV_>QHjm^RrR6bjrJDh(8vEJhb&FDL=&EMpKwXBQe9K#T zH#ziWIgWpa)fX!KEt%HhUsA-}l0oaID93UE#;_xE&sGIAa`g!MZiFtq7)C;Y)4HWb zs?8(@(;(UG$ixIwQ=6*>S0P|rRk5_yJelI&!gp*p2lKskp}OoX(%s;A(>=?#JA94A zV`&5+Ks#g_WzhWJV=NG3BW`lpSGw|_k9tC9aEuWZghRnl6Ko%|3Jd`P{_}fv*TgUNO!dJ z8sa_bDv^W;T{k>^n5xzgcEBvgodAHbOUNs&#CL)Hm+?-`4(W{IRZB_`Iq_36M}+g8 zkHFbh705k;#$xPgH+;m53RZbxNt`g;K^Umd z(|XBOf9&#Uy#E?gh@6rUY{-|ZPm1o(bn!^_zR-{u?qT*%z5{ywUKZ|SGWp{MA9y6Z zCO_6OFz@4Z;=`wIYY_z0c4qLhLk`t##0+$?BuwfnezKF_nI8$2r8VnMy-vY#$SZ!O zS{Qm45>OSuMv@|$#n-wM3SBo-dKPW2)t>(Na*RywlpWnAk1KLY2t8fvhj_B+n%oW< zbmF=v)p<7s5?#3_SwAPZW1|=U?z-36{M?pVO#?i!Q6HMOBXm8+Qua|J13TIGmUH@w z;nnArh_S2jEo;!%!ykXBuP5V?(5`9&_5z?oEiS!mwnx_d)b0%IFIo5>_BF~^C{XL6 zMP@gT`dNQcDQP?3C8%_X+2c*m4{S(ymqceXboC#pvd^}%jbT)hvc)#7{q&P_rK_7A z%ok{7ywXvC7lG`Pnm)1f5MR#sq=b_adFsf7p*abYOuDacw?#&<&$6OQ?Jrn@{_(Tz2&t$PZY5JHm+t)Umu~8w zJI)3i>z5tadqVFrJ(0}vzHc7XeS*ie&{k+D`pt@W52;ye3$|RXYi(-|$mjKHk-NbY{Xd9Ah)yO~Y6^yyiAvwGVKG z-A<1-{`*@>;p6;N(8GTd=cJkD|I@|#sLqckKunWvgV%+h;ygi9wu17s5eHYP(HU=2 zUpc|_Vlz*1Nxz*#QcHkHJuOO7`{fx_5Gw}VNcmwkj1Ms7+GVuMMfUzVZE5&jxw-N+ zR~#FrxtY?zOF@}$0W*M((>j5t_BM^LGtqkB3=|@wvUb>^x>e8|tP8zYKx|xEdZJYE zy>|H%mEA6^J*9>QyP3~3gwgN6IY#`~q?{^ulw;rF@bqV8Iv*KcRgif}EM}c#k#)8G1muGPvLn`o8B2THA{(A5n z@%^o~$0g?JTbP;r;rVu!8h5$8^(q@yxGGz{6}2VRwLypJ+gwKd!@QL6ckkNe-dJn1 zxoIw{{1`Pn+OJ$9`r(2H4cc}uB$@9b{2|oRiq7%_f6MzhOx*AZh}rAIT~ouYzNYx- ztmDJs3ExtQ8m8E&i81Sl<7IeyA>Zf}HW)Efxoxb8`yH?MbSAdSiXvVeM;2*h+-TBs zA>}35(7ecQx7OOGmoJ^0;XAwY601tHiHTM|FW)3afOIecq>J&q2_ioKia>JkJ%RtKc|k%cJE>OKsA{RvAZxcm(rBxw5YhDn%w;t$rYds3JSkH znYu`bZfjiUl|&wI)bY)iGBEnCzXqv)2<-1}aB z3#k)eg)4Kv=hgV*HXPs1$vtnM@ol=Dh-t-{ecN1I!a!j7h8|(M8Dr04l!O}WH>Rj) z7GW3njhl>{(Nl5dkbfE2uEwWUIj#I}unK|<>iAjk)%Ij0>TRzn$aV~{75J*(|Af;p z%cog_uj##v;E|p`?EOy(9FS2xh~Aqx`N}!Oz-h?jGFHBviK0z zGDq#DXr1nB&^9NEBHI(47b!V((`7fm;YvM>jrG1Sagb#io5vxJZ%V}_vq=f7{ZT%I zYOixZ9b(1`#zihEF^o#GPW{Ll>R!?j=-(HMIXSwj?R+Wq_*Q~uUWV$cuhpdgd3o)@S6BEkPA|Y>u>wI?6X>KQ7+#Zdv6w5i z(o-+smM1n)RKZda!>6_NZql%9j45346ma9JW~D3~klan00aN-F-ry`Efm>Co2MdAt zNNj=U3Hb7qjscv}{F&9M1dW1;>Q90x=yJQ%-?7NiRX2bfLiW1!#fB;R3$)m5rQEg>KjTdch@4sVViF806mqW;?9{ zVvm%#?9s_W0_o(7laDQ6ATs&=ui4t*3UP7Y$CekuPu}0-DL7a@zgg-X=E;QxC>{6_ zTFZ;i1O?9-0fYYbXR)(uCHDB(=`5!w!>&^C^pD_TT&fn(e8oFon~CF<&1OG;Ntz_J zBMzn6Y$j{rR)^|yrnSw{-D0Y{83S7@jl>4}1=)K$JJKi?UrQv!r253= zO)Qu+DDX&>Lpbmq7lg^AqYuUeNJ|L%)unmUI&1TSTkH2W(L)pVucJfaHoML(jZYKa z?7UA;OmI#iWUWhiO-|yFJ(SoM5{{^Jj*S!`6TC;Vl7FFE2;D3$;N(S~GvlBYT zz9tW6ko-+kg?*~k9)RhXeOhWamDKrsSc6)Xl5IqcU00X_6fM3Tg>ApQYNcbGlNcq5 zR1ORiRY-hqZ%JGIzFyPLQC@#Uy4ci!M$;Nfw4Vi<0 z;}M3GW5qgmtdiaVe%LOjr_#f3iGGgrG$(g+q5P}RTC6T7A_sE;Y7li4y#Kp{N2UMM z8Mlc^@}hNhjM?B?E1v(OA%Y_%WMQH}ONWeBCU+GD39&9B+K=99Z?{(*b}GEhS&0dV zfUp#BqN?FV$AYn=$vP#UOZav+h)+4bzY|>$$2wFdiTRS{n=pfyWNg~CD|Bha<~ zB_G_*%{5tV#31x0Vd3PD8O92QavgX0;jO2~BTM_WxtYa;m2L_lVH7t8Ddi7t4d^-W z;&YxItS!Ye;Z)umy9cKdstRYlD^z>HBtdnz(oH$L|3GJTmH7MpjZGkq{=+rV>r`pJa-Q5% zw<|MwW~+qQvqFOO977pti-8fzW<iW;?{>*G*o~}1exUUGfk&M1>6lTT(d-gr9ewp!YKD)@P2C4w z$=y;oLTe-=)}S+xQal99ZmroMy=h$v+K?jOMJmNV+wJx4Rj8}T8|3w6*f^7B!xixR zobY^eZyP^=o@RSCUi^XC>+Gp_&P%uf2r>(g^Z)lv_>-$yx`yELyOS~aO^-9g`qk4M zXgnN5A3Z!Y@E^sijynkX!R%%X{-KZF4tYzr%VW&%r_k{3O1)vQY)Sdy=c``T*7Gw%oQ!ie4VW+pRC=zkjC+d)@^ruBn1uJMpV&nu~1UW(tbr z9{n&pPSm@4En4@-jH%*V)32Z;kQyiMeo0bILZ(E_>`It~ zni61z9RYB1_h#M}PtI`xZ+bx7r|=sX((`EMkM8YPOY2gjl&&%<8du|ccQ zfTRd03MN=+!7~bDK_sDZ=8Uq=Gf2eaCqpwVqQZb5ZkfIHoXx0X)nAmA5y!22KUNq` zlip2&N~idK8+Y8edcV|4SaOBoW`!3b)uD4nC<>CJG;3>|`A}Ua^WWTRlo~oUNWadX zF-hap4BmgtZfE(=Ld>6=AH)~uMJ46vnW@m>3-f!-91l-V^RQO+neg=`cS4aWDVK0wx;zlRFXFREu7>XE?WjE-;wQbmm03xCCtds| zfsK}$?)1~jH(!UQ?tLd8b&CIx@EZH?GB|}*QSe$GG>xjp9OkJ^r#*e!y1Nl}Ub5oX zkiYy)#Cw6jdH(`j`2i77z4Ar0%xNxH#-e=irku|>rE4t3iW7+-e<2SQB4iR`N5t(S z2AH%PRivS<17uK&?8 z4DHLSXk*A!Q`f3bi#Gg^0D2yU;ks+1ZPiOtW?U=gGcEy1p9T~W1SE9DAZ^YA2O zB07=5_1$07p8DzZp}!>~C)O&i%t+RrZ<4OQetCW7Xu00QoW<7^GsPli3HmA?^U##RCakYZz2T3W>_ix9<3IC1R ze?KK@|AT)8#_u;5c0W9Lkox}m?%uro$6{Bvq5}te#Rd5VuX}r!X&yZUAB(*YD^U?VJF945?0)VP$74Tj!9DUjZf;MrQ zpj8xcTB|@w6ARjEfxTzggyFlb2B3%xkrT&UTNdVH@b~^>S9+GgaT`i-z?;QTDj2ss zc-zu?$1PoT;7$sd#V2!R=uW|K|Ifq|S2X_dZVB3U*2@=cNWXKOW>&r3Yg-%tecve9Foe(nbz~W z$=|;IIY9%eUHlxtorc}z zOE+(rX_3k(rO0IJPKtI6aU5`7*0yE@dbp5x6Rh^rbY1MYj}cp zb}XC=Zy$rz(OYfo_Mw9^vb6DPJQ@$rlW zZxN5Ttm%3L@XmBn_Ge}F%aw#FsZjKhq?BV+%CFau!@|hn z5u{MU!oyX)G(3#*Lkj{6g$+n{ZmL9T*a;J_*hJwo&MPm2F_09hAnwj{E{A5&?LjE0 z4Soi4qMnI(5^MV@jS)D27KTE|k>a~+)~uzqI@-FK#YA%;V0vrArK^#ErSaQ`8RVL^5@?r4t`=% z`dl`Jhj)-*STV&j?^v(FWg1%(CWqO-x z|FiZB*M4sH-S=nYdIpP`%;FNU5nHJneKs72rJ;tv*7~7XtPeO3}mNIWeJOTo~CescA82G~VK z7W-+1iTzdEGcHvt4<}ZyL zrtPr=I)$Pqp$k}ic0)5K6L1r~a|EQpy4H-@V@m1qV5NsmAT>E2L1iJ4BqksTNdu(3 zn@5Pf;K*n_aR?MWs*UeQZ5W6j0ER=N&?}Bpk;E}vBf-0n=-P-Jftbgb1)SeOP#1ycUr6)CqdGX97ME)LWD`-93(7_N_x0E8D_#B-j=2{w5S&i zEKElvpqX*=YG^v?!f_AvwlDvZk8t_H5;)(#^g?L?yvAzw$|)B1roxoiMF^9G=giRQBJJb&IlcIJ%ZTL7PTZ8JCGI>BS% z@I(K;{+MP4Z>sX@W@-PIGJrQ`3=J0k#dOl}jRHB{ZA_c%Y+Y+w{5c+GT^q^Pja|ss zwpavjN9qS}^+8@Uq|Qw}wD4w@ftydk@hPxR4W5~Ce7E)f1mMig;ep%zfakK65vz^Z z$>UbPUp4a0#M_Und;1Ng%|c!YJ8i&&8H;2W+r-P$%;5Fw{fj=j|I1tkh;gN%!4GVv zPE07JSwkE@;71*%)i|%MG@;k_)g>-)-PfFUQq{JR7jWXu(r>`a0}q8};EX zB^VysFocMwo4eD0muqlm!!xk*Fk8y{mXWk zgO#0I#LiqEYfv(oVR&SbJoOu)<1fK%45%PHK@SElpI6$j4(*N}tkG76)BMq^kc!Dg3k zU@;0%#%h95C@@}1j)kiDZlC~HuMaKk#&rFvn!|nktcXC$y42h7zTa92Df9O)fk=WL z#zZa?`7I4|<4W?lb*`$YyXe3fvH$F=IJj|u|KK)zt?rs z1xQcDnTYL9^IX=4eX!pBP;LJo78P@@;KZ(`7=KSgP#lK|o#K>E^t_0|Bey3`4blZ!HG1jiQ$llKZ~w;iKv7PwytDk zCJNox%z@xbs{0Xn?w<`54XIND8DkD~f++3gvx;S?zldI(S)A25zTW)JU@@+A<=oKa z`vUu{_F01vwcQnN2JK9_G@-MHCw*cbn;NlAh~s)Lbb?3~%OG`$ljESTys*yAV#NrAI2JaQdAAw%C0#g@1@80o$D+^5Q@U zC_VW@l!6j1d_UyG##V{hS6&$(#a`(#-mK{qMM+G3W@C+^n~s3RKD)qci2$$lr!Cau zcr_lomiQ&E;{DBY)=1t{oo*_lQPAb%i6dl4sYwD zKxpf1JGgRwuQJ1}P<1LOY>fMj5>hh1(MNh~&)n>W(9TX1(#7d3Sh~}VhkwAl)qUMI zhC%fm9~asw{;yN!B&H?7^>9r_<}6xdJxb#SYD_YMbBH{a`;7-osQ$8~)zYl>UJHS_L>j2u_+ zMyEZ|dB3MF{{j=zRjGGpG3eBa9qA=Lr63K@4~n8?Db6akY>h`ao| zVi`<9Aw^OE4oOEN#VVB#5C$^$0x=v!=RrxIevL&mt0|&1g;C z7h(Y(87K~f@F>K?y;g#5B?2WuGTZ|x@St$S3}5Rg&@przRihKA2GycEbQ0C0Q>X!* z?mF`Xmgs2uaD=AxJ{&U}z;s}BmUSQZ&AB!hLu89gmkCq4iG9EP(cLI4SaYgoH_s$(tkjYmB05U)%pL7`oHPjzIXW5+l3eJEc|`_ z`s9xzjhxljZ}Ufw`g8V{U4SqA)e8$Vs6XSNe$6BJJOKOj!?p#tbPfOx1*&rvE0q1z zRH8|rpR|-oD|$*vT%7r@jZ&hLTx8Fc^H)ig*Dz8?HIrPsi@AU!^bHd#_W3Pd28i#o zcLdMohH8ztUkG0eMw!KZM2>PezHY@b(C-0V^|iwrxwk z6|H+*R#6J5D7;+9L&L%`hS6O!r867dmBbfHNvxTkSxk^E)VV`e-<(SL{GQ!Xh6W-} z5rVX$wG!wYyp9N2?_xq6;1s+&>=7?`V^dGq`Un_-+> z!uM*c8pRvX!(HwE6|MH6O)SQk--eaXMSMnlbXJBEj$%`Q%+Z7z3DFC6V{r8509(wF zKAEH;hi)yxVI`%OsT?W|*MW)?b}GR1}hXDzy4@A2;7rPzQYBgsB4;RDbqp8Y-$= zOWk2q1pOW-p1TTt5k9T<8r22#V)J#3ks}^(YAk*Si&?r=H`Xxz9d)O%H3UADglN_b zY-dj*I0)6SjY))o@U4HsW-Zh|yklp_)FCG!*+Awr|6pU!t@`x(Hg1ij1PT%w`vL3x zr<*1es6ax)V#vX}`!T}0Q^;Ol^JBc0B5DU2Ko#;XbGd@jxt?U$d3l>dc(}q|9Me;m zgoFb)x!!@2VB=JdDr`<>PDQ8~x26rhMxl*M5(#HxrLUlLt|yi3Ja6R?Bd+jgj>R6A z$J8iYY6TCF$B{Ku z>G*EI=qL$f3hQg8a=qfLzx22$wFvezh(^q$%9wal$>IF^VJ~w(ePcNP&9R!>VEzA$ z7JLq_ytfN|`R8NW3}sx~#qK#ojJ?!7xA2(#`qO@x+$kVk#2ym`J7GWu!nh3hITP%o zgrTm?NnHnfUJx1)$cN=A*kM6Iv#2j%i*Xka5&&ymb3{vwm*ZbcpR8O~99q6c(YS9C~Q=S#TH zEqWn+_kdgmyO`j<#=lA1sjI_){jM}`*THo*q(g@5`*FPO5F36->s(J-!0kv@DMVYN z=SI>HzdWjB1b5H;STA+o^rSteZ2~8;X`iwuH^yMM>7PR#FET08@*dRl8NI7rkAB6U zpuYSN@pa0V40q#Rf2d3!x&*aSgkx0gj(Dd46!wxp5)2{i#B|PffER^3 zSN^=I{r2l%!}bXZ007YdxEgh=}Yim;Yo z%oc99U?$8(5!gJD12rbOJZB+MsIC3@yX~}#0GDG&iD7G*O&X~=7#1(XJ7j6GkR7A(w7`8qi&t zB#4pV{BxP3KQyL>yP0V?q6f3SzW;xCu}4e*dB80lZHN!I%Hd1hBIZb_7ETJB^k z{*$uG>Xx@AJD=Ui9tjx*wH3Lb=V-UR!eg{2CRP#lscD0xoZ>XbS)_R`CFd%}eo><1 zO2L!bTI=Eyv_2tG8$2gWTr7b&9t09?gq2cRZ9edVlbiTml)L!UG_-k0mZDao1WD;+ z(=&9DXE}NC&dAi3a+y0|YkBhXkzR~~Qi-JTVdAt+9LiUe+Wv0Z;kqw;lsNf`54f*B zp~zApyPV{)Dd152dH9TKxkqt`6o}~(fBjujsoWtIKRUnZ!+*t8s&`7mA2PACeuICm zRJ`P}D}S-{3!W6hNt)`=F|4#2UjVJHyWysPw7cbYWdC6CH)0i8En4OFuMT(I?XoLq zNZMR-&)x31pA0$YE$%^T?r3+*S?8$Jz{T{31);ZNlsOpiRSp1n1sds4mv zg)$vioy61fK0rM z-sRt|LoJn$liZSw1GhTgf^)c{oUklt6|;i##)`z@VMSU=CfCM2Ogd!qT&~`}%azP7 zSb1j zz)`{mnHJ23&XWC@L8*gIF;7$17Mx<%iCM?Ll`i4Lwc@?fJbf_)lj_>OBAvF(%%8B9 z?s0E||E~*U%;t)O-ai~C^gOr{hC(z?^YaSUDZYOFaQ7=06--Gdca&jtO^VT8M4K?<1sQGts7w%*}oZ@&fh)ND8 zY+xpc(#%^UEd6Jk!zjv-65x2YRc}mkSt;$Fr_Iw7w+KbqR5~_WOJ7QB|9=SLpV?w;)`9BX`ha%4VWikE@;W#UjHM&4m-R%)?4S~&+qSVQIYZ3$ODMVbBe0q)b=2y_2r<7JEhUf{2Xsec+yxx>rT@R zROr%&MIhVjw-??NQ#m~g1&T?_k(ub$dk`-e0wtP)00p0EB?Fj$^@kl4hnxjxZ;xfQK3GP87lBmU6?Hel)&Zr=_#U3V`Du|c0n|yMxGK; zSyG*>?5l1E+Mjo{yUGLft);EKztHmi9<@Cj z!4!KUn>{A(oy2!7!mf0ml>p*H_?5PQA7Jk?y;(bw=vEsFbRg{;)s2JL{sTS)0K=sF1>=Z zriGV2HV6~0gtH~p#ph`f4pQ+JDH;wbPiA@U!pJs4;86}BS)=eyrQBiu5=o?u;}U@J^ObgXoyFbAHp!b4Vgk0{VdKGShZe9jkNZjp&1o zZM^Wd__lcF@niZvee+3?IsUt}4!ovnN2ywY;Qg}j!KtGv${ zqLkU*M^5$yrp8n=CAE8PVwaFPbuHZj8X=*+O{)MYk;V+Eta({E)vc`VMwN&D+?zt( zz1(@);MjX_BQ;DsWaO`pB6hURxBPvRs;0<5Dad_N=cHjk?iaLpH+#wFxVeS9?|;`Y zF8?@WAjAo2SrKU}vm~G*FsV_M_*JtT!LtHfMoDmlSx2n#<|bWt3-M%xK&(rNEM-sJ ziEBR7deK_MS0j)?ls1xP5QR7ZS&Kx@y6)zi?L+bMUxHwb`%Izx+euArB%-Pk6;`G= z-}-G^u4ZI*SoUXlMA~nvvX}SYSjjv)N+CZAFExf2f9^G#2RODg_4j1jC;Bg*)lIEX zP#zTE4jhyOl&nYwuc%*n%t<#6pP#5VS^x@Jz|sUTAxfW@Q3iI#IX8E2kl&~%gkcm+ z{Tyt^fvsi7>)cvCN1`SayN=>HUp_}}E~LE`2fxnQG` zQ0H#N`B*7bkxULurEuIS=2!$J{~gh7QK^*jbTRd`mCXL8%_DmXKMX6b@ zgR5I$F(~zYro#76XhX7gijU1y5~H1l724>i^rofael$k32*Ieihv)<6$C88J-3x>c{Kt#Gb#V=_yh<1k6I1Rxobkx2H^FqGBiEe*QU2Y|IZarPa376M5PH9yGdKwE zL3dm_FXO3Az&ipFEm#*Ei8MGIhU3xyTn1As))?^{U1tQ((7H{`S$cG|QyO90iV33o zps-w98vY=EMB(+%Pd%zriZGnBJnP{$?n=X`@x;#CLQ5IeyKg*rjoGzM(l7| zbd1X)6x9mqDfO)jCS;d3`qD_~E$4Yosn)F)0^jSp`tH}*EYI?ti3vJOU(`y}OVo|1 zXRGBfn~ec*mNn<%c#O;2p})eYHT(7+x|PQE9*7grG*9Y|(45el{NI5XkJ*Fxtc%Fo z99j?{Yd3v2@k{Vq-GzVXC>xcu*9}ewzI+f*D>Wra^t}j17MCs0ztc#dC>3+RMsw>^6C%hvI_l6pE(O1t+ahzz(pL$b2RDwo7 zoG@Xc#r0Sl_b5d(7hn^{FQv5zNg!W`m>o@c7;N|){YwQc(O!SA4Q#U=HY(yJ}z3=|wm<6nHn=5-7x|Fa1RckUE^j`D4 zZ^qE|Xmexr*JJzO52wH`<-^DhF->*H*buqN$D;3bLk-vuJ}#-=@Xo}JWl{CC!sehpHAn)#|B49YOp=q`kVKk5)Rtr>{51bq>)Mit~=;=COZ!bF8 zU#Lz$%JmAKue<;wT7H{HPBMLA?Ymx^Zk_FA$aqko;^L4u@RAWFG8O`9++vYwdF6Tx z=_2B&4MK~?ZwzjRfAOHt`uo(DU9B;`6oy5l+?87zXMq^UP$zU6*bN_Vh@&jy-72l&_W!hSN+3dxTl%rfSWV zJ`;=kcu=sR4&JAs&qg^*-w%+xNOn8a-~J7&i`M1Ik#q(oG24UgpqX-Z1N(WnvXjYE z5q2@K1}~}s8*0&2}&y!D{5= zThwM9NFa(!&Rs_rGjkvVbXWpm7Q-2&!uPc~1Gx(VoEIVLW(2?{_YrsC(B_3T$|w-8 zNg=agkxB*5RKnB%=OTWvB!U?;{;b(BmfQ$N7ZB?sfs`PGkD!Ryp!49u7L+15;N>_z zvrAENNTZbLx$E-{JLF<=HYj7p=~aXwmI4;sCJIQbB?o<3)dd~@(i_6KsD+LNnmiCQ z5RhO9ojv^4X;{r_feUou@~wf_ubMaP^h;Ubr2QJENn>P zybI$rjpu?!h`P!1_%oGQqF;l28q3auy#`7=mPSC_w4!>aZgb4@XS>7V!0sDN#1=78 zX+GXbG!9R5J44Fgjn%Mmc&^G~gK?2>>kW{=5n`gl(%A8r!lSa-XU(NW`H31NYPUf4EkTyTjdT$WD zKfOcRW{ndfF*>Y+6{$G6Q`M-S%q+kRKp`W07yq5AQ*exW8thi)`#rlEb!xf-zE}i)Aa&^D3CZ@&Fo&M8hW6*e#3a z+lg!-gqcjET`OwFoL#VZ+{vU1EwrJq9}T&>{YsQRyZf6qpT%gA(`}9Yzr2Cl;MXuGPy%FS})0FWFG!}FNZ9nBox>EF8%in zXx;gjq__U;cENTw<&IkU+2dptVX8>-7~OVYBqhA0;HD&$Fnk@tEQw5z&}ZdHmdQy? z3UXbSg|X^=g>F-%d7-B-&ywdFzA9C2@oFFODMyf#)h_)j~A~e@aY`FZOiD zy9D1|v3(eikf9FWIPB$qCjFWPKc1Xi5st`TeK@r*Ye-9@0tIO`P{7he2^uJIlrawH zZeb>#DXuP%@@WPt=R9gr5hWosS@R3vYMYjhV8uZgP2`1HZmc>TqSvuuufFm0^HcuBTC^cM$VrO=vqkx|hi- z8M)(Y$OBqgG{w0(B9YiEWiewY*^`M(t5l-BMu9#=o(f&ZZ_Mvx7?`<>;Nr2wyX_c1z+@~`kAX+?#|v@HVqMA#B@Se^=+j*TNu!l8?2idN5l zy^exJ*@HYqj4;}mob~pzf(EB6lgo#BQ} zgaYa8VNvYFSB+P-GrkG$6SQ$sFWh3jUjwETfQoK^@NS zm}rfP1F`zx4Tu1Mq2x}i)q&emz8DuV_;jMK&A%?=-VzE?NnjhC+%u}d;j=uM~EAb=I4L2tEKrL@G= zY+3&`P2l$^4e1uUV0%ded!4%os(Xv&s|hTJ*T1WY>~G#My)|;Sp($ko%wVn-eb?+g z--My|Mf8iGBFMP2qv~ym(i`OfqZXTcdeV&B3dFU_&ss#9G5HLx93EN8zTs}$_>a)^ zc9g(a^d#w)UNRQz{qW|2?II|%gZQ{@!B>BUe&%OBIuQ|5m&n_-)eU|5pHmE9p*N^I zez7-yg^X}iSPqDE#sy#%@jjBac_A2Wi$nJu=eYr{b392{hJmfMNxFXN$Id0ei9QLT=yugDpzLp`D?yoN^Kgt0sP&!PDMgOyd z{CRWudPaP>T(+SQI((iNLEQQ9HrBA^SDzzqlJ8!OuOxp^Ly~jKi`~P z&;Ip51Xx&4aG|$8*oUe5afXACz2EHXVMr^M#6Y7>alo(6aX=`GqU4-lg6y0nu~v+H zAV+;A?X-wTFv0Jr$-9eL)**&nhZv@LoD&K~yC~GjlBP=Q&nd><;yoxl57`|_2skB; zYiLo-3Lz4q$mfs}^j30~a^Z!rsNxPu{s(12hDBt#3^zMg0!S$e_Q= zj7Rvqq4Gw15Sahz|0zw?{l(@+pQ{Z6AcB4xXcK$@73O5;TUe?p5k+vC+h~q?09Z^a z!sd=YP5Q!?*vvHM(=6#SH*p65p=7@?;V_itV9yf_gEP*^#*I}9Mb!+t|Up(i18M#5pq%|Y%OCX<#vA(W+UtzRZFi}l9juggno%EDg z)M{ZtB9$nysn{LPXJw%EHh=hL!{uVp8^v z0t0*eGas6zRPSew>&<$rrrF7Q9Th%9BnQs$3sY)`R>fwuTB(@kd+mhS(Iai5l)9Gp|7+I)9pQNHVzuo4=b!M4jvPGOWHUC;7C|KYugTTIIQi-aWfhkQTaunQi>&Go&WZIJ;n5{^0%OJf0! zM+uXOwSEUlxe4)v7DYwFMU!!o*qQ?WZ(N2O{_h>nQ{P)}MvJfsid^se=FgQX4jb=} zPJit~!e+`j%ruR)CHu0&g*?f~%aI5~6A4r;pSFV`WZ>AOE65$@*6|B6S4m|(9fzeZ zph<3^CvCB82x?daOT@t$MZAG4p&Ur(JY=qI2%=Cr(K4EgNXAMX(I=nthy?)E)8Vy` zNc75`Q2_aOl1*GJ`q<@iVrY%6o`FYHQ=`Tb1mBQ4$I!VG0g%he5bNpUK7%JGpPIoh zV)e6j%jsz&NFg=WI+BC16ZZkP%lXQoer?yvrEK>m%TXu6wtR^I@(!<^M6)~t*@921 zI;so}^mRn|jas4!))-}JmzemFQd7x9$%>8XixajZGgX9MGZ&oF4psR$;_EnMY>>z9(imyl`=r#2pQYP}B{48BKOak~f*Ht6hB2^s z1bv3Z;;?aF9Fj4)4A98(L>3pG6Z#uDCz8*fPVbOy{f^mAj*imK%Z_aOYd2fhX=l-n z44tmYTYH!n0SXgfaLv1!T9V7oU*SF8%dNktf8V(h|J2>t4aNFAmj z*%VNk6*9SCQmQnZj)u^ZSTO9iJOb7S0x|ynpPUuS!2bgb8UPc32n zCM}DNemOsgJg{v7{2t*p{T0Nd%rWN88`AWSFkyz3pM~h`<#-4qQ$vlr?Dp1|FAY6H}{F8NV z5{WWJyQq6YY3t_oIE6+nxR9WX;`nrl zGOFPBe}QKMTK1N}i|@$5wG?D2R9eI?Xj+F-1-7$ZV}1&+jp%8MhU;EIh39`3jSi7g z$m3e;SQd(+9H75(Jvm#y)M8y1V#>5v3`-R*bhp{i*aMO_cyT?~ismBsseG{)oaEc{ z8tC{Bu3GE-;b=!fV8PM{Fom%`)wpG6EhH=cR!lNQFC_J-7(4oHUFJouYxfAru7S{* zF%+z{0h$%9Ip|7>Dv^DFGf#M{y6@`a)!}K&ibUb4+c((-$6ZTkabbxCKvmP!yx}(4 zWq_ppmgN|seO9}839rMv5uMk8pr2wO?Czx31)D|z(^3?Xy`mW6d_K_ZHY(&Jv^}`? zv~t;pjvp;RN?+G#2CHr7$3Cr1Xv2gm^l1&=Mh9DH*^VvWox;r#!rxJy>QcC1bVV(C2x!uMN#zEttf~uEtUpPLyT4Pg@BIc%^IWqRS7qN=ZEl6};`W99k@h5V zY+LS1NmPd?j(^&f=1{wm6`8od2#4oD^OWz+7=;-lyBw)kCg^gb6tb;^$r{X0076c;kagh1Ak1Qj`@DDQYyo(nF58 z-;iXGv5Uwe<&%!v2I=O<(^I^EHp$mVtjU>z{-CE@GSh%V>ZJV;)Zb}N=Gfo1x#2NS;c^NMYWbGeGoosJ&#Yv^}(4DSU2t2xmr>BQkSi5r;Io>AsOncSvQV0ZAAl- z*|H5awYZ=;5KJXY>1RaE;RhI%v1=dVotUCh~viEhk zp{wIDiKBC^cl%+6q3a&p*>m(_=Xp)DGpfCH$DOJ#YwO;=HhwU`{niEUmRLEWgd^5^Wjp|w!~`!vZ($ATF^$+T>(1h-&eGk8b?rVjwgzwg zX({T|$6+$xr4gUAzR6Mu<)TxErkOax1Q#f~nEFUEnN-LaE@?8ER-s(PANPC!m585c zqCl?!wNLnPCMN?l2-?pO$`C+2Bmzn)32Be0FhCBf?~Ss9eVaZAN8L;n;XPeq{e1Kw zo8YXw>Y{61-K_TCNKul~^zd%sxD8;TBY_2+W;xAFP06ULs)~qANHG1s)(8QD|Lx8| z{x{>0OD2&1e;w+7)c>&N(*VO@iYRgC!AD;@s0PW!X`78CL%8?mpdw93?N=`XOUTr^ z+xOk&$stdmJvyzLOv^&nmv+KKB1o?EUpRo@HN$E}b`8tIuvMOjQVFE!m|GSaT@Yj- zk2W-~3Mu3W?3hD5kS8UtGh$2@_u~--=ZHtnp{4Kn7x~(g0y1sRRX^w%fU?8@@eegC z8Imk$n#hXZ@7#H^`Ax@ump8g>MG0}LWKd+r>AU$ysY}PneA7%a7hk8jkC^!-tNbw~ z#Xpfj{0k8TM=uC&c4HAppVjJBnAdIRc_8T$xC@oqBpq%bbYfUiU;Hc$CL!#Qp8*Pc-VwtoF^te>>*eEkHTA5P%`Qc4w#uR;*`R1@>;wi% z95IQ#PM~hRw%Zc&Qap9rT3dDvX(Dm4T4MAL45rOXO5vq-QZNd7`|zC4no?9S`g!lg zt=$e7rg+i;P!cE-qW^$It5Ijr9}xb30}L9KQXx-(_&*eobReKROQRVEKxH9O#)Vl# zN<4+u6$`W{UsEdLL~uDxDKgfYDH~vn`E=1BKyd;G?4&>EZ*ItfbQOjYV|5W z#cjou=+}~|>sIQRhwQJAjpH*acDx{NaV1}~yHfO}iDa=!6@eDddOC~a&Y4NQ{@EUs z@9utCzx4}*=Q?Ril;gapBMEAbpnCwh5@9!QpMFVIZ5$ZV9~bL6XF~>B%l5gXZca3Y zfdB(ahNr{E&1=%hfb{W_F@?CbH3)?v!2rP90x%RBLRJD#EHs606`i8uPQ+q2CX?8v z^w>rnE$z-#|E z^qH{(OaQq++{QY(ao}92O_10Ukt&z9Ik0|h&Uoucc*p1In82d9H>UCCm7Bqdee}!O z?b!XB^|I)cleH=Ca71ywhHIpAJ2d42QRYr9&NuT>H87z~J}u@=j7J#q-( zM}X(ozwT=dMaHl#yBtiS|+e;|NCm`Q??w*GEVjC z&I=|Xd*qnYHQo|NisWt%hG1#MWvRnKn7^M3!TOJ|yLj=hRES4vY< z+KIyY^H3$odb9m>%7Mz*~uvJtahWcbg6PpMqCnwl-;L0PoCuN~Kofm&Cd zdYHK*82adUD@;bjK0H{0HAvW=G2SgHtxC28c3C9z_He-tArHt98UUr&1Kp#8E#iW>_((*?hk64zPRb6 z3P}N{utmkJc(!sM6szv!-SuefW@RoCYdi9cD+b`kHz-1KBx=nJTIOIi>So3C>Xyw~ zrD!d>B{8!ePgzV244&$ zFOL9q3)vnA08oGT$!E|3+Wc(yx&*G;&872afX&<8D+7Ta1=BWaX>HHXj@r6+E5RKM z{P%-RAqv;0{R<^8WCQ91o~D2pwgW`yN4Up@&MM&NsFVRv08kAI=3NRL7a4L|2-cofh|h#ZYOnw4eK>kyo3*UrM4`EEMu?@`;A@`r>{ zUXpx*&l3bnFdVoi%#Xl${{PjaO7t_$TDZKXSPLi2p#G~x72)>sKDMf=(bS98D`j4* z*rnpda9*Sdhv>ejKTx1AQje+BVtdgxo1tBMZZ|b^AW<41!bnM-q$t|MIv{j z>eu|Go;Sxa%hj+8Qv(PBcfTQR<|*nqxL8M8P1mYY_3>fFQHAXvLM}^y<5kI$@%p

q#VG9&F=GN`XQbKWh_Zuggd&U!v_;w-epJC_B6}mDw27E( z8msd%_q2XnxYpNdaO1qgwSwg+m|omu$sTmGl~#aSBO7ekCWLZ)A}ZD6AZXJE5OV%{ zzr@T9D&d%QunVW4tpp-r6iu@P-FNYF@%-s zpkK0E(*+CxQr!JNr5?JfW?SZFPB&zYeioe8eA_aE;tx>T`{GzDhdGR0e$yA~ zh4?3>k1hO$g666BzR$VlFfL_J(K`MB~bjgr|<%*M7l>heLMbumu=Ox)Df zI*rTU(p5P58>U@QLI;@-bHlVcw6CsSk+Q=nsV8t_ji;qU(zfJJN@QOSlFz{W&OeCd z^K?ja;BBr!w?75b1O}_D{Y_HHl!L1uia-|lviChr;xYqc$8^HXewc={cs4 z?T#rSa=3<8Cbv=Cu>mR#53Wh$Xh?9uuU3W~b~kOIblVMk9kage?}$p@loU7zZ8^EH zt)Skc%>uMdQF1ZF1AmtO2`^~RN%|1btNMIGz3Q47fW z6tsQh)#6-mo*h^DF;cN5+9L?gxBQTZ9*lF-S4ultYi9t@G`gIzgl^v0sM&N`QDyF6 zl9a^l>K797*S<)a+auPK)2hdpSJfzfdL6p@h`Is|uPXgHwk1m>Df1{+6heQ|iV)v1 zOvov1!JAgc-_XFodXhy@2GLuJxDJkFE33gb%sLgHMHYzzIzuStgXiqD+QT|0^o^4j z%Kw;maJQ62#u!ru{QI?2v?Jn{*FT zQ#{)O7!C=f^5N3g8iPGvH`s@RFHCgAqa;bCtEl~Bcj8<4#=b+!IPWzgWTED61y_|S z*u2%xYG|JX*vck;S@Y=9@7-bwZ$d#UqJ=jZq^Lm9UG;19_S80H3yl%7sw)YH6Q z5J&U!y3Wk5p{=ue^bzXYxNr76r?tdhDWf{=^%l!bHJ8lQHmm&!jIN}*N*Ucrq%M}* zyjMFtJaVEUV=MM1l-DTbJRZ z^0P9c@;aF~ZV+f<+PVv$PSsorm+lT_1>&VJd~+L@hzOK_LlX`>1<~P4Vs+l3PC*`h ztqm>NCEXfqH5vUfj_Ts-m2nkSbplB9UtWu+_g)`&utk;+uU%Ae8Tt~tL$s7}XqZBG z3Y4zi@`?*)Z@FGoZ{z~J_w6c>zOkmHv)?j($2bDG=hcvLM`W?1#*)jM&IypC)f&DyO9-#RZnI%n>2b|AqHR4XnN_3^l@`)57t zU^r=l)7CY`h^hdFqn7is-GDl>p&X@6Q65PVxoI`KA1?X;Kv->W|JukuBi*`MZ zmbRP?@3D>?e^;xtHdO=TqvZOiU2g`^RLqUb@;6USO@$!e+8`^|g-!#y52fe7o@QXRWqQ3~5 zXc~{>AoqEGY4-$E7)AfK;)?xwPHb4r)x#TAo<+@V?a#1J&Gs8~DhVw*38J1-dH79} zIbyMvJ_!7C`2GtOy0%%4S8If^q7IZFQjWNNaRr;aLrzIG8pJFU&Xv{V)ca4Ih9bo7 zskK#qIoB`Sb%tSJ?{5orf-i!szI%pd4efbO@$*u|jksumRi-Y+>IuPgsd?fsO*Nrm z!5fX?pZ0YqeT%WgAF{^caBMeWMK4#+A}OWUN<{}*J$-{SjMGD<;w}d@Nnbr6p(FNT zx|R{kmJ@Svy>2Dckg5QaV#~(Gy93&=pX>55YwrTYwhmnwg54kHlELzQXHWdlU&hSM z7t-Is=wK6>No!z^D)pq3t-V|94+Sf|zN~W#A1C=SH8g%_mhn29^eoYsvpj3kCIAd? zzLZ1hJx5$}mnzgH}zDXK<`z~$?zq=Yuo$nL*q3d39g8Xgw21|;U>u>X(=?BCreo~yfUVwX4 z<9ohtEz^47b6B)~dbRo1*wExmrM>5@O*iGw^NiBY+2)(Lf)*wxzM0pX6?5sg!)fMh zwA@e^CI6jJ)-N~(zx|C81+?*jDezt$GTSSBE~ODMgmpGdmdvP#_t*~O45HO^f8{+rUt2m4AAfw5b@%#UCj7srTK~S*mwn{}s^_2ezL(p)+<6`)=nYuu@T_N6nm$Gmn2= z1teY#9yfY?P4E1;Sm4Rctqz}2E=NXr-<2btkbH;Xz> z-M8^fPD;rjmI;qUDJn`2BdnF}6>8>R;D}#LKdq3SG^wkay_<=9+OgZWTLA_Ie2J9so4+-S%pFyF5z)srTPK<}s_-%Dq)SMFN`J z3GbZu1b6ezTXDK>*m$3D0tkX~TTrQ^yj$) zs#5+j9mU)nX_NSdw+J+k^U2t@7j(g=KqB4CXjeapUGnTr>{Xtl9MxEvv?G}@MCWN_a?qSl>gyfZI+ zZBg%qDgS!0a<4q>S@%mt(uF79V$gqK;pFHbzOnrBoGY2$BXb&f3^W*A1)o5RX9~&C zAV}pMdju;7d|`S3L7gb$Tl?_qXkFlTlLsv_Spq;BYY&*gOP0u|0kHFM;eu-%y3Fj59=@F0?dCpe2j2cV_%2EZfTS zv~oTV=cD!Ib6@1(WD7b;VgX^K{or&x^|eQ4U)SVV*>Bt=cU1T8au0r2Z)!K4 zE@$6(Aoi|0t>@<|z^!SE^PrGG(!7zs@$PboM8DMckr*6sD7Cfkf$%0ST1Z4n;_N;F z4U)To5ijxWxC#+&=7cu73ht*y8+}QBZi(@|VV_o@cz%48i+Dbt-sGWE& z5|9>Qfkr{HLFznlDj-pSc~-taQ}yz*y;;%zFPZW0px*jVU5brsuOc$MDj3<<3;2pF z8}x;YEZhb1B9tBiAc=M~7&Cl5kj?{Qz%R%0dHJK^H-lc~cU4Q1xT=3B@*c4W@~jLj zG#YtrV8XtPN>50>Sv$+v2)bK>$Bo0|JnEawK8HuM#Dvs|KcEbEpy8yT z%d?4S+$gO>M`ZDVWj;IiXNuiB$WW@QJE+e|T1*gHtmL znEu)EHQ)IVqD}%BkgHM5Wi{AFv#Te#NhbxR(~-zTmikZxn4gLB8GYRvz!0=QW~VwV zjx)DO5mypjc`xpesF`T^@q!W%td+L>LvB%8Qc(SBORyPnBTz5T0}u&Ot9)*4cDc3+ zDe~WAcsD(QwbxA&P*9#E5hX)+f!|x}sE3_;JUXWk)REe$yODkoOKZ*tuTjDCz6m4n zE~sOt%vaN&M3Jo}T9vW9$j>`X+teu(EQd5h?NYkjS!W1^gIHKp1Ee14yMVXeB#Z1h z>^ThWx7b0tI?vYc-)vP(Vt8ELEHHi6h8Nze1nOf^M>r&UDhc!d45d5m_CNcC8xf%t z_rL=Koc{JiKGw`biI6Z%8-Lb#c2a|>?+Ef7+wpsRfDy1c?DGIXLw2YUKinvSupiKn;1%HCYkCt4Ofs{4TA|14_P5Nw>;yL_Td* zFWdU%JkrLtSB6%o)%D+fA@lsikKyh<+t-lwu^HkW89=TBV5I!Pj0IufeE{oyD`C9H zrT7Xri@-fB(@EhhQHKj{cgV6>+^- z%fwHvUGMp}Yr4+(wTJQnE1NtQ4bsyRkgvd#y7v0L#`+A7Uv0gzJ6`L>Wa_ofvC)IqEHhRqBU=t*s0Y0oF&61P7fw*L=XYtxU zJ)L2KCnY3LprZv063Q$-avL>pRRr;uRb!d)t6}>-p~d8)IM}0$ zaRU@tCk1C(f6D?3!-=ZoENj-E>?U+p+ACN1REpuC&!ZbIb5MATKP2RhJ(Pp}DhBq> zaTu`L0-98+WMCH?ZG2M(-NxJ3b@zt(;TjH1C=t1}8>wUtt5GYA#URk%YfP|vDh)h@ zG@lO)#mg-g1u02165I59*KT8Yp4njA7#zCWb9$k(T8|c}V$NvUUZuK*P&|l3WlAbMsZ6;13O9RxmVF#PO$?Sn<0UqXO>SQs=w+{?!u!7@alR^5fXco#T6xDV*Zgav*rOeb zk)3l=mdMbUQ(-t{jX3N~Hi3}9#Fg5M-` zIBTk18zT?sDjtRg$8s+{ymC3R{GW!LHH@k{F`ugS zob4b=1=63ja><>Wq0gqBB6u9@KvS6xzZyf~Nx$Vz7HS_A;DJA%fsu4Pf_T4R5tSt| zU@&gMXwjbU)aL&=sz9Ruc_&uGxzIOgjU*+o-k#on5scU0>eRSqGf;J_!RXG_sR(8GEcU}%p;5R(WWevSKS`z-1VO}y8+as*{wxSL8Fz+ z4KXzbl2mZ^c$hR5e|2D!2(XB8J0m5t_#PDkU*>p1lC>E@oh8LfG!-=3=XSqEN~03< zOwjUE*3e8-yJ|8ci*FN#J)X6lW6m(5bP-wKx=fFPS{60>UIq>HL3~-XJO>y2Pp_zl ztoJ=+khD9O%MXZl!`gLJz|Gol)K?ZrsiQT`Ye}iiEGd{8R8cG<0>9Wu2+^JjJZ%7* zRJD~6t`cX9Sl8Gt0Ra*8zNmgIfCJx>_N%gBfQ6rIf|(On)2u)sV?2fx1Xm4z9~%=T&Em{Yz}gtE|1= zmFxcs-5w(02a`&}Z{g#ehMx=H6QaMDhv4UfA05D$(-#J73DjrS=9`umO5RW35v_C;F5Y5ZQcE6QLXEEL*KfkN-wEi-WB5HU*lEyrO`& zyio7}>2ZEr!5vE~=ZF;x)vWG&fGSM%KKOYljenznyGHew?|pzQ5_osxN}4p4>%`Xh4dDn%i+^3^s`L8b5w`BB@9~tI9U-q~6LQ|;F zVbuiZkD48S@pc?CNjZEpS$F3yvG%e3CP@c5gVxpVx5e*#W`Zucbev#jM}?H~`N;fi zB!iZXMiwyR5#`xYqrK zccr`p&7e8u#q#nKNqy~O$*$$p7cDKRFL&*FEUDQjIa^q?UQtza?yRz;Y)z>=S5={0 zUn>lM)HiVb=FpISX65zkeSP0up_vW$4c)vl&^Pet=Jmdz?`{IbYdaU+Z#Hxnu!V8} z==aAR8Tj!4>LkjN|Lz#-82H%Tn;tU%+<31sz-qn_fcjWH2!+m?3;KAxK7o+e%YK2d zm**D>czp{4gQocPhBt`~2Y+G%`~0LP1MzMRROmo@2b)pMph_mlwThQZt^W&uunt6LX>wOgl$oULGRwZ^R!fV9^6Vk zF|jm(JYfQbA}&@TXE8~SjmurMZ%42c`Jt17#gZ$Sc%{t;`$A0ZO>zAh+V3W1+WtWBPcNsoS34Z8IBgjeaeEli${2^7RS7*)-MPagyrg_>6s*Tc{yR4 zusXg@tP+B}He?7L}HOo#YF9tw=p9|Gcg2^CLU$aK3L4D?B2Y zCGd&ZCmw{hd3!fQ6ZQc6H%i%&V~T=|9enA4f%rwQAUYz1iwNN&Lo@_#a7Y9EXj&)l2&=P`btEs(uwl!W$J+wJi%;CJ zt*zi!@@uZ!vhDiq0&GaH-VVM+&6GbV2hIc9S=-anwr6Ht*o>@9#*H97<8l0_P?(qG zQ@fJClz71;uRzi^eoH7LpDjvOj3R})EM1ZDguS*OAut-t3_S9yizPW%K97;Hy0*wE zQ8~njFC`F{I-=ETNWA;6J_%oU;S3hA5HiBsm+S|=ZS1@#m!4~Ake+j=vvWf(Qz_Z{ zhOFaKBrC!zmqhl;!5bb{9 zoaWsFjj+UMGM*F}4kMFbF8{Kr*16npC7yy!S0X8zS`1fywnrJduxM#B+2JL*<`fU( zlMwhlBeDAjK6~oyD)7ucMbK0j-l@KSvkK^GRUDQ6DYsKu2hak;!|`4|pBt|9?Kr&I zQ{rLHh+@}^^N~16>n3n1F33Je%&!70hzk`KfhPHQc#{1i%R0-DSbvW#cf-Rd?nYl0 zXO^zu^5olb$wf50k}J@KR2itm3`TD8kr>d6)lomW3W4pAT_=9LcKzhzWy~knuGxQ{ zmk&inR#a9;Rz+dZ)m4=d6~N^@f$(FG!GX55#TpPd>1W9D#KVHl`}-#Qsmpe?wT&)! z%3;uCWm{=(jsa#L=zy??LQ=B zg0a}JFf113FbX??^<6OApKEzX??D!ZM9;&9m&WnqoBHWs7J{yF&lASX*LR85=dv@C z+9?StJ<{X)L`MRlUJ7B=#nOqHxUfP-+o2tU+e2_96e@;{baT7s3Xfp|8Ez}2a(BuB zVlNnmq)o&Kr8syXj}f`kP|nPY#wKKTp#}UN3@0l(IxbIS*v5zq;=yrA(utVVQN)!1 z|NBAkH~s++;i*0)-d>r$J{jI#*`V1-*iKC-(<49XMLP$abdr(vSoJI#F$*7BOye_J zI}=hg_Sd`S3rIU!y2TqaIq9d|p>Kc%j)n}zlTj!v2}G$_`&hNNcQSW^BY*5;?E}i2 zdl`G_4*MAUK-#dt>jLSxAAUWmE!wdZXVZ#Wf)}sTRje-nV@;2OJMM_cO6XVohV?t<=yQM&eu*5utqf;HTdwpuw&2_ z9ecMh*TbY#(U*>7Kv%RKU^?b?SiE8jpzr5=P<>LJJ*d)uxU?s0uOz3+wnZm2#yG~K zMW@O(NAx+0R>;fa6aN^*#7%o~wj4S%XDNX(^@eQ@hEHiDsxxInqs{>U8ZZ4C-qvsEYpA%(MxiU9qruw%shS}FO&8;II+sM)fi~~@Fq%Twnh(? zW`7tud-z01{Su~faATuC3Y4k@oimX4?qgu+973qUJpJ}_QW{~}lDwlwr(g_ybd@e? zU~0V@q&M^^&^-tgd@26;(WyyA6X_c(GSSwoWx6AWcfKG@X};&!iDRcvA3f%kzMqbC zcM&(>rpOte@2IKyK7|bzvlI8SD4qpZ5?;>_Za4NK(&BRxx^Bb3x5;?mVq@i$0^4`b zJ4%SlxMh9Ymq-3|g&%bub{ssvul!G?8d9A;4yAwTQ1;fJ?v~hAnYX$Nj0NuItz)W6 z?xs>Rct!j?;vYkh@R!F3V#fBodsSNAf?7~1(EPkS?(bhiBB^}N>CfW77F!a5SYgi4{S>d3LI zS~9(uMuD_iQfv=`KtRweVsH?Vh(8n|5`f+6cjsAcp<$4vnp#N?d<(;p{~5S1E@%pn zL0x45sj&OizIuXSJ(({nr6{fr1gv?kW~!ST*AUGM8$uu5)-{G|SKZg=xAuJSDs%O6 z{*d-MHrca{(A6SJ0TC82NrI&HiS(*R1NiVBA!DJtwe8(P%?^|Gir#s_vkR5jLA53J zFvbw<`3BqqEJ;Bmk>oWoTyAxY>m;HTtj2O$k?(_o-XoEJx7GXGsxvodhJ=I0v`Gj= zF$aUr2jLY{8xz@6I8Px@9qMN2fPek_S^sZ`JBe4|_{GO^38YUu2{>_Tt~k0mBv%X^ zmnHkW@%d8U-uPoVK?vFNY0rV?v7iY6mWH)Ti$_$oACa|uMDpV!X2K?Ztp~877*^k~ zp$HRGAO3rRUHBX~N*Fh#DN#@#r)C<6VDYT995fMKVNk6_NJ+N-+w{U$xDNTBX za7C64&WgamM>Gp#>$jB(V2dON3Nb`s2DqrOK#-Yy=*n%EthYUqGf5KKGK(lRbo3>_+hQcJnaeG(}kt17O>Tap;ec*=59ODjUKrJ-a z9UL{N)s^-8o&dQ|q&}Vweeq+d*lH_pk=*>EAIVk@H9vF9%(h({rLS6j37}}HMBUg4 z87N!-%A0`T76H0d1ajJrgCCMhf5?xUY;lhKM4@ZttT&rS__2VF*0$|dx}OlD`}MfX zN+f9Is}oP2*5bD6SL9ed_DnX}787?X8~O*XC4&5v&CS-_m8^XE>*Uxj;YEs0)DDVi zozSX&U2k}evLOq~z?sX5Ru(Z(DGCT?Xw?f5Vsn0>T{UPb+E~Y?**Frn*fX4+xt`7I zeLtYsblN|K`v*9V(l0fd)a|_c3?j{@PZvkVF$#iZ?e<7b16X- z-WEf!;J>&zc8!l4OZXFz=~wTquczNL{#<&6IBrt7>X>cb%IpjX3}*g&>%RKU437HE zdFHsiJg_6lfnyHqUajX_|6zl!4Q~h0gP%-B^T!Rs!t}_LPZ{g2(Ick~uTMvgmy5GH z$O6Vqt0%hl2jH;-OFQJ<9{q+ILKY;N2W>#s32jLFe2D5y?_medRew&_6 z9^>U3h+B`VV6$X7KBQ9s$ECVm{6tq_pbOB?{Rg~-<%mLDG zr#s*X8Iz1+d;KH};K|NxBQsAiIp#5%TdEw))BKhxFi*N%4%8EM7r2{yxR?7_!TmhI zgREo~t69^kJcqP!9I?4&$R}-DeLnN`^;R%2 zv3*_gkUa9(6Hh(!+>7=l5*_J0*>j;TLh#YQ$sOQlyaI+zoYy^-8`~n+|B93Q!RGJQ zOgDaKdi*|H%|D#7`Ct4?&y@2y{=M`-JD@U}>HLdv9|{?FN7DWS;IQOnKJdT<05}a8 z|6azEr}sXY^!!$y?OV6|Hv4skT4F3eZAoP9MhfV37M|Ux9*R^`x9zOTryATq1_RiW*F?usPM}254RcJn zD!Wl0^PtvB&-3V8gyFlDas-M6izY(a-#vLwC}z#4Ao3|VDS?+&7HM5W!h6XAo^p?} zJZ9utd7nII?|SA+td*5?t=O>j((a^|w=g2exncZbmD$%JTDbJYu-#VNW0yowl0-{1 zX$558O-*O_o>mF*F_`D0C!t}eO05B4Y@ERLz#`|2zR8euoYW&X0tO- z?(Mz!b{>?*x5?m5{fT%-zWYabq}BTo7hQUN3yTw(_4oM+OCG2Dz&kYi#x7yU0O;R1 zp$5Q{`L%%gt;tW-tgtX5)NEIH(S%L)?;TWb)qki;WG_mAg2|1^0{sk{wE|}vtEP{Q zzN;PU-A-*4$egbrqAh@c_GeH4uZQXMe_^2Q@ZVv%#dw!~0d@GmF!ps@UM1^o(O%13 zb*GxAJwbv!xn}`!!m4agi3se;VS#@bde34|+?^TaZmhR-gqK7sVr?* zS}4>pg#ESBBiz%gvUJUR?wCZMO|gStp{A2`tV`(Yj$c2v&Wo+s-`e)RAP`h@O^z}9-i29rR@tly*iJ!ZGWus2>0bBZ$ENd#>;%qHb0;Crl8MBNR6K-Xf{9p(@4l@gy1J|)%pp3!$9M<^^`g~J4EXIQ6qM3*H-6UM^szA{t=+f`E7L%X*{<^kFAvaRLP`z(F7C!mQQ6;NUxms!~FVwv+n8)Y%R`sGZ z?j|Iy`j~Lc<)ja*eTMe#^w0s}PWRuW!w!xAcmdU_OSp$Z_<#m+MXkNY-h)wWjk z?C!xmppRF0LU?U|!;;1xxCyZ#R8jM(lqPtbf0xu9!%E6A?qQqrW2_C1JKg+}p6Wf^ z)T$@GovuTfJMH;=#3!-w2Y%Y@OVga@w0s$11O>aK1EU6w4upDTsAV^~+?rb)-Y1da2 zjjTvh5|nc3GC{(c_$+B#cVGeE)wpLq=W$2J?tBXaA!7>LU?NloB=fS8w^;I`C#)Z% z8=cN0wDl7bZyb7aKGvB(lpB>S09JtZ;Fg!IXR%ri-0Pn`6{xCqw+1BToYGyy!9*I|1@P> z@|y5wk8hFVo!8mOb>MmB0mrY@ffhghrT4lB3rslpir2bCKgrW4-^bgc&#Js$m}0e};LhXc+I&Tuo>rR}lTlI~a}Eks4; zumGOW7E$k?2R#L?yCz_|9}}LM?#e$oGoK3tYJwOCF$T!aTG_O_o6jY>8URm<`e{63 zlJ9terpDtb-1O(t?ePpe)Qx9iVhh#GJR#$?aqzp14qbv~MBv^s=X%h1&kUK2pA;Jd z>b2|PQ1ADY16PqMS-2E)Nrg)iFOoAiX`~h(NQbjzL)vnCmnE6-jO!0bV`Y#qx zr|vkLA~s1$+4BHSg^40*1TKLi2{yLYB+##mExWz57j<O{!xsP5ucb2DT~Tn(BWS!XqFeA@^4l z)Mkp8C@ESA(J@MqtfE-VX2oj2Y^g@fDJ~zG(xu5LUII2wbIps3*ZlYrTi_{Kg0e_u zb0=W75X_cHX|XH}MoZLdQA_2NC0kBH`3meOmn*Mad8A~W;+s4_%TmbCzXHnE38+v} zA}cDUs*u8R4o!>#)!h=SzJm6qVCTK(u*68Bp5Q)shsA2!tf@6UJo*fb`QiA4acxpM zM7vbGSKl8gr3MWd{yF-UkNrtgYP%g4|Eh^D*Ixg2>9@sUM;vv`@zkI>$lL+yaGAzS zh%gqNaMCHKopIJ$OfJzCs^4_l>eTzYbFR7WMyH*@fkA^t&2H4}W?JYtVr-W(ab1(k z4moTbGp028XwX@kh09^5-sW888%+1yuabZ_4IfmjM5$Hw*qhqJimdI9$DVYt`<{93 zg_k;X>e8);V--niyldy6KK%v^QVkh4(q~_M#b&)3HhAW_7dmzI!wUyZ4wGmXH&q=AKvgNw(^*G7{T5}$xJAsrN5B4QF!GI9!L=`lx1 zpFwXPrt?dCMDQ3agezYgJ65&9wIu4o_iCca>O1$_5*233U58qW24bo}a$Lf zqf`VFGK&AGq4O5@izVtTyK)M-S*Ey2!0uQ@1@d~tN^r}XRfRPL@_K%k5M!uI8X&Ki zInK$lbKlfy|8+mTZmKVnPcR7G(!g*fh;qk)=wn?hfO0~aEUBbIZkB7NB1#=j)}XGF zdbG5m#y?}V2+PX_j%uZp60&w+LJ1TxtZEpcXevN0r?hotDx9Ebs*USdTW%Bb9*>rl z)e5cpxhb<&q$1>ZB!rQwhwVUJ*^Ep^oCuYJQn?AVQvON*>=*3~_FWq$=gn`7!f~Te z_h0q4N%~(mX}j<}941Ll`OdYQt44P6B0I8 zAUQh4?QVHfy>#cS(Jj%Mt9z9Of9zJ4rXY~Q`;{il2f>tm$D8+QGbvtJ7Fr?!XEXOi zGF+Jwgt3+A*=c`&jt=2yF4DKBQ@$%x;cJ^FJ*Pd>fQ!(Nfp^VQL9DJrg{p%JUo z%er!J%$w6Mt1N_TxrVw^zxllALOy1pB>_vF2_=L!8Db=gt&9PO;K<-oS1eFlNn1PP z-rl7x#r(CE^aM?fX1W+f3dO?u#@ThqFRpew{*@=VO2x?CZX~O>jwg66qm6{tF>NGt zJ*Ul-wiL9jr0Y4of-vH`>KKlC86Dft>-}_%DrQU=EXKQAxVDlsm;#`H#dw!v!N?*E zz|@9mDq(?uO5?kO*W?7cMrv{zePiaL`;<{*; z9s}zdXz8~wiS4SoY-?JuE8-w(mA2OFc$%ZD>tYB=bXP9A#a4cI&BdR83&|$i{Y<$s z`m#^{Gx?@%chgxruN8U3zIn$65A3i8-bVZRFhuYBriFC6MGP9BhZ~9cs-e6rc+!dI z(S1G$U6rxhOPkRbgePmW@zojX^Q^ggEqy - - - - - - + fill-rule="evenodd" /> + + diff --git a/docs/livre-blanc/index.md b/docs/livre-blanc/index.md index adc7711..13b32da 100644 --- a/docs/livre-blanc/index.md +++ b/docs/livre-blanc/index.md @@ -7,7 +7,7 @@ description: "Livre blanc de l'Open Trusted Service Provider Initiative : défai

-![OTSPI](../assets/logo-vertical.svg){ .wp-cover-logo } +![OTSPI](../assets/logo-vertical-dark.svg){ .wp-cover-logo }

Livre blanc

Une infrastructure de services de confiance qualifiés d'utilité publique pour eIDAS 2.0

@@ -380,8 +380,9 @@ Tout éditeur de solution de signature, commercial ou libre, peut s'appuyer sur ### 4.1. Hiérarchie de certification -
+
Hiérarchie de certification qualifiée d'OTSPIL'AC racine OTSPI, hors ligne et sous quorum, certifie l'AC intermédiaire d'horodatage, qui certifie les unités d'horodatage TSU-1 (site A) et TSU-2 (site B). Elle certifiera aussi de futures AC qualifiées de cachet, de signature et d'attestations.AC racine OTSPIhors ligne · air-gap · quorum M-de-NAC intermédiaire Horodatagehors ligne ou en ligne restreinteAC qualifiées futurescachet · signature · attestationsUnité d'horodatage TSU-1HSM en ligne — site AUnité d'horodatage TSU-2HSM en ligne — site B +
Figure 1 — Hiérarchie de certification qualifiée d'OTSPI
@@ -389,11 +390,12 @@ Tout éditeur de solution de signature, commercial ou libre, peut s'appuyer sur - Chaque **unité d'horodatage (TSU)** dispose d'une clé propre, exclusivement réservée à la signature de jetons d'horodatage, générée et conservée dans un module cryptographique certifié. - La période d'utilisation des clés TSU est inférieure à la durée de validité de leur certificat, conformément à l'ETSI EN 319 421, afin de garantir la vérifiabilité des jetons émis en fin de période. - Les futures **AC qualifiées** de cachet, de signature et d'attestations (cf. § 6.1, phase 5) seront rattachées à cette même racine qualifiée, chacune sous une AC intermédiaire dédiée à un seul usage. -- Le futur service de certificats TLS (cf. § 2.4) repose sur **deux racines distinctes** de la racine qualifiée d'horodatage : une **racine WebTrust**, destinée aux magasins de confiance des systèmes d'exploitation et des navigateurs, et une **racine QWAC**, inscrite sur la liste de confiance européenne. Elles appliquent les mêmes principes de gouvernance (air-gap, quorum, cérémonies) et ne partagent aucune clé avec les AC d'horodatage, de cachet ou de signature. +- Le futur service de certificats TLS (cf. § 2.4) repose sur **deux racines distinctes** de la racine qualifiée d'horodatage ([figure 2](#figure-2)) : une **racine WebTrust**, destinée aux magasins de confiance des systèmes d'exploitation et des navigateurs, et une **racine QWAC**, inscrite sur la liste de confiance européenne. Elles appliquent les mêmes principes de gouvernance (air-gap, quorum, cérémonies) et ne partagent aucune clé avec les AC d'horodatage, de cachet ou de signature. -
+
Hiérarchies de certification TLS d'OTSPIDeux racines distinctes : une racine WebTrust pour les magasins des navigateurs, une racine QWAC inscrite sur la liste de confiance européenne. La racine WebTrust certifie une sous-AC DV, qui émet des certificats serveur DV par ACME instantané. Une sous-AC hybride OV / QWAC, à clé unique, est certifiée par la racine WebTrust et, par signature croisée, par la racine QWAC ; elle émet des certificats OV / QWAC.signature croiséeRacine WebTrustmagasins OS et navigateursRacine QWACliste de confiance européenneSous-AC DVWebTrust uniquement · HSM standardSous-AC hybride OV / QWACune clé · deux certificats d'ACCertificats serveur DVusage Web · ACME instantanéCertificats serveur OV / QWACDSP2, eIDAS · ACME avec liaison de compte +
Figure 2 — Hiérarchies de certification TLS d'OTSPI
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 66e0948..68ecc64 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -389,6 +389,20 @@ overflow-x: auto; } +.md-typeset .wp-diagram figcaption { + max-width: 820px; + margin: 0.8em auto 0; + color: var(--md-default-fg-color--light); + font-size: 0.72rem; + font-style: normal; + text-align: center; +} + +.md-typeset .wp-fig-num { + color: var(--md-default-fg-color); + font-weight: 700; +} + .md-typeset .wp-svg { display: block; width: 100%; diff --git a/docs/stylesheets/fonts.css b/docs/stylesheets/fonts.css new file mode 100644 index 0000000..fdbdd91 --- /dev/null +++ b/docs/stylesheets/fonts.css @@ -0,0 +1,68 @@ +/* ========================================================================== + Police Inter (SIL Open Font License 1.1, voir assets/fonts/inter/OFL.txt), + servie par le portail lui-même : aucune requête vers un service tiers. + Sous-ensemble latin (français, anglais) de la distribution Fontsource 5.3.0. + Le PDF du livre blanc l'embarque aussi : son rendu ne dépend plus des polices + installées sur la machine qui le génère. + ========================================================================== */ + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url("../assets/fonts/inter/inter-latin-300-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("../assets/fonts/inter/inter-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url("../assets/fonts/inter/inter-latin-400-italic.woff2") format("woff2"); +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url("../assets/fonts/inter/inter-latin-600-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url("../assets/fonts/inter/inter-latin-700-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "Inter"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url("../assets/fonts/inter/inter-latin-700-italic.woff2") format("woff2"); +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url("../assets/fonts/inter/inter-latin-800-normal.woff2") format("woff2"); +} + +/* Material compose le texte avec --md-text-font, suivi des polices du système en repli */ +:root { + --md-text-font: "Inter"; +} diff --git a/docs/stylesheets/print.css b/docs/stylesheets/print.css index 2c8a8c1..06a3685 100644 --- a/docs/stylesheets/print.css +++ b/docs/stylesheets/print.css @@ -23,7 +23,7 @@ @bottom-right { content: counter(page) " / " counter(pages); - font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; + font: 8pt Inter, "Helvetica Neue", Arial, sans-serif; color: #64748b; } } @@ -32,18 +32,19 @@ @page whitepaper { @top-right { content: string(section); - font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; + font: 8pt Inter, "Helvetica Neue", Arial, sans-serif; color: #64748b; } @bottom-left { content: "OTSPI — Livre blanc · document de consultation v0.9 · CC-BY-4.0"; - font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; + font: 8pt Inter, "Helvetica Neue", Arial, sans-serif; color: #64748b; } } @page whitepaper:first { + margin: 0; @top-right { content: none; } @bottom-left { content: none; } @bottom-right { content: none; } @@ -53,18 +54,19 @@ @page whitepaper-en { @top-right { content: string(section); - font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; + font: 8pt Inter, "Helvetica Neue", Arial, sans-serif; color: #64748b; } @bottom-left { content: "OTSPI — White paper · public consultation v0.9 · CC-BY-4.0"; - font: 8pt Roboto, "Helvetica Neue", Arial, sans-serif; + font: 8pt Inter, "Helvetica Neue", Arial, sans-serif; color: #64748b; } } @page whitepaper-en:first { + margin: 0; @top-right { content: none; } @bottom-left { content: none; } @bottom-right { content: none; } @@ -98,6 +100,11 @@ padding: 0 !important; } + /* Espaceur de Material en tête d'article : il décalerait la page de garde à fond perdu */ + .md-content__inner::before { + display: none !important; + } + .md-grid { max-width: none !important; } @@ -161,13 +168,17 @@ page: whitepaper-en; } - .wp-cover { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - min-height: 245mm; - text-align: center; + /* Page de garde à fond perdu, aux couleurs du logo en version claire + (son fond #0b1120 se confond avec celui de la page) */ + .md-typeset .wp-cover { + display: block; + position: relative; + box-sizing: border-box; + height: 297mm; + margin: 0; + padding: 22mm 24mm 20mm; + background: #0b1120; + color: #f8fafc; break-after: page; } @@ -176,38 +187,59 @@ } .md-typeset .wp-cover .wp-cover-logo { - width: 55mm; - margin-bottom: 18mm; + display: block; + width: 58mm; + margin: 0 0 0 -8mm; } .md-typeset .wp-cover .wp-cover-kicker { + margin-top: 32mm; + margin-bottom: 7mm; + color: #38bdf8; font-size: 11pt; font-weight: 700; - letter-spacing: 0.2em; + letter-spacing: 0.24em; text-transform: uppercase; - color: var(--otspi-primary); - margin-bottom: 6mm; } .md-typeset .wp-cover .wp-cover-title { - font-size: 22pt; - font-weight: 700; - line-height: 1.25; - color: #0f172a; max-width: 150mm; - margin-bottom: 14mm; + color: #ffffff; + font-size: 30pt; + font-weight: 800; + line-height: 1.15; + letter-spacing: -0.015em; } + .md-typeset .wp-cover .wp-cover-title::after { + content: ""; + display: block; + width: 28mm; + height: 1.5mm; + margin-top: 11mm; + background: #fbbf24; + } + + /* Mentions ancrées en bas de page (l'ordre de lecture reste celui du document) */ .md-typeset .wp-cover .wp-cover-meta { + position: absolute; + right: 24mm; + bottom: 30mm; + left: 24mm; + padding-top: 6mm; + border-top: 0.5pt solid #334155; + color: #cbd5e1; font-size: 10.5pt; - color: #334155; line-height: 1.7; } .md-typeset .wp-cover .wp-cover-license { - margin-top: 24mm; + position: absolute; + right: 24mm; + bottom: 20mm; + left: 24mm; + color: #94a3b8; font-size: 8.5pt; - color: #64748b; } /* Le titre et le sous-titre écran sont remplacés par la page de garde */ @@ -240,8 +272,10 @@ } /* Typographie du livre blanc */ + /* Trait d'union ASCII pour la césure : le trait typographique (U+2010) manque à la police */ .md-typeset:has(> .wp-cover) { color: #1e293b; + hyphenate-character: "-"; } .md-typeset:has(> .wp-cover) p, @@ -252,15 +286,10 @@ /* Colonnes étroites et page de garde : le justifié y creuserait des blancs */ .md-typeset .wp-cover p, - .md-typeset .grid.cards.wp-figures p, - .md-typeset .grid.cards.wp-figures li { - text-align: center; - hyphens: manual; - } - .md-typeset .grid.cards.wp-figures p, .md-typeset .grid.cards.wp-figures li { text-align: left; + hyphens: manual; } .md-typeset .wp-cover ~ h2 { @@ -362,28 +391,6 @@ text-align: left; } - /* Page de garde : bandeau et filet d'accent */ - .md-typeset .wp-cover { - border-top: 5mm solid var(--otspi-primary); - min-height: 240mm; - } - - .md-typeset .wp-cover .wp-cover-title { - color: #0f2a6b; - font-size: 24pt; - font-weight: 800; - letter-spacing: -0.01em; - } - - .md-typeset .wp-cover .wp-cover-title::after { - content: ""; - display: block; - width: 22mm; - height: 1.2mm; - margin: 9mm auto 0; - background: #ffcc00; - } - /* Sommaire */ .md-typeset .wp-toc h3 { margin: 0 0 8mm; @@ -455,4 +462,14 @@ .md-typeset .wp-svg { min-width: 0; } + + .md-typeset .wp-diagram figcaption { + margin-top: 3mm; + color: #475569; + font-size: 8.5pt; + } + + .md-typeset .wp-fig-num { + color: #0f2a6b; + } } diff --git a/docs/white-paper/index.md b/docs/white-paper/index.md index 37118b5..4c5e3af 100644 --- a/docs/white-paper/index.md +++ b/docs/white-paper/index.md @@ -8,7 +8,7 @@ description: "White paper of the Open Trusted Service Provider Initiative: marke
-![OTSPI](../assets/logo-vertical.svg){ .wp-cover-logo } +![OTSPI](../assets/logo-vertical-dark.svg){ .wp-cover-logo }

White paper

A public-interest qualified trust service infrastructure for eIDAS 2.0

@@ -381,8 +381,9 @@ Any vendor of a signing solution, commercial or free, can rely on the service to ### 4.1. Certification hierarchy -
+
OTSPI qualified certification hierarchyThe offline OTSPI root CA, under a quorum, certifies the time-stamping intermediate CA, which certifies time-stamping units TSU-1 (site A) and TSU-2 (site B). It will also certify future qualified CAs for seals, signatures and attestations.OTSPI root CAoffline · air-gapped · M-of-N quorumTime-stamping intermediate CAoffline or restricted onlineFuture qualified CAsseal · signature · attestationsTime-stamping unit TSU-1online HSM — site ATime-stamping unit TSU-2online HSM — site B +
Figure 1 — OTSPI qualified certification hierarchy
@@ -390,11 +391,12 @@ Any vendor of a signing solution, commercial or free, can rely on the service to - Each **time-stamping unit (TSU)** has its own key, reserved exclusively for signing time-stamp tokens, generated and stored in a certified cryptographic module. - The usage period of TSU keys is shorter than the validity of their certificate, in accordance with ETSI EN 319 421, so that tokens issued at the end of the period remain verifiable. - The future **qualified CAs** for seals, signatures and attestations (see § 6.1, phase 5) will be attached to this same qualified root, each under an intermediate CA dedicated to a single use. -- The future TLS certificate service (see § 2.4) relies on **two roots distinct** from the qualified time-stamping root: a **WebTrust root**, intended for the trust stores of operating systems and browsers, and a **QWAC root**, listed on the European trusted list. They apply the same governance principles (air gap, quorum, ceremonies) and share no key with the time-stamping, seal or signature CAs. +- The future TLS certificate service (see § 2.4) relies on **two roots distinct** from the qualified time-stamping root ([figure 2](#figure-2)): a **WebTrust root**, intended for the trust stores of operating systems and browsers, and a **QWAC root**, listed on the European trusted list. They apply the same governance principles (air gap, quorum, ceremonies) and share no key with the time-stamping, seal or signature CAs. -
+
OTSPI TLS certification hierarchiesTwo separate roots: a WebTrust root for browser stores, and a QWAC root listed on the European trusted list. The WebTrust root certifies a DV sub-CA, which issues DV server certificates through instant ACME. A hybrid OV / QWAC sub-CA, holding a single key, is certified by the WebTrust root and, through cross-signing, by the QWAC root; it issues OV / QWAC certificates.cross-signingWebTrust rootOS and browser storesQWAC rootEuropean trusted listDV sub-CAWebTrust only · standard HSMHybrid OV / QWAC sub-CAone key · two CA certificatesDV server certificatesgeneral Web use · instant ACMEOV / QWAC server certificatesPSD2, eIDAS · ACME with account binding +
Figure 2 — OTSPI TLS certification hierarchies
diff --git a/mkdocs.yml b/mkdocs.yml index f72dab9..e7f5a42 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -37,7 +37,8 @@ theme: favicon: assets/favicon.svg icon: repo: fontawesome/brands/github - # Polices du système : aucune requête vers Google Fonts (l'adresse IP du visiteur y serait transmise) + # Pas de Google Fonts (l'adresse IP du visiteur y serait transmise) : la police Inter est + # auto-hébergée (stylesheets/fonts.css) font: false features: - navigation.tabs @@ -61,6 +62,7 @@ extra_javascript: - javascripts/analytics.js?v=2 extra_css: + - stylesheets/fonts.css - stylesheets/extra.css - stylesheets/print.css diff --git a/scripts/build_diagrams.py b/scripts/build_diagrams.py index a9cc949..debf1ed 100644 --- a/scripts/build_diagrams.py +++ b/scripts/build_diagrams.py @@ -112,8 +112,10 @@ def tls(t, uid): return "".join(parts) -def figure(svg): - return f'
\n{svg}\n
' +def figure(svg, number, title): + """Enveloppe un schéma dans une figure légendée et numérotée, ancrée sur #figure-N pour les renvois.""" + return (f'
\n{svg}\n' + f'
Figure {number} — {escape(title)}
\n
') def replace_block(text, name, block): @@ -126,8 +128,8 @@ def main(): for lang, path in (("fr", "docs/livre-blanc/index.md"), ("en", "docs/white-paper/index.md")): page = ROOT / path text = page.read_text(encoding="utf-8") - text = replace_block(text, "hierarchy", figure(hierarchy(TEXT[lang], f"{lang}-h"))) - text = replace_block(text, "tls", figure(tls(TEXT[lang], f"{lang}-t"))) + text = replace_block(text, "hierarchy", figure(hierarchy(TEXT[lang], f"{lang}-h"), 1, TEXT[lang]["h_title"])) + text = replace_block(text, "tls", figure(tls(TEXT[lang], f"{lang}-t"), 2, TEXT[lang]["t_title"])) page.write_text(text, encoding="utf-8") print(f"{path} : schémas régénérés") diff --git a/scripts/export_pdf.py b/scripts/export_pdf.py index 0c429e7..a033bce 100644 --- a/scripts/export_pdf.py +++ b/scripts/export_pdf.py @@ -88,15 +88,15 @@ def print_pdf(url, output): .dg-box{fill:#fff;stroke:#b8bcc4;stroke-width:1.5} .dg-root{fill:#e8eefc;stroke:#1a3d8f;stroke-width:2} .dg-future{fill:none;stroke:#6b7280;stroke-width:1.5;stroke-dasharray:6 5} -.dg-t{fill:#1f2937;font-size:12.5px;font-weight:700;font-family:sans-serif} -.dg-s{fill:#4b5563;font-size:12px;font-family:sans-serif} +.dg-t{fill:#1f2937;font-size:12.5px;font-weight:700;font-family:Inter,sans-serif} +.dg-s{fill:#4b5563;font-size:12px;font-family:Inter,sans-serif} .dg-edge,.dg-cross{fill:none;stroke-width:1.8} .dg-edge{stroke:#4b5563} .dg-dash{stroke-dasharray:5 5} .dg-cross{stroke:#1a3d8f;stroke-dasharray:7 5} .dg-arrow{fill:#4b5563} .dg-arrow-cross{fill:#1a3d8f} -.dg-label{fill:#1a3d8f;font-size:12px;font-weight:700;font-family:sans-serif} +.dg-label{fill:#1a3d8f;font-size:12px;font-weight:700;font-family:Inter,sans-serif} """ diff --git a/scripts/pdf-weasyprint.css b/scripts/pdf-weasyprint.css index b04169d..5cd7079 100644 --- a/scripts/pdf-weasyprint.css +++ b/scripts/pdf-weasyprint.css @@ -118,3 +118,27 @@ body { content: leader(".") target-counter(attr(href url), page); color: #64748b; } + +/* Signets du PDF : sections et annexes au premier niveau, sous-sections repliées. Le titre et le + sous-titre masqués n'en produisent pas : la page de garde et le titre du document en tiennent lieu. */ +.wp-cover ~ h1, +.wp-cover ~ h1 + h2 { + bookmark-level: none !important; +} + +.md-typeset .wp-toc h3, +.md-typeset .wp-cover ~ h2 { + bookmark-level: 1; +} + +.md-typeset .wp-cover ~ h2 { + bookmark-state: closed; +} + +.md-typeset .wp-cover ~ h3 { + bookmark-level: 2; +} + +.md-typeset .wp-cover ~ h4 { + bookmark-level: 3; +} From 619b5502159be04ece5c9c789337115612cb7d5e Mon Sep 17 00:00:00 2001 From: Philippe Vienne Date: Sun, 27 Sep 2026 09:54:37 +0200 Subject: [PATCH 3/6] =?UTF-8?q?ci:=20v=C3=A9rification=20des=20pull=20requ?= =?UTF-8?q?ests=20(build=20strict,=20PDF,=20PDF/UA-1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mêmes étapes de construction que le déploiement, sans déploiement ni secret : build strict, export des PDF du livre blanc, validation veraPDF, liste des polices embarquées et PDF joints en artefact pour relecture. Co-authored-by: Claude --- .github/workflows/check-pr.yml | 69 ++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/check-pr.yml diff --git a/.github/workflows/check-pr.yml b/.github/workflows/check-pr.yml new file mode 100644 index 0000000..becdeb1 --- /dev/null +++ b/.github/workflows/check-pr.yml @@ -0,0 +1,69 @@ +name: Vérification des pull requests (build et PDF) + +# Mêmes étapes de construction que le déploiement, sans déploiement ni secret : +# le site et les PDF du livre blanc sont validés avant fusion, et les PDF joints en artefact pour relecture. + +on: + pull_request: + branches: ["main"] + +concurrency: + group: "check-pr-${{ github.event.pull_request.number }}" + cancel-in-progress: true + +permissions: + contents: read + +jobs: + check: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt -r requirements-pdf.txt + sudo apt-get update + sudo apt-get install -y libpango-1.0-0 libpangoft2-1.0-0 poppler-utils + + - name: Build documentation + run: mkdocs build --strict + + - name: Export whitepaper PDF + run: python scripts/export_pdf.py + + - name: Cache veraPDF + uses: actions/cache@v4 + with: + path: ~/.cache/verapdf + key: verapdf-1.30.2 + + - name: Validate PDF/UA-1 + run: bash scripts/check_pdf_ua.sh + + # Polices embarquées : Inter pour le texte ; toute autre police signale un glyphe absent d'Inter + - name: List embedded fonts + run: | + for pdf in site/livre-blanc/otspi-livre-blanc.pdf site/white-paper/otspi-white-paper.pdf; do + echo "== $pdf" + pdffonts "$pdf" + done + + - name: Upload PDF + uses: actions/upload-artifact@v4 + with: + name: livre-blanc-pdf + path: | + site/livre-blanc/otspi-livre-blanc.pdf + site/white-paper/otspi-white-paper.pdf + retention-days: 14 From 89eec4b0e589e04e9bfdc8bdd607571922ab6fcc Mon Sep 17 00:00:00 2001 From: Philippe Vienne Date: Sun, 27 Sep 2026 09:56:33 +0200 Subject: [PATCH 4/6] fix(portail): police de repli Inter pour le texte du logo de couverture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sans Ubuntu Sans ni Liberation Sans (cas du runner GitHub), le texte du logo tombait sur DejaVu Sans, plus large : la signature débordait et était rognée sur la couverture du PDF. WeasyPrint trouve Inter via @font-face ; les navigateurs, qui affichent le SVG comme une image, restent inchangés. Co-authored-by: Claude --- docs/assets/logo-vertical-dark.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/assets/logo-vertical-dark.svg b/docs/assets/logo-vertical-dark.svg index f79ceb3..ceab211 100644 --- a/docs/assets/logo-vertical-dark.svg +++ b/docs/assets/logo-vertical-dark.svg @@ -25,10 +25,10 @@ stroke-width="14.40" stroke-linecap="round" stroke-linejoin="round" /> - + OTSPI - + OPEN TRUSTED SERVICE PROVIDER INITIATIVE From c08816df70324b6a1cbcfa524a93ee35b5000f27 Mon Sep 17 00:00:00 2001 From: Philippe Vienne Date: Sun, 27 Sep 2026 11:49:16 +0200 Subject: [PATCH 5/6] =?UTF-8?q?feat(portail):=20charte=20bleu=20nuit=20et?= =?UTF-8?q?=20page=20d'accueil=20repens=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Palette personnalisée aux couleurs du logo : en-tête et onglets bleu nuit, liens bleus, accent bleu ciel en thème sombre. - Titres sombres et gras sur tout le site, encadrés plus lisibles, cartes plus sobres ; plus de mention « Made with Material for MkDocs ». - Accueil : bandeau pleine largeur (overrides/home.html), engagements illustrés de pictogrammes au lieu d'emojis, cartes de documentation en deux colonnes, encadré [!NOTE] et liste réparés. - Organigramme de gouvernance en SVG local (scripts/build_diagrams.py), lisible dans les deux thèmes : le portail ne charge plus Mermaid depuis un service tiers. - Titres et navigation en casse française, sans emojis. Co-authored-by: Claude --- docs/cadrage/index.md | 6 +- docs/index.md | 134 +++++------- docs/reunions/index.md | 6 +- docs/stylesheets/extra.css | 436 ++++++++++++++++++++++++------------- mkdocs.yml | 39 ++-- overrides/home.html | 30 +++ scripts/build_diagrams.py | 63 +++++- 7 files changed, 457 insertions(+), 257 deletions(-) create mode 100644 overrides/home.html diff --git a/docs/cadrage/index.md b/docs/cadrage/index.md index f03d2d2..59896ee 100644 --- a/docs/cadrage/index.md +++ b/docs/cadrage/index.md @@ -6,7 +6,7 @@ Ce dossier rassemble l'ensemble des documents de cadrage stratégique, réglemen --- -## 🏛️ Le Socle de Conformité Initial (Corpus d'Audit) +## Le socle de conformité initial (corpus d'audit) 1. **[Cadre Général des Politiques de Certification et Pratiques (CP/CPS)](cp-cps-cadre.md)** : - Document maître conforme à la **RFC 3647**, à l'**ETSI EN 319 401**, à l'**ETSI EN 319 411-1 / 411-2** et aux exigences **WebTrust / CA/Browser Forum** ; @@ -28,7 +28,7 @@ Ce dossier rassemble l'ensemble des documents de cadrage stratégique, réglemen --- -## 🧭 Documents Complémentaires de Cadrage +## Documents complémentaires de cadrage - **[Livre blanc](../livre-blanc/index.md)** : vision et modèle d'intérêt général à but non lucratif inspiré de l'ISRG / Let's Encrypt appliqué aux services qualifiés eIDAS. - **[Manifeste pour une identité numérique libre et ouverte](https://www.otspi.org/manifeste.html)** : dix principes ouverts à la signature des personnes et des organisations. @@ -37,7 +37,7 @@ Ce dossier rassemble l'ensemble des documents de cadrage stratégique, réglemen --- -## 🔒 Principes d'Auditabilité et Sécurité +## Principes d'auditabilité et de sécurité - Tous les documents de cadrage normatifs sont publics et consultables en libre accès dans le cadre de la redevabilité publique intégrale ; - Les seules exceptions concernent les secrets cryptographiques matériels (clés sous séquestre HSM) et les embargos temporaires de sécurité sur les vulnérabilités non corrigées (*Coordinated Vulnerability Disclosure*). diff --git a/docs/index.md b/docs/index.md index 7f54fdb..18242f1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,106 +1,95 @@ --- title: "OTSPI — Open Trusted Service Provider Initiative" description: "Portail officiel de gouvernance, statuts, conformité et documentation d'intérêt général pour la confiance numérique européenne." +template: home.html hide: - navigation - toc --- -
+ -:material-shield-check: Association d'intérêt général (loi 1901) en cours de constitution +
-# Open Trusted Service Provider Initiative +
+:material-bank-outline:{ .otspi-feature__icon } -

-Construire, opérer et pérenniser des infrastructures de confiance numérique ouvertes, souveraines et universellement accessibles, conformes aux standards eIDAS 2.0, ETSI et WebTrust sous gouvernance strictement désintéressée. -

+

100 % intérêt général

-
-[:material-book-open-page-variant: Consulter le projet de statuts](statuts/statuts-association.md){ .md-button .md-button--primary } -[:material-draw-pen: Signer le Manifeste](https://www.otspi.org/manifeste.html){ .md-button } -[:material-github: Dépôt GitHub](https://github.com/otspi/organisation){ .md-button target="_blank" } +Gestion désintéressée, bénévolat strict des dirigeants, inaliénabilité des logiciels libres et des marques.
-
+
+:material-certificate-outline:{ .otspi-feature__icon } -
+

eIDAS 2.0 et ETSI

-
-🏛️ -
100% Intérêt Général
-

Gestion désintéressée, bénévolat strict des dirigeants, inaliénabilité des logiciels libres et des marques.

+Services de confiance qualifiés : horodatage, signature, scellement et archivage probatoire sous audit CAB.
-
-🇪🇺 -
eIDAS 2.0 & ETSI
-

Services de confiance qualifiés : horodatage, signature, scellement et archivage probatoire sous audit CAB.

-
+
+:material-scale-balance:{ .otspi-feature__icon } -
-⚖️ -
Séparation des Devoirs
-

Indépendance absolue du Comité des Politiques de Confiance (CPC) vis-à-vis du Bureau exécutif.

-
+

Séparation des devoirs

-
-🔍 -
Redevabilité Intégrale
-

Transparence totale des PV, budgets prévisionnels, rapports d'audit et politiques de certification (CP/CPS).

+Indépendance absolue du Comité des Politiques de Confiance (CPC) vis-à-vis du Bureau exécutif.
+
+:material-magnify-scan:{ .otspi-feature__icon } + +

Redevabilité intégrale

+ +Transparence totale des PV, budgets prévisionnels, rapports d'audit et politiques de certification (CP/CPS).
---- +
-## 📚 Explorer la Documentation et les Textes Fondateurs +## Explorer la documentation et les textes fondateurs -
+
-- :material-scale-balance:{ .lg .middle } __Statuts & Gouvernance__ +- :material-scale-balance:{ .lg .middle } __Statuts et gouvernance__ --- Le projet de statuts constitutifs, soumis au vote de l'assemblée générale constitutive, fondé sur l'intérêt général (CGI art. 200 & 238 bis), la gestion désintéressée et la séparation stricte des devoirs. [:octicons-arrow-right-24: Consulter le projet de statuts](statuts/statuts-association.md) - [:octicons-arrow-right-24: Charte d'Éthique & Déontologie](gouvernance/charte-ethique.md) - [:octicons-arrow-right-24: Organisation Technique & CPC](gouvernance/comite-technique.md) + [:octicons-arrow-right-24: Charte d'éthique et de déontologie](gouvernance/charte-ethique.md) + [:octicons-arrow-right-24: Organisation technique et CPC](gouvernance/comite-technique.md) -- :material-book-open-page-variant:{ .lg .middle } __Règlement Intérieur__ +- :material-book-open-page-variant:{ .lg .middle } __Règlement intérieur__ --- Fonctionnement opérationnel : cursus d'habilitation des Officiers d'Autorité, clés matérielles FIPS/ANSSI et règles de fonctionnement de l'association. - [:octicons-arrow-right-24: Règlement Intérieur](reglement-interieur/reglement-interieur.md) + [:octicons-arrow-right-24: Règlement intérieur](reglement-interieur/reglement-interieur.md) -- :material-certificate:{ .lg .middle } __Socle de Conformité (TSP / PKI)__ +- :material-certificate:{ .lg .middle } __Socle de conformité (TSP / PKI)__ --- Le référentiel d'audit initial conforme aux normes eIDAS, ETSI et WebTrust : Cadre CP/CPS (RFC 3647), Politique de Sécurité (PSSI) et Fin d'Activité. - [:octicons-arrow-right-24: Cadre Général CP/CPS](cadrage/cp-cps-cadre.md) - [:octicons-arrow-right-24: Politique de Sécurité (PSSI ISO 27001)](cadrage/pssi.md) - [:octicons-arrow-right-24: Plan de Fin d'Activité (Termination Plan)](cadrage/termination-plan.md) + [:octicons-arrow-right-24: Cadre général CP/CPS](cadrage/cp-cps-cadre.md) + [:octicons-arrow-right-24: Politique de sécurité (PSSI ISO 27001)](cadrage/pssi.md) + [:octicons-arrow-right-24: Plan de fin d'activité (Termination Plan)](cadrage/termination-plan.md) -- :material-file-document-outline:{ .lg .middle } __Démarches Légales & Fiscales__ +- :material-file-document-outline:{ .lg .middle } __Démarches légales et fiscales__ --- Dossier juridique complet : Procès-Verbal de l'AG Constitutive, demande formelle de rescrit fiscal mécénat DGFIP et guide d'immatriculation. - [:octicons-arrow-right-24: Procès-Verbal Constitutif (Modèle)](administratif/pv-ag-constitutive-modele.md) - [:octicons-arrow-right-24: Dossier de Rescrit Fiscal DGFIP](administratif/rescrit-fiscal-mecenat.md) - [:octicons-arrow-right-24: Guide Préfecture (RNA, SIRET)](administratif/declaration-prefecture.md) + [:octicons-arrow-right-24: Procès-verbal constitutif (modèle)](administratif/pv-ag-constitutive-modele.md) + [:octicons-arrow-right-24: Dossier de rescrit fiscal DGFIP](administratif/rescrit-fiscal-mecenat.md) + [:octicons-arrow-right-24: Guide préfecture (RNA, SIRET)](administratif/declaration-prefecture.md)
---- - -## 🏛️ La Confiance Numérique comme Bien Commun +## La confiance numérique comme bien commun L'association **« Open Trusted Service Provider Initiative » (OTSPI)**, en cours de constitution, a pour but d'intérêt général de lever les barrières économiques, techniques, administratives et éducatives à la sécurité, à la confidentialité et à la confiance numérique dans les communications électroniques mondiales. @@ -110,57 +99,32 @@ L'association **« Open Trusted Service Provider Initiative » (OTSPI)**, en cou * **Gestion strictement désintéressée** : Bénévolat strict des dirigeants, inaliénabilité des dépôts logiciels libres et des marques, absence de distribution d'actifs et réinvestissement intégral des excédents dans la mission d'intérêt général. * **Garantie de continuité opérationnelle** : Un fonds de réserve sanctuarisé garantit l'exécution intégrale du plan de fin d'activité (*Termination Plan*, maintien des listes de révocation CRL/OCSP pendant au moins 10 ans). ---- - -## ⚖️ Architecture de Gouvernance et Ségrégation des Fonctions +## Architecture de gouvernance et ségrégation des fonctions La gouvernance d'OTSPI applique une séparation stricte des devoirs conformément aux normes ETSI EN 319 401 et WebTrust : -```mermaid -flowchart TD - AG["Assemblée Générale (Titulaires & Sympathisants)"] --> CA["Conseil d'Administration (2 à 9 membres)"] - AG -.->|"Confirmation des nominations"| CPC["Comité des Politiques de Confiance (CPC / PMA)"] - CA --> Bureau["Bureau (Direction Opérationnelle - Executive Management)
Président, Trésorier, Secrétaire Général"] - - subgraph Normatif["Autorité Normative Cryptographique (Indépendante)"] - CPC -->|"Avis conforme CP/CPS & Cérémonies"| TSC["Comité Technique & Ingénierie (TSC)"] - CPC -->|"Désignation (1 an)"| RSSI["RSSI / CISO"] - CPC -->|"Habilitation & Contrôle"| OA["Officiers d'Autorité & Key Custodians"] - end - - subgraph Operationnel["Direction Opérationnelle & Exploitation"] - Bureau -->|"Mise en œuvre PSSI & Moyens"| TSC - Bureau -->|"Relations de gouvernance"| ANSSI["Autorités de Contrôle & Auditeurs (CAB)"] - end - - classDef blue fill:#2563eb,stroke:#1d4ed8,color:#fff; - classDef green fill:#059669,stroke:#047857,color:#fff; - classDef orange fill:#d97706,stroke:#b45309,color:#fff; - class AG,CA,Bureau blue; - class CPC,RSSI,OA green; - class TSC,ANSSI orange; -``` + +
+Organisation de la gouvernance d'OTSPIL'assemblée générale élit le conseil d'administration, qui désigne le bureau (direction opérationnelle) ; le bureau assure les relations avec les autorités de contrôle et les auditeurs. L'assemblée générale confirme aussi les nominations au comité des politiques de confiance (CPC), autorité normative indépendante du bureau, qui désigne le RSSI pour un an, habilite et contrôle les officiers d'autorité et rend un avis conforme sur les travaux du comité technique ; le bureau fournit à ce comité ses moyens.DIRECTION OPÉRATIONNELLEAUTORITÉ NORMATIVE INDÉPENDANTEconfirmation des nominationsAssemblée généraletitulaires et sympathisantsConseil d'administration2 à 9 membresBureauprésidence · trésorerie · secrétariatAutorités de contrôleet auditeurs (CAB)Comité des politiques de confianceCPC / PMAComité technique (TSC)avis CPC · moyens du BureauRSSI / CISOdésigné par le CPC, 1 anOfficiers d'autoritéet gardiens de clés +
+ 1. **Direction Opérationnelle (*Executive Management*)** : Assurée par le Bureau issu du Conseil d'Administration. Il porte la responsabilité juridique et financière, alloue les ressources de sécurité et assure les relations de gouvernance. 2. **Comité des Politiques de Confiance (CPC / PMA)** : Organe collégial indépendant garant de la rigueur cryptographique et normative. Il approuve les CP/CPS, valide les cérémonies de clés, supervise l'habilitation des Officiers d'Autorité et désigne le RSSI. **L'appartenance au Bureau est strictement incompatible avec le CPC.** 3. **Officiers d'Autorité & Gardiens de Clés (*Key Custodians*)** : Opérateurs habilités assurant sous contrôle à quatre yeux (*Dual Control*) les cérémonies de clés et disposant d'un pouvoir autonome de **révocation d'urgence** sans délai. ---- - -## 🔍 Redevabilité Publique Intégrale (*Public Accountability*) +## Redevabilité publique intégrale (*Public Accountability*) OTSPI applique un principe de **transparence radicale et d'auditabilité publique** : + - Ordres du jour, débats et comptes-rendus publics des réunions (CA, Bureau, Assemblées Générales, comités techniques) ; - Budgets prévisionnels, comptes annuels certifiés, rapports moraux et rapports d'évaluation d'audit (ETSI / eIDAS / WebTrust) ; - Dépôt public de l'ensemble des sources et des documents de gouvernance sur [GitHub : `otspi/organisation`](https://github.com/otspi/organisation). -> [!NOTE] -> **Réserves de protection légitimes :** -> Conformément à notre projet de statuts, les seules exceptions à la publication intégrale concernent la **protection des données personnelles (RGPD)** de nos membres et votants (données nominatives caviardées), les **secrets cryptographiques matériels** (clés protégées sous HSM) et l'**embargo temporaire de sécurité** lors du traitement coordonné de vulnérabilités critiques (*Coordinated Vulnerability Disclosure — CVD*). - ---- +!!! note "Réserves de protection légitimes" + Conformément à notre projet de statuts, les seules exceptions à la publication intégrale concernent la **protection des données personnelles (RGPD)** de nos membres et votants (données nominatives caviardées), les **secrets cryptographiques matériels** (clés protégées sous HSM) et l'**embargo temporaire de sécurité** lors du traitement coordonné de vulnérabilités critiques (*Coordinated Vulnerability Disclosure — CVD*). -## 📬 Contact & Adresses Officielles +## Contact et adresses officielles - **Contact unique (Informations, Partenariats, Sécurité)** : `contact@otspi.org` *(Pour le signalement de vulnérabilités / CVD : indiquer `[Sécurité]` en objet ou utiliser les [GitHub Private Security Advisories](https://github.com/otspi/organisation/security/advisories))* diff --git a/docs/reunions/index.md b/docs/reunions/index.md index 341658d..7cd1ae1 100644 --- a/docs/reunions/index.md +++ b/docs/reunions/index.md @@ -8,7 +8,7 @@ Toutes les réunions formelles de gouvernance font l'objet d'un ordre du jour pr --- -## 🏛️ Typologie des Réunions +## Typologie des réunions 1. **Assemblées Générales (AG)** : - Assemblée Générale Ordinaire (AGO) : Approbation des comptes, rapport moral, budget, renouvellement du CA, confirmation des membres du CPC. @@ -22,7 +22,7 @@ Toutes les réunions formelles de gouvernance font l'objet d'un ordre du jour pr --- -## 🛡️ Règles de Publication et Protection RGPD / Sécurité +## Règles de publication et protection RGPD / sécurité Avant toute publication publique d'un compte-rendu : @@ -35,7 +35,7 @@ Avant toute publication publique d'un compte-rendu : --- -## 📝 Modèle Type de Compte-Rendu Public +## Modèle type de compte-rendu public ```markdown # Compte-Rendu : [Conseil d'Administration / CPC / AG / TSC] du [AAAA-MM-JJ] diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 68ecc64..bb576cc 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,228 +1,364 @@ /* ========================================================================== - OTSPI Custom Styling — Modern, Trustworthy & Accessible + OTSPI — charte du portail + Bleu nuit du logo (#0b1120), bleu institutionnel, bleu ciel et jaune d'accent. ========================================================================== */ :root { + --otspi-navy: #0b1120; + --otspi-navy-2: #111a33; --otspi-primary: #1e40af; --otspi-primary-light: #3b82f6; - --otspi-accent: #0ea5e9; - --otspi-success: #10b981; - --otspi-warning: #f59e0b; + --otspi-sky: #38bdf8; + --otspi-gold: #fbbf24; --otspi-card-bg: #ffffff; - --otspi-card-border: rgba(226, 232, 240, 0.8); - --otspi-card-shadow: 0 4px 20px -2px rgba(0, 0, 0, 0.05); - --otspi-card-hover-shadow: 0 12px 28px -4px rgba(30, 64, 175, 0.12); + --otspi-card-border: #e2e8f0; + --otspi-card-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 4px 16px -6px rgba(15, 23, 42, 0.08); + --otspi-card-hover-shadow: 0 10px 28px -8px rgba(30, 64, 175, 0.22); +} + +/* Palette personnalisée de Material (primary: custom, accent: custom) */ +:root > * { + --md-primary-fg-color: #1e40af; + --md-primary-fg-color--light: #3b82f6; + --md-primary-fg-color--dark: #0b1120; + --md-primary-bg-color: #ffffff; + --md-primary-bg-color--light: rgba(255, 255, 255, 0.72); + --md-accent-fg-color: #0369a1; + --md-accent-fg-color--transparent: rgba(3, 105, 161, 0.1); + --md-typeset-a-color: #1d4ed8; } [data-md-color-scheme="slate"] { - --otspi-card-bg: #1e293b; - --otspi-card-border: rgba(51, 65, 85, 0.7); - --otspi-card-shadow: 0 4px 20px -2px rgba(0, 0, 0, 0.25); - --otspi-card-hover-shadow: 0 12px 28px -4px rgba(14, 165, 233, 0.15); + --md-hue: 225; + --otspi-card-bg: #161f36; + --otspi-card-border: rgba(148, 163, 184, 0.18); + --otspi-card-shadow: 0 4px 20px -6px rgba(0, 0, 0, 0.4); + --otspi-card-hover-shadow: 0 12px 28px -6px rgba(56, 189, 248, 0.18); +} + +[data-md-color-scheme="slate"] > * { + --md-accent-fg-color: #38bdf8; + --md-accent-fg-color--transparent: rgba(56, 189, 248, 0.12); +} + +/* -------------------------------------------------------------------------- + En-tête et onglets : bleu nuit du logo + -------------------------------------------------------------------------- */ +.md-header, +.md-tabs { + background-color: var(--otspi-navy); +} + +.md-header { + box-shadow: none; + border-bottom: 1px solid rgba(148, 163, 184, 0.14); +} + +.md-header--shadow { + box-shadow: 0 2px 12px rgba(2, 6, 23, 0.35); +} + +.md-header__button.md-logo { + display: flex !important; + align-items: center; + margin-right: 0.5rem; +} + +.md-header__button.md-logo img, +.md-header__button.md-logo svg { + height: 1.6rem !important; + width: auto !important; +} + +.md-tabs__link { + font-weight: 500; + opacity: 0.78; +} + +.md-tabs__item--active .md-tabs__link, +.md-tabs__link:hover { + opacity: 1; +} + +.md-tabs__item--active .md-tabs__link { + color: #ffffff; + box-shadow: inset 0 -2px 0 var(--otspi-sky); +} + +.md-search__form { + background-color: rgba(148, 163, 184, 0.14); + border-radius: 8px; +} + +/* -------------------------------------------------------------------------- + Titres : hiérarchie nette, sans le gris clair et la graisse légère de Material + -------------------------------------------------------------------------- */ +.md-typeset h1 { + color: var(--md-default-fg-color); + font-weight: 800; + line-height: 1.2; + letter-spacing: -0.02em; +} + +.md-typeset h2 { + font-weight: 700; + letter-spacing: -0.01em; +} + +.md-typeset h3 { + font-weight: 700; } /* -------------------------------------------------------------------------- - Hero Section + Accueil — bandeau pleine largeur (overrides/home.html) -------------------------------------------------------------------------- */ +/* Fond uni : le logo, qui porte son propre fond #0b1120, s'y fond sans cadre visible */ .otspi-hero { - text-align: center; - padding: clamp(2rem, 5vw, 3.5rem) 1rem clamp(1.5rem, 4vw, 2.5rem); - margin-bottom: 1.5rem; - position: relative; + background: var(--otspi-navy); + color: #e2e8f0; } -.otspi-badge { - display: inline-flex; +[data-md-color-scheme="slate"] .otspi-hero { + border-bottom: 1px solid rgba(148, 163, 184, 0.16); +} + +.otspi-hero__inner { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 2rem; align-items: center; - gap: 0.5rem; - padding: 0.35rem 0.9rem; - border-radius: 9999px; - font-size: clamp(0.72rem, 2vw, 0.82rem); - font-weight: 600; - letter-spacing: 0.025em; - background-color: rgba(59, 130, 246, 0.1); - color: var(--otspi-primary-light); - border: 1px solid rgba(59, 130, 246, 0.25); - margin-bottom: 1.25rem; + padding: clamp(2.2rem, 6vw, 4rem) 0.8rem clamp(2.4rem, 6vw, 4.2rem); +} + +.otspi-hero__kicker { + margin: 0 0 1rem; + color: var(--otspi-sky); + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.16em; text-transform: uppercase; - max-width: 100%; } -.otspi-hero h1 { - font-size: clamp(1.65rem, 5vw + 0.3rem, 2.5rem) !important; - font-weight: 800 !important; - line-height: 1.25 !important; - margin-bottom: 1rem !important; - letter-spacing: -0.02em; +.otspi-hero__title { + margin: 0; + color: #ffffff; + font-size: clamp(1.7rem, 4.2vw, 2.7rem); + font-weight: 800; + line-height: 1.12; + letter-spacing: -0.025em; } -.otspi-hero .subtitle { - font-size: clamp(0.95rem, 2vw + 0.2rem, 1.15rem); - line-height: 1.6; - max-width: 48rem; - margin: 0 auto 1.5rem; - color: var(--md-default-fg-color--light); +.otspi-hero__title::after { + content: ""; + display: block; + width: 3.2rem; + height: 0.22rem; + margin-top: 1.1rem; + border-radius: 1px; + background: var(--otspi-gold); +} + +.otspi-hero__lead { + max-width: 38rem; + margin: 1.2rem 0 0; + color: #cbd5e1; + font-size: clamp(0.85rem, 1.6vw, 0.98rem); + line-height: 1.65; +} + +.otspi-hero__lead strong { + color: #ffffff; } -.otspi-hero-actions { +.otspi-hero__actions { display: flex; - justify-content: center; - gap: 0.85rem; flex-wrap: wrap; - margin-top: 1.25rem; + gap: 0.7rem; + margin-top: 1.8rem; +} + +/* Hors de .md-typeset, Material ne donne aucun style de bouton : on les pose ici */ +.otspi-hero .md-button { + display: inline-block; + margin: 0; + border: 0.1rem solid rgba(226, 232, 240, 0.45); + color: #ffffff; + font-size: 0.72rem; + line-height: 1.4; + text-decoration: none; +} + +.otspi-hero .md-button:hover, +.otspi-hero .md-button:focus-visible { + border-color: #ffffff; + background-color: rgba(255, 255, 255, 0.08); + color: #ffffff; +} + +.otspi-hero .md-button--primary { + border-color: var(--otspi-sky) !important; + background-color: var(--otspi-sky) !important; + color: var(--otspi-navy) !important; + box-shadow: none !important; +} + +.otspi-hero .md-button--primary:hover, +.otspi-hero .md-button--primary:focus-visible { + border-color: #7dd3fc !important; + background-color: #7dd3fc !important; } -@media screen and (max-width: 600px) { - .otspi-hero-actions { - flex-direction: column; - align-items: stretch; - max-width: 300px; - margin: 1.25rem auto 0; +.otspi-hero__logo { + width: 13rem; + height: auto; +} + +@media screen and (max-width: 59.9844em) { + .otspi-hero__inner { + grid-template-columns: minmax(0, 1fr); } - .otspi-hero-actions .md-button { - width: 100%; + + .otspi-hero__logo { + display: none; + } +} + +@media screen and (max-width: 29.9844em) { + .otspi-hero__actions .md-button { + flex: 1 1 100%; text-align: center; - justify-content: center; } } /* -------------------------------------------------------------------------- - Key Stats / Value Pillars + Accueil — quatre engagements -------------------------------------------------------------------------- */ -.otspi-stats-grid { +.otspi-features { display: grid; - grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); - gap: 1.25rem; - margin: 2.5rem 0 3.5rem; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); + gap: 1rem; + margin: 0.4rem 0 2.6rem; } -.otspi-stat-card { - background: var(--otspi-card-bg); +.md-typeset .otspi-feature { + padding: 1.2rem 1.2rem 1rem; border: 1px solid var(--otspi-card-border); border-radius: 12px; - padding: 1.5rem 1.25rem; - text-align: center; + background: var(--otspi-card-bg); box-shadow: var(--otspi-card-shadow); - transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; + font-size: 0.72rem; + line-height: 1.55; } -.otspi-stat-card:hover { - transform: translateY(-3px); - border-color: var(--otspi-primary-light); - box-shadow: var(--otspi-card-hover-shadow); +.md-typeset .otspi-feature p { + margin: 0; + color: var(--md-default-fg-color--light); } -.otspi-stat-icon { - font-size: 1.75rem; - margin-bottom: 0.5rem; - display: inline-block; +.md-typeset .otspi-feature .otspi-feature__icon { + display: inline-flex; + width: 2.2rem; + height: 2.2rem; + margin-bottom: 0.8rem; + padding: 0.45rem; + border-radius: 10px; + background: var(--md-accent-fg-color--transparent); + color: var(--otspi-primary); } -.otspi-stat-title { - font-size: 1.05rem; - font-weight: 700; - margin-bottom: 0.35rem; - color: var(--md-default-fg-color); +.md-typeset .otspi-feature .otspi-feature__icon svg { + width: 100%; + height: 100%; + max-height: none; } -.otspi-stat-desc { +.md-typeset .otspi-feature p.otspi-feature__title { + margin: 0 0 0.35rem; + color: var(--md-default-fg-color); font-size: 0.85rem; - line-height: 1.4; - color: var(--md-default-fg-color--light); - margin: 0; + font-weight: 700; +} + +[data-md-color-scheme="slate"] .md-typeset .otspi-feature .otspi-feature__icon { + color: var(--otspi-sky); +} + +/* Titres de section de l'accueil */ +.md-content:has(.otspi-features) .md-typeset h2 { + margin-top: 2.4rem; + padding-top: 1.6rem; + border-top: 1px solid var(--md-default-fg-color--lightest); +} + +.md-content:has(.otspi-features) .md-typeset .otspi-features + h2 { + border-top: none; + padding-top: 0; +} + +/* Cartes de documentation : deux colonnes au plus, pas de carte orpheline */ +.md-typeset .grid.cards.otspi-docs { + grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); } /* -------------------------------------------------------------------------- - Material for MkDocs Cards Customization + Cartes Material -------------------------------------------------------------------------- */ .md-typeset .grid.cards > ul > li { background: var(--otspi-card-bg); border: 1px solid var(--otspi-card-border); - border-radius: 14px; - padding: 1.75rem; + border-radius: 12px; + padding: 1.4rem 1.5rem; box-shadow: var(--otspi-card-shadow); - transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), - box-shadow 0.25s cubic-bezier(0.16, 1, 0.3, 1), - border-color 0.25s ease; - position: relative; + transition: box-shadow 0.2s ease, border-color 0.2s ease; } .md-typeset .grid.cards > ul > li:hover { - transform: translateY(-4px); box-shadow: var(--otspi-card-hover-shadow); border-color: var(--otspi-primary-light); } .md-typeset .grid.cards > ul > li > hr { - margin: 1rem 0; - opacity: 0.2; + margin: 0.8rem 0; + opacity: 0.4; +} + +.md-typeset .grid.cards .lg { + color: var(--otspi-primary); +} + +[data-md-color-scheme="slate"] .md-typeset .grid.cards .lg { + color: var(--otspi-sky); } /* -------------------------------------------------------------------------- - Custom Buttons + Boutons -------------------------------------------------------------------------- */ .md-button { border-radius: 8px !important; font-weight: 600 !important; letter-spacing: 0.01em; - padding: 0.65em 1.5em !important; - transition: all 0.2s ease !important; + padding: 0.6em 1.3em !important; + transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease !important; } .md-button--primary { background-color: var(--otspi-primary) !important; border-color: var(--otspi-primary) !important; - box-shadow: 0 4px 14px rgba(30, 64, 175, 0.25) !important; } .md-button--primary:hover { - background-color: var(--otspi-primary-light) !important; - border-color: var(--otspi-primary-light) !important; - transform: translateY(-1px); - box-shadow: 0 6px 20px rgba(30, 64, 175, 0.35) !important; + background-color: #1e3a8a !important; + border-color: #1e3a8a !important; } /* -------------------------------------------------------------------------- - Mermaid Diagrams & Admonitions + Encadrés : Material les compose plus petit que le corps du texte -------------------------------------------------------------------------- */ -.mermaid { - background: var(--otspi-card-bg); - border: 1px solid var(--otspi-card-border); - border-radius: 12px; - padding: 1.5rem 1rem; - box-shadow: var(--otspi-card-shadow); - margin: 1.5rem 0 !important; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - max-width: 100%; -} - -.md-typeset .admonition { +.md-typeset .admonition, +.md-typeset details { border-radius: 10px; - box-shadow: var(--otspi-card-shadow); -} - -/* -------------------------------------------------------------------------- - Navigation & Header Refinements - -------------------------------------------------------------------------- */ -.md-header { - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); -} - -.md-header__button.md-logo { - display: flex !important; - align-items: center; - margin-right: 0.5rem; -} - -.md-header__button.md-logo img, -.md-header__button.md-logo svg { - height: 1.6rem !important; - width: auto !important; -} - -.md-tabs { - border-bottom: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: none; + font-size: 0.72rem; } /* -------------------------------------------------------------------------- @@ -308,12 +444,6 @@ color: var(--md-default-fg-color--light); } -/* Encadrés lisibles : Material les compose plus petit que le corps du texte */ -.md-typeset:has(> .wp-cover) .admonition, -.md-typeset:has(> .wp-cover) details { - font-size: 0.72rem; -} - /* Fiche d'identification du document : tableau clé / valeur sans ligne d'en-tête */ .md-typeset .wp-meta thead { display: none; @@ -412,6 +542,23 @@ margin: 0 auto; } +.md-typeset .wp-svg--wide { + max-width: 940px; +} + +/* Regroupements de l'organigramme de gouvernance (accueil) */ +.wp-svg .dg-group { + fill: var(--md-default-fg-color--lightest); + stroke: none; +} + +.wp-svg .dg-glabel { + fill: var(--md-default-fg-color--light); + font-size: 11px; + font-weight: 700; + letter-spacing: 0.08em; +} + .wp-svg .dg-box { fill: var(--md-default-bg-color); stroke: var(--md-default-fg-color--lighter); @@ -535,9 +682,6 @@ border-top-color: #8fb4ff; } -[data-md-color-scheme="slate"] .otspi-badge { - color: #9cc0ff; -} [data-md-color-scheme="slate"] .md-typeset a:not(.md-button):not(.headerlink):not(.md-annotation__index) { color: #8fb4ff; diff --git a/mkdocs.yml b/mkdocs.yml index e7f5a42..708c4c7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -16,20 +16,21 @@ theme: name: material custom_dir: overrides language: fr + # Couleurs de la charte OTSPI (bleu nuit du logo) : voir docs/stylesheets/extra.css palette: # Mode clair - media: "(prefers-color-scheme: light)" scheme: default - primary: indigo - accent: indigo + primary: custom + accent: custom toggle: icon: material/brightness-7 name: Passer au mode sombre # Mode sombre - media: "(prefers-color-scheme: dark)" scheme: slate - primary: indigo - accent: indigo + primary: custom + accent: custom toggle: icon: material/brightness-4 name: Passer au mode clair @@ -100,6 +101,8 @@ markdown_extensions: permalink: true extra: + # Pas de mention « Made with Material for MkDocs » en pied de page + generator: false social: - icon: fontawesome/brands/github link: https://github.com/otspi/organisation @@ -113,30 +116,30 @@ extra: nav: - Accueil: index.md - - Livre Blanc: + - Livre blanc: - Livre blanc (FR): livre-blanc/index.md - White Paper (EN): white-paper/index.md - Historique des versions: livre-blanc/historique.md - - Statuts & Gouvernance: + - Statuts et gouvernance: - Projet de statuts: statuts/statuts-association.md - - Charte d'Éthique: gouvernance/charte-ethique.md - - Organisation Technique & CPC: gouvernance/comite-technique.md - - Règlement Intérieur: - - Règlement Intérieur: reglement-interieur/reglement-interieur.md - - Démarches Administratives: - - Procès-Verbal Constitutif (Modèle): administratif/pv-ag-constitutive-modele.md - - Demande de Rescrit Fiscal DGFIP: administratif/rescrit-fiscal-mecenat.md + - Charte d'éthique: gouvernance/charte-ethique.md + - Organisation technique et CPC: gouvernance/comite-technique.md + - Règlement intérieur: + - Règlement intérieur: reglement-interieur/reglement-interieur.md + - Démarches administratives: + - Procès-verbal constitutif (modèle): administratif/pv-ag-constitutive-modele.md + - Demande de rescrit fiscal DGFIP: administratif/rescrit-fiscal-mecenat.md - Dossier de constitution: administratif/dossier-constitution.md - Résolution d'amorçage (CPC et Bureau): administratif/resolution-transitoire.md - - Guide Démarches Préfecture (RNA, SIRET): administratif/declaration-prefecture.md - - Socle Technique & Audit (TSP / PKI): + - Démarches en préfecture (RNA, SIRET): administratif/declaration-prefecture.md + - Socle technique et audit (TSP / PKI): - Vue d'ensemble: cadrage/index.md - Cadre CP/CPS (RFC 3647): cadrage/cp-cps-cadre.md - - Politique de Sécurité des SI (PSSI): cadrage/pssi.md - - Plan de Fin d'Activité (Termination Plan): cadrage/termination-plan.md + - Politique de sécurité des SI (PSSI): cadrage/pssi.md + - Plan de fin d'activité (Termination Plan): cadrage/termination-plan.md - Arc d'OID et numéro IANA: cadrage/oid-arc.md - Demandes de devis (audit, HSM, hébergement): cadrage/demandes-de-devis.md - Transparence: - Hébergements: reunions/hebergements.md - Hosting transparency (EN): reunions/hosting.md - - Registre des Réunions & PV: reunions/index.md + - Registre des réunions et PV: reunions/index.md diff --git a/overrides/home.html b/overrides/home.html new file mode 100644 index 0000000..39b6507 --- /dev/null +++ b/overrides/home.html @@ -0,0 +1,30 @@ +{% extends "main.html" %} + +{#- Page d'accueil : bandeau pleine largeur sous l'en-tête, puis le contenu de docs/index.md + sans le titre automatique ni les boutons d'édition. -#} + +{% block hero %} +
+ +
+{% endblock %} + +{% block content %} + {{ page.content }} +{% endblock %} diff --git a/scripts/build_diagrams.py b/scripts/build_diagrams.py index debf1ed..dc1cced 100644 --- a/scripts/build_diagrams.py +++ b/scripts/build_diagrams.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: EUPL-1.2 -"""Génère les deux schémas du livre blanc (hiérarchie qualifiée, hiérarchies TLS) en SVG intégré, -en français et en anglais, et les insère entre les marqueurs des pages du livre blanc. +"""Génère les schémas du portail en SVG intégré et les insère entre les marqueurs des pages : +les deux schémas du livre blanc (hiérarchie qualifiée, hiérarchies TLS), en français et en anglais, +et l'organigramme de gouvernance de la page d'accueil. Les schémas n'utilisent aucun script : ils remplacent des blocs Mermaid, dont la bibliothèque (environ 950 Ko, chargée depuis un service tiers) ralentissait fortement la page. @@ -112,6 +113,58 @@ def tls(t, uid): return "".join(parts) +GOVERNANCE = { + "title": "Organisation de la gouvernance d'OTSPI", + "desc": "L'assemblée générale élit le conseil d'administration, qui désigne le bureau (direction opérationnelle) ; " + "le bureau assure les relations avec les autorités de contrôle et les auditeurs. L'assemblée générale confirme " + "aussi les nominations au comité des politiques de confiance (CPC), autorité normative indépendante du bureau, " + "qui désigne le RSSI pour un an, habilite et contrôle les officiers d'autorité et rend un avis conforme sur les " + "travaux du comité technique ; le bureau fournit à ce comité ses moyens.", + "ag": ("Assemblée générale", "titulaires et sympathisants"), + "ca": ("Conseil d'administration", "2 à 9 membres"), + "bureau": ("Bureau", "présidence · trésorerie · secrétariat"), + "cab": ("Autorités de contrôle", "et auditeurs (CAB)"), + "cpc": ("Comité des politiques de confiance", "CPC / PMA"), + "tsc": ("Comité technique (TSC)", "avis CPC · moyens du Bureau"), + "rssi": ("RSSI / CISO", "désigné par le CPC, 1 an"), + "oa": ("Officiers d'autorité", "et gardiens de clés"), + "left": "Direction opérationnelle", + "right": "Autorité normative indépendante", + "confirm": "confirmation des nominations", +} + + +def governance(t, uid): + parts = [ + f'', + f'{escape(t["title"])}{escape(t["desc"])}', + defs(uid), + '', + f'{escape(t["left"].upper())}', + '', + f'{escape(t["right"].upper())}', + f'', + f'', + f'{escape(t["confirm"])}', + f'', + f'', + f'', + f'', + f'', + f'', + box(330, 10, 240, 64, t["ag"], "dg-root"), + box(40, 110, 240, 64, t["ca"], "dg-box"), + box(30, 230, 260, 64, t["bureau"], "dg-box"), + box(30, 366, 260, 64, t["cab"], "dg-box"), + box(500, 230, 260, 64, t["cpc"], "dg-root"), + box(342, 366, 186, 64, t["tsc"], "dg-box"), + box(538, 366, 186, 64, t["rssi"], "dg-box"), + box(734, 366, 186, 64, t["oa"], "dg-box"), + '', + ] + return "".join(parts) + + def figure(svg, number, title): """Enveloppe un schéma dans une figure légendée et numérotée, ancrée sur #figure-N pour les renvois.""" return (f'
\n{svg}\n' @@ -133,6 +186,12 @@ def main(): page.write_text(text, encoding="utf-8") print(f"{path} : schémas régénérés") + home = ROOT / "docs/index.md" + text = replace_block(home.read_text(encoding="utf-8"), "governance", + f'
\n{governance(GOVERNANCE, "home-g")}\n
') + home.write_text(text, encoding="utf-8") + print("docs/index.md : organigramme régénéré") + if __name__ == "__main__": main() From b5d232f625687b8454f5741098d4570d29059f83 Mon Sep 17 00:00:00 2001 From: Philippe Vienne Date: Sun, 27 Sep 2026 11:52:06 +0200 Subject: [PATCH 6/6] chore(portail): retrait de la configuration Mermaid Plus aucune page n'utilise Mermaid depuis le passage de l'organigramme de l'accueil en SVG local. Co-authored-by: Claude --- docs/stylesheets/print.css | 1 - mkdocs.yml | 6 +----- scripts/export_pdf.py | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/docs/stylesheets/print.css b/docs/stylesheets/print.css index 06a3685..3ed4482 100644 --- a/docs/stylesheets/print.css +++ b/docs/stylesheets/print.css @@ -145,7 +145,6 @@ .md-typeset .admonition, .md-typeset details, .md-typeset pre, - .md-typeset .mermaid, .md-typeset tr, .md-typeset img { break-inside: avoid; diff --git a/mkdocs.yml b/mkdocs.yml index 708c4c7..90031b7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -82,11 +82,7 @@ markdown_extensions: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.details - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.superfences - pymdownx.highlight: anchor_linenums: true - pymdownx.inlinehilite diff --git a/scripts/export_pdf.py b/scripts/export_pdf.py index a033bce..291ccde 100644 --- a/scripts/export_pdf.py +++ b/scripts/export_pdf.py @@ -71,7 +71,7 @@ def print_pdf(url, output): f"--user-data-dir={profile}", "--no-pdf-header-footer", "--generate-pdf-document-outline", - # Laisse le temps au rendu des diagrammes Mermaid + # Laisse le temps au chargement complet de la page (polices, scripts) "--virtual-time-budget=20000", "--run-all-compositor-stages-before-draw", f"--print-to-pdf={output}",