diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c665f755e11..aceb93ab46e 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -18,7 +18,7 @@ jobs: - uses: ruby/setup-ruby@v1 with: - ruby-version: 3.3 + ruby-version: 3.1 bundler-cache: true - uses: actions/setup-node@v4 diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml new file mode 100644 index 00000000000..8cc3e0c6092 --- /dev/null +++ b/.github/workflows/jekyll.yml @@ -0,0 +1,68 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Ruby + uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0 + with: + ruby-version: "3.1" # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems + + - name: Install Dependencies + run: bundle install + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Build with Jekyll + # Outputs to the './_site' directory by default + run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: production + - name: Upload artifact + # Automatically uploads an artifact from the './_site' directory by default + uses: actions/upload-pages-artifact@v3 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 0082d90041b..5a5f8749677 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,5 @@ package-lock.json !.vscode/tasks.json # Misc -_sass/dist -assets/js/dist +#sass/dist +#assets/js/dist diff --git a/Gemfile b/Gemfile index e5415748ad5..13a971f262f 100644 --- a/Gemfile +++ b/Gemfile @@ -12,3 +12,6 @@ platforms :mingw, :x64_mingw, :mswin, :jruby do end gem "wdm", "~> 0.2.0", :platforms => [:mingw, :x64_mingw, :mswin] + +gem 'csv' +gem 'base64' \ No newline at end of file diff --git a/_config.yml b/_config.yml index 7a9b11a37d7..55d3f9a6e03 100644 --- a/_config.yml +++ b/_config.yml @@ -9,44 +9,44 @@ theme: jekyll-theme-chirpy lang: en # Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker -timezone: Asia/Shanghai +timezone: Asia/Seoul # jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md # ↓ -------------------------- -title: Chirpy # the main title +title: xmoonanx # the main title -tagline: A text-focused Jekyll theme # it will display as the subtitle +tagline: 무난하지 않게 # it will display as the subtitle description: >- # used by seo meta and the atom feed - A minimal, responsive and feature-rich Jekyll theme for technical writing. + xmoonanx's Tech Blog. # Fill in the protocol & hostname for your site. # E.g. 'https://username.github.io', note that it does not end with a '/'. -url: "" +url: "https://xmoonanx.github.io" github: - username: github_username # change to your GitHub username + username: xmoonanx # change to your GitHub username -twitter: - username: twitter_username # change to your Twitter username +#twitter: +# username: twitter_username # change to your Twitter username social: # Change to your full name. # It will be displayed as the default author of the posts and the copyright owner in the Footer - name: your_full_name - email: example@domain.com # change to your email address + name: xmoonanx + email: xmoonanx@gmail.com # change to your email address links: # The first element serves as the copyright owner's link - - https://twitter.com/username # change to your Twitter homepage - - https://github.com/username # change to your GitHub homepage + #- https://twitter.com/username # change to your Twitter homepage + - https://github.com/xmoonanx # change to your GitHub homepage # Uncomment below to add more social links # - https://www.facebook.com/username # - https://www.linkedin.com/in/username # Site Verification Settings webmaster_verifications: - google: # fill in your Google verification code + google: tIuVwz5rp4B_ky-MQyWTCnjf55LfrFDtKdPthSc3dbg # fill in your Google verification code bing: # fill in your Bing verification code alexa: # fill in your Alexa verification code yandex: # fill in your Yandex verification code @@ -88,17 +88,17 @@ pageviews: # light — Use the light color scheme # dark — Use the dark color scheme # -theme_mode: # [light | dark] +theme_mode: dark # [light | dark] # The CDN endpoint for media resources. # Notice that once it is assigned, the CDN url # will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/' # # e.g. 'https://cdn.com' -cdn: "https://chirpy-img.netlify.app" +#cdn: "https://chirpy-img.netlify.app" # the avatar on sidebar, support local or CORS resources -avatar: "/commons/avatar.jpg" +avatar: "/assets/img/favicons/favicon.ico" # The URL of the site-wide social preview image used in SEO `og:image` meta tag. # It can be overridden by a customized `page.image` in front matter. @@ -155,6 +155,7 @@ baseurl: "" # ------------ The following options are not recommended to be modified ------------------ kramdown: + input: GFM footnote_backlink: "↩︎" syntax_highlighter: rouge syntax_highlighter_opts: # Rouge Options › https://github.com/jneen/rouge#full-options diff --git a/_data/authors.yml b/_data/authors.yml index f012012135a..ff127f5851d 100644 --- a/_data/authors.yml +++ b/_data/authors.yml @@ -4,14 +4,8 @@ # name: {full name} # twitter: {twitter_of_author} # url: {homepage_of_author} -# ------------------------------------- - -cotes: - name: Cotes Chung - twitter: cotes2020 - url: https://github.com/cotes2020/ +# ------------------------------------ -sille_bille: - name: Dinesh Prasanth Moluguwan Krishnamoorthy - twitter: dinesh_MKD - url: https://github.com/SilleBille/ +xmoonanx: + name: xmoonanx + url: https://github.com/xmoonanx diff --git a/_data/contact.yml b/_data/contact.yml index ed40acb7e97..64c6b4f135a 100644 --- a/_data/contact.yml +++ b/_data/contact.yml @@ -3,8 +3,8 @@ - type: github icon: "fab fa-github" -- type: twitter - icon: "fa-brands fa-x-twitter" +#- type: twitter +# icon: "fa-brands fa-x-twitter" - type: email icon: "fas fa-envelope" diff --git a/_layouts/default.html b/_layouts/default.html index c83c561c242..1d3d6cb3cac 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -2,18 +2,19 @@ layout: compress --- - + -{% include origin-type.html %} - -{% include lang.html %} - -{% if site.theme_mode %} - {% capture prefer_mode %}data-mode="{{ site.theme_mode }}"{% endcapture %} -{% endif %} +{% include origin-type.html %} {% include lang.html %} {% if site.theme_mode %} +{% capture prefer_mode %}data-mode="{{ site.theme_mode }}"{% endcapture %} {% +endif %} - + {% include head.html %} @@ -24,37 +25,55 @@ {% include topbar.html lang=lang %}
-
- {% if layout.refactor or layout.layout == 'default' %} - {% include refactor-content.html content=content lang=lang %} - {% else %} - {{ content }} - {% endif %} +
+ {% if layout.refactor or layout.layout == 'default' %} {% include + refactor-content.html content=content lang=lang %} {% else %} {{ + content }} {% endif %}
-
- {% for _include in layout.tail_includes %} - {% assign _include_path = _include | append: '.html' %} - {% include {{ _include_path }} lang=lang %} - {% endfor %} - - {% include_cached footer.html lang=lang %} + {% for _include in layout.tail_includes %} {% assign _include_path = + _include | append: '.html' %} {% include {{ _include_path }} + lang=lang %} {% endfor %} {% include_cached footer.html lang=lang %}
@@ -62,7 +81,11 @@ @@ -70,17 +93,13 @@
- {% if site.pwa.enabled %} - {% include_cached notification.html lang=lang %} + {% if site.pwa.enabled %} {% include_cached notification.html lang=lang %} {% endif %} - {% for _include in layout.script_includes %} - {% assign _include_path = _include | append: '.html' %} - {% include {{ _include_path }} %} - {% endfor %} - + {% for _include in layout.script_includes %} {% assign _include_path = + _include | append: '.html' %} {% include {{ _include_path }} %} {% endfor %} {% include_cached search-loader.html lang=lang %} diff --git a/_layouts/post.html b/_layouts/post.html index c8c21ef7986..8a40a7c0533 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -10,85 +10,96 @@ - comment --- -{% include lang.html %} - -{% include toc-status.html %} +{% include lang.html %} {% include toc-status.html %}
+ + + + +

{{ page.title }}

{% if page.description %} -

{{ page.description }}

+

{{ page.description }}

{% endif %}
{% if enable_toc %} - - - + - -
-
{{- page.title -}}
- -
-
-
+ + + +
+
{{- page.title -}}
+ +
+
+
{% endif %}
{{ content }} + + + + +
{% if page.categories.size > 0 %} - + {% endif %} {% if page.tags.size > 0 %} - + {% endif %}
- {% if site.data.locales[lang].copyright.license.template %} - {% capture _replacement %} + {% if site.data.locales[lang].copyright.license.template %} {% capture + _replacement %} {{ site.data.locales[lang].copyright.license.name }} - {% endcapture %} - - {{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }} - {% endif %} + {% endcapture %} {{ site.data.locales[lang].copyright.license.template | + replace: ':LICENSE_NAME', _replacement }} {% endif %}
{% include post-sharing.html lang=lang %} @@ -176,4 +217,12 @@

{{ page.title }}

+
diff --git a/_posts/2019-08-08-text-and-typography.md b/_posts/2019-08-08-text-and-typography.md deleted file mode 100644 index a8db26a00ff..00000000000 --- a/_posts/2019-08-08-text-and-typography.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Text and Typography -description: Examples of text, typography, math equations, diagrams, flowcharts, pictures, videos, and more. -author: cotes -date: 2019-08-08 11:33:00 +0800 -categories: [Blogging, Demo] -tags: [typography] -pin: true -math: true -mermaid: true -image: - path: /commons/devices-mockup.png - lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA - alt: Responsive rendering of Chirpy theme on multiple devices. ---- - -## Headings - - - -# H1 — heading -{: .mt-4 .mb-0 } - -## H2 — heading -{: data-toc-skip='' .mt-4 .mb-0 } - -### H3 — heading -{: data-toc-skip='' .mt-4 .mb-0 } - -#### H4 — heading -{: data-toc-skip='' .mt-4 } - - -## Paragraph - -Quisque egestas convallis ipsum, ut sollicitudin risus tincidunt a. Maecenas interdum malesuada egestas. Duis consectetur porta risus, sit amet vulputate urna facilisis ac. Phasellus semper dui non purus ultrices sodales. Aliquam ante lorem, ornare a feugiat ac, finibus nec mauris. Vivamus ut tristique nisi. Sed vel leo vulputate, efficitur risus non, posuere mi. Nullam tincidunt bibendum rutrum. Proin commodo ornare sapien. Vivamus interdum diam sed sapien blandit, sit amet aliquam risus mattis. Nullam arcu turpis, mollis quis laoreet at, placerat id nibh. Suspendisse venenatis eros eros. - -## Lists - -### Ordered list - -1. Firstly -2. Secondly -3. Thirdly - -### Unordered list - -- Chapter - - Section - - Paragraph - -### ToDo list - -- [ ] Job - - [x] Step 1 - - [x] Step 2 - - [ ] Step 3 - -### Description list - -Sun -: the star around which the earth orbits - -Moon -: the natural satellite of the earth, visible by reflected light from the sun - -## Block Quote - -> This line shows the _block quote_. - -## Prompts - - - -> An example showing the `tip` type prompt. -{: .prompt-tip } - -> An example showing the `info` type prompt. -{: .prompt-info } - -> An example showing the `warning` type prompt. -{: .prompt-warning } - -> An example showing the `danger` type prompt. -{: .prompt-danger } - - -## Tables - -| Company | Contact | Country | -| :--------------------------- | :--------------- | ------: | -| Alfreds Futterkiste | Maria Anders | Germany | -| Island Trading | Helen Bennett | UK | -| Magazzini Alimentari Riuniti | Giovanni Rovelli | Italy | - -## Links - - - -## Footnote - -Click the hook will locate the footnote[^footnote], and here is another footnote[^fn-nth-2]. - -## Inline code - -This is an example of `Inline Code`. - -## Filepath - -Here is the `/path/to/the/file.extend`{: .filepath}. - -## Code blocks - -### Common - -```text -This is a common code snippet, without syntax highlight and line number. -``` - -### Specific Language - -```bash -if [ $? -ne 0 ]; then - echo "The command was not successful."; - #do the needful / exit -fi; -``` - -### Specific filename - -```sass -@import - "colors/light-typography", - "colors/dark-typography"; -``` -{: file='_sass/jekyll-theme-chirpy.scss'} - -## Mathematics - -The mathematics powered by [**MathJax**](https://www.mathjax.org/): - -$$ -\begin{equation} - \sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6} - \label{eq:series} -\end{equation} -$$ - -We can reference the equation as \eqref{eq:series}. - -When $a \ne 0$, there are two solutions to $ax^2 + bx + c = 0$ and they are - -$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$ - -## Mermaid SVG - -```mermaid - gantt - title Adding GANTT diagram functionality to mermaid - apple :a, 2017-07-20, 1w - banana :crit, b, 2017-07-23, 1d - cherry :active, c, after b a, 1d -``` - -## Images - -### Default (with caption) - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" } -_Full screen width and center alignment_ - -### Left aligned - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-75 .normal} - -### Float to left - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-50 .left} -Praesent maximus aliquam sapien. Sed vel neque in dolor pulvinar auctor. Maecenas pharetra, sem sit amet interdum posuere, tellus lacus eleifend magna, ac lobortis felis ipsum id sapien. Proin ornare rutrum metus, ac convallis diam volutpat sit amet. Phasellus volutpat, elit sit amet tincidunt mollis, felis mi scelerisque mauris, ut facilisis leo magna accumsan sapien. In rutrum vehicula nisl eget tempor. Nullam maximus ullamcorper libero non maximus. Integer ultricies velit id convallis varius. Praesent eu nisl eu urna finibus ultrices id nec ex. Mauris ac mattis quam. Fusce aliquam est nec sapien bibendum, vitae malesuada ligula condimentum. - -### Float to right - -![Desktop View](/posts/20190808/mockup.png){: width="972" height="589" .w-50 .right} -Praesent maximus aliquam sapien. Sed vel neque in dolor pulvinar auctor. Maecenas pharetra, sem sit amet interdum posuere, tellus lacus eleifend magna, ac lobortis felis ipsum id sapien. Proin ornare rutrum metus, ac convallis diam volutpat sit amet. Phasellus volutpat, elit sit amet tincidunt mollis, felis mi scelerisque mauris, ut facilisis leo magna accumsan sapien. In rutrum vehicula nisl eget tempor. Nullam maximus ullamcorper libero non maximus. Integer ultricies velit id convallis varius. Praesent eu nisl eu urna finibus ultrices id nec ex. Mauris ac mattis quam. Fusce aliquam est nec sapien bibendum, vitae malesuada ligula condimentum. - -### Dark/Light mode & Shadow - -The image below will toggle dark/light mode based on theme preference, notice it has shadows. - -![light mode only](/posts/20190808/devtools-light.png){: .light .w-75 .shadow .rounded-10 w='1212' h='668' } -![dark mode only](/posts/20190808/devtools-dark.png){: .dark .w-75 .shadow .rounded-10 w='1212' h='668' } - -## Video - -{% include embed/youtube.html id='Balreaj8Yqs' %} - -## Reverse Footnote - -[^footnote]: The footnote source -[^fn-nth-2]: The 2nd footnote source diff --git a/_posts/2019-08-08-write-a-new-post.md b/_posts/2019-08-08-write-a-new-post.md deleted file mode 100644 index 69eaf34acbe..00000000000 --- a/_posts/2019-08-08-write-a-new-post.md +++ /dev/null @@ -1,505 +0,0 @@ ---- -title: Writing a New Post -author: cotes -date: 2019-08-08 14:10:00 +0800 -categories: [Blogging, Tutorial] -tags: [writing] -render_with_liquid: false ---- - -This tutorial will guide you how to write a post in the _Chirpy_ template, and it's worth reading even if you've used Jekyll before, as many features require specific variables to be set. - -## Naming and Path - -Create a new file named `YYYY-MM-DD-TITLE.EXTENSION`{: .filepath} and put it in the `_posts`{: .filepath} of the root directory. Please note that the `EXTENSION`{: .filepath} must be one of `md`{: .filepath} and `markdown`{: .filepath}. If you want to save time of creating files, please consider using the plugin [`Jekyll-Compose`](https://github.com/jekyll/jekyll-compose) to accomplish this. - -## Front Matter - -Basically, you need to fill the [Front Matter](https://jekyllrb.com/docs/front-matter/) as below at the top of the post: - -```yaml ---- -title: TITLE -date: YYYY-MM-DD HH:MM:SS +/-TTTT -categories: [TOP_CATEGORIE, SUB_CATEGORIE] -tags: [TAG] # TAG names should always be lowercase ---- -``` - -> The posts' _layout_ has been set to `post` by default, so there is no need to add the variable _layout_ in the Front Matter block. -{: .prompt-tip } - -### Timezone of Date - -To accurately record the release date of a post, you should not only set up the `timezone` of `_config.yml`{: .filepath} but also provide the post's timezone in variable `date` of its Front Matter block. Format: `+/-TTTT`, e.g. `+0800`. - -### Categories and Tags - -The `categories` of each post are designed to contain up to two elements, and the number of elements in `tags` can be zero to infinity. For instance: - -```yaml ---- -categories: [Animal, Insect] -tags: [bee] ---- -``` - -### Author Information - -The author information of the post usually does not need to be filled in the _Front Matter_ , they will be obtained from variables `social.name` and the first entry of `social.links` of the configuration file by default. But you can also override it as follows: - -Adding author information in `_data/authors.yml` (If your website doesn't have this file, don't hesitate to create one). - -```yaml -: - name: - twitter: - url: -``` -{: file="_data/authors.yml" } - -And then use `author` to specify a single entry or `authors` to specify multiple entries: - -```yaml ---- -author: # for single entry -# or -authors: [, ] # for multiple entries ---- -``` - -Having said that, the key `author` can also identify multiple entries. - -> The benefit of reading the author information from the file `_data/authors.yml`{: .filepath } is that the page will have the meta tag `twitter:creator`, which enriches the [Twitter Cards](https://developer.twitter.com/en/docs/twitter-for-websites/cards/guides/getting-started#card-and-content-attribution) and is good for SEO. -{: .prompt-info } - -### Post Description - -By default, the first words of the post are used to display on the home page for a list of posts, in the _Further Reading_ section, and in the XML of the RSS feed. If you don't want to display the auto-generated description for the post, you can customize it using the `description` field in the _Front Matter_ as follows: - -```yaml ---- -description: Short summary of the post. ---- -``` - -Additionally, the `description` text will also be displayed under the post title on the post's page. - -## Table of Contents - -By default, the **T**able **o**f **C**ontents (TOC) is displayed on the right panel of the post. If you want to turn it off globally, go to `_config.yml`{: .filepath} and set the value of variable `toc` to `false`. If you want to turn off TOC for a specific post, add the following to the post's [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```yaml ---- -toc: false ---- -``` - -## Comments - -The global switch of comments is defined by variable `comments.active` in the file `_config.yml`{: .filepath}. After selecting a comment system for this variable, comments will be turned on for all posts. - -If you want to close the comment for a specific post, add the following to the **Front Matter** of the post: - -```yaml ---- -comments: false ---- -``` - -## Media - -We refer to images, audio and video as media resources in _Chirpy_. - -### URL Prefix - -From time to time we have to define duplicate URL prefixes for multiple resources in a post, which is a boring task that you can avoid by setting two parameters. - -- If you are using a CDN to host media files, you can specify the `cdn` in `_config.yml`{: .filepath }. The URLs of media resources for site avatar and posts are then prefixed with the CDN domain name. - - ```yaml - cdn: https://cdn.com - ``` - {: file='_config.yml' .nolineno } - -- To specify the resource path prefix for the current post/page range, set `media_subpath` in the _front matter_ of the post: - - ```yaml - --- - media_subpath: /path/to/media/ - --- - ``` - {: .nolineno } - -The option `site.cdn` and `page.media_subpath` can be used individually or in combination to flexibly compose the final resource URL: `[site.cdn/][page.media_subpath/]file.ext` - -### Images - -#### Caption - -Add italics to the next line of an image, then it will become the caption and appear at the bottom of the image: - -```markdown -![img-description](/path/to/image) -_Image Caption_ -``` -{: .nolineno} - -#### Size - -To prevent the page content layout from shifting when the image is loaded, we should set the width and height for each image. - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: width="700" height="400" } -``` -{: .nolineno} - -> For an SVG, you have to at least specify its _width_, otherwise it won't be rendered. -{: .prompt-info } - -Starting from _Chirpy v5.0.0_, `height` and `width` support abbreviations (`height` → `h`, `width` → `w`). The following example has the same effect as the above: - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: w="700" h="400" } -``` -{: .nolineno} - -#### Position - -By default, the image is centered, but you can specify the position by using one of the classes `normal`, `left`, and `right`. - -> Once the position is specified, the image caption should not be added. -{: .prompt-warning } - -- **Normal position** - - Image will be left aligned in below sample: - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .normal } - ``` - {: .nolineno} - -- **Float to the left** - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .left } - ``` - {: .nolineno} - -- **Float to the right** - - ```markdown - ![Desktop View](/assets/img/sample/mockup.png){: .right } - ``` - {: .nolineno} - -#### Dark/Light mode - -You can make images follow theme preferences in dark/light mode. This requires you to prepare two images, one for dark mode and one for light mode, and then assign them a specific class (`dark` or `light`): - -```markdown -![Light mode only](/path/to/light-mode.png){: .light } -![Dark mode only](/path/to/dark-mode.png){: .dark } -``` - -#### Shadow - -The screenshots of the program window can be considered to show the shadow effect: - -```markdown -![Desktop View](/assets/img/sample/mockup.png){: .shadow } -``` -{: .nolineno} - -#### Preview Image - -If you want to add an image at the top of the post, please provide an image with a resolution of `1200 x 630`. Please note that if the image aspect ratio does not meet `1.91 : 1`, the image will be scaled and cropped. - -Knowing these prerequisites, you can start setting the image's attribute: - -```yaml ---- -image: - path: /path/to/image - alt: image alternative text ---- -``` - -Note that the [`media_subpath`](#url-prefix) can also be passed to the preview image, that is, when it has been set, the attribute `path` only needs the image file name. - -For simple use, you can also just use `image` to define the path. - -```yml ---- -image: /path/to/image ---- -``` - -#### LQIP - -For preview images: - -```yaml ---- -image: - lqip: /path/to/lqip-file # or base64 URI ---- -``` - -> You can observe LQIP in the preview image of post \"[Text and Typography](../text-and-typography/)\". - -For normal images: - -```markdown -![Image description](/path/to/image){: lqip="/path/to/lqip-file" } -``` -{: .nolineno } - -### Video - -#### Social Media Platform - -You can embed videos from social media platforms with the following syntax: - -```liquid -{% include embed/{Platform}.html id='{ID}' %} -``` - -Where `Platform` is the lowercase of the platform name, and `ID` is the video ID. - -The following table shows how to get the two parameters we need in a given video URL, and you can also know the currently supported video platforms. - -| Video URL | Platform | ID | -| -------------------------------------------------------------------------------------------------- | ---------- | :------------- | -| [https://www.**youtube**.com/watch?v=**H-B46URT4mg**](https://www.youtube.com/watch?v=H-B46URT4mg) | `youtube` | `H-B46URT4mg` | -| [https://www.**twitch**.tv/videos/**1634779211**](https://www.twitch.tv/videos/1634779211) | `twitch` | `1634779211` | -| [https://www.**bilibili**.com/video/**BV1Q44y1B7Wf**](https://www.bilibili.com/video/BV1Q44y1B7Wf) | `bilibili` | `BV1Q44y1B7Wf` | - -#### Video Files - -If you want to embed a video file directly, use the following syntax: - -```liquid -{% include embed/video.html src='{URL}' %} -``` - -Where `URL` is a URL to a video file e.g. `/path/to/sample/video.mp4`. - -You can also specify additional attributes for the embedded video file. Here is a full list of attributes allowed. - -- `poster='/path/to/poster.png'` — poster image for a video that is shown while video is downloading -- `title='Text'` — title for a video that appears below the video and looks same as for images -- `autoplay=true` — video automatically begins to play back as soon as it can -- `loop=true` — automatically seek back to the start upon reaching the end of the video -- `muted=true` — audio will be initially silenced -- `types` — specify the extensions of additional video formats separated by `|`. Ensure these files exist in the same directory as your primary video file. - -Consider an example using all of the above: - -```liquid -{% - include embed/video.html - src='/path/to/video.mp4' - types='ogg|mov' - poster='poster.png' - title='Demo video' - autoplay=true - loop=true - muted=true -%} -``` - -### Audios - -If you want to embed an audio file directly, use the following syntax: - -```liquid -{% include embed/audio.html src='{URL}' %} -``` - -Where `URL` is a URL to an audio file e.g. `/path/to/audio.mp3`. - -You can also specify additional attributes for the embedded audio file. Here is a full list of attributes allowed. - -- `title='Text'` — title for an audio that appears below the audio and looks same as for images -- `types` — specify the extensions of additional audio formats separated by `|`. Ensure these files exist in the same directory as your primary audio file. - -Consider an example using all of the above: - -```liquid -{% - include embed/audio.html - src='/path/to/audio.mp3' - types='ogg|wav|aac' - title='Demo audio' -%} -``` - -## Pinned Posts - -You can pin one or more posts to the top of the home page, and the fixed posts are sorted in reverse order according to their release date. Enable by: - -```yaml ---- -pin: true ---- -``` - -## Prompts - -There are several types of prompts: `tip`, `info`, `warning`, and `danger`. They can be generated by adding the class `prompt-{type}` to the blockquote. For example, define a prompt of type `info` as follows: - -```md -> Example line for prompt. -{: .prompt-info } -``` -{: .nolineno } - -## Syntax - -### Inline Code - -```md -`inline code part` -``` -{: .nolineno } - -### Filepath Highlight - -```md -`/path/to/a/file.extend`{: .filepath} -``` -{: .nolineno } - -### Code Block - -Markdown symbols ```` ``` ```` can easily create a code block as follows: - -````md -``` -This is a plaintext code snippet. -``` -```` - -#### Specifying Language - -Using ```` ```{language} ```` you will get a code block with syntax highlight: - -````markdown -```yaml -key: value -``` -```` - -> The Jekyll tag `{% highlight %}` is not compatible with this theme. -{: .prompt-danger } - -#### Line Number - -By default, all languages except `plaintext`, `console`, and `terminal` will display line numbers. When you want to hide the line number of a code block, add the class `nolineno` to it: - -````markdown -```shell -echo 'No more line numbers!' -``` -{: .nolineno } -```` - -#### Specifying the Filename - -You may have noticed that the code language will be displayed at the top of the code block. If you want to replace it with the file name, you can add the attribute `file` to achieve this: - -````markdown -```shell -# content -``` -{: file="path/to/file" } -```` - -#### Liquid Codes - -If you want to display the **Liquid** snippet, surround the liquid code with `{% raw %}` and `{% endraw %}`: - -````markdown -{% raw %} -```liquid -{% if product.title contains 'Pack' %} - This product's title contains the word Pack. -{% endif %} -``` -{% endraw %} -```` - -Or adding `render_with_liquid: false` (Requires Jekyll 4.0 or higher) to the post's YAML block. - -## Mathematics - -We use [**MathJax**][mathjax] to generate mathematics. For website performance reasons, the mathematical feature won't be loaded by default. But it can be enabled by: - -[mathjax]: https://www.mathjax.org/ - -```yaml ---- -math: true ---- -``` - -After enabling the mathematical feature, you can add math equations with the following syntax: - -- **Block math** should be added with `$$ math $$` with **mandatory** blank lines before and after `$$` - - **Inserting equation numbering** should be added with `$$\begin{equation} math \end{equation}$$` - - **Referencing equation numbering** should be done with `\label{eq:label_name}` in the equation block and `\eqref{eq:label_name}` inline with text (see example below) -- **Inline math** (in lines) should be added with `$$ math $$` without any blank line before or after `$$` -- **Inline math** (in lists) should be added with `\$$ math $$` - -```markdown - - -$$ -LaTeX_math_expression -$$ - - - -$$ -\begin{equation} - LaTeX_math_expression - \label{eq:label_name} -\end{equation} -$$ - -Can be referenced as \eqref{eq:label_name}. - - - -"Lorem ipsum dolor sit amet, $$ LaTeX_math_expression $$ consectetur adipiscing elit." - - - -1. \$$ LaTeX_math_expression $$ -2. \$$ LaTeX_math_expression $$ -3. \$$ LaTeX_math_expression $$ -``` - -> Starting with `v7.0.0`, configuration options for **MathJax** have been moved to file `assets/js/data/mathjax.js`{: .filepath }, and you can change the options as needed, such as adding [extensions][mathjax-exts]. -> If you are building the site via `chirpy-starter`, copy that file from the gem installation directory (check with command `bundle info --path jekyll-theme-chirpy`) to the same directory in your repository. -{: .prompt-tip } - -[mathjax-exts]: https://docs.mathjax.org/en/latest/input/tex/extensions/index.html - -## Mermaid - -[**Mermaid**](https://github.com/mermaid-js/mermaid) is a great diagram generation tool. To enable it on your post, add the following to the YAML block: - -```yaml ---- -mermaid: true ---- -``` - -Then you can use it like other markdown languages: surround the graph code with ```` ```mermaid ```` and ```` ``` ````. - -## Learn More - -For more knowledge about Jekyll posts, visit the [Jekyll Docs: Posts](https://jekyllrb.com/docs/posts/). diff --git a/_posts/2019-08-09-getting-started.md b/_posts/2019-08-09-getting-started.md deleted file mode 100644 index 3b41a3cabe4..00000000000 --- a/_posts/2019-08-09-getting-started.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Getting Started -description: >- - Get started with Chirpy basics in this comprehensive overview. - You will learn how to install, configure, and use your first Chirpy-based website, as well as deploy it to a web server. -author: cotes -date: 2019-08-09 20:55:00 +0800 -categories: [Blogging, Tutorial] -tags: [getting started] -pin: true -media_subpath: '/posts/20180809' ---- - -## Creating a Site Repository - -When creating your site repository, you have two options depending on your needs: - -### Option 1. Using the Starter (Recommended) - -This approach simplifies upgrades, isolates unnecessary files, and is perfect for users who want to focus on writing with minimal configuration. - -1. Sign in to GitHub and navigate to the [**starter**][starter]. -2. Click the Use this template button and then select Create a new repository. -3. Name the new repository `.github.io`, replacing `username` with your lowercase GitHub username. - -### Option 2. Forking the Theme - -This approach is convenient for modifying features or UI design, but presents challenges during upgrades. So don't try this unless you are familiar with Jekyll and plan to heavily modify this theme. - -1. Sign in to GitHub. -2. [Fork the theme repository](https://github.com/cotes2020/jekyll-theme-chirpy/fork). -3. Name the new repository `.github.io`, replacing `username` with your lowercase GitHub username. - -## Setting up the Environment - -Once your repository is created, it's time to set up your development environment. There are two primary methods: - -### Using Dev Containers (Recommended for Windows) - -Dev Containers offer an isolated environment using Docker, which prevents conflicts with your system and ensures all dependencies are managed within the container. - -**Steps**: - -1. Install Docker: - - On Windows/macOS, install [Docker Desktop][docker-desktop]. - - On Linux, install [Docker Engine][docker-engine]. -2. Install [VS Code][vscode] and the [Dev Containers extension][dev-containers]. -3. Clone your repository: - - For Docker Desktop: Start VS Code and [clone your repo in a container volume][dc-clone-in-vol]. - - For Docker Engine: Clone your repo locally, then [open it in a container][dc-open-in-container] via VS Code. -4. Wait for the Dev Containers setup to complete. - -### Setting up Natively (Recommended for Unix-like OS) - -For Unix-like systems, you can set up the environment natively for optimal performance, though you can also use Dev Containers as an alternative. - -**Steps**: - -1. Follow the [Jekyll installation guide](https://jekyllrb.com/docs/installation/) to install Jekyll and ensure [Git](https://git-scm.com/) is installed. -2. Clone your repository to your local machine. -3. If you forked the theme, install [Node.js][nodejs] and run `bash tools/init.sh` in the root directory to initialize the repository. -4. Run command `bundle` in the root of your repository to install the dependencies. - -## Usage - -### Start the Jekyll Server - -To run the site locally, use the following command: - -```terminal -$ bundle exec jekyll s -``` - -> If you are using Dev Containers, you must run that command in the **VS Code** Terminal. -{: .prompt-info } - -After a few seconds, the local server will be available at . - -### Configuration - -Update the variables in `_config.yml`{: .filepath} as needed. Some typical options include: - -- `url` -- `avatar` -- `timezone` -- `lang` - -### Social Contact Options - -Social contact options are displayed at the bottom of the sidebar. You can enable or disable specific contacts in the `_data/contact.yml`{: .filepath} file. - -### Customizing the Stylesheet - -To customize the stylesheet, copy the theme's `assets/css/jekyll-theme-chirpy.scss`{: .filepath} file to the same path in your Jekyll site, and add your custom styles at the end of the file. - -Starting with version `6.2.0`, if you want to overwrite the SASS variables defined in `_sass/addon/variables.scss`{: .filepath}, copy the main SASS file `_sass/main.scss`{: .filepath} to the `_sass`{: .filepath} directory in your site's source, then create a new file `_sass/variables-hook.scss`{: .filepath} and assign your new values there. - -### Customizing Static Assets - -Static assets configuration was introduced in version `5.1.0`. The CDN of the static assets is defined in `_data/origin/cors.yml`{: .filepath }. You can replace some of them based on the network conditions in the region where your website is published. - -If you prefer to self-host the static assets, refer to the [_chirpy-static-assets_](https://github.com/cotes2020/chirpy-static-assets#readme) repository. - -## Deployment - -Before deploying, check the `_config.yml`{: .filepath} file and ensure the `url` is configured correctly. If you prefer a [**project site**](https://help.github.com/en/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites) and don't use a custom domain, or if you want to visit your website with a base URL on a web server other than **GitHub Pages**, remember to set the `baseurl` to your project name, starting with a slash, e.g., `/project-name`. - -Now you can choose _ONE_ of the following methods to deploy your Jekyll site. - -### Deploy Using Github Actions - -Prepare the following: - -- If you're on the GitHub Free plan, keep your site repository public. -- If you have committed `Gemfile.lock`{: .filepath} to the repository, and your local machine is not running Linux, update the platform list of the lock file: - - ```console - $ bundle lock --add-platform x86_64-linux - ``` - -Next, configure the _Pages_ service: - -1. Go to your repository on GitHub. Select the _Settings_ tab, then click _Pages_ in the left navigation bar. In the **Source** section (under _Build and deployment_), select [**GitHub Actions**][pages-workflow-src] from the dropdown menu. - ![Build source](pages-source-light.png){: .light .border .normal w='375' h='140' } - ![Build source](pages-source-dark.png){: .dark .normal w='375' h='140' } - -2. Push any commits to GitHub to trigger the _Actions_ workflow. In the _Actions_ tab of your repository, you should see the workflow _Build and Deploy_ running. Once the build is complete and successful, the site will be deployed automatically. - -You can now visit the URL provided by GitHub to access your site. - -### Manual Build and Deployment - -For self-hosted servers, you will need to build the site on your local machine and then upload the site files to the server. - -Navigate to the root of the source project, and build your site with the following command: - -```console -$ JEKYLL_ENV=production bundle exec jekyll b -``` - -Unless you specified the output path, the generated site files will be placed in the `_site`{: .filepath} folder of the project's root directory. Upload these files to your target server. - -[nodejs]: https://nodejs.org/ -[starter]: https://github.com/cotes2020/chirpy-starter -[pages-workflow-src]: https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow -[docker-desktop]: https://www.docker.com/products/docker-desktop/ -[docker-engine]: https://docs.docker.com/engine/install/ -[vscode]: https://code.visualstudio.com/ -[dev-containers]: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers -[dc-clone-in-vol]: https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-a-git-repository-or-github-pr-in-an-isolated-container-volume -[dc-open-in-container]: https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-an-existing-folder-in-a-container diff --git a/_posts/2019-08-11-customize-the-favicon.md b/_posts/2019-08-11-customize-the-favicon.md deleted file mode 100644 index a3278fa90eb..00000000000 --- a/_posts/2019-08-11-customize-the-favicon.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Customize the Favicon -author: cotes -date: 2019-08-11 00:34:00 +0800 -categories: [Blogging, Tutorial] -tags: [favicon] ---- - -The [favicons](https://www.favicon-generator.org/about/) of [**Chirpy**](https://github.com/cotes2020/jekyll-theme-chirpy/) are placed in the directory `assets/img/favicons/`{: .filepath}. You may want to replace them with your own. The following sections will guide you to create and replace the default favicons. - -## Generate the favicon - -Prepare a square image (PNG, JPG, or SVG) with a size of 512x512 or more, and then go to the online tool [**Real Favicon Generator**](https://realfavicongenerator.net/) and click the button Select your Favicon image to upload your image file. - -In the next step, the webpage will show all usage scenarios. You can keep the default options, scroll to the bottom of the page, and click the button Generate your Favicons and HTML code to generate the favicon. - -## Download & Replace - -Download the generated package, unzip and delete the following two from the extracted files: - -- `browserconfig.xml`{: .filepath} -- `site.webmanifest`{: .filepath} - -And then copy the remaining image files (`.PNG`{: .filepath} and `.ICO`{: .filepath}) to cover the original files in the directory `assets/img/favicons/`{: .filepath} of your Jekyll site. If your Jekyll site doesn't have this directory yet, just create one. - -The following table will help you understand the changes to the favicon files: - -| File(s) | From Online Tool | From Chirpy | -|---------------------|:---------------------------------:|:-----------:| -| `*.PNG` | ✓ | ✗ | -| `*.ICO` | ✓ | ✗ | - - -> ✓ means keep, ✗ means delete. -{: .prompt-info } - -The next time you build the site, the favicon will be replaced with a customized edition. diff --git a/_posts/2024-11-29-markdown.md b/_posts/2024-11-29-markdown.md new file mode 100644 index 00000000000..95a94428e67 --- /dev/null +++ b/_posts/2024-11-29-markdown.md @@ -0,0 +1,325 @@ +--- +title: "[Github 블로그] Markdown 문법 총정리" + +categories: [Blog, Github Blog] +tags: + - [Blog, jekyll, HTML, Markdown] +toc: true +# toc_sticky: true + +date: 2024-11-29 +last_modified_at: 2024-11-29 +--- +🍀 jekyll 블로그 포스팅을 위한 Markdown 문법 정리 + +## 제목(Header) +--- +글의 제목을 작성할 때 사용하며, 각 제목마다 permalink가 있다. +`

`,`

`,`

`,`

`,`

`,`
` 태그로 변환되고, +'#'의 갯수에 따라 제목 크기가 나뉜다. +```markdown +# h1 +## h2 +### h3 +#### h4 +##### h5 +###### h6 +``` +# h1 +## h2 +### h3 +#### h4 +##### h5 +###### h6 + +`

`, `

`는 다음과 같이 표현할 수 있다. +```markdown +h1 +===== + +h2 +----- +``` +## 강조(Emphasis) +--- +텍스트에 ``(기울임), ``(취소선), ``(두꺼움), ``(밑줄) 등을 표현할 수 있다. + +### 두꺼움 +--- +```markdown +**굵게 쓰기** +``` +**굵게 쓰기** + +### 기울임 +--- +```markdown +*기울여 쓰기* +***굵고 기울여 쓰기*** +``` +*기울여 쓰기* +***굵고 기울여 쓰기*** + +### 취소선 +--- +```markdown +~~텍스트 취소하기~~ +``` +~~텍스트 취소하기~~ + +### 밑줄 +--- +```markdown +텍스트에 밑줄 +``` +텍스트에 밑줄 + +## 줄바꿈 +--- +`줄바꿈(Line Breaks)`은 문장 마지막에 띄어쓰기 2번 이상, +또는 문장 마지막에 `
`을 입력하면 된다. +```markdown +안녕하세요. +좋은 날이에요. +``` +안녕하세요. +좋은 날이에요. + +```markdown +안녕하세요.
좋은 날이에요. +``` +안녕하세요.
좋은 날이에요. + +## 인용문(BlockQuote) +--- +인용문은 `
`로 변환되어 나타난다. +```markdown +> 인용문 +> _(출처)_ + +>또한 인용문은 +>>중첩도 +>>>가능합니다! +``` +> 인용문 +> _(출처)_ + +>또한 인용문은 +>>중첩도 +>>>가능합니다! + + +## 목록(List) +--- +목록은 `
    `, `
      `, `
    • `태그로 변환된다. +`1.`로 시작되는 ordered list는 `
        `, `-`로 시작하는 unordered list는 `
          `로 변환된다. +들여쓰기를 통해 하위 목록을 작성한다. + +> 하위 목록 작성 시, 들여쓰기가 2칸이 아닌 3칸 이상일 수 있다. +> 순서가 있거나 없는 목록을 혼합할 수 있지만 동작하지 않을 수 있다. + +### ordered list +```markdown +1. ordered +2. list + 1. ordered + - ordered + - list + 2. list + - ordered +3. fin +``` +__출력 결과__: +1. ordered +2. list + 1. ordered + - ordered + - list + 2. list + - ordered +3. fin + +### unordered list +```markdown +- unordered +- list + * unordered + + list +``` +__출력 결과__: +- unordered +- list + * unordered + + list + +### check list +```markdown +- [ ] 체크 X +- [x] 체크 O +``` +- [ ] 체크 X +- [x] 체크 O + +## 링크 +링크(Links)는 ``로 표현된다. + +__구조__: +```markdown +[name](link) +[name](link "brief") +[name][ref] + +[ref]: link +[ref]: link "brief" +``` +__예시__: +```markdown +[Google](https://google.com) + +[Google](https://google.com "설명 작성") + +[GitHub][Git] + +문서 안에서 [Git]처럼 참조 링크를 사용할 수 있다. +또한 `< >`안의 url은 자동으로 링크로 된다. + +구글: + +[Git]: https://github.com +``` +__출력 결과__: +[Google](https://google.com) +[Google](https://google.com "설명 작성") +[GitHub][Git] + +문서 안에서 [Git]처럼 참조 링크를 사용할 수 있다. +또한 `< >`안의 url은 자동으로 링크로 된다. + +구글: + +[Git]: https://github.com "Github으로 이동" + +## 이미지 +--- +이미지는 ``로 변환되며 링크와 비슷하지만 앞에 `!`를 추가해야 한다. + +```markdown +![image_name](img_link) +로컬 파일도 가능! +``` +![img](/assets/img//favicons/favicon.ico) + +## 코드 강조 +--- +코드(Code)는 `
          `, ``로 변환된다.
          +\`(백틱) 기호를 사용한다.
          +
          +### 인라인(Inline)
          +강조할 코드를 백틱으로 감싸면 된다.
          +```markdown
          +이게 `인라인(lnlince)`입니다.
          +```
          +__출력 결과__:  
          +이게 `인라인(lnlince)`입니다.
          +
          +### 블록(Block)
          +---
          +코드 블록(Block)은 \`을 3번 이상 입력하고 코드 이름을 명시하여 표현한다.
          +코드 블록에서 시작과 종료 \`의 개수는 같아야 한다.
          +
          +````markdown
          +```언어이름(소문자)
          +내용
          +```
          +````
          +
          +언어 이름을 적으면 변수 등에 색깔 하이라이트가 적용된다.
          +
          +__예시__:
          +````markdown
          +```html
          +GitHub
          +```
          +
          +```javascript
          +function plus(a, b = 1) {
          +  console.log(a, b)
          +  return a + b
          +}
          +```
          +
          +```python
          +h = "Hello World!"
          +print h
          +```
          + 
          +```plaintext(생략가능)
          +그냥 텍스트는 색상 X.
          +```
          +````
          +__출력 결과__:
          +```html
          +GitHub
          +```
          +
          +```javascript
          +function plus(a, b = 1) {
          +  console.log(a, b)
          +  return a + b
          +}
          +```
          +
          +```python
          +h = "Hello World!"
          +print h
          +```
          + 
          +```plaintext
          +그냥 텍스트는 색상 X.
          +```
          +
          +## 표(Table)
          +---
          +표(Table)은 ``태그로 변환되어 나타난다.  
          +테이블 헤더는 3개 이상의 `-`(dash)로 구분하고, 셀은 `|`(vertical bar)로 구분한다. 
          +`:`(Colons)로 셀의 내용을 정렬할 수 있다.  
          +
          +* `---`,`:---`: 좌측 정렬  
          +* `:---:`: 가운데 정렬
          +* `---:`: 우측 정렬
          +
          +```markdown
          +| name       | shape |         func |
          +| ---------- | :---: | -----------: |
          +| `header`   | `---` | `div header` |
          +| `vertical` | `\|`  |   `div cell` |
          +| `colons`   |  `:`  | `array cell` |
          +```
          +
          +{:.prompt-warning}
          +>**플렛폼에 따라 양 끝에 `|`를 포함해도 되고 안해도 된다.**  
          +>
          +
          +__출력 결과__:
          +
          +| name       | shape |         func |
          +| ---------- | :---: | -----------: |
          +| `header`   | `---` | `div header` |
          +| `vertical` | `\|`  |   `div cell` |
          +| `colons`   |  `:`  | `array cell` |
          +
          +## 주석(Comment)
          +---
          +``, `[//]: #`기호를 통해 주석(Comment)를 표현한다.
          +```markdown
          +-- 마지막 --
          +
          +[//]: # 감사합니다.
          +-- 목차 --
          +```
          +-- 마지막 --
          +
          +
          +[//]: #감사합니다.
          +
          +-- 목차 --
          diff --git a/_posts/2024-12-29-CS-Datastructure.md b/_posts/2024-12-29-CS-Datastructure.md
          new file mode 100644
          index 00000000000..bc2f60bb14c
          --- /dev/null
          +++ b/_posts/2024-12-29-CS-Datastructure.md
          @@ -0,0 +1,88 @@
          +---
          +title: "[Data Structure] 자료구조 기초와 배열"
          +
          +categories: [CS, Data Stucture]
          +tags:
          +  - [CS, c, cpp, Data Structure]
          +toc: true
          +toc_sticky: true
          +
          +date: 2024-12-29
          +last_modified_at: 2024-12-30
          +image: https://miro.medium.com/v2/resize:fit:720/format:webp/1*hIvxsGZdM3p6mktboskoYg.png
          +---
          +## Data Structure(자료구조)란?
          +---
          +>`Data Structure(자료구조)`는 **데이터를 효율적으로 저장하고 관리**하며 조작하기 위해 설계된 구조다.
          +>
          +
          +  
          +예를 들어 도서관을 생각해보면, 책이 10권 밖에 없는 도서관은 딱히 정리를 하지 않아도 원하는 책을 빠르게 고를 수 있다.  
          +
          +**하지만 10000개의 책이 있다면?**
          +
          +원하는 책을 고르기까지 시간이 엄청나게 걸릴 것이다.  
          +그래서 필요한게 책을 정리해놓는것이다. 가나다 순이든, 알파벳순이든, 주제별이든 자신이 찾기 편한 방법으로 정리를 해놓으면 원하는 책을 찾기 훨씬 수월하다.
          +
          +셀 수도 없이 많은 데이터의 경우도 정리를 잘해놓으면 컴퓨터의 CPU가 빠르고 효율적으로 데이터를 처리할 수 있다.
          +
          +## 자료구조 분류
          +---
          +자료구조는 `선형(Linear)`과 `비선형(Non Linear)`으로 나눌 수 있다.
          +
          +
          +`선형 자료구조`는 데이터들이 선형으로 되어있어서 한 번에 하나씩 처리하는 구조이다. 예시로는 `배열(Array)`, `스택(Stack)`등이 있다.  
          +반면에 `비선형 자료구조`는 데이터들을 여러 갈래로 나누어 복잡하게 연결된 구조이다. 예시로는 `트리(Tree)`, `그래프(Graph)`가 있다.
          +
          +### 배열(Array)
          +---
          +
          +배열은 `청크(chunk)` 형태로 메모리가 연속적으로 할당된다.  
          +배열을 구성하는 각각의 값을 `요소(element)`라고 하며, 배열에서의 위치를 가리키는 숫자를 `인덱스(index)`라고 한다.
          +
          +**배열 문제 풀이**  
          + 
          +  
          +이 문제는 배열의 두 정수의 합이 target과 일치할 때 원소 2개의 `인덱스`를 반환해야한다.
          +
          +### 1. Brute Force
          +---
          +```c++
          +class Solution {
          +public:
          +    vector twoSum(vector& nums, int target) {
          +        int n = nums.size();
          +        for (int i=0; i < n-1; i++){
          +            for (int j=i+1; j twoSum(vector& nums, int target) {
          +        unordered_map mp;
          +        int n = nums.size();
          +
          +        for (int i = 0; i < n; i++) {
          +            int com = target - nums[i];
          +            if (mp.count(com)) {
          +                return {mp[com], i};
          +            }
          +            mp[nums[i]] = i;
          +        }
          +
          +        return {};
          +    }
          +};
          +```
          +해시 테이블을 이용하여 풀면 브루트 포스에 비해 공간복잡도는 커지지만 시간복잡도는 *O(n)* 으로 작아진다.
          \ No newline at end of file
          diff --git a/_posts/2025-01-22-Linked_List.md b/_posts/2025-01-22-Linked_List.md
          new file mode 100644
          index 00000000000..d3138d7211b
          --- /dev/null
          +++ b/_posts/2025-01-22-Linked_List.md
          @@ -0,0 +1,178 @@
          +---
          +title: "[Data Structure] 연결 리스트(Linked List)"
          +
          +categories: [CS, Data Stucture]
          +tags:
          +  - [CS, c, cpp, Data Structure, Linked List]
          +toc: true
          +toc_sticky: true
          +
          +date: 2025-01-15
          +last_modified_at: 2025-01-15
          +image: ../assets/img/Linkedlist.png
          +---
          +## Linked List(연결 리스트)란?
          +---
          +연속적인 메모리에 저장되는 배열과 달리 **동적으로 사슬처럼 연결되어 있는 선형 데이터 구조** 이다.
          +
          +![img](../assets/img/Linkedlist.png)
          +연결리스트에서 각 칸은 **노드(Node)**라고 부른다.
          +
          +각 node는 동적으로 할당되며, **data와 주소를 동시에 저장** 할 수 있어야 하기 때문에 구조체로 만들 수 있다.
          +
          +## 왜 Linked List를 사용하는가?
          +---
          +연결 리스트에 비해 배열은 만들기 쉽지만 몇 가지 제한사항이 있다.
          +
          +1. 배열은 크기가 고정되어 있어 미리 요소의 수에 대해 할당을 받아야 한다.
          +   
          +    ![img](../assets/img/linkedlistex.png)
          +    배열과 달리 연결 리스트는 원형 연결 리스트, 트리형 연결 리스트 등,   
          +    원하는 형태로 리스트를 구현 할 수 있다.
          +
          +2. 새로운 요소를 삽입 혹은 삭제하는 것이 힘들다. *(공간을 창출 -> 기존 요소 전부 이동)*
          +   
          +   ![img](../assets/img/arraydel.png)
          +   배열은 크기가 고정되어 있으므로 node 자체를 삭제할 수는 없다.  
          +   따라서 해당 데이터가 삭제되었다는 **표시**를 남긴다.
          +
          +   위의 예시에서 5 대신 0을 삽입하여 삭제했다는 표시를 남긴다.
          +   데이터를 다시 정렬하고 싶다면 뒤의 모든 데이터를 앞으로 한칸씩 당기는 작업이 필요하다.
          +
          +   ![img](../assets/img/linkedlistdel.png)
          +   반면 연결 리스트는 node가 동적으로 구현되고, 포인터를 통해 다음 노드의 주소를 저장하기 때문에 각 노드를 원하는 대로 삭제가 가능하다.
          +
          +장단점을 정리하자면 아래와 같다.
          +### 장점
          +1. 동적 구현
          +2. 삽입/삭제 용이
          +3. 메모리 효율성
          +
          +### 단점
          +1. 임의로 액세스 허용 불가: 첫 번째 노드부터 순차적으로 요소에 액세스 해야해서 **접근속도가 느림**
          +2. 추가적인 메모리 사용
          +
          +## Node 구현
          +---
          +노드는 아래와 같이 구조체 를 통해 구현한다.
          +```c
          +struct Node{
          +    int data; // 데이터가 저장되는 공간. 저장할 데이터에 따라 자료형이 다름
          +    struct node*next // 다음 노드의 주소를 저장할 포인터
          +};
          +```
          +### 정적 연결리스트 구현
          +```C
          +#include
          +struct Node
          +{
          +	int data;
          +	struct node *next;
          +};
          +
          +int main()
          +{
          +	Node a, b, c, d;
          +	
          +	a.data = 1;
          +	a.next = &b;
          +	
          +	b.data = 2;
          +	b.next = &c;
          +	
          +	c.data = 3;
          +	c.next = &d;
          +	
          +	d.data = 4;
          +	d.next = NULL;
          +	
          +	return 0;
          +}
          +```
          +![img](../assets/img/staticlinked.png)
          +위 코드는 **정적으로 구현된 연결리스트** 이다.
          +a ~ d는 Node의 자료형으로, 각각 data와 next를 노드로 가진다.
          +
          +### 동적 연결리스트 구현
          +---
          +```c
          +#include
          +#include
          +
          +typedef struct node_{
          +	int data;
          +	struct node_ *next;
          +} Node;
          +
          +Node *head = NULL;
          +Node *tail = NULL;
          +
          +int main() {
          +	while(1) {
          +		int input;
          +		printf("Enter the data you want to input. ");
          +		scanf("%d",&input);
          +		
          +    if(input <=0 ) break;  //  입력 데이터가 0또는 음수면 종료
          +      
          +    Node *newnode = (Node*)malloc(sizeof(Node));  //  노드 동적 생성
          +      
          +    newnode->data = input;  //  노드의 데이터 삽입 
          +    newnode->next = NULL;  //  새로 생성된 노드는 항상 마지막 노드이므로 next는 없음
          +      
          +    if(head == NULL) head = newnode;  // head가 NULL이면 현재 연결리스트에 노드가 없다는 뜻
          +      
          +    else tail->next = newnode;  // 마지막에 생성했던 노드의 다음 노드를 방금 생성한 노드와 연결
          +      
          +    tail = newnode;  // 방금 생성한 노드가 마지막 노드이므로 tail 변경
          +  }
          +	
          +	printf("Current status : "); 
          +	Node *cur = head;  // 첫 번째 노드(head)부터 연결리스트 탐색 
          +  while(cur != NULL) {  // 더 이상 탐색할 노드가 없을 때 까지 반복
          +	  printf("%d ",cur->data);
          +	  cur = cur->next;  // 연결된 다음 노드로 이동
          +  }
          +  puts("");
          +	
          +	while(1) {
          +		int k;
          +		printf("Enter the data you want to delete. ");
          +		scanf("%d",&k);
          +		
          +		if(k <= 0) break;
          +		
          +		int search = 0; // 검색 여부 검사(1이면 있다, 0이면 없다)
          +		Node *cur_prev = NULL; // cur을 뒤 따라 다니는 포인터
          +		cur = head; // 첫 번째 노드(head)부터 연결리스트 탐색 
          +		while(cur != NULL) { // 더 이상 탐색할 노드가 없을 때 까지 반복
          +      if(cur->data == k){  // 입력한 데이터를 연결리스트에서 찾았음
          +        search = 1;  // 찾았으므로 search 변수를 1로 변경
          +        break;  // 찾았으므로 탐색 종료
          +      }
          +      cur_prev = cur;   // cur의 뒤를 따라 다님
          +      cur = cur->next;  // 연결된 다음 노드로 이동
          +		}
          +		
          +		if(search == 1) { // 삭제할 노드를 찾았을 때
          +			printf("Delete %d.\n",k);
          +			
          +			if(cur == head) head = cur->next; // 삭제할 노드가 head면 head를 이동
          +			else cur_prev->next = cur->next;  // 삭제할 노드의 이전 노드와 다음 노드를 연결
          +			
          +			free(cur); // cur 삭제
          +		}
          +		else { // 삭제할 노드를 찾지 못했을 때
          +			printf("%d not found.\n",k);
          +		}
          +	}
          +	
          +	printf("Current status(after deletion) : "); 
          +	cur = head;
          +	while(cur != NULL) {
          +		printf("%d ",cur->data);
          +		cur = cur->next;
          +	}
          +	puts(""); 
          +}
          +```
          diff --git a/_posts/2025-03-04-OS(1-1).md b/_posts/2025-03-04-OS(1-1).md
          new file mode 100644
          index 00000000000..a87934e629f
          --- /dev/null
          +++ b/_posts/2025-03-04-OS(1-1).md
          @@ -0,0 +1,209 @@
          +---
          +title: "[OS] Operating System(1-1): Interrupt, Oranizaion, Architecture"
          +
          +categories: [CS, Operating System, OS]
          +tags:
          +  - [CS, OS, Interrupt]
          +toc: true
          +toc_sticky: true
          +
          +date: 2025-03-04
          +last_modified_at: 2025-03-04
          +---
          +>🍀 운영체제 전공 수업 정리
          +
          +## Operatrion System(OS)
          +여러 서비스들을 유저들과 응용프로그램을 하드웨어가 사용할 수 있도록 도와주는 역할
          +
          +### Definition of OS
          +---
          +* 보는 관점에 따라 다를 수 있음 (사용자 <-> 개발자)
          +* 운영체제가 있는 이유: 하나 컴퓨터마다 하나의 프로그램만 작동하지 않음.  
          +  - 여러 프로그램을 하드웨어 같은 인프라를 가지고 효율적으로 돌리기위해 운영체제가 필요. 
          +  - 작은 메모리(RAM)만 가지고도 여러 프로그램을 돌릴 수 있음.
          +* Mobile devices like smartphones and tablets are resource poor,  optimized for usability and battery life
          +  : 모바일은 성능이 더 작으니 resource poor 하고, 배터리를 잘 관리하기 위해 운영체제가 여기에 맞춰 개발됨.
          +* 심지어 가전제품 등에도 CPU가 있고 OS도 있음. OS의 시발점은 군사용이었음.
          + 
          +### Concept of OS
          +---
          +1. No universally accepted definition
          +2. “The one program **running at all times** on the computer”is the kernel, part of the operating system
          +3. 그외 나머지는 system program(ships with the os, but not part of the kernel) 또는 
          +   application program(all programs not associated with os)이다.
          +4. middle ware: 개발자들을 위해 API를 제공해주는 계층, 사용자들이 보는 것보다 추상화되어 있음. 예시: 쿼리 등
          +
          +![Computer System Organization](../assets/img/OS/Computer_OS.png)
          +>Computer System Organization
          +
          +* 각각 **system bus**로 연결되어 있고, 이를 통해 다 연결이 되어 동시에(**Concurrent**) 운영이 된다. 
          +* Concurrent 과정에서 충돌은 피할 수 없다. 특히 메모리에 접근할 경우에 충돌은 빈번해서 메모리 접근은 느릴 수 밖에 없음.  
          +* I/O devices and the CPU can execute **Concurrently**
          +* **Local Buffer** 는 I/O device를 제어하기위한 컨트롤러 이다. 
          +  * 함수 또는 특정 코드 블록 내에서 선언된 임시 저장 공간으로, 스택(stack) 메모리에 저장됨.  
          +* Each device controller type has an operating system **device driver** to manage it
          +* CPU moves data from/to main memory to/from local buffers. (컴퓨터 시스템에서 어떤 계산이든 CPU를 통해서 이루어 진다. 데이터의 이동조차.)
          +* Device controller informs CPU that it has finished its operation by causing an **interrupt**.
          +
          +{:.prompt-warning}
          +>그럼 CPU들이 모든 일에 어떻게 관여하는가??
          +>
          +
          +그걸 가능하게 하는게 **Interrupt** 이다.
          +
          +## Interrupt
          +---
          +* Interrupt는 '방해하다'라는 뜻처럼 CPU가 하는 행위를 방해해서 여러 개의 일을 할 수 있도록 함.
          +
          +### Function of Interrupt
          +---
          +* Interrupt transfers control to the interrupt service routine generally,  
          +  through the interrupt vector, which contains the addresses of all the service routines
          +  * 어떤 사건이 발생한 것을 알려주기 위해 CPU를 갑자기 중단을 시킴.
          +    마우스를 움직이면 마우스I/O에서 CPU에 interrupt를 검.  
          +    그럼 CPU가 멈추고 변경된 것을 반영. 이 과정의 코드 가 **interrupt service routines** 이다. 
          +* 디바이스마다 interrupt가 있는데, 각 interrupt를 구별하기 위해 **interrupt vector** 가 있다.(즉, interrupt의 index 역할)
          +* A **trap** or **exception** is a software-generated interrupt.
          +* OS is **interrupt driven**.
          +  * interrupt의 종류가 너무 많아서 계층 구조를 가진다.
          +    vector에서 번호가 하나만 주어지는 게 아니라, 그 주소의 table이 또 있다.(ex: 외과에도 셩형외과, 일반외과 있는 것처럼)
          +
          +#### CPU가 interrupt가 걸린지 어떻게 아는가?
          +- The CPU hardware has a wire called the **interrupt-request line** that the CPU **senses** after executing every instruction.
          +(interrupt는 대략 1초에 2천번 정도 이루어 진다.)
          +
          +![interrupt_timeline](../assets/img/OS/interrupt_timeline.png)
          +>interrupt_timeline
          +
          +### Interrupt Handling
          +---
          +* CPU가 interrupt가 걸리면 실행하던 코드를 멈추고 다른 코드를 실행함.  
          +  그리고 원래의 상태로 돌아가기 위해 **registers** (어느 하나의 register가 아니라 resgister의 집합)를 저장함.
          +
          +#### interrupt 방식.
          +1. **polled** interrupt system
          +  - interrupt가 오면 확인하는 방식
          +2. **vectored** interrupt system
          +  - interrupt에 번호가 따라오는 방식(대부분 vector 사용)
          +
          +#### Two interrupt request line
          +1. **nonmaskable interrupt**: unrecoverable errors(무조건 걸리는 interrupt)
          +2. **maskable interrupt**: can be turned off(안받아도 되는 interrupt)
          +
          +* **Interrupt chaining**: each element in the interrupt vector points to the head of a list of interrupt handlers.
          +  - vector의 크기를 줄이기 위해 계층 구조를 가지고 있다.
          +* interrupt의 우선순위가 있는데 **interrupt priority level** 이라 하고 우선순위대로 실행됨.
          +
          +![alt text](../assets/img/OS/interrupt_sensing.png)
          +>Interrupt-drive I/O Cycle
          +instruction중에 sensing을 통해 interrput 여부 확인
          +interrupt는 OS의 multitasking등을 이해하기 위한 기초
          +
          +## Storage Structure
          +---
          +* main memory: only large storage media that the CPU can access directly
          +  - **Random access**
          +  - Typically **volatile(휘발성)**
          +  - Typically **random-access memory** in the form of **Dynamic Random-access Memory(DRAM)**
          +* Secondary storage: extension of main memory that provides large **nonvolatile(비휘발성)** storage capacity
          +  1. HDD(Hard Disk Drives): logically divided into **tracks**, which are subdivided into **sectors**
          +  2. NVM(Non-volatile memory) devices = SSD: faster than hard disk, Nonvolatile, Varios technologies, Becoming more popular(as capacity and performance increases, price drops).
          +  
          +### Storage Definitions and Notation
          +---
          +* bit: The basic unit of computer storage.
          +* byte: Is 8bits, the smallest convenient chunk of storage
          +* word: size of CPU's register(ex: 1word = 8byte in 64bits CPU)
          +(octec = 8 bit = 1 byte)
          +
          +### Stroage Hierarchy
          +---
          +Storage systems organized in hierarchy(계층 구조)
          +1. speed: program
          +2. cost
          +3. volatility
          +   
          +* **Caching**: copying information into faster storage system
          +  * Main memory can be viewed as a cache for secondary storage
          +*  **Device Driver**: For each device controller to manage I/O
          +   * Provides uniform interface b/w controller and kernel
          +
          +![alt text](../assets/img/OS/Storage_device.png)
          +>Storage-Device Hierarchy
          +
          +register, cache는 CPU안에 내장되어있고 가장 빠르고 용량이 적으며 비쌈.
          +밑으로 갈수록 용량이 크고 느리며 가격이 쌈.
          +
          +![alt text](../assets/img/OS/MCW.png)
          +>Working of Modern Computer 
          +
          +#### DMA(direct memory access)
          +---
          +1. Used for high-speed I/O devices
          +2. Device controller transfers blocks of data **with out CPU intervention** (CPU의 부하를 줄임) 
          +  * 큰 데이터를 CPU가 처리하려면 하나씩 옮겨서 오래걸리기 때문에 CPU가 모두 관여하지 않고 시작과 끝만 관여함
          +3. Only one interrupt is generated **per block**, not per byte
          +
          +## Computer-System Architecture
          +---
          +* Most systems use a **single general-purpose** processor
          +  * Most systems have **special-purpose processors** as well
          +* **Multiprocessors** systems growing in use and importance
          +  * Known as **parallel systems(병렬 시스템), tightly-coupled systems(밀결합 시스템)**
          +  
          +✅Advantages of Multiprocessor:
          +  1. Increased throughput(처리량) - 작업을 더 빠르게 처리 가능
          +  2. Economy of scale
          +  3. Increased reliability: 일부 프로세서가 계속 작동하여 시스템이 완전히 중단되지 않음.
          +
          +📝Types of Multiprocessor:
          +  1. Asymmetric Multiprocessing(비대칭 다중처리) - each processor is assigned a specific task
          +  2. Symmetric Multiprocessing(대칭 다중처리) - each processor performs all tasks
          +
          +### Symmetric Multiprocessing Architecture
          +#### Multiple Cores on a Single Chip
          +---
          +![alt text](../assets/img/OS/Symmetric_Multiprocessing.png)
          +>Symmetric Multiprocessing Architecture
          +
          +* Multiple single-core chip
          +  * 두 개의 개별 프로세서가 하나의 시스템에서 동작하며, 병렬 처리 성능을 향상시킴.
          +
          +#### Multi-chip and Multicore Systems
          +---
          +![alt text](../assets/img/OS/Dual-Core.png)
          +>Dual-Core Design
          +* Multi-chip and **multicore**
          +* Systems containing all chips
          +  * Chassis containing multiple separate systems(하나의 물리적 장치 내에 여러 개의 독립적인 컴퓨터 시스템이 존재하는 형태)
          +
          +### NUMA System
          +---
          +![alt text](../assets/img/OS/NUMA.png)
          +
          +* 여러 개의 CPU가 각각 독립적인 메모리(memory) 영역을 가지며, 다른 CPU의 메모리에 접근할 수도 있는 구조
          +* CPU 간 데이터를 공유할 수 있도록 **Interconnect(연결망)** 이 존재
          +* Scalability(확장성)이 뛰어나지만 **원격 메모리 접근은 성능 저하** 를 초래할 수 있음
          +* ex: Server, Data Center etc
          +
          +### Clustered Systems
          +---
          +![alt text](../assets/img/OS/Clustered_Systems.png)
          +>Clustered Systems
          +
          +* **Multiple systems** working together  
          +  (즉, 여러 대의 컴퓨터가 하나의 네트워크로 연결되어 공동 작업을 수행하는 방식)
          +
          +✅Features of Clustered Systems
          +1. **Storage Sharing**
          +  * 일반적으로 **Storage Area Network(SAN)**를 통해 여러 시스템이 동일한 저장소를 공유함
          +  * 데이터 일관성 유지 가능
          +2. Provides a **High Availability**
          +  * 시스템 장애 발생 시 다른 노드가 대신 작업을 수행하여 서비스 중단을 방지.
          +  * **Asymmetric Clustering has one machine in hot-standby mode**
          +  * **Symmetric Clustering has multiple nodes running applications, monitoring each other**
          +3. Some clutsers are for **High-Performance Computing(HPC)**
          +  * App must be written to use **parallelizaion(병렬 처리)**
          +4. **Distributed Lock Manager(DLM)**
          +  * DLM to avoid conflicting operations on shared storage
          +  * 데이터 무결성을 유지하고, 동시 접근 문제를 방지
          \ No newline at end of file
          diff --git a/_sass/addon/commons.scss b/_sass/addon/commons.scss
          index 5e8aceaa262..f1d12247f0c 100644
          --- a/_sass/addon/commons.scss
          +++ b/_sass/addon/commons.scss
          @@ -221,6 +221,8 @@ i {
               margin: 0 0.35rem 0.5rem 0;
           
               &:hover {
          +      border-color: #228b22 !important;
          +      background-color: #228b22;
                 transition: all 0.3s ease-in;
               }
             }
          diff --git a/_sass/addon/module.scss b/_sass/addon/module.scss
          index 1dfb735fd01..ead0a1a548d 100644
          --- a/_sass/addon/module.scss
          +++ b/_sass/addon/module.scss
          @@ -45,8 +45,8 @@
           }
           
           %link-hover {
          -  color: #d2603a !important;
          -  border-bottom: 1px solid #d2603a;
          +  color: #228b22 !important;
          +  //border-bottom: 1px solid #228b22;
             text-decoration: none;
           }
           
          @@ -55,7 +55,7 @@
           }
           
           %link-underline {
          -  border-bottom: 1px solid var(--link-underline-color);
          +  // border-bottom: 1px solid var(--link-underline-color);
           }
           
           %clickable-transition {
          diff --git a/_sass/colors/typography-dark.scss b/_sass/colors/typography-dark.scss
          index 664c93653e6..6401a622320 100644
          --- a/_sass/colors/typography-dark.scss
          +++ b/_sass/colors/typography-dark.scss
          @@ -11,13 +11,13 @@
             /* Common color */
             --text-color: rgb(175, 176, 177);
             --text-muted-color: #868686;
          -  --text-muted-highlight-color: #aeaeae;
          +  --text-muted-highlight-color: #228b22;
             --heading-color: #cccccc;
             --label-color: #a7a7a7;
             --blockquote-border-color: rgb(66, 66, 66);
             --blockquote-text-color: #868686;
          -  --link-color: rgb(138, 180, 248);
          -  --link-underline-color: rgb(82, 108, 150);
          +  --link-color: #228b22;
          +  --link-underline-color: rgb(111, 117, 119);
             --button-bg: #1e1e1e;
             --btn-border-color: #2e2f31;
             --btn-backtotop-color: var(--text-color);
          @@ -58,7 +58,7 @@
             --btn-paginator-hover-color: #2e2e2e;
           
             /* Posts */
          -  --toc-highlight: rgb(116, 178, 243);
          +  --toc-highlight: rgb(13, 158, 25);
             --toc-popup-border-color: #373737;
             --tag-hover: rgb(43, 56, 62);
             --tb-odd-bg: #252526; /* odd rows of the posts' table */
          diff --git a/_sass/dist/bootstrap.css b/_sass/dist/bootstrap.css
          new file mode 100644
          index 00000000000..d793309262e
          --- /dev/null
          +++ b/_sass/dist/bootstrap.css
          @@ -0,0 +1,1950 @@
          +@charset "UTF-8"; /*!
          + * Bootstrap  v5.3.3 (https://getbootstrap.com/)
          + * Copyright 2011-2024 The Bootstrap Authors
          + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
          + */
          +:root {
          +  --bs-success: #198754;
          +  --bs-danger: #dc3545;
          +  --bs-font-sans-serif: system-ui, -apple-system, 'Segoe UI', Roboto,
          +    'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif,
          +    'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
          +  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
          +    'Liberation Mono', 'Courier New', monospace;
          +  --bs-body-font-family: var(--bs-font-sans-serif);
          +  --bs-body-font-size: 1rem;
          +  --bs-body-font-weight: 400;
          +  --bs-body-line-height: 1.5;
          +  --bs-body-color: #212529;
          +  --bs-body-color-rgb: 33, 37, 41;
          +  --bs-body-bg: #fff;
          +  --bs-body-bg-rgb: 255, 255, 255;
          +  --bs-emphasis-color: #000;
          +  --bs-secondary-color: rgba(33, 37, 41, 0.75);
          +  --bs-secondary-bg: #e9ecef;
          +  --bs-tertiary-bg: #f8f9fa;
          +  --bs-heading-color: inherit;
          +  --bs-link-color: #0d6efd;
          +  --bs-link-color-rgb: 13, 110, 253;
          +  --bs-link-hover-color: #0a58ca;
          +  --bs-link-hover-color-rgb: 10, 88, 202;
          +  --bs-code-color: #d63384;
          +  --bs-border-width: 1px;
          +  --bs-border-style: solid;
          +  --bs-border-color: #dee2e6;
          +  --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
          +  --bs-border-radius: 0.375rem;
          +  --bs-border-radius-sm: 0.25rem;
          +  --bs-border-radius-lg: 0.5rem;
          +  --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
          +}
          +*,
          +::after,
          +::before {
          +  box-sizing: border-box;
          +}
          +@media (prefers-reduced-motion: no-preference) {
          +  :root {
          +    scroll-behavior: smooth;
          +  }
          +}
          +body {
          +  margin: 0;
          +  font-family: var(--bs-body-font-family);
          +  font-size: var(--bs-body-font-size);
          +  font-weight: var(--bs-body-font-weight);
          +  line-height: var(--bs-body-line-height);
          +  color: var(--bs-body-color);
          +  text-align: var(--bs-body-text-align);
          +  background-color: var(--bs-body-bg);
          +  -webkit-text-size-adjust: 100%;
          +  -webkit-tap-highlight-color: transparent;
          +}
          +hr {
          +  margin: 1rem 0;
          +  color: inherit;
          +  border: 0;
          +  border-top: var(--bs-border-width) solid;
          +  opacity: 0.25;
          +}
          +.h1,
          +.h2,
          +.h3,
          +.h4,
          +.h5,
          +.h6,
          +h1,
          +h2,
          +h3,
          +h4,
          +h5,
          +h6 {
          +  margin-top: 0;
          +  margin-bottom: 0.5rem;
          +  font-weight: 500;
          +  line-height: 1.2;
          +  color: var(--bs-heading-color);
          +}
          +.h1,
          +h1 {
          +  font-size: calc(1.375rem + 1.5vw);
          +}
          +@media (min-width: 1200px) {
          +  .h1,
          +  h1 {
          +    font-size: 2.5rem;
          +  }
          +}
          +.h2,
          +h2 {
          +  font-size: calc(1.325rem + 0.9vw);
          +}
          +@media (min-width: 1200px) {
          +  .h2,
          +  h2 {
          +    font-size: 2rem;
          +  }
          +}
          +.h3,
          +h3 {
          +  font-size: calc(1.3rem + 0.6vw);
          +}
          +@media (min-width: 1200px) {
          +  .h3,
          +  h3 {
          +    font-size: 1.75rem;
          +  }
          +}
          +.h4,
          +h4 {
          +  font-size: calc(1.275rem + 0.3vw);
          +}
          +@media (min-width: 1200px) {
          +  .h4,
          +  h4 {
          +    font-size: 1.5rem;
          +  }
          +}
          +.h5,
          +h5 {
          +  font-size: 1.25rem;
          +}
          +.h6,
          +h6 {
          +  font-size: 1rem;
          +}
          +p {
          +  margin-top: 0;
          +  margin-bottom: 1rem;
          +}
          +address {
          +  margin-bottom: 1rem;
          +  font-style: normal;
          +  line-height: inherit;
          +}
          +ol,
          +ul {
          +  padding-left: 2rem;
          +}
          +dl,
          +ol,
          +ul {
          +  margin-top: 0;
          +  margin-bottom: 1rem;
          +}
          +ol ol,
          +ol ul,
          +ul ol,
          +ul ul {
          +  margin-bottom: 0;
          +}
          +dt {
          +  font-weight: 700;
          +}
          +dd {
          +  margin-bottom: 0.5rem;
          +  margin-left: 0;
          +}
          +blockquote {
          +  margin: 0 0 1rem;
          +}
          +.small,
          +small {
          +  font-size: 0.875em;
          +}
          +a {
          +  color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
          +  text-decoration: underline;
          +}
          +a:hover {
          +  --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
          +}
          +a:not([href]):not([class]),
          +a:not([href]):not([class]):hover {
          +  color: inherit;
          +  text-decoration: none;
          +}
          +code,
          +kbd,
          +pre {
          +  font-family: var(--bs-font-monospace);
          +  font-size: 1rem;
          +}
          +pre {
          +  display: block;
          +  margin-top: 0;
          +  margin-bottom: 1rem;
          +  overflow: auto;
          +  font-size: 0.875em;
          +}
          +pre code {
          +  font-size: inherit;
          +  color: inherit;
          +  word-break: normal;
          +}
          +code {
          +  font-size: 0.875em;
          +  color: var(--bs-code-color);
          +  word-wrap: break-word;
          +}
          +a > code {
          +  color: inherit;
          +}
          +kbd {
          +  padding: 0.1875rem 0.375rem;
          +  font-size: 0.875em;
          +  color: var(--bs-body-bg);
          +  background-color: var(--bs-body-color);
          +  border-radius: 0.25rem;
          +}
          +kbd kbd {
          +  padding: 0;
          +  font-size: 1em;
          +}
          +figure {
          +  margin: 0 0 1rem;
          +}
          +img {
          +  vertical-align: middle;
          +}
          +table {
          +  caption-side: bottom;
          +  border-collapse: collapse;
          +}
          +caption {
          +  padding-top: 0.5rem;
          +  padding-bottom: 0.5rem;
          +  color: var(--bs-secondary-color);
          +  text-align: left;
          +}
          +th {
          +  text-align: inherit;
          +  text-align: -webkit-match-parent;
          +}
          +tbody,
          +td,
          +tfoot,
          +th,
          +thead,
          +tr {
          +  border-color: inherit;
          +  border-style: solid;
          +  border-width: 0;
          +}
          +label {
          +  display: inline-block;
          +}
          +button {
          +  border-radius: 0;
          +}
          +button:focus:not(:focus-visible) {
          +  outline: 0;
          +}
          +button,
          +input,
          +optgroup {
          +  margin: 0;
          +  font-family: inherit;
          +  font-size: inherit;
          +  line-height: inherit;
          +}
          +button {
          +  text-transform: none;
          +}
          +[role='button'] {
          +  cursor: pointer;
          +}
          +[list]:not([type='date']):not([type='datetime-local']):not([type='month']):not(
          +    [type='week']
          +  ):not([type='time'])::-webkit-calendar-picker-indicator {
          +  display: none !important;
          +}
          +[type='button'],
          +[type='reset'],
          +button {
          +  -webkit-appearance: button;
          +}
          +[type='button']:not(:disabled),
          +[type='reset']:not(:disabled),
          +button:not(:disabled) {
          +  cursor: pointer;
          +}
          +::-moz-focus-inner {
          +  padding: 0;
          +  border-style: none;
          +}
          +::-webkit-datetime-edit-day-field,
          +::-webkit-datetime-edit-fields-wrapper,
          +::-webkit-datetime-edit-hour-field,
          +::-webkit-datetime-edit-minute,
          +::-webkit-datetime-edit-month-field,
          +::-webkit-datetime-edit-text,
          +::-webkit-datetime-edit-year-field {
          +  padding: 0;
          +}
          +::-webkit-inner-spin-button {
          +  height: auto;
          +}
          +[type='search'] {
          +  -webkit-appearance: textfield;
          +  outline-offset: -2px;
          +}
          +::-webkit-search-decoration {
          +  -webkit-appearance: none;
          +}
          +::-webkit-color-swatch-wrapper {
          +  padding: 0;
          +}
          +::-webkit-file-upload-button {
          +  font: inherit;
          +  -webkit-appearance: button;
          +}
          +::file-selector-button {
          +  font: inherit;
          +  -webkit-appearance: button;
          +}
          +iframe {
          +  border: 0;
          +}
          +summary {
          +  display: list-item;
          +  cursor: pointer;
          +}
          +[hidden] {
          +  display: none !important;
          +}
          +.lead {
          +  font-size: 1.25rem;
          +  font-weight: 300;
          +}
          +.list-unstyled {
          +  padding-left: 0;
          +  list-style: none;
          +}
          +.blockquote {
          +  margin-bottom: 1rem;
          +  font-size: 1.25rem;
          +}
          +.blockquote > :last-child {
          +  margin-bottom: 0;
          +}
          +.figure {
          +  display: inline-block;
          +}
          +.container {
          +  --bs-gutter-x: 1.5rem;
          +  --bs-gutter-y: 0;
          +  width: 100%;
          +  padding-right: calc(var(--bs-gutter-x) * 0.5);
          +  padding-left: calc(var(--bs-gutter-x) * 0.5);
          +  margin-right: auto;
          +  margin-left: auto;
          +}
          +@media (min-width: 576px) {
          +  .container {
          +    max-width: 540px;
          +  }
          +}
          +@media (min-width: 768px) {
          +  .container {
          +    max-width: 720px;
          +  }
          +}
          +@media (min-width: 992px) {
          +  .container {
          +    max-width: 960px;
          +  }
          +}
          +@media (min-width: 1200px) {
          +  .container {
          +    max-width: 1140px;
          +  }
          +}
          +@media (min-width: 1400px) {
          +  .container {
          +    max-width: 1320px;
          +  }
          +}
          +:root {
          +}
          +.row {
          +  --bs-gutter-x: 1.5rem;
          +  --bs-gutter-y: 0;
          +  display: flex;
          +  flex-wrap: wrap;
          +  margin-top: calc(-1 * var(--bs-gutter-y));
          +  margin-right: calc(-0.5 * var(--bs-gutter-x));
          +  margin-left: calc(-0.5 * var(--bs-gutter-x));
          +}
          +.row > * {
          +  flex-shrink: 0;
          +  width: 100%;
          +  max-width: 100%;
          +  padding-right: calc(var(--bs-gutter-x) * 0.5);
          +  padding-left: calc(var(--bs-gutter-x) * 0.5);
          +  margin-top: var(--bs-gutter-y);
          +}
          +.col {
          +  flex: 1 0 0%;
          +}
          +.row-cols-1 > * {
          +  flex: 0 0 auto;
          +  width: 100%;
          +}
          +.col-auto {
          +  flex: 0 0 auto;
          +  width: auto;
          +}
          +.col-1 {
          +  flex: 0 0 auto;
          +  width: 8.33333333%;
          +}
          +.col-2 {
          +  flex: 0 0 auto;
          +  width: 16.66666667%;
          +}
          +.col-3 {
          +  flex: 0 0 auto;
          +  width: 25%;
          +}
          +.col-4 {
          +  flex: 0 0 auto;
          +  width: 33.33333333%;
          +}
          +.col-5 {
          +  flex: 0 0 auto;
          +  width: 41.66666667%;
          +}
          +.col-6 {
          +  flex: 0 0 auto;
          +  width: 50%;
          +}
          +.col-7 {
          +  flex: 0 0 auto;
          +  width: 58.33333333%;
          +}
          +.col-8 {
          +  flex: 0 0 auto;
          +  width: 66.66666667%;
          +}
          +.col-9 {
          +  flex: 0 0 auto;
          +  width: 75%;
          +}
          +.col-10 {
          +  flex: 0 0 auto;
          +  width: 83.33333333%;
          +}
          +.col-11 {
          +  flex: 0 0 auto;
          +  width: 91.66666667%;
          +}
          +.col-12 {
          +  flex: 0 0 auto;
          +  width: 100%;
          +}
          +.g-0 {
          +  --bs-gutter-x: 0;
          +}
          +.g-0 {
          +  --bs-gutter-y: 0;
          +}
          +.g-4 {
          +  --bs-gutter-x: 1.5rem;
          +}
          +.g-4 {
          +  --bs-gutter-y: 1.5rem;
          +}
          +@media (min-width: 576px) {
          +  .col-sm {
          +    flex: 1 0 0%;
          +  }
          +  .col-sm-auto {
          +    flex: 0 0 auto;
          +    width: auto;
          +  }
          +  .col-sm-1 {
          +    flex: 0 0 auto;
          +    width: 8.33333333%;
          +  }
          +  .col-sm-2 {
          +    flex: 0 0 auto;
          +    width: 16.66666667%;
          +  }
          +  .col-sm-3 {
          +    flex: 0 0 auto;
          +    width: 25%;
          +  }
          +  .col-sm-4 {
          +    flex: 0 0 auto;
          +    width: 33.33333333%;
          +  }
          +  .col-sm-5 {
          +    flex: 0 0 auto;
          +    width: 41.66666667%;
          +  }
          +  .col-sm-6 {
          +    flex: 0 0 auto;
          +    width: 50%;
          +  }
          +  .col-sm-7 {
          +    flex: 0 0 auto;
          +    width: 58.33333333%;
          +  }
          +  .col-sm-8 {
          +    flex: 0 0 auto;
          +    width: 66.66666667%;
          +  }
          +  .col-sm-9 {
          +    flex: 0 0 auto;
          +    width: 75%;
          +  }
          +  .col-sm-10 {
          +    flex: 0 0 auto;
          +    width: 83.33333333%;
          +  }
          +  .col-sm-11 {
          +    flex: 0 0 auto;
          +    width: 91.66666667%;
          +  }
          +  .col-sm-12 {
          +    flex: 0 0 auto;
          +    width: 100%;
          +  }
          +}
          +@media (min-width: 768px) {
          +  .col-md {
          +    flex: 1 0 0%;
          +  }
          +  .row-cols-md-2 > * {
          +    flex: 0 0 auto;
          +    width: 50%;
          +  }
          +  .col-md-auto {
          +    flex: 0 0 auto;
          +    width: auto;
          +  }
          +  .col-md-1 {
          +    flex: 0 0 auto;
          +    width: 8.33333333%;
          +  }
          +  .col-md-2 {
          +    flex: 0 0 auto;
          +    width: 16.66666667%;
          +  }
          +  .col-md-3 {
          +    flex: 0 0 auto;
          +    width: 25%;
          +  }
          +  .col-md-4 {
          +    flex: 0 0 auto;
          +    width: 33.33333333%;
          +  }
          +  .col-md-5 {
          +    flex: 0 0 auto;
          +    width: 41.66666667%;
          +  }
          +  .col-md-6 {
          +    flex: 0 0 auto;
          +    width: 50%;
          +  }
          +  .col-md-7 {
          +    flex: 0 0 auto;
          +    width: 58.33333333%;
          +  }
          +  .col-md-8 {
          +    flex: 0 0 auto;
          +    width: 66.66666667%;
          +  }
          +  .col-md-9 {
          +    flex: 0 0 auto;
          +    width: 75%;
          +  }
          +  .col-md-10 {
          +    flex: 0 0 auto;
          +    width: 83.33333333%;
          +  }
          +  .col-md-11 {
          +    flex: 0 0 auto;
          +    width: 91.66666667%;
          +  }
          +  .col-md-12 {
          +    flex: 0 0 auto;
          +    width: 100%;
          +  }
          +}
          +@media (min-width: 992px) {
          +  .col-lg {
          +    flex: 1 0 0%;
          +  }
          +  .col-lg-auto {
          +    flex: 0 0 auto;
          +    width: auto;
          +  }
          +  .col-lg-1 {
          +    flex: 0 0 auto;
          +    width: 8.33333333%;
          +  }
          +  .col-lg-2 {
          +    flex: 0 0 auto;
          +    width: 16.66666667%;
          +  }
          +  .col-lg-3 {
          +    flex: 0 0 auto;
          +    width: 25%;
          +  }
          +  .col-lg-4 {
          +    flex: 0 0 auto;
          +    width: 33.33333333%;
          +  }
          +  .col-lg-5 {
          +    flex: 0 0 auto;
          +    width: 41.66666667%;
          +  }
          +  .col-lg-6 {
          +    flex: 0 0 auto;
          +    width: 50%;
          +  }
          +  .col-lg-7 {
          +    flex: 0 0 auto;
          +    width: 58.33333333%;
          +  }
          +  .col-lg-8 {
          +    flex: 0 0 auto;
          +    width: 66.66666667%;
          +  }
          +  .col-lg-9 {
          +    flex: 0 0 auto;
          +    width: 75%;
          +  }
          +  .col-lg-10 {
          +    flex: 0 0 auto;
          +    width: 83.33333333%;
          +  }
          +  .col-lg-11 {
          +    flex: 0 0 auto;
          +    width: 91.66666667%;
          +  }
          +  .col-lg-12 {
          +    flex: 0 0 auto;
          +    width: 100%;
          +  }
          +}
          +@media (min-width: 1200px) {
          +  .col-xl {
          +    flex: 1 0 0%;
          +  }
          +  .row-cols-xl-3 > * {
          +    flex: 0 0 auto;
          +    width: 33.33333333%;
          +  }
          +  .col-xl-auto {
          +    flex: 0 0 auto;
          +    width: auto;
          +  }
          +  .col-xl-1 {
          +    flex: 0 0 auto;
          +    width: 8.33333333%;
          +  }
          +  .col-xl-2 {
          +    flex: 0 0 auto;
          +    width: 16.66666667%;
          +  }
          +  .col-xl-3 {
          +    flex: 0 0 auto;
          +    width: 25%;
          +  }
          +  .col-xl-4 {
          +    flex: 0 0 auto;
          +    width: 33.33333333%;
          +  }
          +  .col-xl-5 {
          +    flex: 0 0 auto;
          +    width: 41.66666667%;
          +  }
          +  .col-xl-6 {
          +    flex: 0 0 auto;
          +    width: 50%;
          +  }
          +  .col-xl-7 {
          +    flex: 0 0 auto;
          +    width: 58.33333333%;
          +  }
          +  .col-xl-8 {
          +    flex: 0 0 auto;
          +    width: 66.66666667%;
          +  }
          +  .col-xl-9 {
          +    flex: 0 0 auto;
          +    width: 75%;
          +  }
          +  .col-xl-10 {
          +    flex: 0 0 auto;
          +    width: 83.33333333%;
          +  }
          +  .col-xl-11 {
          +    flex: 0 0 auto;
          +    width: 91.66666667%;
          +  }
          +  .col-xl-12 {
          +    flex: 0 0 auto;
          +    width: 100%;
          +  }
          +}
          +@media (min-width: 1400px) {
          +  .col-xxl {
          +    flex: 1 0 0%;
          +  }
          +  .col-xxl-auto {
          +    flex: 0 0 auto;
          +    width: auto;
          +  }
          +  .col-xxl-1 {
          +    flex: 0 0 auto;
          +    width: 8.33333333%;
          +  }
          +  .col-xxl-2 {
          +    flex: 0 0 auto;
          +    width: 16.66666667%;
          +  }
          +  .col-xxl-3 {
          +    flex: 0 0 auto;
          +    width: 25%;
          +  }
          +  .col-xxl-4 {
          +    flex: 0 0 auto;
          +    width: 33.33333333%;
          +  }
          +  .col-xxl-5 {
          +    flex: 0 0 auto;
          +    width: 41.66666667%;
          +  }
          +  .col-xxl-6 {
          +    flex: 0 0 auto;
          +    width: 50%;
          +  }
          +  .col-xxl-7 {
          +    flex: 0 0 auto;
          +    width: 58.33333333%;
          +  }
          +  .col-xxl-8 {
          +    flex: 0 0 auto;
          +    width: 66.66666667%;
          +  }
          +  .col-xxl-9 {
          +    flex: 0 0 auto;
          +    width: 75%;
          +  }
          +  .col-xxl-10 {
          +    flex: 0 0 auto;
          +    width: 83.33333333%;
          +  }
          +  .col-xxl-11 {
          +    flex: 0 0 auto;
          +    width: 91.66666667%;
          +  }
          +  .col-xxl-12 {
          +    flex: 0 0 auto;
          +    width: 100%;
          +  }
          +}
          +.table {
          +  --bs-table-color-type: initial;
          +  --bs-table-bg-type: initial;
          +  --bs-table-color-state: initial;
          +  --bs-table-bg-state: initial;
          +  --bs-table-color: var(--bs-emphasis-color);
          +  --bs-table-bg: var(--bs-body-bg);
          +  --bs-table-border-color: var(--bs-border-color);
          +  --bs-table-accent-bg: transparent;
          +  width: 100%;
          +  margin-bottom: 1rem;
          +  vertical-align: top;
          +  border-color: var(--bs-table-border-color);
          +}
          +.table > :not(caption) > * > * {
          +  padding: 0.5rem 0.5rem;
          +  color: var(
          +    --bs-table-color-state,
          +    var(--bs-table-color-type, var(--bs-table-color))
          +  );
          +  background-color: var(--bs-table-bg);
          +  border-bottom-width: var(--bs-border-width);
          +  box-shadow: inset 0 0 0 9999px
          +    var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
          +}
          +.table > tbody {
          +  vertical-align: inherit;
          +}
          +.table > thead {
          +  vertical-align: bottom;
          +}
          +.col-form-label {
          +  padding-top: calc(0.375rem + var(--bs-border-width));
          +  padding-bottom: calc(0.375rem + var(--bs-border-width));
          +  margin-bottom: 0;
          +  font-size: inherit;
          +  line-height: 1.5;
          +}
          +.col-form-label-lg {
          +  padding-top: calc(0.5rem + var(--bs-border-width));
          +  padding-bottom: calc(0.5rem + var(--bs-border-width));
          +  font-size: 1.25rem;
          +}
          +.col-form-label-sm {
          +  padding-top: calc(0.25rem + var(--bs-border-width));
          +  padding-bottom: calc(0.25rem + var(--bs-border-width));
          +  font-size: 0.875rem;
          +}
          +.form-control {
          +  display: block;
          +  width: 100%;
          +  padding: 0.375rem 0.75rem;
          +  font-size: 1rem;
          +  font-weight: 400;
          +  line-height: 1.5;
          +  color: var(--bs-body-color);
          +  -webkit-appearance: none;
          +  -moz-appearance: none;
          +  appearance: none;
          +  background-color: var(--bs-body-bg);
          +  background-clip: padding-box;
          +  border: var(--bs-border-width) solid var(--bs-border-color);
          +  border-radius: var(--bs-border-radius);
          +  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
          +}
          +@media (prefers-reduced-motion: reduce) {
          +  .form-control {
          +    transition: none;
          +  }
          +}
          +.form-control[type='file'] {
          +  overflow: hidden;
          +}
          +.form-control[type='file']:not(:disabled):not([readonly]) {
          +  cursor: pointer;
          +}
          +.form-control:focus {
          +  color: var(--bs-body-color);
          +  background-color: var(--bs-body-bg);
          +  border-color: #86b7fe;
          +  outline: 0;
          +  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
          +}
          +.form-control::-webkit-date-and-time-value {
          +  min-width: 85px;
          +  height: 1.5em;
          +  margin: 0;
          +}
          +.form-control::-webkit-datetime-edit {
          +  display: block;
          +  padding: 0;
          +}
          +.form-control::-moz-placeholder {
          +  color: var(--bs-secondary-color);
          +  opacity: 1;
          +}
          +.form-control::placeholder {
          +  color: var(--bs-secondary-color);
          +  opacity: 1;
          +}
          +.form-control:disabled {
          +  background-color: var(--bs-secondary-bg);
          +  opacity: 1;
          +}
          +.form-control::-webkit-file-upload-button {
          +  padding: 0.375rem 0.75rem;
          +  margin: -0.375rem -0.75rem;
          +  -webkit-margin-end: 0.75rem;
          +  margin-inline-end: 0.75rem;
          +  color: var(--bs-body-color);
          +  background-color: var(--bs-tertiary-bg);
          +  pointer-events: none;
          +  border-color: inherit;
          +  border-style: solid;
          +  border-width: 0;
          +  border-inline-end-width: var(--bs-border-width);
          +  border-radius: 0;
          +  -webkit-transition: color 0.15s ease-in-out,
          +    background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
          +    box-shadow 0.15s ease-in-out;
          +  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
          +    border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
          +}
          +.form-control::file-selector-button {
          +  padding: 0.375rem 0.75rem;
          +  margin: -0.375rem -0.75rem;
          +  -webkit-margin-end: 0.75rem;
          +  margin-inline-end: 0.75rem;
          +  color: var(--bs-body-color);
          +  background-color: var(--bs-tertiary-bg);
          +  pointer-events: none;
          +  border-color: inherit;
          +  border-style: solid;
          +  border-width: 0;
          +  border-inline-end-width: var(--bs-border-width);
          +  border-radius: 0;
          +  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
          +    border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
          +}
          +@media (prefers-reduced-motion: reduce) {
          +  .form-control::-webkit-file-upload-button {
          +    -webkit-transition: none;
          +    transition: none;
          +  }
          +  .form-control::file-selector-button {
          +    transition: none;
          +  }
          +}
          +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
          +  background-color: var(--bs-secondary-bg);
          +}
          +.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
          +  background-color: var(--bs-secondary-bg);
          +}
          +.valid-tooltip {
          +  position: absolute;
          +  top: 100%;
          +  z-index: 5;
          +  display: none;
          +  max-width: 100%;
          +  padding: 0.25rem 0.5rem;
          +  margin-top: 0.1rem;
          +  font-size: 0.875rem;
          +  color: #fff;
          +  background-color: var(--bs-success);
          +  border-radius: var(--bs-border-radius);
          +}
          +.is-valid ~ .valid-tooltip,
          +.was-validated :valid ~ .valid-tooltip {
          +  display: block;
          +}
          +.invalid-tooltip {
          +  position: absolute;
          +  top: 100%;
          +  z-index: 5;
          +  display: none;
          +  max-width: 100%;
          +  padding: 0.25rem 0.5rem;
          +  margin-top: 0.1rem;
          +  font-size: 0.875rem;
          +  color: #fff;
          +  background-color: var(--bs-danger);
          +  border-radius: var(--bs-border-radius);
          +}
          +.is-invalid ~ .invalid-tooltip,
          +.was-validated :invalid ~ .invalid-tooltip {
          +  display: block;
          +}
          +.btn {
          +  --bs-btn-padding-x: 0.75rem;
          +  --bs-btn-padding-y: 0.375rem;
          +  --bs-btn-font-family: ;
          +  --bs-btn-font-size: 1rem;
          +  --bs-btn-font-weight: 400;
          +  --bs-btn-line-height: 1.5;
          +  --bs-btn-color: var(--bs-body-color);
          +  --bs-btn-bg: transparent;
          +  --bs-btn-border-width: var(--bs-border-width);
          +  --bs-btn-border-color: transparent;
          +  --bs-btn-border-radius: var(--bs-border-radius);
          +  --bs-btn-hover-border-color: transparent;
          +  --bs-btn-disabled-opacity: 0.65;
          +  --bs-btn-focus-box-shadow: 0 0 0 0.25rem
          +    rgba(var(--bs-btn-focus-shadow-rgb), 0.5);
          +  display: inline-block;
          +  padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
          +  font-family: var(--bs-btn-font-family);
          +  font-size: var(--bs-btn-font-size);
          +  font-weight: var(--bs-btn-font-weight);
          +  line-height: var(--bs-btn-line-height);
          +  color: var(--bs-btn-color);
          +  text-align: center;
          +  text-decoration: none;
          +  vertical-align: middle;
          +  cursor: pointer;
          +  -webkit-user-select: none;
          +  -moz-user-select: none;
          +  user-select: none;
          +  border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
          +  border-radius: var(--bs-btn-border-radius);
          +  background-color: var(--bs-btn-bg);
          +  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
          +    border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
          +}
          +@media (prefers-reduced-motion: reduce) {
          +  .btn {
          +    transition: none;
          +  }
          +}
          +.btn:hover {
          +  color: var(--bs-btn-hover-color);
          +  background-color: var(--bs-btn-hover-bg);
          +  border-color: var(--bs-btn-hover-border-color);
          +}
          +.btn:focus-visible {
          +  color: var(--bs-btn-hover-color);
          +  background-color: var(--bs-btn-hover-bg);
          +  border-color: var(--bs-btn-hover-border-color);
          +  outline: 0;
          +  box-shadow: var(--bs-btn-focus-box-shadow);
          +}
          +.btn.active,
          +.btn.show,
          +.btn:first-child:active,
          +:not(.btn-check) + .btn:active {
          +  color: var(--bs-btn-active-color);
          +  background-color: var(--bs-btn-active-bg);
          +  border-color: var(--bs-btn-active-border-color);
          +}
          +.btn.active:focus-visible,
          +.btn.show:focus-visible,
          +.btn:first-child:active:focus-visible,
          +:not(.btn-check) + .btn:active:focus-visible {
          +  box-shadow: var(--bs-btn-focus-box-shadow);
          +}
          +.btn.disabled,
          +.btn:disabled {
          +  color: var(--bs-btn-disabled-color);
          +  pointer-events: none;
          +  background-color: var(--bs-btn-disabled-bg);
          +  border-color: var(--bs-btn-disabled-border-color);
          +  opacity: var(--bs-btn-disabled-opacity);
          +}
          +.btn-primary {
          +  --bs-btn-color: #fff;
          +  --bs-btn-bg: #0d6efd;
          +  --bs-btn-border-color: #0d6efd;
          +  --bs-btn-hover-color: #fff;
          +  --bs-btn-hover-bg: #0b5ed7;
          +  --bs-btn-hover-border-color: #0a58ca;
          +  --bs-btn-focus-shadow-rgb: 49, 132, 253;
          +  --bs-btn-active-color: #fff;
          +  --bs-btn-active-bg: #0a58ca;
          +  --bs-btn-active-border-color: #0a53be;
          +  --bs-btn-disabled-color: #fff;
          +  --bs-btn-disabled-bg: #0d6efd;
          +  --bs-btn-disabled-border-color: #0d6efd;
          +}
          +.btn-outline-primary {
          +  --bs-btn-color: #0d6efd;
          +  --bs-btn-border-color: #0d6efd;
          +  --bs-btn-hover-color: #fff;
          +  --bs-btn-hover-bg: #0d6efd;
          +  --bs-btn-hover-border-color: #0d6efd;
          +  --bs-btn-focus-shadow-rgb: 13, 110, 253;
          +  --bs-btn-active-color: #fff;
          +  --bs-btn-active-bg: #0d6efd;
          +  --bs-btn-active-border-color: #0d6efd;
          +  --bs-btn-disabled-color: #0d6efd;
          +  --bs-btn-disabled-bg: transparent;
          +  --bs-btn-disabled-border-color: #0d6efd;
          +}
          +.btn-outline-secondary {
          +  --bs-btn-color: #6c757d;
          +  --bs-btn-border-color: #6c757d;
          +  --bs-btn-hover-color: #fff;
          +  --bs-btn-hover-bg: #6c757d;
          +  --bs-btn-hover-border-color: #6c757d;
          +  --bs-btn-focus-shadow-rgb: 108, 117, 125;
          +  --bs-btn-active-color: #fff;
          +  --bs-btn-active-bg: #6c757d;
          +  --bs-btn-active-border-color: #6c757d;
          +  --bs-btn-disabled-color: #6c757d;
          +  --bs-btn-disabled-bg: transparent;
          +  --bs-btn-disabled-border-color: #6c757d;
          +}
          +.btn-link {
          +  --bs-btn-font-weight: 400;
          +  --bs-btn-color: var(--bs-link-color);
          +  --bs-btn-bg: transparent;
          +  --bs-btn-border-color: transparent;
          +  --bs-btn-hover-color: var(--bs-link-hover-color);
          +  --bs-btn-hover-border-color: transparent;
          +  --bs-btn-active-color: var(--bs-link-hover-color);
          +  --bs-btn-active-border-color: transparent;
          +  --bs-btn-disabled-color: #6c757d;
          +  --bs-btn-disabled-border-color: transparent;
          +  --bs-btn-focus-shadow-rgb: 49, 132, 253;
          +  text-decoration: underline;
          +}
          +.btn-link:focus-visible {
          +  color: var(--bs-btn-color);
          +}
          +.btn-link:hover {
          +  color: var(--bs-btn-hover-color);
          +}
          +.btn-lg {
          +  --bs-btn-padding-y: 0.5rem;
          +  --bs-btn-padding-x: 1rem;
          +  --bs-btn-font-size: 1.25rem;
          +  --bs-btn-border-radius: var(--bs-border-radius-lg);
          +}
          +.btn-sm {
          +  --bs-btn-padding-y: 0.25rem;
          +  --bs-btn-padding-x: 0.5rem;
          +  --bs-btn-font-size: 0.875rem;
          +  --bs-btn-border-radius: var(--bs-border-radius-sm);
          +}
          +.collapse:not(.show) {
          +  display: none;
          +}
          +.collapsing {
          +  height: 0;
          +  overflow: hidden;
          +  transition: height 0.35s ease;
          +}
          +@media (prefers-reduced-motion: reduce) {
          +  .collapsing {
          +    transition: none;
          +  }
          +}
          +.collapsing.collapse-horizontal {
          +  width: 0;
          +  height: auto;
          +  transition: width 0.35s ease;
          +}
          +@media (prefers-reduced-motion: reduce) {
          +  .collapsing.collapse-horizontal {
          +    transition: none;
          +  }
          +}
          +.nav {
          +  --bs-nav-link-padding-x: 1rem;
          +  --bs-nav-link-padding-y: 0.5rem;
          +  --bs-nav-link-font-weight: ;
          +  --bs-nav-link-color: var(--bs-link-color);
          +  --bs-nav-link-hover-color: var(--bs-link-hover-color);
          +  --bs-nav-link-disabled-color: var(--bs-secondary-color);
          +  display: flex;
          +  flex-wrap: wrap;
          +  padding-left: 0;
          +  margin-bottom: 0;
          +  list-style: none;
          +}
          +.nav-link {
          +  display: block;
          +  padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
          +  font-size: var(--bs-nav-link-font-size);
          +  font-weight: var(--bs-nav-link-font-weight);
          +  color: var(--bs-nav-link-color);
          +  text-decoration: none;
          +  background: 0 0;
          +  border: 0;
          +  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
          +    border-color 0.15s ease-in-out;
          +}
          +@media (prefers-reduced-motion: reduce) {
          +  .nav-link {
          +    transition: none;
          +  }
          +}
          +.nav-link:focus,
          +.nav-link:hover {
          +  color: var(--bs-nav-link-hover-color);
          +}
          +.nav-link:focus-visible {
          +  outline: 0;
          +  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
          +}
          +.nav-link.disabled,
          +.nav-link:disabled {
          +  color: var(--bs-nav-link-disabled-color);
          +  pointer-events: none;
          +  cursor: default;
          +}
          +.card {
          +  --bs-card-spacer-y: 1rem;
          +  --bs-card-spacer-x: 1rem;
          +  --bs-card-title-spacer-y: 0.5rem;
          +  --bs-card-title-color: ;
          +  --bs-card-border-width: var(--bs-border-width);
          +  --bs-card-border-color: var(--bs-border-color-translucent);
          +  --bs-card-border-radius: var(--bs-border-radius);
          +  --bs-card-inner-border-radius: calc(
          +    var(--bs-border-radius) - (var(--bs-border-width))
          +  );
          +  --bs-card-cap-padding-y: 0.5rem;
          +  --bs-card-cap-padding-x: 1rem;
          +  --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);
          +  --bs-card-cap-color: ;
          +  --bs-card-height: ;
          +  --bs-card-color: ;
          +  --bs-card-bg: var(--bs-body-bg);
          +  position: relative;
          +  display: flex;
          +  flex-direction: column;
          +  min-width: 0;
          +  height: var(--bs-card-height);
          +  color: var(--bs-body-color);
          +  word-wrap: break-word;
          +  background-color: var(--bs-card-bg);
          +  background-clip: border-box;
          +  border: var(--bs-card-border-width) solid var(--bs-card-border-color);
          +  border-radius: var(--bs-card-border-radius);
          +}
          +.card > hr {
          +  margin-right: 0;
          +  margin-left: 0;
          +}
          +.card > .list-group {
          +  border-top: inherit;
          +  border-bottom: inherit;
          +}
          +.card > .list-group:first-child {
          +  border-top-width: 0;
          +  border-top-left-radius: var(--bs-card-inner-border-radius);
          +  border-top-right-radius: var(--bs-card-inner-border-radius);
          +}
          +.card > .list-group:last-child {
          +  border-bottom-width: 0;
          +  border-bottom-right-radius: var(--bs-card-inner-border-radius);
          +  border-bottom-left-radius: var(--bs-card-inner-border-radius);
          +}
          +.card > .card-header + .list-group {
          +  border-top: 0;
          +}
          +.card-body {
          +  flex: 1 1 auto;
          +  padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
          +  color: var(--bs-card-color);
          +}
          +.card-title {
          +  margin-bottom: var(--bs-card-title-spacer-y);
          +  color: var(--bs-card-title-color);
          +}
          +.card-text:last-child {
          +  margin-bottom: 0;
          +}
          +.card-header {
          +  padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
          +  margin-bottom: 0;
          +  color: var(--bs-card-cap-color);
          +  background-color: var(--bs-card-cap-bg);
          +  border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
          +}
          +.card-header:first-child {
          +  border-radius: var(--bs-card-inner-border-radius)
          +    var(--bs-card-inner-border-radius) 0 0;
          +}
          +.breadcrumb {
          +  --bs-breadcrumb-padding-x: 0;
          +  --bs-breadcrumb-padding-y: 0;
          +  --bs-breadcrumb-margin-bottom: 1rem;
          +  --bs-breadcrumb-bg: ;
          +  --bs-breadcrumb-border-radius: ;
          +  display: flex;
          +  flex-wrap: wrap;
          +  padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
          +  margin-bottom: var(--bs-breadcrumb-margin-bottom);
          +  font-size: var(--bs-breadcrumb-font-size);
          +  list-style: none;
          +  background-color: var(--bs-breadcrumb-bg);
          +  border-radius: var(--bs-breadcrumb-border-radius);
          +}
          +.pagination {
          +  --bs-pagination-padding-x: 0.75rem;
          +  --bs-pagination-padding-y: 0.375rem;
          +  --bs-pagination-font-size: 1rem;
          +  --bs-pagination-color: var(--bs-link-color);
          +  --bs-pagination-bg: var(--bs-body-bg);
          +  --bs-pagination-border-width: var(--bs-border-width);
          +  --bs-pagination-border-color: var(--bs-border-color);
          +  --bs-pagination-border-radius: var(--bs-border-radius);
          +  --bs-pagination-hover-color: var(--bs-link-hover-color);
          +  --bs-pagination-hover-bg: var(--bs-tertiary-bg);
          +  --bs-pagination-hover-border-color: var(--bs-border-color);
          +  --bs-pagination-focus-color: var(--bs-link-hover-color);
          +  --bs-pagination-focus-bg: var(--bs-secondary-bg);
          +  --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
          +  --bs-pagination-active-color: #fff;
          +  --bs-pagination-active-bg: #0d6efd;
          +  --bs-pagination-active-border-color: #0d6efd;
          +  --bs-pagination-disabled-color: var(--bs-secondary-color);
          +  --bs-pagination-disabled-bg: var(--bs-secondary-bg);
          +  --bs-pagination-disabled-border-color: var(--bs-border-color);
          +  display: flex;
          +  padding-left: 0;
          +  list-style: none;
          +}
          +.page-link {
          +  position: relative;
          +  display: block;
          +  padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);
          +  font-size: var(--bs-pagination-font-size);
          +  color: var(--bs-pagination-color);
          +  text-decoration: none;
          +  background-color: var(--bs-pagination-bg);
          +  border: var(--bs-pagination-border-width) solid
          +    var(--bs-pagination-border-color);
          +  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
          +    border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
          +}
          +@media (prefers-reduced-motion: reduce) {
          +  .page-link {
          +    transition: none;
          +  }
          +}
          +.page-link:hover {
          +  z-index: 2;
          +  color: var(--bs-pagination-hover-color);
          +  background-color: var(--bs-pagination-hover-bg);
          +  border-color: var(--bs-pagination-hover-border-color);
          +}
          +.page-link:focus {
          +  z-index: 3;
          +  color: var(--bs-pagination-focus-color);
          +  background-color: var(--bs-pagination-focus-bg);
          +  outline: 0;
          +  box-shadow: var(--bs-pagination-focus-box-shadow);
          +}
          +.active > .page-link,
          +.page-link.active {
          +  z-index: 3;
          +  color: var(--bs-pagination-active-color);
          +  background-color: var(--bs-pagination-active-bg);
          +  border-color: var(--bs-pagination-active-border-color);
          +}
          +.disabled > .page-link,
          +.page-link.disabled {
          +  color: var(--bs-pagination-disabled-color);
          +  pointer-events: none;
          +  background-color: var(--bs-pagination-disabled-bg);
          +  border-color: var(--bs-pagination-disabled-border-color);
          +}
          +.page-item:not(:first-child) .page-link {
          +  margin-left: calc(var(--bs-border-width) * -1);
          +}
          +.page-item:first-child .page-link {
          +  border-top-left-radius: var(--bs-pagination-border-radius);
          +  border-bottom-left-radius: var(--bs-pagination-border-radius);
          +}
          +.page-item:last-child .page-link {
          +  border-top-right-radius: var(--bs-pagination-border-radius);
          +  border-bottom-right-radius: var(--bs-pagination-border-radius);
          +}
          +.alert {
          +  --bs-alert-bg: transparent;
          +  --bs-alert-padding-x: 1rem;
          +  --bs-alert-padding-y: 1rem;
          +  --bs-alert-margin-bottom: 1rem;
          +  --bs-alert-color: inherit;
          +  --bs-alert-border-color: transparent;
          +  --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
          +  --bs-alert-border-radius: var(--bs-border-radius);
          +  position: relative;
          +  padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
          +  margin-bottom: var(--bs-alert-margin-bottom);
          +  color: var(--bs-alert-color);
          +  background-color: var(--bs-alert-bg);
          +  border: var(--bs-alert-border);
          +  border-radius: var(--bs-alert-border-radius);
          +}
          +.list-group {
          +  --bs-list-group-color: var(--bs-body-color);
          +  --bs-list-group-bg: var(--bs-body-bg);
          +  --bs-list-group-border-color: var(--bs-border-color);
          +  --bs-list-group-border-width: var(--bs-border-width);
          +  --bs-list-group-border-radius: var(--bs-border-radius);
          +  --bs-list-group-item-padding-x: 1rem;
          +  --bs-list-group-item-padding-y: 0.5rem;
          +  --bs-list-group-disabled-color: var(--bs-secondary-color);
          +  --bs-list-group-disabled-bg: var(--bs-body-bg);
          +  --bs-list-group-active-color: #fff;
          +  --bs-list-group-active-bg: #0d6efd;
          +  --bs-list-group-active-border-color: #0d6efd;
          +  display: flex;
          +  flex-direction: column;
          +  padding-left: 0;
          +  margin-bottom: 0;
          +  border-radius: var(--bs-list-group-border-radius);
          +}
          +.list-group-item {
          +  position: relative;
          +  display: block;
          +  padding: var(--bs-list-group-item-padding-y)
          +    var(--bs-list-group-item-padding-x);
          +  color: var(--bs-list-group-color);
          +  text-decoration: none;
          +  background-color: var(--bs-list-group-bg);
          +  border: var(--bs-list-group-border-width) solid
          +    var(--bs-list-group-border-color);
          +}
          +.list-group-item:first-child {
          +  border-top-left-radius: inherit;
          +  border-top-right-radius: inherit;
          +}
          +.list-group-item:last-child {
          +  border-bottom-right-radius: inherit;
          +  border-bottom-left-radius: inherit;
          +}
          +.list-group-item.disabled,
          +.list-group-item:disabled {
          +  color: var(--bs-list-group-disabled-color);
          +  pointer-events: none;
          +  background-color: var(--bs-list-group-disabled-bg);
          +}
          +.list-group-item.active {
          +  z-index: 2;
          +  color: var(--bs-list-group-active-color);
          +  background-color: var(--bs-list-group-active-bg);
          +  border-color: var(--bs-list-group-active-border-color);
          +}
          +.list-group-item + .list-group-item {
          +  border-top-width: 0;
          +}
          +.list-group-item + .list-group-item.active {
          +  margin-top: calc(-1 * var(--bs-list-group-border-width));
          +  border-top-width: var(--bs-list-group-border-width);
          +}
          +.btn-close {
          +  --bs-btn-close-color: #000;
          +  --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
          +  --bs-btn-close-opacity: 0.5;
          +  --bs-btn-close-hover-opacity: 0.75;
          +  --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
          +  --bs-btn-close-focus-opacity: 1;
          +  --bs-btn-close-disabled-opacity: 0.25;
          +  box-sizing: content-box;
          +  width: 1em;
          +  height: 1em;
          +  padding: 0.25em 0.25em;
          +  color: var(--bs-btn-close-color);
          +  background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
          +  border: 0;
          +  border-radius: 0.375rem;
          +  opacity: var(--bs-btn-close-opacity);
          +}
          +.btn-close:hover {
          +  color: var(--bs-btn-close-color);
          +  text-decoration: none;
          +  opacity: var(--bs-btn-close-hover-opacity);
          +}
          +.btn-close:focus {
          +  outline: 0;
          +  box-shadow: var(--bs-btn-close-focus-shadow);
          +  opacity: var(--bs-btn-close-focus-opacity);
          +}
          +.btn-close.disabled,
          +.btn-close:disabled {
          +  pointer-events: none;
          +  -webkit-user-select: none;
          +  -moz-user-select: none;
          +  user-select: none;
          +  opacity: var(--bs-btn-close-disabled-opacity);
          +}
          +.toast {
          +  --bs-toast-padding-x: 0.75rem;
          +  --bs-toast-padding-y: 0.5rem;
          +  --bs-toast-max-width: 350px;
          +  --bs-toast-font-size: 0.875rem;
          +  --bs-toast-color: ;
          +  --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);
          +  --bs-toast-border-width: var(--bs-border-width);
          +  --bs-toast-border-color: var(--bs-border-color-translucent);
          +  --bs-toast-border-radius: var(--bs-border-radius);
          +  --bs-toast-box-shadow: var(--bs-box-shadow);
          +  --bs-toast-header-color: var(--bs-secondary-color);
          +  --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);
          +  --bs-toast-header-border-color: var(--bs-border-color-translucent);
          +  width: var(--bs-toast-max-width);
          +  max-width: 100%;
          +  font-size: var(--bs-toast-font-size);
          +  color: var(--bs-toast-color);
          +  pointer-events: auto;
          +  background-color: var(--bs-toast-bg);
          +  background-clip: padding-box;
          +  border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);
          +  box-shadow: var(--bs-toast-box-shadow);
          +  border-radius: var(--bs-toast-border-radius);
          +}
          +.toast:not(.show) {
          +  display: none;
          +}
          +.toast-header {
          +  display: flex;
          +  align-items: center;
          +  padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);
          +  color: var(--bs-toast-header-color);
          +  background-color: var(--bs-toast-header-bg);
          +  background-clip: padding-box;
          +  border-bottom: var(--bs-toast-border-width) solid
          +    var(--bs-toast-header-border-color);
          +  border-top-left-radius: calc(
          +    var(--bs-toast-border-radius) - var(--bs-toast-border-width)
          +  );
          +  border-top-right-radius: calc(
          +    var(--bs-toast-border-radius) - var(--bs-toast-border-width)
          +  );
          +}
          +.toast-header .btn-close {
          +  margin-right: calc(-0.5 * var(--bs-toast-padding-x));
          +  margin-left: var(--bs-toast-padding-x);
          +}
          +.toast-body {
          +  padding: var(--bs-toast-padding-x);
          +  word-wrap: break-word;
          +}
          +.tooltip {
          +  --bs-tooltip-zindex: 1080;
          +  --bs-tooltip-max-width: 200px;
          +  --bs-tooltip-padding-x: 0.5rem;
          +  --bs-tooltip-padding-y: 0.25rem;
          +  --bs-tooltip-margin: ;
          +  --bs-tooltip-font-size: 0.875rem;
          +  --bs-tooltip-color: var(--bs-body-bg);
          +  --bs-tooltip-bg: var(--bs-emphasis-color);
          +  --bs-tooltip-border-radius: var(--bs-border-radius);
          +  --bs-tooltip-opacity: 0.9;
          +  --bs-tooltip-arrow-width: 0.8rem;
          +  --bs-tooltip-arrow-height: 0.4rem;
          +  z-index: var(--bs-tooltip-zindex);
          +  display: block;
          +  margin: var(--bs-tooltip-margin);
          +  font-family: var(--bs-font-sans-serif);
          +  font-style: normal;
          +  font-weight: 400;
          +  line-height: 1.5;
          +  text-align: left;
          +  text-align: start;
          +  text-decoration: none;
          +  text-shadow: none;
          +  text-transform: none;
          +  letter-spacing: normal;
          +  word-break: normal;
          +  white-space: normal;
          +  word-spacing: normal;
          +  line-break: auto;
          +  font-size: var(--bs-tooltip-font-size);
          +  word-wrap: break-word;
          +  opacity: 0;
          +}
          +.tooltip.show {
          +  opacity: var(--bs-tooltip-opacity);
          +}
          +.tooltip .tooltip-arrow {
          +  display: block;
          +  width: var(--bs-tooltip-arrow-width);
          +  height: var(--bs-tooltip-arrow-height);
          +}
          +.tooltip .tooltip-arrow::before {
          +  position: absolute;
          +  content: '';
          +  border-color: transparent;
          +  border-style: solid;
          +}
          +.bs-tooltip-auto[data-popper-placement^='top'] .tooltip-arrow,
          +.bs-tooltip-top .tooltip-arrow {
          +  bottom: calc(-1 * var(--bs-tooltip-arrow-height));
          +}
          +.bs-tooltip-auto[data-popper-placement^='top'] .tooltip-arrow::before,
          +.bs-tooltip-top .tooltip-arrow::before {
          +  top: -1px;
          +  border-width: var(--bs-tooltip-arrow-height)
          +    calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
          +  border-top-color: var(--bs-tooltip-bg);
          +}
          +.bs-tooltip-auto[data-popper-placement^='right'] .tooltip-arrow,
          +.bs-tooltip-end .tooltip-arrow {
          +  left: calc(-1 * var(--bs-tooltip-arrow-height));
          +  width: var(--bs-tooltip-arrow-height);
          +  height: var(--bs-tooltip-arrow-width);
          +}
          +.bs-tooltip-auto[data-popper-placement^='right'] .tooltip-arrow::before,
          +.bs-tooltip-end .tooltip-arrow::before {
          +  right: -1px;
          +  border-width: calc(var(--bs-tooltip-arrow-width) * 0.5)
          +    var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
          +  border-right-color: var(--bs-tooltip-bg);
          +}
          +.bs-tooltip-auto[data-popper-placement^='bottom'] .tooltip-arrow,
          +.bs-tooltip-bottom .tooltip-arrow {
          +  top: calc(-1 * var(--bs-tooltip-arrow-height));
          +}
          +.bs-tooltip-auto[data-popper-placement^='bottom'] .tooltip-arrow::before,
          +.bs-tooltip-bottom .tooltip-arrow::before {
          +  bottom: -1px;
          +  border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5)
          +    var(--bs-tooltip-arrow-height);
          +  border-bottom-color: var(--bs-tooltip-bg);
          +}
          +.bs-tooltip-auto[data-popper-placement^='left'] .tooltip-arrow,
          +.bs-tooltip-start .tooltip-arrow {
          +  right: calc(-1 * var(--bs-tooltip-arrow-height));
          +  width: var(--bs-tooltip-arrow-height);
          +  height: var(--bs-tooltip-arrow-width);
          +}
          +.bs-tooltip-auto[data-popper-placement^='left'] .tooltip-arrow::before,
          +.bs-tooltip-start .tooltip-arrow::before {
          +  left: -1px;
          +  border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0
          +    calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
          +  border-left-color: var(--bs-tooltip-bg);
          +}
          +.tooltip-inner {
          +  max-width: var(--bs-tooltip-max-width);
          +  padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);
          +  color: var(--bs-tooltip-color);
          +  text-align: center;
          +  background-color: var(--bs-tooltip-bg);
          +  border-radius: var(--bs-tooltip-border-radius);
          +}
          +.placeholder {
          +  display: inline-block;
          +  min-height: 1em;
          +  vertical-align: middle;
          +  cursor: wait;
          +  background-color: currentcolor;
          +  opacity: 0.5;
          +}
          +.placeholder.btn::before {
          +  display: inline-block;
          +  content: '';
          +}
          +.text-truncate {
          +  overflow: hidden;
          +  text-overflow: ellipsis;
          +  white-space: nowrap;
          +}
          +.align-middle {
          +  vertical-align: middle !important;
          +}
          +.opacity-75 {
          +  opacity: 0.75 !important;
          +}
          +.overflow-hidden {
          +  overflow: hidden !important;
          +}
          +.d-block {
          +  display: block !important;
          +}
          +.d-flex {
          +  display: flex !important;
          +}
          +.d-none {
          +  display: none !important;
          +}
          +.shadow {
          +  box-shadow: var(--bs-box-shadow) !important;
          +}
          +.position-fixed {
          +  position: fixed !important;
          +}
          +.border {
          +  border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
          +}
          +.w-25 {
          +  width: 25% !important;
          +}
          +.w-50 {
          +  width: 50% !important;
          +}
          +.w-75 {
          +  width: 75% !important;
          +}
          +.w-100 {
          +  width: 100% !important;
          +}
          +.w-auto {
          +  width: auto !important;
          +}
          +.h-100 {
          +  height: 100% !important;
          +}
          +.flex-row {
          +  flex-direction: row !important;
          +}
          +.flex-column {
          +  flex-direction: column !important;
          +}
          +.flex-grow-1 {
          +  flex-grow: 1 !important;
          +}
          +.flex-wrap {
          +  flex-wrap: wrap !important;
          +}
          +.justify-content-center {
          +  justify-content: center !important;
          +}
          +.justify-content-between {
          +  justify-content: space-between !important;
          +}
          +.align-items-end {
          +  align-items: flex-end !important;
          +}
          +.align-items-center {
          +  align-items: center !important;
          +}
          +.mx-1 {
          +  margin-right: 0.25rem !important;
          +  margin-left: 0.25rem !important;
          +}
          +.mx-2 {
          +  margin-right: 0.5rem !important;
          +  margin-left: 0.5rem !important;
          +}
          +.my-1 {
          +  margin-top: 0.25rem !important;
          +  margin-bottom: 0.25rem !important;
          +}
          +.my-2 {
          +  margin-top: 0.5rem !important;
          +  margin-bottom: 0.5rem !important;
          +}
          +.mt-0 {
          +  margin-top: 0 !important;
          +}
          +.mt-1 {
          +  margin-top: 0.25rem !important;
          +}
          +.mt-2 {
          +  margin-top: 0.5rem !important;
          +}
          +.mt-3 {
          +  margin-top: 1rem !important;
          +}
          +.mt-4 {
          +  margin-top: 1.5rem !important;
          +}
          +.mt-5 {
          +  margin-top: 3rem !important;
          +}
          +.me-1 {
          +  margin-right: 0.25rem !important;
          +}
          +.me-2 {
          +  margin-right: 0.5rem !important;
          +}
          +.me-3 {
          +  margin-right: 1rem !important;
          +}
          +.me-auto {
          +  margin-right: auto !important;
          +}
          +.mb-0 {
          +  margin-bottom: 0 !important;
          +}
          +.mb-1 {
          +  margin-bottom: 0.25rem !important;
          +}
          +.mb-2 {
          +  margin-bottom: 0.5rem !important;
          +}
          +.mb-3 {
          +  margin-bottom: 1rem !important;
          +}
          +.mb-4 {
          +  margin-bottom: 1.5rem !important;
          +}
          +.mb-5 {
          +  margin-bottom: 3rem !important;
          +}
          +.ms-1 {
          +  margin-left: 0.25rem !important;
          +}
          +.ms-2 {
          +  margin-left: 0.5rem !important;
          +}
          +.ms-3 {
          +  margin-left: 1rem !important;
          +}
          +.ms-4 {
          +  margin-left: 1.5rem !important;
          +}
          +.ms-auto {
          +  margin-left: auto !important;
          +}
          +.p-0 {
          +  padding: 0 !important;
          +}
          +.px-1 {
          +  padding-right: 0.25rem !important;
          +  padding-left: 0.25rem !important;
          +}
          +.px-2 {
          +  padding-right: 0.5rem !important;
          +  padding-left: 0.5rem !important;
          +}
          +.px-4 {
          +  padding-right: 1.5rem !important;
          +  padding-left: 1.5rem !important;
          +}
          +.py-2 {
          +  padding-top: 0.5rem !important;
          +  padding-bottom: 0.5rem !important;
          +}
          +.py-3 {
          +  padding-top: 1rem !important;
          +  padding-bottom: 1rem !important;
          +}
          +.pt-0 {
          +  padding-top: 0 !important;
          +}
          +.pt-2 {
          +  padding-top: 0.5rem !important;
          +}
          +.pe-1 {
          +  padding-right: 0.25rem !important;
          +}
          +.pe-4 {
          +  padding-right: 1.5rem !important;
          +}
          +.pb-1 {
          +  padding-bottom: 0.25rem !important;
          +}
          +.pb-2 {
          +  padding-bottom: 0.5rem !important;
          +}
          +.pb-4 {
          +  padding-bottom: 1.5rem !important;
          +}
          +.ps-0 {
          +  padding-left: 0 !important;
          +}
          +.ps-2 {
          +  padding-left: 0.5rem !important;
          +}
          +.ps-3 {
          +  padding-left: 1rem !important;
          +}
          +.fs-6 {
          +  font-size: 1rem !important;
          +}
          +.fst-italic {
          +  font-style: italic !important;
          +}
          +.fst-normal {
          +  font-style: normal !important;
          +}
          +.fw-light {
          +  font-weight: 300 !important;
          +}
          +.lh-lg {
          +  line-height: 2 !important;
          +}
          +.text-start {
          +  text-align: left !important;
          +}
          +.text-center {
          +  text-align: center !important;
          +}
          +.text-decoration-none {
          +  text-decoration: none !important;
          +}
          +.text-nowrap {
          +  white-space: nowrap !important;
          +}
          +.text-muted {
          +  color: var(--bs-secondary-color) !important;
          +}
          +.pe-none {
          +  pointer-events: none !important;
          +}
          +.rounded-circle {
          +  border-radius: 50% !important;
          +}
          +.invisible {
          +  visibility: hidden !important;
          +}
          +.z-1 {
          +  z-index: 1 !important;
          +}
          +.z-2 {
          +  z-index: 2 !important;
          +}
          +@media (min-width: 576px) {
          +  .flex-sm-row {
          +    flex-direction: row !important;
          +  }
          +  .me-sm-4 {
          +    margin-right: 1.5rem !important;
          +  }
          +  .px-sm-2 {
          +    padding-right: 0.5rem !important;
          +    padding-left: 0.5rem !important;
          +  }
          +}
          +@media (min-width: 768px) {
          +  .flex-md-row-reverse {
          +    flex-direction: row-reverse !important;
          +  }
          +  .mt-md-0 {
          +    margin-top: 0 !important;
          +  }
          +  .px-md-3 {
          +    padding-right: 1rem !important;
          +    padding-left: 1rem !important;
          +  }
          +  .px-md-4 {
          +    padding-right: 1.5rem !important;
          +    padding-left: 1.5rem !important;
          +  }
          +}
          +@media (min-width: 992px) {
          +  .flex-lg-row {
          +    flex-direction: row !important;
          +  }
          +  .justify-content-lg-between {
          +    justify-content: space-between !important;
          +  }
          +  .align-items-lg-center {
          +    align-items: center !important;
          +  }
          +  .ms-lg-0 {
          +    margin-left: 0 !important;
          +  }
          +  .px-lg-3 {
          +    padding-right: 1rem !important;
          +    padding-left: 1rem !important;
          +  }
          +  .px-lg-4 {
          +    padding-right: 1.5rem !important;
          +    padding-left: 1.5rem !important;
          +  }
          +  .pb-lg-3 {
          +    padding-bottom: 1rem !important;
          +  }
          +  .ps-lg-2 {
          +    padding-left: 0.5rem !important;
          +  }
          +}
          +@media (min-width: 1200px) {
          +  .mx-xl-2 {
          +    margin-right: 0.5rem !important;
          +    margin-left: 0.5rem !important;
          +  }
          +  .px-xl-0 {
          +    padding-right: 0 !important;
          +    padding-left: 0 !important;
          +  }
          +  .px-xl-1 {
          +    padding-right: 0.25rem !important;
          +    padding-left: 0.25rem !important;
          +  }
          +}
          +@media (min-width: 1400px) {
          +  .px-xxl-5 {
          +    padding-right: 3rem !important;
          +    padding-left: 3rem !important;
          +  }
          +}
          diff --git a/ads.txt b/ads.txt
          new file mode 100644
          index 00000000000..98f776cd71c
          --- /dev/null
          +++ b/ads.txt
          @@ -0,0 +1 @@
          +google.com, pub-4781177221016819, DIRECT, f08c47fec0942fa0
          \ No newline at end of file
          diff --git a/assets/img/DS lib.png b/assets/img/DS lib.png
          new file mode 100644
          index 00000000000..af656b99cde
          Binary files /dev/null and b/assets/img/DS lib.png differ
          diff --git a/assets/img/Linkedlist.png b/assets/img/Linkedlist.png
          new file mode 100644
          index 00000000000..f6744fcf2df
          Binary files /dev/null and b/assets/img/Linkedlist.png differ
          diff --git a/assets/img/OS/Clustered_Systems.png b/assets/img/OS/Clustered_Systems.png
          new file mode 100644
          index 00000000000..d5026b98d85
          Binary files /dev/null and b/assets/img/OS/Clustered_Systems.png differ
          diff --git a/assets/img/OS/Computer_OS.png b/assets/img/OS/Computer_OS.png
          new file mode 100644
          index 00000000000..54ca3de9628
          Binary files /dev/null and b/assets/img/OS/Computer_OS.png differ
          diff --git a/assets/img/OS/Dual-Core.png b/assets/img/OS/Dual-Core.png
          new file mode 100644
          index 00000000000..7f6fb7ab616
          Binary files /dev/null and b/assets/img/OS/Dual-Core.png differ
          diff --git a/assets/img/OS/MCW.png b/assets/img/OS/MCW.png
          new file mode 100644
          index 00000000000..e6a1dade06e
          Binary files /dev/null and b/assets/img/OS/MCW.png differ
          diff --git a/assets/img/OS/NUMA.png b/assets/img/OS/NUMA.png
          new file mode 100644
          index 00000000000..fad0f4ccf45
          Binary files /dev/null and b/assets/img/OS/NUMA.png differ
          diff --git a/assets/img/OS/Storage_device.png b/assets/img/OS/Storage_device.png
          new file mode 100644
          index 00000000000..36ed51c0675
          Binary files /dev/null and b/assets/img/OS/Storage_device.png differ
          diff --git a/assets/img/OS/Symmetric_Multiprocessing.png b/assets/img/OS/Symmetric_Multiprocessing.png
          new file mode 100644
          index 00000000000..31f09fe9019
          Binary files /dev/null and b/assets/img/OS/Symmetric_Multiprocessing.png differ
          diff --git a/assets/img/OS/interrupt_sensing.png b/assets/img/OS/interrupt_sensing.png
          new file mode 100644
          index 00000000000..6dd3afd1582
          Binary files /dev/null and b/assets/img/OS/interrupt_sensing.png differ
          diff --git a/assets/img/OS/interrupt_timeline.png b/assets/img/OS/interrupt_timeline.png
          new file mode 100644
          index 00000000000..cee7fa7c1df
          Binary files /dev/null and b/assets/img/OS/interrupt_timeline.png differ
          diff --git a/assets/img/TwoSum.png b/assets/img/TwoSum.png
          new file mode 100644
          index 00000000000..1f622a52779
          Binary files /dev/null and b/assets/img/TwoSum.png differ
          diff --git a/assets/img/TwoSumex.png b/assets/img/TwoSumex.png
          new file mode 100644
          index 00000000000..97c4ca4948e
          Binary files /dev/null and b/assets/img/TwoSumex.png differ
          diff --git a/assets/img/array.png b/assets/img/array.png
          new file mode 100644
          index 00000000000..8738a71c375
          Binary files /dev/null and b/assets/img/array.png differ
          diff --git a/assets/img/arraydel.png b/assets/img/arraydel.png
          new file mode 100644
          index 00000000000..d2d477d2832
          Binary files /dev/null and b/assets/img/arraydel.png differ
          diff --git a/assets/img/favicons/about.txt b/assets/img/favicons/about.txt
          new file mode 100644
          index 00000000000..a5773007770
          --- /dev/null
          +++ b/assets/img/favicons/about.txt
          @@ -0,0 +1,6 @@
          +This favicon was generated using the following graphics from Twitter Twemoji:
          +
          +- Graphics Title: 1f340.svg
          +- Graphics Author: Copyright 2020 Twitter, Inc and other contributors (https://github.com/twitter/twemoji)
          +- Graphics Source: https://github.com/twitter/twemoji/blob/master/assets/svg/1f340.svg
          +- Graphics License: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
          diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png
          index a949d2fe5d1..fdd58db38bb 100644
          Binary files a/assets/img/favicons/android-chrome-192x192.png and b/assets/img/favicons/android-chrome-192x192.png differ
          diff --git a/assets/img/favicons/android-chrome-512x512.png b/assets/img/favicons/android-chrome-512x512.png
          index a0cdd950b35..71b74beab02 100644
          Binary files a/assets/img/favicons/android-chrome-512x512.png and b/assets/img/favicons/android-chrome-512x512.png differ
          diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png
          index 648097f4fc7..76a66804c0f 100644
          Binary files a/assets/img/favicons/apple-touch-icon.png and b/assets/img/favicons/apple-touch-icon.png differ
          diff --git a/assets/img/favicons/browserconfig.xml b/assets/img/favicons/browserconfig.xml
          deleted file mode 100644
          index a02a5c74ebb..00000000000
          --- a/assets/img/favicons/browserconfig.xml
          +++ /dev/null
          @@ -1,13 +0,0 @@
          ----
          -layout: compress
          ----
          -
          -
          -
          -  
          -    
          -      
          -      #da532c
          -    
          -  
          -
          diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png
          index f44237a9a42..17e1ac28fc9 100644
          Binary files a/assets/img/favicons/favicon-16x16.png and b/assets/img/favicons/favicon-16x16.png differ
          diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png
          index d5d021d85c8..95b91e65f65 100644
          Binary files a/assets/img/favicons/favicon-32x32.png and b/assets/img/favicons/favicon-32x32.png differ
          diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico
          index 561156802e6..e2c116088b0 100644
          Binary files a/assets/img/favicons/favicon.ico and b/assets/img/favicons/favicon.ico differ
          diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png
          deleted file mode 100644
          index c0d045e25de..00000000000
          Binary files a/assets/img/favicons/mstile-150x150.png and /dev/null differ
          diff --git a/assets/img/favicons/site.webmanifest b/assets/img/favicons/site.webmanifest
          index 03c6113b824..45dc8a20658 100644
          --- a/assets/img/favicons/site.webmanifest
          +++ b/assets/img/favicons/site.webmanifest
          @@ -1,26 +1 @@
          ----
          -layout: compress
          ----
          -
          -{% assign favicon_path = "/assets/img/favicons" | relative_url %}
          -
          -{
          -  "name": "{{ site.title }}",
          -  "short_name": "{{ site.title }}",
          -  "description": "{{ site.description }}",
          -  "icons": [
          -    {
          -      "src": "{{ favicon_path }}/android-chrome-192x192.png",
          -      "sizes": "192x192",
          -      "type": "image/png"
          -    },
          -    {
          -      "src": "{{ favicon_path }}/android-chrome-512x512.png",
          -      "sizes": "512x512",
          -      "type": "image/png"
          -    }],
          -  "start_url": "{{ '/index.html' | relative_url }}",
          -  "theme_color": "#2a1e6b",
          -  "background_color": "#ffffff",
          -  "display": "fullscreen"
          -}
          +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
          \ No newline at end of file
          diff --git a/assets/img/linkedlistdel.png b/assets/img/linkedlistdel.png
          new file mode 100644
          index 00000000000..e8e98db1b1b
          Binary files /dev/null and b/assets/img/linkedlistdel.png differ
          diff --git a/assets/img/linkedlistex.png b/assets/img/linkedlistex.png
          new file mode 100644
          index 00000000000..8c9e6b93f6d
          Binary files /dev/null and b/assets/img/linkedlistex.png differ
          diff --git a/assets/img/staticlinked.png b/assets/img/staticlinked.png
          new file mode 100644
          index 00000000000..78d465d18f9
          Binary files /dev/null and b/assets/img/staticlinked.png differ
          diff --git a/assets/img/type.png b/assets/img/type.png
          new file mode 100644
          index 00000000000..1bd33ab3c57
          Binary files /dev/null and b/assets/img/type.png differ
          diff --git a/assets/js/dist/app.min.js b/assets/js/dist/app.min.js
          new file mode 100644
          index 00000000000..9cb120230de
          --- /dev/null
          +++ b/assets/js/dist/app.min.js
          @@ -0,0 +1,7 @@
          +---
          +permalink: /:basename
          +---
          +/*!
          + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
          + */
          +!function(){"use strict";const e=new Map;var t={set(t,n,r){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,r):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const r=e.get(t);r.delete(n),0===r.size&&e.delete(t)}};const n="transitionend",r=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),i=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(r(e)):null,s=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),a=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,l=[],c=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},u=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void c(e);const r=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const r=Number.parseFloat(t),o=Number.parseFloat(n);return r||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const i=r=>{let{target:s}=r;s===t&&(o=!0,t.removeEventListener(n,i),c(e))};t.addEventListener(n,i),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),r)},d=/[^.]*(?=\..*)\.|.*/,f=/\..*/,h=/::\d+$/,g={};let m=1;const p={mouseenter:"mouseover",mouseleave:"mouseout"},b=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function v(e,t){return t&&`${t}::${m++}`||e.uidEvent||m++}function _(e){const t=v(e);return e.uidEvent=t,g[t]=g[t]||{},g[t]}function y(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function E(e,t,n){const r="string"==typeof t,o=r?n:t||n;let i=C(e);return b.has(i)||(i=e),[r,o,i]}function w(e,t,n,r,o){if("string"!=typeof t||!e)return;let[i,s,a]=E(t,n,r);if(t in p){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=_(e),c=l[a]||(l[a]={}),u=y(c,s,i?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=v(s,t.replace(d,"")),h=i?function(e,t,n){return function r(o){const i=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of i)if(a===s)return T(o,{delegateTarget:s}),r.oneOff&&O.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(r){return T(r,{delegateTarget:e}),n.oneOff&&O.off(e,r.type,t),t.apply(e,[r])}}(e,s);h.delegationSelector=i?n:null,h.callable=s,h.oneOff=o,h.uidEvent=f,c[f]=h,e.addEventListener(a,h,i)}function A(e,t,n,r,o){const i=y(t[n],r,o);i&&(e.removeEventListener(n,i,Boolean(o)),delete t[n][i.uidEvent])}function S(e,t,n,r){const o=t[n]||{};for(const[i,s]of Object.entries(o))i.includes(r)&&A(e,t,n,s.callable,s.delegationSelector)}function C(e){return e=e.replace(f,""),p[e]||e}const O={on(e,t,n,r){w(e,t,n,r,!1)},one(e,t,n,r){w(e,t,n,r,!0)},off(e,t,n,r){if("string"!=typeof t||!e)return;const[o,i,s]=E(t,n,r),a=s!==t,l=_(e),c=l[s]||{},u=t.startsWith(".");if(void 0===i){if(u)for(const n of Object.keys(l))S(e,l,n,t.slice(1));for(const[n,r]of Object.entries(c)){const o=n.replace(h,"");a&&!t.includes(o)||A(e,l,s,r.callable,r.delegationSelector)}}else{if(!Object.keys(c).length)return;A(e,l,s,i,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const r=a();let o=null,i=!0,s=!0,l=!1;t!==C(t)&&r&&(o=r.Event(t,n),r(e).trigger(o),i=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),l=o.isDefaultPrevented());const c=T(new Event(t,{bubbles:i,cancelable:!0}),n);return l&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function T(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,r]of Object.entries(t))try{e[n]=r}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>r})}return e}function $(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function N(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const j={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${N(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${N(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const r of n){let n=r.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=$(e.dataset[r])}return t},getDataAttribute:(e,t)=>$(e.getAttribute(`data-bs-${N(t)}`))};class L{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?j.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?j.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[r,i]of Object.entries(t)){const t=e[r],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${r}" provided type "${s}" but expected type "${i}".`)}var n}}class D extends L{constructor(e,n){super(),(e=i(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),O.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){u(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(i(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const I=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>r(e))).join(","):null},k={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let r=e.parentNode.closest(t);for(;r;)n.push(r),r=r.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!s(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=I(e);return t&&k.findOne(t)?t:null},getElementFromSelector(e){const t=I(e);return t?k.findOne(t):null},getMultipleElementsFromSelector(e){const t=I(e);return t?k.find(t):[]}},M=".bs.toast",K=`mouseover${M}`,P=`mouseout${M}`,q=`focusin${M}`,x=`focusout${M}`,W=`hide${M}`,Y=`hidden${M}`,F=`show${M}`,R=`shown${M}`,V="hide",Q="show",z="showing",B={animation:"boolean",autohide:"boolean",delay:"number"},H={animation:!0,autohide:!0,delay:5e3};class U extends D{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return H}static get DefaultType(){return B}static get NAME(){return"toast"}show(){if(O.trigger(this._element,F).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(V),this._element.offsetHeight,this._element.classList.add(Q,z),this._queueCallback((()=>{this._element.classList.remove(z),O.trigger(this._element,R),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(O.trigger(this._element,W).defaultPrevented)return;this._element.classList.add(z),this._queueCallback((()=>{this._element.classList.add(V),this._element.classList.remove(z,Q),O.trigger(this._element,Y)}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Q),super.dispose()}isShown(){return this._element.classList.contains(Q)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){O.on(this._element,K,(e=>this._onInteraction(e,!0))),O.on(this._element,P,(e=>this._onInteraction(e,!1))),O.on(this._element,q,(e=>this._onInteraction(e,!0))),O.on(this._element,x,(e=>this._onInteraction(e,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=U.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}var G,J;if(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"hide";const n=`click.dismiss${e.EVENT_KEY}`,r=e.NAME;O.on(document,n,`[data-bs-dismiss="${r}"]`,(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),s(this))return;const o=k.getElementFromSelector(this)||this.closest(`.${r}`);e.getOrCreateInstance(o)[t]()}))}(U),G=U,J=()=>{const e=a();if(e){const t=G.NAME,n=e.fn[t];e.fn[t]=G.jQueryInterface,e.fn[t].Constructor=G,e.fn[t].noConflict=()=>(e.fn[t]=n,G.jQueryInterface)}},"loading"===document.readyState?(l.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of l)e()})),l.push(J)):J(),"serviceWorker"in navigator){const e=new URL(document.currentScript.src),t=e.searchParams.get("register"),n=e.searchParams.get("baseurl");if(t){const e=`${n}/sw.min.js`,t=document.getElementById("notification"),r=t.querySelector(".toast-body>button"),o=U.getOrCreateInstance(t);navigator.serviceWorker.register(e).then((e=>{e.waiting&&o.show(),e.addEventListener("updatefound",(()=>{e.installing.addEventListener("statechange",(()=>{e.waiting&&navigator.serviceWorker.controller&&o.show()}))})),r.addEventListener("click",(()=>{e.waiting&&e.waiting.postMessage("SKIP_WAITING"),o.hide()}))}));let i=!1;navigator.serviceWorker.addEventListener("controllerchange",(()=>{i||(window.location.reload(),i=!0)}))}else navigator.serviceWorker.getRegistrations().then((function(e){for(let t of e)t.unregister()}))}}();
          diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js
          new file mode 100644
          index 00000000000..ef8ba7ec6ac
          --- /dev/null
          +++ b/assets/js/dist/categories.min.js
          @@ -0,0 +1,4 @@
          +/*!
          + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/
          + */
          +!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},d=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),d(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,g=/\..*/,m=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${b++}`||e.uidEvent||b++}function E(e){const t=w(e);return e.uidEvent=t,v[t]=v[t]||{},v[t]}function O(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=T(e);return _.has(r)||(r=e),[i,o,r]}function A(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,t.replace(h,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return j(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,e.addEventListener(a,d,r)}function C(e,t,n,i,o){const r=O(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function L(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function T(e){return e=e.replace(g,""),y[e]||e}const S={on(e,t,n,i){A(e,t,n,i,!1)},one(e,t,n,i){A(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(m,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==T(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const P={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class N{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?P.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?P.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class M extends N{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const B=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=B(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=B(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=B(e);return t?I.find(t):[]}},F=".bs.collapse",H=`show${F}`,$=`shown${F}`,z=`hide${F}`,W=`hidden${F}`,q=`click${F}.data-api`,R="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends M{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,R),this._element.style[t]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,R);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,W)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(R)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(U,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,q,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),f(G);const J=document.getElementsByClassName("collapse");var Z="top",ee="bottom",te="right",ne="left",ie="auto",oe=[Z,ee,te,ne],re="start",se="end",ae="clippingParents",le="viewport",ce="popper",ue="reference",fe=oe.reduce((function(e,t){return e.concat([t+"-"+re,t+"-"+se])}),[]),de=[].concat(oe,[ie]).reduce((function(e,t){return e.concat([t,t+"-"+re,t+"-"+se])}),[]),pe="beforeRead",he="read",ge="afterRead",me="beforeMain",ve="main",be="afterMain",ye="beforeWrite",_e="write",we="afterWrite",Ee=[pe,he,ge,me,ve,be,ye,_e,we];function Oe(e){return e?(e.nodeName||"").toLowerCase():null}function xe(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ae(e){return e instanceof xe(e).Element||e instanceof Element}function Ce(e){return e instanceof xe(e).HTMLElement||e instanceof HTMLElement}function Le(e){return"undefined"!=typeof ShadowRoot&&(e instanceof xe(e).ShadowRoot||e instanceof ShadowRoot)}var Te={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Ce(o)&&Oe(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Ce(i)&&Oe(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Se(e){return e.split("-")[0]}var je=Math.max,ke=Math.min,De=Math.round;function Pe(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Ne(){return!/^((?!chrome|android).)*safari/i.test(Pe())}function Me(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Ce(e)&&(o=e.offsetWidth>0&&De(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&De(i.height)/e.offsetHeight||1);var s=(Ae(e)?xe(e):window).visualViewport,a=!Ne()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Be(e){var t=Me(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Ie(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Le(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Fe(e){return xe(e).getComputedStyle(e)}function He(e){return["table","td","th"].indexOf(Oe(e))>=0}function $e(e){return((Ae(e)?e.ownerDocument:e.document)||window.document).documentElement}function ze(e){return"html"===Oe(e)?e:e.assignedSlot||e.parentNode||(Le(e)?e.host:null)||$e(e)}function We(e){return Ce(e)&&"fixed"!==Fe(e).position?e.offsetParent:null}function qe(e){for(var t=xe(e),n=We(e);n&&He(n)&&"static"===Fe(n).position;)n=We(n);return n&&("html"===Oe(n)||"body"===Oe(n)&&"static"===Fe(n).position)?t:n||function(e){var t=/firefox/i.test(Pe());if(/Trident/i.test(Pe())&&Ce(e)&&"fixed"===Fe(e).position)return null;var n=ze(e);for(Le(n)&&(n=n.host);Ce(n)&&["html","body"].indexOf(Oe(n))<0;){var i=Fe(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ve(e,t,n){return je(e,ke(t,n))}function Ye(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ke={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Se(n.placement),l=Re(a),c=[ne,te].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ye("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,oe))}(o.padding,n),f=Be(r),d="y"===l?Z:ne,p="y"===l?ee:te,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],g=s[l]-n.rects.reference[l],m=qe(r),v=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Ve(y,w,_),O=l;n.modifiersData[i]=((t={})[O]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Ie(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qe(e){return e.split("-")[1]}var Xe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ge(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof u?u({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=ne,_=Z,w=window;if(c){var E=qe(n),O="clientHeight",x="clientWidth";if(E===xe(n)&&"static"!==Fe(E=$e(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===Z||(o===ne||o===te)&&r===se)_=ee,g-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=l?1:-1;if(o===ne||(o===Z||o===ee)&&r===se)y=te,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Xe),L=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:De(n*o)/o||0,y:De(i*o)/o||0}}({x:p,y:g},xe(n)):{x:p,y:g};return p=L.x,g=L.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((t={})[_]=b?g+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Je={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Se(t.placement),variation:Qe(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Ge(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ge(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Ze={passive:!0};var et={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=xe(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Ze)})),a&&l.addEventListener("resize",n.update,Ze),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Ze)})),a&&l.removeEventListener("resize",n.update,Ze)}},data:{}},tt={left:"right",right:"left",bottom:"top",top:"bottom"};function nt(e){return e.replace(/left|right|bottom|top/g,(function(e){return tt[e]}))}var it={start:"end",end:"start"};function ot(e){return e.replace(/start|end/g,(function(e){return it[e]}))}function rt(e){var t=xe(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function st(e){return Me($e(e)).left+rt(e).scrollLeft}function at(e){var t=Fe(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function lt(e){return["html","body","#document"].indexOf(Oe(e))>=0?e.ownerDocument.body:Ce(e)&&at(e)?e:lt(ze(e))}function ct(e,t){var n;void 0===t&&(t=[]);var i=lt(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=xe(i),s=o?[r].concat(r.visualViewport||[],at(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ct(ze(s)))}function ut(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ft(e,t,n){return t===le?ut(function(e,t){var n=xe(e),i=$e(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Ne();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+st(e),y:l}}(e,n)):Ae(t)?function(e,t){var n=Me(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ut(function(e){var t,n=$e(e),i=rt(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=je(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=je(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+st(e),l=-i.scrollTop;return"rtl"===Fe(o||n).direction&&(a+=je(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}($e(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=ct(ze(e)),n=["absolute","fixed"].indexOf(Fe(e).position)>=0&&Ce(e)?qe(e):e;return Ae(n)?t.filter((function(e){return Ae(e)&&Ie(e,n)&&"body"!==Oe(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ft(e,n,i);return t.top=je(o.top,t.top),t.right=ke(o.right,t.right),t.bottom=ke(o.bottom,t.bottom),t.left=je(o.left,t.left),t}),ft(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function pt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Se(o):null,s=o?Qe(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:t={x:a,y:n.y-i.height};break;case ee:t={x:a,y:n.y+n.height};break;case te:t={x:n.x+n.width,y:l};break;case ne:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case re:t[c]=t[c]-(n[u]/2-i[u]/2);break;case se:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?ae:a,c=n.rootBoundary,u=void 0===c?le:c,f=n.elementContext,d=void 0===f?ce:f,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=Ye("number"!=typeof m?m:Ue(m,oe)),b=d===ce?ue:ce,y=e.rects.popper,_=e.elements[h?b:d],w=dt(Ae(_)?_:_.contextElement||$e(e.elements.popper),l,u,s),E=Me(e.elements.reference),O=pt({reference:E,element:y,strategy:"absolute",placement:o}),x=ut(Object.assign({},y,O)),A=d===ce?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=e.modifiersData.offset;if(d===ce&&L){var T=L[o];Object.keys(C).forEach((function(e){var t=[te,ee].indexOf(e)>=0?1:-1,n=[Z,ee].indexOf(e)>=0?"y":"x";C[e]+=T[n]*t}))}return C}function gt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Qe(i),f=u?a?fe:fe.filter((function(e){return Qe(e)===u})):oe,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=ht(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Se(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var mt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=t.options.placement,v=Se(m),b=l||(v===m||!h?[nt(m)]:function(e){if(Se(e)===ie)return[];var t=nt(e);return[ot(e),t,ot(t)]}(m)),y=[m].concat(b).reduce((function(e,n){return e.concat(Se(n)===ie?gt(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:g}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=ht(t,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?T?te:ne:T?ee:Z;_[j]>w[j]&&(D=nt(D));var P=nt(D),N=[];if(r&&N.push(k[L]<=0),a&&N.push(k[D]<=0,k[P]<=0),N.every((function(e){return e}))){x=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bt(e){return[Z,te,ee,ne].some((function(t){return e[t]>=0}))}var yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),l=vt(s,i),c=vt(a,o,r),u=bt(l),f=bt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var _t={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce((function(e,n){return e[n]=function(e,t,n){var i=Se(e),o=[ne,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[ne,te].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var wt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=pt({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var Et={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=ht(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Se(t.placement),b=Qe(t.placement),y=!b,_=Re(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,O=t.rects.reference,x=t.rects.popper,A="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===_?Z:ne,k="y"===_?ee:te,D="y"===_?"height":"width",P=E[_],N=P+m[j],M=P-m[k],B=p?-x[D]/2:0,I=b===re?O[D]:x[D],F=b===re?-x[D]:-O[D],H=t.elements.arrow,$=p&&H?Be(H):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],q=z[k],R=Ve(0,O[D],$[D]),V=y?O[D]/2-B-R-W-C.mainAxis:I-R-W-C.mainAxis,Y=y?-O[D]/2+B+R+q+C.mainAxis:F+R+q+C.mainAxis,U=t.elements.arrow&&qe(t.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==L?void 0:L[_])?S:0,X=P+Y-Q,G=Ve(p?ke(N,P+V-Q-K):N,P,p?je(M,X):M);E[_]=G,T[_]=G-P}if(a){var J,ie="x"===_?Z:ne,oe="x"===_?ee:te,se=E[w],ae="y"===w?"height":"width",le=se+m[ie],ce=se-m[oe],ue=-1!==[Z,ne].indexOf(v),fe=null!=(J=null==L?void 0:L[w])?J:0,de=ue?le:se-O[ae]-x[ae]-fe+C.altAxis,pe=ue?se+O[ae]+x[ae]-fe-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=Ve(e,t,n);return i>n?n:i}(de,se,pe):Ve(p?de:le,se,p?pe:ce);E[w]=he,T[w]=he-se}t.modifiersData[i]=T}},requiresIfExists:["offset"]};function Ot(e,t,n){void 0===n&&(n=!1);var i,o,r=Ce(t),s=Ce(t)&&function(e){var t=e.getBoundingClientRect(),n=De(t.width)/e.offsetWidth||1,i=De(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=$e(t),l=Me(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Oe(t)||at(a))&&(c=(i=t)!==xe(i)&&Ce(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:rt(i)),Ce(t)?((u=Me(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=st(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xt(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var At={placement:"bottom",modifiers:[],strategy:"absolute"};function Ct(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Pt.has(n)||Boolean(Nt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Bt={allowList:Dt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
          "},It={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ft={entry:"(string|element|function|null)",selector:"(string|element)"};class Ht extends N{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Bt}static get DefaultType(){return It}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},Ft)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Mt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return d(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const $t=new Set(["sanitize","allowList","sanitizeFn"]),zt="fade",Wt="show",qt=".tooltip-inner",Rt=".modal",Vt="hide.bs.modal",Yt="hover",Ut="focus",Kt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Qt={allowList:Dt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Xt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Gt extends M{constructor(e,t){if(void 0===kt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Qt}static get DefaultType(){return Xt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),Vt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Yt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(zt,Wt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(zt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ht({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[qt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(zt)}_isShown(){return this.tip&&this.tip.classList.contains(Wt)}_createPopper(e){const t=d(this._config.placement,[this,e,this._element]),n=Kt[t.toUpperCase()];return jt(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return d(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...d(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Yt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Yt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Yt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Yt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),Vt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=P.getDataAttributes(this._element);for(const e of Object.keys(t))$t.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Gt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}function Jt(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Zt(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var en;f(Gt);const tn=document.getElementById("toc-bar"),nn=document.getElementById("toc-solo-trigger"),on=document.getElementsByClassName("toc-trigger"),rn=document.getElementById("toc-popup"),sn=document.getElementById("toc-popup-close"),an="overflow-hidden",ln="closing";class cn{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{tn.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${Jt(cn,this,fn)._}px 0px 0px 0px`}).observe(nn),un._=Jt(cn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){Jt(cn,this,un)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return rn.open}static showPopup(){this.lockScroll(!0),rn.showModal();rn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){rn.toggleAttribute(ln),rn.addEventListener("animationend",(()=>{rn.toggleAttribute(ln),rn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(an,e),document.body.classList.toggle(an,e)}static clickBackdrop(e){if(rn.hasAttribute(ln))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...on].forEach((e=>{e.onclick=()=>this.showPopup()})),rn.onclick=e=>this.clickBackdrop(e),sn.onclick=()=>this.hidePopup(),rn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var un={_:!0},fn={_:48};Zt(cn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Jt(en=cn,en,fn)._});Zt(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const dn=document.getElementById("mode-toggle");const pn=document.getElementById("sidebar"),hn=document.getElementById("sidebar-trigger"),gn=document.getElementById("mask");class mn{static toggle(){vn._=Jt(mn,this,!Jt(mn,this,vn)._),document.body.toggleAttribute("sidebar-display",Jt(mn,this,vn)._),pn.classList.toggle("z-2",Jt(mn,this,vn)._),gn.classList.toggle("d-none",!Jt(mn,this,vn)._)}}var vn={_:!1};const bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("search-trigger"),_n=document.getElementById("search-cancel"),wn=document.querySelectorAll("#main-wrapper>.container>.row"),En=document.getElementById("topbar-title"),On=document.getElementById("search"),xn=document.getElementById("search-result-wrapper"),An=document.getElementById("search-results"),Cn=document.getElementById("search-input"),Ln=document.getElementById("search-hints"),Tn="d-block",Sn="d-none",jn="input-focus",kn="d-flex";class Dn{static on(){bn.classList.add(Sn),En.classList.add(Sn),yn.classList.add(Sn),On.classList.add(kn),_n.classList.add(Tn)}static off(){_n.classList.remove(Tn),On.classList.remove(kn),bn.classList.remove(Sn),En.classList.remove(Sn),yn.classList.remove(Sn)}}class Pn{static on(){this.resultVisible||(xn.classList.remove(Sn),wn.forEach((e=>{e.classList.add(Sn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(An.innerHTML="",Ln.classList.contains(Sn)&&Ln.classList.remove(Sn),xn.classList.add(Sn),wn.forEach((e=>{e.classList.remove(Sn)})),Cn.textContent="",this.resultVisible=!1)}}function Nn(){return _n.classList.contains(Tn)}Zt(Pn,"resultVisible",!1),dn&&dn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Gt(e))),hn.onclick=gn.onclick=()=>mn.toggle(),yn.addEventListener("click",(()=>{Dn.on(),Pn.on(),Cn.focus()})),_n.addEventListener("click",(()=>{Dn.off(),Pn.off()})),Cn.addEventListener("focus",(()=>{On.classList.add(jn)})),Cn.addEventListener("focusout",(()=>{On.classList.remove(jn)})),Cn.addEventListener("input",(()=>{""===Cn.value?Nn()?Ln.classList.remove(Sn):Pn.off():(Pn.on(),Nn()&&Ln.classList.add(Sn))})),[...J].forEach((e=>{const t="h_"+e.id.substring(2),n=document.getElementById(t);e.addEventListener("hide.bs.collapse",(()=>{n&&(n.querySelector(".far.fa-folder-open").className="far fa-folder fa-fw",n.querySelector(".fas.fa-angle-down").classList.add("rotate"),n.classList.remove("hide-border-bottom"))})),e.addEventListener("show.bs.collapse",(()=>{n&&(n.querySelector(".far.fa-folder").className="far fa-folder-open fa-fw",n.querySelector(".fas.fa-angle-down").classList.remove("rotate"),n.classList.add("hide-border-bottom"))}))}))}(); diff --git a/assets/js/dist/commons.min.js b/assets/js/dist/commons.min.js new file mode 100644 index 00000000000..600ce7dcd0f --- /dev/null +++ b/assets/js/dist/commons.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},d=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),d(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,g=/\..*/,m=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${b++}`||e.uidEvent||b++}function E(e){const t=w(e);return e.uidEvent=t,v[t]=v[t]||{},v[t]}function O(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=T(e);return _.has(r)||(r=e),[i,o,r]}function A(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,t.replace(h,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return j(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,e.addEventListener(a,d,r)}function C(e,t,n,i,o){const r=O(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function L(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function T(e){return e=e.replace(g,""),y[e]||e}const S={on(e,t,n,i){A(e,t,n,i,!1)},one(e,t,n,i){A(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(m,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==T(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const P={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class M{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?P.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?P.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class N extends M{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const B=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=B(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=B(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=B(e);return t?I.find(t):[]}},F=".bs.collapse",H=`show${F}`,$=`shown${F}`,z=`hide${F}`,W=`hidden${F}`,R=`click${F}.data-api`,q="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends N{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,q),this._element.style[t]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,q);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,W)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(q)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(U,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,R,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),f(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",ee="right",te="left",ne="auto",ie=[J,Z,ee,te],oe="start",re="end",se="clippingParents",ae="viewport",le="popper",ce="reference",ue=ie.reduce((function(e,t){return e.concat([t+"-"+oe,t+"-"+re])}),[]),fe=[].concat(ie,[ne]).reduce((function(e,t){return e.concat([t,t+"-"+oe,t+"-"+re])}),[]),de="beforeRead",pe="read",he="afterRead",ge="beforeMain",me="main",ve="afterMain",be="beforeWrite",ye="write",_e="afterWrite",we=[de,pe,he,ge,me,ve,be,ye,_e];function Ee(e){return e?(e.nodeName||"").toLowerCase():null}function Oe(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xe(e){return e instanceof Oe(e).Element||e instanceof Element}function Ae(e){return e instanceof Oe(e).HTMLElement||e instanceof HTMLElement}function Ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Oe(e).ShadowRoot||e instanceof ShadowRoot)}var Le={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Ae(o)&&Ee(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Ae(i)&&Ee(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Te(e){return e.split("-")[0]}var Se=Math.max,je=Math.min,ke=Math.round;function De(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Pe(){return!/^((?!chrome|android).)*safari/i.test(De())}function Me(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Ae(e)&&(o=e.offsetWidth>0&&ke(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&ke(i.height)/e.offsetHeight||1);var s=(xe(e)?Oe(e):window).visualViewport,a=!Pe()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Ne(e){var t=Me(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Be(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ce(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ie(e){return Oe(e).getComputedStyle(e)}function Fe(e){return["table","td","th"].indexOf(Ee(e))>=0}function He(e){return((xe(e)?e.ownerDocument:e.document)||window.document).documentElement}function $e(e){return"html"===Ee(e)?e:e.assignedSlot||e.parentNode||(Ce(e)?e.host:null)||He(e)}function ze(e){return Ae(e)&&"fixed"!==Ie(e).position?e.offsetParent:null}function We(e){for(var t=Oe(e),n=ze(e);n&&Fe(n)&&"static"===Ie(n).position;)n=ze(n);return n&&("html"===Ee(n)||"body"===Ee(n)&&"static"===Ie(n).position)?t:n||function(e){var t=/firefox/i.test(De());if(/Trident/i.test(De())&&Ae(e)&&"fixed"===Ie(e).position)return null;var n=$e(e);for(Ce(n)&&(n=n.host);Ae(n)&&["html","body"].indexOf(Ee(n))<0;){var i=Ie(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function qe(e,t,n){return Se(e,je(t,n))}function Ve(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ye(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ue={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Te(n.placement),l=Re(a),c=[te,ee].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ve("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ye(e,ie))}(o.padding,n),f=Ne(r),d="y"===l?J:te,p="y"===l?Z:ee,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],g=s[l]-n.rects.reference[l],m=We(r),v=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=h/2-g/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=qe(y,w,_),O=l;n.modifiersData[i]=((t={})[O]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Be(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ke(e){return e.split("-")[1]}var Qe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xe(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,g=void 0===h?0:h,m="function"==typeof u?u({x:p,y:g}):{x:p,y:g};p=m.x,g=m.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=te,_=J,w=window;if(c){var E=We(n),O="clientHeight",x="clientWidth";if(E===Oe(n)&&"static"!==Ie(E=He(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===J||(o===te||o===ee)&&r===re)_=Z,g-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,g*=l?1:-1;if(o===te||(o===J||o===Z)&&r===re)y=ee,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Qe),L=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:ke(n*o)/o||0,y:ke(i*o)/o||0}}({x:p,y:g},Oe(n)):{x:p,y:g};return p=L.x,g=L.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",A)):Object.assign({},C,((t={})[_]=b?g+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Ge={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Te(t.placement),variation:Ke(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Xe(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xe(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Je={passive:!0};var Ze={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Oe(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Je)})),a&&l.addEventListener("resize",n.update,Je),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Je)})),a&&l.removeEventListener("resize",n.update,Je)}},data:{}},et={left:"right",right:"left",bottom:"top",top:"bottom"};function tt(e){return e.replace(/left|right|bottom|top/g,(function(e){return et[e]}))}var nt={start:"end",end:"start"};function it(e){return e.replace(/start|end/g,(function(e){return nt[e]}))}function ot(e){var t=Oe(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rt(e){return Me(He(e)).left+ot(e).scrollLeft}function st(e){var t=Ie(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function at(e){return["html","body","#document"].indexOf(Ee(e))>=0?e.ownerDocument.body:Ae(e)&&st(e)?e:at($e(e))}function lt(e,t){var n;void 0===t&&(t=[]);var i=at(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Oe(i),s=o?[r].concat(r.visualViewport||[],st(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(lt($e(s)))}function ct(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ut(e,t,n){return t===ae?ct(function(e,t){var n=Oe(e),i=He(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pe();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+rt(e),y:l}}(e,n)):xe(t)?function(e,t){var n=Me(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ct(function(e){var t,n=He(e),i=ot(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=Se(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Se(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+rt(e),l=-i.scrollTop;return"rtl"===Ie(o||n).direction&&(a+=Se(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(He(e)))}function ft(e,t,n,i){var o="clippingParents"===t?function(e){var t=lt($e(e)),n=["absolute","fixed"].indexOf(Ie(e).position)>=0&&Ae(e)?We(e):e;return xe(n)?t.filter((function(e){return xe(e)&&Be(e,n)&&"body"!==Ee(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ut(e,n,i);return t.top=Se(o.top,t.top),t.right=je(o.right,t.right),t.bottom=je(o.bottom,t.bottom),t.left=Se(o.left,t.left),t}),ut(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function dt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Te(o):null,s=o?Ke(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:t={x:a,y:n.y-i.height};break;case Z:t={x:a,y:n.y+n.height};break;case ee:t={x:n.x+n.width,y:l};break;case te:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case oe:t[c]=t[c]-(n[u]/2-i[u]/2);break;case re:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function pt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?se:a,c=n.rootBoundary,u=void 0===c?ae:c,f=n.elementContext,d=void 0===f?le:f,p=n.altBoundary,h=void 0!==p&&p,g=n.padding,m=void 0===g?0:g,v=Ve("number"!=typeof m?m:Ye(m,ie)),b=d===le?ce:le,y=e.rects.popper,_=e.elements[h?b:d],w=ft(xe(_)?_:_.contextElement||He(e.elements.popper),l,u,s),E=Me(e.elements.reference),O=dt({reference:E,element:y,strategy:"absolute",placement:o}),x=ct(Object.assign({},y,O)),A=d===le?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=e.modifiersData.offset;if(d===le&&L){var T=L[o];Object.keys(C).forEach((function(e){var t=[ee,Z].indexOf(e)>=0?1:-1,n=[J,Z].indexOf(e)>=0?"y":"x";C[e]+=T[n]*t}))}return C}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?fe:l,u=Ke(i),f=u?a?ue:ue.filter((function(e){return Ke(e)===u})):ie,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=pt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Te(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var gt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,g=n.allowedAutoPlacements,m=t.options.placement,v=Te(m),b=l||(v===m||!h?[tt(m)]:function(e){if(Te(e)===ne)return[];var t=tt(e);return[it(e),t,it(t)]}(m)),y=[m].concat(b).reduce((function(e,n){return e.concat(Te(n)===ne?ht(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:g}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=pt(t,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?T?ee:te:T?Z:J;_[j]>w[j]&&(D=tt(D));var P=tt(D),M=[];if(r&&M.push(k[L]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every((function(e){return e}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function mt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function vt(e){return[J,ee,Z,te].some((function(t){return e[t]>=0}))}var bt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=pt(t,{elementContext:"reference"}),a=pt(t,{altBoundary:!0}),l=mt(s,i),c=mt(a,o,r),u=vt(l),f=vt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var yt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=fe.reduce((function(e,n){return e[n]=function(e,t,n){var i=Te(e),o=[te,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[te,ee].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var _t={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=dt({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var wt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,g=void 0===h?0:h,m=pt(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Te(t.placement),b=Ke(t.placement),y=!b,_=Re(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,O=t.rects.reference,x=t.rects.popper,A="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===_?J:te,k="y"===_?Z:ee,D="y"===_?"height":"width",P=E[_],M=P+m[j],N=P-m[k],B=p?-x[D]/2:0,I=b===oe?O[D]:x[D],F=b===oe?-x[D]:-O[D],H=t.elements.arrow,$=p&&H?Ne(H):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],q=qe(0,O[D],$[D]),V=y?O[D]/2-B-q-W-C.mainAxis:I-q-W-C.mainAxis,Y=y?-O[D]/2+B+q+R+C.mainAxis:F+q+R+C.mainAxis,U=t.elements.arrow&&We(t.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==L?void 0:L[_])?S:0,X=P+Y-Q,G=qe(p?je(M,P+V-Q-K):M,P,p?Se(N,X):N);E[_]=G,T[_]=G-P}if(a){var ne,ie="x"===_?J:te,re="x"===_?Z:ee,se=E[w],ae="y"===w?"height":"width",le=se+m[ie],ce=se-m[re],ue=-1!==[J,te].indexOf(v),fe=null!=(ne=null==L?void 0:L[w])?ne:0,de=ue?le:se-O[ae]-x[ae]-fe+C.altAxis,pe=ue?se+O[ae]+x[ae]-fe-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=qe(e,t,n);return i>n?n:i}(de,se,pe):qe(p?de:le,se,p?pe:ce);E[w]=he,T[w]=he-se}t.modifiersData[i]=T}},requiresIfExists:["offset"]};function Et(e,t,n){void 0===n&&(n=!1);var i,o,r=Ae(t),s=Ae(t)&&function(e){var t=e.getBoundingClientRect(),n=ke(t.width)/e.offsetWidth||1,i=ke(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=He(t),l=Me(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ee(t)||st(a))&&(c=(i=t)!==Oe(i)&&Ae(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ot(i)),Ae(t)?((u=Me(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=rt(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Ot(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function At(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Dt.has(n)||Boolean(Pt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Nt={allowList:kt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
          "},Bt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},It={entry:"(string|element|function|null)",selector:"(string|element)"};class Ft extends M{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Nt}static get DefaultType(){return Bt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},It)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Mt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return d(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ht=new Set(["sanitize","allowList","sanitizeFn"]),$t="fade",zt="show",Wt=".tooltip-inner",Rt=".modal",qt="hide.bs.modal",Vt="hover",Yt="focus",Ut={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Kt={allowList:kt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xt extends N{constructor(e,t){if(void 0===jt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Kt}static get DefaultType(){return Qt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),qt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(zt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(zt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Yt]=!1,this._activeTrigger[Vt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove($t,zt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add($t),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ft({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[Wt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($t)}_isShown(){return this.tip&&this.tip.classList.contains(zt)}_createPopper(e){const t=d(this._config.placement,[this,e,this._element]),n=Ut[t.toUpperCase()];return St(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return d(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...d(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Vt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Vt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Yt:Vt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Yt:Vt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),qt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=P.getDataAttributes(this._element);for(const e of Object.keys(t))Ht.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Xt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}function Gt(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Jt(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Zt;f(Xt);const en=document.getElementById("toc-bar"),tn=document.getElementById("toc-solo-trigger"),nn=document.getElementsByClassName("toc-trigger"),on=document.getElementById("toc-popup"),rn=document.getElementById("toc-popup-close"),sn="overflow-hidden",an="closing";class ln{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{en.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${Gt(ln,this,un)._}px 0px 0px 0px`}).observe(tn),cn._=Gt(ln,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){Gt(ln,this,cn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return on.open}static showPopup(){this.lockScroll(!0),on.showModal();on.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){on.toggleAttribute(an),on.addEventListener("animationend",(()=>{on.toggleAttribute(an),on.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(sn,e),document.body.classList.toggle(sn,e)}static clickBackdrop(e){if(on.hasAttribute(an))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...nn].forEach((e=>{e.onclick=()=>this.showPopup()})),on.onclick=e=>this.clickBackdrop(e),rn.onclick=()=>this.hidePopup(),on.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var cn={_:!0},un={_:48};Jt(ln,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Gt(Zt=ln,Zt,un)._});Jt(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const fn=document.getElementById("mode-toggle");const dn=document.getElementById("sidebar"),pn=document.getElementById("sidebar-trigger"),hn=document.getElementById("mask");class gn{static toggle(){mn._=Gt(gn,this,!Gt(gn,this,mn)._),document.body.toggleAttribute("sidebar-display",Gt(gn,this,mn)._),dn.classList.toggle("z-2",Gt(gn,this,mn)._),hn.classList.toggle("d-none",!Gt(gn,this,mn)._)}}var mn={_:!1};const vn=document.getElementById("sidebar-trigger"),bn=document.getElementById("search-trigger"),yn=document.getElementById("search-cancel"),_n=document.querySelectorAll("#main-wrapper>.container>.row"),wn=document.getElementById("topbar-title"),En=document.getElementById("search"),On=document.getElementById("search-result-wrapper"),xn=document.getElementById("search-results"),An=document.getElementById("search-input"),Cn=document.getElementById("search-hints"),Ln="d-block",Tn="d-none",Sn="input-focus",jn="d-flex";class kn{static on(){vn.classList.add(Tn),wn.classList.add(Tn),bn.classList.add(Tn),En.classList.add(jn),yn.classList.add(Ln)}static off(){yn.classList.remove(Ln),En.classList.remove(jn),vn.classList.remove(Tn),wn.classList.remove(Tn),bn.classList.remove(Tn)}}class Dn{static on(){this.resultVisible||(On.classList.remove(Tn),_n.forEach((e=>{e.classList.add(Tn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(xn.innerHTML="",Cn.classList.contains(Tn)&&Cn.classList.remove(Tn),On.classList.add(Tn),_n.forEach((e=>{e.classList.remove(Tn)})),An.textContent="",this.resultVisible=!1)}}function Pn(){return yn.classList.contains(Ln)}Jt(Dn,"resultVisible",!1),pn.onclick=hn.onclick=()=>gn.toggle(),bn.addEventListener("click",(()=>{kn.on(),Dn.on(),An.focus()})),yn.addEventListener("click",(()=>{kn.off(),Dn.off()})),An.addEventListener("focus",(()=>{En.classList.add(Sn)})),An.addEventListener("focusout",(()=>{En.classList.remove(Sn)})),An.addEventListener("input",(()=>{""===An.value?Pn()?Cn.classList.remove(Tn):Dn.off():(Dn.on(),Pn()&&Cn.classList.add(Tn))})),fn&&fn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Xt(e)))}(); diff --git a/assets/js/dist/home.min.js b/assets/js/dist/home.min.js new file mode 100644 index 00000000000..c694828dc2e --- /dev/null +++ b/assets/js/dist/home.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of c)t()})),c.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&`${e}::${b++}`||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=E(t),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,l=E(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function D(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const P={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${D(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${D(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=k(t.dataset[i])}return e},getDataAttribute:(t,e)=>k(t.getAttribute(`data-bs-${D(e)}`))};class M{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?P.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(e)?P.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class N extends M{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},F={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=B(t);return e&&F.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?F.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?F.find(e):[]}},I=".bs.collapse",H=`show${I}`,$=`shown${I}`,z=`hide${I}`,q=`hidden${I}`,W=`click${I}.data-api`,R="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends N{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(K);for(const t of n){const e=F.getSelectorFromElement(t),n=F.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>G.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,R),this._element.style[e]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,R);for(const t of this._triggerArray){const e=F.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,q)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(R)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(K);for(const e of t){const t=F.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=F.find(U,this._config.parent);return F.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}S.on(document,W,K,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of F.getMultipleElementsFromSelector(this))G.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",tt="right",et="left",nt="auto",it=[J,Z,tt,et],ot="start",rt="end",st="clippingParents",at="viewport",lt="popper",ct="reference",ut=it.reduce((function(t,e){return t.concat([e+"-"+ot,e+"-"+rt])}),[]),ft=[].concat(it,[nt]).reduce((function(t,e){return t.concat([e,e+"-"+ot,e+"-"+rt])}),[]),dt="beforeRead",pt="read",ht="afterRead",mt="beforeMain",gt="main",vt="afterMain",bt="beforeWrite",yt="write",_t="afterWrite",wt=[dt,pt,ht,mt,gt,vt,bt,yt,_t];function Et(t){return t?(t.nodeName||"").toLowerCase():null}function Ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function xt(t){return t instanceof Ot(t).Element||t instanceof Element}function At(t){return t instanceof Ot(t).HTMLElement||t instanceof HTMLElement}function Ct(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Ot(t).ShadowRoot||t instanceof ShadowRoot)}var Tt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];At(o)&&Et(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});At(i)&&Et(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Lt(t){return t.split("-")[0]}var St=Math.max,jt=Math.min,kt=Math.round;function Dt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(Dt())}function Mt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&At(t)&&(o=t.offsetWidth>0&&kt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&kt(i.height)/t.offsetHeight||1);var s=(xt(t)?Ot(t):window).visualViewport,a=!Pt()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Nt(t){var e=Mt(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Bt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Ct(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ft(t){return Ot(t).getComputedStyle(t)}function It(t){return["table","td","th"].indexOf(Et(t))>=0}function Ht(t){return((xt(t)?t.ownerDocument:t.document)||window.document).documentElement}function $t(t){return"html"===Et(t)?t:t.assignedSlot||t.parentNode||(Ct(t)?t.host:null)||Ht(t)}function zt(t){return At(t)&&"fixed"!==Ft(t).position?t.offsetParent:null}function qt(t){for(var e=Ot(t),n=zt(t);n&&It(n)&&"static"===Ft(n).position;)n=zt(n);return n&&("html"===Et(n)||"body"===Et(n)&&"static"===Ft(n).position)?e:n||function(t){var e=/firefox/i.test(Dt());if(/Trident/i.test(Dt())&&At(t)&&"fixed"===Ft(t).position)return null;var n=$t(t);for(Ct(n)&&(n=n.host);At(n)&&["html","body"].indexOf(Et(n))<0;){var i=Ft(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Wt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Rt(t,e,n){return St(t,jt(e,n))}function Vt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Yt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Ut={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Lt(n.placement),l=Wt(a),c=[et,tt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Vt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Yt(t,it))}(o.padding,n),f=Nt(r),d="y"===l?J:et,p="y"===l?Z:tt,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=qt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Rt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Bt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kt(t){return t.split("-")[1]}var Qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=et,_=J,w=window;if(c){var E=qt(n),O="clientHeight",x="clientWidth";if(E===Ot(n)&&"static"!==Ft(E=Ht(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===J||(o===et||o===tt)&&r===rt)_=Z,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===et||(o===J||o===Z)&&r===rt)y=tt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Qt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:kt(n*o)/o||0,y:kt(i*o)/o||0}}({x:p,y:m},Ot(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Gt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Lt(e.placement),variation:Kt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Jt={passive:!0};var Zt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,Jt)})),a&&l.addEventListener("resize",n.update,Jt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,Jt)})),a&&l.removeEventListener("resize",n.update,Jt)}},data:{}},te={left:"right",right:"left",bottom:"top",top:"bottom"};function ee(t){return t.replace(/left|right|bottom|top/g,(function(t){return te[t]}))}var ne={start:"end",end:"start"};function ie(t){return t.replace(/start|end/g,(function(t){return ne[t]}))}function oe(t){var e=Ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function re(t){return Mt(Ht(t)).left+oe(t).scrollLeft}function se(t){var e=Ft(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ae(t){return["html","body","#document"].indexOf(Et(t))>=0?t.ownerDocument.body:At(t)&&se(t)?t:ae($t(t))}function le(t,e){var n;void 0===e&&(e=[]);var i=ae(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Ot(i),s=o?[r].concat(r.visualViewport||[],se(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(le($t(s)))}function ce(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ue(t,e,n){return e===at?ce(function(t,e){var n=Ot(t),i=Ht(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+re(t),y:l}}(t,n)):xt(e)?function(t,e){var n=Mt(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ce(function(t){var e,n=Ht(t),i=oe(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=St(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=St(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+re(t),l=-i.scrollTop;return"rtl"===Ft(o||n).direction&&(a+=St(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Ht(t)))}function fe(t,e,n,i){var o="clippingParents"===e?function(t){var e=le($t(t)),n=["absolute","fixed"].indexOf(Ft(t).position)>=0&&At(t)?qt(t):t;return xt(n)?e.filter((function(t){return xt(t)&&Bt(t,n)&&"body"!==Et(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=ue(t,n,i);return e.top=St(o.top,e.top),e.right=jt(o.right,e.right),e.bottom=jt(o.bottom,e.bottom),e.left=St(o.left,e.left),e}),ue(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function de(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Lt(o):null,s=o?Kt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:e={x:a,y:n.y-i.height};break;case Z:e={x:a,y:n.y+n.height};break;case tt:e={x:n.x+n.width,y:l};break;case et:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?Wt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case ot:e[c]=e[c]-(n[u]/2-i[u]/2);break;case rt:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function pe(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?st:a,c=n.rootBoundary,u=void 0===c?at:c,f=n.elementContext,d=void 0===f?lt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Vt("number"!=typeof g?g:Yt(g,it)),b=d===lt?ct:lt,y=t.rects.popper,_=t.elements[h?b:d],w=fe(xt(_)?_:_.contextElement||Ht(t.elements.popper),l,u,s),E=Mt(t.elements.reference),O=de({reference:E,element:y,strategy:"absolute",placement:o}),x=ce(Object.assign({},y,O)),A=d===lt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===lt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[tt,Z].indexOf(t)>=0?1:-1,n=[J,Z].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ft:l,u=Kt(i),f=u?a?ut:ut.filter((function(t){return Kt(t)===u})):it,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=pe(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Lt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var me={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Lt(g),b=l||(v===g||!h?[ee(g)]:function(t){if(Lt(t)===nt)return[];var e=ee(t);return[ie(t),e,ie(e)]}(g)),y=[g].concat(b).reduce((function(t,n){return t.concat(Lt(n)===nt?he(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=pe(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?tt:et:L?Z:J;_[j]>w[j]&&(D=ee(D));var P=ee(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ge(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function ve(t){return[J,tt,Z,et].some((function(e){return t[e]>=0}))}var be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=pe(e,{elementContext:"reference"}),a=pe(e,{altBoundary:!0}),l=ge(s,i),c=ge(a,o,r),u=ve(l),f=ve(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var ye={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=ft.reduce((function(t,n){return t[n]=function(t,e,n){var i=Lt(t),o=[et,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[et,tt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var _e={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=de({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var we={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=pe(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Lt(e.placement),b=Kt(e.placement),y=!b,_=Wt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?J:et,k="y"===_?Z:tt,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,F=b===ot?O[D]:x[D],I=b===ot?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Nt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},q=z[j],W=z[k],R=Rt(0,O[D],$[D]),V=y?O[D]/2-B-R-q-C.mainAxis:F-R-q-C.mainAxis,Y=y?-O[D]/2+B+R+W+C.mainAxis:I+R+W+C.mainAxis,U=e.elements.arrow&&qt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=Rt(p?jt(M,P+V-Q-K):M,P,p?St(N,X):N);E[_]=G,L[_]=G-P}if(a){var nt,it="x"===_?J:et,rt="x"===_?Z:tt,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[rt],ut=-1!==[J,et].indexOf(v),ft=null!=(nt=null==T?void 0:T[w])?nt:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Rt(t,e,n);return i>n?n:i}(dt,st,pt):Rt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ee(t,e,n){void 0===n&&(n=!1);var i,o,r=At(e),s=At(e)&&function(t){var e=t.getBoundingClientRect(),n=kt(e.width)/t.offsetWidth||1,i=kt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Ht(e),l=Mt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Et(e)||se(a))&&(c=(i=e)!==Ot(i)&&At(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:oe(i)),At(e)?((u=Mt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=re(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Oe(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var xe={placement:"bottom",modifiers:[],strategy:"absolute"};function Ae(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!De.has(n)||Boolean(Pe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const Ne={allowList:ke,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
          "},Be={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Fe={entry:"(string|element|function|null)",selector:"(string|element)"};class Ie extends M{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ne}static get DefaultType(){return Be}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Fe)}_setContent(t,e,n){const i=F.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Me(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const He=new Set(["sanitize","allowList","sanitizeFn"]),$e="fade",ze="show",qe=".tooltip-inner",We=".modal",Re="hide.bs.modal",Ve="hover",Ye="focus",Ue={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Ke={allowList:ke,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qe={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xe extends N{constructor(t,e){if(void 0===je)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ke}static get DefaultType(){return Qe}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(We),Re,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove($e,ze),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add($e),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ie({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[qe]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($e)}_isShown(){return this.tip&&this.tip.classList.contains(ze)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ue[e.toUpperCase()];return Se(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...d(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ye:Ve]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ye:Ve]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(We),Re,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=P.getDataAttributes(this._element);for(const t of Object.keys(e))He.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}f(Xe);const Ge="data-src",Je="data-lqip",Ze="shimmer",tn="blur";function en(t){this.parentElement.classList.remove(t)}function nn(){this.complete&&(this.hasAttribute(Je)?en.call(this,tn):en.call(this,Ze))}function on(){const t=this.getAttribute(Ge);this.setAttribute("src",encodeURI(t)),this.removeAttribute(Ge)}class rn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}function sn(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function an(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var ln;const cn=document.getElementById("toc-bar"),un=document.getElementById("toc-solo-trigger"),fn=document.getElementsByClassName("toc-trigger"),dn=document.getElementById("toc-popup"),pn=document.getElementById("toc-popup-close"),hn="overflow-hidden",mn="closing";class gn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{cn.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${sn(gn,this,bn)._}px 0px 0px 0px`}).observe(un),vn._=sn(gn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){sn(gn,this,vn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return dn.open}static showPopup(){this.lockScroll(!0),dn.showModal();dn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){dn.toggleAttribute(mn),dn.addEventListener("animationend",(()=>{dn.toggleAttribute(mn),dn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(hn,t),document.body.classList.toggle(hn,t)}static clickBackdrop(t){if(dn.hasAttribute(mn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...fn].forEach((t=>{t.onclick=()=>this.showPopup()})),dn.onclick=t=>this.clickBackdrop(t),pn.onclick=()=>this.hidePopup(),dn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var vn={_:!0},bn={_:48};an(gn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:sn(ln=gn,ln,bn)._});an(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const yn=document.getElementById("mode-toggle");const _n=document.getElementById("sidebar"),wn=document.getElementById("sidebar-trigger"),En=document.getElementById("mask");class On{static toggle(){xn._=sn(On,this,!sn(On,this,xn)._),document.body.toggleAttribute("sidebar-display",sn(On,this,xn)._),_n.classList.toggle("z-2",sn(On,this,xn)._),En.classList.toggle("d-none",!sn(On,this,xn)._)}}var xn={_:!1};const An=document.getElementById("sidebar-trigger"),Cn=document.getElementById("search-trigger"),Tn=document.getElementById("search-cancel"),Ln=document.querySelectorAll("#main-wrapper>.container>.row"),Sn=document.getElementById("topbar-title"),jn=document.getElementById("search"),kn=document.getElementById("search-result-wrapper"),Dn=document.getElementById("search-results"),Pn=document.getElementById("search-input"),Mn=document.getElementById("search-hints"),Nn="d-block",Bn="d-none",Fn="input-focus",In="d-flex";class Hn{static on(){An.classList.add(Bn),Sn.classList.add(Bn),Cn.classList.add(Bn),jn.classList.add(In),Tn.classList.add(Nn)}static off(){Tn.classList.remove(Nn),jn.classList.remove(In),An.classList.remove(Bn),Sn.classList.remove(Bn),Cn.classList.remove(Bn)}}class $n{static on(){this.resultVisible||(kn.classList.remove(Bn),Ln.forEach((t=>{t.classList.add(Bn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Dn.innerHTML="",Mn.classList.contains(Bn)&&Mn.classList.remove(Bn),kn.classList.add(Bn),Ln.forEach((t=>{t.classList.remove(Bn)})),Pn.textContent="",this.resultVisible=!1)}}function zn(){return Tn.classList.contains(Nn)}an($n,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",nn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&en.call(t,Ze)}));const e=document.querySelectorAll(`article img[${Je}="true"]`);e.length&&e.forEach((t=>{on.call(t)}))}(),dayjs.locale(rn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${rn.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(rn.getTimestamp(t)),n=e.format(rn.getDateFormat(t));if(t.textContent=n,t.removeAttribute(rn.attrTimestamp),t.removeAttribute(rn.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),wn.onclick=En.onclick=()=>On.toggle(),Cn.addEventListener("click",(()=>{Hn.on(),$n.on(),Pn.focus()})),Tn.addEventListener("click",(()=>{Hn.off(),$n.off()})),Pn.addEventListener("focus",(()=>{jn.classList.add(Fn)})),Pn.addEventListener("focusout",(()=>{jn.classList.remove(Fn)})),Pn.addEventListener("input",(()=>{""===Pn.value?zn()?Mn.classList.remove(Bn):$n.off():($n.on(),zn()&&Mn.classList.add(Bn))})),yn&&yn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Xe(t)))}(); diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js new file mode 100644 index 00000000000..8110ab6987a --- /dev/null +++ b/assets/js/dist/misc.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of c)t()})),c.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&`${e}::${b++}`||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=E(t),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,l=E(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function D(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const P={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${D(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${D(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=k(t.dataset[i])}return e},getDataAttribute:(t,e)=>k(t.getAttribute(`data-bs-${D(e)}`))};class M{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?P.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(e)?P.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class N extends M{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},F={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=B(t);return e&&F.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?F.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?F.find(e):[]}},I=".bs.collapse",H=`show${I}`,$=`shown${I}`,z=`hide${I}`,W=`hidden${I}`,R=`click${I}.data-api`,q="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends N{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(K);for(const t of n){const e=F.getSelectorFromElement(t),n=F.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>G.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,q),this._element.style[e]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,q);for(const t of this._triggerArray){const e=F.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,W)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(K);for(const e of t){const t=F.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=F.find(U,this._config.parent);return F.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}S.on(document,R,K,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of F.getMultipleElementsFromSelector(this))G.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",tt="right",et="left",nt="auto",it=[J,Z,tt,et],ot="start",rt="end",st="clippingParents",at="viewport",lt="popper",ct="reference",ut=it.reduce((function(t,e){return t.concat([e+"-"+ot,e+"-"+rt])}),[]),ft=[].concat(it,[nt]).reduce((function(t,e){return t.concat([e,e+"-"+ot,e+"-"+rt])}),[]),dt="beforeRead",pt="read",ht="afterRead",mt="beforeMain",gt="main",vt="afterMain",bt="beforeWrite",yt="write",_t="afterWrite",wt=[dt,pt,ht,mt,gt,vt,bt,yt,_t];function Et(t){return t?(t.nodeName||"").toLowerCase():null}function Ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function xt(t){return t instanceof Ot(t).Element||t instanceof Element}function At(t){return t instanceof Ot(t).HTMLElement||t instanceof HTMLElement}function Ct(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Ot(t).ShadowRoot||t instanceof ShadowRoot)}var Tt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];At(o)&&Et(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});At(i)&&Et(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Lt(t){return t.split("-")[0]}var St=Math.max,jt=Math.min,kt=Math.round;function Dt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(Dt())}function Mt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&At(t)&&(o=t.offsetWidth>0&&kt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&kt(i.height)/t.offsetHeight||1);var s=(xt(t)?Ot(t):window).visualViewport,a=!Pt()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Nt(t){var e=Mt(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Bt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Ct(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ft(t){return Ot(t).getComputedStyle(t)}function It(t){return["table","td","th"].indexOf(Et(t))>=0}function Ht(t){return((xt(t)?t.ownerDocument:t.document)||window.document).documentElement}function $t(t){return"html"===Et(t)?t:t.assignedSlot||t.parentNode||(Ct(t)?t.host:null)||Ht(t)}function zt(t){return At(t)&&"fixed"!==Ft(t).position?t.offsetParent:null}function Wt(t){for(var e=Ot(t),n=zt(t);n&&It(n)&&"static"===Ft(n).position;)n=zt(n);return n&&("html"===Et(n)||"body"===Et(n)&&"static"===Ft(n).position)?e:n||function(t){var e=/firefox/i.test(Dt());if(/Trident/i.test(Dt())&&At(t)&&"fixed"===Ft(t).position)return null;var n=$t(t);for(Ct(n)&&(n=n.host);At(n)&&["html","body"].indexOf(Et(n))<0;){var i=Ft(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Rt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function qt(t,e,n){return St(t,jt(e,n))}function Vt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Yt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Ut={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Lt(n.placement),l=Rt(a),c=[et,tt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Vt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Yt(t,it))}(o.padding,n),f=Nt(r),d="y"===l?J:et,p="y"===l?Z:tt,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=Wt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=qt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Bt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kt(t){return t.split("-")[1]}var Qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=et,_=J,w=window;if(c){var E=Wt(n),O="clientHeight",x="clientWidth";if(E===Ot(n)&&"static"!==Ft(E=Ht(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===J||(o===et||o===tt)&&r===rt)_=Z,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===et||(o===J||o===Z)&&r===rt)y=tt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Qt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:kt(n*o)/o||0,y:kt(i*o)/o||0}}({x:p,y:m},Ot(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Gt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Lt(e.placement),variation:Kt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Jt={passive:!0};var Zt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,Jt)})),a&&l.addEventListener("resize",n.update,Jt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,Jt)})),a&&l.removeEventListener("resize",n.update,Jt)}},data:{}},te={left:"right",right:"left",bottom:"top",top:"bottom"};function ee(t){return t.replace(/left|right|bottom|top/g,(function(t){return te[t]}))}var ne={start:"end",end:"start"};function ie(t){return t.replace(/start|end/g,(function(t){return ne[t]}))}function oe(t){var e=Ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function re(t){return Mt(Ht(t)).left+oe(t).scrollLeft}function se(t){var e=Ft(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ae(t){return["html","body","#document"].indexOf(Et(t))>=0?t.ownerDocument.body:At(t)&&se(t)?t:ae($t(t))}function le(t,e){var n;void 0===e&&(e=[]);var i=ae(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Ot(i),s=o?[r].concat(r.visualViewport||[],se(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(le($t(s)))}function ce(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ue(t,e,n){return e===at?ce(function(t,e){var n=Ot(t),i=Ht(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+re(t),y:l}}(t,n)):xt(e)?function(t,e){var n=Mt(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ce(function(t){var e,n=Ht(t),i=oe(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=St(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=St(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+re(t),l=-i.scrollTop;return"rtl"===Ft(o||n).direction&&(a+=St(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Ht(t)))}function fe(t,e,n,i){var o="clippingParents"===e?function(t){var e=le($t(t)),n=["absolute","fixed"].indexOf(Ft(t).position)>=0&&At(t)?Wt(t):t;return xt(n)?e.filter((function(t){return xt(t)&&Bt(t,n)&&"body"!==Et(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=ue(t,n,i);return e.top=St(o.top,e.top),e.right=jt(o.right,e.right),e.bottom=jt(o.bottom,e.bottom),e.left=St(o.left,e.left),e}),ue(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function de(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Lt(o):null,s=o?Kt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:e={x:a,y:n.y-i.height};break;case Z:e={x:a,y:n.y+n.height};break;case tt:e={x:n.x+n.width,y:l};break;case et:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?Rt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case ot:e[c]=e[c]-(n[u]/2-i[u]/2);break;case rt:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function pe(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?st:a,c=n.rootBoundary,u=void 0===c?at:c,f=n.elementContext,d=void 0===f?lt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Vt("number"!=typeof g?g:Yt(g,it)),b=d===lt?ct:lt,y=t.rects.popper,_=t.elements[h?b:d],w=fe(xt(_)?_:_.contextElement||Ht(t.elements.popper),l,u,s),E=Mt(t.elements.reference),O=de({reference:E,element:y,strategy:"absolute",placement:o}),x=ce(Object.assign({},y,O)),A=d===lt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===lt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[tt,Z].indexOf(t)>=0?1:-1,n=[J,Z].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ft:l,u=Kt(i),f=u?a?ut:ut.filter((function(t){return Kt(t)===u})):it,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=pe(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Lt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var me={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Lt(g),b=l||(v===g||!h?[ee(g)]:function(t){if(Lt(t)===nt)return[];var e=ee(t);return[ie(t),e,ie(e)]}(g)),y=[g].concat(b).reduce((function(t,n){return t.concat(Lt(n)===nt?he(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=pe(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?tt:et:L?Z:J;_[j]>w[j]&&(D=ee(D));var P=ee(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ge(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function ve(t){return[J,tt,Z,et].some((function(e){return t[e]>=0}))}var be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=pe(e,{elementContext:"reference"}),a=pe(e,{altBoundary:!0}),l=ge(s,i),c=ge(a,o,r),u=ve(l),f=ve(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var ye={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=ft.reduce((function(t,n){return t[n]=function(t,e,n){var i=Lt(t),o=[et,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[et,tt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var _e={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=de({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}};var we={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=pe(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Lt(e.placement),b=Kt(e.placement),y=!b,_=Rt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?J:et,k="y"===_?Z:tt,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,F=b===ot?O[D]:x[D],I=b===ot?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Nt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],q=qt(0,O[D],$[D]),V=y?O[D]/2-B-q-W-C.mainAxis:F-q-W-C.mainAxis,Y=y?-O[D]/2+B+q+R+C.mainAxis:I+q+R+C.mainAxis,U=e.elements.arrow&&Wt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=qt(p?jt(M,P+V-Q-K):M,P,p?St(N,X):N);E[_]=G,L[_]=G-P}if(a){var nt,it="x"===_?J:et,rt="x"===_?Z:tt,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[rt],ut=-1!==[J,et].indexOf(v),ft=null!=(nt=null==T?void 0:T[w])?nt:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=qt(t,e,n);return i>n?n:i}(dt,st,pt):qt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ee(t,e,n){void 0===n&&(n=!1);var i,o,r=At(e),s=At(e)&&function(t){var e=t.getBoundingClientRect(),n=kt(e.width)/t.offsetWidth||1,i=kt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Ht(e),l=Mt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Et(e)||se(a))&&(c=(i=e)!==Ot(i)&&At(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:oe(i)),At(e)?((u=Mt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=re(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Oe(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var xe={placement:"bottom",modifiers:[],strategy:"absolute"};function Ae(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!De.has(n)||Boolean(Pe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const Ne={allowList:ke,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
          "},Be={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Fe={entry:"(string|element|function|null)",selector:"(string|element)"};class Ie extends M{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ne}static get DefaultType(){return Be}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Fe)}_setContent(t,e,n){const i=F.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Me(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const He=new Set(["sanitize","allowList","sanitizeFn"]),$e="fade",ze="show",We=".tooltip-inner",Re=".modal",qe="hide.bs.modal",Ve="hover",Ye="focus",Ue={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Ke={allowList:ke,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qe={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xe extends N{constructor(t,e){if(void 0===je)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ke}static get DefaultType(){return Qe}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Re),qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove($e,ze),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add($e),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ie({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[We]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($e)}_isShown(){return this.tip&&this.tip.classList.contains(ze)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ue[e.toUpperCase()];return Se(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...d(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ye:Ve]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ye:Ve]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Re),qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=P.getDataAttributes(this._element);for(const t of Object.keys(e))He.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}f(Xe);class Ge{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}function Je(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function Ze(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var tn;const en=document.getElementById("toc-bar"),nn=document.getElementById("toc-solo-trigger"),on=document.getElementsByClassName("toc-trigger"),rn=document.getElementById("toc-popup"),sn=document.getElementById("toc-popup-close"),an="overflow-hidden",ln="closing";class cn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{en.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${Je(cn,this,fn)._}px 0px 0px 0px`}).observe(nn),un._=Je(cn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){Je(cn,this,un)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return rn.open}static showPopup(){this.lockScroll(!0),rn.showModal();rn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){rn.toggleAttribute(ln),rn.addEventListener("animationend",(()=>{rn.toggleAttribute(ln),rn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(an,t),document.body.classList.toggle(an,t)}static clickBackdrop(t){if(rn.hasAttribute(ln))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...on].forEach((t=>{t.onclick=()=>this.showPopup()})),rn.onclick=t=>this.clickBackdrop(t),sn.onclick=()=>this.hidePopup(),rn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var un={_:!0},fn={_:48};Ze(cn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Je(tn=cn,tn,fn)._});Ze(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const dn=document.getElementById("mode-toggle");const pn=document.getElementById("sidebar"),hn=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask");class gn{static toggle(){vn._=Je(gn,this,!Je(gn,this,vn)._),document.body.toggleAttribute("sidebar-display",Je(gn,this,vn)._),pn.classList.toggle("z-2",Je(gn,this,vn)._),mn.classList.toggle("d-none",!Je(gn,this,vn)._)}}var vn={_:!1};const bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("search-trigger"),_n=document.getElementById("search-cancel"),wn=document.querySelectorAll("#main-wrapper>.container>.row"),En=document.getElementById("topbar-title"),On=document.getElementById("search"),xn=document.getElementById("search-result-wrapper"),An=document.getElementById("search-results"),Cn=document.getElementById("search-input"),Tn=document.getElementById("search-hints"),Ln="d-block",Sn="d-none",jn="input-focus",kn="d-flex";class Dn{static on(){bn.classList.add(Sn),En.classList.add(Sn),yn.classList.add(Sn),On.classList.add(kn),_n.classList.add(Ln)}static off(){_n.classList.remove(Ln),On.classList.remove(kn),bn.classList.remove(Sn),En.classList.remove(Sn),yn.classList.remove(Sn)}}class Pn{static on(){this.resultVisible||(xn.classList.remove(Sn),wn.forEach((t=>{t.classList.add(Sn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(An.innerHTML="",Tn.classList.contains(Sn)&&Tn.classList.remove(Sn),xn.classList.add(Sn),wn.forEach((t=>{t.classList.remove(Sn)})),Cn.textContent="",this.resultVisible=!1)}}function Mn(){return _n.classList.contains(Ln)}Ze(Pn,"resultVisible",!1),hn.onclick=mn.onclick=()=>gn.toggle(),yn.addEventListener("click",(()=>{Dn.on(),Pn.on(),Cn.focus()})),_n.addEventListener("click",(()=>{Dn.off(),Pn.off()})),Cn.addEventListener("focus",(()=>{On.classList.add(jn)})),Cn.addEventListener("focusout",(()=>{On.classList.remove(jn)})),Cn.addEventListener("input",(()=>{""===Cn.value?Mn()?Tn.classList.remove(Sn):Pn.off():(Pn.on(),Mn()&&Tn.classList.add(Sn))})),dayjs.locale(Ge.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Ge.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(Ge.getTimestamp(t)),n=e.format(Ge.getDateFormat(t));if(t.textContent=n,t.removeAttribute(Ge.attrTimestamp),t.removeAttribute(Ge.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),dn&&dn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Xe(t)))}(); diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js new file mode 100644 index 00000000000..7f684f5005a --- /dev/null +++ b/assets/js/dist/page.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},d=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),d(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${b++}`||e.uidEvent||b++}function E(e){const t=w(e);return e.uidEvent=t,v[t]=v[t]||{},v[t]}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=L(e);return _.has(r)||(r=e),[i,o,r]}function O(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=A(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,t.replace(h,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return k(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return k(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,e.addEventListener(a,d,r)}function C(e,t,n,i,o){const r=A(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function T(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function L(e){return e=e.replace(m,""),y[e]||e}const S={on(e,t,n,i){O(e,t,n,i,!1)},one(e,t,n,i){O(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==L(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=k(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function j(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const P={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=j(e.dataset[i])}return t},getDataAttribute:(e,t)=>j(e.getAttribute(`data-bs-${D(t)}`))};class N{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?P.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?P.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class M extends N{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const B=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=B(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=B(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=B(e);return t?I.find(t):[]}},F=".bs.collapse",H=`show${F}`,$=`shown${F}`,q=`hide${F}`,z=`hidden${F}`,W=`click${F}.data-api`,R="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},G={parent:"(null|element)",toggle:"boolean"};class X extends M{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return G}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>X.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,R),this._element.style[t]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,q).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,R);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,z)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(R)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(U,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=X.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,W,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))X.getOrCreateInstance(e,{toggle:!1}).toggle()})),f(X),document.getElementsByClassName("collapse");var J="top",Z="bottom",ee="right",te="left",ne="auto",ie=[J,Z,ee,te],oe="start",re="end",se="clippingParents",ae="viewport",le="popper",ce="reference",ue=ie.reduce((function(e,t){return e.concat([t+"-"+oe,t+"-"+re])}),[]),fe=[].concat(ie,[ne]).reduce((function(e,t){return e.concat([t,t+"-"+oe,t+"-"+re])}),[]),de="beforeRead",pe="read",he="afterRead",me="beforeMain",ge="main",ve="afterMain",be="beforeWrite",ye="write",_e="afterWrite",we=[de,pe,he,me,ge,ve,be,ye,_e];function Ee(e){return e?(e.nodeName||"").toLowerCase():null}function Ae(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xe(e){return e instanceof Ae(e).Element||e instanceof Element}function Oe(e){return e instanceof Ae(e).HTMLElement||e instanceof HTMLElement}function Ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Ae(e).ShadowRoot||e instanceof ShadowRoot)}var Te={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Oe(o)&&Ee(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Oe(i)&&Ee(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Le(e){return e.split("-")[0]}var Se=Math.max,ke=Math.min,je=Math.round;function De(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Pe(){return!/^((?!chrome|android).)*safari/i.test(De())}function Ne(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Oe(e)&&(o=e.offsetWidth>0&&je(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&je(i.height)/e.offsetHeight||1);var s=(xe(e)?Ae(e):window).visualViewport,a=!Pe()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Me(e){var t=Ne(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Be(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ce(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ie(e){return Ae(e).getComputedStyle(e)}function Fe(e){return["table","td","th"].indexOf(Ee(e))>=0}function He(e){return((xe(e)?e.ownerDocument:e.document)||window.document).documentElement}function $e(e){return"html"===Ee(e)?e:e.assignedSlot||e.parentNode||(Ce(e)?e.host:null)||He(e)}function qe(e){return Oe(e)&&"fixed"!==Ie(e).position?e.offsetParent:null}function ze(e){for(var t=Ae(e),n=qe(e);n&&Fe(n)&&"static"===Ie(n).position;)n=qe(n);return n&&("html"===Ee(n)||"body"===Ee(n)&&"static"===Ie(n).position)?t:n||function(e){var t=/firefox/i.test(De());if(/Trident/i.test(De())&&Oe(e)&&"fixed"===Ie(e).position)return null;var n=$e(e);for(Ce(n)&&(n=n.host);Oe(n)&&["html","body"].indexOf(Ee(n))<0;){var i=Ie(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function We(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Re(e,t,n){return Se(e,ke(t,n))}function Ve(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ye(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ue={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Le(n.placement),l=We(a),c=[te,ee].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ve("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ye(e,ie))}(o.padding,n),f=Me(r),d="y"===l?J:te,p="y"===l?Z:ee,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=ze(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Re(y,w,_),A=l;n.modifiersData[i]=((t={})[A]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Be(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ke(e){return e.split("-")[1]}var Qe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ge(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=te,_=J,w=window;if(c){var E=ze(n),A="clientHeight",x="clientWidth";if(E===Ae(n)&&"static"!==Ie(E=He(n)).position&&"absolute"===a&&(A="scrollHeight",x="scrollWidth"),o===J||(o===te||o===ee)&&r===re)_=Z,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[A])-i.height,m*=l?1:-1;if(o===te||(o===J||o===Z)&&r===re)y=ee,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var O,C=Object.assign({position:a},c&&Qe),T=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:je(n*o)/o||0,y:je(i*o)/o||0}}({x:p,y:m},Ae(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((O={})[_]=b?"0":"",O[y]=v?"0":"",O.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",O)):Object.assign({},C,((t={})[_]=b?m+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Xe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Le(t.placement),variation:Ke(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Ge(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ge(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Je={passive:!0};var Ze={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ae(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Je)})),a&&l.addEventListener("resize",n.update,Je),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Je)})),a&&l.removeEventListener("resize",n.update,Je)}},data:{}},et={left:"right",right:"left",bottom:"top",top:"bottom"};function tt(e){return e.replace(/left|right|bottom|top/g,(function(e){return et[e]}))}var nt={start:"end",end:"start"};function it(e){return e.replace(/start|end/g,(function(e){return nt[e]}))}function ot(e){var t=Ae(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rt(e){return Ne(He(e)).left+ot(e).scrollLeft}function st(e){var t=Ie(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function at(e){return["html","body","#document"].indexOf(Ee(e))>=0?e.ownerDocument.body:Oe(e)&&st(e)?e:at($e(e))}function lt(e,t){var n;void 0===t&&(t=[]);var i=at(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Ae(i),s=o?[r].concat(r.visualViewport||[],st(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(lt($e(s)))}function ct(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ut(e,t,n){return t===ae?ct(function(e,t){var n=Ae(e),i=He(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pe();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+rt(e),y:l}}(e,n)):xe(t)?function(e,t){var n=Ne(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ct(function(e){var t,n=He(e),i=ot(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=Se(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Se(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+rt(e),l=-i.scrollTop;return"rtl"===Ie(o||n).direction&&(a+=Se(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(He(e)))}function ft(e,t,n,i){var o="clippingParents"===t?function(e){var t=lt($e(e)),n=["absolute","fixed"].indexOf(Ie(e).position)>=0&&Oe(e)?ze(e):e;return xe(n)?t.filter((function(e){return xe(e)&&Be(e,n)&&"body"!==Ee(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ut(e,n,i);return t.top=Se(o.top,t.top),t.right=ke(o.right,t.right),t.bottom=ke(o.bottom,t.bottom),t.left=Se(o.left,t.left),t}),ut(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function dt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Le(o):null,s=o?Ke(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:t={x:a,y:n.y-i.height};break;case Z:t={x:a,y:n.y+n.height};break;case ee:t={x:n.x+n.width,y:l};break;case te:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?We(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case oe:t[c]=t[c]-(n[u]/2-i[u]/2);break;case re:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function pt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?se:a,c=n.rootBoundary,u=void 0===c?ae:c,f=n.elementContext,d=void 0===f?le:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Ve("number"!=typeof g?g:Ye(g,ie)),b=d===le?ce:le,y=e.rects.popper,_=e.elements[h?b:d],w=ft(xe(_)?_:_.contextElement||He(e.elements.popper),l,u,s),E=Ne(e.elements.reference),A=dt({reference:E,element:y,strategy:"absolute",placement:o}),x=ct(Object.assign({},y,A)),O=d===le?x:E,C={top:w.top-O.top+v.top,bottom:O.bottom-w.bottom+v.bottom,left:w.left-O.left+v.left,right:O.right-w.right+v.right},T=e.modifiersData.offset;if(d===le&&T){var L=T[o];Object.keys(C).forEach((function(e){var t=[ee,Z].indexOf(e)>=0?1:-1,n=[J,Z].indexOf(e)>=0?"y":"x";C[e]+=L[n]*t}))}return C}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?fe:l,u=Ke(i),f=u?a?ue:ue.filter((function(e){return Ke(e)===u})):ie,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=pt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Le(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var mt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,v=Le(g),b=l||(v===g||!h?[tt(g)]:function(e){if(Le(e)===ne)return[];var t=tt(e);return[it(e),t,it(t)]}(g)),y=[g].concat(b).reduce((function(e,n){return e.concat(Le(n)===ne?ht(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,A=!0,x=y[0],O=0;O=0,k=S?"width":"height",j=pt(t,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?ee:te:L?Z:J;_[k]>w[k]&&(D=tt(D));var P=tt(D),N=[];if(r&&N.push(j[T]<=0),a&&N.push(j[D]<=0,j[P]<=0),N.every((function(e){return e}))){x=C,A=!1;break}E.set(C,N)}if(A)for(var M=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function gt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function vt(e){return[J,ee,Z,te].some((function(t){return e[t]>=0}))}var bt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=pt(t,{elementContext:"reference"}),a=pt(t,{altBoundary:!0}),l=gt(s,i),c=gt(a,o,r),u=vt(l),f=vt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var yt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=fe.reduce((function(e,n){return e[n]=function(e,t,n){var i=Le(e),o=[te,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[te,ee].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var _t={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=dt({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};var wt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=pt(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Le(t.placement),b=Ke(t.placement),y=!b,_=We(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,A=t.rects.reference,x=t.rects.popper,O="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(E){if(r){var S,k="y"===_?J:te,j="y"===_?Z:ee,D="y"===_?"height":"width",P=E[_],N=P+g[k],M=P-g[j],B=p?-x[D]/2:0,I=b===oe?A[D]:x[D],F=b===oe?-x[D]:-A[D],H=t.elements.arrow,$=p&&H?Me(H):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=q[k],W=q[j],R=Re(0,A[D],$[D]),V=y?A[D]/2-B-R-z-C.mainAxis:I-R-z-C.mainAxis,Y=y?-A[D]/2+B+R+W+C.mainAxis:F+R+W+C.mainAxis,U=t.elements.arrow&&ze(t.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,G=P+Y-Q,X=Re(p?ke(N,P+V-Q-K):N,P,p?Se(M,G):M);E[_]=X,L[_]=X-P}if(a){var ne,ie="x"===_?J:te,re="x"===_?Z:ee,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[re],ue=-1!==[J,te].indexOf(v),fe=null!=(ne=null==T?void 0:T[w])?ne:0,de=ue?le:se-A[ae]-x[ae]-fe+C.altAxis,pe=ue?se+A[ae]+x[ae]-fe-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=Re(e,t,n);return i>n?n:i}(de,se,pe):Re(p?de:le,se,p?pe:ce);E[w]=he,L[w]=he-se}t.modifiersData[i]=L}},requiresIfExists:["offset"]};function Et(e,t,n){void 0===n&&(n=!1);var i,o,r=Oe(t),s=Oe(t)&&function(e){var t=e.getBoundingClientRect(),n=je(t.width)/e.offsetWidth||1,i=je(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=He(t),l=Ne(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ee(t)||st(a))&&(c=(i=t)!==Ae(i)&&Oe(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ot(i)),Oe(t)?((u=Ne(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=rt(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function At(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function Ot(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Dt.has(n)||Boolean(Pt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Mt={allowList:jt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
          "},Bt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},It={entry:"(string|element|function|null)",selector:"(string|element)"};class Ft extends N{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Mt}static get DefaultType(){return Bt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},It)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Nt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return d(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ht=new Set(["sanitize","allowList","sanitizeFn"]),$t="fade",qt="show",zt=".tooltip-inner",Wt=".modal",Rt="hide.bs.modal",Vt="hover",Yt="focus",Ut={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Kt={allowList:jt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Gt extends M{constructor(e,t){if(void 0===kt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Kt}static get DefaultType(){return Qt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Wt),Rt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(qt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(qt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Yt]=!1,this._activeTrigger[Vt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove($t,qt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add($t),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ft({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[zt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($t)}_isShown(){return this.tip&&this.tip.classList.contains(qt)}_createPopper(e){const t=d(this._config.placement,[this,e,this._element]),n=Ut[t.toUpperCase()];return St(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return d(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...d(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Vt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Vt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Yt:Vt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Yt:Vt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Wt),Rt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=P.getDataAttributes(this._element);for(const e of Object.keys(t))Ht.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Gt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}f(Gt);const Xt=".code-header>button",Jt="timeout",Zt="data-title-succeed",en="data-bs-original-title",tn=2e3;function nn(e){if(e.hasAttribute(Jt)){let t=e.getAttribute(Jt);if(Number(t)>Date.now())return!0}return!1}function on(e){e.setAttribute(Jt,Date.now()+tn)}function rn(e){e.removeAttribute(Jt)}function sn(){const e=document.querySelectorAll(Xt);if(0===e.length)return;const t=new ClipboardJS(Xt,{target:e=>e.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...e].map((e=>new Gt(e,{placement:"left"}))),t.on("success",(e=>{const t=e.trigger;(e.clearSelection(),nn(t))||(t.children[0].setAttribute("class","fas fa-check"),function(e){const t=e.getAttribute(Zt);e.setAttribute(en,t),Gt.getInstance(e).show()}(t),on(t),setTimeout((()=>{!function(e){Gt.getInstance(e).hide(),e.removeAttribute(en)}(t),function(e){e.children[0].setAttribute("class","far fa-clipboard")}(t),rn(t)}),tn))}))}const an="data-src",ln="data-lqip",cn="shimmer",un="blur";function fn(e){this.parentElement.classList.remove(e)}function dn(){this.complete&&(this.hasAttribute(ln)?fn.call(this,un):fn.call(this,cn))}function pn(){const e=this.getAttribute(an);this.setAttribute("src",encodeURI(e)),this.removeAttribute(an)}const hn=".popup:not(.dark)",mn=".popup:not(.light)";let gn=hn;function vn(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function bn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var yn;const _n=document.getElementById("toc-bar"),wn=document.getElementById("toc-solo-trigger"),En=document.getElementsByClassName("toc-trigger"),An=document.getElementById("toc-popup"),xn=document.getElementById("toc-popup-close"),On="overflow-hidden",Cn="closing";class Tn{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{_n.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${vn(Tn,this,Sn)._}px 0px 0px 0px`}).observe(wn),Ln._=vn(Tn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){vn(Tn,this,Ln)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return An.open}static showPopup(){this.lockScroll(!0),An.showModal();An.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){An.toggleAttribute(Cn),An.addEventListener("animationend",(()=>{An.toggleAttribute(Cn),An.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(On,e),document.body.classList.toggle(On,e)}static clickBackdrop(e){if(An.hasAttribute(Cn))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...En].forEach((e=>{e.onclick=()=>this.showPopup()})),An.onclick=e=>this.clickBackdrop(e),xn.onclick=()=>this.hidePopup(),An.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Ln={_:!0},Sn={_:48};bn(Tn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:vn(yn=Tn,yn,Sn)._});bn(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)");const kn="mermaid",jn=Theme.getThemeMapper("default","dark");function Dn(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(kn)].forEach((e=>{const t=e.previousSibling.children.item(0).innerHTML;e.textContent=t,e.removeAttribute("data-processed")}));const e=jn[Theme.visualState];mermaid.initialize({theme:e}),mermaid.init(null,`.${kn}`)}}function Pn(e){const t=e.textContent,n=e.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(kn);const o=document.createTextNode(t);i.appendChild(o),n.after(i)}const Nn=document.getElementById("mode-toggle");const Mn=document.getElementById("sidebar"),Bn=document.getElementById("sidebar-trigger"),In=document.getElementById("mask");class Fn{static toggle(){Hn._=vn(Fn,this,!vn(Fn,this,Hn)._),document.body.toggleAttribute("sidebar-display",vn(Fn,this,Hn)._),Mn.classList.toggle("z-2",vn(Fn,this,Hn)._),In.classList.toggle("d-none",!vn(Fn,this,Hn)._)}}var Hn={_:!1};const $n=document.getElementById("sidebar-trigger"),qn=document.getElementById("search-trigger"),zn=document.getElementById("search-cancel"),Wn=document.querySelectorAll("#main-wrapper>.container>.row"),Rn=document.getElementById("topbar-title"),Vn=document.getElementById("search"),Yn=document.getElementById("search-result-wrapper"),Un=document.getElementById("search-results"),Kn=document.getElementById("search-input"),Qn=document.getElementById("search-hints"),Gn="d-block",Xn="d-none",Jn="input-focus",Zn="d-flex";class ei{static on(){$n.classList.add(Xn),Rn.classList.add(Xn),qn.classList.add(Xn),Vn.classList.add(Zn),zn.classList.add(Gn)}static off(){zn.classList.remove(Gn),Vn.classList.remove(Zn),$n.classList.remove(Xn),Rn.classList.remove(Xn),qn.classList.remove(Xn)}}class ti{static on(){this.resultVisible||(Yn.classList.remove(Xn),Wn.forEach((e=>{e.classList.add(Xn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(Un.innerHTML="",Qn.classList.contains(Xn)&&Qn.classList.remove(Xn),Yn.classList.add(Xn),Wn.forEach((e=>{e.classList.remove(Xn)})),Kn.textContent="",this.resultVisible=!1)}}function ni(){return zn.classList.contains(Gn)}bn(ti,"resultVisible",!1),function(){const e=document.querySelectorAll("article img");if(0===e.length)return;e.forEach((e=>{e.addEventListener("load",dn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((e=>{e.complete&&fn.call(e,cn)}));const t=document.querySelectorAll(`article img[${ln}="true"]`);t.length&&t.forEach((e=>{pn.call(e)}))}(),function(){if(null===document.querySelector(".popup"))return;const e=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(gn=mn);let t=GLightbox({selector:`${gn}`});if(e&&Theme.switchable){let e=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(e,t){gn=gn===hn?mn:hn,null===t&&(t=GLightbox({selector:`${gn}`})),[e,t]=[t,e]}(t,e)}))}}(),Bn.onclick=In.onclick=()=>Fn.toggle(),qn.addEventListener("click",(()=>{ei.on(),ti.on(),Kn.focus()})),zn.addEventListener("click",(()=>{ei.off(),ti.off()})),Kn.addEventListener("focus",(()=>{Vn.classList.add(Jn)})),Kn.addEventListener("focusout",(()=>{Vn.classList.remove(Jn)})),Kn.addEventListener("input",(()=>{""===Kn.value?ni()?Qn.classList.remove(Xn):ti.off():(ti.on(),ni()&&Qn.classList.add(Xn))})),sn(),function(){const e=document.getElementById("copy-link");null!==e&&(e.addEventListener("click",(e=>{const t=e.target;nn(t)||navigator.clipboard.writeText(window.location.href).then((()=>{const e=t.getAttribute(en),n=t.getAttribute(Zt);t.setAttribute(en,n),Gt.getInstance(t).show(),on(t),setTimeout((()=>{t.setAttribute(en,e),rn(t)}),tn)}))})),e.addEventListener("mouseleave",(e=>{Gt.getInstance(e.target).hide()})))}(),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let e={theme:jn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Pn),mermaid.initialize(e),Theme.switchable&&window.addEventListener("message",Dn)}(),Nn&&Nn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Gt(e)))}(); diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js new file mode 100644 index 00000000000..57c3e3f0f0e --- /dev/null +++ b/assets/js/dist/post.min.js @@ -0,0 +1,2994 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!(function () { + 'use strict'; + var t = 'top', + e = 'bottom', + n = 'right', + i = 'left', + o = 'auto', + r = [t, e, n, i], + s = 'start', + a = 'end', + l = 'clippingParents', + c = 'viewport', + u = 'popper', + f = 'reference', + d = r.reduce(function (t, e) { + return t.concat([e + '-' + s, e + '-' + a]); + }, []), + p = [].concat(r, [o]).reduce(function (t, e) { + return t.concat([e, e + '-' + s, e + '-' + a]); + }, []), + h = 'beforeRead', + m = 'read', + g = 'afterRead', + b = 'beforeMain', + v = 'main', + y = 'afterMain', + _ = 'beforeWrite', + w = 'write', + E = 'afterWrite', + A = [h, m, g, b, v, y, _, w, E]; + function x(t) { + return t ? (t.nodeName || '').toLowerCase() : null; + } + function O(t) { + if (null == t) return window; + if ('[object Window]' !== t.toString()) { + var e = t.ownerDocument; + return (e && e.defaultView) || window; + } + return t; + } + function C(t) { + return t instanceof O(t).Element || t instanceof Element; + } + function T(t) { + return t instanceof O(t).HTMLElement || t instanceof HTMLElement; + } + function L(t) { + return ( + 'undefined' != typeof ShadowRoot && + (t instanceof O(t).ShadowRoot || t instanceof ShadowRoot) + ); + } + var S = { + name: 'applyStyles', + enabled: !0, + phase: 'write', + fn: function (t) { + var e = t.state; + Object.keys(e.elements).forEach(function (t) { + var n = e.styles[t] || {}, + i = e.attributes[t] || {}, + o = e.elements[t]; + T(o) && + x(o) && + (Object.assign(o.style, n), + Object.keys(i).forEach(function (t) { + var e = i[t]; + !1 === e + ? o.removeAttribute(t) + : o.setAttribute(t, !0 === e ? '' : e); + })); + }); + }, + effect: function (t) { + var e = t.state, + n = { + popper: { + position: e.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { position: 'absolute' }, + reference: {} + }; + return ( + Object.assign(e.elements.popper.style, n.popper), + (e.styles = n), + e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow), + function () { + Object.keys(e.elements).forEach(function (t) { + var i = e.elements[t], + o = e.attributes[t] || {}, + r = Object.keys( + e.styles.hasOwnProperty(t) ? e.styles[t] : n[t] + ).reduce(function (t, e) { + return (t[e] = ''), t; + }, {}); + T(i) && + x(i) && + (Object.assign(i.style, r), + Object.keys(o).forEach(function (t) { + i.removeAttribute(t); + })); + }); + } + ); + }, + requires: ['computeStyles'] + }; + function j(t) { + return t.split('-')[0]; + } + var k = Math.max, + D = Math.min, + P = Math.round; + function M() { + var t = navigator.userAgentData; + return null != t && t.brands && Array.isArray(t.brands) + ? t.brands + .map(function (t) { + return t.brand + '/' + t.version; + }) + .join(' ') + : navigator.userAgent; + } + function N() { + return !/^((?!chrome|android).)*safari/i.test(M()); + } + function B(t, e, n) { + void 0 === e && (e = !1), void 0 === n && (n = !1); + var i = t.getBoundingClientRect(), + o = 1, + r = 1; + e && + T(t) && + ((o = (t.offsetWidth > 0 && P(i.width) / t.offsetWidth) || 1), + (r = (t.offsetHeight > 0 && P(i.height) / t.offsetHeight) || 1)); + var s = (C(t) ? O(t) : window).visualViewport, + a = !N() && n, + l = (i.left + (a && s ? s.offsetLeft : 0)) / o, + c = (i.top + (a && s ? s.offsetTop : 0)) / r, + u = i.width / o, + f = i.height / r; + return { + width: u, + height: f, + top: c, + right: l + u, + bottom: c + f, + left: l, + x: l, + y: c + }; + } + function I(t) { + var e = B(t), + n = t.offsetWidth, + i = t.offsetHeight; + return ( + Math.abs(e.width - n) <= 1 && (n = e.width), + Math.abs(e.height - i) <= 1 && (i = e.height), + { x: t.offsetLeft, y: t.offsetTop, width: n, height: i } + ); + } + function F(t, e) { + var n = e.getRootNode && e.getRootNode(); + if (t.contains(e)) return !0; + if (n && L(n)) { + var i = e; + do { + if (i && t.isSameNode(i)) return !0; + i = i.parentNode || i.host; + } while (i); + } + return !1; + } + function $(t) { + return O(t).getComputedStyle(t); + } + function H(t) { + return ['table', 'td', 'th'].indexOf(x(t)) >= 0; + } + function q(t) { + return ((C(t) ? t.ownerDocument : t.document) || window.document) + .documentElement; + } + function z(t) { + return 'html' === x(t) + ? t + : t.assignedSlot || t.parentNode || (L(t) ? t.host : null) || q(t); + } + function W(t) { + return T(t) && 'fixed' !== $(t).position ? t.offsetParent : null; + } + function R(t) { + for (var e = O(t), n = W(t); n && H(n) && 'static' === $(n).position; ) + n = W(n); + return n && + ('html' === x(n) || ('body' === x(n) && 'static' === $(n).position)) + ? e + : n || + (function (t) { + var e = /firefox/i.test(M()); + if (/Trident/i.test(M()) && T(t) && 'fixed' === $(t).position) + return null; + var n = z(t); + for ( + L(n) && (n = n.host); + T(n) && ['html', 'body'].indexOf(x(n)) < 0; + + ) { + var i = $(n); + if ( + 'none' !== i.transform || + 'none' !== i.perspective || + 'paint' === i.contain || + -1 !== ['transform', 'perspective'].indexOf(i.willChange) || + (e && 'filter' === i.willChange) || + (e && i.filter && 'none' !== i.filter) + ) + return n; + n = n.parentNode; + } + return null; + })(t) || + e; + } + function V(t) { + return ['top', 'bottom'].indexOf(t) >= 0 ? 'x' : 'y'; + } + function Y(t, e, n) { + return k(t, D(e, n)); + } + function U(t) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t); + } + function K(t, e) { + return e.reduce(function (e, n) { + return (e[n] = t), e; + }, {}); + } + var Q = { + name: 'arrow', + enabled: !0, + phase: 'main', + fn: function (o) { + var s, + a = o.state, + l = o.name, + c = o.options, + u = a.elements.arrow, + f = a.modifiersData.popperOffsets, + d = j(a.placement), + p = V(d), + h = [i, n].indexOf(d) >= 0 ? 'height' : 'width'; + if (u && f) { + var m = (function (t, e) { + return U( + 'number' != + typeof (t = + 'function' == typeof t + ? t(Object.assign({}, e.rects, { placement: e.placement })) + : t) + ? t + : K(t, r) + ); + })(c.padding, a), + g = I(u), + b = 'y' === p ? t : i, + v = 'y' === p ? e : n, + y = + a.rects.reference[h] + + a.rects.reference[p] - + f[p] - + a.rects.popper[h], + _ = f[p] - a.rects.reference[p], + w = R(u), + E = w ? ('y' === p ? w.clientHeight || 0 : w.clientWidth || 0) : 0, + A = y / 2 - _ / 2, + x = m[b], + O = E - g[h] - m[v], + C = E / 2 - g[h] / 2 + A, + T = Y(x, C, O), + L = p; + a.modifiersData[l] = (((s = {})[L] = T), (s.centerOffset = T - C), s); + } + }, + effect: function (t) { + var e = t.state, + n = t.options.element, + i = void 0 === n ? '[data-popper-arrow]' : n; + null != i && + ('string' != typeof i || (i = e.elements.popper.querySelector(i))) && + F(e.elements.popper, i) && + (e.elements.arrow = i); + }, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + function G(t) { + return t.split('-')[1]; + } + var X = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; + function J(o) { + var r, + s = o.popper, + l = o.popperRect, + c = o.placement, + u = o.variation, + f = o.offsets, + d = o.position, + p = o.gpuAcceleration, + h = o.adaptive, + m = o.roundOffsets, + g = o.isFixed, + b = f.x, + v = void 0 === b ? 0 : b, + y = f.y, + _ = void 0 === y ? 0 : y, + w = 'function' == typeof m ? m({ x: v, y: _ }) : { x: v, y: _ }; + (v = w.x), (_ = w.y); + var E = f.hasOwnProperty('x'), + A = f.hasOwnProperty('y'), + x = i, + C = t, + T = window; + if (h) { + var L = R(s), + S = 'clientHeight', + j = 'clientWidth'; + if ( + (L === O(s) && + 'static' !== $((L = q(s))).position && + 'absolute' === d && + ((S = 'scrollHeight'), (j = 'scrollWidth')), + c === t || ((c === i || c === n) && u === a)) + ) + (C = e), + (_ -= + (g && L === T && T.visualViewport + ? T.visualViewport.height + : L[S]) - l.height), + (_ *= p ? 1 : -1); + if (c === i || ((c === t || c === e) && u === a)) + (x = n), + (v -= + (g && L === T && T.visualViewport ? T.visualViewport.width : L[j]) - + l.width), + (v *= p ? 1 : -1); + } + var k, + D = Object.assign({ position: d }, h && X), + M = + !0 === m + ? (function (t, e) { + var n = t.x, + i = t.y, + o = e.devicePixelRatio || 1; + return { x: P(n * o) / o || 0, y: P(i * o) / o || 0 }; + })({ x: v, y: _ }, O(s)) + : { x: v, y: _ }; + return ( + (v = M.x), + (_ = M.y), + p + ? Object.assign( + {}, + D, + (((k = {})[C] = A ? '0' : ''), + (k[x] = E ? '0' : ''), + (k.transform = + (T.devicePixelRatio || 1) <= 1 + ? 'translate(' + v + 'px, ' + _ + 'px)' + : 'translate3d(' + v + 'px, ' + _ + 'px, 0)'), + k) + ) + : Object.assign( + {}, + D, + (((r = {})[C] = A ? _ + 'px' : ''), + (r[x] = E ? v + 'px' : ''), + (r.transform = ''), + r) + ) + ); + } + var Z = { + name: 'computeStyles', + enabled: !0, + phase: 'beforeWrite', + fn: function (t) { + var e = t.state, + n = t.options, + i = n.gpuAcceleration, + o = void 0 === i || i, + r = n.adaptive, + s = void 0 === r || r, + a = n.roundOffsets, + l = void 0 === a || a, + c = { + placement: j(e.placement), + variation: G(e.placement), + popper: e.elements.popper, + popperRect: e.rects.popper, + gpuAcceleration: o, + isFixed: 'fixed' === e.options.strategy + }; + null != e.modifiersData.popperOffsets && + (e.styles.popper = Object.assign( + {}, + e.styles.popper, + J( + Object.assign({}, c, { + offsets: e.modifiersData.popperOffsets, + position: e.options.strategy, + adaptive: s, + roundOffsets: l + }) + ) + )), + null != e.modifiersData.arrow && + (e.styles.arrow = Object.assign( + {}, + e.styles.arrow, + J( + Object.assign({}, c, { + offsets: e.modifiersData.arrow, + position: 'absolute', + adaptive: !1, + roundOffsets: l + }) + ) + )), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + 'data-popper-placement': e.placement + })); + }, + data: {} + }, + tt = { passive: !0 }; + var et = { + name: 'eventListeners', + enabled: !0, + phase: 'write', + fn: function () {}, + effect: function (t) { + var e = t.state, + n = t.instance, + i = t.options, + o = i.scroll, + r = void 0 === o || o, + s = i.resize, + a = void 0 === s || s, + l = O(e.elements.popper), + c = [].concat(e.scrollParents.reference, e.scrollParents.popper); + return ( + r && + c.forEach(function (t) { + t.addEventListener('scroll', n.update, tt); + }), + a && l.addEventListener('resize', n.update, tt), + function () { + r && + c.forEach(function (t) { + t.removeEventListener('scroll', n.update, tt); + }), + a && l.removeEventListener('resize', n.update, tt); + } + ); + }, + data: {} + }, + nt = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + function it(t) { + return t.replace(/left|right|bottom|top/g, function (t) { + return nt[t]; + }); + } + var ot = { start: 'end', end: 'start' }; + function rt(t) { + return t.replace(/start|end/g, function (t) { + return ot[t]; + }); + } + function st(t) { + var e = O(t); + return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset }; + } + function at(t) { + return B(q(t)).left + st(t).scrollLeft; + } + function lt(t) { + var e = $(t), + n = e.overflow, + i = e.overflowX, + o = e.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + i); + } + function ct(t) { + return ['html', 'body', '#document'].indexOf(x(t)) >= 0 + ? t.ownerDocument.body + : T(t) && lt(t) + ? t + : ct(z(t)); + } + function ut(t, e) { + var n; + void 0 === e && (e = []); + var i = ct(t), + o = i === (null == (n = t.ownerDocument) ? void 0 : n.body), + r = O(i), + s = o ? [r].concat(r.visualViewport || [], lt(i) ? i : []) : i, + a = e.concat(s); + return o ? a : a.concat(ut(z(s))); + } + function ft(t) { + return Object.assign({}, t, { + left: t.x, + top: t.y, + right: t.x + t.width, + bottom: t.y + t.height + }); + } + function dt(t, e, n) { + return e === c + ? ft( + (function (t, e) { + var n = O(t), + i = q(t), + o = n.visualViewport, + r = i.clientWidth, + s = i.clientHeight, + a = 0, + l = 0; + if (o) { + (r = o.width), (s = o.height); + var c = N(); + (c || (!c && 'fixed' === e)) && + ((a = o.offsetLeft), (l = o.offsetTop)); + } + return { width: r, height: s, x: a + at(t), y: l }; + })(t, n) + ) + : C(e) + ? (function (t, e) { + var n = B(t, !1, 'fixed' === e); + return ( + (n.top = n.top + t.clientTop), + (n.left = n.left + t.clientLeft), + (n.bottom = n.top + t.clientHeight), + (n.right = n.left + t.clientWidth), + (n.width = t.clientWidth), + (n.height = t.clientHeight), + (n.x = n.left), + (n.y = n.top), + n + ); + })(e, n) + : ft( + (function (t) { + var e, + n = q(t), + i = st(t), + o = null == (e = t.ownerDocument) ? void 0 : e.body, + r = k( + n.scrollWidth, + n.clientWidth, + o ? o.scrollWidth : 0, + o ? o.clientWidth : 0 + ), + s = k( + n.scrollHeight, + n.clientHeight, + o ? o.scrollHeight : 0, + o ? o.clientHeight : 0 + ), + a = -i.scrollLeft + at(t), + l = -i.scrollTop; + return ( + 'rtl' === $(o || n).direction && + (a += k(n.clientWidth, o ? o.clientWidth : 0) - r), + { width: r, height: s, x: a, y: l } + ); + })(q(t)) + ); + } + function pt(t, e, n, i) { + var o = + 'clippingParents' === e + ? (function (t) { + var e = ut(z(t)), + n = + ['absolute', 'fixed'].indexOf($(t).position) >= 0 && T(t) + ? R(t) + : t; + return C(n) + ? e.filter(function (t) { + return C(t) && F(t, n) && 'body' !== x(t); + }) + : []; + })(t) + : [].concat(e), + r = [].concat(o, [n]), + s = r[0], + a = r.reduce(function (e, n) { + var o = dt(t, n, i); + return ( + (e.top = k(o.top, e.top)), + (e.right = D(o.right, e.right)), + (e.bottom = D(o.bottom, e.bottom)), + (e.left = k(o.left, e.left)), + e + ); + }, dt(t, s, i)); + return ( + (a.width = a.right - a.left), + (a.height = a.bottom - a.top), + (a.x = a.left), + (a.y = a.top), + a + ); + } + function ht(o) { + var r, + l = o.reference, + c = o.element, + u = o.placement, + f = u ? j(u) : null, + d = u ? G(u) : null, + p = l.x + l.width / 2 - c.width / 2, + h = l.y + l.height / 2 - c.height / 2; + switch (f) { + case t: + r = { x: p, y: l.y - c.height }; + break; + case e: + r = { x: p, y: l.y + l.height }; + break; + case n: + r = { x: l.x + l.width, y: h }; + break; + case i: + r = { x: l.x - c.width, y: h }; + break; + default: + r = { x: l.x, y: l.y }; + } + var m = f ? V(f) : null; + if (null != m) { + var g = 'y' === m ? 'height' : 'width'; + switch (d) { + case s: + r[m] = r[m] - (l[g] / 2 - c[g] / 2); + break; + case a: + r[m] = r[m] + (l[g] / 2 - c[g] / 2); + } + } + return r; + } + function mt(i, o) { + void 0 === o && (o = {}); + var s = o, + a = s.placement, + d = void 0 === a ? i.placement : a, + p = s.strategy, + h = void 0 === p ? i.strategy : p, + m = s.boundary, + g = void 0 === m ? l : m, + b = s.rootBoundary, + v = void 0 === b ? c : b, + y = s.elementContext, + _ = void 0 === y ? u : y, + w = s.altBoundary, + E = void 0 !== w && w, + A = s.padding, + x = void 0 === A ? 0 : A, + O = U('number' != typeof x ? x : K(x, r)), + T = _ === u ? f : u, + L = i.rects.popper, + S = i.elements[E ? T : _], + j = pt(C(S) ? S : S.contextElement || q(i.elements.popper), g, v, h), + k = B(i.elements.reference), + D = ht({ reference: k, element: L, strategy: 'absolute', placement: d }), + P = ft(Object.assign({}, L, D)), + M = _ === u ? P : k, + N = { + top: j.top - M.top + O.top, + bottom: M.bottom - j.bottom + O.bottom, + left: j.left - M.left + O.left, + right: M.right - j.right + O.right + }, + I = i.modifiersData.offset; + if (_ === u && I) { + var F = I[d]; + Object.keys(N).forEach(function (i) { + var o = [n, e].indexOf(i) >= 0 ? 1 : -1, + r = [t, e].indexOf(i) >= 0 ? 'y' : 'x'; + N[i] += F[r] * o; + }); + } + return N; + } + function gt(t, e) { + void 0 === e && (e = {}); + var n = e, + i = n.placement, + o = n.boundary, + s = n.rootBoundary, + a = n.padding, + l = n.flipVariations, + c = n.allowedAutoPlacements, + u = void 0 === c ? p : c, + f = G(i), + h = f + ? l + ? d + : d.filter(function (t) { + return G(t) === f; + }) + : r, + m = h.filter(function (t) { + return u.indexOf(t) >= 0; + }); + 0 === m.length && (m = h); + var g = m.reduce(function (e, n) { + return ( + (e[n] = mt(t, { + placement: n, + boundary: o, + rootBoundary: s, + padding: a + })[j(n)]), + e + ); + }, {}); + return Object.keys(g).sort(function (t, e) { + return g[t] - g[e]; + }); + } + var bt = { + name: 'flip', + enabled: !0, + phase: 'main', + fn: function (r) { + var a = r.state, + l = r.options, + c = r.name; + if (!a.modifiersData[c]._skip) { + for ( + var u = l.mainAxis, + f = void 0 === u || u, + d = l.altAxis, + p = void 0 === d || d, + h = l.fallbackPlacements, + m = l.padding, + g = l.boundary, + b = l.rootBoundary, + v = l.altBoundary, + y = l.flipVariations, + _ = void 0 === y || y, + w = l.allowedAutoPlacements, + E = a.options.placement, + A = j(E), + x = + h || + (A === E || !_ + ? [it(E)] + : (function (t) { + if (j(t) === o) return []; + var e = it(t); + return [rt(t), e, rt(e)]; + })(E)), + O = [E].concat(x).reduce(function (t, e) { + return t.concat( + j(e) === o + ? gt(a, { + placement: e, + boundary: g, + rootBoundary: b, + padding: m, + flipVariations: _, + allowedAutoPlacements: w + }) + : e + ); + }, []), + C = a.rects.reference, + T = a.rects.popper, + L = new Map(), + S = !0, + k = O[0], + D = 0; + D < O.length; + D++ + ) { + var P = O[D], + M = j(P), + N = G(P) === s, + B = [t, e].indexOf(M) >= 0, + I = B ? 'width' : 'height', + F = mt(a, { + placement: P, + boundary: g, + rootBoundary: b, + altBoundary: v, + padding: m + }), + $ = B ? (N ? n : i) : N ? e : t; + C[I] > T[I] && ($ = it($)); + var H = it($), + q = []; + if ( + (f && q.push(F[M] <= 0), + p && q.push(F[$] <= 0, F[H] <= 0), + q.every(function (t) { + return t; + })) + ) { + (k = P), (S = !1); + break; + } + L.set(P, q); + } + if (S) + for ( + var z = function (t) { + var e = O.find(function (e) { + var n = L.get(e); + if (n) + return n.slice(0, t).every(function (t) { + return t; + }); + }); + if (e) return (k = e), 'break'; + }, + W = _ ? 3 : 1; + W > 0; + W-- + ) { + if ('break' === z(W)) break; + } + a.placement !== k && + ((a.modifiersData[c]._skip = !0), (a.placement = k), (a.reset = !0)); + } + }, + requiresIfExists: ['offset'], + data: { _skip: !1 } + }; + function vt(t, e, n) { + return ( + void 0 === n && (n = { x: 0, y: 0 }), + { + top: t.top - e.height - n.y, + right: t.right - e.width + n.x, + bottom: t.bottom - e.height + n.y, + left: t.left - e.width - n.x + } + ); + } + function yt(o) { + return [t, n, e, i].some(function (t) { + return o[t] >= 0; + }); + } + var _t = { + name: 'hide', + enabled: !0, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: function (t) { + var e = t.state, + n = t.name, + i = e.rects.reference, + o = e.rects.popper, + r = e.modifiersData.preventOverflow, + s = mt(e, { elementContext: 'reference' }), + a = mt(e, { altBoundary: !0 }), + l = vt(s, i), + c = vt(a, o, r), + u = yt(l), + f = yt(c); + (e.modifiersData[n] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: u, + hasPopperEscaped: f + }), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + 'data-popper-reference-hidden': u, + 'data-popper-escaped': f + })); + } + }; + var wt = { + name: 'offset', + enabled: !0, + phase: 'main', + requires: ['popperOffsets'], + fn: function (e) { + var o = e.state, + r = e.options, + s = e.name, + a = r.offset, + l = void 0 === a ? [0, 0] : a, + c = p.reduce(function (e, r) { + return ( + (e[r] = (function (e, o, r) { + var s = j(e), + a = [i, t].indexOf(s) >= 0 ? -1 : 1, + l = + 'function' == typeof r + ? r(Object.assign({}, o, { placement: e })) + : r, + c = l[0], + u = l[1]; + return ( + (c = c || 0), + (u = (u || 0) * a), + [i, n].indexOf(s) >= 0 ? { x: u, y: c } : { x: c, y: u } + ); + })(r, o.rects, l)), + e + ); + }, {}), + u = c[o.placement], + f = u.x, + d = u.y; + null != o.modifiersData.popperOffsets && + ((o.modifiersData.popperOffsets.x += f), + (o.modifiersData.popperOffsets.y += d)), + (o.modifiersData[s] = c); + } + }; + var Et = { + name: 'popperOffsets', + enabled: !0, + phase: 'read', + fn: function (t) { + var e = t.state, + n = t.name; + e.modifiersData[n] = ht({ + reference: e.rects.reference, + element: e.rects.popper, + strategy: 'absolute', + placement: e.placement + }); + }, + data: {} + }; + var At = { + name: 'preventOverflow', + enabled: !0, + phase: 'main', + fn: function (o) { + var r = o.state, + a = o.options, + l = o.name, + c = a.mainAxis, + u = void 0 === c || c, + f = a.altAxis, + d = void 0 !== f && f, + p = a.boundary, + h = a.rootBoundary, + m = a.altBoundary, + g = a.padding, + b = a.tether, + v = void 0 === b || b, + y = a.tetherOffset, + _ = void 0 === y ? 0 : y, + w = mt(r, { boundary: p, rootBoundary: h, padding: g, altBoundary: m }), + E = j(r.placement), + A = G(r.placement), + x = !A, + O = V(E), + C = 'x' === O ? 'y' : 'x', + T = r.modifiersData.popperOffsets, + L = r.rects.reference, + S = r.rects.popper, + P = + 'function' == typeof _ + ? _(Object.assign({}, r.rects, { placement: r.placement })) + : _, + M = + 'number' == typeof P + ? { mainAxis: P, altAxis: P } + : Object.assign({ mainAxis: 0, altAxis: 0 }, P), + N = r.modifiersData.offset ? r.modifiersData.offset[r.placement] : null, + B = { x: 0, y: 0 }; + if (T) { + if (u) { + var F, + $ = 'y' === O ? t : i, + H = 'y' === O ? e : n, + q = 'y' === O ? 'height' : 'width', + z = T[O], + W = z + w[$], + U = z - w[H], + K = v ? -S[q] / 2 : 0, + Q = A === s ? L[q] : S[q], + X = A === s ? -S[q] : -L[q], + J = r.elements.arrow, + Z = v && J ? I(J) : { width: 0, height: 0 }, + tt = r.modifiersData['arrow#persistent'] + ? r.modifiersData['arrow#persistent'].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + et = tt[$], + nt = tt[H], + it = Y(0, L[q], Z[q]), + ot = x + ? L[q] / 2 - K - it - et - M.mainAxis + : Q - it - et - M.mainAxis, + rt = x + ? -L[q] / 2 + K + it + nt + M.mainAxis + : X + it + nt + M.mainAxis, + st = r.elements.arrow && R(r.elements.arrow), + at = st ? ('y' === O ? st.clientTop || 0 : st.clientLeft || 0) : 0, + lt = null != (F = null == N ? void 0 : N[O]) ? F : 0, + ct = z + rt - lt, + ut = Y(v ? D(W, z + ot - lt - at) : W, z, v ? k(U, ct) : U); + (T[O] = ut), (B[O] = ut - z); + } + if (d) { + var ft, + dt = 'x' === O ? t : i, + pt = 'x' === O ? e : n, + ht = T[C], + gt = 'y' === C ? 'height' : 'width', + bt = ht + w[dt], + vt = ht - w[pt], + yt = -1 !== [t, i].indexOf(E), + _t = null != (ft = null == N ? void 0 : N[C]) ? ft : 0, + wt = yt ? bt : ht - L[gt] - S[gt] - _t + M.altAxis, + Et = yt ? ht + L[gt] + S[gt] - _t - M.altAxis : vt, + At = + v && yt + ? (function (t, e, n) { + var i = Y(t, e, n); + return i > n ? n : i; + })(wt, ht, Et) + : Y(v ? wt : bt, ht, v ? Et : vt); + (T[C] = At), (B[C] = At - ht); + } + r.modifiersData[l] = B; + } + }, + requiresIfExists: ['offset'] + }; + function xt(t, e, n) { + void 0 === n && (n = !1); + var i, + o, + r = T(e), + s = + T(e) && + (function (t) { + var e = t.getBoundingClientRect(), + n = P(e.width) / t.offsetWidth || 1, + i = P(e.height) / t.offsetHeight || 1; + return 1 !== n || 1 !== i; + })(e), + a = q(e), + l = B(t, s, n), + c = { scrollLeft: 0, scrollTop: 0 }, + u = { x: 0, y: 0 }; + return ( + (r || (!r && !n)) && + (('body' !== x(e) || lt(a)) && + (c = + (i = e) !== O(i) && T(i) + ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop } + : st(i)), + T(e) + ? (((u = B(e, !0)).x += e.clientLeft), (u.y += e.clientTop)) + : a && (u.x = at(a))), + { + x: l.left + c.scrollLeft - u.x, + y: l.top + c.scrollTop - u.y, + width: l.width, + height: l.height + } + ); + } + function Ot(t) { + var e = new Map(), + n = new Set(), + i = []; + function o(t) { + n.add(t.name), + [] + .concat(t.requires || [], t.requiresIfExists || []) + .forEach(function (t) { + if (!n.has(t)) { + var i = e.get(t); + i && o(i); + } + }), + i.push(t); + } + return ( + t.forEach(function (t) { + e.set(t.name, t); + }), + t.forEach(function (t) { + n.has(t.name) || o(t); + }), + i + ); + } + var Ct = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; + function Tt() { + for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) + e[n] = arguments[n]; + return !e.some(function (t) { + return !(t && 'function' == typeof t.getBoundingClientRect); + }); + } + function Lt(t) { + void 0 === t && (t = {}); + var e = t, + n = e.defaultModifiers, + i = void 0 === n ? [] : n, + o = e.defaultOptions, + r = void 0 === o ? Ct : o; + return function (t, e, n) { + void 0 === n && (n = r); + var o, + s, + a = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, Ct, r), + modifiersData: {}, + elements: { reference: t, popper: e }, + attributes: {}, + styles: {} + }, + l = [], + c = !1, + u = { + state: a, + setOptions: function (n) { + var o = 'function' == typeof n ? n(a.options) : n; + f(), + (a.options = Object.assign({}, r, a.options, o)), + (a.scrollParents = { + reference: C(t) + ? ut(t) + : t.contextElement + ? ut(t.contextElement) + : [], + popper: ut(e) + }); + var s, + c, + d = (function (t) { + var e = Ot(t); + return A.reduce(function (t, n) { + return t.concat( + e.filter(function (t) { + return t.phase === n; + }) + ); + }, []); + })( + ((s = [].concat(i, a.options.modifiers)), + (c = s.reduce(function (t, e) { + var n = t[e.name]; + return ( + (t[e.name] = n + ? Object.assign({}, n, e, { + options: Object.assign({}, n.options, e.options), + data: Object.assign({}, n.data, e.data) + }) + : e), + t + ); + }, {})), + Object.keys(c).map(function (t) { + return c[t]; + })) + ); + return ( + (a.orderedModifiers = d.filter(function (t) { + return t.enabled; + })), + a.orderedModifiers.forEach(function (t) { + var e = t.name, + n = t.options, + i = void 0 === n ? {} : n, + o = t.effect; + if ('function' == typeof o) { + var r = o({ state: a, name: e, instance: u, options: i }), + s = function () {}; + l.push(r || s); + } + }), + u.update() + ); + }, + forceUpdate: function () { + if (!c) { + var t = a.elements, + e = t.reference, + n = t.popper; + if (Tt(e, n)) { + (a.rects = { + reference: xt(e, R(n), 'fixed' === a.options.strategy), + popper: I(n) + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (t) { + return (a.modifiersData[t.name] = Object.assign( + {}, + t.data + )); + }); + for (var i = 0; i < a.orderedModifiers.length; i++) + if (!0 !== a.reset) { + var o = a.orderedModifiers[i], + r = o.fn, + s = o.options, + l = void 0 === s ? {} : s, + f = o.name; + 'function' == typeof r && + (a = + r({ state: a, options: l, name: f, instance: u }) || a); + } else (a.reset = !1), (i = -1); + } + } + }, + update: + ((o = function () { + return new Promise(function (t) { + u.forceUpdate(), t(a); + }); + }), + function () { + return ( + s || + (s = new Promise(function (t) { + Promise.resolve().then(function () { + (s = void 0), t(o()); + }); + })), + s + ); + }), + destroy: function () { + f(), (c = !0); + } + }; + if (!Tt(t, e)) return u; + function f() { + l.forEach(function (t) { + return t(); + }), + (l = []); + } + return ( + u.setOptions(n).then(function (t) { + !c && n.onFirstUpdate && n.onFirstUpdate(t); + }), + u + ); + }; + } + var St = Lt(), + jt = Lt({ defaultModifiers: [et, Et, Z, S] }), + kt = Lt({ defaultModifiers: [et, Et, Z, S, wt, bt, At, Q, _t] }), + Dt = Object.freeze({ + __proto__: null, + afterMain: y, + afterRead: g, + afterWrite: E, + applyStyles: S, + arrow: Q, + auto: o, + basePlacements: r, + beforeMain: b, + beforeRead: h, + beforeWrite: _, + bottom: e, + clippingParents: l, + computeStyles: Z, + createPopper: kt, + createPopperBase: St, + createPopperLite: jt, + detectOverflow: mt, + end: a, + eventListeners: et, + flip: bt, + hide: _t, + left: i, + main: v, + modifierPhases: A, + offset: wt, + placements: p, + popper: u, + popperGenerator: Lt, + popperOffsets: Et, + preventOverflow: At, + read: m, + reference: f, + right: n, + start: s, + top: t, + variationPlacements: d, + viewport: c, + write: w + }); + const Pt = new Map(); + var Mt = { + set(t, e, n) { + Pt.has(t) || Pt.set(t, new Map()); + const i = Pt.get(t); + i.has(e) || 0 === i.size + ? i.set(e, n) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ + Array.from(i.keys())[0] + }.` + ); + }, + get: (t, e) => (Pt.has(t) && Pt.get(t).get(e)) || null, + remove(t, e) { + if (!Pt.has(t)) return; + const n = Pt.get(t); + n.delete(e), 0 === n.size && Pt.delete(t); + } + }; + const Nt = 'transitionend', + Bt = (t) => ( + t && + window.CSS && + window.CSS.escape && + (t = t.replace(/#([^\s"#']+)/g, (t, e) => `#${CSS.escape(e)}`)), + t + ), + It = (t) => + !(!t || 'object' != typeof t) && + (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType), + Ft = (t) => + It(t) + ? t.jquery + ? t[0] + : t + : 'string' == typeof t && t.length > 0 + ? document.querySelector(Bt(t)) + : null, + $t = (t) => { + if (!document.documentElement.attachShadow) return null; + if ('function' == typeof t.getRootNode) { + const e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + return t instanceof ShadowRoot + ? t + : t.parentNode + ? $t(t.parentNode) + : null; + }, + Ht = () => {}, + qt = () => + window.jQuery && !document.body.hasAttribute('data-bs-no-jquery') + ? window.jQuery + : null, + zt = [], + Wt = () => 'rtl' === document.documentElement.dir, + Rt = (t) => { + var e; + (e = () => { + const e = qt(); + if (e) { + const n = t.NAME, + i = e.fn[n]; + (e.fn[n] = t.jQueryInterface), + (e.fn[n].Constructor = t), + (e.fn[n].noConflict = () => ((e.fn[n] = i), t.jQueryInterface)); + } + }), + 'loading' === document.readyState + ? (zt.length || + document.addEventListener('DOMContentLoaded', () => { + for (const t of zt) t(); + }), + zt.push(e)) + : e(); + }, + Vt = function (t) { + let e = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t; + return 'function' == typeof t + ? t( + ...(arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : []) + ) + : e; + }, + Yt = function (t, e) { + if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2])) + return void Vt(t); + const n = + ((t) => { + if (!t) return 0; + let { transitionDuration: e, transitionDelay: n } = + window.getComputedStyle(t); + const i = Number.parseFloat(e), + o = Number.parseFloat(n); + return i || o + ? ((e = e.split(',')[0]), + (n = n.split(',')[0]), + 1e3 * (Number.parseFloat(e) + Number.parseFloat(n))) + : 0; + })(e) + 5; + let i = !1; + const o = (n) => { + let { target: r } = n; + r === e && ((i = !0), e.removeEventListener(Nt, o), Vt(t)); + }; + e.addEventListener(Nt, o), + setTimeout(() => { + i || e.dispatchEvent(new Event(Nt)); + }, n); + }, + Ut = /[^.]*(?=\..*)\.|.*/, + Kt = /\..*/, + Qt = /::\d+$/, + Gt = {}; + let Xt = 1; + const Jt = { mouseenter: 'mouseover', mouseleave: 'mouseout' }, + Zt = new Set([ + 'click', + 'dblclick', + 'mouseup', + 'mousedown', + 'contextmenu', + 'mousewheel', + 'DOMMouseScroll', + 'mouseover', + 'mouseout', + 'mousemove', + 'selectstart', + 'selectend', + 'keydown', + 'keypress', + 'keyup', + 'orientationchange', + 'touchstart', + 'touchmove', + 'touchend', + 'touchcancel', + 'pointerdown', + 'pointermove', + 'pointerup', + 'pointerleave', + 'pointercancel', + 'gesturestart', + 'gesturechange', + 'gestureend', + 'focus', + 'blur', + 'change', + 'reset', + 'select', + 'submit', + 'focusin', + 'focusout', + 'load', + 'unload', + 'beforeunload', + 'resize', + 'move', + 'DOMContentLoaded', + 'readystatechange', + 'error', + 'abort', + 'scroll' + ]); + function te(t, e) { + return (e && `${e}::${Xt++}`) || t.uidEvent || Xt++; + } + function ee(t) { + const e = te(t); + return (t.uidEvent = e), (Gt[e] = Gt[e] || {}), Gt[e]; + } + function ne(t, e) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; + return Object.values(t).find( + (t) => t.callable === e && t.delegationSelector === n + ); + } + function ie(t, e, n) { + const i = 'string' == typeof e, + o = i ? n : e || n; + let r = ae(t); + return Zt.has(r) || (r = t), [i, o, r]; + } + function oe(t, e, n, i, o) { + if ('string' != typeof e || !t) return; + let [r, s, a] = ie(e, n, i); + if (e in Jt) { + const t = (t) => + function (e) { + if ( + !e.relatedTarget || + (e.relatedTarget !== e.delegateTarget && + !e.delegateTarget.contains(e.relatedTarget)) + ) + return t.call(this, e); + }; + s = t(s); + } + const l = ee(t), + c = l[a] || (l[a] = {}), + u = ne(c, s, r ? n : null); + if (u) return void (u.oneOff = u.oneOff && o); + const f = te(s, e.replace(Ut, '')), + d = r + ? (function (t, e, n) { + return function i(o) { + const r = t.querySelectorAll(e); + for (let { target: s } = o; s && s !== this; s = s.parentNode) + for (const a of r) + if (a === s) + return ( + ce(o, { delegateTarget: s }), + i.oneOff && le.off(t, o.type, e, n), + n.apply(s, [o]) + ); + }; + })(t, n, s) + : (function (t, e) { + return function n(i) { + return ( + ce(i, { delegateTarget: t }), + n.oneOff && le.off(t, i.type, e), + e.apply(t, [i]) + ); + }; + })(t, s); + (d.delegationSelector = r ? n : null), + (d.callable = s), + (d.oneOff = o), + (d.uidEvent = f), + (c[f] = d), + t.addEventListener(a, d, r); + } + function re(t, e, n, i, o) { + const r = ne(e[n], i, o); + r && (t.removeEventListener(n, r, Boolean(o)), delete e[n][r.uidEvent]); + } + function se(t, e, n, i) { + const o = e[n] || {}; + for (const [r, s] of Object.entries(o)) + r.includes(i) && re(t, e, n, s.callable, s.delegationSelector); + } + function ae(t) { + return (t = t.replace(Kt, '')), Jt[t] || t; + } + const le = { + on(t, e, n, i) { + oe(t, e, n, i, !1); + }, + one(t, e, n, i) { + oe(t, e, n, i, !0); + }, + off(t, e, n, i) { + if ('string' != typeof e || !t) return; + const [o, r, s] = ie(e, n, i), + a = s !== e, + l = ee(t), + c = l[s] || {}, + u = e.startsWith('.'); + if (void 0 === r) { + if (u) for (const n of Object.keys(l)) se(t, l, n, e.slice(1)); + for (const [n, i] of Object.entries(c)) { + const o = n.replace(Qt, ''); + (a && !e.includes(o)) || + re(t, l, s, i.callable, i.delegationSelector); + } + } else { + if (!Object.keys(c).length) return; + re(t, l, s, r, o ? n : null); + } + }, + trigger(t, e, n) { + if ('string' != typeof e || !t) return null; + const i = qt(); + let o = null, + r = !0, + s = !0, + a = !1; + e !== ae(e) && + i && + ((o = i.Event(e, n)), + i(t).trigger(o), + (r = !o.isPropagationStopped()), + (s = !o.isImmediatePropagationStopped()), + (a = o.isDefaultPrevented())); + const l = ce(new Event(e, { bubbles: r, cancelable: !0 }), n); + return ( + a && l.preventDefault(), + s && t.dispatchEvent(l), + l.defaultPrevented && o && o.preventDefault(), + l + ); + } + }; + function ce(t) { + let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + for (const [n, i] of Object.entries(e)) + try { + t[n] = i; + } catch { + Object.defineProperty(t, n, { configurable: !0, get: () => i }); + } + return t; + } + function ue(t) { + if ('true' === t) return !0; + if ('false' === t) return !1; + if (t === Number(t).toString()) return Number(t); + if ('' === t || 'null' === t) return null; + if ('string' != typeof t) return t; + try { + return JSON.parse(decodeURIComponent(t)); + } catch { + return t; + } + } + function fe(t) { + return t.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`); + } + const de = { + setDataAttribute(t, e, n) { + t.setAttribute(`data-bs-${fe(e)}`, n); + }, + removeDataAttribute(t, e) { + t.removeAttribute(`data-bs-${fe(e)}`); + }, + getDataAttributes(t) { + if (!t) return {}; + const e = {}, + n = Object.keys(t.dataset).filter( + (t) => t.startsWith('bs') && !t.startsWith('bsConfig') + ); + for (const i of n) { + let n = i.replace(/^bs/, ''); + (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), + (e[n] = ue(t.dataset[i])); + } + return e; + }, + getDataAttribute: (t, e) => ue(t.getAttribute(`data-bs-${fe(e)}`)) + }; + class pe { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!' + ); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return t; + } + _mergeConfigObj(t, e) { + const n = It(e) ? de.getDataAttribute(e, 'config') : {}; + return { + ...this.constructor.Default, + ...('object' == typeof n ? n : {}), + ...(It(e) ? de.getDataAttributes(e) : {}), + ...('object' == typeof t ? t : {}) + }; + } + _typeCheckConfig(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : this.constructor.DefaultType; + for (const [i, o] of Object.entries(e)) { + const e = t[i], + r = It(e) + ? 'element' + : null == (n = e) + ? `${n}` + : Object.prototype.toString + .call(n) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(o).test(r)) + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${o}".` + ); + } + var n; + } + } + class he extends pe { + constructor(t, e) { + super(), + (t = Ft(t)) && + ((this._element = t), + (this._config = this._getConfig(e)), + Mt.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + Mt.remove(this._element, this.constructor.DATA_KEY), + le.off(this._element, this.constructor.EVENT_KEY); + for (const t of Object.getOwnPropertyNames(this)) this[t] = null; + } + _queueCallback(t, e) { + Yt( + t, + e, + !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] + ); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t, this._element)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + static getInstance(t) { + return Mt.get(Ft(t), this.DATA_KEY); + } + static getOrCreateInstance(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + return ( + this.getInstance(t) || new this(t, 'object' == typeof e ? e : null) + ); + } + static get VERSION() { + return '5.3.3'; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(t) { + return `${t}${this.EVENT_KEY}`; + } + } + const me = { + '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }, + ge = new Set([ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ]), + be = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i, + ve = (t, e) => { + const n = t.nodeName.toLowerCase(); + return e.includes(n) + ? !ge.has(n) || Boolean(be.test(t.nodeValue)) + : e.filter((t) => t instanceof RegExp).some((t) => t.test(n)); + }; + const ye = (t) => { + let e = t.getAttribute('data-bs-target'); + if (!e || '#' === e) { + let n = t.getAttribute('href'); + if (!n || (!n.includes('#') && !n.startsWith('.'))) return null; + n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`), + (e = n && '#' !== n ? n.trim() : null); + } + return e + ? e + .split(',') + .map((t) => Bt(t)) + .join(',') + : null; + }, + _e = { + find(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return [].concat(...Element.prototype.querySelectorAll.call(e, t)); + }, + findOne(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return Element.prototype.querySelector.call(e, t); + }, + children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)), + parents(t, e) { + const n = []; + let i = t.parentNode.closest(e); + for (; i; ) n.push(i), (i = i.parentNode.closest(e)); + return n; + }, + prev(t, e) { + let n = t.previousElementSibling; + for (; n; ) { + if (n.matches(e)) return [n]; + n = n.previousElementSibling; + } + return []; + }, + next(t, e) { + let n = t.nextElementSibling; + for (; n; ) { + if (n.matches(e)) return [n]; + n = n.nextElementSibling; + } + return []; + }, + focusableChildren(t) { + const e = [ + 'a', + 'button', + 'input', + 'textarea', + 'select', + 'details', + '[tabindex]', + '[contenteditable="true"]' + ] + .map((t) => `${t}:not([tabindex^="-"])`) + .join(','); + return this.find(e, t).filter( + (t) => + !((t) => + !t || + t.nodeType !== Node.ELEMENT_NODE || + !!t.classList.contains('disabled') || + (void 0 !== t.disabled + ? t.disabled + : t.hasAttribute('disabled') && + 'false' !== t.getAttribute('disabled')))(t) && + ((t) => { + if (!It(t) || 0 === t.getClientRects().length) return !1; + const e = + 'visible' === + getComputedStyle(t).getPropertyValue('visibility'), + n = t.closest('details:not([open])'); + if (!n) return e; + if (n !== t) { + const e = t.closest('summary'); + if (e && e.parentNode !== n) return !1; + if (null === e) return !1; + } + return e; + })(t) + ); + }, + getSelectorFromElement(t) { + const e = ye(t); + return e && _e.findOne(e) ? e : null; + }, + getElementFromSelector(t) { + const e = ye(t); + return e ? _e.findOne(e) : null; + }, + getMultipleElementsFromSelector(t) { + const e = ye(t); + return e ? _e.find(e) : []; + } + }, + we = { + allowList: me, + content: {}, + extraClass: '', + html: !1, + sanitize: !0, + sanitizeFn: null, + template: '
          ' + }, + Ee = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }, + Ae = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + class xe extends pe { + constructor(t) { + super(), (this._config = this._getConfig(t)); + } + static get Default() { + return we; + } + static get DefaultType() { + return Ee; + } + static get NAME() { + return 'TemplateFactory'; + } + getContent() { + return Object.values(this._config.content) + .map((t) => this._resolvePossibleFunction(t)) + .filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(t) { + return ( + this._checkContent(t), + (this._config.content = { ...this._config.content, ...t }), + this + ); + } + toHtml() { + const t = document.createElement('div'); + t.innerHTML = this._maybeSanitize(this._config.template); + for (const [e, n] of Object.entries(this._config.content)) + this._setContent(t, n, e); + const e = t.children[0], + n = this._resolvePossibleFunction(this._config.extraClass); + return n && e.classList.add(...n.split(' ')), e; + } + _typeCheckConfig(t) { + super._typeCheckConfig(t), this._checkContent(t.content); + } + _checkContent(t) { + for (const [e, n] of Object.entries(t)) + super._typeCheckConfig({ selector: e, entry: n }, Ae); + } + _setContent(t, e, n) { + const i = _e.findOne(n, t); + i && + ((e = this._resolvePossibleFunction(e)) + ? It(e) + ? this._putElementInTemplate(Ft(e), i) + : this._config.html + ? (i.innerHTML = this._maybeSanitize(e)) + : (i.textContent = e) + : i.remove()); + } + _maybeSanitize(t) { + return this._config.sanitize + ? (function (t, e, n) { + if (!t.length) return t; + if (n && 'function' == typeof n) return n(t); + const i = new window.DOMParser().parseFromString(t, 'text/html'), + o = [].concat(...i.body.querySelectorAll('*')); + for (const t of o) { + const n = t.nodeName.toLowerCase(); + if (!Object.keys(e).includes(n)) { + t.remove(); + continue; + } + const i = [].concat(...t.attributes), + o = [].concat(e['*'] || [], e[n] || []); + for (const e of i) ve(e, o) || t.removeAttribute(e.nodeName); + } + return i.body.innerHTML; + })(t, this._config.allowList, this._config.sanitizeFn) + : t; + } + _resolvePossibleFunction(t) { + return Vt(t, [this]); + } + _putElementInTemplate(t, e) { + if (this._config.html) return (e.innerHTML = ''), void e.append(t); + e.textContent = t.textContent; + } + } + const Oe = new Set(['sanitize', 'allowList', 'sanitizeFn']), + Ce = 'fade', + Te = 'show', + Le = '.tooltip-inner', + Se = '.modal', + je = 'hide.bs.modal', + ke = 'hover', + De = 'focus', + Pe = { + AUTO: 'auto', + TOP: 'top', + RIGHT: Wt() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: Wt() ? 'right' : 'left' + }, + Me = { + allowList: me, + animation: !0, + boundary: 'clippingParents', + container: !1, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: !1, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: !0, + sanitizeFn: null, + selector: !1, + template: + '', + title: '', + trigger: 'hover focus' + }, + Ne = { + allowList: 'object', + animation: 'boolean', + boundary: '(string|element)', + container: '(string|element|boolean)', + customClass: '(string|function)', + delay: '(number|object)', + fallbackPlacements: 'array', + html: 'boolean', + offset: '(array|string|function)', + placement: '(string|function)', + popperConfig: '(null|object|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + selector: '(string|boolean)', + template: 'string', + title: '(string|element|function)', + trigger: 'string' + }; + class Be extends he { + constructor(t, e) { + if (void 0 === Dt) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)" + ); + super(t, e), + (this._isEnabled = !0), + (this._timeout = 0), + (this._isHovered = null), + (this._activeTrigger = {}), + (this._popper = null), + (this._templateFactory = null), + (this._newContent = null), + (this.tip = null), + this._setListeners(), + this._config.selector || this._fixTitle(); + } + static get Default() { + return Me; + } + static get DefaultType() { + return Ne; + } + static get NAME() { + return 'tooltip'; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + this._isEnabled && + ((this._activeTrigger.click = !this._activeTrigger.click), + this._isShown() ? this._leave() : this._enter()); + } + dispose() { + clearTimeout(this._timeout), + le.off(this._element.closest(Se), je, this._hideModalHandler), + this._element.getAttribute('data-bs-original-title') && + this._element.setAttribute( + 'title', + this._element.getAttribute('data-bs-original-title') + ), + this._disposePopper(), + super.dispose(); + } + show() { + if ('none' === this._element.style.display) + throw new Error('Please use show on visible elements'); + if (!this._isWithContent() || !this._isEnabled) return; + const t = le.trigger(this._element, this.constructor.eventName('show')), + e = ( + $t(this._element) || this._element.ownerDocument.documentElement + ).contains(this._element); + if (t.defaultPrevented || !e) return; + this._disposePopper(); + const n = this._getTipElement(); + this._element.setAttribute('aria-describedby', n.getAttribute('id')); + const { container: i } = this._config; + if ( + (this._element.ownerDocument.documentElement.contains(this.tip) || + (i.append(n), + le.trigger(this._element, this.constructor.eventName('inserted'))), + (this._popper = this._createPopper(n)), + n.classList.add(Te), + 'ontouchstart' in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + le.on(t, 'mouseover', Ht); + this._queueCallback( + () => { + le.trigger(this._element, this.constructor.eventName('shown')), + !1 === this._isHovered && this._leave(), + (this._isHovered = !1); + }, + this.tip, + this._isAnimated() + ); + } + hide() { + if (!this._isShown()) return; + if ( + le.trigger(this._element, this.constructor.eventName('hide')) + .defaultPrevented + ) + return; + if ( + (this._getTipElement().classList.remove(Te), + 'ontouchstart' in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + le.off(t, 'mouseover', Ht); + (this._activeTrigger.click = !1), + (this._activeTrigger[De] = !1), + (this._activeTrigger[ke] = !1), + (this._isHovered = null); + this._queueCallback( + () => { + this._isWithActiveTrigger() || + (this._isHovered || this._disposePopper(), + this._element.removeAttribute('aria-describedby'), + le.trigger(this._element, this.constructor.eventName('hidden'))); + }, + this.tip, + this._isAnimated() + ); + } + update() { + this._popper && this._popper.update(); + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + return ( + this.tip || + (this.tip = this._createTipElement( + this._newContent || this._getContentForTemplate() + )), + this.tip + ); + } + _createTipElement(t) { + const e = this._getTemplateFactory(t).toHtml(); + if (!e) return null; + e.classList.remove(Ce, Te), + e.classList.add(`bs-${this.constructor.NAME}-auto`); + const n = ((t) => { + do { + t += Math.floor(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + })(this.constructor.NAME).toString(); + return ( + e.setAttribute('id', n), this._isAnimated() && e.classList.add(Ce), e + ); + } + setContent(t) { + (this._newContent = t), + this._isShown() && (this._disposePopper(), this.show()); + } + _getTemplateFactory(t) { + return ( + this._templateFactory + ? this._templateFactory.changeContent(t) + : (this._templateFactory = new xe({ + ...this._config, + content: t, + extraClass: this._resolvePossibleFunction( + this._config.customClass + ) + })), + this._templateFactory + ); + } + _getContentForTemplate() { + return { [Le]: this._getTitle() }; + } + _getTitle() { + return ( + this._resolvePossibleFunction(this._config.title) || + this._element.getAttribute('data-bs-original-title') + ); + } + _initializeOnDelegatedTarget(t) { + return this.constructor.getOrCreateInstance( + t.delegateTarget, + this._getDelegateConfig() + ); + } + _isAnimated() { + return ( + this._config.animation || (this.tip && this.tip.classList.contains(Ce)) + ); + } + _isShown() { + return this.tip && this.tip.classList.contains(Te); + } + _createPopper(t) { + const e = Vt(this._config.placement, [this, t, this._element]), + n = Pe[e.toUpperCase()]; + return kt(this._element, t, this._getPopperConfig(n)); + } + _getOffset() { + const { offset: t } = this._config; + return 'string' == typeof t + ? t.split(',').map((t) => Number.parseInt(t, 10)) + : 'function' == typeof t + ? (e) => t(e, this._element) + : t; + } + _resolvePossibleFunction(t) { + return Vt(t, [this._element]); + } + _getPopperConfig(t) { + const e = { + placement: t, + modifiers: [ + { + name: 'flip', + options: { fallbackPlacements: this._config.fallbackPlacements } + }, + { name: 'offset', options: { offset: this._getOffset() } }, + { + name: 'preventOverflow', + options: { boundary: this._config.boundary } + }, + { + name: 'arrow', + options: { element: `.${this.constructor.NAME}-arrow` } + }, + { + name: 'preSetPlacement', + enabled: !0, + phase: 'beforeMain', + fn: (t) => { + this._getTipElement().setAttribute( + 'data-popper-placement', + t.state.placement + ); + } + } + ] + }; + return { ...e, ...Vt(this._config.popperConfig, [e]) }; + } + _setListeners() { + const t = this._config.trigger.split(' '); + for (const e of t) + if ('click' === e) + le.on( + this._element, + this.constructor.eventName('click'), + this._config.selector, + (t) => { + this._initializeOnDelegatedTarget(t).toggle(); + } + ); + else if ('manual' !== e) { + const t = + e === ke + ? this.constructor.eventName('mouseenter') + : this.constructor.eventName('focusin'), + n = + e === ke + ? this.constructor.eventName('mouseleave') + : this.constructor.eventName('focusout'); + le.on(this._element, t, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger['focusin' === t.type ? De : ke] = !0), e._enter(); + }), + le.on(this._element, n, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger['focusout' === t.type ? De : ke] = + e._element.contains(t.relatedTarget)), + e._leave(); + }); + } + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + le.on(this._element.closest(Se), je, this._hideModalHandler); + } + _fixTitle() { + const t = this._element.getAttribute('title'); + t && + (this._element.getAttribute('aria-label') || + this._element.textContent.trim() || + this._element.setAttribute('aria-label', t), + this._element.setAttribute('data-bs-original-title', t), + this._element.removeAttribute('title')); + } + _enter() { + this._isShown() || this._isHovered + ? (this._isHovered = !0) + : ((this._isHovered = !0), + this._setTimeout(() => { + this._isHovered && this.show(); + }, this._config.delay.show)); + } + _leave() { + this._isWithActiveTrigger() || + ((this._isHovered = !1), + this._setTimeout(() => { + this._isHovered || this.hide(); + }, this._config.delay.hide)); + } + _setTimeout(t, e) { + clearTimeout(this._timeout), (this._timeout = setTimeout(t, e)); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(!0); + } + _getConfig(t) { + const e = de.getDataAttributes(this._element); + for (const t of Object.keys(e)) Oe.has(t) && delete e[t]; + return ( + (t = { ...e, ...('object' == typeof t && t ? t : {}) }), + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return ( + (t.container = !1 === t.container ? document.body : Ft(t.container)), + 'number' == typeof t.delay && + (t.delay = { show: t.delay, hide: t.delay }), + 'number' == typeof t.title && (t.title = t.title.toString()), + 'number' == typeof t.content && (t.content = t.content.toString()), + t + ); + } + _getDelegateConfig() { + const t = {}; + for (const [e, n] of Object.entries(this._config)) + this.constructor.Default[e] !== n && (t[e] = n); + return (t.selector = !1), (t.trigger = 'manual'), t; + } + _disposePopper() { + this._popper && (this._popper.destroy(), (this._popper = null)), + this.tip && (this.tip.remove(), (this.tip = null)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Be.getOrCreateInstance(this, t); + if ('string' == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + Rt(Be); + const Ie = document.getElementById('mode-toggle'); + function Fe(t, e, n) { + if ('function' == typeof t ? t === e : t.has(e)) + return arguments.length < 3 ? e : n; + throw new TypeError('Private element is not present on this object'); + } + function $e(t, e, n) { + return ( + (e = (function (t) { + var e = (function (t, e) { + if ('object' != typeof t || !t) return t; + var n = t[Symbol.toPrimitive]; + if (void 0 !== n) { + var i = n.call(t, e || 'default'); + if ('object' != typeof i) return i; + throw new TypeError('@@toPrimitive must return a primitive value.'); + } + return ('string' === e ? String : Number)(t); + })(t, 'string'); + return 'symbol' == typeof e ? e : e + ''; + })(e)) in t + ? Object.defineProperty(t, e, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (t[e] = n), + t + ); + } + const He = document.getElementById('sidebar'), + qe = document.getElementById('sidebar-trigger'), + ze = document.getElementById('mask'); + class We { + static toggle() { + (Re._ = Fe(We, this, !Fe(We, this, Re)._)), + document.body.toggleAttribute('sidebar-display', Fe(We, this, Re)._), + He.classList.toggle('z-2', Fe(We, this, Re)._), + ze.classList.toggle('d-none', !Fe(We, this, Re)._); + } + } + var Re = { _: !1 }; + const Ve = document.getElementById('sidebar-trigger'), + Ye = document.getElementById('search-trigger'), + Ue = document.getElementById('search-cancel'), + Ke = document.querySelectorAll('#main-wrapper>.container>.row'), + Qe = document.getElementById('topbar-title'), + Ge = document.getElementById('search'), + Xe = document.getElementById('search-result-wrapper'), + Je = document.getElementById('search-results'), + Ze = document.getElementById('search-input'), + tn = document.getElementById('search-hints'), + en = 'd-block', + nn = 'd-none', + on = 'input-focus', + rn = 'd-flex'; + class sn { + static on() { + Ve.classList.add(nn), + Qe.classList.add(nn), + Ye.classList.add(nn), + Ge.classList.add(rn), + Ue.classList.add(en); + } + static off() { + Ue.classList.remove(en), + Ge.classList.remove(rn), + Ve.classList.remove(nn), + Qe.classList.remove(nn), + Ye.classList.remove(nn); + } + } + class an { + static on() { + this.resultVisible || + (Xe.classList.remove(nn), + Ke.forEach((t) => { + t.classList.add(nn); + }), + (this.resultVisible = !0)); + } + static off() { + this.resultVisible && + ((Je.innerHTML = ''), + tn.classList.contains(nn) && tn.classList.remove(nn), + Xe.classList.add(nn), + Ke.forEach((t) => { + t.classList.remove(nn); + }), + (Ze.textContent = ''), + (this.resultVisible = !1)); + } + } + function ln() { + return Ue.classList.contains(en); + } + $e(an, 'resultVisible', !1); + const cn = '.bs.collapse', + un = `show${cn}`, + fn = `shown${cn}`, + dn = `hide${cn}`, + pn = `hidden${cn}`, + hn = `click${cn}.data-api`, + mn = 'show', + gn = 'collapse', + bn = 'collapsing', + vn = `:scope .${gn} .${gn}`, + yn = '[data-bs-toggle="collapse"]', + _n = { parent: null, toggle: !0 }, + wn = { parent: '(null|element)', toggle: 'boolean' }; + class En extends he { + constructor(t, e) { + super(t, e), (this._isTransitioning = !1), (this._triggerArray = []); + const n = _e.find(yn); + for (const t of n) { + const e = _e.getSelectorFromElement(t), + n = _e.find(e).filter((t) => t === this._element); + null !== e && n.length && this._triggerArray.push(t); + } + this._initializeChildren(), + this._config.parent || + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), + this._config.toggle && this.toggle(); + } + static get Default() { + return _n; + } + static get DefaultType() { + return wn; + } + static get NAME() { + return 'collapse'; + } + toggle() { + this._isShown() ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._isShown()) return; + let t = []; + if ( + (this._config.parent && + (t = this._getFirstLevelChildren( + '.collapse.show, .collapse.collapsing' + ) + .filter((t) => t !== this._element) + .map((t) => En.getOrCreateInstance(t, { toggle: !1 }))), + t.length && t[0]._isTransitioning) + ) + return; + if (le.trigger(this._element, un).defaultPrevented) return; + for (const e of t) e.hide(); + const e = this._getDimension(); + this._element.classList.remove(gn), + this._element.classList.add(bn), + (this._element.style[e] = 0), + this._addAriaAndCollapsedClass(this._triggerArray, !0), + (this._isTransitioning = !0); + const n = `scroll${e[0].toUpperCase() + e.slice(1)}`; + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(bn), + this._element.classList.add(gn, mn), + (this._element.style[e] = ''), + le.trigger(this._element, fn); + }, + this._element, + !0 + ), + (this._element.style[e] = `${this._element[n]}px`); + } + hide() { + if (this._isTransitioning || !this._isShown()) return; + if (le.trigger(this._element, dn).defaultPrevented) return; + const t = this._getDimension(); + (this._element.style[t] = `${ + this._element.getBoundingClientRect()[t] + }px`), + this._element.offsetHeight, + this._element.classList.add(bn), + this._element.classList.remove(gn, mn); + for (const t of this._triggerArray) { + const e = _e.getElementFromSelector(t); + e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1); + } + this._isTransitioning = !0; + (this._element.style[t] = ''), + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(bn), + this._element.classList.add(gn), + le.trigger(this._element, pn); + }, + this._element, + !0 + ); + } + _isShown() { + return ( + arguments.length > 0 && void 0 !== arguments[0] + ? arguments[0] + : this._element + ).classList.contains(mn); + } + _configAfterMerge(t) { + return (t.toggle = Boolean(t.toggle)), (t.parent = Ft(t.parent)), t; + } + _getDimension() { + return this._element.classList.contains('collapse-horizontal') + ? 'width' + : 'height'; + } + _initializeChildren() { + if (!this._config.parent) return; + const t = this._getFirstLevelChildren(yn); + for (const e of t) { + const t = _e.getElementFromSelector(e); + t && this._addAriaAndCollapsedClass([e], this._isShown(t)); + } + } + _getFirstLevelChildren(t) { + const e = _e.find(vn, this._config.parent); + return _e.find(t, this._config.parent).filter((t) => !e.includes(t)); + } + _addAriaAndCollapsedClass(t, e) { + if (t.length) + for (const n of t) + n.classList.toggle('collapsed', !e), + n.setAttribute('aria-expanded', e); + } + static jQueryInterface(t) { + const e = {}; + return ( + 'string' == typeof t && /show|hide/.test(t) && (e.toggle = !1), + this.each(function () { + const n = En.getOrCreateInstance(this, e); + if ('string' == typeof t) { + if (void 0 === n[t]) throw new TypeError(`No method named "${t}"`); + n[t](); + } + }) + ); + } + } + le.on(document, hn, yn, function (t) { + ('A' === t.target.tagName || + (t.delegateTarget && 'A' === t.delegateTarget.tagName)) && + t.preventDefault(); + for (const t of _e.getMultipleElementsFromSelector(this)) + En.getOrCreateInstance(t, { toggle: !1 }).toggle(); + }), + Rt(En), + document.getElementsByClassName('collapse'); + const An = '.code-header>button', + xn = 'timeout', + On = 'data-title-succeed', + Cn = 'data-bs-original-title', + Tn = 2e3; + function Ln(t) { + if (t.hasAttribute(xn)) { + let e = t.getAttribute(xn); + if (Number(e) > Date.now()) return !0; + } + return !1; + } + function Sn(t) { + t.setAttribute(xn, Date.now() + Tn); + } + function jn(t) { + t.removeAttribute(xn); + } + function kn() { + const t = document.querySelectorAll(An); + if (0 === t.length) return; + const e = new ClipboardJS(An, { + target: (t) => + t.parentNode.nextElementSibling.querySelector('code .rouge-code') + }); + [...t].map((t) => new Be(t, { placement: 'left' })), + e.on('success', (t) => { + const e = t.trigger; + (t.clearSelection(), Ln(e)) || + (e.children[0].setAttribute('class', 'fas fa-check'), + (function (t) { + const e = t.getAttribute(On); + t.setAttribute(Cn, e), Be.getInstance(t).show(); + })(e), + Sn(e), + setTimeout(() => { + !(function (t) { + Be.getInstance(t).hide(), t.removeAttribute(Cn); + })(e), + (function (t) { + t.children[0].setAttribute('class', 'far fa-clipboard'); + })(e), + jn(e); + }, Tn)); + }); + } + const Dn = 'data-src', + Pn = 'data-lqip', + Mn = 'shimmer', + Nn = 'blur'; + function Bn(t) { + this.parentElement.classList.remove(t); + } + function In() { + this.complete && + (this.hasAttribute(Pn) ? Bn.call(this, Nn) : Bn.call(this, Mn)); + } + function Fn() { + const t = this.getAttribute(Dn); + this.setAttribute('src', encodeURI(t)), this.removeAttribute(Dn); + } + const $n = document.documentElement, + Hn = '.popup:not(.dark)', + qn = '.popup:not(.light)'; + let zn = Hn; + class Wn { + static get attrTimestamp() { + return 'data-ts'; + } + static get attrDateFormat() { + return 'data-df'; + } + static get locale() { + return document.documentElement.getAttribute('lang').substring(0, 2); + } + static getTimestamp(t) { + return Number(t.getAttribute(this.attrTimestamp)); + } + static getDateFormat(t) { + return t.getAttribute(this.attrDateFormat); + } + } + var Rn; + const Vn = document.getElementById('toc-bar'), + Yn = document.getElementById('toc-solo-trigger'), + Un = document.getElementsByClassName('toc-trigger'), + Kn = document.getElementById('toc-popup'), + Qn = document.getElementById('toc-popup-close'), + Gn = 'overflow-hidden', + Xn = 'closing'; + class Jn { + static initBar() { + new IntersectionObserver( + (t) => { + t.forEach((t) => { + Vn.classList.toggle('invisible', t.isIntersecting); + }); + }, + { rootMargin: `-${Fe(Jn, this, ti)._}px 0px 0px 0px` } + ).observe(Yn), + (Zn._ = Fe(Jn, this, !1)); + } + static listenAnchors() { + [...document.getElementsByClassName('toc-link')].forEach((t) => { + t.onclick = () => this.hidePopup(); + }); + } + static refresh() { + Fe(Jn, this, Zn)._ && this.initComponents(), + tocbot.refresh(this.options), + this.listenAnchors(); + } + static get popupOpened() { + return Kn.open; + } + static showPopup() { + this.lockScroll(!0), Kn.showModal(); + Kn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' }); + } + static hidePopup() { + Kn.toggleAttribute(Xn), + Kn.addEventListener( + 'animationend', + () => { + Kn.toggleAttribute(Xn), Kn.close(); + }, + { once: !0 } + ), + this.lockScroll(!1); + } + static lockScroll(t) { + document.documentElement.classList.toggle(Gn, t), + document.body.classList.toggle(Gn, t); + } + static clickBackdrop(t) { + if (Kn.hasAttribute(Xn)) return; + const e = t.target.getBoundingClientRect(); + (t.clientX < e.left || + t.clientX > e.right || + t.clientY < e.top || + t.clientY > e.bottom) && + this.hidePopup(); + } + static initComponents() { + this.initBar(), + [...Un].forEach((t) => { + t.onclick = () => this.showPopup(); + }), + (Kn.onclick = (t) => this.clickBackdrop(t)), + (Qn.onclick = () => this.hidePopup()), + (Kn.oncancel = (t) => { + t.preventDefault(), this.hidePopup(); + }); + } + static init() { + tocbot.init(this.options), this.listenAnchors(), this.initComponents(); + } + } + var Zn = { _: !0 }, + ti = { _: 48 }; + $e(Jn, 'options', { + tocSelector: '#toc-popup-content', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + collapseDepth: 4, + headingsOffset: Fe((Rn = Jn), Rn, ti)._ + }); + class ei { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + document.getElementById('toc-wrapper') && tocbot.init(this.options); + } + } + $e(ei, 'options', { + tocSelector: '#toc', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + headingsOffset: 32 + }); + const ni = matchMedia('(min-width: 1200px)'); + function ii(t) { + t.matches ? (Jn.popupOpened && Jn.hidePopup(), ei.refresh()) : Jn.refresh(); + } + !(function () { + const t = document.querySelectorAll('article img'); + if (0 === t.length) return; + t.forEach((t) => { + t.addEventListener('load', In); + }), + document.querySelectorAll('article img[loading="lazy"]').forEach((t) => { + t.complete && Bn.call(t, Mn); + }); + const e = document.querySelectorAll(`article img[${Pn}="true"]`); + e.length && + e.forEach((t) => { + Fn.call(t); + }); + })(), + null !== document.querySelector('main>article[data-toc="true"]') && + (ni.matches ? ei.init() : Jn.init(), (ni.onchange = ii)), + (function () { + if (null === document.querySelector('.popup')) return; + const t = !( + null === document.querySelector('.popup.light') && + null === document.querySelector('.popup.dark') + ); + (($n.hasAttribute('data-mode') && + 'dark' === $n.getAttribute('data-mode')) || + (!$n.hasAttribute('data-mode') && + window.matchMedia('(prefers-color-scheme: dark)').matches)) && + (zn = qn); + let e = GLightbox({ selector: `${zn}` }); + if (t && document.getElementById('mode-toggle')) { + let t = null; + window.addEventListener('message', (n) => { + n.source === window && + n.data && + n.data.direction === ModeToggle.ID && + (function (t, e) { + (zn = zn === Hn ? qn : Hn), + null === e && (e = GLightbox({ selector: `${zn}` })), + ([t, e] = [e, t]); + })(e, t); + }); + } + })(), + Ie && + Ie.addEventListener('click', () => { + modeToggle.flipMode(); + }), + (qe.onclick = ze.onclick = () => We.toggle()), + dayjs.locale(Wn.locale), + dayjs.extend(window.dayjs_plugin_localizedFormat), + document.querySelectorAll(`[${Wn.attrTimestamp}]`).forEach((t) => { + const e = dayjs.unix(Wn.getTimestamp(t)), + n = e.format(Wn.getDateFormat(t)); + if ( + ((t.textContent = n), + t.removeAttribute(Wn.attrTimestamp), + t.removeAttribute(Wn.attrDateFormat), + t.hasAttribute('data-bs-toggle') && + 'tooltip' === t.getAttribute('data-bs-toggle')) + ) { + const n = e.format('llll'); + t.setAttribute('data-bs-title', n); + } + }), + kn(), + (function () { + const t = document.getElementById('copy-link'); + null !== t && + (t.addEventListener('click', (t) => { + const e = t.target; + Ln(e) || + navigator.clipboard.writeText(window.location.href).then(() => { + const t = e.getAttribute(Cn), + n = e.getAttribute(On); + e.setAttribute(Cn, n), + Be.getInstance(e).show(), + Sn(e), + setTimeout(() => { + e.setAttribute(Cn, t), jn(e); + }, Tn); + }); + }), + t.addEventListener('mouseleave', (t) => { + Be.getInstance(t.target).hide(); + })); + })(), + Ye.addEventListener('click', () => { + sn.on(), an.on(), Ze.focus(); + }), + Ue.addEventListener('click', () => { + sn.off(), an.off(); + }), + Ze.addEventListener('focus', () => { + Ge.classList.add(on); + }), + Ze.addEventListener('focusout', () => { + Ge.classList.remove(on); + }), + Ze.addEventListener('input', () => { + '' === Ze.value + ? ln() + ? tn.classList.remove(nn) + : an.off() + : (an.on(), ln() && tn.classList.add(nn)); + }), + (function () { + const t = document.getElementById('back-to-top'); + window.addEventListener('scroll', () => { + window.scrollY > 50 + ? t.classList.add('show') + : t.classList.remove('show'); + }), + t.addEventListener('click', () => { + window.scrollTo({ top: 0 }); + }); + })(), + [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map( + (t) => new Be(t) + ); +})(); diff --git a/assets/js/dist/sw.min.js b/assets/js/dist/sw.min.js new file mode 100644 index 00000000000..4a2983333cd --- /dev/null +++ b/assets/js/dist/sw.min.js @@ -0,0 +1,7 @@ +--- +permalink: /:basename +--- +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +!function(){"use strict";importScripts("./assets/js/data/swconf.js");const e=swconf.purge,t=swconf.interceptor;self.addEventListener("install",(t=>{e||t.waitUntil(caches.open(swconf.cacheName).then((e=>e.addAll(swconf.resources))))})),self.addEventListener("activate",(t=>{t.waitUntil(caches.keys().then((t=>Promise.all(t.map((t=>e||t!==swconf.cacheName?caches.delete(t):void 0))))))})),self.addEventListener("message",(e=>{"SKIP_WAITING"===e.data&&self.skipWaiting()})),self.addEventListener("fetch",(s=>{s.request.headers.has("range")||s.respondWith(caches.match(s.request).then((n=>n||fetch(s.request).then((n=>{const r=s.request.url;if(e||"GET"!==s.request.method||!function(e){const s=new URL(e),n=s.pathname;if(!s.protocol.startsWith("http"))return!1;for(const e of t.urlPrefixes)if(s.href.startsWith(e))return!1;for(const e of t.paths)if(n.startsWith(e))return!1;return!0}(r))return n;let a=n.clone();return caches.open(swconf.cacheName).then((e=>{e.put(s.request,a)})),n})))))}))}(); diff --git a/assets/js/dist/theme.min.js b/assets/js/dist/theme.min.js new file mode 100644 index 00000000000..099b77107f1 --- /dev/null +++ b/assets/js/dist/theme.min.js @@ -0,0 +1,4 @@ +/*! + * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ + */ +var Theme=function(){"use strict";function t(t,e,i){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:i;throw new TypeError("Private element is not present on this object")}function e(e,i,s){return s(t(e,i))}var i;class s{static get DARK(){return"dark"}static get LIGHT(){return"light"}static get ID(){return"theme-mode"}static get visualState(){return e(s,this,o)?e(s,this,n):e(s,this,h)?this.DARK:this.LIGHT}static getThemeMapper(t,e){return{[this.LIGHT]:t,[this.DARK]:e}}static init(){this.switchable&&(t(s,this,b)._.addEventListener("change",(()=>{const i=e(s,this,n);t(s,this,c).call(this),i!==this.visualState&&t(s,this,l).call(this)})),e(s,this,o)&&(e(s,this,r)?t(s,this,a).call(this):t(s,this,u).call(this)))}static flip(){e(s,this,o)?t(s,this,c).call(this):e(s,this,h)?t(s,this,u).call(this):t(s,this,a).call(this),t(s,this,l).call(this)}}function n(e){return sessionStorage.getItem(t(i,e,g)._)}function r(t){return e(i,t,n)===t.DARK}function o(t){return null!==e(i,t,n)}function h(e){return t(i,e,b)._.matches}function a(){document.documentElement.setAttribute(t(i,this,v)._,this.DARK),sessionStorage.setItem(t(i,this,g)._,this.DARK)}function u(){document.documentElement.setAttribute(t(i,this,v)._,this.LIGHT),sessionStorage.setItem(t(i,this,g)._,this.LIGHT)}function c(){document.documentElement.removeAttribute(t(i,this,v)._),sessionStorage.removeItem(t(i,this,g)._)}function l(){window.postMessage({id:this.ID},"*")}i=s;var m,f,d,g={_:"mode"},v={_:"data-mode"},b={_:window.matchMedia("(prefers-color-scheme: dark)")};return m=s,f="switchable",d=!document.documentElement.hasAttribute(t(i,i,v)._),(f=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var s=i.call(t,e||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(f))in m?Object.defineProperty(m,f,{value:d,enumerable:!0,configurable:!0,writable:!0}):m[f]=d,s.init(),s}(); diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md deleted file mode 100644 index 3c59cef18c9..00000000000 --- a/docs/CHANGELOG.md +++ /dev/null @@ -1,465 +0,0 @@ -# Changelog - -## [7.1.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.1.0...v7.1.1) (2024-09-23) - -### Bug Fixes - -* **i18n:** correct fr-FR translations ([#1949](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1949)) ([367262e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/367262e74d1005bddf1328bb2b3a2b9e152c0086)) -* **pwa:** site baseurl not passed to `app.js` ([#1955](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1955)) ([5a63244](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5a63244721d21b1ad3a0ae83420723a2f0379e8b)) - -## [7.1.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.0.1...v7.1.0) (2024-08-27) - -### Features - -* add Bluesky social links ([#1759](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1759)) ([0102aba](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0102abae062be24ec289fb7facb11950aca79e3f)) -* add Reddit social option ([#1836](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1836)) ([8673e13](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8673e1335f0771eac364d0a2866f27476d61a58b)) -* add Threads social links ([#1837](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1837)) ([e3a78b6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e3a78b6243f7056105d72185bb6e94b436834e5b)) -* **analytics:** add fathom analytics ([#1913](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1913)) ([befc4ce](https://github.com/cotes2020/jekyll-theme-chirpy/commit/befc4ce9c5026f67f99bce66e223d056229f0bdb)) -* **dev:** add vscode tasks ([#1843](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1843)) ([e4db1a1](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e4db1a176f3f69f676cbc0bf27b1d5a657ece05e)) -* **dev:** support vscode dev-container ([#1781](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1781)) ([1e3d4a6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1e3d4a6323ba3eed06a57f8bf1b2edefd890b127)) -* **ui:** improve block quote layout ([80bd792](https://github.com/cotes2020/jekyll-theme-chirpy/commit/80bd7928a02c75c843a550bd377d11b574e8bfda)) -* **ui:** improve visibility of inline code ([#1831](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1831)) ([c876731](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c876731901784a72ef9d2e9e2936df65ddff5f61)) -* **ui:** make `info-prompt` icon looks like the letter "i" ([#1835](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1835)) ([a07a57e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/a07a57ec922249d3a22da56fbcb30d83eadef728)) -* **ui:** set `` font to 'Lato' ([64c7262](https://github.com/cotes2020/jekyll-theme-chirpy/commit/64c7262245e878534971a2e3a2630b614daf72f3)) - -### Bug Fixes - -* adapt the giscus localization parameter ([#1810](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1810)) ([0709854](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0709854dc8f6099d38c2578967a02f73b4be0dc8)) -* avoid caching pageviews data ([#1849](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1849)) ([979f86c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/979f86cf64e1fcace4231fb070c7e6398fd4e5ec)) -* remove extra dual-mode images from lightbox ([#1883](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1883)) ([5c5910f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5c5910f1fc661ec3dce203ac961c7f64f1991895)) - -## [7.0.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v7.0.0...v7.0.1) (2024-05-18) - -### Bug Fixes - -* **analytics:** goatcounter pv greater than 1K cannot be converted to numbers ([#1762](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1762)) ([33a1fa7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/33a1fa7cae2181625e2f335708d59de4dd20ee7d)) -* audio/video path apply variable `media_subpath` ([#1745](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1745)) ([00a27a1](https://github.com/cotes2020/jekyll-theme-chirpy/commit/00a27a1b85f665d0642b77babd54c6903fbdeb22)) - -## [7.0.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.5.5...v7.0.0) (2024-05-11) - -### ⚠ BREAKING CHANGES - -* optimize the resource hints (#1717) -* rename media-url file and related parameters (#1651) -* rename comment setting parameter (#1563) -* **analytics:** add post pageviews for GoatCounter (#1543) - -### Features - -* add cloudflare web analytics ([#1723](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1723)) ([c17fba4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c17fba44f53767c9dfaa8d92cfc6e275e5977f8a)) -* add support for embed video files ([#1558](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1558)) ([9592146](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9592146ca392236e69ee358412ecc32ef1662127)) -* add support for giscus strict title matching ([#1614](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1614)) ([700fd5b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/700fd5bad7272dd950f861e8550215cd8fafb413)) -* **analytics:** add post pageviews for GoatCounter ([#1543](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1543)) ([b641b3f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b641b3f1f2e54bcfe96d8dff46d4f94186492d98)) -* **analytics:** add Umami and Matomo tracking codes ([#1658](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1658)) ([61bdca2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/61bdca2db45179cd0d1b4b885a4c4864e3ffa3c1)) -* change site verification settings ([#1561](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1561)) ([e436387](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e4363871b5be0608d2b92b8aff482825a8044c1b)) -* **deps:** move `MathJax` configuration to a separate file ([#1670](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1670)) ([44f552c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/44f552cbcee83d037de0e59496bf6bb19eea2691)) -* display theme version in footer ([#1611](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1611)) ([8349314](https://github.com/cotes2020/jekyll-theme-chirpy/commit/834931486dc3e5ed544ce4ff47cd1b2bc45f42fd)) -* **i18n:** allow `page.lang` to override `site.lang` ([#1586](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1586)) ([547b95c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/547b95cc7ae35018dadcc01b6eb1dc8c8943e67e)) -* make post description customizable ([#1602](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1602)) ([f865336](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f865336c896e0db34edf8482a53e0e5d8f07ff95)) -* **media:** support audio and video tag with multi sources ([#1618](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1618)) ([23be416](https://github.com/cotes2020/jekyll-theme-chirpy/commit/23be4162b3f8598db14dc5b39726932ccf2cdc23)) - -### Bug Fixes - -* make TOC title and entries visible at the same time ([#1711](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1711)) ([e0950fc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e0950fc973d029dc65d0bc1bd68f3d11242527c8)) -* mode toggle not outlined when receiving keyboard focus ([#1690](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1690)) ([cd37f63](https://github.com/cotes2020/jekyll-theme-chirpy/commit/cd37f63a0144e0499ea991d3309da064ad5eccea)) -* prevent footnote back arrow from becoming an emoji ([#1716](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1716)) ([8608147](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8608147fb5037804695d93496c62f96b9c41e9cd)) -* **pwa:** skip range requests in service worker ([#1672](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1672)) ([76d58fe](https://github.com/cotes2020/jekyll-theme-chirpy/commit/76d58fe0ffdc4bd1df35b60815e97560c3564700)) -* search result prompt is empty ([#1583](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1583)) ([8a2afae](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8a2afae6cab8fc9639be0a866b71699c8a80084c)) -* use `https` for Weibo sharing URL ([#1612](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1612)) ([8e5fbb7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8e5fbb7a74d04a4b3cdde69bcc821f8ccd1a3bc0)) - -### Improvements - -* improve \
          visibility in dark mode ([#1565](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1565)) ([4ddd5c4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4ddd5c437046a1e70cf396113e2351c452a25493)) -* lean bootstrap javascript ([#1734](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1734)) ([ddb48ed](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ddb48eda52827aae16aff720212d7b6d2d8647f9)) -* rename comment setting parameter ([#1563](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1563)) ([f8390d4](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f8390d4384600fb015728b1b186570fa58ca216f)) -* replace jQuery with Vanilla JS ([#1681](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1681)) ([fe7afa3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/fe7afa379f0af0ca98a207f85bdc0fa98575b1ad)) -* simplify mode toggle script ([#1692](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1692)) ([d4a6d64](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d4a6d640bd6d4ab185faf96c0255369a9903ee1d)) -* tree shaking Bootstrap CSS ([#1736](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1736)) ([363a3d9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/363a3d936bbd688fa4f28527e85ef7dd3fe3a79b)) - -### Changes - -* optimize the resource hints ([#1717](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1717)) ([dcb0add](https://github.com/cotes2020/jekyll-theme-chirpy/commit/dcb0add47bf1adf92215514f1ccfa4661d5215be)) -* rename media-url file and related parameters ([#1651](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1651)) ([9f8aeaa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9f8aeaadbfef9967a9b0a9dd323d8bed46e14d9f)) - -## [6.5.5](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.5.4...v6.5.5) (2024-03-23) - -### Bug Fixes - -* **post:** correct the image URLs ([#1627](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1627)) ([2d649aa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2d649aae0e40a24db1ab0d46fa474294e96cb135)) - -## [6.5.4](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.5.3...v6.5.4) (2024-03-22) - -### Bug Fixes - -* correct the attribute for the Twitter social image ([#1615](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1615)) ([cfe44f2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/cfe44f204bcec8e05f498512ec50878e626a124f)) -* **seo:** correct social preview image path inside `` tag ([#1623](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1623)) ([74cf57a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/74cf57aaacf6674057e6f33240a22f4888cfe88f)) - -## [6.5.3](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.5.2...v6.5.3) (2024-03-07) - -### Changes - -* replace `polyfill.io` with `cdnjs` hosted link ([#1598](https://github.com/cotes2020/jekyll-theme-chirpy/pull/1598)) ([75a3d73](https://github.com/cotes2020/jekyll-theme-chirpy/commit/75a3d7399b257256a09d602cbe01062fe1cdf68d)) - -## [6.5.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.5.1...v6.5.2) (2024-02-29) - -### Bug Fixes - -* correct the base URL parameter name ([#1576](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1576)) ([19d6baf](https://github.com/cotes2020/jekyll-theme-chirpy/commit/19d6bafbe1a60614e0d63b961bc73c342a9f6f33)), closes [#1553](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1553) - -## [6.5.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.5.0...v6.5.1) (2024-02-26) - -### Bug Fixes - -* correct the generation of relative resource paths ([#1553](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1553)) ([89b9625](https://github.com/cotes2020/jekyll-theme-chirpy/commit/89b962557a56ccc13eba3c9c20b4270ee9d30042)) - -## [6.5.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.4.2...v6.5.0) (2024-02-14) - -### Features - -* add `pwa.cache.*` option to precisely control caching ([#1501](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1501)) ([1127c43](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1127c43823aac4db7fd80d5bb706ae7b1e129dc6)) -* add analytics support for GoatCounter ([#1526](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1526)) ([90693ff](https://github.com/cotes2020/jekyll-theme-chirpy/commit/90693ff95e72ca4b5135a7b454a6ab521b995b3e)) - -### Bug Fixes - -* correct the Twitter Card in social share preview ([#1498](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1498)) ([74f1662](https://github.com/cotes2020/jekyll-theme-chirpy/commit/74f16623c9c4877ef36ac52e8b69c19d1d9a82ba)) -* missing "/" at the end of URLs for categories and tags in breadcrumb ([#1495](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1495)) ([02e296e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/02e296ed75b7906b2d112c67f9054f5d71919de9)) - -### Improvements - -* allow no social links to be configured ([#1494](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1494)) ([4facf5b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4facf5b390eeba612ca439f3354c5d2d881aac56)) -* allow TOC to start at heading 3 ([#1512](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1512)) ([bbbb66b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/bbbb66b489a3bf2b878947336fe894e8ea2ae3f5)) -* enable equation numbering in MathJax ([#1520](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1520)) ([c13ec31](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c13ec311636d5e057c6895e353e1c1a4e570f582)) - -## [6.4.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.4.1...v6.4.2) (2024-01-13) - -### Bug Fixes - -* resume the `blockquote` display type ([#1480](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1480)) ([c7cfde0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c7cfde093020c73ca9a1b83437eb600379e05918)), closes [#1449](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1449) - -## [6.4.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.4.0...v6.4.1) (2024-01-10) - -### Bug Fixes - -* `og:image` URL is incorrect ([#1468](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1468)) ([b2d1cb6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b2d1cb68db659270aac537d2aa8d4b806fa6991d)), closes [#1463](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1463) - -## [6.4.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.3.1...v6.4.0) (2024-01-10) - -### Features - -* add bilibili embed video support ([#1406](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1406)) ([4a2b89d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4a2b89d0b698d672486349131a89025fa47afcb6)) -* add site-wide social preview image settings ([#1463](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1463)) ([241bb4d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/241bb4df7878cff7f82014df660874a1dcddba76)) - -### Bug Fixes - -* image float breaks quotes and prompts ([#1449](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1449)) ([ea2d238](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ea2d238bd8adc018256862e05a5092311c87a671)), closes [#1441](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1441) -* url-less authors should not have empty links ([#1410](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1410)) ([2a4fbf6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2a4fbf6a7925da610a75c498116da7cf9ba857d7)), closes [#1403](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1403) - -### Improvements - -* include the latest posts in the "Recently Updated" list ([#1456](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1456)) ([82d8f2d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/82d8f2db984711f334f55b6af5098ec16770e824)) - -## [6.3.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.3.0...v6.3.1) (2023-11-12) - -### Bug Fixes - -* **home:** responsive gap at the bottom of preview image ([1a977a8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1a977a87a0da1cff35d0896cf9265c31034841a6)) - -## [6.3.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.2.3...v6.3.0) (2023-11-10) - -### Features - -* add Mastodon sharing link ([#1344](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1344)) ([2bf87e0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2bf87e0de7928f325811e1bb96cfcaefdf6cf66a)), closes [#1324](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1324) - -### Bug Fixes - -* **home:** crop the preview image that doesn't match 1.91:1 ([#1325](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1325)) ([5810bcd](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5810bcd1d7b83e111017831fa82c368a6b15c7cd)) -* resume lazy loading for Twitch videos ([#1326](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1326)) ([9f174d9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9f174d9088e5c83a5e0c4630336cea65e199c553)), closes [#1267](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1267) - -## [6.2.3](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.2.2...v6.2.3) (2023-10-10) - -### Bug Fixes - -* avoid `utterances` initialization failure ([#1234](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1234)) ([b34661e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b34661efd72e8697fd5b30ba7e55c86c7dd10338)) -* **home:** avoid LQIP dirty data passing to the next post ([#1278](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1278)) ([109725d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/109725d2dc56e329c60a876e9ce4094513fd36a5)) -* **posts:** code snippet clipboard tooltip missing title ([#1246](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1246)) ([726085c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/726085c6478e7a9dc2cc57189b2dcbc85d90f048)) -* **posts:** resume target highlighting for superscripts and footnotes ([#1253](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1253)) ([0465a98](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0465a985dc5262fa2043540f4eddafa251f917a3)) - -### Improvements - -* **comments:** lazy load `giscus` ([#1254](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1254)) ([e9c9206](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e9c920641b9c97594fa078ea89747d77eb7e7493)) -* **core:** replace `lazysizes` with browser-level lazy loading ([#1267](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1267)) ([bf3a34d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/bf3a34d0544b49fcf40f57080c4d6b4ff44750c4)) -* **layout:** improve margins for tail block ([#1243](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1243)) ([13a3c3c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/13a3c3c906bb6c5a38314ea27b6cf3767df94b27)) -* **layout:** optimize the main block height calculation ([#1249](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1249)) ([73e171b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/73e171b0fbce4a542e2141d7e2b1144450571ce1)) -* **pwa:** enhance cache privacy protection ([#1275](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1275)) ([2d56597](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2d56597571aaafa92251d192861ea69cce3e83d2)) -* **ui:** standardize metadata text styles ([#1295](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1295)) ([2574118](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2574118f40a956184705f87dea4d88e7c246a055)) -* **ux:** render background color before loading preview image ([#1298](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1298)) ([42bf39e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/42bf39e21c9a497aecc3e9b4549e2fc3ba4a1e4a)) - -## [6.2.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.2.1...v6.2.2) (2023-09-10) - -### Bug Fixes - -* **sidebar:** contact icons not stacking ([#1224](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1224)) ([273b389](https://github.com/cotes2020/jekyll-theme-chirpy/commit/273b389c512f13693ed6cdf57d256ac21deae97c)) - -## [6.2.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.2.0...v6.2.1) (2023-09-10) - -### Bug Fixes - -* **pwa:** installation failure caused by outdated cache entries ([4da7406](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4da7406dfea112a4a2b1db5615ecf2672be6694f)) - -## [6.2.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.1.0...v6.2.0) (2023-09-10) - -### Features - -* **layout:** center the footer ([41b8f9f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/41b8f9f519e5f5f69e9a123b38b06bade2271a82)) -* **posts:** render heading 4 in TOC ([#1023](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1023)) ([229c2a2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/229c2a2e2b109fc2eca85be548f1dd97234e44c4)) -* **ui:** redesign the pagination button on home page ([62bcd60](https://github.com/cotes2020/jekyll-theme-chirpy/commit/62bcd601fcadc602c81672b1d4b937231396c3c0)) -* **ui:** update the twitter icon ([#1221](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1221)) ([aff7566](https://github.com/cotes2020/jekyll-theme-chirpy/commit/aff75667749769644f990d3dc9b0720c7d96d14d)) - -### Improvements - -* **core:** speed up the Jekyll build times ([#1163](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1163)) ([0d4103d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0d4103d47bc9cff93918bb09a2957737cc3c9fe0)) -* refactor using semantic HTML ([#1207](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1207)) ([505e314](https://github.com/cotes2020/jekyll-theme-chirpy/commit/505e314a3142c332e39365fbe2dac23df1bf0abe)), closes [#1196](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1196) -* **ui:** improve code snippet design ([4f86b04](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4f86b04a8487ebbf4a6d0d70b0c3ece79e9269f3)) -* **ui:** improve web accessibility ([#447](https://github.com/cotes2020/jekyll-theme-chirpy/issues/447)) ([37c9764](https://github.com/cotes2020/jekyll-theme-chirpy/commit/37c976499ead51c1d88e8e8213366240a72adebc)) - -## [6.1.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.0.0...v6.1.0) (2023-07-02) - -### Features - -* **i18n:** add Thai locale file ([#1087](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1087)) ([a60e907](https://github.com/cotes2020/jekyll-theme-chirpy/commit/a60e90791d24811caff78e21c71dc85d6a729438)) - -### Bug Fixes - -* missing xml escape for `alt` of preview image ([#1113](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1113)) ([8b0fbf5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8b0fbf5a834276f273274e4d614edd71e339cbb0)) -* the cached image is covered by shimmer ([#1100](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1100)) ([df8ff54](https://github.com/cotes2020/jekyll-theme-chirpy/commit/df8ff546ec1c8d21a3d25e0124665001fcf756f3)) -* **ui:** min-height of `page` layout exceeds the mobile screen ([73af591](https://github.com/cotes2020/jekyll-theme-chirpy/commit/73af59194ab935d38b89d298fea0e96e13be7cb7)) -* **webfont:** resume semi-bold of font family `Source Sans Pro` ([c4da99c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c4da99c7ea5d6e32b1f1b815d7d8d6ae7b0f55de)) - -### Improvements - -* **build:** use `jekyll-include-cache` plugin to reduce build time ([#1098](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1098)) ([4fe145e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4fe145e9809ee1b370d9891135939534751462d0)), closes [#1094](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1094) -* CJK characters of the "Search Cancel" button will wrap ([#1105](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1105)) ([b6d1992](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b6d1992f85ec543220e826087dcc89870e7e2c00)) -* **ui:** avoid blank space at the bottom of the homepage preview image ([ce2f6f5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ce2f6f5abef7a8b874e08d1f18c1fd002650dbf1)) -* **ui:** improve hover color of sidebar nav items in light mode ([728094d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/728094d1ba67a1e7c0a11e1c6c69bf87af9a767b)) - -## [6.0.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v6.0.0...v6.0.1) (2023-05-19) - -### Bug Fixes - -* **home:** preview image missing `[alt]` and `img_path` ([#1044](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1044)) ([aba9468](https://github.com/cotes2020/jekyll-theme-chirpy/commit/aba9468b5332802db961166889d4c4a84e404a2c)) -* **layout:** restore the margin bottom of the main area ([#1047](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1047)) ([eb40f51](https://github.com/cotes2020/jekyll-theme-chirpy/commit/eb40f51c84b011a7c301279527f544ad27efd5eb)) -* **post, page:** image link loses shimmer effect ([#1046](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1046)) ([3bd881d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/3bd881da70d685d10659f47bfe0e79cd02e7af92)) -* **typography:** long string for update-list is not truncated ([#1050](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1050)) ([a51d31c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/a51d31c55a37fbe034f0b0f699f4df0b6a14ba8f)), closes [#1049](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1049) - -## [6.0.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.6.1...v6.0.0) (2023-05-16) - -### ⚠ BREAKING CHANGES - -* rename assets origin configuration files - -### Features - -* add a hook to insert custom metadata in `head` tag ([#1015](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1015)) ([fe20341](https://github.com/cotes2020/jekyll-theme-chirpy/commit/fe203417d993508eedf5b9044fe53c4a566e44f9)) -* **i18n:** add sl-SI.yml with slovenian translations ([#989](https://github.com/cotes2020/jekyll-theme-chirpy/issues/989)) ([42a700a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/42a700aa37889faa32d7ec1f6776ce4b9d845dc4)) -* **i18n:** add Traditional Chinese (Taiwan) localization file ([#961](https://github.com/cotes2020/jekyll-theme-chirpy/issues/961)) ([d97f95f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d97f95fca0bcd450ea50709ffba0217f7e65d339)) -* **i18n:** added Swedish localization file ([#969](https://github.com/cotes2020/jekyll-theme-chirpy/issues/969)) ([fe70479](https://github.com/cotes2020/jekyll-theme-chirpy/commit/fe7047959e3694c6e603e764ded30dacd49e6aa9)) -* support hiding the modification date of a post ([#1020](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1020)) ([8da583d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8da583d403456f6460ec1a6ebcbb0c2ca8127ff6)) -* **ui:** improve code snippet design ([6d99f5c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6d99f5cc36a69e5ccff51f81ba448c798d92e12e)) -* **ui:** improve the design for top bar ([83f1c34](https://github.com/cotes2020/jekyll-theme-chirpy/commit/83f1c34f92d85f3953ca9c9818be5399962bf1c9)) -* **ui:** new design footer content layout ([3210c59](https://github.com/cotes2020/jekyll-theme-chirpy/commit/3210c59466150dc04b4e4bdfc1ffd0e38adcff43)) -* **ui:** redesign the sidebar ([83bbe4a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/83bbe4ac939edfd1706e68c080562e3462f83519)) -* **ui:** show preview image in home page ([97b8dfe](https://github.com/cotes2020/jekyll-theme-chirpy/commit/97b8dfeed6ce7677f6472e28dc3b03f3c2968b12)) - -### Bug Fixes - -* parameter parsing error in image URL ([#1022](https://github.com/cotes2020/jekyll-theme-chirpy/issues/1022)) ([ee88cec](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ee88cec270ea5938f98913a3edf28a684cfbd6c0)) -* **rss:** double quotes in the post title will break the XML structure ([#965](https://github.com/cotes2020/jekyll-theme-chirpy/issues/965)) ([1719d81](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1719d81d00b32b107c35b3903089be84a9b28a6c)) - -### refactor - -* rename assets origin configuration files ([c283e77](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c283e7782fa9562d82d9855fd280a573fd58c75f)) - -### Improvements - -* **assets:** reduce HTTP requests to CDN ([9d97120](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9d971201978e993a9af337d9cd5396a1ea225f00)) -* calculate heading font size dynamically ([#983](https://github.com/cotes2020/jekyll-theme-chirpy/issues/983)) ([52f5ee9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/52f5ee9cd3f92a6e8f25eaa203831546cda85db6)) -* **i18n:** set the global default locales to "en" ([#979](https://github.com/cotes2020/jekyll-theme-chirpy/issues/979)) ([61fdbcb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/61fdbcb83a3601ecae62ec230602b94a5eb832e1)) -* **tools:** avoid initialization interruption in single branch forks ([#992](https://github.com/cotes2020/jekyll-theme-chirpy/issues/992)) ([e90461a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e90461aa3c81633863db6a12c5924ddba33bd08e)) -* **ui:** improve categories color in dark mode ([414dd13](https://github.com/cotes2020/jekyll-theme-chirpy/commit/414dd132aed70f4bd96cb712d00eacc82d2753e9)) -* **ui:** improve hover effect for post preview cards ([7626e4d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7626e4d00544346a46b6e5ff2f3a99d234defe09)) -* **ui:** improve hover effect of trending tags ([34499f0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/34499f0c927ce8fea3705dc2f0f0e6805cabda43)) -* **ui:** improve inline code in light mode ([e38309f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e38309f3bd1302ffe60b682136b6efaf96f4d9ae)) -* **ui:** improve related posts design ([2918da9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2918da9f29465618d557c082ff3a2f23d7519049)) -* **ui:** improve the color of prompts in dark mode ([8cbbcfa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8cbbcfa26da0addd88affada23a65770250f2404)) -* **ui:** lighten the link color in light-mode ([7c23a4e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7c23a4ebc53b9e231c214e04f8ac0803cbcdb720)) -* **ui:** mute the marker in lists ([0c80552](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0c80552d772b874e2a161f1270294faa3af18d4a)) -* **ui:** uniform the muted text color ([aadf939](https://github.com/cotes2020/jekyll-theme-chirpy/commit/aadf9393d5c7f7528d453c4e68eba4f5cbb85bd9)) -* **ux:** improve LQIP fade in effect ([003e7b6](https://github.com/cotes2020/jekyll-theme-chirpy/commit/003e7b60c93988a7bfae4c03a8346d4f8a5f0bb6)) - -## [5.6.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.6.0...v5.6.1) (2023-03-30) - -### Bug Fixes - -* **deps:** `tocbot` has no initialization detection ([#957](https://github.com/cotes2020/jekyll-theme-chirpy/issues/957)) ([8225174](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8225174cb5e02fda7b3cc548ec821c876b0a5139)) -* mode-toggle leads to Disqus loading failure ([#945](https://github.com/cotes2020/jekyll-theme-chirpy/issues/945)) ([6fec411](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6fec411c18ca5689c467c7b216ddeda02df23623)) -* pageviews not updated immediately ([8b4f99c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8b4f99c87f9a9227f47e84fb39d7b0f551d6f4dd)) - -## [5.6.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.5.2...v5.6.0) (2023-03-17) - -### Features - -* change TOC plugin to `tocbot` ([#774](https://github.com/cotes2020/jekyll-theme-chirpy/issues/774)) ([02b7bd5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/02b7bd5095a2affe5b4c5ed7b5b182baaf642ff3)) -* **i18n:** add Greek Language Support. ([#903](https://github.com/cotes2020/jekyll-theme-chirpy/issues/903)) ([712a9b2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/712a9b22401ce591cf4c0bb03fbdd1693fee30bb)) -* **ux:** turn home page posts into clickable cards ([#895](https://github.com/cotes2020/jekyll-theme-chirpy/issues/895)) ([b85f633](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b85f6330dea666350631c4461b742cdb54c5f052)) - -### Bug Fixes - -* css selector string escaping vulnerability ([#888](https://github.com/cotes2020/jekyll-theme-chirpy/issues/888)) ([5c6ec9d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5c6ec9d06b6571e2c0efe6652078442dca8af477)) -* mathematics cannot scroll horizontally ([#760](https://github.com/cotes2020/jekyll-theme-chirpy/issues/760)) ([4681df7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4681df715118a37ae1e91b588de0adb67f4e331a)) -* notch status bar doesn't match theme color ([#918](https://github.com/cotes2020/jekyll-theme-chirpy/issues/918)) ([820ba62](https://github.com/cotes2020/jekyll-theme-chirpy/commit/820ba62e9e939090523a7077d01d01bd78ec84eb)) -* some console snippets will be incompletely copied ([e8e4901](https://github.com/cotes2020/jekyll-theme-chirpy/commit/e8e4901e340dd7e5fc5f656dd3c7bcd6c97b886a)) - -## [5.5.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.5.1...v5.5.2) (2023-01-30) - -### Bug Fixes - -* position of prompt icon is incorrect in paragraph on mobile ([5df953f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5df953f6c877e2aa3f1f4981c97a0b8007abe6d4)) - -## [5.5.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.5.0...v5.5.1) (2023-01-29) - -### Bug Fixes - -* the icon position of the prompts in the list is incorrect ([0c9558d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0c9558de8a01e9ab795778f351a8bbf4d6b21763)) - -## [5.5.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.4.0...v5.5.0) (2023-01-29) - -### Features - -* **i18n:** add Arabic translation ([#857](https://github.com/cotes2020/jekyll-theme-chirpy/issues/857)) ([765af53](https://github.com/cotes2020/jekyll-theme-chirpy/commit/765af53b77e5c63804784d5728f5970ae274c2c7)) -* **i18n:** add Czech language ([#833](https://github.com/cotes2020/jekyll-theme-chirpy/issues/833)) ([98d48f5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/98d48f5da412276d4a0c99cd01a87b19349bc6bc)) -* **i18n:** add Finnish translations ([#843](https://github.com/cotes2020/jekyll-theme-chirpy/issues/843)) ([d6d0318](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d6d03183eaf94b44e037cc48b6e1c47cee183f6e)) -* **i18n:** add Italian translation ([#850](https://github.com/cotes2020/jekyll-theme-chirpy/issues/850)) ([9a011e1](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9a011e14d66195d8b2fb9ec62f3e60a3e56cd032)) - -### Bug Fixes - -* copy command line incomplete(`.gp` part) ([41ed331](https://github.com/cotes2020/jekyll-theme-chirpy/commit/41ed33145639415148aec8e85edc7a6fd0de0ca3)) -* correct encoding of spaces in share URLs ([#835](https://github.com/cotes2020/jekyll-theme-chirpy/issues/835)) ([f2d2858](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f2d285844e6e2979f2b0eec1d20073d3c05b6c0c)) -* post's image would cover the PWA update alert ([bd374dd](https://github.com/cotes2020/jekyll-theme-chirpy/commit/bd374dd383c50f89c8f018ecb4e25772eeb8f6d8)) -* prompt with nested blockquotes renders incorrectly ([#846](https://github.com/cotes2020/jekyll-theme-chirpy/issues/846)) ([babb4a0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/babb4a0c5a58ceb2e4093bc465670accdd526c18)) - -## [5.4.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.3.2...v5.4.0) (2022-12-27) - -### Features - -* add `rel="me"` to Mastodon sidebar contact links for verification ([#807](https://github.com/cotes2020/jekyll-theme-chirpy/issues/807)) ([d2190c7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d2190c726f61c8c9732b88b4aecf699dc8bc7deb)) -* add embed video support ([ed6dc53](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ed6dc539eff7003a3765bcd8c31ae5e91a863d65)) -* add shimmer background when image loads ([ab16fdc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ab16fdc7fc26811130b98a1773beb62bff6182e8)) -* set preview image ratio to 1.91 : 1 ([4b6ccbc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4b6ccbcbccce27b9fcb035812efefe4eb69301cf)) -* support dark and light mode images ([#481](https://github.com/cotes2020/jekyll-theme-chirpy/issues/481)) ([9306c7b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9306c7b39ecf9d9146bc1a25eebedc38eb2c3dd6)) -* support LQIP for images ([bffaf63](https://github.com/cotes2020/jekyll-theme-chirpy/commit/bffaf6374f265cec96ef743d42b46fbec3b59797)) - -### Bug Fixes - -* `hreflang` tag attribute of feed misses `site.alt_lang` ([7651d28](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7651d2851b4bb7d8f0d068b62c036c89a1089bbc)) -* `og:image` will be incorrect if the image uses a cross-domain URL ([8de1abd](https://github.com/cotes2020/jekyll-theme-chirpy/commit/8de1abda6be3633982392178731431b0ddb1b52b)) -* refactoring error when the image URL contains parameters ([ec98f07](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ec98f07aca0b80a9c07fbcdc8e0d7d66dba98ed2)) -* spaces in post title are encoded when sharing ([7efd2f8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7efd2f8aa2ea1c3aeb7d740bf9a018881c26fe65)) - -### Improvements - -* **cdn:** optimize cache policy for static assets ([7fb0ee0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/7fb0ee0bedb63eee3f90a49c6d7fb8b5d78c9830)) - -## [5.3.2](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.3.1...v5.3.2) (2022-11-22) - -### Bug Fixes - -* `mermaid` occasionally fails to initialize ([#536](https://github.com/cotes2020/jekyll-theme-chirpy/issues/536)) ([48f14e3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/48f14e39ac81bbfb3b9913ea3ee789d775b2d1ae)) -* **comment:** disqus doesn't follow theme mode switching ([b0d5956](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b0d5956f5a0ed894984d6b1754efeba04d8bc966)) -* restore full-text search ([#741](https://github.com/cotes2020/jekyll-theme-chirpy/issues/741)) ([6774e0e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6774e0e1fb37cf467b14be481347412713763f05)) -* the image URL in the SEO-related tags is incomplete ([#754](https://github.com/cotes2020/jekyll-theme-chirpy/issues/754)) ([f6e9a3f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f6e9a3fccf7ab34db71f8aefaf86fdcc05861076)) - -## [5.3.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.3.0...v5.3.1) (2022-10-25) - -### Bug Fixes - -* 404 page missing title in tablet/desktop view ([5511b28](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5511b2883fd5a395fddfb642588d00c122f18da7)) -* prompt content overflows horizontally ([#705](https://github.com/cotes2020/jekyll-theme-chirpy/issues/705)) ([fb13e32](https://github.com/cotes2020/jekyll-theme-chirpy/commit/fb13e3219b5eca0d2e4f86a1ecabfab75240369f)) -* **tools:** multiple configuration files will fail the test ([80cb0b3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/80cb0b371754e96772a7907877a8ce196398ba3d)) - -### Improvements - -* **layout:** improve the min-height of main content ([#674](https://github.com/cotes2020/jekyll-theme-chirpy/issues/674)) ([49bb93c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/49bb93cc0c89ad9cfaad5edcf9cb28c3d5134575)) -* modify checkbox icon with `Liquid` ([1fd665b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/1fd665bf4990c26ae23635c511c5abc9640184d1)) -* optimize the extra padding in lists ([#703](https://github.com/cotes2020/jekyll-theme-chirpy/issues/703)) ([39da11e](https://github.com/cotes2020/jekyll-theme-chirpy/commit/39da11e3f3685f49321757576d2b87a48bf25db5)), closes [#702](https://github.com/cotes2020/jekyll-theme-chirpy/issues/702) -* **posts:** improve core block bottom padding ([d2fb98b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d2fb98b3e57f2f6c3fc3816551cd0721731adf40)) -* truncate post content for search results ([647eea8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/647eea8dbd716f9d3cb8330c3139fa753903f51d)) -* **typography:** optimize the line height of post content ([eac3f9b](https://github.com/cotes2020/jekyll-theme-chirpy/commit/eac3f9b434ca77e3dc64eea9cedea7b93e7b306b)) - -### Others - -* **giscus:** add `reactions-enabled` option ([#712](https://github.com/cotes2020/jekyll-theme-chirpy/issues/712)) ([70662a0](https://github.com/cotes2020/jekyll-theme-chirpy/commit/70662a0365e6b9378602dc0a57462ddad5aebcf5)) -* **locale:** restore options for changing date format ([#716](https://github.com/cotes2020/jekyll-theme-chirpy/issues/716)) ([f904e8c](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f904e8cd48c343cc31e25859d9d50bfe2c056f41)) -* remove site config option `prefer_datetime_locale` ([6852ceb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6852ceb280927ff4e753a3e1131f2b396d9807d0)) - -## [5.3.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.2.1...v5.3.0) (2022-09-23) - -### Features - -* add multiple authors to a post ([#677](https://github.com/cotes2020/jekyll-theme-chirpy/issues/677)) ([f1d9e99](https://github.com/cotes2020/jekyll-theme-chirpy/commit/f1d9e99bc02d3cd0a6b0cd1beac545f0cc7a24f8)), closes [#675](https://github.com/cotes2020/jekyll-theme-chirpy/issues/675) -* **i18n:** add Bulgarian support ([#612](https://github.com/cotes2020/jekyll-theme-chirpy/issues/612)) ([2fed338](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2fed338ce6d078bf528c9717201fbc475f88cd22)) -* **i18n:** add German locale file ([#663](https://github.com/cotes2020/jekyll-theme-chirpy/issues/663)) ([940b281](https://github.com/cotes2020/jekyll-theme-chirpy/commit/940b2810e95065e30600ae8d5e4612e7183da60e)) -* **i18n:** add Hungarian locale file ([#597](https://github.com/cotes2020/jekyll-theme-chirpy/issues/597), [#598](https://github.com/cotes2020/jekyll-theme-chirpy/issues/598)) ([b032977](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b0329775fc24d0323e5cc04cda46ece8b4531802)) -* **i18n:** add Turkish language ([#631](https://github.com/cotes2020/jekyll-theme-chirpy/issues/631)) ([ad137fa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/ad137fa2945b1870b9c1dd5e9212a5f4af7c3580)) - -### Bug Fixes - -* add missing color to linkedin icon for share list ([#683](https://github.com/cotes2020/jekyll-theme-chirpy/issues/683)) ([0dcd39d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0dcd39d491c9c49e4acf7f75f83fe6e1d1839e37)) -* code contains spaces in headings ([#644](https://github.com/cotes2020/jekyll-theme-chirpy/issues/644)) ([3fa1bf3](https://github.com/cotes2020/jekyll-theme-chirpy/commit/3fa1bf305451f645a7f3aa93863b076463c8f165)) -* correct spelling of `panel` ([#686](https://github.com/cotes2020/jekyll-theme-chirpy/issues/686)) ([b288587](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b288587c1c3d113a1c52c2d25fb46cddda348961)) -* correct the i18n for tab titles ([0c5b697](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0c5b697fd3b283b6a5c926742b61ed49d8688c18)) -* the `code` doesn't wrap inside the prompt ([#626](https://github.com/cotes2020/jekyll-theme-chirpy/issues/626)) ([378b65a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/378b65a0617787813519dde74d6f741f255eff3d)) - -## [5.2.1](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.2.0...v5.2.1) (2022-06-17) - -### Bug Fixes - -* exclude CHANGELOG from output ([971fe03](https://github.com/cotes2020/jekyll-theme-chirpy/commit/971fe03ec329ae49e7d60fe3af6101cfbd1acd6c)) -* **PWA:** sometimes update notification is not triggered ([96af729](https://github.com/cotes2020/jekyll-theme-chirpy/commit/96af7291ea5b2c5ed6372e7b6f7725e67c69f1ba)) - -## [5.2.0](https://github.com/cotes2020/jekyll-theme-chirpy/compare/v5.1.0...v5.2.0) (2022-06-09) - -### Features - -* add es-ES support to locales ([#533](https://github.com/cotes2020/jekyll-theme-chirpy/issues/533)) ([efe75ad](https://github.com/cotes2020/jekyll-theme-chirpy/commit/efe75adf2784956afb7a0b67f6634b146d9cb03b)) -* add fr-FR support to locales ([#582](https://github.com/cotes2020/jekyll-theme-chirpy/issues/582)) ([94e8144](https://github.com/cotes2020/jekyll-theme-chirpy/commit/94e81447afa457b1a6b7e8f487c47502803556d7)) -* add Vietnamese locale ([#517](https://github.com/cotes2020/jekyll-theme-chirpy/issues/517)) ([171463d](https://github.com/cotes2020/jekyll-theme-chirpy/commit/171463d76da9b7bc25dd327b8f0a868ea79e388b)) -* add pt-BR support to locales ([c2c503f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/c2c503f63336884282b6bda4ec0703d6ae76771b)) -* add option to turn off PWA ([#527](https://github.com/cotes2020/jekyll-theme-chirpy/issues/527)) ([106c981](https://github.com/cotes2020/jekyll-theme-chirpy/commit/106c981bac71e7434204a77e1f0c9c61d6eb1509)) -* **PWA:** add Service Worker update notification ([d127183](https://github.com/cotes2020/jekyll-theme-chirpy/commit/d127183b9774f6321e409acdb66bf8a85d8814be)) -* support showing description of preview image ([2bd6efa](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2bd6efa95a174ac44e30a3af1e57e6f40d6e0e3a)) - -### Bug Fixes - -* alt is not a valid attribute for 'a' tag ([58928db](https://github.com/cotes2020/jekyll-theme-chirpy/commit/58928dbc9068db4e4cda4371eeae1865920dce6a)) -* assets URL is missing `baseurl` in self-hosted mode ([#591](https://github.com/cotes2020/jekyll-theme-chirpy/issues/591)) ([54124d5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/54124d5134995fce52e4c2fc0a5d4d1743d6264d)) -* correct the `twitter:creator` of Twitter summary card ([96a16c8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/96a16c868ede51e7dfa412de63ffa1e5a49add7f)) -* correctly URL encode share links ([4c1c8d8](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4c1c8d8b0eacecbbaa2d522bbdd6430f350ff760)), closes [#496](https://github.com/cotes2020/jekyll-theme-chirpy/issues/496) -* follow paginate_path config for pagination ([6900d9f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6900d9f2bc9380cbda4babf611c6eeff345291af)) -* force checkout of `gh-pages` branch ([#544](https://github.com/cotes2020/jekyll-theme-chirpy/issues/544)) ([5402523](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5402523ae52a3740bcc15df0b226b2612644945d)) -* horizontal scroll for long equations ([#545](https://github.com/cotes2020/jekyll-theme-chirpy/issues/545)) ([30787fc](https://github.com/cotes2020/jekyll-theme-chirpy/commit/30787fc4cf151e955bb7afc26dfd859f1a06fce6)) -* p is not allowed in span ([4f590e2](https://github.com/cotes2020/jekyll-theme-chirpy/commit/4f590e2bba0639751771211bc0d357828ae70404)) -* remove whitespace from avatar URL ([#537](https://github.com/cotes2020/jekyll-theme-chirpy/issues/537)) ([0542b51](https://github.com/cotes2020/jekyll-theme-chirpy/commit/0542b5149c8287dca60e37f46ee36f31b43455e4)) -* resume the preview image SEO tag ([#529](https://github.com/cotes2020/jekyll-theme-chirpy/issues/529)) ([b8d1bcd](https://github.com/cotes2020/jekyll-theme-chirpy/commit/b8d1bcd3dea0abd1afef7ef154a4501fbb18938d)) -* script code should be in head or body, not in between ([2103191](https://github.com/cotes2020/jekyll-theme-chirpy/commit/2103191b2faf714a8e4418c7c347a1f942b51af8)) -* spurious header closing tags ([59e9557](https://github.com/cotes2020/jekyll-theme-chirpy/commit/59e955745f02f9b57c65af70b0979cd4a98bf53f)) -* table bypass refactoring when it contains IAL ([#519](https://github.com/cotes2020/jekyll-theme-chirpy/issues/519)) ([5d85ccb](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5d85ccb9943aac88dbbefebe1c2234cdcbae5c53)) -* **theme mode:** `SCSS` syntax error ([#588](https://github.com/cotes2020/jekyll-theme-chirpy/issues/588)) ([76a1b6a](https://github.com/cotes2020/jekyll-theme-chirpy/commit/76a1b6a068c369138422dcd18ba08ec8cc3749a6)) -* use `jsonify` to generate valid json ([#521](https://github.com/cotes2020/jekyll-theme-chirpy/issues/521)) ([dd9d5a7](https://github.com/cotes2020/jekyll-theme-chirpy/commit/dd9d5a7207b746342d07176d8969dc4f2c380bf2)) -* when the `site.img_cdn` is set to the local path, the preview-image path loses the `baseurl` ([9cefe58](https://github.com/cotes2020/jekyll-theme-chirpy/commit/9cefe58993d9ea3a3a28424e7ffd8e0911567c5c)) - -### Improvements - -* avoid post pageviews from shifting while loading ([135a16f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/135a16f13ee783d9308669ff9a824847a73c951c)) -* avoid the layout shift for post datetime ([6d35f5f](https://github.com/cotes2020/jekyll-theme-chirpy/commit/6d35f5f8da044cfad071628bb53776de03efaae4)) -* **categories:** support singular and plural forms of locale ([#595](https://github.com/cotes2020/jekyll-theme-chirpy/issues/595)) ([35cadf9](https://github.com/cotes2020/jekyll-theme-chirpy/commit/35cadf969dd0161ee62503e242c545f006f7072b)) -* improve the responsive design for ultrawide screens ([#540](https://github.com/cotes2020/jekyll-theme-chirpy/issues/540)) ([5d6e8c5](https://github.com/cotes2020/jekyll-theme-chirpy/commit/5d6e8c5ef6aa71b4d2600c5305f6e8ba540557f7)) diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md deleted file mode 100644 index 0bf4a9eb9a4..00000000000 --- a/docs/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,73 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at `cotes.chung@gmail.com`. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at - -For answers to common questions about this code of conduct, see - - -[homepage]: https://www.contributor-covenant.org diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md deleted file mode 100644 index 63024c31f21..00000000000 --- a/docs/CONTRIBUTING.md +++ /dev/null @@ -1,109 +0,0 @@ -# Contributing Guidelines - -_First of all, thank you for considering contributing to this project_ ! :tada: - -There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug -reports and feature requests, or writing code that can be incorporated into the project. In order to make a good -experience for both contributors and maintainers, please start with the "[General Rules](#general-rules)" -before taking further action. - -## Table of Contents - -- [General Rules](#general-rules) -- [Questions and Requests for Help](#questions-and-requests-for-help) -- [Reporting a Bug](#reporting-a-bug) -- [Suggesting a New Feature](#suggesting-a-new-feature) -- [Contributing Code/Documentation](#contributing-codedocumentation) -- [Helpful Resources](#helpful-resources) - -## General Rules - -All types of contributions (_pull requests_, _issues_, and _discussions_) should follow these rules: - -- You should read through the [Wiki][wiki] to understand the project features and how to use it properly. This is to -respect the time of the project's developers and -maintainers and to save their energy for other problems that really need to be resolved. - -- Use the [latest release version][latest-ver]. If your contribution involves code/documentation changes, update to the -latest version of the default (`master`) branch. - -- Avoid making duplicate contributions by searching for existing [issues][issues] / [discussions][discus] / -[pull requests][pr], but don't leave any unhelpful comments such as "I have the same problem". Prefer using -[reactions][gh-reactions] if you simply want to "+1" an existing issue. - -- DO NOT email or tweet the -project developers and maintainers directly, everything about the project should be left on GitHub. - -**Tip**: If you are new to the open-source community, then please read through -"[How To Ask Questions The Smart Way][ext-reading]" before contributing. - -## Questions and Requests for Help - -We expect every reasonable question you ask to be answered appropriately. If you want a quick and timely response, -please ask questions at [Jekyll Talk][jekyll-talk] and [StackOverflow][stack-overflow], where there are tons of -enthusiastic geeks who will positively answer your challenging questions. - -If you can't get an answer in any of the above ways, then create a new [discussion][discus]. As long as it is not a -duplicate and [RTFM][rtfm] / [STFW][stfw] issue, we will respond as soon as possible. - -## Reporting a Bug - -A great way to contribute to the project is to send a detailed issue when you encounter a problem. We always appreciate -a well-written, thorough bug report. - -1. Please figure out why the bug occurred, or locate the module in the project that caused this bug. Otherwise, there is -a high probability that you are using/setting it incorrectly. - -2. If the issue is caused by you modifying the project code or some configuration of Jekyll, then please DO NOT -report such "bugs". -Chirpy is an open-source project, but that doesn't mean we will maintain other specific forks (such as yours). -You can learn about Jekyll and modern Web development to solve problems caused by custom modifications. - -3. Make good use of your browser's incognito mode to troubleshoot if the problem is caused by caching. - -4. As a last option, you can create a new [Bug Report][bug-report] following the template to describe the details. -If possible, providing a demo that reproduces the error will help us troubleshoot faster. - -## Suggesting a New Feature - -Feature requests are welcome! While we will consider all requests, we cannot guarantee your request will be accepted. -We want to avoid chaos in the UI design and therefore do not accept requests for changes like color schemes, -fontfamilies, typography, and so on. We want to avoid [feature creep][feat-creep] and focus only on the core features. -If accepted, we cannot make any commitments regarding the timeline for implementation and release. However, you are -welcome to submit a pull request to help! - -## Contributing Code/Documentation - -If your request is about an enhancement, it is recommended to first submit a -[Feature Request][feat-request] to discuss whether your idea fits the project. -See also: "[Suggesting a New Feature](#suggesting-a-new-feature)". Other than that, you can start the PR process. - -1. Fork this project on GitHub and clone your repository locally. -2. Setting up the [development & test environments][dev-env]. -3. Creating a new branch from the default branch and give it a descriptive name (e.g. `add-a-new-feat` or `fix-a-bug`). -When development is complete, create a [Conventional Commit][cc] with Git. -4. Submitting a [Pull Request][gh-pr]. - -## Helpful Resources - -- [Code of conduct](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/CODE_OF_CONDUCT.md) -- [Security policy](https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/docs/SECURITY.md) -- [How To Ask Questions The Smart Way][ext-reading] - -[latest-ver]: https://github.com/cotes2020/jekyll-theme-chirpy/releases/latest -[wiki]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki -[issues]: https://github.com/cotes2020/jekyll-theme-chirpy/issues?q=is%3Aissue -[pr]: https://github.com/cotes2020/jekyll-theme-chirpy/pulls -[discus]: https://github.com/cotes2020/jekyll-theme-chirpy/discussions -[ext-reading]: http://www.catb.org/~esr/faqs/smart-questions.html -[jekyll-talk]: https://talk.jekyllrb.com/ -[stack-overflow]: https://stackoverflow.com/questions/tagged/jekyll -[rtfm]: https://en.wikipedia.org/wiki/RTFM -[stfw]: https://www.webster-dictionary.org/definition/STFW -[gh-reactions]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/ -[bug-report]: https://github.com/cotes2020/jekyll-theme-chirpy/issues/new?assignees=&labels=&projects=&template=bug_report.yml -[feat-request]: https://github.com/cotes2020/jekyll-theme-chirpy/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.yml -[feat-creep]: https://en.wikipedia.org/wiki/Feature_creep -[dev-env]: https://github.com/cotes2020/jekyll-theme-chirpy/wiki/Development-&-Test-Environments -[cc]: https://www.conventionalcommits.org/ -[gh-pr]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests diff --git a/docs/SECURITY.md b/docs/SECURITY.md deleted file mode 100644 index 8d357fe5219..00000000000 --- a/docs/SECURITY.md +++ /dev/null @@ -1,13 +0,0 @@ -# Security Policy - -## Supported Versions - -| Version | Supported | -| :--------- | :-------: | -| >= `7.0.0` | ✓ | -| <= `6.0.0` | ✗ | - -## Reporting a Vulnerability - -If you find a vulnerability, please report it to `cotes.chung@gmail.com`. -We will try our best to respond within a week. Thank you for your time! diff --git a/package.json b/package.json index d6beea03eb8..7aed347c2ab 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ }, "dependencies": { "@popperjs/core": "^2.11.8", - "bootstrap": "^5.3.3" + "bootstrap": "^5.3.3", + "cross-env": "^7.0.3" }, "devDependencies": { "@babel/core": "^7.25.2",