diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/FUNDING.yml b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/FUNDING.yml
new file mode 100755
index 00000000..e52e73d8
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/FUNDING.yml
@@ -0,0 +1,3 @@
+# These are supported funding model platforms
+
+github: AmauriC
diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/stale.yml b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/stale.yml
new file mode 100755
index 00000000..a2068923
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/stale.yml
@@ -0,0 +1,18 @@
+# Number of days of inactivity before an issue becomes stale
+daysUntilStale: 20
+# Number of days of inactivity before a stale issue is closed
+daysUntilClose: 5
+# Issues with these labels will never be considered stale
+exemptLabels:
+ - pinned
+ - security
+ - active
+# Label to use when marking an issue as stale
+staleLabel: inactive
+# Comment to post when marking an issue as stale. Set to `false` to disable
+markComment: >
+ This issue has been automatically marked as inactive because it has not had
+ activity for 20 days. It will be closed in 5 days if no further activity occurs.
+ Thank you for your contributions.
+# Comment to post when closing a stale issue. Set to `false` to disable
+closeComment: false
diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/workflows/codeql-analysis.yml b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/workflows/codeql-analysis.yml
new file mode 100755
index 00000000..f23ecd78
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,67 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ master ]
+ schedule:
+ - cron: '23 21 * * 2'
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'javascript' ]
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
+ # Learn more:
+ # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
+
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.gitignore b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.gitignore
new file mode 100755
index 00000000..090a1f02
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/.gitignore
@@ -0,0 +1,2 @@
+.idea
+.DS_Store
diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/LICENSE b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/LICENSE
new file mode 100755
index 00000000..adde2264
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 AmauriC
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/README.md b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/README.md
new file mode 100755
index 00000000..0c916494
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/README.md
@@ -0,0 +1,145 @@
+
+[](https://www.jsdelivr.com/package/npm/tarteaucitronjs)
+[](https://www.npmjs.com/package/tarteaucitronjs) [](https://github.com/AmauriC/tarteaucitron.js/graphs/contributors) [](https://github.com/sponsors/AmauriC)
+
+
+
+
+👋 Hey, I'm Amauri, a french dev that build a GDPR friendly cookie manager.
+
+tarteaucitron was initially a simple script for my personal blog (in 2013), a few months later, the Github repository is opened and tarteaucitron is now reliable and recognized.
+
+The european cookie law regulates the management of cookies and you should ask your visitors their consent before exposing them to third party services.
+
+Clearly this script will:
+- Disable all services by default,
+- Display a banner on the first page view and a small one on other pages,
+- Display a panel to allow or deny each services one by one,
+- Store the consent in a cookie for 365 days.
+
+Bonus:
+- Load service when user click on Allow (without reload of the page),
+- Incorporate a fallback system (display a link instead of social button and a static banner instead of advertising).
+
+
+
+# How to use
+
+```html
+
+
+
+```
+
+# Add a service
+[Visit tarteaucitron.io](https://tarteaucitron.io/en/install/)
+
+# Customization
+
+## Create custom service
+```js
+tarteaucitron.services.mycustomservice = {
+ "key": "mycustomservice",
+ "type": "ads|analytic|api|comment|other|social|support|video",
+ "name": "MyCustomService",
+ "needConsent": true,
+ "cookies": ['cookie', 'cookie2'],
+ "readmoreLink": "/custom_read_more", // If you want to change readmore link
+ "js": function () {
+ "use strict";
+ // When user allow cookie
+ },
+ "fallback": function () {
+ "use strict";
+ // when use deny cookie
+ }
+};
+```
+
+## Events
+
+The following events are available:
+* (document) `{SERVICE_KEY}_added` for each enabled service
+* (document) `{SERVICE_KEY}_loaded` for each enabled service
+* (document) `{SERVICE_KEY}_allowed` for each service when allowed
+* (document) `{SERVICE_KEY}_disallowed ` for each service when disallowed
+
+* (window) `tac.root_available`: the root element with panel has been created, services will be loaded
+* (window) `tac.open_alert`
+* (window) `tac.close_alert`
+* (window) `tac.open_panel`
+* (window) `tac.close_panel`
+
+## Customize text
+
+To change a translation, use `tarteaucitronCustomText` variable. It will be merge with the translation shipping with TAC. This variable must be defined before the initialization. For example:
+```js
+tarteaucitronCustomText = {
+ 'support': {
+ 'title': 'Support client',
+ },
+ 'close': 'Enregistrer et fermer',
+};
+tarteaucitron.init(...);
+```
+
+There is a special case for engagement text. By the default, the engagement text is _{SERVICE_NAME} is disabled._, however you can change it per service. For example:
+```js
+tarteaucitronCustomText = {
+ 'engage-twitter': 'Follow us on Twitter!'
+};
+```
+
+# Thanks to the sponsors 😊
+
+| Be the first sponsor! |
+|:---:|
+
+# 600M on the pro version
+
+Every month, hundreds of millions of cookies 🍪 are placed after the user's consent or simply refused.
+
+[](https://www.jsdelivr.com/package/gh/AmauriC/tarteaucitron.js)
+
+# Used by all type of website
+
+Tarteaucitron has been around for years and is now used by thousands of companies, government sites, web agencies, ... 🦾
+
+[](https://trends.builtwith.com/widgets/tarteaucitron.js)
diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/advertising.js b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/advertising.js
new file mode 100755
index 00000000..813e11b2
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/advertising.js
@@ -0,0 +1 @@
+tarteaucitronNoAdBlocker = true;
\ No newline at end of file
diff --git a/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/css/tarteaucitron.css b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/css/tarteaucitron.css
new file mode 100755
index 00000000..1ad944c2
--- /dev/null
+++ b/site_web/templates/frontOffice/boutique/assets-dist/js/vendors/tarteaucitron/css/tarteaucitron.css
@@ -0,0 +1,1012 @@
+.tac_visually-hidden {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap; /* added line */
+ border: 0;
+}
+
+div#tarteaucitronAlertBig:focus {outline: 0;}
+
+.tarteaucitron-modal-open{
+ overflow: hidden;
+ height: 100%;
+}
+
+#tarteaucitronContentWrapper {display:unset;}
+
+/** 14042021 **/
+span.tarteaucitronReadmoreSeparator {
+ display: inline!important;
+}
+/******/
+
+/** 09052021 **/
+.tarteaucitronName .tacCurrentStatus, .tarteaucitronName .tarteaucitronReadmoreSeparator {
+ color: #333!important;
+ font-size: 12px!important;
+ text-transform: capitalize;
+}
+/**************/
+
+/** 27032021 **/
+button.tarteaucitron-toggle-group {
+ display: block;
+}
+span.tarteaucitronH3 {
+ font-weight: 700!important;
+}
+#tarteaucitron #tarteaucitronServices_mandatory .tarteaucitronH3 {
+ font-weight: 500!important;
+ font-size: 14px;
+ margin-top: 7px;
+}
+.tarteaucitronLine {
+ border-left: 0px solid transparent!important;
+}
+/*****/
+
+/** BETTER MOBILE MODE **/
+@media screen and (max-width: 767px) {
+
+ html body #tarteaucitronRoot #tarteaucitron ul#tarteaucitronServices_mandatory .tarteaucitronDeny {
+ display: none!important;
+ }
+
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronBorder button,
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronAsk,
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronName {
+ width:100%!important;
+ display: block!important;
+ margin-left: 0!important;
+ margin-right: 0!important;
+ box-sizing: border-box!important;
+ max-width: 100%!important;
+ margin-bottom: 8px!important;
+ }
+
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronBorder ul .tarteaucitronLine {
+ padding: 16px!important;
+ }
+
+ html body #tarteaucitronRoot #tarteaucitron div#tarteaucitronMainLineOffset .tarteaucitronName {
+ display: none!important;
+ }
+
+ #tarteaucitronServices_mandatory li.tarteaucitronLine .tarteaucitronName span {
+ width: 100%!important;
+ display: inline-block;
+ }
+ li.tarteaucitronLine .tarteaucitronName span {
+ width: 80%!important;
+ display: inline-block;
+ }
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronBorder button.tarteaucitron-toggle-group {
+ width: 10%!important;
+ position: absolute;
+ top: 20px;
+ right: 20px;
+ font-size: 0px;
+ padding: 10px 0;
+ }
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronBorder button.tarteaucitron-toggle-group:before {
+ content: '\0025BE';
+ font-weight:700;
+ font-size: 14px;
+ }
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronBorder .tarteaucitronIsExpanded button.tarteaucitron-toggle-group:before {
+ content: '\0025B4';
+ }
+}
+@media screen and (min-width: 768px) {
+
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronBorder button.tarteaucitron-toggle-group:after {
+ content: '\0025BE';
+ font-weight:700;
+ font-size: 14px;
+ margin-left: 15px;
+ }
+ html body #tarteaucitronRoot #tarteaucitron .tarteaucitronBorder .tarteaucitronIsExpanded button.tarteaucitron-toggle-group:after {
+ content: '\0025B4';
+ margin-left: 15px;
+ }
+}
+/****/
+
+
+
+/***
+* Reset CSS
+*/
+#tarteaucitronRoot div, #tarteaucitronRoot span, #tarteaucitronRoot applet, #tarteaucitronRoot object, #tarteaucitronRoot iframe, #tarteaucitronRoot h1, #tarteaucitronRoot h2, #tarteaucitronRoot h3, #tarteaucitronRoot h4, #tarteaucitronRoot h5, #tarteaucitronRoot h6, #tarteaucitronRoot p, #tarteaucitronRoot blockquote, #tarteaucitronRoot pre, #tarteaucitronRoot a, #tarteaucitronRoot abbr, #tarteaucitronRoot acronym, #tarteaucitronRoot address, #tarteaucitronRoot big, #tarteaucitronRoot cite, #tarteaucitronRoot code, #tarteaucitronRoot del, #tarteaucitronRoot dfn, #tarteaucitronRoot em, #tarteaucitronRoot img, #tarteaucitronRoot ins, #tarteaucitronRoot kbd, #tarteaucitronRoot q, #tarteaucitronRoot s, #tarteaucitronRoot samp, #tarteaucitronRoot small, #tarteaucitronRoot strike, #tarteaucitronRoot strong, #tarteaucitronRoot sub, #tarteaucitronRoot sup, #tarteaucitronRoot tt, #tarteaucitronRoot var, #tarteaucitronRoot b, #tarteaucitronRoot u, #tarteaucitronRoot i, #tarteaucitronRoot center, #tarteaucitronRoot dl, #tarteaucitronRoot dt, #tarteaucitronRoot dd, #tarteaucitronRoot ol, #tarteaucitronRoot ul, #tarteaucitronRoot li, #tarteaucitronRoot fieldset, #tarteaucitronRoot form, #tarteaucitronRoot label, #tarteaucitronRoot legend, #tarteaucitronRoot table, #tarteaucitronRoot caption, #tarteaucitronRoot tbody, #tarteaucitronRoot tfoot, #tarteaucitronRoot thead, #tarteaucitronRoot tr, #tarteaucitronRoot th, #tarteaucitronRoot td, #tarteaucitronRoot article, #tarteaucitronRoot aside, #tarteaucitronRoot canvas, #tarteaucitronRoot details, #tarteaucitronRoot embed, #tarteaucitronRoot figure, #tarteaucitronRoot figcaption, #tarteaucitronRoot footer, #tarteaucitronRoot header, #tarteaucitronRoot hgroup, #tarteaucitronRoot menu, #tarteaucitronRoot nav, #tarteaucitronRoot output, #tarteaucitronRoot ruby, #tarteaucitronRoot section, #tarteaucitronRoot summary, #tarteaucitronRoot time, #tarteaucitronRoot mark, #tarteaucitronRoot audio, #tarteaucitronRoot video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+ /*background: initial;*/
+ text-align: initial;
+ text-shadow: initial;
+}
+
+/* Animation */
+#tarteaucitronRoot * {transition: border 300ms, background 300ms, opacity 200ms, box-shadow 400ms}
+
+/* HTML5 display-role reset for older browsers */
+#tarteaucitronRoot article, #tarteaucitronRoot aside, #tarteaucitronRoot details, #tarteaucitronRoot figcaption, #tarteaucitronRoot figure, #tarteaucitronRoot footer, #tarteaucitronRoot header, #tarteaucitronRoot hgroup, #tarteaucitronRoot menu, #tarteaucitronRoot nav, #tarteaucitronRoot section {
+ display: block;
+}
+#tarteaucitronRoot ol, #tarteaucitronRoot ul {
+ list-style: none;
+}
+#tarteaucitronRoot blockquote, #tarteaucitronRoot q {
+ quotes: none;
+}
+#tarteaucitronRoot blockquote:before, #tarteaucitronRoot blockquote:after, #tarteaucitronRoot q:before, #tarteaucitronRoot q:after {
+ content: '';
+ content: none;
+}
+#tarteaucitronRoot table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+#tarteaucitronRoot a:focus-visible, #tarteaucitronRoot button:focus-visible {
+ outline: 3px dashed #3d86d8;
+}
+
+/***
+ * Better scroll management
+ */
+div#tarteaucitronMainLineOffset {
+ margin-top: 0!important;
+}
+
+div#tarteaucitronServices {
+ margin-top: 21px!important;
+}
+
+#tarteaucitronServices::-webkit-scrollbar {
+ width: 5px;
+}
+
+#tarteaucitronServices::-webkit-scrollbar-track {
+ -webkit-box-shadow: inset 0 0 0 rgba(0,0,0,0);
+}
+
+#tarteaucitronServices::-webkit-scrollbar-thumb {
+ background-color: #ddd;
+ outline: 0px solid slategrey;
+}
+
+div#tarteaucitronServices {
+ box-shadow: 0 40px 60px #545454;
+}
+
+/***
+ * Responsive layout for the control panel
+ */
+@media screen and (max-width:479px) {
+ #tarteaucitron .tarteaucitronLine .tarteaucitronName {
+ width: 90% !important;
+ }
+
+ #tarteaucitron .tarteaucitronLine .tarteaucitronAsk {
+ float: left !important;
+ margin: 10px 15px 5px;
+ }
+}
+
+@media screen and (max-width:767px) {
+ #tarteaucitronAlertSmall #tarteaucitronCookiesListContainer, #tarteaucitron {
+ background: #fff;
+ border: 0 !important;
+ bottom: 0 !important;
+ height: 100% !important;
+ left: 0 !important;
+ margin: 0 !important;
+ max-height: 100% !important;
+ max-width: 100% !important;
+ top: 0 !important;
+ width: 100% !important;
+ }
+
+ #tarteaucitron .tarteaucitronBorder {
+ border: 0 !important;
+ }
+
+ #tarteaucitronAlertSmall #tarteaucitronCookiesListContainer #tarteaucitronCookiesList {
+ border: 0 !important;
+ }
+
+ #tarteaucitron #tarteaucitronServices .tarteaucitronTitle {
+ text-align: left !important;
+ }
+
+ .tarteaucitronName .tarteaucitronH2 {
+ max-width: 80%;
+ }
+
+ #tarteaucitron #tarteaucitronServices .tarteaucitronLine .tarteaucitronAsk {
+ text-align: center !important;
+ }
+
+ #tarteaucitron #tarteaucitronServices .tarteaucitronLine .tarteaucitronAsk button {
+ margin-bottom: 5px;
+ }
+}
+
+@media screen and (min-width:768px) and (max-width:991px) {
+ #tarteaucitron {
+ border: 0 !important;
+ left: 0 !important;
+ margin: 0 5% !important;
+ max-height: 80% !important;
+ width: 90% !important;
+ }
+}
+
+/***
+ * Common value
+ */
+#tarteaucitronRoot div#tarteaucitron {
+ left: 0;
+ right: 0;
+ margin: auto;
+}
+
+#tarteaucitronRoot button#tarteaucitronBack {
+ background: #eee;
+}
+
+#tarteaucitron .clear {
+ clear: both;
+}
+
+#tarteaucitron a {
+ color: rgb(66, 66, 66);
+ font-size: 11px;
+ font-weight: 700;
+ text-decoration: none;
+}
+
+#tarteaucitronRoot button {
+ background: transparent;
+ border: 0;
+}
+
+#tarteaucitronAlertBig strong, #tarteaucitronAlertSmall strong,
+#tarteaucitronAlertBig a, #tarteaucitronAlertSmall a {
+ color: #fff;
+}
+
+#tarteaucitron strong {
+ font-size: 22px;
+ font-weight: 500;
+}
+
+#tarteaucitron ul {
+ padding: 0;
+}
+
+#tarteaucitron .tarteaucitronH1, #tarteaucitron .tarteaucitronH2, #tarteaucitron .tarteaucitronH3, #tarteaucitron .tarteaucitronH4, #tarteaucitron .tarteaucitronH5, #tarteaucitron .tarteaucitronH6 {
+ display: block;
+}
+
+.cookie-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+/***
+ * Root div added just before