hexo-theme-gnix 9.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +4 -2
  2. package/include/hexo/feed.js +5 -5
  3. package/include/hexo/filter.js +25 -1
  4. package/include/hexo/generator/archive.js +116 -0
  5. package/include/hexo/generator/home.js +64 -0
  6. package/include/hexo/generator/index.js +82 -0
  7. package/include/hexo/generator/md_generator.js +87 -0
  8. package/include/hexo/generator/page.js +55 -0
  9. package/include/hexo/generator/tag.js +84 -0
  10. package/include/hexo/helper.js +38 -0
  11. package/include/hexo/i18n.js +183 -0
  12. package/include/util/article_font.js +132 -0
  13. package/include/util/i18n.js +280 -0
  14. package/include/util/theme.js +84 -0
  15. package/languages/en.yml +28 -0
  16. package/languages/zh-CN.yml +28 -0
  17. package/layout/archive.jsx +131 -127
  18. package/layout/common/article.jsx +283 -16
  19. package/layout/common/article_info.jsx +339 -0
  20. package/layout/common/article_media.jsx +11 -4
  21. package/layout/common/comment.jsx +15 -7
  22. package/layout/common/footer.jsx +6 -5
  23. package/layout/common/head.jsx +121 -32
  24. package/layout/common/navbar.jsx +195 -65
  25. package/layout/common/theme_selector.jsx +16 -14
  26. package/layout/layout.jsx +43 -5
  27. package/layout/misc/open_graph.jsx +162 -66
  28. package/layout/misc/paginator.jsx +2 -8
  29. package/layout/plugin/cookie_consent.jsx +252 -53
  30. package/layout/plugin/swup.jsx +1 -1
  31. package/layout/search/insight.jsx +1 -1
  32. package/layout/tag.jsx +3 -2
  33. package/layout/tags.jsx +81 -73
  34. package/package.json +5 -5
  35. package/scripts/index.js +1 -0
  36. package/source/css/archive.css +225 -180
  37. package/source/css/default.css +1162 -98
  38. package/source/css/responsive.css +426 -0
  39. package/source/css/shiki/shiki.css +12 -2081
  40. package/source/css/tags.css +183 -0
  41. package/source/css/twikoo.css +1049 -1045
  42. package/source/img/favicon.svg +1 -6
  43. package/source/img/og_image.webp +0 -0
  44. package/source/js/article-font-utils.js +99 -0
  45. package/source/js/busuanzi.js +91 -24
  46. package/source/js/components/chat.js +169 -50
  47. package/source/js/components/image-carousel.js +152 -108
  48. package/source/js/components/sidenote.js +210 -0
  49. package/source/js/components/text-image-section.js +78 -90
  50. package/source/js/components/theme-stacked.js +65 -33
  51. package/source/js/components/tree.js +30 -16
  52. package/source/js/decrypt.js +7 -2
  53. package/source/js/main.js +428 -5
  54. package/source/js/swup.js +39 -0
  55. package/source/js/theme-selector.js +26 -16
  56. package/include/hexo/generator.js +0 -53
  57. package/layout/misc/article_licensing.jsx +0 -99
  58. package/source/css/responsive/desktop.css +0 -36
  59. package/source/css/responsive/mobile.css +0 -29
  60. package/source/css/responsive/tablet.css +0 -43
  61. package/source/css/responsive/touch.css +0 -155
  62. package/source/img/logo.svg +0 -9
  63. package/source/js/archive-breadcrumb.js +0 -132
  64. package/source/js/host/cookieconsent/3.1.1/build/cookieconsent.min.css +0 -6
  65. package/source/js/host/cookieconsent/3.1.1/build/cookieconsent.min.js +0 -1
  66. package/source/js/swup.bundle.js +0 -1
