@sbb-esta/lyne-elements-dev 4.7.0-dev.1773737285 → 4.7.0-dev.1773743095
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.
- package/calendar/calendar/calendar.component.js +1 -1
- package/calendar/calendar-day/calendar-day.component.js +1 -1
- package/calendar/calendar-day.js +1 -1
- package/calendar/calendar-month/calendar-month.component.js +84 -0
- package/calendar/calendar-month.js +4 -0
- package/calendar/calendar-weekday/calendar-weekday.component.js +54 -0
- package/calendar/calendar-weekday.js +4 -0
- package/calendar/calendar-weeknumber/calendar-weeknumber.component.js +56 -0
- package/calendar/calendar-weeknumber.js +4 -0
- package/calendar/calendar-year/calendar-year.component.js +80 -0
- package/calendar/calendar-year.js +4 -0
- package/calendar/calendar.js +1 -1
- package/calendar/common/calendar-cell-base-element.js +23 -0
- package/calendar/common.js +6 -0
- package/calendar-day.component-Iewo-vBR.js +109 -0
- package/{calendar.component-BgZDy-rX.js → calendar.component-Cz-OGQu6.js} +140 -224
- package/calendar.js +8 -4
- package/calendar.pure.js +7 -3
- package/carousel/carousel/carousel.component.js +1 -1
- package/carousel/carousel.js +1 -1
- package/carousel.js +1 -1
- package/carousel.pure.js +1 -1
- package/core/styles/core.scss +8 -0
- package/core.css +40 -0
- package/custom-elements.json +4304 -406
- package/development/calendar/calendar/calendar.component.d.ts +7 -9
- package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar/calendar.component.js +1 -1
- package/development/calendar/calendar-day/calendar-day.component.d.ts +7 -21
- package/development/calendar/calendar-day/calendar-day.component.d.ts.map +1 -1
- package/development/calendar/calendar-day/calendar-day.component.js +1 -1
- package/development/calendar/calendar-day.js +1 -1
- package/development/calendar/calendar-month/calendar-month.component.d.ts +33 -0
- package/development/calendar/calendar-month/calendar-month.component.d.ts.map +1 -0
- package/development/calendar/calendar-month/calendar-month.component.js +112 -0
- package/development/calendar/calendar-month.d.ts +2 -0
- package/development/calendar/calendar-month.d.ts.map +1 -0
- package/development/calendar/calendar-month.js +10 -0
- package/development/calendar/calendar-weekday/calendar-weekday.component.d.ts +23 -0
- package/development/calendar/calendar-weekday/calendar-weekday.component.d.ts.map +1 -0
- package/development/calendar/calendar-weekday/calendar-weekday.component.js +67 -0
- package/development/calendar/calendar-weekday.d.ts +2 -0
- package/development/calendar/calendar-weekday.d.ts.map +1 -0
- package/development/calendar/calendar-weekday.js +10 -0
- package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.d.ts +23 -0
- package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.d.ts.map +1 -0
- package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.js +70 -0
- package/development/calendar/calendar-weeknumber.d.ts +2 -0
- package/development/calendar/calendar-weeknumber.d.ts.map +1 -0
- package/development/calendar/calendar-weeknumber.js +10 -0
- package/development/calendar/calendar-year/calendar-year.component.d.ts +28 -0
- package/development/calendar/calendar-year/calendar-year.component.d.ts.map +1 -0
- package/development/calendar/calendar-year/calendar-year.component.js +103 -0
- package/development/calendar/calendar-year.d.ts +2 -0
- package/development/calendar/calendar-year.d.ts.map +1 -0
- package/development/calendar/calendar-year.js +10 -0
- package/development/calendar/calendar.js +1 -1
- package/development/calendar/common/calendar-cell-base-element.d.ts +24 -0
- package/development/calendar/common/calendar-cell-base-element.d.ts.map +1 -0
- package/development/calendar/common/calendar-cell-base-element.js +35 -0
- package/development/calendar/common.d.ts +3 -0
- package/development/calendar/common.d.ts.map +1 -0
- package/development/calendar/common.js +120 -0
- package/development/calendar-day.component-Brz0Wyai.js +178 -0
- package/development/calendar.component-0Pl7qEXL.js +2222 -0
- package/development/calendar.d.ts.map +1 -1
- package/development/calendar.js +12 -4
- package/development/calendar.pure.d.ts +4 -0
- package/development/calendar.pure.d.ts.map +1 -1
- package/development/calendar.pure.js +7 -3
- package/development/carousel/carousel/carousel.component.js +1 -1
- package/development/carousel/carousel.js +1 -1
- package/development/{carousel.component-b4C-hxkj.js → carousel.component-Cs0gWroH.js} +2 -2
- package/development/carousel.js +1 -1
- package/development/carousel.pure.js +1 -1
- package/development/mini-calendar/mini-calendar/mini-calendar.component.js +1 -1
- package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +1 -1
- package/development/mini-calendar/mini-calendar-day.js +1 -1
- package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +1 -1
- package/development/mini-calendar/mini-calendar-month.js +1 -1
- package/development/mini-calendar/mini-calendar.js +1 -1
- package/development/{mini-calendar-day.component-DLP7Pa6R.js → mini-calendar-day.component-DdjlUG0k.js} +2 -2
- package/development/{mini-calendar-month.component-C1jsGlJ2.js → mini-calendar-month.component-BjxmoYz6.js} +2 -2
- package/development/{mini-calendar.component-BzqjMchx.js → mini-calendar.component-B38J84Gg.js} +2 -2
- package/development/mini-calendar.js +3 -3
- package/development/mini-calendar.pure.js +3 -3
- package/development/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover.component.js +1 -1
- package/development/{popover.component-BpYi6btR.js → popover.component-BujfGgbD.js} +5 -4
- package/development/popover.js +1 -1
- package/development/popover.pure.js +1 -1
- package/index.d.ts +5 -1
- package/index.js +5 -1
- package/mini-calendar/mini-calendar/mini-calendar.component.js +1 -1
- package/mini-calendar/mini-calendar-day/mini-calendar-day.component.js +1 -1
- package/mini-calendar/mini-calendar-day.js +1 -1
- package/mini-calendar/mini-calendar-month/mini-calendar-month.component.js +1 -1
- package/mini-calendar/mini-calendar-month.js +1 -1
- package/mini-calendar/mini-calendar.js +1 -1
- package/{mini-calendar.component-DpPMb47Y.js → mini-calendar.component-_YJbFi4P.js} +4 -4
- package/mini-calendar.js +3 -3
- package/mini-calendar.pure.js +3 -3
- package/off-brand-theme.css +40 -0
- package/package.json +27 -2
- package/popover/popover.component.js +1 -1
- package/{popover.component-D_nJwaqJ.js → popover.component-CktV5oiV.js} +3 -2
- package/popover.js +1 -1
- package/popover.pure.js +1 -1
- package/safety-theme.css +40 -0
- package/standard-theme.css +40 -0
- package/calendar-day.component-DqAXvoP3.js +0 -113
- package/development/calendar-day.component-De9Xn3-q.js +0 -283
- package/development/calendar.component-PHpgLc0z.js +0 -2458
- package/{carousel.component-Bd0iGUbf.js → carousel.component-BA0V2JHI.js} +1 -1
- package/{mini-calendar-day.component-cAawa9Gr.js → mini-calendar-day.component-D5HlCTH0.js} +1 -1
- package/{mini-calendar-month.component-DiYSVb-Y.js → mini-calendar-month.component-CGAOxDtz.js} +1 -1
package/standard-theme.css
CHANGED
|
@@ -1418,6 +1418,46 @@ summary {
|
|
|
1418
1418
|
--sbb-mini-button-group-padding-inline: var(--sbb-spacing-fixed-3x);
|
|
1419
1419
|
--sbb-mini-button-group-divider-height: var(--sbb-size-icon-ui-small);
|
|
1420
1420
|
--sbb-mini-button-group-divider-padding: var(--sbb-spacing-fixed-1x);
|
|
1421
|
+
--sbb-calendar-cell-background-color: transparent;
|
|
1422
|
+
--sbb-calendar-cell-background-color-hover: var(--sbb-background-color-3);
|
|
1423
|
+
--sbb-calendar-cell-background-color-active: var(--sbb-background-color-4);
|
|
1424
|
+
--sbb-calendar-cell-padding: 0.125rem;
|
|
1425
|
+
--sbb-calendar-cell-border-width: var(--sbb-border-width-2x);
|
|
1426
|
+
--sbb-calendar-cell-disabled-height: 0.09375rem;
|
|
1427
|
+
--sbb-calendar-cell-disabled-width: 1.59375rem;
|
|
1428
|
+
--sbb-calendar-cell-disabled-color: var(--sbb-color-granite);
|
|
1429
|
+
--sbb-calendar-cell-disabled-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));
|
|
1430
|
+
--sbb-calendar-cell-transition-easing-function: var(--sbb-animation-easing);
|
|
1431
|
+
--sbb-calendar-control-gap: var(--sbb-spacing-fixed-2x);
|
|
1432
|
+
--sbb-calendar-control-margin-block-end: var(--sbb-spacing-fixed-4x);
|
|
1433
|
+
--sbb-calendar-control-view-change-height: 2.75rem;
|
|
1434
|
+
--sbb-calendar-control-view-change-color: var(--sbb-color-3);
|
|
1435
|
+
--sbb-calendar-control-view-change-background: var(--sbb-background-color-1);
|
|
1436
|
+
--sbb-calendar-control-view-change-padding-inline: var(--sbb-spacing-fixed-5x)
|
|
1437
|
+
var(--sbb-spacing-fixed-2x);
|
|
1438
|
+
--sbb-calendar-header-color: var(--sbb-color-granite);
|
|
1439
|
+
--sbb-calendar-header-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));
|
|
1440
|
+
--sbb-calendar-table-animation-shift: 0.00625rem;
|
|
1441
|
+
--sbb-calendar-table-column-spaces: 12;
|
|
1442
|
+
--sbb-calendar-tables-gap: var(--sbb-spacing-fixed-10x);
|
|
1443
|
+
--sbb-calendar-table-animation-duration: 0.1ms;
|
|
1444
|
+
--sbb-calendar-cell-border: var(--sbb-calendar-cell-border-width) solid
|
|
1445
|
+
var(--sbb-border-color-1-inverted);
|
|
1446
|
+
--sbb-calendar-cell-color: var(--sbb-color-2);
|
|
1447
|
+
--sbb-calendar-cell-cursor: var(--sbb-cursor-pointer);
|
|
1448
|
+
--sbb-calendar-cell-justify-content: normal;
|
|
1449
|
+
--sbb-calendar-cell-inset: 0.0625rem;
|
|
1450
|
+
--sbb-calendar-cell-font-size: var(--sbb-text-font-size-s);
|
|
1451
|
+
--sbb-calendar-cell-font-weight: unset;
|
|
1452
|
+
--sbb-calendar-cell-transition-easing-function: var(--sbb-animation-easing);
|
|
1453
|
+
--sbb-calendar-cell-year-month-width: 4.8125rem;
|
|
1454
|
+
--sbb-calendar-cell-year-month-height: 2.75rem;
|
|
1455
|
+
--sbb-calendar-day-width: 2.75rem;
|
|
1456
|
+
--sbb-calendar-day-height: 3rem;
|
|
1457
|
+
--sbb-calendar-day-extra-display: block;
|
|
1458
|
+
--sbb-calendar-day-extra-height: var(--sbb-spacing-fixed-4x);
|
|
1459
|
+
--sbb-calendar-day-crossed-out-top: 33%;
|
|
1460
|
+
--sbb-calendar-day-crossed-out-translate: translate(-50%, -33%) rotate(-45deg);
|
|
1421
1461
|
--sbb-card-background-color: var(--sbb-background-color-1);
|
|
1422
1462
|
--sbb-card-border-color: transparent;
|
|
1423
1463
|
--sbb-card-border-radius: var(--sbb-border-radius-4x);
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { __esDecorate as e, __runInitializers as t } from "tslib";
|
|
2
|
-
import { css as n, html as r } from "lit";
|
|
3
|
-
import { property as i, state as a } from "lit/decorators.js";
|
|
4
|
-
import { SbbButtonLikeBaseElement as o } from "./core/base-elements.js";
|
|
5
|
-
import { SbbDisabledMixin as s } from "./core/mixins.js";
|
|
6
|
-
import { boxSizingStyles as c } from "./core/styles.js";
|
|
7
|
-
import { SbbPropertyWatcherController as l } from "./core/controllers.js";
|
|
8
|
-
import { readConfig as u } from "./core/config/config.js";
|
|
9
|
-
import { defaultDateAdapter as d } from "./core/datetime/native-date-adapter.js";
|
|
10
|
-
//#region src/elements/calendar/calendar-day/calendar-day.scss?lit&inline
|
|
11
|
-
var f = n`:host{--sbb-calendar-day-width:2.75rem;--sbb-calendar-day-height:3rem;--sbb-calendar-day-cell-background-color:var(--sbb-calendar-cell-background-color);--sbb-calendar-day-selected-border:none;--sbb-calendar-day-transition-duration:var(--sbb-disable-animation-duration,var(--sbb-animation-duration-2x));--sbb-calendar-day-transition-easing-function:var(--sbb-animation-easing);--sbb-calendar-day-cursor:var(--sbb-cursor-pointer);--sbb-calendar-day-border-radius:var(--sbb-border-radius-4x);--sbb-calendar-day-flex-direction:column;--sbb-calendar-day-justify-content:initial;--sbb-calendar-day-align-items:initial;--sbb-calendar-day-value-height:var(--sbb-spacing-fixed-6x);--sbb-calendar-day-extra-display:block;--sbb-calendar-day-extra-height:var(--sbb-spacing-fixed-4x);--sbb-calendar-day-crossed-out-top:33%;--sbb-calendar-day-crossed-out-translate:translate(-50%, -33%) rotate(-45deg);display:block}:host(:is(:state(selected),[state--selected])){--sbb-calendar-day-selected-border:var(--sbb-border-width-2x) solid var(--sbb-border-color-2)}:host(:disabled){--sbb-calendar-cell-color:var(--sbb-calendar-cell-disabled-color);--sbb-calendar-day-cursor:unset}:host(:focus-visible){outline:0}:host(:not(:disabled):active){--sbb-calendar-day-cell-background-color:var(--sbb-calendar-cell-background-color-active)}.sbb-calendar-day{--sbb-text-font-size:var(--sbb-text-font-size-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-text);letter-spacing:var(--sbb-typo-letter-spacing-text);font-size:var(--sbb-text-font-size);flex-direction:var(--sbb-calendar-day-flex-direction);justify-content:var(--sbb-calendar-day-justify-content);align-items:var(--sbb-calendar-day-align-items);height:var(--sbb-calendar-day-height);width:var(--sbb-calendar-day-width);padding:var(--sbb-calendar-cell-padding);color:var(--sbb-calendar-cell-color);cursor:var(--sbb-calendar-day-cursor);z-index:0;margin:auto;padding-block-end:var(--sbb-calendar-day-cell-padding-hover,var(--sbb-calendar-cell-padding));display:flex;position:relative}.sbb-calendar-day:before{content:"";background-color:var(--sbb-calendar-day-cell-background-color);border:var(--sbb-calendar-day-selected-border);border-radius:var(--sbb-calendar-day-border-radius);z-index:-1;transition-duration:var(--sbb-calendar-day-transition-duration);transition-timing-function:var(--sbb-calendar-day-transition-easing-function);transition-property:background-color;position:absolute;inset:0}:host(:focus-visible) .sbb-calendar-day:before{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style,solid) var(--sbb-focus-outline-width)}@media (forced-colors:active){:host(:not(:disabled):active) .sbb-calendar-day:before{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style,solid) var(--sbb-focus-outline-width);--sbb-focus-outline-style:initial}}@media (any-hover:hover){:host(:not(:active,:disabled):hover) .sbb-calendar-day{--sbb-calendar-day-cell-background-color:var(--sbb-calendar-cell-background-color-hover);--sbb-calendar-day-cell-padding-hover:calc(.0625rem + var(--sbb-calendar-cell-padding))}}@media (any-hover:hover) and (forced-colors:active){:host(:not(:active,:disabled):hover) .sbb-calendar-day:before{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style,solid) var(--sbb-focus-outline-width);--sbb-focus-outline-style:initial}}.sbb-calendar-day__value{height:var(--sbb-calendar-day-value-height)}:host(:is(:state(current),[state--current])) .sbb-calendar-day__value{font-weight:700}:host(:is(:state(crossed-out),[state--crossed-out])) .sbb-calendar-day__value:after{content:"";height:var(--sbb-calendar-cell-disabled-height);width:var(--sbb-calendar-cell-disabled-width);background-color:var(--sbb-calendar-cell-disabled-color);transform:var(--sbb-calendar-day-crossed-out-translate);position:absolute;inset-block-start:var(--sbb-calendar-day-crossed-out-top);inset-inline-start:50%}.sbb-calendar-day__extra{display:var(--sbb-calendar-day-extra-display);height:var(--sbb-calendar-day-extra-height);padding:var(--sbb-calendar-cell-padding)}::slotted(*){height:1rem}`, p = (() => {
|
|
12
|
-
let n = s(o), p = [], m, h;
|
|
13
|
-
return class extends n {
|
|
14
|
-
static {
|
|
15
|
-
let t = typeof Symbol == "function" && Symbol.metadata ? Object.create(n[Symbol.metadata] ?? null) : void 0;
|
|
16
|
-
m = [i()], h = [a()], e(this, null, m, {
|
|
17
|
-
kind: "setter",
|
|
18
|
-
name: "slot",
|
|
19
|
-
static: !1,
|
|
20
|
-
private: !1,
|
|
21
|
-
access: {
|
|
22
|
-
has: (e) => "slot" in e,
|
|
23
|
-
set: (e, t) => {
|
|
24
|
-
e.slot = t;
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
metadata: t
|
|
28
|
-
}, null, p), e(this, null, h, {
|
|
29
|
-
kind: "setter",
|
|
30
|
-
name: "value",
|
|
31
|
-
static: !1,
|
|
32
|
-
private: !1,
|
|
33
|
-
access: {
|
|
34
|
-
has: (e) => "value" in e,
|
|
35
|
-
set: (e, t) => {
|
|
36
|
-
e.value = t;
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
metadata: t
|
|
40
|
-
}, null, p), t && Object.defineProperty(this, Symbol.metadata, {
|
|
41
|
-
enumerable: !0,
|
|
42
|
-
configurable: !0,
|
|
43
|
-
writable: !0,
|
|
44
|
-
value: t
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
static {
|
|
48
|
-
this.elementName = "sbb-calendar-day";
|
|
49
|
-
}
|
|
50
|
-
static {
|
|
51
|
-
this.styles = [c, f];
|
|
52
|
-
}
|
|
53
|
-
set slot(e) {
|
|
54
|
-
super.slot = e, this.value = this.dateAdapter.deserialize(e);
|
|
55
|
-
}
|
|
56
|
-
get slot() {
|
|
57
|
-
return super.slot;
|
|
58
|
-
}
|
|
59
|
-
set value(e) {
|
|
60
|
-
let t = this.dateAdapter.getValidDateOrNull(this.dateAdapter.deserialize(e));
|
|
61
|
-
if (t) {
|
|
62
|
-
this._value = t;
|
|
63
|
-
let e = this.dateAdapter.sameDate(t, this.dateAdapter.today());
|
|
64
|
-
this.toggleState("current", e), this.internals.ariaCurrent = e ? "date" : null, this.internals.ariaLabel = this.dateAdapter.getAccessibilityFormatDate(t);
|
|
65
|
-
let n = this._getParent();
|
|
66
|
-
n && (this._setDisabledFilteredState(n), this._setSelectedState(n));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
get value() {
|
|
70
|
-
return this._value;
|
|
71
|
-
}
|
|
72
|
-
constructor() {
|
|
73
|
-
super(), this.dateAdapter = (t(this, p), u().datetime?.dateAdapter ?? d), this._value = null, this.addController(new l(this, () => this._getParent(), {
|
|
74
|
-
dateFilter: (e) => this._setDisabledFilteredState(e),
|
|
75
|
-
min: (e) => this._setDisabledFilteredState(e),
|
|
76
|
-
max: (e) => this._setDisabledFilteredState(e),
|
|
77
|
-
selected: (e) => this._setSelectedState(e)
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
formResetCallback() {}
|
|
81
|
-
formStateRestoreCallback(e, t) {}
|
|
82
|
-
connectedCallback() {
|
|
83
|
-
super.connectedCallback(), this.tabIndex = -1;
|
|
84
|
-
}
|
|
85
|
-
_getParent() {
|
|
86
|
-
return this.closest?.("sbb-calendar") ?? this.getRootNode?.()?.host?.closest("sbb-calendar");
|
|
87
|
-
}
|
|
88
|
-
_setSelectedState(e) {
|
|
89
|
-
let t = e.multiple ? e.selected.some((e) => this.dateAdapter.sameDate(this.value, e)) : !!e.selected && this.dateAdapter.compareDate(this.value, e.selected) === 0;
|
|
90
|
-
this.toggleState("selected", t), this.internals.ariaPressed = String(t);
|
|
91
|
-
}
|
|
92
|
-
_setDisabledFilteredState(e) {
|
|
93
|
-
let t = !this._isActiveDate(e.dateFilter), n = !this._isDayInRange(e.min, e.max);
|
|
94
|
-
this.disabled = t || n, this.internals.ariaDisabled = String(this.disabled), this.toggleState("crossed-out", t && !n);
|
|
95
|
-
}
|
|
96
|
-
_isActiveDate(e) {
|
|
97
|
-
return e?.(this.value) ?? !0;
|
|
98
|
-
}
|
|
99
|
-
_isDayInRange(e, t) {
|
|
100
|
-
return !e && !t ? !0 : this.dateAdapter.sameDate(this.value, this.dateAdapter.clampDate(this.value, e, t));
|
|
101
|
-
}
|
|
102
|
-
renderTemplate() {
|
|
103
|
-
return r` <span class="sbb-calendar-day__value" aria-hidden="true">
|
|
104
|
-
${this.dateAdapter.getDate(this.value)}
|
|
105
|
-
</span>
|
|
106
|
-
<span class="sbb-calendar-day__extra">
|
|
107
|
-
<slot></slot>
|
|
108
|
-
</span>`;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
})();
|
|
112
|
-
//#endregion
|
|
113
|
-
export { p as t };
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { css, html } from "lit";
|
|
3
|
-
import { property, state } from "lit/decorators.js";
|
|
4
|
-
import { SbbButtonLikeBaseElement } from "./core/base-elements.js";
|
|
5
|
-
import { SbbDisabledMixin } from "./core/mixins.js";
|
|
6
|
-
import { boxSizingStyles } from "./core/styles.js";
|
|
7
|
-
import { SbbPropertyWatcherController } from "./core/controllers.js";
|
|
8
|
-
import { readConfig } from "./core/config/config.js";
|
|
9
|
-
import { defaultDateAdapter } from "./core/datetime/native-date-adapter.js";
|
|
10
|
-
//#region src/elements/calendar/calendar-day/calendar-day.scss?lit&inline
|
|
11
|
-
var calendar_day_default = css`:host {
|
|
12
|
-
display: block;
|
|
13
|
-
--sbb-calendar-day-width: 2.75rem;
|
|
14
|
-
--sbb-calendar-day-height: 3rem;
|
|
15
|
-
--sbb-calendar-day-cell-background-color: var(--sbb-calendar-cell-background-color);
|
|
16
|
-
--sbb-calendar-day-selected-border: none;
|
|
17
|
-
--sbb-calendar-day-transition-duration: var(
|
|
18
|
-
--sbb-disable-animation-duration,
|
|
19
|
-
var(--sbb-animation-duration-2x)
|
|
20
|
-
);
|
|
21
|
-
--sbb-calendar-day-transition-easing-function: var(--sbb-animation-easing);
|
|
22
|
-
--sbb-calendar-day-cursor: var(--sbb-cursor-pointer);
|
|
23
|
-
--sbb-calendar-day-border-radius: var(--sbb-border-radius-4x);
|
|
24
|
-
--sbb-calendar-day-flex-direction: column;
|
|
25
|
-
--sbb-calendar-day-justify-content: initial;
|
|
26
|
-
--sbb-calendar-day-align-items: initial;
|
|
27
|
-
--sbb-calendar-day-value-height: var(--sbb-spacing-fixed-6x);
|
|
28
|
-
--sbb-calendar-day-extra-display: block;
|
|
29
|
-
--sbb-calendar-day-extra-height: var(--sbb-spacing-fixed-4x);
|
|
30
|
-
--sbb-calendar-day-crossed-out-top: 33%;
|
|
31
|
-
--sbb-calendar-day-crossed-out-translate: translate(-50%, -33%) rotate(-45deg);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
:host(:is(:state(selected),[state--selected])) {
|
|
35
|
-
--sbb-calendar-day-selected-border: var(--sbb-border-width-2x) solid var(--sbb-border-color-2);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
:host(:disabled) {
|
|
39
|
-
--sbb-calendar-cell-color: var(--sbb-calendar-cell-disabled-color);
|
|
40
|
-
--sbb-calendar-day-cursor: unset;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
:host(:focus-visible) {
|
|
44
|
-
outline: 0;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
:host(:not(:disabled):active) {
|
|
48
|
-
--sbb-calendar-day-cell-background-color: var(--sbb-calendar-cell-background-color-active);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.sbb-calendar-day {
|
|
52
|
-
--sbb-text-font-size: var(--sbb-text-font-size-s);
|
|
53
|
-
font-family: var(--sbb-typo-font-family);
|
|
54
|
-
font-weight: normal;
|
|
55
|
-
line-height: var(--sbb-typo-line-height-text);
|
|
56
|
-
letter-spacing: var(--sbb-typo-letter-spacing-text);
|
|
57
|
-
font-size: var(--sbb-text-font-size);
|
|
58
|
-
display: flex;
|
|
59
|
-
flex-direction: var(--sbb-calendar-day-flex-direction);
|
|
60
|
-
justify-content: var(--sbb-calendar-day-justify-content);
|
|
61
|
-
align-items: var(--sbb-calendar-day-align-items);
|
|
62
|
-
height: var(--sbb-calendar-day-height);
|
|
63
|
-
width: var(--sbb-calendar-day-width);
|
|
64
|
-
padding: var(--sbb-calendar-cell-padding);
|
|
65
|
-
padding-block-end: var(--sbb-calendar-day-cell-padding-hover, var(--sbb-calendar-cell-padding));
|
|
66
|
-
margin: auto;
|
|
67
|
-
color: var(--sbb-calendar-cell-color);
|
|
68
|
-
cursor: var(--sbb-calendar-day-cursor);
|
|
69
|
-
position: relative;
|
|
70
|
-
z-index: 0;
|
|
71
|
-
}
|
|
72
|
-
.sbb-calendar-day::before {
|
|
73
|
-
content: "";
|
|
74
|
-
position: absolute;
|
|
75
|
-
inset: 0;
|
|
76
|
-
background-color: var(--sbb-calendar-day-cell-background-color);
|
|
77
|
-
border: var(--sbb-calendar-day-selected-border);
|
|
78
|
-
border-radius: var(--sbb-calendar-day-border-radius);
|
|
79
|
-
z-index: -1;
|
|
80
|
-
transition-duration: var(--sbb-calendar-day-transition-duration);
|
|
81
|
-
transition-timing-function: var(--sbb-calendar-day-transition-easing-function);
|
|
82
|
-
transition-property: background-color;
|
|
83
|
-
}
|
|
84
|
-
:host(:focus-visible) .sbb-calendar-day::before {
|
|
85
|
-
outline-offset: var(--sbb-focus-outline-offset);
|
|
86
|
-
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
87
|
-
}
|
|
88
|
-
@media (forced-colors: active) {
|
|
89
|
-
:host(:not(:disabled):active) .sbb-calendar-day::before {
|
|
90
|
-
outline-offset: var(--sbb-focus-outline-offset);
|
|
91
|
-
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
92
|
-
--sbb-focus-outline-style: initial;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
@media (any-hover: hover) {
|
|
96
|
-
:host(:not(:active, :disabled):hover) .sbb-calendar-day {
|
|
97
|
-
--sbb-calendar-day-cell-background-color: var(--sbb-calendar-cell-background-color-hover);
|
|
98
|
-
--sbb-calendar-day-cell-padding-hover: calc(
|
|
99
|
-
0.0625rem + var(--sbb-calendar-cell-padding)
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
@media (any-hover: hover) and (forced-colors: active) {
|
|
104
|
-
:host(:not(:active, :disabled):hover) .sbb-calendar-day::before {
|
|
105
|
-
outline-offset: var(--sbb-focus-outline-offset);
|
|
106
|
-
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
107
|
-
--sbb-focus-outline-style: initial;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.sbb-calendar-day__value {
|
|
112
|
-
height: var(--sbb-calendar-day-value-height);
|
|
113
|
-
}
|
|
114
|
-
:host(:is(:state(current),[state--current])) .sbb-calendar-day__value {
|
|
115
|
-
font-weight: bold;
|
|
116
|
-
}
|
|
117
|
-
:host(:is(:state(crossed-out),[state--crossed-out])) .sbb-calendar-day__value::after {
|
|
118
|
-
content: "";
|
|
119
|
-
height: var(--sbb-calendar-cell-disabled-height);
|
|
120
|
-
width: var(--sbb-calendar-cell-disabled-width);
|
|
121
|
-
position: absolute;
|
|
122
|
-
background-color: var(--sbb-calendar-cell-disabled-color);
|
|
123
|
-
inset-block-start: var(--sbb-calendar-day-crossed-out-top);
|
|
124
|
-
inset-inline-start: 50%;
|
|
125
|
-
transform: var(--sbb-calendar-day-crossed-out-translate);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.sbb-calendar-day__extra {
|
|
129
|
-
display: var(--sbb-calendar-day-extra-display);
|
|
130
|
-
height: var(--sbb-calendar-day-extra-height);
|
|
131
|
-
padding: var(--sbb-calendar-cell-padding);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
::slotted(*) {
|
|
135
|
-
height: 1rem;
|
|
136
|
-
}`;
|
|
137
|
-
//#endregion
|
|
138
|
-
//#region src/elements/calendar/calendar-day/calendar-day.component.ts
|
|
139
|
-
/**
|
|
140
|
-
* It displays a single day cell in the `sbb-calendar` component.
|
|
141
|
-
*
|
|
142
|
-
* @slot - Use the unnamed slot to add some custom content to the day.
|
|
143
|
-
*/
|
|
144
|
-
var SbbCalendarDayElement = (() => {
|
|
145
|
-
let _classSuper = SbbDisabledMixin(SbbButtonLikeBaseElement);
|
|
146
|
-
let _instanceExtraInitializers = [];
|
|
147
|
-
let _set_slot_decorators;
|
|
148
|
-
let _set_value_decorators;
|
|
149
|
-
return class SbbCalendarDayElement extends _classSuper {
|
|
150
|
-
static {
|
|
151
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
152
|
-
_set_slot_decorators = [property()];
|
|
153
|
-
_set_value_decorators = [state()];
|
|
154
|
-
__esDecorate(this, null, _set_slot_decorators, {
|
|
155
|
-
kind: "setter",
|
|
156
|
-
name: "slot",
|
|
157
|
-
static: false,
|
|
158
|
-
private: false,
|
|
159
|
-
access: {
|
|
160
|
-
has: (obj) => "slot" in obj,
|
|
161
|
-
set: (obj, value) => {
|
|
162
|
-
obj.slot = value;
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
metadata: _metadata
|
|
166
|
-
}, null, _instanceExtraInitializers);
|
|
167
|
-
__esDecorate(this, null, _set_value_decorators, {
|
|
168
|
-
kind: "setter",
|
|
169
|
-
name: "value",
|
|
170
|
-
static: false,
|
|
171
|
-
private: false,
|
|
172
|
-
access: {
|
|
173
|
-
has: (obj) => "value" in obj,
|
|
174
|
-
set: (obj, value) => {
|
|
175
|
-
obj.value = value;
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
metadata: _metadata
|
|
179
|
-
}, null, _instanceExtraInitializers);
|
|
180
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
181
|
-
enumerable: true,
|
|
182
|
-
configurable: true,
|
|
183
|
-
writable: true,
|
|
184
|
-
value: _metadata
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
static {
|
|
188
|
-
this.elementName = "sbb-calendar-day";
|
|
189
|
-
}
|
|
190
|
-
static {
|
|
191
|
-
this.styles = [boxSizingStyles, calendar_day_default];
|
|
192
|
-
}
|
|
193
|
-
set slot(value) {
|
|
194
|
-
super.slot = value;
|
|
195
|
-
this.value = this.dateAdapter.deserialize(value);
|
|
196
|
-
}
|
|
197
|
-
get slot() {
|
|
198
|
-
return super.slot;
|
|
199
|
-
}
|
|
200
|
-
/** Value of the calendar-day element. */
|
|
201
|
-
set value(value) {
|
|
202
|
-
const date = this.dateAdapter.getValidDateOrNull(this.dateAdapter.deserialize(value));
|
|
203
|
-
if (date) {
|
|
204
|
-
this._value = date;
|
|
205
|
-
const isToday = this.dateAdapter.sameDate(date, this.dateAdapter.today());
|
|
206
|
-
this.toggleState("current", isToday);
|
|
207
|
-
this.internals.ariaCurrent = isToday ? "date" : null;
|
|
208
|
-
this.internals.ariaLabel = this.dateAdapter.getAccessibilityFormatDate(date);
|
|
209
|
-
const parent = this._getParent();
|
|
210
|
-
if (parent) {
|
|
211
|
-
this._setDisabledFilteredState(parent);
|
|
212
|
-
this._setSelectedState(parent);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
get value() {
|
|
217
|
-
return this._value;
|
|
218
|
-
}
|
|
219
|
-
constructor() {
|
|
220
|
-
super();
|
|
221
|
-
this.dateAdapter = (__runInitializers(this, _instanceExtraInitializers), readConfig().datetime?.dateAdapter ?? defaultDateAdapter);
|
|
222
|
-
this._value = null;
|
|
223
|
-
this.addController(new SbbPropertyWatcherController(this, () => this._getParent(), {
|
|
224
|
-
dateFilter: (component) => this._setDisabledFilteredState(component),
|
|
225
|
-
min: (component) => this._setDisabledFilteredState(component),
|
|
226
|
-
max: (component) => this._setDisabledFilteredState(component),
|
|
227
|
-
selected: (component) => this._setSelectedState(component)
|
|
228
|
-
}));
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Intentionally empty, as buttons are not targeted by form reset.
|
|
232
|
-
* @internal
|
|
233
|
-
*/
|
|
234
|
-
formResetCallback() {}
|
|
235
|
-
/**
|
|
236
|
-
* Intentionally empty, as buttons are not targeted by form restore.
|
|
237
|
-
* @internal
|
|
238
|
-
*/
|
|
239
|
-
formStateRestoreCallback(_state, _reason) {}
|
|
240
|
-
connectedCallback() {
|
|
241
|
-
super.connectedCallback();
|
|
242
|
-
this.tabIndex = -1;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* The component is used as the default day cell within the `sbb-calendar`,
|
|
246
|
-
* or, if extra content is needed, it can be slotted.
|
|
247
|
-
*/
|
|
248
|
-
_getParent() {
|
|
249
|
-
return this.closest?.("sbb-calendar") ?? this.getRootNode?.()?.host?.closest("sbb-calendar");
|
|
250
|
-
}
|
|
251
|
-
_setSelectedState(component) {
|
|
252
|
-
const selected = component.multiple ? component.selected.some((selDay) => this.dateAdapter.sameDate(this.value, selDay)) : !!component.selected && this.dateAdapter.compareDate(this.value, component.selected) === 0;
|
|
253
|
-
this.toggleState("selected", selected);
|
|
254
|
-
this.internals.ariaPressed = String(selected);
|
|
255
|
-
}
|
|
256
|
-
_setDisabledFilteredState(component) {
|
|
257
|
-
const isFilteredOut = !this._isActiveDate(component.dateFilter);
|
|
258
|
-
const isOutOfRange = !this._isDayInRange(component.min, component.max);
|
|
259
|
-
this.disabled = isFilteredOut || isOutOfRange;
|
|
260
|
-
this.internals.ariaDisabled = String(this.disabled);
|
|
261
|
-
this.toggleState("crossed-out", isFilteredOut && !isOutOfRange);
|
|
262
|
-
}
|
|
263
|
-
_isActiveDate(dateFilter) {
|
|
264
|
-
return dateFilter?.(this.value) ?? true;
|
|
265
|
-
}
|
|
266
|
-
_isDayInRange(min, max) {
|
|
267
|
-
if (!min && !max) return true;
|
|
268
|
-
return this.dateAdapter.sameDate(this.value, this.dateAdapter.clampDate(this.value, min, max));
|
|
269
|
-
}
|
|
270
|
-
renderTemplate() {
|
|
271
|
-
return html` <span class="sbb-calendar-day__value" aria-hidden="true">
|
|
272
|
-
${this.dateAdapter.getDate(this.value)}
|
|
273
|
-
</span>
|
|
274
|
-
<span class="sbb-calendar-day__extra">
|
|
275
|
-
<slot></slot>
|
|
276
|
-
</span>`;
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
})();
|
|
280
|
-
//#endregion
|
|
281
|
-
export { SbbCalendarDayElement as t };
|
|
282
|
-
|
|
283
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LmNvbXBvbmVudC1EZTlYbjMtcS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2FsZW5kYXIvY2FsZW5kYXItZGF5L2NhbGVuZGFyLWRheS5zY3NzP2xpdCZpbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvY2FsZW5kYXIvY2FsZW5kYXItZGF5L2NhbGVuZGFyLWRheS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMvaW5kZXgnIGFzIHNiYjtcblxuOmhvc3Qge1xuICBkaXNwbGF5OiBibG9jaztcblxuICAtLXNiYi1jYWxlbmRhci1kYXktd2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg0NCl9O1xuICAtLXNiYi1jYWxlbmRhci1kYXktaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoNDgpfTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LWNlbGwtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtYmFja2dyb3VuZC1jb2xvcik7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1zZWxlY3RlZC1ib3JkZXI6IG5vbmU7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeClcbiAgKTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LXRyYW5zaXRpb24tZWFzaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItcG9pbnRlcik7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1ib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy00eCk7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAtLXNiYi1jYWxlbmRhci1kYXktanVzdGlmeS1jb250ZW50OiBpbml0aWFsO1xuICAtLXNiYi1jYWxlbmRhci1kYXktYWxpZ24taXRlbXM6IGluaXRpYWw7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS12YWx1ZS1oZWlnaHQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTZ4KTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LWV4dHJhLWRpc3BsYXk6IGJsb2NrO1xuICAtLXNiYi1jYWxlbmRhci1kYXktZXh0cmEtaGVpZ2h0OiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCk7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jcm9zc2VkLW91dC10b3A6IDMzJTtcbiAgLS1zYmItY2FsZW5kYXItZGF5LWNyb3NzZWQtb3V0LXRyYW5zbGF0ZTogdHJhbnNsYXRlKC01MCUsIC0zMyUpIHJvdGF0ZSgtNDVkZWcpO1xufVxuXG46aG9zdCg6c3RhdGUoc2VsZWN0ZWQpKSB7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1zZWxlY3RlZC1ib3JkZXI6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpIHNvbGlkIHZhcigtLXNiYi1ib3JkZXItY29sb3ItMik7XG59XG5cbjpob3N0KDpkaXNhYmxlZCkge1xuICAtLXNiYi1jYWxlbmRhci1jZWxsLWNvbG9yOiB2YXIoLS1zYmItY2FsZW5kYXItY2VsbC1kaXNhYmxlZC1jb2xvcik7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jdXJzb3I6IHVuc2V0O1xufVxuXG46aG9zdCg6Zm9jdXMtdmlzaWJsZSkge1xuICBvdXRsaW5lOiAwO1xufVxuXG46aG9zdCg6bm90KDpkaXNhYmxlZCk6YWN0aXZlKSB7XG4gIC0tc2JiLWNhbGVuZGFyLWRheS1jZWxsLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1jYWxlbmRhci1jZWxsLWJhY2tncm91bmQtY29sb3ItYWN0aXZlKTtcbn1cblxuLy8gRklYTUU6IGNoZWNrIHdoZXRoZXIgaXMgcG9zc2libGUgdG8gYXZvaWQgdXNpbmcgei1pbmRleCBydWxlc1xuLnNiYi1jYWxlbmRhci1kYXkge1xuICBAaW5jbHVkZSBzYmIudGV4dC1zLS1yZWd1bGFyO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWZsZXgtZGlyZWN0aW9uKTtcbiAganVzdGlmeS1jb250ZW50OiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWp1c3RpZnktY29udGVudCk7XG4gIGFsaWduLWl0ZW1zOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWFsaWduLWl0ZW1zKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWhlaWdodCk7XG4gIHdpZHRoOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LXdpZHRoKTtcbiAgcGFkZGluZzogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtcGFkZGluZyk7XG4gIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWNlbGwtcGFkZGluZy1ob3ZlciwgdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtcGFkZGluZykpO1xuICBtYXJnaW46IGF1dG87XG4gIGNvbG9yOiB2YXIoLS1zYmItY2FsZW5kYXItY2VsbC1jb2xvcik7XG4gIGN1cnNvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1jdXJzb3IpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDA7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1jZWxsLWJhY2tncm91bmQtY29sb3IpO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1zZWxlY3RlZC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktYm9yZGVyLXJhZGl1cyk7XG4gICAgei1pbmRleDogLTE7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS10cmFuc2l0aW9uLWR1cmF0aW9uKTtcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS10cmFuc2l0aW9uLWVhc2luZy1mdW5jdGlvbik7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjtcblxuICAgIDpob3N0KDpmb2N1cy12aXNpYmxlKSAmIHtcbiAgICAgIEBpbmNsdWRlIHNiYi5mb2N1cy1vdXRsaW5lO1xuICAgIH1cblxuICAgIDpob3N0KDpub3QoOmRpc2FibGVkKTphY3RpdmUpICYge1xuICAgICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgICAgICAvLyBCYXNpY2FsbHkgdGhlIGZvY3VzLW91dGxpbmUgbWl4aW4gaXMgbWFkZSBmb3IgdXNlIHdpdGggZm9jdXMtdmlzaWJsZS5cbiAgICAgICAgLy8gQXMgd2UgdXNlIGl0IGhlcmUgd2l0aCA6YWN0aXZlLCB3ZSBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBvdXRsaW5lIGlzIG5vdCBvdmVycmlkZGVuIHdoZW4gbW91c2Ugb3IgdG91Y2ggaXMgaW4gdXNlLlxuICAgICAgICAtLXNiYi1mb2N1cy1vdXRsaW5lLXN0eWxlOiBpbml0aWFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIDpob3N0KDpub3QoOmFjdGl2ZSwgOmRpc2FibGVkKTpob3ZlcikgJiB7XG4gICAgQGluY2x1ZGUgc2JiLmhvdmVyLW1xKCRob3ZlcjogdHJ1ZSkge1xuICAgICAgLS1zYmItY2FsZW5kYXItZGF5LWNlbGwtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtYmFja2dyb3VuZC1jb2xvci1ob3Zlcik7XG4gICAgICAtLXNiYi1jYWxlbmRhci1kYXktY2VsbC1wYWRkaW5nLWhvdmVyOiBjYWxjKFxuICAgICAgICAje3NiYi5weC10by1yZW0tYnVpbGQoMSl9ICsgdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtcGFkZGluZylcbiAgICAgICk7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAgICAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgICAgICAgIC8vIEJhc2ljYWxseSB0aGUgZm9jdXMtb3V0bGluZSBtaXhpbiBpcyBtYWRlIGZvciB1c2Ugd2l0aCBmb2N1cy12aXNpYmxlLlxuICAgICAgICAgIC8vIEFzIHdlIHVzZSBpdCBoZXJlIHdpdGggaG92ZXIsIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlIG91dGxpbmUgaXMgbm90IG92ZXJyaWRkZW4gd2hlbiBtb3VzZSBvciB0b3VjaCBpcyBpbiB1c2UuXG4gICAgICAgICAgLS1zYmItZm9jdXMtb3V0bGluZS1zdHlsZTogaW5pdGlhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc2JiLWNhbGVuZGFyLWRheV9fdmFsdWUge1xuICBoZWlnaHQ6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktdmFsdWUtaGVpZ2h0KTtcblxuICA6aG9zdCg6c3RhdGUoY3VycmVudCkpICYge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgOmhvc3QoOnN0YXRlKGNyb3NzZWQtb3V0KSkgJiB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBoZWlnaHQ6IHZhcigtLXNiYi1jYWxlbmRhci1jZWxsLWRpc2FibGVkLWhlaWdodCk7XG4gICAgICB3aWR0aDogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtZGlzYWJsZWQtd2lkdGgpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNhbGVuZGFyLWNlbGwtZGlzYWJsZWQtY29sb3IpO1xuICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktY3Jvc3NlZC1vdXQtdG9wKTtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB2YXIoLS1zYmItY2FsZW5kYXItZGF5LWNyb3NzZWQtb3V0LXRyYW5zbGF0ZSk7XG4gICAgfVxuICB9XG59XG5cbi5zYmItY2FsZW5kYXItZGF5X19leHRyYSB7XG4gIGRpc3BsYXk6IHZhcigtLXNiYi1jYWxlbmRhci1kYXktZXh0cmEtZGlzcGxheSk7XG4gIGhlaWdodDogdmFyKC0tc2JiLWNhbGVuZGFyLWRheS1leHRyYS1oZWlnaHQpO1xuICBwYWRkaW5nOiB2YXIoLS1zYmItY2FsZW5kYXItY2VsbC1wYWRkaW5nKTtcbn1cblxuOjpzbG90dGVkKCopIHtcbiAgaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbn1cbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJCdXR0b25MaWtlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnL2NvbmZpZy50cyc7XG5pbXBvcnQgeyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgdHlwZSB7IERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRldGltZS9kYXRlLWFkYXB0ZXIudHMnO1xuaW1wb3J0IHsgZGVmYXVsdERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRldGltZS9uYXRpdmUtZGF0ZS1hZGFwdGVyLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbn0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJDYWxlbmRhckVsZW1lbnQgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jYWxlbmRhci1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHNpbmdsZSBkYXkgY2VsbCBpbiB0aGUgYHNiYi1jYWxlbmRhcmAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIHNvbWUgY3VzdG9tIGNvbnRlbnQgdG8gdGhlIGRheS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkNhbGVuZGFyRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKFNiYkJ1dHRvbkxpa2VCYXNlRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWNhbGVuZGFyLWRheSc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcbiAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlciA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBvdmVycmlkZSBzZXQgc2xvdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIuc2xvdCA9IHZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHNsb3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3VwZXIuc2xvdDtcbiAgfVxuXG4gIC8qKiBWYWx1ZSBvZiB0aGUgY2FsZW5kYXItZGF5IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBkYXRlO1xuICAgICAgY29uc3QgaXNUb2RheSA9IHRoaXMuZGF0ZUFkYXB0ZXIuc2FtZURhdGUoZGF0ZSwgdGhpcy5kYXRlQWRhcHRlci50b2RheSgpKTtcbiAgICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2N1cnJlbnQnLCBpc1RvZGF5KTtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFDdXJyZW50ID0gaXNUb2RheSA/ICdkYXRlJyA6IG51bGw7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhTGFiZWwgPSB0aGlzLmRhdGVBZGFwdGVyLmdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGUpO1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fZ2V0UGFyZW50KCk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShwYXJlbnQpO1xuICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZFN0YXRlKHBhcmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwcml2YXRlIF92YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuX2dldFBhcmVudCgpLCB7XG4gICAgICAgIGRhdGVGaWx0ZXI6IChjb21wb25lbnQpID0+IHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgICBtaW46IChjb21wb25lbnQpID0+IHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgICBtYXg6IChjb21wb25lbnQpID0+IHRoaXMuX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgICBzZWxlY3RlZDogKGNvbXBvbmVudCkgPT4gdGhpcy5fc2V0U2VsZWN0ZWRTdGF0ZShjb21wb25lbnQpLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlbnRpb25hbGx5IGVtcHR5LCBhcyBidXR0b25zIGFyZSBub3QgdGFyZ2V0ZWQgYnkgZm9ybSByZXNldC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBJbnRlbnRpb25hbGx5IGVtcHR5LCBhcyBidXR0b25zIGFyZSBub3QgdGFyZ2V0ZWQgYnkgZm9ybSByZXN0b3JlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgX3N0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgKTogdm9pZCB7fVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudGFiSW5kZXggPSAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgZGF5IGNlbGwgd2l0aGluIHRoZSBgc2JiLWNhbGVuZGFyYCxcbiAgICogb3IsIGlmIGV4dHJhIGNvbnRlbnQgaXMgbmVlZGVkLCBpdCBjYW4gYmUgc2xvdHRlZC5cbiAgICovXG4gIHByaXZhdGUgX2dldFBhcmVudCgpOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4gfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jbG9zZXN0Py48U2JiQ2FsZW5kYXJFbGVtZW50PFQ+Pignc2JiLWNhbGVuZGFyJykgPz9cbiAgICAgICh0aGlzLmdldFJvb3ROb2RlPy4oKSBhcyBTaGFkb3dSb290KT8uaG9zdD8uY2xvc2VzdDxTYmJDYWxlbmRhckVsZW1lbnQ8VD4+KCdzYmItY2FsZW5kYXInKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRTZWxlY3RlZFN0YXRlKGNvbXBvbmVudDogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBjb21wb25lbnQubXVsdGlwbGVcbiAgICAgID8gKGNvbXBvbmVudC5zZWxlY3RlZCBhcyBEYXRlW10pLnNvbWUoKHNlbERheSkgPT5cbiAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLnNhbWVEYXRlKHRoaXMudmFsdWUsIHNlbERheSksXG4gICAgICAgIClcbiAgICAgIDogISFjb21wb25lbnQuc2VsZWN0ZWQgJiYgdGhpcy5kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlLCBjb21wb25lbnQuc2VsZWN0ZWQpID09PSAwO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3NlbGVjdGVkJywgc2VsZWN0ZWQpO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFQcmVzc2VkID0gU3RyaW5nKHNlbGVjdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERpc2FibGVkRmlsdGVyZWRTdGF0ZShjb21wb25lbnQ6IFNiYkNhbGVuZGFyRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGNvbnN0IGlzRmlsdGVyZWRPdXQgPSAhdGhpcy5faXNBY3RpdmVEYXRlKGNvbXBvbmVudC5kYXRlRmlsdGVyKTtcbiAgICBjb25zdCBpc091dE9mUmFuZ2UgPSAhdGhpcy5faXNEYXlJblJhbmdlKGNvbXBvbmVudC5taW4sIGNvbXBvbmVudC5tYXgpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0ZpbHRlcmVkT3V0IHx8IGlzT3V0T2ZSYW5nZTtcbiAgICB0aGlzLmludGVybmFscy5hcmlhRGlzYWJsZWQgPSBTdHJpbmcodGhpcy5kaXNhYmxlZCk7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgnY3Jvc3NlZC1vdXQnLCBpc0ZpbHRlcmVkT3V0ICYmICFpc091dE9mUmFuZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNBY3RpdmVEYXRlKGRhdGVGaWx0ZXI6ICgoZGF0ZTogVCB8IG51bGwpID0+IGJvb2xlYW4pIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlRmlsdGVyPy4odGhpcy52YWx1ZSkgPz8gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzRGF5SW5SYW5nZShtaW46IFQgfCBudWxsLCBtYXg6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtaW4gJiYgIW1heCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGVBZGFwdGVyLnNhbWVEYXRlKHRoaXMudmFsdWUsIHRoaXMuZGF0ZUFkYXB0ZXIuY2xhbXBEYXRlKHRoaXMudmFsdWUsIG1pbiwgbWF4KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYCA8c3BhbiBjbGFzcz1cInNiYi1jYWxlbmRhci1kYXlfX3ZhbHVlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICR7dGhpcy5kYXRlQWRhcHRlci5nZXREYXRlKHRoaXMudmFsdWUpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItY2FsZW5kYXItZGF5X19leHRyYVwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L3NwYW4+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNhbGVuZGFyLWRheSc6IFNiYkNhbGVuZGFyRGF5RWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3dCYSwrQkFBcUI7bUJBQW1CLGlCQUFpQix5QkFBeUI7Ozs7Y0FBbEYsOEJBQXdDLFlBQTBDOzs7MkJBSzVGLFVBQVUsQ0FBQTs0QkFVVixPQUFPLENBQUE7QUFUUixnQkFBQSxNQUFBLE1BQUEsc0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxVQUFBO0tBQUEsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFvQixPQUFJOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsTUFBQSwyQkFBQTtBQVV4QixnQkFBQSxNQUFBLE1BQUEsdUJBQUE7SUFBQSxNQUFBO0lBQUEsTUFB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
|