@@ -1,99 +0,0 @@
1
- const { Component, cacheComponent } = require("../../include/util/common");
2
- class ArticleLicensing extends Component {
3
- render() {
4
- const { title, link, author, authorTitle, createdAt, createdTitle, updatedAt, updatedTitle, licenses, licensedTitle } = this.props;
5
- return (
6
- <div class="article-licensing">
7
- <div class="article-licensing-bg-icon">
8
- <svg xmlns="http://www.w3.org/2000/svg" width="200" viewBox="0 0 24 24" role="img" aria-label="Licensing Icon">
9
- <path
10
- fill="currentColor"
11
- d="m11.89 10.34l-1.34.7c-.14-.3-.31-.51-.52-.63s-.41-.18-.58-.18c-.9 0-1.34.59-1.34 1.77c0 .54.11.97.34 1.29c.22.32.55.48 1 .48c.58 0 .99-.27 1.23-.86l1.23.63c-.26.49-.62.87-1.09 1.15q-.69.42-1.53.42c-.9 0-1.62-.27-2.17-.82C6.58 13.74 6.3 13 6.3 12c0-.95.28-1.7.83-2.26q.84-.84 2.1-.84c1.24-.01 2.13.48 2.66 1.44m5.77 0l-1.32.7c-.14-.3-.34-.51-.53-.63q-.315-.18-.6-.18c-.89 0-1.34.59-1.34 1.77c0 .54.13.97.34 1.29c.23.32.56.48 1 .48c.59 0 1-.27 1.24-.86l1.25.63c-.28.49-.65.87-1.11 1.15c-.47.28-.97.42-1.52.42c-.9 0-1.63-.27-2.17-.82S12.09 13 12.09 12c0-.95.28-1.7.83-2.26S14.17 8.9 15 8.9c1.26-.01 2.14.48 2.66 1.44M12 3.5a8.5 8.5 0 0 1 8.5 8.5a8.5 8.5 0 0 1-8.5 8.5A8.5 8.5 0 0 1 3.5 12A8.5 8.5 0 0 1 12 3.5M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2"
12
- />
13
- </svg>
14
- </div>
15
- <div class="licensing-title">
16
- {title ? <p>{title}</p> : null}
17
- <p>
18
- <a style="text-decoration: none" href={link}>
19
- {link}
20
- </a>
21
- </p>
22
- </div>
23
- <div class="licensing-meta level">
24
- <div style="display: flex">
25
- {author ? (
26
- <div class="level-item">
27
- <div>
28
- <p>{authorTitle}</p>
29
- <p>{author}</p>
30
- </div>
31
- </div>
32
- ) : null}
33
- {createdAt ? (
34
- <div class="level-item">
35
- <div>
36
- <p>{createdTitle}</p>
37
- <p>{createdAt}</p>
38
- </div>
39
- </div>
40
- ) : null}
41
- {updatedAt ? (
42
- <div class="level-item">
43
- <div>
44
- <p>{updatedTitle}</p>
45
- <p>{updatedAt}</p>
46
- </div>
47
- </div>
48
- ) : null}
49
- {licenses && Object.keys(licenses).length ? (
50
- <div class="level-item">
51
- <div>
52
- <p>{licensedTitle}</p>
53
- <p>
54
- {Object.keys(licenses).map((name) => (
55
- <a rel="noopener" target="_blank" title={name} href={licenses[name].url}>
56
- <iconify-icon icon={licenses[name].icon} />
57
- </a>
58
- ))}
59
- </p>
60
- </div>
61
- </div>
62
- ) : null}
63
- </div>
64
- </div>
65
- </div>
66
- );
67
- }
68
- }
69
-
70
- ArticleLicensing.Cacheable = cacheComponent(ArticleLicensing, "misc.articlelicensing", (props) => {
71
- const { config, page, helper } = props;
72
- const { licenses } = config.article || {};
73
-
74
- const links = {};
75
- if (licenses) {
76
- Object.keys(licenses).forEach((name) => {
77
- const license = licenses[name];
78
- links[name] = {
79
- url: helper.url_for(typeof license === "string" ? license : license.url),
80
- icon: license.icon,
81
- };
82
- });
83
- }
84
-
85
- return {
86
- title: page.title,
87
- link: decodeURI(page.permalink),
88
- author: page.author || config.author,
89
- authorTitle: helper.__("article.licensing.author"),
90
- createdAt: page.date ? helper.date(page.date) : null,
91
- createdTitle: helper.__("article.licensing.created_at"),
92
- updatedAt: page.updated ? helper.date(page.updated) : null,
93
- updatedTitle: helper.__("article.licensing.updated_at"),
94
- licenses: links,
95
- licensedTitle: helper.__("article.licensing.licensed_under"),
96
- };
97
- });
98
-
99
- module.exports = ArticleLicensing;
@@ -1,36 +0,0 @@
1
- /* min-width: 1024px */
2
-
3
- .navbar-burger {
4
- display: none;
5
- }
6
-
7
- .navbar-container {
8
- max-width: 1260px;
9
- }
10
-
11
- /* navbar */
12
- .navbar-menu,
13
- .navbar-start,
14
- .navbar-end {
15
- align-items: stretch;
16
- display: flex;
17
- padding: 0;
18
- flex-shrink: 0;
19
- }
20
-
21
- .navbar-menu {
22
- flex-grow: 1;
23
- flex-shrink: 0;
24
- overflow-x: auto;
25
- background-color: transparent;
26
- }
27
-
28
- .navbar-start {
29
- justify-content: flex-start;
30
- margin-right: auto;
31
- }
32
-
33
- .navbar-end {
34
- justify-content: flex-end;
35
- margin-left: auto;
36
- }
@@ -1,29 +0,0 @@
1
- span.year {
2
- font-size: 3em !important;
3
- }
4
-
5
- .is-hidden-mobile {
6
- display: none;
7
- }
8
-
9
- table {
10
- font-size: 14px;
11
- }
12
-
13
- th,
14
- td {
15
- padding: 8px 12px;
16
- }
17
-
18
- .section {
19
- padding: 0;
20
- }
21
-
22
- .cover-image {
23
- max-height: 25vh;
24
- border-radius: 0;
25
- }
26
-
27
- .pagination {
28
- height: 2.5em;
29
- }
@@ -1,43 +0,0 @@
1
- /* @media screen and (min-width $tablet), print */
2
- .is-hidden-tablet {
3
- display: none;
4
- }
5
-
6
- /* level item */
7
- .level {
8
- display: flex;
9
- flex-grow: 1;
10
- }
11
-
12
- /* pagination */
13
- .pagination-list {
14
- flex-grow: 1;
15
- flex-shrink: 1;
16
- justify-content: flex-start;
17
- order: 1;
18
- }
19
-
20
- .pagination-previous {
21
- order: 2;
22
- }
23
-
24
- .pagination-next {
25
- order: 3;
26
- }
27
-
28
- .pagination {
29
- justify-content: space-between;
30
- }
31
-
32
- .pagination-previous {
33
- order: 1;
34
- }
35
-
36
- .pagination-list {
37
- justify-content: center;
38
- order: 2;
39
- }
40
-
41
- .pagination-next {
42
- order: 3;
43
- }
@@ -1,155 +0,0 @@
1
- /* This is used for mobile and tablet devices */
2
- /* #region Navbar */
3
- /* Navbar Burger */
4
- .navbar-menu {
5
- display: none;
6
- }
7
-
8
- .navbar-menu.is-active {
9
- display: block;
10
- position: fixed;
11
- top: 4rem;
12
- left: 0;
13
- width: 100%;
14
- height: 100vh;
15
- background-color: var(--mantle);
16
- overflow-y: auto;
17
- }
18
-
19
- .navbar-start {
20
- display: flex;
21
- flex-direction: column;
22
- height: 70%;
23
- }
24
-
25
- .navbar-end {
26
- justify-content: center;
27
- display: inline-flex;
28
- flex-direction: row;
29
- width: 100%;
30
- > .navbar-item {
31
- font-size: 1.25em;
32
- padding: 1em;
33
- }
34
- }
35
-
36
- .navbar-burger {
37
- position: relative;
38
- width: 4rem;
39
- margin-left: auto;
40
- color: var(--text);
41
- > span {
42
- background-color: currentColor;
43
- height: 2px;
44
- left: calc(50% - 8px);
45
- position: absolute;
46
- transform-origin: center;
47
- transition-duration: 86ms;
48
- transition-property: background-color, opacity, transform;
49
- transition-timing-function: ease-out;
50
- width: 16px;
51
-
52
- &:nth-child(1) {
53
- top: calc(50% - 6px);
54
- }
55
-
56
- &:nth-child(2) {
57
- top: calc(50% - 1px);
58
- }
59
-
60
- &:nth-child(3) {
61
- top: calc(50% + 4px);
62
- }
63
- }
64
- }
65
-
66
- .navbar-burger.is-active span:nth-child(1) {
67
- transform: translateY(5px) rotate(45deg);
68
- }
69
-
70
- .navbar-burger.is-active span:nth-child(2) {
71
- opacity: 0;
72
- }
73
-
74
- .navbar-burger.is-active span:nth-child(3) {
75
- transform: translateY(-5px) rotate(-45deg);
76
- }
77
-
78
- @keyframes fadeInUp {
79
- from {
80
- opacity: 0;
81
- transform: translateY(15px);
82
- /* 从下方15px处开始 */
83
- }
84
-
85
- to {
86
- opacity: 1;
87
- transform: translateY(0);
88
- /* 移动到原始位置 */
89
- }
90
- }
91
-
92
- .navbar-start .navbar-item {
93
- /* 先将元素设置为透明,为动画做准备 */
94
- opacity: 0;
95
- animation-name: fadeInUp;
96
- animation-duration: 0.56s;
97
- animation-timing-function: ease-out;
98
- animation-fill-mode: forwards;
99
- font-size: 2rem;
100
- font-family: var(--font-serif);
101
- color: var(--rosewater);
102
- flex: 1;
103
- display: flex;
104
- align-items: center;
105
- justify-content: center;
106
-
107
- &:nth-child(1) {
108
- animation-delay: 0.08s;
109
- }
110
-
111
- &:nth-child(2) {
112
- animation-delay: 0.16s;
113
- }
114
-
115
- &:nth-child(3) {
116
- animation-delay: 0.24s;
117
- }
118
-
119
- &:nth-child(4) {
120
- animation-delay: 0.32s;
121
- }
122
-
123
- &:nth-child(5) {
124
- animation-delay: 0.4s;
125
- }
126
-
127
- &:nth-child(6) {
128
- animation-delay: 0.48s;
129
- }
130
-
131
- &:nth-child(7) {
132
- animation-delay: 0.56s;
133
- }
134
- }
135
-
136
- /* #endregion Navbar */
137
-
138
- .theme-selector-list {
139
- width: 80%;
140
- padding: 1.5rem;
141
- }
142
-
143
- .searchbox-container {
144
- top: 15px;
145
- width: 90%;
146
- }
147
-
148
- .toc-button {
149
- top: auto;
150
- bottom: 3rem;
151
- right: 1rem;
152
- left: auto;
153
- background-color: var(--base);
154
- border: 2px solid var(--surface0);
155
- }
@@ -1,9 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg" version="1.1" width="949" height="256" viewbox="0 0 949 256">
3
- <path fill="#2366d1" d="M110.85125168440814 128L221.70250336881628 192L110.85125168440814 256L0 192Z"/>
4
- <path fill="#609dff" d="M110.85125168440814 64L221.70250336881628 128L110.85125168440814 192L0 128Z"/>
5
- <path fill="#a4c7ff" d="M110.85125168440814 0L221.70250336881628 64L110.85125168440814 128L0 64Z"/>
6
- <g transform="translate(300, 55.695), scale(0.7)" fill="#333">
7
- <path d="M 613.888 10.24 L 613.888 137.216 A 60.705 60.705 0 0 0 613.954 140.055 Q 614.553 152.847 620.602 163.316 A 50.135 50.135 0 0 0 621.696 165.12 A 51.598 51.598 0 0 0 624.562 169.185 Q 631.357 177.897 641.762 183.449 A 63.11 63.11 0 0 0 643.456 184.32 A 61.649 61.649 0 0 0 648.369 186.492 Q 659.467 190.833 672.846 191.198 A 90.809 90.809 0 0 0 675.328 191.232 A 90.563 90.563 0 0 0 678.104 191.19 Q 692.78 190.74 704.7 185.489 A 61.259 61.259 0 0 0 707.2 184.32 Q 721.152 177.408 729.088 165.12 A 49.502 49.502 0 0 0 731.322 161.299 Q 736.63 151.203 736.997 139.036 A 60.335 60.335 0 0 0 737.024 137.216 L 737.024 10.24 A 10.857 10.857 0 0 1 737.062 9.315 Q 737.313 6.384 739.2 4.608 A 7.256 7.256 0 0 1 741.925 2.981 Q 743.196 2.56 744.704 2.56 Q 746.956 2.56 748.602 3.369 A 6.472 6.472 0 0 1 750.336 4.608 Q 752.167 6.439 752.361 9.499 A 11.729 11.729 0 0 1 752.384 10.24 L 752.384 137.216 Q 752.384 156.807 743.135 172.194 A 64.077 64.077 0 0 1 742.528 173.184 Q 732.672 188.928 715.136 197.76 Q 698.912 205.931 678.635 206.543 A 109.71 109.71 0 0 1 675.328 206.592 Q 653.056 206.592 635.52 197.76 A 77.835 77.835 0 0 1 632.828 196.338 Q 618.963 188.661 610.337 176.346 A 65.778 65.778 0 0 1 608.256 173.184 Q 598.528 157.44 598.528 137.216 L 598.528 10.24 A 10.857 10.857 0 0 1 598.566 9.315 Q 598.817 6.384 600.704 4.608 A 7.256 7.256 0 0 1 603.429 2.981 Q 604.7 2.56 606.208 2.56 Q 608.46 2.56 610.106 3.369 A 6.472 6.472 0 0 1 611.84 4.608 Q 613.671 6.439 613.865 9.499 A 11.729 11.729 0 0 1 613.888 10.24 Z M 895.488 8.96 A 69.507 69.507 0 0 0 894.88 8.615 Q 879.509 0 861.184 0 A 100.005 100.005 0 0 0 858.79 0.028 Q 842.342 0.422 829.568 6.272 A 61.75 61.75 0 0 0 828.078 6.979 Q 815.456 13.172 808.32 23.936 Q 800.768 35.328 800.768 50.176 Q 800.768 69.697 815.175 83.659 A 59.222 59.222 0 0 0 817.024 85.376 A 60.63 60.63 0 0 0 819.68 87.606 Q 834.727 99.526 859.059 103.529 A 133.91 133.91 0 0 0 861.696 103.936 Q 884.116 107.004 896.419 116.925 A 41.61 41.61 0 0 1 898.432 118.656 A 43.592 43.592 0 0 1 899.28 119.455 Q 910.848 130.653 910.848 147.456 Q 910.848 167.68 898.176 178.688 A 39.281 39.281 0 0 1 893.72 182.034 Q 882.522 189.266 865.531 189.672 A 85.481 85.481 0 0 1 863.488 189.696 A 102.18 102.18 0 0 1 861.3 189.673 Q 845.567 189.336 833.654 184.112 A 55.097 55.097 0 0 1 830.592 182.656 A 56.619 56.619 0 0 1 829.066 181.842 Q 818.274 175.871 811.94 166.114 A 47.528 47.528 0 0 1 809.984 162.816 A 12.115 12.115 0 0 0 809.808 162.46 Q 807.734 158.428 803.571 158.002 A 9.942 9.942 0 0 0 802.56 157.952 A 12.194 12.194 0 0 0 802.217 157.957 Q 798.871 158.051 796.8 160 A 7.449 7.449 0 0 0 796.119 160.731 Q 794.934 162.191 794.688 164.094 A 8.003 8.003 0 0 0 794.624 165.12 A 6.218 6.218 0 0 0 794.708 166.137 Q 794.803 166.708 795.004 167.28 A 7.895 7.895 0 0 0 795.392 168.192 A 65.044 65.044 0 0 0 796.099 169.546 Q 804.091 184.419 819.055 193.615 A 74.4 74.4 0 0 0 821.76 195.2 Q 839.424 205.056 863.488 205.056 Q 879.548 205.056 892.299 199.951 A 62.036 62.036 0 0 0 896.384 198.144 Q 910.592 191.232 918.4 178.176 A 51.186 51.186 0 0 0 920.533 174.225 Q 926.208 162.515 926.208 147.456 A 72.811 72.811 0 0 0 926.178 145.354 Q 925.592 125.061 913.589 111.755 A 49.8 49.8 0 0 0 911.36 109.44 Q 896.512 94.976 864.256 89.6 A 157.882 157.882 0 0 1 862.446 89.288 Q 839.242 85.142 827.904 75.776 A 41.218 41.218 0 0 1 826.977 74.987 Q 816.128 65.472 816.128 51.712 A 49.293 49.293 0 0 1 816.128 51.578 Q 816.175 34.522 828.032 24.96 A 35.234 35.234 0 0 1 828.891 24.289 Q 840.118 15.794 859.213 15.381 A 91.194 91.194 0 0 1 861.184 15.36 A 73.044 73.044 0 0 1 862.037 15.365 Q 888.747 15.677 903.514 35.593 A 59.37 59.37 0 0 1 904.96 37.632 Q 907.22 41.022 911.076 41.419 A 10.261 10.261 0 0 0 912.128 41.472 A 14.543 14.543 0 0 0 912.743 41.459 Q 914.336 41.392 915.2 40.96 A 10.655 10.655 0 0 0 915.336 40.891 Q 916.348 40.366 917.135 39.681 A 7.607 7.607 0 0 0 918.4 38.272 Q 919.197 37.122 919.442 35.787 A 6.761 6.761 0 0 0 919.552 34.56 Q 919.552 32.256 918.528 30.464 Q 911.104 17.92 895.488 8.96 Z M 160.311 0.068 A 110.648 110.648 0 0 0 156.416 0 Q 131.565 0 110.402 11.483 A 99.343 99.343 0 0 0 106.112 13.952 A 109.009 109.009 0 0 0 104.543 14.926 Q 84.677 27.489 72.14 47.479 A 111.393 111.393 0 0 0 69.76 51.456 Q 56.32 75.008 56.32 102.4 Q 56.32 127.331 67.56 149.187 A 107.592 107.592 0 0 0 69.888 153.472 Q 83.456 177.152 106.496 191.104 A 103.444 103.444 0 0 0 108.082 192.045 Q 130.459 205.056 156.416 205.056 Q 197.376 205.056 219.392 183.04 Q 220.918 181.296 221.145 178.624 A 11.364 11.364 0 0 0 221.184 177.664 Q 221.184 174.906 219.514 172.852 A 8.614 8.614 0 0 0 218.752 172.032 A 10.501 10.501 0 0 0 218.638 171.925 Q 216.248 169.728 213.248 169.728 A 6.244 6.244 0 0 0 211.549 169.961 Q 210.906 170.141 210.291 170.463 A 7.508 7.508 0 0 0 209.408 171.008 Q 186.624 189.696 156.416 189.696 Q 135.765 189.696 117.743 180.022 A 87.237 87.237 0 0 1 114.048 177.92 Q 94.464 166.144 83.072 146.048 Q 72.704 127.758 71.772 106.604 A 95.549 95.549 0 0 1 71.68 102.4 Q 71.68 79.616 83.2 59.52 A 97.348 97.348 0 0 1 83.35 59.26 Q 94.847 39.346 114.304 27.392 A 88.056 88.056 0 0 1 117.155 25.713 Q 133.663 16.406 152.218 15.466 A 82.911 82.911 0 0 1 156.416 15.36 A 117.212 117.212 0 0 1 156.817 15.361 Q 180.184 15.441 196.829 24.848 A 63.01 63.01 0 0 1 207.872 32.768 A 23.034 23.034 0 0 0 208.339 33.158 Q 211.641 35.84 214.272 35.84 A 9.974 9.974 0 0 0 214.911 35.82 Q 217.343 35.664 219.009 34.296 A 6.873 6.873 0 0 0 219.904 33.408 A 9.994 9.994 0 0 0 220.133 33.126 Q 221.952 30.799 221.952 27.904 A 8.988 8.988 0 0 0 221.929 27.259 Q 221.724 24.398 219.648 22.784 A 110.881 110.881 0 0 0 219.543 22.697 Q 193.686 1.244 160.311 0.068 Z M 551.168 198.4 L 504.064 123.136 L 499.456 123.136 L 458.24 123.136 L 458.24 194.816 Q 458.24 198.144 456.192 200.32 Q 454.232 202.403 450.865 202.492 A 11.487 11.487 0 0 1 450.56 202.496 Q 447.452 202.496 445.349 200.598 A 7.871 7.871 0 0 1 445.056 200.32 A 7.525 7.525 0 0 1 444.182 199.275 Q 442.889 197.403 442.88 194.85 A 10.179 10.179 0 0 1 442.88 194.816 L 442.88 10.24 A 10.857 10.857 0 0 1 442.918 9.315 Q 443.169 6.384 445.056 4.608 A 7.256 7.256 0 0 1 447.781 2.981 Q 449.052 2.56 450.56 2.56 L 499.456 2.56 Q 517.888 2.56 532.48 10.24 Q 545.954 17.332 553.971 29.662 A 58.968 58.968 0 0 1 555.264 31.744 A 56.737 56.737 0 0 1 560.414 43.13 Q 563.456 52.468 563.456 63.232 Q 563.456 82.2 553.946 96.465 A 56.692 56.692 0 0 1 551.808 99.456 A 58.849 58.849 0 0 1 549.212 102.618 Q 538.621 114.637 522.253 119.779 A 72.195 72.195 0 0 1 520.448 120.32 L 564.48 190.72 Q 566.528 194.304 566.528 196.608 A 6.599 6.599 0 0 1 566.478 197.436 Q 566.253 199.208 565.035 200.395 A 5.625 5.625 0 0 1 564.352 200.96 A 6.473 6.473 0 0 1 563.547 201.443 Q 561.472 202.496 558.08 202.496 Q 555.751 202.496 554.27 201.649 A 4.911 4.911 0 0 1 553.984 201.472 Q 552.654 200.585 551.515 198.93 A 14.447 14.447 0 0 1 551.168 198.4 Z M 399.104 197.632 L 380.16 152.32 L 275.968 152.32 L 257.024 197.632 Q 255.324 202.248 250.396 202.483 A 11.297 11.297 0 0 1 249.856 202.496 A 10.258 10.258 0 0 1 248.931 202.455 Q 246.143 202.203 244.4 200.383 A 6.997 6.997 0 0 1 244.224 200.192 A 8.678 8.678 0 0 1 243.477 199.224 Q 242.176 197.264 242.176 194.816 A 7.805 7.805 0 0 1 242.282 193.521 A 7.181 7.181 0 0 1 242.944 191.488 L 320.512 7.936 A 12.196 12.196 0 0 1 320.852 7.129 Q 322.805 2.936 327.14 2.591 A 10.038 10.038 0 0 1 327.936 2.56 A 9.004 9.004 0 0 1 328.947 2.615 Q 333.29 3.106 335.36 7.936 L 413.184 191.488 Q 413.952 193.024 413.952 194.816 A 7.64 7.64 0 0 1 413.846 196.101 Q 413.457 198.383 411.648 200.192 A 9.044 9.044 0 0 1 410.871 200.886 Q 409.083 202.303 406.879 202.473 A 7.908 7.908 0 0 1 406.272 202.496 A 9.93 9.93 0 0 1 405.339 202.453 Q 400.96 202.04 399.104 197.632 Z M 15.36 10.24 L 15.36 194.816 Q 15.36 197.924 13.462 200.027 A 7.871 7.871 0 0 1 13.184 200.32 A 7.525 7.525 0 0 1 12.139 201.194 Q 10.267 202.487 7.714 202.496 A 10.179 10.179 0 0 1 7.68 202.496 Q 4.572 202.496 2.469 200.598 A 7.871 7.871 0 0 1 2.176 200.32 A 7.525 7.525 0 0 1 1.302 199.275 Q 0.009 197.403 0 194.85 A 10.179 10.179 0 0 1 0 194.816 L 0 10.24 Q 0 7.132 1.898 5.029 A 7.871 7.871 0 0 1 2.176 4.736 A 7.525 7.525 0 0 1 3.221 3.862 Q 5.093 2.569 7.646 2.56 A 10.179 10.179 0 0 1 7.68 2.56 Q 10.788 2.56 12.891 4.458 A 7.871 7.871 0 0 1 13.184 4.736 A 7.525 7.525 0 0 1 14.058 5.781 Q 15.351 7.653 15.36 10.206 A 10.179 10.179 0 0 1 15.36 10.24 Z M 281.856 138.496 L 374.272 138.496 L 327.936 27.904 L 281.856 138.496 Z M 458.24 107.776 L 499.456 107.776 Q 510.418 107.776 519.519 104.362 A 48.175 48.175 0 0 0 524.544 102.144 A 47.471 47.471 0 0 0 527.059 100.761 Q 534.75 96.219 539.878 89.183 A 43.678 43.678 0 0 0 541.824 86.272 Q 547.436 77.109 548.027 65.896 A 50.673 50.673 0 0 0 548.096 63.232 Q 548.096 50.176 541.824 39.808 Q 535.552 29.44 524.544 23.68 Q 513.536 17.92 499.456 17.92 L 458.24 17.92 L 458.24 107.776 Z" vector-effect="non-scaling-stroke"/>
8
- </g>
9
- </svg>
@@ -1,132 +0,0 @@
1
- (() => {
2
- function parseArchiveLocation(pathname, archiveDir) {
3
- const segments = String(pathname || "")
4
- .replace(/\/+$/, "")
5
- .split("/")
6
- .filter(Boolean);
7
-
8
- const index = segments.lastIndexOf(archiveDir);
9
- if (index === -1) return { year: null, month: null };
10
-
11
- const yearRaw = segments[index + 1] || null;
12
- const monthRaw = segments[index + 2] || null;
13
-
14
- const year = yearRaw && /^\d{4}$/.test(yearRaw) ? Number(yearRaw) : null;
15
- const month = monthRaw && /^\d{1,2}$/.test(monthRaw) ? Number(monthRaw) : null;
16
-
17
- if (month && (month < 1 || month > 12)) return { year, month: null };
18
- return { year, month };
19
- }
20
-
21
- function getMenuForTrigger(trigger) {
22
- const menu = trigger?.nextElementSibling;
23
- if (!menu?.classList.contains("archive-breadcrumb__menu")) return null;
24
- return menu;
25
- }
26
-
27
- function getOptions(menu) {
28
- return Array.from(menu.querySelectorAll(".archive-breadcrumb__option"));
29
- }
30
-
31
- function setSelected(menu, isSelectedFn) {
32
- const options = getOptions(menu);
33
- for (const option of options) {
34
- option.setAttribute("aria-selected", isSelectedFn(option) ? "true" : "false");
35
- }
36
- }
37
-
38
- function syncFromLocation(root) {
39
- const archiveDir = root.dataset.archiveDir || "archives";
40
- const { year, month } = parseArchiveLocation(window.location.pathname, archiveDir);
41
-
42
- const yearLabel = root.querySelector('[data-label="year"]');
43
- const monthLabel = root.querySelector('[data-label="month"]');
44
- if (yearLabel) yearLabel.textContent = year ? String(year) : "*";
45
- if (monthLabel) monthLabel.textContent = month ? String(month).padStart(2, "0") : "*";
46
-
47
- const yearTrigger = root.querySelector('.archive-breadcrumb__picker[data-picker="year"] .archive-breadcrumb__trigger');
48
- const yearMenu = yearTrigger ? getMenuForTrigger(yearTrigger) : null;
49
- if (yearMenu) {
50
- setSelected(yearMenu, (opt) => {
51
- const text = opt.textContent?.trim();
52
- if (!year) return text === "*";
53
- return text === String(year);
54
- });
55
- }
56
-
57
- const monthTrigger = root.querySelector('.archive-breadcrumb__picker[data-picker="month"] .archive-breadcrumb__trigger');
58
- const monthMenu = monthTrigger ? getMenuForTrigger(monthTrigger) : null;
59
- if (monthTrigger) monthTrigger.disabled = !year;
60
- if (monthMenu) {
61
- setSelected(monthMenu, (opt) => {
62
- const text = opt.textContent?.trim();
63
- if (!year) return text === "*";
64
- if (!month) return text === "*";
65
- return text === String(month).padStart(2, "0");
66
- });
67
- }
68
-
69
- closeAll(root);
70
- }
71
-
72
- function closeAll(root) {
73
- const triggers = root.querySelectorAll(".archive-breadcrumb__trigger");
74
- for (const trigger of triggers) {
75
- trigger.setAttribute("aria-expanded", "false");
76
- }
77
- }
78
-
79
- function openMenu(trigger) {
80
- if (trigger.disabled) return;
81
- trigger.setAttribute("aria-expanded", "true");
82
- }
83
-
84
- function toggleMenu(trigger, root) {
85
- if (trigger.disabled) return;
86
- const expanded = trigger.getAttribute("aria-expanded") === "true";
87
- closeAll(root);
88
- if (!expanded) {
89
- openMenu(trigger);
90
- }
91
- }
92
-
93
- function navigateToOption(option) {
94
- const href = option?.dataset?.href;
95
- if (!href) return;
96
- window.location.assign(href);
97
- }
98
-
99
- function init(root) {
100
- root.addEventListener("click", (e) => {
101
- const target = e.target.closest?.(".archive-breadcrumb__option, .archive-breadcrumb__trigger");
102
- if (!target) {
103
- closeAll(root);
104
- return;
105
- }
106
-
107
- if (target.classList.contains("archive-breadcrumb__option")) {
108
- e.preventDefault();
109
- navigateToOption(target);
110
- return;
111
- }
112
-
113
- if (target.classList.contains("archive-breadcrumb__trigger")) {
114
- e.preventDefault();
115
- toggleMenu(target, root);
116
- }
117
- });
118
-
119
- syncFromLocation(root);
120
- }
121
-
122
- function initAll() {
123
- const roots = document.querySelectorAll("[data-archive-breadcrumb]");
124
- for (const root of roots) {
125
- if (root._gnixArchiveBreadcrumbInited) continue;
126
- root._gnixArchiveBreadcrumbInited = true;
127
- init(root);
128
- }
129
- }
130
-
131
- initAll();
132
- })();
@@ -1,6 +0,0 @@
1
- .cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}
2
- .cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
3
- .cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
4
- @media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}
5
- .cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
6
- .cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}
@@ -1 +0,0 @@
1
- !function(e){if(!e.hasInitialised){var t={escapeRegExp:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},hasClass:function(e,t){var i=" ";return 1===e.nodeType&&(i+e.className+i).replace(/[\n\t]/g,i).indexOf(i+t+i)>=0},addClass:function(e,t){e.className+=" "+t},removeClass:function(e,t){var i=new RegExp("\\b"+this.escapeRegExp(t)+"\\b");e.className=e.className.replace(i,"")},interpolateString:function(e,t){return e.replace(/{{([a-z][a-z0-9\-_]*)}}/gi,function(e){return t(arguments[1])||""})},getCookie:function(e){var t=("; "+document.cookie).split("; "+e+"=");return t.length<2?void 0:t.pop().split(";").shift()},setCookie:function(e,t,i,n,o,s){var r=new Date;r.setHours(r.getHours()+24*(i||365));var a=[e+"="+t,"expires="+r.toUTCString(),"path="+(o||"/")];n&&a.push("domain="+n),s&&a.push("secure"),document.cookie=a.join(";")},deepExtend:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(i in e&&this.isPlainObject(e[i])&&this.isPlainObject(t[i])?this.deepExtend(e[i],t[i]):e[i]=t[i]);return e},throttle:function(e,t){var i=!1;return function(){i||(e.apply(this,arguments),i=!0,setTimeout(function(){i=!1},t))}},hash:function(e){var t,i,n=0;if(0===e.length)return n;for(t=0,i=e.length;t<i;++t)n=(n<<5)-n+e.charCodeAt(t),n|=0;return n},normaliseHex:function(e){return"#"==e[0]&&(e=e.substr(1)),3==e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e},getContrast:function(e){return e=this.normaliseHex(e),(299*parseInt(e.substr(0,2),16)+587*parseInt(e.substr(2,2),16)+114*parseInt(e.substr(4,2),16))/1e3>=128?"#000":"#fff"},getLuminance:function(e){var t=parseInt(this.normaliseHex(e),16),i=38+(t>>16),n=38+(t>>8&255),o=38+(255&t);return"#"+(16777216+65536*(i<255?i<1?0:i:255)+256*(n<255?n<1?0:n:255)+(o<255?o<1?0:o:255)).toString(16).slice(1)},isMobile:function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},isPlainObject:function(e){return"object"==typeof e&&null!==e&&e.constructor==Object},traverseDOMPath:function(e,i){return e&&e.parentNode?t.hasClass(e,i)?e:this.traverseDOMPath(e.parentNode,i):null}};e.status={deny:"deny",allow:"allow",dismiss:"dismiss"},e.transitionEnd=function(){var e=document.createElement("div"),t={t:"transitionend",OT:"oTransitionEnd",msT:"MSTransitionEnd",MozT:"transitionend",WebkitT:"webkitTransitionEnd"};for(var i in t)if(t.hasOwnProperty(i)&&void 0!==e.style[i+"ransition"])return t[i];return""}(),e.hasTransition=!!e.transitionEnd;var i=Object.keys(e.status).map(t.escapeRegExp);e.customStyles={},e.Popup=function(){var n={enabled:!0,container:null,cookie:{name:"cookieconsent_status",path:"/",domain:"",expiryDays:365,secure:!1},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(e){},onStatusChange:function(e,t){},onRevokeChoice:function(){},onNoCookieLaw:function(e,t){},content:{header:"Cookies used on the website!",message:"This website uses cookies to ensure you get the best experience on our website.",dismiss:"Got it!",allow:"Allow cookies",deny:"Decline",link:"Learn more",href:"https://www.cookiesandyou.com",close:"&#x274c;",target:"_blank",policy:"Cookie Policy"},elements:{header:'<span class="cc-header">{{header}}</span>&nbsp;',message:'<span id="cookieconsent:desc" class="cc-message">{{message}}</span>',messagelink:'<span id="cookieconsent:desc" class="cc-message">{{message}} <a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a></span>',dismiss:'<a aria-label="dismiss cookie message" role=button tabindex="0" class="cc-btn cc-dismiss">{{dismiss}}</a>',allow:'<a aria-label="allow cookies" role=button tabindex="0" class="cc-btn cc-allow">{{allow}}</a>',deny:'<a aria-label="deny cookies" role=button tabindex="0" class="cc-btn cc-deny">{{deny}}</a>',link:'<a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a>',close:'<span aria-label="dismiss cookie message" role=button tabindex="0" class="cc-close">{{close}}</span>'},window:'<div role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="cookieconsent:desc" class="cc-window {{classes}}">\x3c!--googleoff: all--\x3e{{children}}\x3c!--googleon: all--\x3e</div>',revokeBtn:'<div class="cc-revoke {{classes}}">{{policy}}</div>',compliance:{info:'<div class="cc-compliance">{{dismiss}}</div>',"opt-in":'<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>',"opt-out":'<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>'},type:"info",layouts:{basic:"{{messagelink}}{{compliance}}","basic-close":"{{messagelink}}{{compliance}}{{close}}","basic-header":"{{header}}{{message}}{{link}}{{compliance}}"},layout:"basic",position:"bottom",theme:"block",static:!1,palette:null,revokable:!1,animateRevokable:!0,showLink:!0,dismissOnScroll:!1,dismissOnTimeout:!1,dismissOnWindowClick:!1,ignoreClicksFrom:["cc-revoke","cc-btn"],autoOpen:!0,autoAttach:!0,whitelistPage:[],blacklistPage:[],overrideHTML:null};function o(){this.initialise.apply(this,arguments)}function s(e){this.openingTimeout=null,t.removeClass(e,"cc-invisible")}function r(t){t.style.display="none",t.removeEventListener(e.transitionEnd,this.afterTransition),this.afterTransition=null}function a(){var e=this.options.position.split("-"),t=[];return e.forEach(function(e){t.push("cc-"+e)}),t}function c(n){var o=this.options,s=document.createElement("div"),r=o.container&&1===o.container.nodeType?o.container:document.body;s.innerHTML=n;var a=s.children[0];return a.style.display="none",t.hasClass(a,"cc-window")&&e.hasTransition&&t.addClass(a,"cc-invisible"),this.onButtonClick=function(n){var o=t.traverseDOMPath(n.target,"cc-btn")||n.target;if(t.hasClass(o,"cc-btn")){var s=o.className.match(new RegExp("\\bcc-("+i.join("|")+")\\b")),r=s&&s[1]||!1;r&&(this.setStatus(r),this.close(!0))}t.hasClass(o,"cc-close")&&(this.setStatus(e.status.dismiss),this.close(!0));t.hasClass(o,"cc-revoke")&&this.revokeChoice()}.bind(this),a.addEventListener("click",this.onButtonClick),o.autoAttach&&(r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a)),a}function l(e){return"000000"==(e=t.normaliseHex(e))?"#222":t.getLuminance(e)}function u(e,t){for(var i=0,n=e.length;i<n;++i){var o=e[i];if(o instanceof RegExp&&o.test(t)||"string"==typeof o&&o.length&&o===t)return!0}return!1}return o.prototype.initialise=function(i){this.options&&this.destroy(),t.deepExtend(this.options={},n),t.isPlainObject(i)&&t.deepExtend(this.options,i),function(){var t=this.options.onInitialise.bind(this);if(!window.navigator.cookieEnabled)return t(e.status.deny),!0;if(window.CookiesOK||window.navigator.CookiesOK)return t(e.status.allow),!0;var i=Object.keys(e.status),n=this.getStatus(),o=i.indexOf(n)>=0;o&&t(n);return o}.call(this)&&(this.options.enabled=!1),u(this.options.blacklistPage,location.pathname)&&(this.options.enabled=!1),u(this.options.whitelistPage,location.pathname)&&(this.options.enabled=!0);var o=this.options.window.replace("{{classes}}",function(){var i=this.options,n="top"==i.position||"bottom"==i.position?"banner":"floating";t.isMobile()&&(n="floating");var o=["cc-"+n,"cc-type-"+i.type,"cc-theme-"+i.theme];i.static&&o.push("cc-static");o.push.apply(o,a.call(this));(function(i){var n=t.hash(JSON.stringify(i)),o="cc-color-override-"+n,s=t.isPlainObject(i);this.customStyleSelector=s?o:null,s&&function(i,n,o){if(e.customStyles[i])return void++e.customStyles[i].references;var s={},r=n.popup,a=n.button,c=n.highlight;r&&(r.text=r.text?r.text:t.getContrast(r.background),r.link=r.link?r.link:r.text,s[o+".cc-window"]=["color: "+r.text,"background-color: "+r.background],s[o+".cc-revoke"]=["color: "+r.text,"background-color: "+r.background],s[o+" .cc-link,"+o+" .cc-link:active,"+o+" .cc-link:visited"]=["color: "+r.link],a&&(a.text=a.text?a.text:t.getContrast(a.background),a.border=a.border?a.border:"transparent",s[o+" .cc-btn"]=["color: "+a.text,"border-color: "+a.border,"background-color: "+a.background],a.padding&&s[o+" .cc-btn"].push("padding: "+a.padding),"transparent"!=a.background&&(s[o+" .cc-btn:hover, "+o+" .cc-btn:focus"]=["background-color: "+(a.hover||l(a.background))]),c?(c.text=c.text?c.text:t.getContrast(c.background),c.border=c.border?c.border:"transparent",s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+c.text,"border-color: "+c.border,"background-color: "+c.background]):s[o+" .cc-highlight .cc-btn:first-child"]=["color: "+r.text]));var u=document.createElement("style");document.head.appendChild(u),e.customStyles[i]={references:1,element:u.sheet};var h=-1;for(var p in s)s.hasOwnProperty(p)&&u.sheet.insertRule(p+"{"+s[p].join(";")+"}",++h)}(n,i,"."+o);return s}).call(this,this.options.palette);this.customStyleSelector&&o.push(this.customStyleSelector);return o}.call(this).join(" ")).replace("{{children}}",function(){var e={},i=this.options;i.showLink||(i.elements.link="",i.elements.messagelink=i.elements.message);Object.keys(i.elements).forEach(function(n){e[n]=t.interpolateString(i.elements[n],function(e){var t=i.content[e];return e&&"string"==typeof t&&t.length?t:""})});var n=i.compliance[i.type];n||(n=i.compliance.info);e.compliance=t.interpolateString(n,function(t){return e[t]});var o=i.layouts[i.layout];o||(o=i.layouts.basic);return t.interpolateString(o,function(t){return e[t]})}.call(this)),s=this.options.overrideHTML;if("string"==typeof s&&s.length&&(o=s),this.options.static){var r=c.call(this,'<div class="cc-grower">'+o+"</div>");r.style.display="",this.element=r.firstChild,this.element.style.display="none",t.addClass(this.element,"cc-invisible")}else this.element=c.call(this,o);(function(){var i=this.setStatus.bind(this),n=this.close.bind(this),o=this.options.dismissOnTimeout;"number"==typeof o&&o>=0&&(this.dismissTimeout=window.setTimeout(function(){i(e.status.dismiss),n(!0)},Math.floor(o)));var s=this.options.dismissOnScroll;if("number"==typeof s&&s>=0){var r=function(t){window.pageYOffset>Math.floor(s)&&(i(e.status.dismiss),n(!0),window.removeEventListener("scroll",r),this.onWindowScroll=null)};this.options.enabled&&(this.onWindowScroll=r,window.addEventListener("scroll",r))}var a=this.options.dismissOnWindowClick,c=this.options.ignoreClicksFrom;if(a){var l=function(o){for(var s=!1,r=o.path.length,a=c.length,u=0;u<r;u++)if(!s)for(var h=0;h<a;h++)s||(s=t.hasClass(o.path[u],c[h]));s||(i(e.status.dismiss),n(!0),window.removeEventListener("click",l),window.removeEventListener("touchend",l),this.onWindowClick=null)}.bind(this);this.options.enabled&&(this.onWindowClick=l,window.addEventListener("click",l),window.addEventListener("touchend",l))}}).call(this),function(){"info"!=this.options.type&&(this.options.revokable=!0);t.isMobile()&&(this.options.animateRevokable=!1);if(this.options.revokable){var e=a.call(this);this.options.animateRevokable&&e.push("cc-animate"),this.customStyleSelector&&e.push(this.customStyleSelector);var i=this.options.revokeBtn.replace("{{classes}}",e.join(" ")).replace("{{policy}}",this.options.content.policy);this.revokeBtn=c.call(this,i);var n=this.revokeBtn;if(this.options.animateRevokable){var o=t.throttle(function(e){var i=!1,o=window.innerHeight-20;t.hasClass(n,"cc-top")&&e.clientY<20&&(i=!0),t.hasClass(n,"cc-bottom")&&e.clientY>o&&(i=!0),i?t.hasClass(n,"cc-active")||t.addClass(n,"cc-active"):t.hasClass(n,"cc-active")&&t.removeClass(n,"cc-active")},200);this.onMouseMove=o,window.addEventListener("mousemove",o)}}}.call(this),this.options.autoOpen&&this.autoOpen()},o.prototype.destroy=function(){this.onButtonClick&&this.element&&(this.element.removeEventListener("click",this.onButtonClick),this.onButtonClick=null),this.dismissTimeout&&(clearTimeout(this.dismissTimeout),this.dismissTimeout=null),this.onWindowScroll&&(window.removeEventListener("scroll",this.onWindowScroll),this.onWindowScroll=null),this.onWindowClick&&(window.removeEventListener("click",this.onWindowClick),this.onWindowClick=null),this.onMouseMove&&(window.removeEventListener("mousemove",this.onMouseMove),this.onMouseMove=null),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null,this.revokeBtn&&this.revokeBtn.parentNode&&this.revokeBtn.parentNode.removeChild(this.revokeBtn),this.revokeBtn=null,function(i){if(t.isPlainObject(i)){var n=t.hash(JSON.stringify(i)),o=e.customStyles[n];if(o&&!--o.references){var s=o.element.ownerNode;s&&s.parentNode&&s.parentNode.removeChild(s),e.customStyles[n]=null}}}(this.options.palette),this.options=null},o.prototype.open=function(t){if(this.element)return this.isOpen()||(e.hasTransition?this.fadeIn():this.element.style.display="",this.options.revokable&&this.toggleRevokeButton(),this.options.onPopupOpen.call(this)),this},o.prototype.close=function(t){if(this.element)return this.isOpen()&&(e.hasTransition?this.fadeOut():this.element.style.display="none",t&&this.options.revokable&&this.toggleRevokeButton(!0),this.options.onPopupClose.call(this)),this},o.prototype.fadeIn=function(){var i=this.element;if(e.hasTransition&&i&&(this.afterTransition&&r.call(this,i),t.hasClass(i,"cc-invisible"))){if(i.style.display="",this.options.static){var n=this.element.clientHeight;this.element.parentNode.style.maxHeight=n+"px"}this.openingTimeout=setTimeout(s.bind(this,i),20)}},o.prototype.fadeOut=function(){var i=this.element;e.hasTransition&&i&&(this.openingTimeout&&(clearTimeout(this.openingTimeout),s.bind(this,i)),t.hasClass(i,"cc-invisible")||(this.options.static&&(this.element.parentNode.style.maxHeight=""),this.afterTransition=r.bind(this,i),i.addEventListener(e.transitionEnd,this.afterTransition),t.addClass(i,"cc-invisible")))},o.prototype.isOpen=function(){return this.element&&""==this.element.style.display&&(!e.hasTransition||!t.hasClass(this.element,"cc-invisible"))},o.prototype.toggleRevokeButton=function(e){this.revokeBtn&&(this.revokeBtn.style.display=e?"":"none")},o.prototype.revokeChoice=function(e){this.options.enabled=!0,this.clearStatus(),this.options.onRevokeChoice.call(this),e||this.autoOpen()},o.prototype.hasAnswered=function(t){return Object.keys(e.status).indexOf(this.getStatus())>=0},o.prototype.hasConsented=function(t){var i=this.getStatus();return i==e.status.allow||i==e.status.dismiss},o.prototype.autoOpen=function(e){!this.hasAnswered()&&this.options.enabled?this.open():this.hasAnswered()&&this.options.revokable&&this.toggleRevokeButton(!0)},o.prototype.setStatus=function(i){var n=this.options.cookie,o=t.getCookie(n.name),s=Object.keys(e.status).indexOf(o)>=0;Object.keys(e.status).indexOf(i)>=0?(t.setCookie(n.name,i,n.expiryDays,n.domain,n.path,n.secure),this.options.onStatusChange.call(this,i,s)):this.clearStatus()},o.prototype.getStatus=function(){return t.getCookie(this.options.cookie.name)},o.prototype.clearStatus=function(){var e=this.options.cookie;t.setCookie(e.name,"",-1,e.domain,e.path)},o}(),e.Location=function(){var e={timeout:5e3,services:["ipinfo"],serviceDefinitions:{ipinfo:function(){return{url:"//ipinfo.io",headers:["Accept: application/json"],callback:function(e,t){try{var i=JSON.parse(t);return i.error?s(i):{code:i.country}}catch(e){return s({error:"Invalid response ("+e+")"})}}}},ipinfodb:function(e){return{url:"//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}",isScript:!0,callback:function(e,t){try{var i=JSON.parse(t);return"ERROR"==i.statusCode?s({error:i.statusMessage}):{code:i.countryCode}}catch(e){return s({error:"Invalid response ("+e+")"})}}}},maxmind:function(){return{url:"//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js",isScript:!0,callback:function(e){window.geoip2?geoip2.country(function(t){try{e({code:t.country.iso_code})}catch(t){e(s(t))}},function(t){e(s(t))}):e(new Error("Unexpected response format. The downloaded script should have exported `geoip2` to the global scope"))}}}}};function i(i){t.deepExtend(this.options={},e),t.isPlainObject(i)&&t.deepExtend(this.options,i),this.currentServiceIndex=-1}function n(e,t,i){var n,o=document.createElement("script");o.type="text/"+(e.type||"javascript"),o.src=e.src||e,o.async=!1,o.onreadystatechange=o.onload=function(){var e=o.readyState;clearTimeout(n),t.done||e&&!/loaded|complete/.test(e)||(t.done=!0,t(),o.onreadystatechange=o.onload=null)},document.body.appendChild(o),n=setTimeout(function(){t.done=!0,t(),o.onreadystatechange=o.onload=null},i)}function o(e,t,i,n,o){var s=new(window.XMLHttpRequest||window.ActiveXObject)("MSXML2.XMLHTTP.3.0");if(s.open(n?"POST":"GET",e,1),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),Array.isArray(o))for(var r=0,a=o.length;r<a;++r){var c=o[r].split(":",2);s.setRequestHeader(c[0].replace(/^\s+|\s+$/g,""),c[1].replace(/^\s+|\s+$/g,""))}"function"==typeof t&&(s.onreadystatechange=function(){s.readyState>3&&t(s)}),s.send(n)}function s(e){return new Error("Error ["+(e.code||"UNKNOWN")+"]: "+e.error)}return i.prototype.getNextService=function(){var e;do{e=this.getServiceByIdx(++this.currentServiceIndex)}while(this.currentServiceIndex<this.options.services.length&&!e);return e},i.prototype.getServiceByIdx=function(e){var i=this.options.services[e];if("function"==typeof i){var n=i();return n.name&&t.deepExtend(n,this.options.serviceDefinitions[n.name](n)),n}return"string"==typeof i?this.options.serviceDefinitions[i]():t.isPlainObject(i)?this.options.serviceDefinitions[i.name](i):null},i.prototype.locate=function(e,t){var i=this.getNextService();i?(this.callbackComplete=e,this.callbackError=t,this.runService(i,this.runNextServiceOnError.bind(this))):t(new Error("No services to run"))},i.prototype.setupUrl=function(e){var t=this.getCurrentServiceOpts();return e.url.replace(/\{(.*?)\}/g,function(i,n){if("callback"===n){var o="callback"+Date.now();return window[o]=function(t){e.__JSONP_DATA=JSON.stringify(t)},o}if(n in t.interpolateUrl)return t.interpolateUrl[n]})},i.prototype.runService=function(e,t){var i=this;e&&e.url&&e.callback&&(e.isScript?n:o)(this.setupUrl(e),function(n){var o=n?n.responseText:"";e.__JSONP_DATA&&(o=e.__JSONP_DATA,delete e.__JSONP_DATA),i.runServiceCallback.call(i,t,e,o)},this.options.timeout,e.data,e.headers)},i.prototype.runServiceCallback=function(e,t,i){var n=this,o=t.callback(function(t){o||n.onServiceResult.call(n,e,t)},i);o&&this.onServiceResult.call(this,e,o)},i.prototype.onServiceResult=function(e,t){t instanceof Error||t&&t.error?e.call(this,t,null):e.call(this,null,t)},i.prototype.runNextServiceOnError=function(e,t){if(e){this.logError(e);var i=this.getNextService();i?this.runService(i,this.runNextServiceOnError.bind(this)):this.completeService.call(this,this.callbackError,new Error("All services failed"))}else this.completeService.call(this,this.callbackComplete,t)},i.prototype.getCurrentServiceOpts=function(){var e=this.options.services[this.currentServiceIndex];return"string"==typeof e?{name:e}:"function"==typeof e?e():t.isPlainObject(e)?e:{}},i.prototype.completeService=function(e,t){this.currentServiceIndex=-1,e&&e(t)},i.prototype.logError=function(e){var t=this.currentServiceIndex,i=this.getServiceByIdx(t);console.warn("The service["+t+"] ("+i.url+") responded with the following error",e)},i}(),e.Law=function(){var e={regionalLaw:!0,hasLaw:["AT","BE","BG","HR","CZ","CY","DK","EE","FI","FR","DE","EL","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","SK","ES","SE","GB","UK","GR","EU"],revokable:["HR","CY","DK","EE","FR","DE","LV","LT","NL","PT","ES"],explicitAction:["HR","IT","ES"]};function i(e){this.initialise.apply(this,arguments)}return i.prototype.initialise=function(i){t.deepExtend(this.options={},e),t.isPlainObject(i)&&t.deepExtend(this.options,i)},i.prototype.get=function(e){var t=this.options;return{hasLaw:t.hasLaw.indexOf(e)>=0,revokable:t.revokable.indexOf(e)>=0,explicitAction:t.explicitAction.indexOf(e)>=0}},i.prototype.applyLaw=function(e,t){var i=this.get(t);return i.hasLaw||(e.enabled=!1,"function"==typeof e.onNoCookieLaw&&e.onNoCookieLaw(t,i)),this.options.regionalLaw&&(i.revokable&&(e.revokable=!0),i.explicitAction&&(e.dismissOnScroll=!1,e.dismissOnTimeout=!1)),e},i}(),e.initialise=function(i,n,o){var s=new e.Law(i.law);n||(n=function(){}),o||(o=function(){});var r=Object.keys(e.status),a=t.getCookie("cookieconsent_status");r.indexOf(a)>=0?n(new e.Popup(i)):e.getCountryCode(i,function(t){delete i.law,delete i.location,t.code&&(i=s.applyLaw(i,t.code)),n(new e.Popup(i))},function(t){delete i.law,delete i.location,o(t,new e.Popup(i))})},e.getCountryCode=function(t,i,n){t.law&&t.law.countryCode?i({code:t.law.countryCode}):t.location?new e.Location(t.location).locate(function(e){i(e||{})},n):i({})},e.utils=t,e.hasInitialised=!0,window.cookieconsent=e}}(window.cookieconsent||{});
@@ -1 +0,0 @@
1
- var y=new WeakMap;function k(f,S,z,G){if(!f&&!y.has(S))return!1;let J=y.get(S)??new WeakMap;y.set(S,J);let K=J.get(z)??new Set;J.set(z,K);let Y=K.has(G);if(f)K.add(G);else K.delete(G);return Y&&f}function Gf(f,S){let z=f.target;if(z instanceof Text)z=z.parentElement;if(z instanceof Element&&f.currentTarget instanceof Node){let G=z.closest(S);if(G&&f.currentTarget.contains(G))return G}}function Jf(f,S,z,G={}){let{signal:J,base:K=document}=G;if(J?.aborted)return;let{once:Y,...Z}=G,X=K instanceof Document?K.documentElement:K,Q=Boolean(typeof G==="object"?G.capture:G),q=(D)=>{let W=Gf(D,String(f));if(W){let V=Object.assign(D,{delegateTarget:W});if(z.call(X,V),Y)X.removeEventListener(S,q,Z),k(!1,X,z,B)}},B=JSON.stringify({selector:f,type:S,capture:Q});if(!k(!0,X,z,B))X.addEventListener(S,q,Z);J?.addEventListener("abort",()=>{k(!1,X,z,B)})}var w=Jf;function $(){return $=Object.assign?Object.assign.bind():function(f){for(var S=1;S<arguments.length;S++){var z=arguments[S];for(var G in z)({}).hasOwnProperty.call(z,G)&&(f[G]=z[G])}return f},$.apply(null,arguments)}var o=(f,S)=>String(f).toLowerCase().replace(/[\s/_.]+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+|-+$/g,"")||S||"",T=({hash:f}={})=>window.location.pathname+window.location.search+(f?window.location.hash:""),Kf=(f,S={})=>{let z=$({url:f=f||T({hash:!0}),random:Math.random(),source:"swup"},S);window.history.pushState(z,"",f)},O=(f=null,S={})=>{f=f||T({hash:!0});let z=$({},window.history.state||{},{url:f,random:Math.random(),source:"swup"},S);window.history.replaceState(z,"",f)},Qf=(f,S,z,G)=>{let J=new AbortController;return G=$({},G,{signal:J.signal}),w(f,S,z,G),{destroy:()=>J.abort()}};class F extends URL{constructor(f,S=document.baseURI){super(f.toString(),S),Object.setPrototypeOf(this,F.prototype)}get url(){return this.pathname+this.search}static fromElement(f){let S=f.getAttribute("href")||f.getAttribute("xlink:href")||"";return new F(S)}static fromUrl(f){return new F(f)}}class _ extends Error{constructor(f,S){super(f),this.url=void 0,this.status=void 0,this.aborted=void 0,this.timedOut=void 0,this.name="FetchError",this.url=S.url,this.status=S.status,this.aborted=S.aborted||!1,this.timedOut=S.timedOut||!1}}async function Xf(f,S={}){var z;f=F.fromUrl(f).url;let{visit:G=this.visit}=S,J=$({},this.options.requestHeaders,S.headers),K=(z=S.timeout)!=null?z:this.options.timeout,Y=new AbortController,{signal:Z}=Y;S=$({},S,{headers:J,signal:Z});let X,Q=!1,q=null;K&&K>0&&(q=setTimeout(()=>{Q=!0,Y.abort("timeout")},K));try{X=await this.hooks.call("fetch:request",G,{url:f,options:S},(P,{url:C,options:N})=>fetch(C,N)),q&&clearTimeout(q)}catch(P){if(Q)throw this.hooks.call("fetch:timeout",G,{url:f}),new _(`Request timed out: ${f}`,{url:f,timedOut:Q});if((P==null?void 0:P.name)==="AbortError"||Z.aborted)throw new _(`Request aborted: ${f}`,{url:f,aborted:!0});throw P}let{status:B,url:I}=X,D=await X.text();if(B===500)throw this.hooks.call("fetch:error",G,{status:B,response:X,url:I}),new _(`Server error: ${I}`,{status:B,url:I});if(!D)throw new _(`Empty response: ${I}`,{status:B,url:I});let{url:W}=F.fromUrl(I),V={url:W,html:D};return!G.cache.write||S.method&&S.method!=="GET"||f!==W||this.cache.set(V.url,V),V}class l{constructor(f){this.swup=void 0,this.pages=new Map,this.swup=f}get size(){return this.pages.size}get all(){let f=new Map;return this.pages.forEach((S,z)=>{f.set(z,$({},S))}),f}has(f){return this.pages.has(this.resolve(f))}get(f){let S=this.pages.get(this.resolve(f));return S?$({},S):S}set(f,S){S=$({},S,{url:f=this.resolve(f)}),this.pages.set(f,S),this.swup.hooks.callSync("cache:set",void 0,{page:S})}update(f,S){f=this.resolve(f);let z=$({},this.get(f),S,{url:f});this.pages.set(f,z)}delete(f){this.pages.delete(this.resolve(f))}clear(){this.pages.clear(),this.swup.hooks.callSync("cache:clear",void 0,void 0)}prune(f){this.pages.forEach((S,z)=>{f(z,S)&&this.delete(z)})}resolve(f){let{url:S}=F.fromUrl(f);return this.swup.resolveUrl(S)}}var h=(f,S=document)=>S.querySelector(f),m=(f,S=document)=>Array.from(S.querySelectorAll(f)),r=()=>new Promise((f)=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{f()})})});function i(f){return!!f&&(typeof f=="object"||typeof f=="function")&&typeof f.then=="function"}function Yf(f,S=[]){return new Promise((z,G)=>{let J=f(...S);i(J)?J.then(z,G):z(J)})}function p(f,S){let z=f==null?void 0:f.closest(`[${S}]`);return z!=null&&z.hasAttribute(S)?(z==null?void 0:z.getAttribute(S))||!0:void 0}class n{constructor(f){this.swup=void 0,this.swupClasses=["to-","is-changing","is-rendering","is-popstate","is-animating","is-leaving"],this.swup=f}get selectors(){let{scope:f}=this.swup.visit.animation;return f==="containers"?this.swup.visit.containers:f==="html"?["html"]:Array.isArray(f)?f:[]}get selector(){return this.selectors.join(",")}get targets(){return this.selector.trim()?m(this.selector):[]}add(...f){this.targets.forEach((S)=>S.classList.add(...f))}remove(...f){this.targets.forEach((S)=>S.classList.remove(...f))}clear(){this.targets.forEach((f)=>{let S=f.className.split(" ").filter((z)=>this.isSwupClass(z));f.classList.remove(...S)})}isSwupClass(f){return this.swupClasses.some((S)=>f.startsWith(S))}}class v{constructor(f,S){this.id=void 0,this.state=void 0,this.from=void 0,this.to=void 0,this.containers=void 0,this.animation=void 0,this.trigger=void 0,this.cache=void 0,this.history=void 0,this.scroll=void 0,this.meta=void 0;let{to:z,from:G,hash:J,el:K,event:Y}=S;this.id=Math.random(),this.state=1,this.from={url:G!=null?G:f.location.url,hash:f.location.hash},this.to={url:z,hash:J},this.containers=f.options.containers,this.animation={animate:!0,wait:!1,name:void 0,native:f.options.native,scope:f.options.animationScope,selector:f.options.animationSelector},this.trigger={el:K,event:Y},this.cache={read:f.options.cache,write:f.options.cache},this.history={action:"push",popstate:!1,direction:void 0},this.scroll={reset:!0,target:void 0},this.meta={}}advance(f){this.state<f&&(this.state=f)}abort(){this.state=8}get done(){return this.state>=7}}function Zf(f){return new v(this,f)}class s{constructor(f){this.swup=void 0,this.registry=new Map,this.hooks=["animation:out:start","animation:out:await","animation:out:end","animation:in:start","animation:in:await","animation:in:end","animation:skip","cache:clear","cache:set","content:replace","content:scroll","enable","disable","fetch:request","fetch:error","fetch:timeout","history:popstate","link:click","link:self","link:anchor","link:newtab","page:load","page:view","scroll:top","scroll:anchor","visit:start","visit:transition","visit:abort","visit:end"],this.swup=f,this.init()}init(){this.hooks.forEach((f)=>this.create(f))}create(f){this.registry.has(f)||this.registry.set(f,new Map)}exists(f){return this.registry.has(f)}get(f){let S=this.registry.get(f);if(S)return S;console.error(`Unknown hook '${f}'`)}clear(){this.registry.forEach((f)=>f.clear())}on(f,S,z={}){let G=this.get(f);if(!G)return console.warn(`Hook '${f}' not found.`),()=>{};let J=$({},z,{id:G.size+1,hook:f,handler:S});return G.set(S,J),()=>this.off(f,S)}before(f,S,z={}){return this.on(f,S,$({},z,{before:!0}))}replace(f,S,z={}){return this.on(f,S,$({},z,{replace:!0}))}once(f,S,z={}){return this.on(f,S,$({},z,{once:!0}))}off(f,S){let z=this.get(f);z&&S?z.delete(S)||console.warn(`Handler for hook '${f}' not found.`):z&&z.clear()}async call(f,S,z,G){let[J,K,Y]=this.parseCallArgs(f,S,z,G),{before:Z,handler:X,after:Q}=this.getHandlers(f,Y);await this.run(Z,J,K);let[q]=await this.run(X,J,K,!0);return await this.run(Q,J,K),this.dispatchDomEvent(f,J,K),q}callSync(f,S,z,G){let[J,K,Y]=this.parseCallArgs(f,S,z,G),{before:Z,handler:X,after:Q}=this.getHandlers(f,Y);this.runSync(Z,J,K);let[q]=this.runSync(X,J,K,!0);return this.runSync(Q,J,K),this.dispatchDomEvent(f,J,K),q}parseCallArgs(f,S,z,G){return S instanceof v||typeof S!="object"&&typeof z!="function"?[S,z,G]:[void 0,S,z]}async run(f,S=this.swup.visit,z,G=!1){let J=[];for(let{hook:K,handler:Y,defaultHandler:Z,once:X}of f)if(S==null||!S.done){X&&this.off(K,Y);try{let Q=await Yf(Y,[S,z,Z]);J.push(Q)}catch(Q){if(G)throw Q;console.error(`Error in hook '${K}':`,Q)}}return J}runSync(f,S=this.swup.visit,z,G=!1){let J=[];for(let{hook:K,handler:Y,defaultHandler:Z,once:X}of f)if(S==null||!S.done){X&&this.off(K,Y);try{let Q=Y(S,z,Z);J.push(Q),i(Q)&&console.warn(`Swup will not await Promises in handler for synchronous hook '${K}'.`)}catch(Q){if(G)throw Q;console.error(`Error in hook '${K}':`,Q)}}return J}getHandlers(f,S){let z=this.get(f);if(!z)return{found:!1,before:[],handler:[],after:[],replaced:!1};let G=Array.from(z.values()),J=this.sortRegistrations,K=G.filter(({before:q,replace:B})=>q&&!B).sort(J),Y=G.filter(({replace:q})=>q).filter((q)=>!0).sort(J),Z=G.filter(({before:q,replace:B})=>!q&&!B).sort(J),X=Y.length>0,Q=[];if(S&&(Q=[{id:0,hook:f,handler:S}],X)){let q=Y.length-1,{handler:B,once:I}=Y[q],D=(W)=>{let V=Y[W-1];return V?(P,C)=>V.handler(P,C,D(W-1)):S};Q=[{id:0,hook:f,once:I,handler:B,defaultHandler:D(q)}]}return{found:!0,before:K,handler:Q,after:Z,replaced:X}}sortRegistrations(f,S){var z,G;return((z=f.priority)!=null?z:0)-((G=S.priority)!=null?G:0)||f.id-S.id||0}dispatchDomEvent(f,S,z){if(S!=null&&S.done)return;let G={hook:f,args:z,visit:S||this.swup.visit};document.dispatchEvent(new CustomEvent("swup:any",{detail:G,bubbles:!0})),document.dispatchEvent(new CustomEvent(`swup:${f}`,{detail:G,bubbles:!0}))}parseName(f){let[S,...z]=f.split(".");return[S,z.reduce((G,J)=>$({},G,{[J]:!0}),{})]}}var qf=(f)=>{if(f&&f.charAt(0)==="#"&&(f=f.substring(1)),!f)return null;let S=decodeURIComponent(f),z=document.getElementById(f)||document.getElementById(S)||h(`a[name='${CSS.escape(f)}']`)||h(`a[name='${CSS.escape(S)}']`);return z||f!=="top"||(z=document.body),z},M="transition",E="animation";async function Bf({selector:f,elements:S}){if(f===!1&&!S)return;let z=[];if(S)z=Array.from(S);else if(f&&(z=m(f,document.body),!z.length))return void console.warn(`[swup] No elements found matching animationSelector \`${f}\``);let G=z.map((J)=>function(K){let{type:Y,timeout:Z,propCount:X}=function(Q){let q=window.getComputedStyle(Q),B=U(q,`${M}Delay`),I=U(q,`${M}Duration`),D=c(B,I),W=U(q,`${E}Delay`),V=U(q,`${E}Duration`),P=c(W,V),C=Math.max(D,P),N=C>0?D>P?M:E:null;return{type:N,timeout:C,propCount:N?N===M?I.length:V.length:0}}(K);return!(!Y||!Z)&&new Promise((Q)=>{let q=`${Y}end`,B=performance.now(),I=0,D=()=>{K.removeEventListener(q,W),Q()},W=(V)=>{V.target===K&&((performance.now()-B)/1000<V.elapsedTime||++I>=X&&D())};setTimeout(()=>{I<X&&D()},Z+1),K.addEventListener(q,W)})}(J));G.filter(Boolean).length>0?await Promise.all(G):f&&console.warn(`[swup] No CSS animation duration defined on elements matching \`${f}\``)}function U(f,S){return(f[S]||"").split(", ")}function c(f,S){for(;f.length<S.length;)f=f.concat(f);return Math.max(...S.map((z,G)=>a(z)+a(f[G])))}function a(f){return 1000*parseFloat(f)}function Df(f,S={},z={}){if(typeof f!="string")throw Error("swup.navigate() requires a URL parameter");if(this.shouldIgnoreVisit(f,{el:z.el,event:z.event}))return void window.location.assign(f);let{url:G,hash:J}=F.fromUrl(f),K=this.createVisit($({},z,{to:G,hash:J}));this.performNavigation(K,S)}async function If(f,S={}){if(this.navigating){if(this.visit.state>=6)return f.state=2,void(this.onVisitEnd=()=>this.performNavigation(f,S));await this.hooks.call("visit:abort",this.visit,void 0),delete this.visit.to.document,this.visit.state=8}this.navigating=!0,this.visit=f;let{el:z}=f.trigger;S.referrer=S.referrer||this.location.url,S.animate===!1&&(f.animation.animate=!1),f.animation.animate||this.classes.clear();let G=S.history||p(z,"data-swup-history");typeof G=="string"&&["push","replace"].includes(G)&&(f.history.action=G);let J=S.animation||p(z,"data-swup-animation");var K,Y;typeof J=="string"&&(f.animation.name=J),f.meta=S.meta||{},typeof S.cache=="object"?(f.cache.read=(K=S.cache.read)!=null?K:f.cache.read,f.cache.write=(Y=S.cache.write)!=null?Y:f.cache.write):S.cache!==void 0&&(f.cache={read:!!S.cache,write:!!S.cache}),delete S.cache;try{await this.hooks.call("visit:start",f,void 0),f.state=3;let Z=this.hooks.call("page:load",f,{options:S},async(Q,q)=>{let B;return Q.cache.read&&(B=this.cache.get(Q.to.url)),q.page=B||await this.fetchPage(Q.to.url,q.options),q.cache=!!B,q.page});Z.then(({html:Q})=>{f.advance(5),f.to.html=Q,f.to.document=new DOMParser().parseFromString(Q,"text/html")});let X=f.to.url+f.to.hash;if(f.history.popstate||(f.history.action==="replace"||f.to.url===this.location.url?O(X):(this.currentHistoryIndex++,Kf(X,{index:this.currentHistoryIndex}))),this.location=F.fromUrl(X),f.history.popstate&&this.classes.add("is-popstate"),f.animation.name&&this.classes.add(`to-${o(f.animation.name)}`),f.animation.wait&&await Z,f.done)return;if(await this.hooks.call("visit:transition",f,void 0,async()=>{if(!f.animation.animate)return await this.hooks.call("animation:skip",void 0),void await this.renderPage(f,await Z);f.advance(4),await this.animatePageOut(f),f.animation.native&&document.startViewTransition?await document.startViewTransition(async()=>await this.renderPage(f,await Z)).finished:await this.renderPage(f,await Z),await this.animatePageIn(f)}),f.done)return;await this.hooks.call("visit:end",f,void 0,()=>this.classes.clear()),f.state=7,this.navigating=!1,this.onVisitEnd&&(this.onVisitEnd(),this.onVisitEnd=void 0)}catch(Z){if(!Z||Z!=null&&Z.aborted)return void(f.state=8);f.state=9,console.error(Z),this.options.skipPopStateHandling=()=>(window.location.assign(f.to.url+f.to.hash),!0),window.history.back()}finally{delete f.to.document}}var Nf=async function(f){await this.hooks.call("animation:out:start",f,void 0,()=>{this.classes.add("is-changing","is-animating","is-leaving")}),await this.hooks.call("animation:out:await",f,{skip:!1},(S,{skip:z})=>{if(!z)return this.awaitAnimations({selector:S.animation.selector})}),await this.hooks.call("animation:out:end",f,void 0)},Pf=function(f){var S;let z=f.to.document;if(!z)return!1;let G=((S=z.querySelector("title"))==null?void 0:S.innerText)||"";document.title=G;let J=m('[data-swup-persist]:not([data-swup-persist=""])'),K=f.containers.map((Y)=>{let Z=document.querySelector(Y),X=z.querySelector(Y);return Z&&X?(Z.replaceWith(X.cloneNode(!0)),!0):(Z||console.warn(`[swup] Container missing in current document: ${Y}`),X||console.warn(`[swup] Container missing in incoming document: ${Y}`),!1)}).filter(Boolean);return J.forEach((Y)=>{let Z=Y.getAttribute("data-swup-persist"),X=h(`[data-swup-persist="${Z}"]`);X&&X!==Y&&X.replaceWith(Y)}),K.length===f.containers.length},Vf=function(f){let S={behavior:"auto"},{target:z,reset:G}=f.scroll,J=z!=null?z:f.to.hash,K=!1;return J&&(K=this.hooks.callSync("scroll:anchor",f,{hash:J,options:S},(Y,{hash:Z,options:X})=>{let Q=this.getAnchorElement(Z);return Q&&Q.scrollIntoView(X),!!Q})),G&&!K&&(K=this.hooks.callSync("scroll:top",f,{options:S},(Y,{options:Z})=>(window.scrollTo($({top:0,left:0},Z)),!0))),K},Wf=async function(f){if(f.done)return;let S=this.hooks.call("animation:in:await",f,{skip:!1},(z,{skip:G})=>{if(!G)return this.awaitAnimations({selector:z.animation.selector})});await r(),await this.hooks.call("animation:in:start",f,void 0,()=>{this.classes.remove("is-animating")}),await S,await this.hooks.call("animation:in:end",f,void 0)},$f=async function(f,S){if(f.done)return;f.advance(6);let{url:z}=S;this.isSameResolvedUrl(T(),z)||(O(z),this.location=F.fromUrl(z),f.to.url=this.location.url,f.to.hash=this.location.hash),await this.hooks.call("content:replace",f,{page:S},(G,{})=>{if(this.classes.remove("is-leaving"),G.animation.animate&&this.classes.add("is-rendering"),!this.replaceContent(G))throw Error("[swup] Container mismatch, aborting");G.animation.animate&&(this.classes.add("is-changing","is-animating","is-rendering"),G.animation.name&&this.classes.add(`to-${o(G.animation.name)}`))}),await this.hooks.call("content:scroll",f,void 0,()=>this.scrollToContent(f)),await this.hooks.call("page:view",f,{url:this.location.url,title:document.title})},Cf=function(f){var S;if(S=f,Boolean(S==null?void 0:S.isSwupPlugin)){if(f.swup=this,!f._checkRequirements||f._checkRequirements())return f._beforeMount&&f._beforeMount(),f.mount(),this.plugins.push(f),this.plugins}else console.error("Not a swup plugin instance",f)};function Ff(f){let S=this.findPlugin(f);if(S)return S.unmount(),S._afterUnmount&&S._afterUnmount(),this.plugins=this.plugins.filter((z)=>z!==S),this.plugins;console.error("No such plugin",S)}function Hf(f){return this.plugins.find((S)=>S===f||S.name===f||S.name===`Swup${String(f)}`)}function _f(f){if(typeof this.options.resolveUrl!="function")return console.warn("[swup] options.resolveUrl expects a callback function."),f;let S=this.options.resolveUrl(f);return S&&typeof S=="string"?S.startsWith("//")||S.startsWith("http")?(console.warn("[swup] options.resolveUrl needs to return a relative url"),f):S:(console.warn("[swup] options.resolveUrl needs to return a url"),f)}function Of(f,S){return this.resolveUrl(f)===this.resolveUrl(S)}var Tf={animateHistoryBrowsing:!1,animationSelector:'[class*="transition-"]',animationScope:"html",cache:!0,containers:["#swup"],hooks:{},ignoreVisit:(f,{el:S}={})=>!(S==null||!S.closest("[data-no-swup]")),linkSelector:"a[href]",linkToSelf:"scroll",native:!1,plugins:[],resolveUrl:(f)=>f,requestHeaders:{"X-Requested-With":"swup",Accept:"text/html, application/xhtml+xml"},skipPopStateHandling:(f)=>{var S;return((S=f.state)==null?void 0:S.source)!=="swup"},timeout:0};class u{get currentPageUrl(){return this.location.url}constructor(f={}){var S,z;this.version="4.8.3",this.options=void 0,this.defaults=Tf,this.plugins=[],this.visit=void 0,this.cache=void 0,this.hooks=void 0,this.classes=void 0,this.location=F.fromUrl(window.location.href),this.currentHistoryIndex=void 0,this.clickDelegate=void 0,this.navigating=!1,this.onVisitEnd=void 0,this.use=Cf,this.unuse=Ff,this.findPlugin=Hf,this.log=()=>{},this.navigate=Df,this.performNavigation=If,this.createVisit=Zf,this.delegateEvent=Qf,this.fetchPage=Xf,this.awaitAnimations=Bf,this.renderPage=$f,this.replaceContent=Pf,this.animatePageIn=Wf,this.animatePageOut=Nf,this.scrollToContent=Vf,this.getAnchorElement=qf,this.getCurrentUrl=T,this.resolveUrl=_f,this.isSameResolvedUrl=Of,this.options=$({},this.defaults,f),this.handleLinkClick=this.handleLinkClick.bind(this),this.handlePopState=this.handlePopState.bind(this),this.cache=new l(this),this.classes=new n(this),this.hooks=new s(this),this.visit=this.createVisit({to:""}),this.currentHistoryIndex=(S=(z=window.history.state)==null?void 0:z.index)!=null?S:1,this.enable()}async enable(){var f;let{linkSelector:S}=this.options;this.clickDelegate=this.delegateEvent(S,"click",this.handleLinkClick),window.addEventListener("popstate",this.handlePopState),this.options.animateHistoryBrowsing&&(window.history.scrollRestoration="manual"),this.options.native=this.options.native&&!!document.startViewTransition,this.options.plugins.forEach((z)=>this.use(z));for(let[z,G]of Object.entries(this.options.hooks)){let[J,K]=this.hooks.parseName(z);this.hooks.on(J,G,K)}((f=window.history.state)==null?void 0:f.source)!=="swup"&&O(null,{index:this.currentHistoryIndex}),await r(),await this.hooks.call("enable",void 0,void 0,()=>{let z=document.documentElement;z.classList.add("swup-enabled"),z.classList.toggle("swup-native",this.options.native)})}async destroy(){this.clickDelegate.destroy(),window.removeEventListener("popstate",this.handlePopState),this.cache.clear(),this.options.plugins.forEach((f)=>this.unuse(f)),await this.hooks.call("disable",void 0,void 0,()=>{let f=document.documentElement;f.classList.remove("swup-enabled"),f.classList.remove("swup-native")}),this.hooks.clear()}shouldIgnoreVisit(f,{el:S,event:z}={}){let{origin:G,url:J,hash:K}=F.fromUrl(f);return G!==window.location.origin||!(!S||!this.triggerWillOpenNewWindow(S))||!!this.options.ignoreVisit(J+K,{el:S,event:z})}handleLinkClick(f){let S=f.delegateTarget,{href:z,url:G,hash:J}=F.fromElement(S);if(this.shouldIgnoreVisit(z,{el:S,event:f}))return;if(this.navigating&&G===this.visit.to.url)return void f.preventDefault();let K=this.createVisit({to:G,hash:J,el:S,event:f});f.metaKey||f.ctrlKey||f.shiftKey||f.altKey?this.hooks.callSync("link:newtab",K,{href:z}):f.button===0&&this.hooks.callSync("link:click",K,{el:S,event:f},()=>{var Y;let Z=(Y=K.from.url)!=null?Y:"";f.preventDefault(),G&&G!==Z?this.isSameResolvedUrl(G,Z)||this.performNavigation(K):J?this.hooks.callSync("link:anchor",K,{hash:J},()=>{O(G+J),this.scrollToContent(K)}):this.hooks.callSync("link:self",K,void 0,()=>{this.options.linkToSelf==="navigate"?this.performNavigation(K):(O(G),this.scrollToContent(K))})})}handlePopState(f){var S,z,G,J;let K=(S=(z=f.state)==null?void 0:z.url)!=null?S:window.location.href;if(this.options.skipPopStateHandling(f))return;if(this.isSameResolvedUrl(T(),this.location.url))return;let{url:Y,hash:Z}=F.fromUrl(K),X=this.createVisit({to:Y,hash:Z,event:f});X.history.popstate=!0;let Q=(G=(J=f.state)==null?void 0:J.index)!=null?G:0;Q&&Q!==this.currentHistoryIndex&&(X.history.direction=Q-this.currentHistoryIndex>0?"forwards":"backwards",this.currentHistoryIndex=Q),X.animation.animate=!1,X.scroll.reset=!1,X.scroll.target=!1,this.options.animateHistoryBrowsing&&(X.animation.animate=!0,X.scroll.reset=!0),this.hooks.callSync("history:popstate",X,{event:f},()=>{this.performNavigation(X)})}triggerWillOpenNewWindow(f){return!!f.matches('[download], [target="_blank"]')}}function A(){return A=Object.assign?Object.assign.bind():function(f){for(var S=1;S<arguments.length;S++){var z=arguments[S];for(var G in z)Object.prototype.hasOwnProperty.call(z,G)&&(f[G]=z[G])}return f},A.apply(this,arguments)}var e=(f)=>String(f).split(".").map((S)=>String(parseInt(S||"0",10))).concat(["0","0"]).slice(0,3).join(".");class x{constructor(){this.isSwupPlugin=!0,this.swup=void 0,this.version=void 0,this.requires={},this.handlersToUnregister=[]}mount(){}unmount(){this.handlersToUnregister.forEach((f)=>f()),this.handlersToUnregister=[]}_beforeMount(){if(!this.name)throw Error("You must define a name of plugin when creating a class.")}_afterUnmount(){}_checkRequirements(){return typeof this.requires!="object"||Object.entries(this.requires).forEach(([f,S])=>{if(!function(z,G,J){let K=function(Y,Z){var X;if(Y==="swup")return(X=Z.version)!=null?X:"";{var Q;let q=Z.findPlugin(Y);return(Q=q==null?void 0:q.version)!=null?Q:""}}(z,J);return!!K&&((Y,Z)=>Z.every((X)=>{let[,Q,q]=X.match(/^([\D]+)?(.*)$/)||[];var B,I;return((D,W)=>{let V={"":(P)=>P===0,">":(P)=>P>0,">=":(P)=>P>=0,"<":(P)=>P<0,"<=":(P)=>P<=0};return(V[W]||V[""])(D)})((I=q,B=e(B=Y),I=e(I),B.localeCompare(I,void 0,{numeric:!0})),Q||">=")}))(K,G)}(f,S=Array.isArray(S)?S:[S],this.swup)){let z=`${f} ${S.join(", ")}`;throw Error(`Plugin version mismatch: ${this.name} requires ${z}`)}}),!0}on(f,S,z={}){var G;S=!(G=S).name.startsWith("bound ")||G.hasOwnProperty("prototype")?S.bind(this):S;let J=this.swup.hooks.on(f,S,z);return this.handlersToUnregister.push(J),J}once(f,S,z={}){return this.on(f,S,A({},z,{once:!0}))}before(f,S,z={}){return this.on(f,S,A({},z,{before:!0}))}replace(f,S,z={}){return this.on(f,S,A({},z,{replace:!0}))}off(f,S){return this.swup.hooks.off(f,S)}}function L(){return L=Object.assign?Object.assign.bind():function(f){for(var S=1;S<arguments.length;S++){var z=arguments[S];for(var G in z)({}).hasOwnProperty.call(z,G)&&(f[G]=z[G])}return f},L.apply(null,arguments)}function t(f){return f.localName!=="title"&&!f.matches("[data-swup-theme]")}function ff(f,S){return f.outerHTML===S.outerHTML}function Sf(f,S=[]){let z=Array.from(f.attributes);return S.length?z.filter(({name:G})=>S.some((J)=>J instanceof RegExp?J.test(G):G===J)):z}function Af(f){return f.matches("link[rel=stylesheet][href]")}class g extends x{constructor(f={}){var S;super(),S=this,this.name="SwupHeadPlugin",this.requires={swup:">=4.6"},this.defaults={persistTags:!1,persistAssets:!1,awaitAssets:!1,attributes:["lang","dir"],timeout:3000},this.options=void 0,this.updateHead=async function(z,{page:{}}){let{awaitAssets:G,attributes:J,timeout:K}=S.options,Y=z.to.document,{removed:Z,added:X}=function(Q,q,{shouldPersist:B=()=>!1}={}){let I=Array.from(Q.children),D=Array.from(q.children),W=(V=I,D.reduce((N,H,R)=>(V.some((j)=>ff(H,j))||N.push({el:H,index:R}),N),[]));var V;let P=function(N,H){return N.reduce((R,j)=>(H.some((zf)=>ff(j,zf))||R.push({el:j}),R),[])}(I,D);P.reverse().filter(({el:N})=>t(N)).filter(({el:N})=>!B(N)).forEach(({el:N})=>Q.removeChild(N));let C=W.filter(({el:N})=>t(N)).map((N)=>{let H=N.el.cloneNode(!0);return Q.insertBefore(H,Q.children[(N.index||0)+1]||null),L({},N,{el:H})});return{removed:P.map(({el:N})=>N),added:C.map(({el:N})=>N)}}(document.head,Y.head,{shouldPersist:(Q)=>S.isPersistentTag(Q)});if(S.swup.log(`Removed ${Z.length} / added ${X.length} tags in head`),J!=null&&J.length&&function(Q,q,B=[]){let I=new Set;for(let{name:D,value:W}of Sf(q,B))Q.setAttribute(D,W),I.add(D);for(let{name:D}of Sf(Q,B))I.has(D)||Q.removeAttribute(D)}(document.documentElement,Y.documentElement,J),G){let Q=function(q,B=0){return q.filter(Af).map((I)=>function(D,W=0){let V,P=(C)=>{D.sheet?C():V=setTimeout(()=>P(C),10)};return new Promise((C)=>{P(()=>C(D)),W>0&&setTimeout(()=>{V&&clearTimeout(V),C(D)},W)})}(I,B))}(X,K);Q.length&&(S.swup.log(`Waiting for ${Q.length} assets to load`),await Promise.all(Q))}},this.options=L({},this.defaults,f),this.options.persistAssets&&!this.options.persistTags&&(this.options.persistTags="link[rel=stylesheet], script[src], style")}mount(){this.before("content:replace",this.updateHead)}isPersistentTag(f){let{persistTags:S}=this.options;return typeof S=="function"?S(f):typeof S=="string"&&S.length>0?f.matches(S):Boolean(S)}}function b(){return b=Object.assign?Object.assign.bind():function(f){for(var S=1;S<arguments.length;S++){var z=arguments[S];for(var G in z)Object.prototype.hasOwnProperty.call(z,G)&&(f[G]=z[G])}return f},b.apply(this,arguments)}class d extends x{constructor(f={}){super(),this.name="SwupScriptsPlugin",this.requires={swup:">=4"},this.defaults={head:!0,body:!0,optin:!1},this.options=void 0,this.options=b({},this.defaults,f)}mount(){this.on("content:replace",this.runScripts)}runScripts(){let{head:f,body:S,optin:z}=this.options,G=this.getScope({head:f,body:S});if(!G)return;let J=Array.from(G.querySelectorAll(z?"script[data-swup-reload-script]":"script:not([data-swup-ignore-script])"));J.forEach((K)=>this.runScript(K)),this.swup.log(`Executed ${J.length} scripts.`)}runScript(f){let S=document.createElement("script");for(let{name:z,value:G}of f.attributes)S.setAttribute(z,G);return S.textContent=f.textContent,f.replaceWith(S),S}getScope({head:f,body:S}){return f&&S?document:f?document.head:S?document.body:null}}var xf=new u({containers:["#swup"],cache:!0,native:!0,animationSelector:!1,plugins:[new g({persistTags:!0}),new d({optin:!0})]});window.swup=xf;